§
    (U e±A  ã                  óD  — d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	 ej
        rd dlmZ  G d„ de¦  «        Zd	d
gZ ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Zej        d
ej        eef         ej        ej        eef                  df         Z G d„ de¦  «        Zdd„Z G d„ d	ej        eef         ej        eef         ¦  «        Z G d„ dej        ej        eef                  ¦  «        Z G d„ d
ej        eef         ¦  «        Z dS )é    )ÚannotationsN)ÚOrderedDict)ÚEnumÚauto)ÚRLock)ÚProtocolc                  ó   — e Zd Zdd„Zd	d„ZdS )
ÚHasGettableStringKeysÚreturnútyping.Iterator[str]c                ó   — d S ©N© ©Úselfs    úX/var/www/dev/btcams2023/python_venv/lib/python3.11/site-packages/urllib3/_collections.pyÚkeyszHasGettableStringKeys.keys   ó   € ØˆCó    ÚkeyÚstrc                ó   — d S r   r   ©r   r   s     r   Ú__getitem__z!HasGettableStringKeys.__getitem__   r   r   N©r   r   ©r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r
   r
      s<   € € € € € ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	r   r
   ÚRecentlyUsedContainerÚHTTPHeaderDictÚ_KTÚ_VTÚ_DTc                  ó"   — e Zd Z e¦   «         ZdS )Ú	_SentinelN)r   r   r   r   Ú
not_passedr   r   r   r&   r&   '   s   € € € € € Ø�‘”€J€J€Jr   r&   Ú	potentialÚobjectr   úValidHTTPHeaderSource | Nonec                óê  — t          | t          ¦  «        r| S t          | t          j        ¦  «        r1t          j        t          j        t
          t
          f         | ¦  «        S t          | t          j        ¦  «        rAt          j        t          j        t          j        t
          t
          f                  | ¦  «        S t          | d¦  «        r%t          | d¦  «        rt          j        d| ¦  «        S d S )Nr   r   r
   )	Ú
isinstancer!   ÚtypingÚMappingÚcastr   ÚIterableÚTupleÚhasattr)r(   s    r   Ú%ensure_can_construct_http_header_dictr3   +   sÄ   € õ �)�^Ñ,Ô,ð ØÐÝ	�I�vœ~Ñ	.Ô	.ð õ Œ{�6œ>­#­s¨(Ô3°YÑ?Ô?Ð?Ý	�I�vœÑ	/Ô	/ð õ Œ{�6œ?­6¬<½½S¸Ô+AÔBÀIÑNÔNÐNÝ	�˜FÑ	#Ô	#ð ­°	¸=Ñ(IÔ(Ið ÝŒ{Ð2°IÑ>Ô>Ð>àˆtr   c                  óŒ   ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   	 	 ddˆ fd„Zdd„Zd d„Zd!d„Zd"d„Z	d#d„Z
d$d„Zd%d„Zˆ xZS )&r    a‘  
    Provides a thread-safe dict-like container which maintains up to
    ``maxsize`` keys while throwing away the least-recently-used keys beyond
    ``maxsize``.

    :param maxsize:
        Maximum number of recent elements to retain.

    :param dispose_func:
        Every time an item is evicted from the container,
        ``dispose_func(value)`` is called.  Callback which will get called
    ztyping.OrderedDict[_KT, _VT]Ú
_containerÚintÚ_maxsizeú#typing.Callable[[_VT], None] | NoneÚdispose_funcr   Úlocké
   NÚmaxsizer   ÚNonec                ó°   •— t          ¦   «                              ¦   «          || _        || _        t	          ¦   «         | _        t          ¦   «         | _        d S r   )ÚsuperÚ__init__r7   r9   r   r5   r   r:   )r   r<   r9   Ú	__class__s      €r   r@   zRecentlyUsedContainer.__init__R   sD   ø€ õ
 	‰Œ×ÒÑÔÐØˆŒØ(ˆÔÝ%™-œ-ˆŒÝ‘G”GˆŒ	ˆ	ˆ	r   r   r"   r#   c                ó�   — | j         5  | j                             |¦  «        }|| j        |<   |cd d d ¦  «         S # 1 swxY w Y   d S r   )r:   r5   Úpop)r   r   Úitems      r   r   z!RecentlyUsedContainer.__getitem__]   s’   € àŒYð 	ð 	Ø”?×&Ò& sÑ+Ô+ˆDØ#'ˆDŒO˜CÑ Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   ˆ&;»?Á?Úvaluec                óŠ  — d }| j         5  	 || j                             |¦  «        f}|| j        |<   nR# t          $ rE || j        |<   t	          | j        ¦  «        | j        k    r| j                             d¬¦  «        }Y nw xY wd d d ¦  «         n# 1 swxY w Y   |�#| j        r|\  }}|                      |¦  «         d S d S d S )NF)Úlast)r:   r5   rC   ÚKeyErrorÚlenr7   Úpopitemr9   )r   r   rF   Úevicted_itemÚ_Úevicted_values         r   Ú__setitem__z!RecentlyUsedContainer.__setitem__d   sH  € ØˆØŒYð 	Gð 	GðGð  # D¤O×$7Ò$7¸Ñ$<Ô$<Ð<�Ø',�” Ñ$Ð$øÝð Gð Gð Gð (-�” Ñ$Ý�t”Ñ'Ô'¨$¬-Ò7Ð7ð $(¤?×#:Ò#:ÀÐ#:Ñ#FÔ#F�LøøðGøøøð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð& Ð#¨Ô(9Ð#Ø+ÑˆAˆ}Ø×Ò˜mÑ,Ô,Ð,Ð,Ð,ð $Ð#Ð#Ð#s2   ŠBŒ&3²B³ABÁ?BÂBÂBÂBÂBc                ó´   — | j         5  | j                             |¦  «        }d d d ¦  «         n# 1 swxY w Y   | j        r|                      |¦  «         d S d S r   )r:   r5   rC   r9   )r   r   rF   s      r   Ú__delitem__z!RecentlyUsedContainer.__delitem__}   s¥   € ØŒYð 	-ð 	-Ø”O×'Ò'¨Ñ,Ô,ˆEð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð Ôð 	%Ø×Ò˜eÑ$Ô$Ð$Ð$Ð$ð	%ð 	%s   ˆ/¯3¶3c                ól   — | j         5  t          | j        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r   )r:   rJ   r5   r   s    r   Ú__len__zRecentlyUsedContainer.__len__„   s{   € ØŒYð 	(ð 	(Ý�t”Ñ'Ô'ð	(ð 	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ˆ)©-°-útyping.NoReturnc                ó    — t          d¦  «        ‚)Nz7Iteration over this class is unlikely to be threadsafe.)ÚNotImplementedErrorr   s    r   Ú__iter__zRecentlyUsedContainer.__iter__ˆ   s   € Ý!ØEñ
ô 
ð 	
r   c                ó  — | j         5  t          | j                             ¦   «         ¦  «        }| j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   | j        r|D ]}|                      |¦  «         Œd S d S r   )r:   Úlistr5   ÚvaluesÚclearr9   )r   rZ   rF   s      r   r[   zRecentlyUsedContainer.clear�   sÕ   € ØŒYð 	$ð 	$å˜$œ/×0Ò0Ñ2Ô2Ñ3Ô3ˆFØŒO×!Ò!Ñ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð
 Ôð 	)Øð )ð )�Ø×!Ò! %Ñ(Ô(Ð(Ð(ð	)ð 	)ð)ð )s   ˆA AÁAÁAúset[_KT]c                ó�   — | j         5  t          | j                             ¦   «         ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r   )r:   Úsetr5   r   r   s    r   r   zRecentlyUsedContainer.keys—   s‡   € ØŒYð 	/ð 	/Ý�t”×+Ò+Ñ-Ô-Ñ.Ô.ð	/ð 	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/rE   )r;   N)r<   r6   r9   r8   r   r=   )r   r"   r   r#   )r   r"   rF   r#   r   r=   )r   r"   r   r=   ©r   r6   )r   rT   )r   r=   )r   r\   )r   r   r   Ú__doc__Ú__annotations__r@   r   rO   rQ   rS   rW   r[   r   Ú__classcell__©rA   s   @r   r    r    ?   s  ø€ € € € € € ðð ð -Ð,Ð,Ñ,Ø€M€M�MØ5Ð5Ð5Ñ5Ø€K€K�Kð Ø<@ð	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð-ð -ð -ð -ð2%ð %ð %ð %ð(ð (ð (ð (ð
ð 
ð 
ð 
ð
)ð )ð )ð )ð/ð /ð /ð /ð /ð /ð /ð /r   c                  ó>   — e Zd ZU dZded<   dd„Zdd	„Zdd„Zdd„ZdS )ÚHTTPHeaderDictItemViewa�  
    HTTPHeaderDict is unusual for a Mapping[str, str] in that it has two modes of
    address.

    If we directly try to get an item with a particular name, we will get a string
    back that is the concatenated version of all the values:

    >>> d['X-Header-Name']
    'Value1, Value2, Value3'

    However, if we iterate over an HTTPHeaderDict's items, we will optionally combine
    these values based on whether combine=True was called when building up the dictionary

    >>> d = HTTPHeaderDict({"A": "1", "B": "foo"})
    >>> d.add("A", "2", combine=True)
    >>> d.add("B", "bar")
    >>> list(d.items())
    [
        ('A', '1, 2'),
        ('B', 'foo'),
        ('B', 'bar'),
    ]

    This class conforms to the interface required by the MutableMapping ABC while
    also giving us the nonstandard iteration behavior we want; items with duplicate
    keys, ordered by time of first insertion.
    r!   Ú_headersÚheadersr   r=   c                ó   — || _         d S r   )rf   )r   rg   s     r   r@   zHTTPHeaderDictItemView.__init__»   s   € ØˆŒˆˆr   r6   c                óh   — t          t          | j                             ¦   «         ¦  «        ¦  «        S r   )rJ   rY   rf   Ú	iteritemsr   s    r   rS   zHTTPHeaderDictItemView.__len__¾   s&   € Ý•4˜œ×/Ò/Ñ1Ô1Ñ2Ô2Ñ3Ô3Ð3r   ú typing.Iterator[tuple[str, str]]c                ó4   — | j                              ¦   «         S r   )rf   rj   r   s    r   rW   zHTTPHeaderDictItemView.__iter__Á   s   € ØŒ}×&Ò&Ñ(Ô(Ð(r   rD   r)   Úboolc                óê   — t          |t          ¦  «        r]t          |¦  «        dk    rJ|\  }}t          |t          ¦  «        r0t          |t          ¦  «        r| j                             ||¦  «        S dS )Né   F)r,   ÚtuplerJ   r   rf   Ú_has_value_for_header)r   rD   Ú
passed_keyÚ
passed_vals       r   Ú__contains__z#HTTPHeaderDictItemView.__contains__Ä   so   € Ý�d�EÑ"Ô"ð 	S¥s¨4¡y¤y°A¢~ ~Ø%)Ñ"ˆJ˜
Ý˜*¥cÑ*Ô*ð S­z¸*ÅcÑ/JÔ/Jð SØ”}×:Ò:¸:ÀzÑRÔRÐRØˆur   N)rg   r!   r   r=   r_   ©r   rk   )rD   r)   r   rm   )	r   r   r   r`   ra   r@   rS   rW   rt   r   r   r   re   re   œ   s~   € € € € € € ðð ð8 ÐÐÑð ð  ð  ð  ð4ð 4ð 4ð 4ð)ð )ð )ð )ðð ð ð ð ð r   re   c                  óX  ‡ — e Zd ZU dZded<   d;d<ˆ fd	„Zd=d„Zd>d„Zd?d„Zd@d„Z	dAdBˆ fd„Z
dCd„ZdCd„ZdDd„ZdEd„Zd?d„Zdd œdFd"„ZdGd%„Zej        dHd'„¦   «         Zej        dId*„¦   «         Zej        fdJd,„ZeZeZeZeZdKd-„ZdLd.„ZdMd/„ZdNd1„ZdNd2„ZdOd4„Z dPd7„Z!dQd8„Z"dQd9„Z#dQd:„Z$ˆ xZ%S )Rr!   ap  
    :param headers:
        An iterable of field-value pairs. Must not contain multiple field names
        when compared case-insensitively.

    :param kwargs:
        Additional field-value pairs to pass in to ``dict.update``.

    A ``dict`` like container for storing HTTP Headers.

    Field names are stored and compared case-insensitively in compliance with
    RFC 7230. Iteration provides the first case-sensitive key seen for each
    case-insensitive pair.

    Using ``__setitem__`` syntax overwrites fields that compare equal
    case-insensitively in order to maintain ``dict``'s api. For fields that
    compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add``
    in a loop.

    If multiple fields that are equal case-insensitively are passed to the
    constructor or ``.update``, the behavior is undefined and some will be
    lost.

    >>> headers = HTTPHeaderDict()
    >>> headers.add('Set-Cookie', 'foo=bar')
    >>> headers.add('set-cookie', 'baz=quxx')
    >>> headers['content-length'] = '7'
    >>> headers['SET-cookie']
    'foo=bar, baz=quxx'
    >>> headers['Content-Length']
    '7'
    z%typing.MutableMapping[str, list[str]]r5   Nrg   r*   Úkwargsr   c                ó  •— t          ¦   «                              ¦   «          i | _        |�@t          |t          ¦  «        r|                      |¦  «         n|                      |¦  «         |r|                      |¦  «         d S d S r   )r?   r@   r5   r,   r!   Ú
_copy_fromÚextend)r   rg   rw   rA   s      €r   r@   zHTTPHeaderDict.__init__ð   s‰   ø€ Ý‰Œ×ÒÑÔÐØˆŒØÐÝ˜'¥>Ñ2Ô2ð %Ø—’ Ñ(Ô(Ð(Ð(à—’˜GÑ$Ô$Ð$Øð 	 Ø�KŠK˜ÑÔÐÐÐð	 ð 	 r   r   Úvalr   r=   c                ó–   — t          |t          ¦  «        r|                     d¦  «        }||g| j        |                     ¦   «         <   d S )Núlatin-1)r,   ÚbytesÚdecoder5   Úlower©r   r   r{   s      r   rO   zHTTPHeaderDict.__setitem__û   sC   € å�c�5Ñ!Ô!ð 	(Ø—*’*˜YÑ'Ô'ˆCØ(+¨S zˆŒ˜Ÿ	š	™œÑ$Ð$Ð$r   c                óz   — | j         |                     ¦   «                  }d                     |dd …         ¦  «        S )Nú, é   ©r5   r€   Újoinr�   s      r   r   zHTTPHeaderDict.__getitem__  s0   € ØŒo˜cŸiši™kœkÔ*ˆØ�yŠy˜˜Q˜R˜RœÑ!Ô!Ð!r   c                ó:   — | j         |                     ¦   «         = d S r   ©r5   r€   r   s     r   rQ   zHTTPHeaderDict.__delitem__  s   € ØŒO˜CŸIšI™KœKÐ(Ð(Ð(r   r)   rm   c                óf   — t          |t          ¦  «        r|                     ¦   «         | j        v S dS )NF)r,   r   r€   r5   r   s     r   rt   zHTTPHeaderDict.__contains__  s.   € Ý�c�3ÑÔð 	2Ø—9’9‘;”; $¤/Ð1Ð1Øˆur   Ú Údefaultc                óH   •— t          ¦   «                              ||¦  «        S r   )r?   Ú
setdefault)r   r   r‹   rA   s      €r   r�   zHTTPHeaderDict.setdefault  s   ø€ Ý‰wŒw×!Ò! # wÑ/Ô/Ð/r   Úotherc                óÔ   — t          |¦  «        }|€dS  t          | ¦  «        |¦  «        }d„ |                      ¦   «         D ¦   «         d„ |                     ¦   «         D ¦   «         k    S )NFc                ó>   — i | ]\  }}|                      ¦   «         |“ŒS r   ©r€   ©Ú.0ÚkÚvs      r   ú
<dictcomp>z)HTTPHeaderDict.__eq__.<locals>.<dictcomp>  s&   € Ð;Ð;Ð;¡  A�—’‘	”	˜1Ð;Ð;Ð;r   c                ó>   — i | ]\  }}|                      ¦   «         |“ŒS r   r‘   r’   s      r   r–   z)HTTPHeaderDict.__eq__.<locals>.<dictcomp>  s9   € ð @
ð @
ð @
Ù!˜Q ˆA�GŠG‰IŒI�qð@
ð @
ð @
r   )r3   ÚtypeÚ
itermerged)r   rŽ   Úmaybe_constructableÚother_as_http_header_dicts       r   Ú__eq__zHTTPHeaderDict.__eq__  s„   € ÝCÀEÑJÔJÐØÐ&Ø�5à(2­¨T©
¬
Ð3FÑ(GÔ(GÐ%à;Ð;¨¯ªÑ):Ô):Ð;Ñ;Ô;ð @
ð @
Ø%>×%IÒ%IÑ%KÔ%Kð@
ñ @
ô @
ò 
ð 	
r   c                ó.   — |                       |¦  «         S r   )rœ   )r   rŽ   s     r   Ú__ne__zHTTPHeaderDict.__ne__  s   € Ø—;’;˜uÑ%Ô%Ð%Ð%r   r6   c                ó*   — t          | j        ¦  «        S r   )rJ   r5   r   s    r   rS   zHTTPHeaderDict.__len__  s   € Ý�4”?Ñ#Ô#Ð#r   r   c              #  óV   K  — | j                              ¦   «         D ]}|d         V — Œd S )Nr   )r5   rZ   )r   Úvalss     r   rW   zHTTPHeaderDict.__iter__!  s<   è è € à”O×*Ò*Ñ,Ô,ð 	ð 	ˆDØ�q”'ˆMˆMˆMˆMð	ð 	r   c                ó0   — 	 | |= d S # t           $ r Y d S w xY wr   )rI   r   s     r   ÚdiscardzHTTPHeaderDict.discard&  s4   € ð	Ø�S�	�	�	øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ‡
”F)Úcombiner¤   c               óJ  — t          |t          ¦  «        r|                     d¦  «        }|                     ¦   «         }||g}| j                             ||¦  «        }||urAt          |¦  «        dk    sJ ‚|r|d         dz   |z   |d<   dS |                     |¦  «         dS dS )aù  Adds a (name, value) pair, doesn't overwrite the value if it already
        exists.

        If this is called with combine=True, instead of adding a new header value
        as a distinct item during iteration, this will instead append the value to
        any existing header value with a comma. If no existing header value exists
        for the key, then the value will simply be added, ignoring the combine parameter.

        >>> headers = HTTPHeaderDict(foo='bar')
        >>> headers.add('Foo', 'baz')
        >>> headers['foo']
        'bar, baz'
        >>> list(headers.items())
        [('foo', 'bar'), ('foo', 'baz')]
        >>> headers.add('foo', 'quz', combine=True)
        >>> list(headers.items())
        [('foo', 'bar, baz, quz')]
        r}   ro   éÿÿÿÿrƒ   N)r,   r~   r   r€   r5   r�   rJ   Úappend)r   r   r{   r¤   Ú	key_lowerÚnew_valsr¡   s          r   ÚaddzHTTPHeaderDict.add,  s¶   € õ( �c�5Ñ!Ô!ð 	(Ø—*’*˜YÑ'Ô'ˆCØ—I’I‘K”Kˆ	Ø˜�:ˆàŒ×)Ò)¨)°XÑ>Ô>ˆØ˜4ÐÐõ �t‘9”9 ’>�>�>�>Øð !Ø œ8 d™?¨SÑ0��R‘��à—’˜CÑ Ô Ð Ð Ð ð  Ðr   ÚargsÚValidHTTPHeaderSourcec                óÄ  — t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚t          |¦  «        dk    r|d         nd}t          |t          ¦  «        r2|                     ¦   «         D ]\  }}|                      ||¦  «         Œ�nt          |t          j        ¦  «        r1|                     ¦   «         D ]\  }}|                      ||¦  «         ŒnÍt          |t          j	        ¦  «        r`t          j
        t          j	        t          j        t          t          f                  |¦  «        }|D ]\  }}|                      ||¦  «         ŒnSt          |d¦  «        rCt          |d¦  «        r3|                     ¦   «         D ]}|                      |||         ¦  «         Œ|                     ¦   «         D ]\  }}|                      ||¦  «         ŒdS )	zÀGeneric import function for any type of header-like object.
        Adapted version of MutableMapping.update in order to insert items
        with self.add instead of self.__setitem__
        r„   z/extend() takes at most 1 positional arguments (z given)r   r   r   r   N)rJ   Ú	TypeErrorr,   r!   rj   rª   r-   r.   Úitemsr0   r/   r1   r   r2   r   )r   r«   rw   rŽ   r   r{   rF   s          r   rz   zHTTPHeaderDict.extendO  så  € õ
 ˆt‰9Œ9�qŠ=ˆ=ÝØTÅ#ÀdÁ)Ä)ÐTÐTÐTñô ð õ ˜t™9œ9¨š>˜>��Q”�¨rˆå�e�^Ñ,Ô,ð 	*Ø!ŸOšOÑ-Ô-ð #ð #‘��SØ—’˜˜cÑ"Ô"Ð"Ð"ñ#å˜�vœ~Ñ.Ô.ð 	*Ø!ŸKšK™MœMð #ð #‘��SØ—’˜˜cÑ"Ô"Ð"Ð"ð#å˜�vœÑ/Ô/ð 	*Ý”K¥¤µ´½SÅ#¸XÔ0FÔ GÈÑOÔOˆEØ#ð %ð %‘
��UØ—’˜˜eÑ$Ô$Ð$Ð$ð%å�U˜FÑ#Ô#ð 	*­°°}Ñ(EÔ(Eð 	*ð —z’z‘|”|ð *ð *�Ø—’˜˜e CœjÑ)Ô)Ð)Ð)à Ÿ,š,™.œ.ð 	!ð 	!‰JˆC�Ø�HŠH�S˜%Ñ Ô Ð Ð ð	!ð 	!r   ú	list[str]c                ó   — d S r   r   r   s     r   ÚgetlistzHTTPHeaderDict.getlistp  ó   € àˆr   r$   úlist[str] | _DTc                ó   — d S r   r   )r   r   r‹   s      r   r²   zHTTPHeaderDict.getlistt  r³   r   ú_Sentinel | _DTc                óž   — 	 | j         |                     ¦   «                  }|dd…         S # t          $ r |t          j        u rg cY S |cY S w xY w)zmReturns a list of all the values for the named field. Returns an
        empty list if the key doesn't exist.r„   N)r5   r€   rI   r&   r'   )r   r   r‹   r¡   s       r   r²   zHTTPHeaderDict.getlistx  sg   € ð
	Ø”? 3§9¢9¡;¤;Ô/ˆDð ˜˜˜”8ˆOøõ ð 	ð 	ð 	Ø�)Ô.Ð.Ð.à�	�	�	àˆNˆNˆNð	øøøs   ‚+ «AÁAÁAc                ót   — t          | ¦  «        j        › dt          |                      ¦   «         ¦  «        › d�S )Nú(ú))r˜   r   Údictr™   r   s    r   Ú__repr__zHTTPHeaderDict.__repr__’  s4   € Ý�t‘*”*Ô%ÐBÐB­¨T¯_ª_Ñ->Ô->Ñ(?Ô(?ÐBÐBÐBÐBr   c                óx   — |D ]6}|                      |¦  «        }|g|¢| j        |                     ¦   «         <   Œ7d S r   )r²   r5   r€   )r   rŽ   r   r{   s       r   ry   zHTTPHeaderDict._copy_from•  sI   € Øð 	7ð 	7ˆCØ—-’- Ñ$Ô$ˆCØ,/¨;°#¨;ˆDŒO˜CŸIšI™KœKÑ(Ð(ð	7ð 	7r   c                ó^   —  t          | ¦  «        ¦   «         }|                     | ¦  «         |S r   )r˜   ry   )r   Úclones     r   ÚcopyzHTTPHeaderDict.copyš  s,   € Ø•�T‘
”
‘”ˆØ×Ò˜ÑÔÐØˆr   rk   c              #  ó„   K  — | D ]:}| j         |                     ¦   «                  }|dd…         D ]}|d         |fV — ŒŒ;dS )z8Iterate over all header lines, including duplicate ones.r„   Nr   rˆ   )r   r   r¡   r{   s       r   rj   zHTTPHeaderDict.iteritemsŸ  sf   è è € àð 	#ð 	#ˆCØ”? 3§9¢9¡;¤;Ô/ˆDØ˜A˜B˜B”xð #ð #�Ø˜1”g˜s�lÐ"Ð"Ð"Ð"ð#ð	#ð 	#r   c              #  ó    K  — | D ]H}| j         |                     ¦   «                  }|d         d                     |dd…         ¦  «        fV — ŒIdS )z:Iterate over all headers, merging duplicate ones together.r   rƒ   r„   Nr…   r�   s      r   r™   zHTTPHeaderDict.itermerged¦  s_   è è € àð 	-ð 	-ˆCØ”/ #§)¢)¡+¤+Ô.ˆCØ�a”&˜$Ÿ)š) C¨¨¨¤GÑ,Ô,Ð,Ð,Ð,Ð,Ð,ð	-ð 	-r   re   c                ó    — t          | ¦  «        S r   )re   r   s    r   r¯   zHTTPHeaderDict.items¬  s   € Ý% dÑ+Ô+Ð+r   Úheader_nameÚpotential_valuec                ó`   — || v r)|| j         |                     ¦   «                  dd …         v S dS )Nr„   Frˆ   )r   rÄ   rÅ   s      r   rq   z$HTTPHeaderDict._has_value_for_header¯  s9   € Ø˜$ÐÐØ" d¤o°k×6GÒ6GÑ6IÔ6IÔ&JÈ1È2È2Ô&NÐNÐNØˆur   c                ó`   — t          |¦  «        }|€t          S |                      |¦  «         | S r   )r3   ÚNotImplementedrz   )r   rŽ   rš   s      r   Ú__ior__zHTTPHeaderDict.__ior__´  s7   € õ DÀEÑJÔJÐØÐ&Ý!Ð!Ø�ŠÐ'Ñ(Ô(Ð(Øˆr   c                óˆ   — t          |¦  «        }|€t          S |                      ¦   «         }|                     |¦  «         |S r   )r3   rÈ   rÀ   rz   ©r   rŽ   rš   Úresults       r   Ú__or__zHTTPHeaderDict.__or__½  sD   € õ DÀEÑJÔJÐØÐ&Ý!Ð!Ø—’‘”ˆØ�ŠÐ)Ñ*Ô*Ð*Øˆr   c                ó�   — t          |¦  «        }|€t          S  t          | ¦  «        |¦  «        }|                     | ¦  «         |S r   )r3   rÈ   r˜   rz   rË   s       r   Ú__ror__zHTTPHeaderDict.__ror__Ç  sL   € õ DÀEÑJÔJÐØÐ&Ý!Ð!Ø•�d‘”Ð/Ñ0Ô0ˆØ�Š�dÑÔÐØˆr   r   )rg   r*   rw   r   )r   r   r{   r   r   r=   r   )r   r   r   r=   )r   r)   r   rm   )rŠ   )r   r   r‹   r   r   r   )rŽ   r)   r   rm   r_   r   )r   r   r{   r   r¤   rm   r   r=   )r«   r¬   rw   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!   ru   )r   re   )rÄ   r   rÅ   r   r   rm   )rŽ   r)   r   r!   )&r   r   r   r`   ra   r@   rO   r   rQ   rt   r�   rœ   rž   rS   rW   r£   rª   rz   r-   Úoverloadr²   r&   r'   Ú
getheadersÚgetallmatchingheadersÚigetÚget_allr¼   ry   rÀ   rj   r™   r¯   rq   rÉ   rÍ   rÏ   rb   rc   s   @r   r!   r!   Ì   s·  ø€ € € € € € ðð ðB 6Ð5Ð5Ñ5ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð2ð 2ð 2ð 2ð"ð "ð "ð "ð)ð )ð )ð )ðð ð ð ð
0ð 0ð 0ð 0ð 0ð 0ð 0ð	
ð 	
ð 	
ð 	
ð&ð &ð &ð &ð$ð $ð $ð $ðð ð ð ð
ð ð ð ð :?ð !!ð !!ð !!ð !!ð !!ð !!ðF!ð !ð !ð !ðB „_ðð ð ñ „_ðð „_ðð ð ñ „_ðð 4=Ô3Gðð ð ð ð ð& €JØ#ÐØ€Dð €GðCð Cð Cð Cð7ð 7ð 7ð 7ð
ð ð ð ð
#ð #ð #ð #ð-ð -ð -ð -ð,ð ,ð ,ð ,ðð ð ð ð
ð ð ð ðð ð ð ðð ð ð ð ð ð ð r   )r(   r)   r   r*   )!Ú
__future__r   r-   Úcollectionsr   Úenumr   r   Ú	threadingr   ÚTYPE_CHECKINGÚtyping_extensionsr   r
   Ú__all__ÚTypeVarr"   r#   r$   ÚUnionr.   r   r0   r1   r¬   r&   r3   ÚGenericÚMutableMappingr    ÚSetre   r!   r   r   r   ú<module>rá      s4  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	Ôð 
ð +Ð*Ð*Ð*Ð*Ð*ðð ð ð ð  ñ ô ð ð #Ð$4Ð
5€ð €f„n�UÑÔ€à€f„n�UÑÔ€à€f„n�UÑÔ€àœØØ
„N�3˜�8ÔØ
„O�F”L  c Ô*Ô+ØðôÐ ðð ð ð ð �ñ ô ð ðð ð ð ð(Z/ð Z/ð Z/ð Z/ð Z/˜FœN¨3°¨8Ô4°fÔ6KÈCÐQTÈHÔ6Uñ Z/ô Z/ð Z/ðz-ð -ð -ð -ð -˜VœZ¨¬°S¸#°XÔ(>Ô?ñ -ô -ð -ð`Cð Cð Cð Cð C�VÔ*¨3°¨8Ô4ñ Cô Cð Cð Cð Cr   