
    `iy{              
         U d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZ d	d
lmZmZmZmZm Z m!Z!m"Z" er*d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z,m-Z- d dlm.Z. d dl/m0Z0  ed          Z1 ej2        d          Z3 ed          Z4 G d d          Z5e5j6        e5j7        e5j8        e5j9        e5j:        e5j;        e5j<        e5j=        dZ>de?d<   d d d d e5j@        e5jA        e5jB        e5jC        d d	ZDde?d <   i d e5jE        d	e5jF        d!e5jG        d"e5jH        d#e5jI        d$e5jJ        d%e5jK        d&e5jL        d'e5jM        d(e5jN        d)e5jO        d*e5jP        d+e5jQ        d,e5jR        d-e5jS        d.e5jT        d/e5jU        e5jV        e5jW        e5jX        e5jY        d0ZZde?d1<   	 	 	 dAdBd=Z[	 	 	 dAdCd@Z\dS )D    )annotationsN)getincrementaldecoder)Callable	GeneratorMappingSequence)contextmanager)datedatetime	timedeltatimezone)BytesIO)IOTYPE_CHECKINGAnyTypeVarcastoverload   )CBORDecodeEOFCBORDecodeValueErrorCBORSimpleValueCBORTag
FrozenDictbreak_marker	undefinedDecimal)MessageFraction)IPv4AddressIPv4NetworkIPv6AddressIPv6Network)LiteralUUIDTzX^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(?:\.(\d{1,6})\d*)?(?:Z|([+-])(\d\d):(\d\d))$utf-8c                     e Zd ZU dZdZded<   ded<   	 	 	 dkdldZedmd            Zednd            Z	e	j
        dod            Z	edpd            Zej
        dqd            Zedrd            Zej
        dsd            Zedtd            Zej
        dud            ZdvdZdwd$Zdxd'Zdydzd,Zed{d.            Zd|d0Zd}d2Zed~d4            Zedd8            Zddd9Zd~d:Zd~d;Zdd<Zdd>Zdd@ZddBZddCZddDZddFZ ddGZ!ddIZ"ddJZ#ddKZ$ddLZ%ddNZ&ddOZ'ddPZ(d|dQZ)ddRZ*ddTZ+ddVZ,ddXZ-ddZZ.dd\Z/dd]Z0dd_Z1ddaZ2ddcZ3dddZ4ddfZ5ddhZ6ddiZ7ddjZ8dS )CBORDecodera  
    The CBORDecoder class implements a fully featured `CBOR`_ decoder with
    several extensions for handling shared references, big integers, rational
    numbers and so on. Typically the class is not used directly, but the
    :func:`load` and :func:`loads` functions are called to indirectly construct
    and use the class.

    When the class is constructed manually, the main entry points are
    :meth:`decode` and :meth:`decode_from_bytes`.

    .. _CBOR: https://cbor.io/
    )
	_tag_hook_object_hook_share_index_shareables_fp_fp_read
_immutable_str_errors_stringref_namespace_decode_depth	IO[bytes]r1   zCallable[[int], bytes]r2   Nstrictfptag_hook,Callable[[CBORDecoder, CBORTag], Any] | Noneobject_hook3Callable[[CBORDecoder, dict[Any, Any]], Any] | None
str_errors%Literal['strict', 'error', 'replace']c                    || _         || _        || _        || _        d| _        g | _        d| _        d| _        d| _        dS )a  
        :param fp:
            the file to read from (any file-like object opened for reading in binary
            mode)
        :param tag_hook:
            callable that takes 2 arguments: the decoder instance, and the
            :class:`.CBORTag` to be decoded. This callback is invoked for any tags
            for which there is no built-in decoder. The return value is substituted
            for the :class:`.CBORTag` object in the deserialized output
        :param object_hook:
            callable that takes 2 arguments: the decoder instance, and a
            dictionary. This callback is invoked for each deserialized
            :class:`dict` object. The return value is substituted for the dict in
            the deserialized output.
        :param str_errors:
            determines how to handle unicode decoding errors (see the `Error Handlers`_
            section in the standard library documentation for details)

        .. _Error Handlers: https://docs.python.org/3/library/codecs.html#error-handlers

        NFr   )	r9   r:   r<   r>   r/   r0   r5   r3   r6   )selfr9   r:   r<   r>   s        b/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/cbor2/_decoder.py__init__zCBORDecoder.__init__E   sN    8  &$(,)+>B!    returnboolc                    | j         S )z
        Used by decoders to check if the calling context requires an immutable
        type.  Object_hook or tag_hook should raise an exception if this flag
        is set unless the result can be safely used as a dict key.
        )r3   rA   s    rB   	immutablezCBORDecoder.immutablek   s     rD   c                    | j         S N)r1   rH   s    rB   r9   zCBORDecoder.fpt   s	    xrD   valueNonec                    	 t          |j                  st          d          	 || _        |j        | _        d S # t
          $ r t          d          w xY w)Nzfp.read is not callablezfp object has no read method)callableread
ValueErrorr1   r2   AttributeErrorrA   rL   s     rB   r9   zCBORDecoder.fpx   so    	'EJ'' < !:;;;<
 DH!JDMMM	  	= 	= 	=;<<<	=s	   #; Ac                    | j         S rK   )r-   rH   s    rB   r:   zCBORDecoder.tag_hook   s
    ~rD   c                T    |t          |          r	|| _        d S t          d          )Nz#tag_hook must be None or a callable)rO   r-   rQ   rS   s     rB   r:   zCBORDecoder.tag_hook   s+    =HUOO="DNNNBCCCrD   c                    | j         S rK   )r.   rH   s    rB   r<   zCBORDecoder.object_hook   s      rD   c                T    |t          |          r	|| _        d S t          d          )Nz&object_hook must be None or a callable)rO   r.   rQ   rS   s     rB   r<   zCBORDecoder.object_hook   s.    =HUOO= %DEFFFrD   c                    | j         S rK   )r4   rH   s    rB   r>   zCBORDecoder.str_errors   s    rD   c                B    |dv r	|| _         d S t          d|d          )N)r8   errorreplacezinvalid str_errors value z1 (must be one of 'strict', 'error', or 'replace'))r4   rQ   rS   s     rB   r>   zCBORDecoder.str_errors   sD    222$D)E ) ) )  rD   r)   c                2    | j         || j        | j         <   |S )z
        Set the shareable value for the last encountered shared value marker,
        if any. If the current shared index is ``None``, nothing is done.

        :param value: the shared value
        :returns: the shared value to permit chaining
        )r/   r0   rS   s     rB   set_shareablezCBORDecoder.set_shareable   s"     (27DT./rD   stringstr | byteslengthintc                    | j         lt          | j                   }|dk     r|dk    }n-|dk     r|dk    }n |dk     r|dk    }n|dk     r|dk    }n|d	k    }|r| j                             |           d S d S d S )
N                  l              )r5   lenappend)rA   r^   r`   
next_indexis_referenceds        rB   _stringref_namespace_addz$CBORDecoder._stringref_namespace_add   s    $0T677JB &!c!! &!e## &!j(( &! &" 9)0088888 109 9rD   amountbytesc                    |                      |          }t          |          |k     r#t          d| dt          |           d          |S )zj
        Read bytes from the data stream.

        :param int amount: the number of bytes to read
        z*premature end of stream (expected to read z bytes, got z	 instead))r2   rk   r   )rA   rp   datas      rB   rP   zCBORDecoder.read   sk     }}V$$t99vV  QTUYQZQZ     
 rD   FrI   unsharedr   c                   |r| j         }d| _         |r| j        }d | _        	 |                     d          d         }|dz	  }|dz  }t          |         } || |          |r|| _         |r|| _        S S # |r|| _         |r|| _        w xY w)NTr   r   rh      )r3   r/   rP   major_decoders)	rA   rI   rt   old_immutable	old_indexinitial_byte
major_typesubtypedecoders	            rB   _decodezCBORDecoder._decode   s     	# OM"DO 	%)I $D
	.99Q<<?L%*J"R'G$Z0G74)) 0"/ .$-!!.  0"/ .$-!----s   =A3 3BGenerator[None]c              #  b  K   | xj         dz  c_         	 dV  | xj         dz  c_         | j         dk    sJ | j         dk    r"| j                                         d| _        dS dS # | xj         dz  c_         | j         dk    sJ | j         dk    r | j                                         d| _        w xY w)a/  
        Context manager for tracking decode depth and clearing shared state.

        Shared state is cleared at the end of each top-level decode to prevent
        shared references from leaking between independent decode operations.
        Nested calls (from hooks) must preserve the state.
        r   Nr   )r6   r0   clearr/   rH   s    rB   _decoding_contextzCBORDecoder._decoding_context   s       	a	)EEE!#%****!Q&& &&((($(!!! '& !#%****!Q&& &&((($(!((((s   A$ $A
B.objectc                    |                                  5  |                                 cddd           S # 1 swxY w Y   dS )z
        Decode the next value from the stream.

        :raises CBORDecodeError: if there is any problem decoding the stream
        N)r   r~   rH   s    rB   decodezCBORDecoder.decode   s     ##%% 	" 	"<<>>	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   6::bufc                   |                                  5  t          |          5 }| j        }|| _        |                                 }|| _        |cddd           cddd           S # 1 swxY w Y   	 ddd           dS # 1 swxY w Y   dS )aA  
        Wrap the given bytestring as a file and call :meth:`decode` with it as
        the argument.

        This method was intended to be used from the ``tag_hook`` hook when an
        object needs to be decoded separately from the rest but while still
        taking advantage of the shared value registry.
        N)r   r   r9   r~   )rA   r   r9   old_fpretvals        rB   decode_from_byteszCBORDecoder.decode_from_bytes  s*    ##%% 	 	        	 	 	 	 	 	 	 	        	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   B+A)B)A-	-B0A-	1BB	Br|   c                    d S rK    rA   r|   s     rB   _decode_lengthzCBORDecoder._decode_length  s    363rD   allow_indefiniteLiteral[True]
int | Nonec                    d S rK   r   rA   r|   r   s      rB   r   zCBORDecoder._decode_length  s    [^[^rD   c           	     8   |dk     r|S |dk    r|                      d          d         S |dk    rAt          t          t          j        d|                      d                    d                   S |dk    rAt          t          t          j        d|                      d	                    d                   S |d
k    rAt          t          t          j        d|                      d                    d                   S |dk    r|rd S t          d|d          )Nrc   r   r      z>H      z>Lrf      z>Q   rv   z#unknown unsigned integer subtype 0xx)rP   r   ra   structunpackr   r   s      rB   r   zCBORDecoder._decode_length  s    R<<N]]99Q<<?"]]V]41>>qABBB]]V]41>>qABBB]]V]41>>qABBB]]/]4&'XW'X'X'XYYYrD   c                R    |                      |                     |                    S rK   r]   r   r   s     rB   decode_uintzCBORDecoder.decode_uint*  s$    !!$"5"5g">">???rD   c                Z    |                      |                     |           dz
            S Nr   r   r   s     rB   decode_negintzCBORDecoder.decode_negint.  s,    !!4#6#6w#?#?"?!"CDDDrD   c                @   |                      |d          }|g }	 |                     d          d         }|dk    rd                    |          }n|dz	  dk    rh|                      |d	z            }||t          j        k    rt          d
|d          |                     |          }|                    |           nt          d          n|t          j        k    rt          d|d          |dk    r|                     |          }n`|}t                      }|r?t          |d          }	|	                    |                     |	                     ||	z  }|?t          |          }|                     ||           |                     |          S )NTr   r   r      rD   rh   r   rv   z1invalid length for indefinite bytestring chunk 0xr   z4non-bytestring found in indefinite length bytestringz invalid length for bytestring 0xrg   )r   rP   joinsysmaxsizer   rl   	bytearrayminextendrq   ro   r]   )
rA   r|   r`   r   rz   resultrL   leftbuffer
chunk_sizes
             rB   decode_bytestringzCBORDecoder.decode_bytestring2  s   $$Wt$DD>!C#yy||A4'' XXc]]F!Q&!++!001DEEF~#+)=)=2ZPVZZZ   !IIf--EJJu%%%%.N    ##*+Xf+X+X+XYYY56** " '!$T5!1!1JMM$))J"7"7888J&D  '
 v))&&999!!&)))rD   strc                   |                      |d          }|g }	 |                     d          d         }|dk    rd                    |          }n|dz	  dk    r|                      |d	z            }||t          j        k    rt          d
|d          	 |                     |                              d| j                  }n"# t          $ r}t          d          |d }~ww xY w|	                    |           nt          d          n|t          j        k    rt          d|d          |dk    rR	 |                     |                              d| j                  }n# t          $ r}t          d          |d }~ww xY wt          | j                  }|}	d}|	rmt          |	d          }
|	|
k    }	 ||                    |                     |
          |          z  }n"# t          $ r}t          d          |d }~ww xY w|	|
z  }	|	m|                     ||           |                     |          S )NTr   r   r   r    rh   rd   rv   z-invalid length for indefinite string chunk 0xr   r*   zerror decoding unicode stringz,non-string found in indefinite length stringzinvalid length for string 0xrg   )r   rP   r   r   r   r   r   r4   UnicodeDecodeErrorrl   incremental_utf8_decoderr   ro   r]   )rA   r|   r`   r   rz   r   rL   exccodecr   r   finals               rB   decode_stringzCBORDecoder.decode_string]  s   $$Wt$DD>  C_#yy||A4''WWS\\F!Q&!++!001DEEF~#+)=)=2VFVVV  ] $		& 1 1 8 8$BR S S- ] ] ]23RSSY\\] JJu%%%%./]^^^'_ " ##*+T&+T+T+TUUUY!YYv..55gt?OPPFF) Y Y Y./NOOUXXY 11ABB '!$T5!1!1J J.E]%,,tyy/D/De"L"LL- ] ] ]23RSSY\\] J&D  ' ))&&999!!&)))sH   .C
 

C)C$$C)>.E- -
F7FF ,G- -
H7HHSequence[Any]c                6   |                      |d          }|Vg }| j        s|                     |           	 |                     d          }|t          u rn|                    |           6n||t          j        k    rt          d|d          g }| j        s|                     |           t          |          D ]+}|                    |                     d                     ,| j        r&t          |          }|                     |           |S |S )NTr   rt   zinvalid length for array 0xr   )r   r3   r]   r~   r   rl   r   r   r   rangetuple)rA   r|   r`   itemsrL   indexitems_tuples          rB   decode_arrayzCBORDecoder.decode_array  s<   $$Wt$DD>!E? *""5)))(d33L((LL'''(  ##*+S+S+S+STTTE? *""5)))v : :T\\4\889999? 	,,K{+++rD   Mapping[Any, Any]c                R   |                      |d          }|Ti }|                     |           	 |                     dd          }|t          u rn|                     d          ||<   ;nYi }|                     |           t	          |          D ]2}|                     dd          }|                     d          ||<   3| j        r,|                     | |          }|                     |           n-| j        r&t          |          }|                     |           |S |S )NTr   rI   rt   r   )r   r]   r~   r   r   r.   r3   r   )rA   r|   r`   
dictionarykey_frozen_dicts          rB   
decode_mapzCBORDecoder.decode_map  sO   $$Wt$DD>)+Jz***BllTDlAA,&&&*llDl&A&AJsOB  Jz***6]] > >llTDlAA"&,,,"="=
3 	**4<<Jz****_ 	$Z00Kz***rD   c                ^   |                      |          }t                              |          x}r ||           S t          |d           }|                     |           |                     d          |_        | j        r|                     | |          }|                     |          S )NTr   )r   semantic_decodersgetr   r]   r~   rL   r-   )rA   r|   tagnumsemantic_decodertags        rB   decode_semanticzCBORDecoder.decode_semantic  s    $$W--044V<<< 	*##D)))fd##3LL$L//	> 	,..s++C!!#&&&rD   c                    |dk     rt          |          S 	 t          |         |           S # t          $ r}t          d|d          |d }~ww xY w)N   z*Undefined Reserved major type 7 subtype 0xr   )r   special_decodersKeyErrorr   )rA   r|   es      rB   decode_specialzCBORDecoder.decode_special  ss    R<<"7+++	#G,T222 	 	 	&HWHHH 	s   , 
AA

Ar
   c                ~    |                                  }|                     t          j        |dz                       S )Ni;
 )r~   r]   r
   fromordinalrS   s     rB   decode_epoch_datezCBORDecoder.decode_epoch_date  s2    !!$"256>"B"BCCCrD   c                x    |                                  }|                     t          j        |                    S rK   )r~   r]   r
   fromisoformatrS   s     rB   decode_date_stringzCBORDecoder.decode_date_string  s.    !!$"4U";";<<<rD   r   c                   |                                  }t                              |          }|r|                                \
  }}}}}}}	}
}}|	d}nt	          |	d          }|rN|
dk    rd}nd}t	          |          |z  }t	          |          |z  }t          t          ||                    }nt
          j        }|                     t          t	          |          t	          |          t	          |          t	          |          t	          |          t	          |          ||                    S t          d|          )Nr   z<06-r   )hoursminuteszinvalid datetime string: )r~   timestamp_rematchgroupsra   r   r   utcr]   r   r   )rA   rL   r   yearmonthdayhourminutesecondsecfracoffset_signoffset_hoffset_mmicrosecondsignr   r   tzs                     rB   decode_datetime_stringz"CBORDecoder.decode_datetime_string  sV   ""5)) *	N !W"2"233 	"#%%DDDH,h--$.ieWEEEFF\%%IIJJHHIIKKKK	 	   ''L5'L'LMMMrD   c                    |                                  }	 t          j        |t          j                  }n/# t
          t          t          f$ r}t          d          |d }~ww xY w| 	                    |          S )Nz"error decoding datetime from epoch)
r~   r   fromtimestampr   r   OverflowErrorOSErrorrQ   r   r]   )rA   rL   tmpr   s       rB   decode_epoch_datetimez!CBORDecoder.decode_epoch_datetime7  s}    	V(==CCw
3 	V 	V 	V&'KLLRUU	V !!#&&&s   6 A"AA"c                    ddl m} |                                 }t          |t                    st          dt          |          z             |                     t           ||          d                    S )Nr   )hexlifyzinvalid bignum value    )	binasciir   r~   
isinstancerq   r   r   r]   ra   )rA   r   rL   s      rB   decode_positive_bignumz"CBORDecoder.decode_positive_bignumB  st    $$$$$$%'' 	M&'>U'KLLL!!#ggennb"9"9:::rD   c                X    |                      |                                  dz
            S r   )r]   r   rH   s    rB   decode_negative_bignumz"CBORDecoder.decode_negative_bignumL  s*    !!4#>#>#@#@"@1"DEEErD   r   c                "   ddl m} 	 |                                 \  }}n)# t          t          f$ r}t          d          |d }~ww xY w ||                                          }|                      ||j        |j	        |f                    S )Nr   r   zIncorrect tag 4 payload)
decimalr   r~   	TypeErrorrQ   r   as_tupler]   r   digits)rA   r   expsigr   r   s         rB   decode_fractionzCBORDecoder.decode_fractionP  s    ######	I||~~HC:& 	I 	I 	I&'@AAqH	Igcll##%%!!''38SZ*E"F"FGGG     AAAc                    ddl m} 	 |                                 \  }}n)# t          t          f$ r}t          d          |d }~ww xY w|                      ||          d ||          z  z            S )Nr   r   zIncorrect tag 5 payloadr   )r  r   r~   r  rQ   r   r]   )rA   r   r  r	  r   s        rB   decode_bigfloatzCBORDecoder.decode_bigfloat[  s    ######	I||~~HC:& 	I 	I 	I&'@AAqH	I !!''#,,!wws||2C"DEEEr  c                    | j         t          d          |                                 }	 | j         |         }n!# t          $ r t          d| d          w xY w|S )Nz%string reference outside of namespacezstring reference 
 not found)r5   r   r~   
IndexError)rA   r   rL   s      rB   decode_stringrefzCBORDecoder.decode_stringreff  s|    $,&'NOOO\\^^	N-e4EE 	N 	N 	N&'L5'L'L'LMMM	N s	   : Ac                    | j         }t          | j                  | _         | j                            d            	 |                                 || _         S # || _         w xY wrK   )r/   rk   r0   rl   r~   )rA   ry   s     rB   decode_shareablezCBORDecoder.decode_shareables  sc    %	 011%%%	*<<>> )D	D))))s   A 	A c                    |                      d          }	 | j        |         }n!# t          $ r t          d| d          w xY w|t          d| d          |S )NTr   zshared reference r  zshared value z has not been initialized)r~   r0   r  r   )rA   rL   shareds      rB   decode_sharedrefzCBORDecoder.decode_sharedref}  s    d++	N%e,FF 	N 	N 	N&'L5'L'L'LMMM	N >&'Wu'W'W'WXXXMs	   & Acomplexc                    |                      dd          }	 t          | }nG# t          $ r:}t          |t                    st          d          d t          d          |d }~ww xY w|                     |          S )NTr   z3error decoding complex: input value was not a tuplezerror decoding complex)r~   r  r  r   r   r   r]   )rA   inputvalrL   r   s       rB   decode_complexzCBORDecoder.decode_complex  s    <<$<>>	JX&EE 	J 	J 	Jh.. *I  ''?@@cI	J !!%(((s   	# 
A'5A""A'r!   c                   ddl m} |                     dd          }	  || }nN# t          t          f$ r:}t          |t                    st          d          d t          d          |d }~ww xY w|                     |          S )Nr   r    Tr   z4error decoding rational: input value was not a tuplezerror decoding rational)		fractionsr!   r~   r  ZeroDivisionErrorr   r   r   r]   )rA   r!   r  rL   r   s        rB   decode_rationalzCBORDecoder.decode_rational  s    &&&&&&<<$<>>	KHh'EE,- 	K 	K 	Kh.. *J  ''@AAsJ	K !!%(((s   % A05A++A0re.Pattern[str]c                    	 t          j        |                                           }n'# t           j        $ r}t	          d          |d }~ww xY w|                     |          S )Nz!error decoding regular expression)recompiler~   rZ   r   r]   )rA   rL   r   s      rB   decode_regexpzCBORDecoder.decode_regexp  sn    	UJt||~~..EEx 	U 	U 	U&'JKKQTT	U !!%(((s   &) AAAr   c                    ddl m} 	  |                                |                                           }n"# t          $ r}t          d          |d }~ww xY w|                     |          S )Nr   )Parserzerror decoding MIME message)email.parserr%  parsestrr~   r  r   r]   )rA   r%  rL   r   s       rB   decode_mimezCBORDecoder.decode_mime  s    ''''''	OFHH%%dllnn55EE 	O 	O 	O&'DEE3N	O !!%(((s   /8 
AAAr(   c                    ddl m} 	  ||                                           }n)# t          t          f$ r}t          d          |d }~ww xY w|                     |          S )Nr   r'   )rq   zerror decoding UUID value)uuidr(   r~   r  rQ   r   r]   )rA   r(   rL   r   s       rB   decode_uuidzCBORDecoder.decode_uuid  s    	MDt||~~...EE:& 	M 	M 	M&'BCCL	M !!%(((s   ' AAAc                X    | j         }g | _         |                                 }|| _         |S rK   )r5   r~   )rA   old_namespacerL   s      rB   decode_stringref_namespacez&CBORDecoder.decode_stringref_namespace  s,    1$&!$1!rD   set[Any] | frozenset[Any]c                    | j         r6|                     t          |                     d                              S |                     t	          |                     d                              S )NT)rI   )r3   r]   	frozensetr~   setrH   s    rB   
decode_setzCBORDecoder.decode_set  sa    ? 	I%%it0L0L&M&MNNN%%c$,,,*F*F&G&GHHHrD   #IPv4Address | IPv6Address | CBORTagc                   ddl m} |                                 }t          |t                    rt          |          dvrt          d|          t          |          dv r|                      ||                    S t          |          dk    r#|                     t          d|                    S t          d|          )Nr   )
ip_address)rf      r   zinvalid ipaddress value )rf   r   r7    )		ipaddressr6  r   r   rq   rk   r   r]   r   )rA   r6  r   s      rB   decode_ipaddresszCBORDecoder.decode_ipaddress  s    ((((((kkmm#u%% 	9S)C)C&'I#'I'IJJJXX  %%jjoo666XX]]%%gc3&7&7888"#Ec#E#EFFFrD   IPv4Network | IPv6Networkc                L   ddl m} |                                 }t          |t                    rdt          |          dk    rQ|                                D ]<}	 |                      ||d                    c S # t          t          f$ r Y  nw xY wt          d|          )Nr   )
ip_networkr   F)r8   zinvalid ipnetwork value )r9  r=  r   r   r   rk   r   r]   r  rQ   r   )rA   r=  net_mapnets       rB   decode_ipnetworkzCBORDecoder.decode_ipnetwork  s    ((((((++--gw'' 	CLLA,=,=}}  --jjU.K.K.KLLLLL!:.   EE ##Ig#I#IJJJs   A<<BBc                *    |                                  S rK   )r~   rH   s    rB   decode_self_describe_cborz%CBORDecoder.decode_self_describe_cbor  s    ||~~rD   r   c                R    t          |                     d          d                   S )Nr   r   )r   rP   rH   s    rB   decode_simple_valuezCBORDecoder.decode_simple_value  s    tyy||A///rD   floatc                    |                      t          t          t          j        d|                     d                    d                             S )Nz>er   r   r]   r   rE  r   r   rP   rH   s    rB   decode_float16zCBORDecoder.decode_float16  <    !!$ufmD$))A,,.O.OPQ.R"S"STTTrD   c                    |                      t          t          t          j        d|                     d                    d                             S )Nz>frf   r   rG  rH   s    rB   decode_float32zCBORDecoder.decode_float32  rI  rD   c                    |                      t          t          t          j        d|                     d                    d                             S )Nz>dr   r   rG  rH   s    rB   decode_float64zCBORDecoder.decode_float64  rI  rD   NNr8   )r9   r7   r:   r;   r<   r=   r>   r?   )rE   rF   )rE   r7   )rL   r7   rE   rM   )rE   r;   )rL   r;   rE   rM   )rE   r=   )rL   r=   rE   rM   )rE   r?   )rL   r?   rE   rM   )rL   r)   rE   r)   )r^   r_   r`   ra   rE   rM   )rp   ra   rE   rq   )FF)rI   rF   rt   rF   rE   r   )rE   r   )rE   r   )r   rq   rE   r   )r|   ra   rE   ra   )r|   ra   r   r   rE   r   )F)r|   ra   r   rF   rE   r   )r|   ra   rE   rq   )r|   ra   rE   r   )r|   ra   rE   r   )r|   ra   rE   r   )r|   ra   rE   r   )rE   r
   )rE   r   )rE   ra   )rE   r   )rE   r_   )rE   r   )rE   r  )rE   r!   )rE   r  )rE   r   )rE   r(   )rE   r/  )rE   r4  )rE   r;  )rE   r   )rE   rE  )9__name__
__module____qualname____doc__	__slots____annotations__rC   propertyrI   r9   setterr:   r<   r>   r]   ro   rP   r~   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r  r#  r(  r+  r.  r3  r:  r@  rB  rD  rH  rK  rM  r   rD   rB   r,   r,   '   sT         I NNN$$$$
 BFKO<D$ $ $ $ $L    X    X Y' ' ' Y'    X _D D D _D ! ! ! X! G G G G       X        9 9 9 9"   . . . . .& ) ) ) ^)$" " " "   " 666 X6^^^ X^Z Z Z Z Z @ @ @ @E E E E)* )* )* )*VA* A* A* A*F   @   <' ' ' '   "D D D D
= = = =
.N .N .N .N`	' 	' 	' 	'; ; ; ;F F F F	H 	H 	H 	H	F 	F 	F 	F   * * * *   ) ) ) )) ) ) )") ) ) )	) 	) 	) 	)	) 	) 	) 	)   I I I IG G G GK K K K   0 0 0 0U U U UU U U UU U U U U UrD   r,   )r   r   r   rd   rf   rh   r7  ri   z,dict[int, Callable[[CBORDecoder, int], Any]]rw   c                    dS )NFr   rH   s    rB   <lambda>rX    s    U rD   c                    dS )NTr   rH   s    rB   rX  rX        T rD   c                    d S rK   r   rH   s    rB   rX  rX    rZ  rD   c                    t           S rK   )r   rH   s    rB   rX  rX    s    Y rD   c                    t           S rK   )r   rH   s    rB   rX  rX    s    \ rD   )	r            rc   r   r   r   rv   z'dict[int, Callable[[CBORDecoder], Any]]r   r   rd   rf   rh   r            #   $   %   d   re   i  r8  )i  i  i  i  r   r8   sbytes | bytearray | memoryviewr:   r;   r<   r=   r>   r?   rE   r   c                    t          |           5 }t          ||||                                          cddd           S # 1 swxY w Y   dS )a  
    Deserialize an object from a bytestring.

    :param bytes s:
        the bytestring to deserialize
    :param tag_hook:
        callable that takes 2 arguments: the decoder instance, and the :class:`.CBORTag`
        to be decoded. This callback is invoked for any tags for which there is no
        built-in decoder. The return value is substituted for the :class:`.CBORTag`
        object in the deserialized output
    :param object_hook:
        callable that takes 2 arguments: the decoder instance, and a dictionary. This
        callback is invoked for each deserialized :class:`dict` object. The return value
        is substituted for the dict in the deserialized output.
    :param str_errors:
        determines how to handle unicode decoding errors (see the `Error Handlers`_
        section in the standard library documentation for details)
    :return:
        the deserialized object

    .. _Error Handlers: https://docs.python.org/3/library/codecs.html#error-handlers

    r:   r<   r>   N)r   r,   r   )rh  r:   r<   r>   r9   s        rB   loadsrl  ;  s    : 
 r{z
 
 

&((                 s   %AA	Ar9   r7   c                L    t          | |||                                          S )a  
    Deserialize an object from an open file.

    :param fp:
        the file to read from (any file-like object opened for reading in binary mode)
    :param tag_hook:
        callable that takes 2 arguments: the decoder instance, and the :class:`.CBORTag`
        to be decoded. This callback is invoked for any tags for which there is no
        built-in decoder. The return value is substituted for the :class:`.CBORTag`
        object in the deserialized output
    :param object_hook:
        callable that takes 2 arguments: the decoder instance, and a dictionary. This
        callback is invoked for each deserialized :class:`dict` object. The return value
        is substituted for the dict in the deserialized output.
    :param str_errors:
        determines how to handle unicode decoding errors (see the `Error Handlers`_
        section in the standard library documentation for details)
    :return:
        the deserialized object

    .. _Error Handlers: https://docs.python.org/3/library/codecs.html#error-handlers

    rk  )r,   r   )r9   r:   r<   r>   s       rB   loadrn  ^  s-    : 
X;:  fhhrD   rN  )
rh  ri  r:   r;   r<   r=   r>   r?   rE   r   )
r9   r7   r:   r;   r<   r=   r>   r?   rE   r   )]
__future__r   r!  r   r   codecsr   collections.abcr   r   r   r   
contextlibr	   r   r
   r   r   ior   typingr   r   r   r   r   r   _typesr   r   r   r   r   r   r   r  r   email.messager   r  r!   r9  r"   r#   r$   r%   r&   r*  r(   r)   r"  r   r   r,   r   r   r   r   r   r   r   r   rw   rT  rD  rH  rK  rM  r   r   r   r   r  r
  r  r  r  r  r  r#  r(  r+  r   r.  r3  r:  r@  r   r  rB  r   rl  rn  r   rD   rB   <module>rw     sv   " " " " " " " 				  



 ( ( ( ( ( ( B B B B B B B B B B B B % % % % % % 8 8 8 8 8 8 8 8 8 8 8 8       B B B B B B B B B B B B B B B B                   %%%%%%""""""LLLLLLLLLLLLGCLLrzc  1099 aU aU aU aU aU aU aU aUJ  $ "!	@ 	@ 	 	 	 	 	'"""!!
= 
=  
 
 
 
>{)>{(> {)> {)	>
 {"> {"> $> $> $> #> !> > > 	&> 	/>  	!>" 	%#>$ 
	%

(%0+> > >     6 >BGK8@	         J >BGK8@	      rD   