
    )Jfi*              	          d dl Z d dlmZ e j        de j        eef         e j        eef         e j        e j        eef                  e j        e j        eef                  e j        e         e j        e         f         Zdde j        eef         dedefdZ	ded	e j
        de j
        fd
ZddhZde j        e j        e j
        e j
        f                  de j        e j        e j
        e j
        f                  fdZ	 dde j        eef         dede j        e         defdZ	 dde j        eef         de j        e         defdZ G d de j        eef                   ZdS )    N)MappingHeadersutf-8valueencodingreturnc                 Z    t          | t                    r| n|                     |          S N)
isinstancestrdecoder   r   s     ]/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/curl_cffi/requests/headers.pyto_strr      s'    uc**F55X0F0FF    match_type_ofc                 X    t          |t                    r| n|                                 S r
   )r   r   encode)r   r   s     r   to_bytes_or_strr      s#    }c22F55Fr   authorizationzproxy-authorizationitemsc              #      K   | D ]D\  }}t          |                                          t          v rt          d|          }||fV  Ed S )Nz[secure])r   )r   lowerSENSITIVE_HEADERSr   )r   kvs      r   obfuscate_sensitive_headersr      sb         1!'')) 111
!<<<Ad



 r   r   c                     t          | t                    r| }n|                     |pd          }|r|                                n|S )zE
    Coerce str/bytes into a strictly byte-wise HTTP header key.
    ascii)r   bytesr   r   )r   r   r   bytes_values       r   normalize_header_keyr"   '   sO     % 8ll8#6w77"'8;[8r   c                 ^    t          | t                    r| S |                     |pd          S )zG
    Coerce str/bytes into a strictly byte-wise HTTP header value.
    r   )r   r    r   r   s     r   normalize_header_valuer$   7   s2     % <<+G,,,r   c                      e Zd ZdZ	 	 d dej        e         dej        e         ddfdZe	defd            Z
e
j        deddfd	            Z
e	dej        ej        eef                  fd
            Zdej        e         fdZdej        e         fdZdej        eef         fdZdej        ej        eef                  fdZd!dedej        dej        fdZd"dededej        e         fdZd!dej        e         ddfdZd#dZdedefdZdededdfdZdeddfdZdej        defdZ dej!        ej                 fdZ"de#fdZ$dej        defdZ%defdZ&dS )$r   z9
    HTTP headers, as a case-insensitive multi-dict.
    Nheadersr   r   c                 l   |t          |          dk    r	g | _        nt          |t                    rt	          |j                  | _        nt          |t
                    r&fd|                                D             | _        nt          |d         t          t          f          rlt          |d         t                    rdnd}g }|D ]G}|	                    |d          \  }}|
                                }|                    ||f           Hn|}fd|D             | _        | _        d S )Nr   c                     g | ]:\  }}|t          |d          t          |d          t          |          f;S )NFr   r   Tr"   r$   .0r   r   r   s      r   
<listcomp>z$Headers.__init__.<locals>.<listcomp>Q   sa        Aq= )%(KKK($JJJ*1h77 !==r   :   :   )maxsplitc                 |    g | ]8\  }}t          |d           t          |d          t          |          f9S )Fr)   Tr*   r+   s      r   r-   z$Headers.__init__.<locals>.<listcomp>e   sb        Aq	 )%(KKK($JJJ*1h77  r   )len_listr   r   listr   r   r   r    splitlstripappend	_encoding)selfr&   r   sephliner   r   s     `     r   __init__zHeaders.__init__G   s`   
 ?c'lla//DJJ)) 	gm,,DJJ)) 	    $MMOO  DJJ '!*sEl33 '
C88Bccd# % %D::cA:66DAq

AHHaV$$$$%
       DJ "r   c                     | j         ^dD ]T}| j        D ]A\  }}	 |                    |           |                    |           1# t          $ r Y  nw xY w|| _          nUd| _         | j         S )zn
        Header encoding is mandated as ascii, but we allow fallbacks to utf-8
        or iso-8859-1.
        N)r   r   z
iso-8859-1)r9   rawr   UnicodeDecodeError)r:   r   keyr   s       r   r   zHeaders.encodingp   s     >!. . ."&( 
 
JC

8,,,X....-   
 &.DNE  ".~s   *A
AAr   c                     || _         d S r
   )r9   )r:   r   s     r   r   zHeaders.encoding   s    r   c                 $    d | j         D             S )zH
        Returns a list of the raw header items, as byte pairs.
        c                     g | ]
\  }}}||fS  rF   )r,   raw_key_r   s       r   r-   zHeaders.raw.<locals>.<listcomp>   s$    EEE%6Wa% EEEr   r4   r:   s    r   r@   zHeaders.raw   s    
 FE$*EEEEr   c                 N      fd j         D                                             S )Nc                 N    i | ]!\  }}}|                     j                  d "S r
   r   r   )r,   rH   rB   r:   s      r   
<dictcomp>z Headers.keys.<locals>.<dictcomp>   s/    LLLIAsA

4=))4LLLr   )r4   keysrJ   s   `r   rO   zHeaders.keys   s+    LLLLLLLQQSSSr   c                     i }| j         D ]W\  }}}|                    | j                  }|                    | j                  }||v r||xx         d| z  cc<   R|||<   X|                                S )N, )r4   r   r   valuesr:   values_dictrH   rB   r   str_key	str_values          r   rR   zHeaders.values   s    -/!Z 	1 	1MAsEjj//GT]33I+%%G$$$(8Y(8(88$$$$'0G$$!!###r   c                     i }| j         D ]W\  }}}|                    | j                  }|                    | j                  }||v r||xx         d| z  cc<   R|||<   X|                                S )z
        Return `(key, value)` items of headers. Concatenate headers
        into a single comma separated value when a key occurs multiple times.
        rQ   )r4   r   r   r   rS   s          r   r   zHeaders.items   s    
 .0!Z 	1 	1MAsEjj//GT]33I+%%G$$$(8Y(8(88$$$$'0G$$  """r   c                 *      fd j         D             S )z
        Return a list of `(key, value)` pairs of headers. Allow multiple
        occurrences of the same key without concatenating into a single
        comma separated value.
        c                     g | ]:\  }}}|                     j                  |                     j                  f;S rF   rM   )r,   rB   rH   r   r:   s       r   r-   z'Headers.multi_items.<locals>.<listcomp>   sP     
 
 
Q ZZ&&T](C(CD
 
 
r   rI   rJ   s   `r   multi_itemszHeaders.multi_items   s0    
 
 
 
!%
 
 
 	
r   rB   defaultc                 8    	 | |         S # t           $ r |cY S w xY w)z
        Return a header value. If multiple occurrences of the header occur
        then concatenate them together with commas.
        )KeyError)r:   rB   r[   s      r   getzHeaders.get   s5    
	9 	 	 	NNN	s   
 Fsplit_commasc                     |                                                      j                   fd j        D             }|s|S g }|D ]4}|                    d |                    d          D                        5|S )z
        Return a list of all header values for a given key.
        If `split_commas=True` is passed, then any comma separated header
        values are split into multiple return strings.
        c                 |    g | ]8\  }}}|                                 k    |                    j                  9S rF   )r   r   r   )r,   rH   item_key
item_valueget_header_keyr:   s       r   r-   z$Headers.get_list.<locals>.<listcomp>   sN     
 
 
'8Z~~>11 dm,,111r   c                 6    g | ]}|                                 S rF   )strip)r,   items     r   r-   z$Headers.get_list.<locals>.<listcomp>   s      K K K$ K K Kr   ,)r   r   r   r4   extendr6   )r:   rB   r_   rR   split_valuesr   rd   s   `     @r   get_listzHeaders.get_list   s     ++DM::
 
 
 
 
+/:
 
 
  	M 	M 	ME K K%++c:J:J K K KLLLLr   c                     t          |          }|                                D ]}|| v r|                     |           | j                            |j                   d S r
   )r   rO   popr4   ri   )r:   r&   rB   s      r   updatezHeaders.update   s]    '""<<>> 	 	Cd{{
'-(((((r   c                 .    t          | | j                  S )N)r   )r   r   rJ   s    r   copyzHeaders.copy   s    tdm4444r   c                      |                                                      j                   fd j        D             }|rd                    |          S t          |          )z
        Return a single header value.
        If there are multiple headers with the same key, then we concatenate
        them with commas. See: https://tools.ietf.org/html/rfc7230#section-3.2.2
        c                 X    g | ]&\  }}}|k    |                     j                  'S rF   rM   )r,   rH   
header_keyheader_valuenormalized_keyr:   s       r   r-   z'Headers.__getitem__.<locals>.<listcomp>   sD     
 
 
+:|^++ ..+++r   rQ   )r   r   r   r4   joinr]   )r:   rB   r   ru   s   `  @r   __getitem__zHeaders.__getitem__   sz     ++DM::
 
 
 
 
/3z
 
 
  	$99U###smmr   c                    |                     | j        pd          }|                     | j        pd          }|                                fdt          | j                  D             }t          |dd                   D ]
}| j        |= |r|d         }||f| j        |<   dS | j                            ||f           dS )zs
        Set the header `key` to `value`, removing any duplicate entries.
        Retains insertion order.
        r   c                 .    g | ]\  }\  }}}|k    |S rF   rF   )r,   idxrH   rb   
lookup_keys       r   r-   z'Headers.__setitem__.<locals>.<listcomp>  s9     
 
 
%%a1:%% %%%r   r0   Nr   )r   r9   r   	enumerater4   reversedr8   )r:   rB   r   set_key	set_valuefound_indexesrz   r{   s          @r   __setitem__zHeaders.__setitem__   s    
 **T^6w77LL!:7;;	]]__

 
 
 
)24:)>)>
 
 
 M!""-.. 	  	 C
3 	@"C&
I>DJsOOOJw
I>?????r   c                     |                                                     | j                  fdt          | j                  D             }|st          |          t          |          D ]
}| j        |= dS )z*
        Remove the header `key`.
        c                 R    g | ]#\  }\  }}}|                                 k    !|$S rF   )r   )r,   rz   rH   rb   del_keys       r   r-   z'Headers.__delitem__.<locals>.<listcomp>  sC     
 
 
%%a1~~7** ***r   N)r   r   r   r|   r4   r]   r}   )r:   rB   pop_indexesrz   r   s       @r   __delitem__zHeaders.__delitem__  s     ))++$$T]33
 
 
 
)24:)>)>
 
 
  	 3--K(( 	  	 C
3	  	 r   c                     |                                                     | j                  }|d | j        D             v S )Nc                     g | ]\  }}}|	S rF   rF   )r,   rH   rB   s      r   r-   z(Headers.__contains__.<locals>.<listcomp>%  s    >>>iaac>>>r   )r   r   r   r4   )r:   rB   rs   s      r   __contains__zHeaders.__contains__#  s;    YY[[''66
>>4:>>>>>r   c                 D    t          |                                           S r
   )iterrO   rJ   s    r   __iter__zHeaders.__iter__'  s    DIIKK   r   c                 *    t          | j                  S r
   )r3   r4   rJ   s    r   __len__zHeaders.__len__*  s    4:r   otherc                     	 t          |          }n# t          $ r Y dS w xY wd | j        D             }d |j        D             }t          |          t          |          k    S )NFc                     g | ]
\  }}}||fS rF   rF   r,   rH   rB   r   s       r   r-   z"Headers.__eq__.<locals>.<listcomp>3  s"    BBBmaec5\BBBr   c                     g | ]
\  }}}||fS rF   rF   r   s       r   r-   z"Headers.__eq__.<locals>.<listcomp>4  s"    LLL}q#usElLLLr   )r   
ValueErrorr4   sorted)r:   r   other_headers	self_list
other_lists        r   __eq__zHeaders.__eq__-  s    	#ENNMM 	 	 	55	 CBtzBBB	LL8KLLL
i  F:$6$666s    
  c                 .   | j         j        }d}| j        dk    r
d| j        }t          t	          |                                                     }t          |          }t          |          t          |          k    }|r
| d|| dS | d|| dS )N r   z, encoding=())	__class____name__r   r5   r   rZ   dictr3   )r:   
class_nameencoding_stras_listas_dictno_duplicate_keyss         r   __repr__zHeaders.__repr__7  s    ^,
=G##:::L243C3C3E3EFFGGw--LLCLL8 	> ==7=l====99w9,9999r   )NNr
   )F)r   r   )'r   
__module____qualname____doc__typingOptionalHeaderTypesr   r>   propertyr   setterListTupler    r@   KeysViewrO   
ValuesViewrR   	ItemsViewr   rZ   Anyr^   boolrk   rn   rp   rw   r   r   r   Iteratorr   intr   r   r   rF   r   r   r   r   B   s\         15)-'" '"-'" /#&'" 
	'" '" '" '"R #    X0 _c d    _ FV[eUl!;< F F F XFTfoc* T T T T	$)#. 	$ 	$ 	$ 	$#v'S1 # # # #	
V[c3h)?@ 	
 	
 	
 	
 s VZ 6:     C t C@P    ,) )fok: )d ) ) ) )5 5 5 5s s    &@s @3 @4 @ @ @ @0 s  t        $?
 ?t ? ? ? ?!&/&*5 ! ! ! !    7FJ 74 7 7 7 7:# : : : : : :r   )r   r
   )r   collections.abcr   Unionr   r    Sequencer   r   r   AnyStrr   r   Iterabler   r   r   r   r"   r$   MutableMappingr   rF   r   r   <module>r      sM  
  # # # # # #l
N38
N5%< 
OFLc*+
OFL./
OC
OEG G&,sEz* Gc G G G G GG3 Gv} G G G G G %&;< ?6<v}(DEF_V\&-">?@    &*9 9<U
#99 oc"9 	9 9 9 9" GK- -<U
#-/5s/C-
- - - -B: B: B: B: B:f#CH- B: B: B: B: B:r   