§
    (U e¨‚  ã                   óf  — d Z ddlZddlZddlZddlZddlZddlZddlZddl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 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mZ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'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 dZ2 ej3        ¦   «         Z4dddœZ5d 6                     ej7        d ed¬¦  «        d         ¦  «        ¦  «        Z8ej9        dk    rd„ Z:d„ Z"d„ Z;d„ Z<dJd„Z=d„ Z>d „ Z?ej@        d!„ ¦   «         ZAd"„ ZBd#„ ZCd$„ ZDd%„ ZEdJd&„ZFd'„ ZGd(„ ZHd)„ ZId*„ ZJd+„ ZKd,„ ZLd-„ ZMd.„ ZN eOd/¦  «        ZPd0„ ZQd1„ ZRd2„ ZSd3„ ZTd4„ ZUd5„ ZVej@        d6„ ¦   «         ZWd7„ ZXdKd8„ZYd9„ ZZdLd:„Z[dMd<„Z\d=„ Z]d>„ Z^d? _                    d@¦  «        Z`e`dAz  Zae`dBz  ZbdC„ ZcdD„ ZddE„ ZedF„ ZfdG„ ZgdH„ ZhdI„ ZidS )Nz”
requests.utils
~~~~~~~~~~~~~~

This module provides utility functions that are used within Requests
that are also useful for external consumption.
é    N)ÚOrderedDict)Úmake_headersÚ	parse_urlé   )Úcerts©Ú__version__)Ú_HEADER_VALIDATORS_BYTEÚ_HEADER_VALIDATORS_STRÚHEADER_VALIDATORSÚto_native_string)ÚMappingÚ
basestringÚbytesÚ
getproxiesÚgetproxies_environmentÚinteger_types)Úparse_http_list)Úproxy_bypassÚproxy_bypass_environmentÚquoteÚstrÚunquoteÚurlparseÚ
urlunparse©Úcookiejar_from_dict)ÚFileModeWarningÚInvalidHeaderÚ
InvalidURLÚUnrewindableBodyError)ÚCaseInsensitiveDict)z.netrcÚ_netrcéP   i»  )ÚhttpÚhttpsz, z,\s*T)Úaccept_encodingzaccept-encodingÚwin32c                 óL  — 	 dd l }n# t          $ r Y dS w xY w	 |                     |j        d¦  «        }t	          |                     |d¦  «        d         ¦  «        }|                     |d¦  «        d         }n# t          t          f$ r Y dS w xY w|r|sdS |                     d¦  «        }|D ]t}|dk    rd| vr d	S | 	                    dd
¦  «        }| 	                    dd¦  «        }| 	                    dd¦  «        }t          j        || t          j        ¦  «        r d	S ŒudS )Nr   Fz;Software\Microsoft\Windows\CurrentVersion\Internet SettingsÚProxyEnableÚProxyOverrideú;z<local>ú.Tz\.Ú*z.*ú?)ÚwinregÚImportErrorÚOpenKeyÚHKEY_CURRENT_USERÚintÚQueryValueExÚOSErrorÚ
ValueErrorÚsplitÚreplaceÚreÚmatchÚI)Úhostr0   ÚinternetSettingsÚproxyEnableÚproxyOverrideÚtests         úR/var/www/dev/btcams2023/python_venv/lib/python3.11/site-packages/requests/utils.pyÚproxy_bypass_registryrC   L   sv  € ð	ØˆMˆMˆMˆMøÝð 	ð 	ð 	Ø�5�5ð	øøøð
	Ø%Ÿ~š~ØÔ(ØNñ ô  Ðõ
 ˜f×1Ò1Ð2BÀMÑRÔRÐSTÔUÑVÔVˆKà"×/Ò/Ð0@À/ÑRÔRÐSTÔUˆMˆMøÝ�Ð$ð 	ð 	ð 	Ø�5�5ð	øøøàð 	 -ð 	Ø�5ð
 &×+Ò+¨CÑ0Ô0ˆà!ð 	ð 	ˆDØ�yÒ Ð Ø˜d�?�?Ø˜4˜4Ø—<’<  UÑ+Ô+ˆDØ—<’<  UÑ+Ô+ˆDØ—<’<  TÑ*Ô*ˆDÝŒx˜˜d¥B¤DÑ)Ô)ð Ø�t�tðàˆus   ‚ ‡
”™A A: Á:BÂBc                 óZ   — t          ¦   «         rt          | ¦  «        S t          | ¦  «        S )zšReturn True, if the host should be bypassed.

        Checks proxy settings gathered from the environment, if specified,
        or the registry.
        )r   r   rC   )r=   s    rB   r   r   p   s.   € õ "Ñ#Ô#ð 	/Ý+¨DÑ1Ô1Ð1å(¨Ñ.Ô.Ð.ó    c                 óN   — t          | d¦  «        r|                      ¦   «         } | S )z/Returns an internal sequence dictionary update.Úitems)ÚhasattrrG   )Úds    rB   Údict_to_sequencerJ   |   s(   € õ ˆq�'ÑÔð Ø�GŠG‰IŒIˆà€HrE   c                 óæ  — d }d}t          | d¦  «        rt          | ¦  «        }n–t          | d¦  «        r| j        }n~t          | d¦  «        rn	 |                      ¦   «         }t          j        |¦  «        j        }d| j        vrt          j        dt          ¦  «         n# t          j        t          f$ r Y nw xY wt          | d¦  «        r‘	 |                      ¦   «         }t          | d¦  «        rW|€U	 |                      dd	¦  «         |                      ¦   «         }|                      |pd¦  «         n'# t          $ r d}Y nw xY wn# t          $ r |�|}Y nw xY w|€d}t!          d||z
  ¦  «        S )
Nr   Ú__len__ÚlenÚfilenoÚba%  Requests has determined the content-length for this request using the binary size of the file: however, the file has been opened in text mode (i.e. without the 'b' flag in the mode). This may lead to an incorrect content-length. In Requests 3.0, support will be removed for files in text mode.ÚtellÚseeké   )rH   rM   rN   ÚosÚfstatÚst_sizeÚmodeÚwarningsÚwarnr   ÚioÚUnsupportedOperationÚAttributeErrorrP   rQ   r6   Úmax)ÚoÚtotal_lengthÚcurrent_positionrN   s       rB   Ú	super_lenr`   …   sÎ  € Ø€LØÐåˆq�)ÑÔð Ý˜1‘v”vˆˆå	��EÑ	Ô	ð Ø”uˆˆå	��HÑ	Ô	ð ð	Ø—X’X‘Z”ZˆFõ œ8 FÑ+Ô+Ô3ˆLð ˜!œ&Ð Ð Ý”ð2õ $ñ
ô 
ð 
øøõ Ô'­Ð8ð 	ð 	ð 	ð ˆDð		øøøõ. ˆq�&ÑÔð %ð	%Ø Ÿvšv™xœxÐõ �q˜&Ñ!Ô!ð % lÐ&:ð	%à—F’F˜1˜a‘L”L�LØ#$§6¢6¡8¤8�Lð —F’FÐ+Ð0¨qÑ1Ô1Ð1Ð1øÝð %ð %ð %Ø#$�L�L�Lð%øøøøøõ% ð 	0ð 	0ð 	0ð
 Ð'Ø#/Ð øøð	0øøøð* ÐØˆåˆq�,Ð!1Ñ1Ñ2Ô2Ð2s7   ÁB ÂB8Â7B8ÃE Ã3AD5 Ä5EÅEÅEÅEFc                 óÒ  — t           j                             d¦  «        }|�|f}nd„ t          D ¦   «         }	 ddlm}m} d}|D ]X}	 t           j                             |¦  «        }n# t          $ r Y  dS w xY wt           j         	                    |¦  «        r|} nŒY|€dS t          | ¦  «        }	d}
t          | t          ¦  «        r|
                     d¦  «        }
|	j                             |
¦  «        d         }	  ||¦  «                             |¦  «        }|r|d         rdnd}||         |d	         fS dS # |t"          f$ r |r‚ Y dS w xY w# t$          t&          f$ r Y dS w xY w)
z;Returns the Requests tuple auth for a given url from netrc.ÚNETRCNc              3   ó    K  — | ]	}d |› �V — Œ
dS )z~/N© )Ú.0Úfs     rB   ú	<genexpr>z!get_netrc_auth.<locals>.<genexpr>Î   s(   è è € Ð9Ð9¨˜8 ˜8˜8Ð9Ð9Ð9Ð9Ð9Ð9rE   r   )ÚNetrcParseErrorÚnetrcó   :Úasciir   rR   )rS   ÚenvironÚgetÚNETRC_FILESri   rh   ÚpathÚ
expanduserÚKeyErrorÚexistsr   Ú
isinstancer   ÚdecodeÚnetlocr8   Úauthenticatorsr6   r1   r[   )ÚurlÚraise_errorsÚ
netrc_fileÚnetrc_locationsrh   ri   Ú
netrc_pathrf   ÚlocÚriÚsplitstrr=   r#   Úlogin_is                 rB   Úget_netrc_authr€   Ç   sí  € õ ”—’ Ñ(Ô(€JØÐØ%˜-ˆˆà9Ð9­[Ð9Ñ9Ô9ˆð-Ø0Ð0Ð0Ð0Ð0Ð0Ð0Ð0àˆ
à ð 	ð 	ˆAðÝ”g×(Ò(¨Ñ+Ô+��øÝð ð ð ð ���ð	øøøõ Œw�~Š~˜cÑ"Ô"ð Ø �
Ø�ðð
 ÐØˆFå�c‰]Œ]ˆð ˆÝ�c�3ÑÔð 	0Ø—’ wÑ/Ô/ˆHØŒy�Š˜xÑ(Ô(¨Ô+ˆð
	Ø�U˜:Ñ&Ô&×5Ò5°dÑ;Ô;ˆFØð 4à% aœyÐ/˜!˜!¨a�Ø˜wœ¨°¬Ð3Ð3ð4ð 4øð  ¥Ð)ð 	ð 	ð 	ð ð Øðð ð ð	øøøøõ �Ð(ð ð ð ØˆˆðøøøsZ   ¸E ÁA'Á&E Á'
A6Á1E Á5A6Á6)E Â!AE Ã=;D; Ä;EÅ
E ÅEÅE ÅE&Å%E&c                 óÐ   — t          | dd¦  «        }|rLt          |t          ¦  «        r9|d         dk    r/|d         dk    r%t          j                             |¦  «        S dS dS dS dS )z0Tries to guess the filename of the given object.ÚnameNr   ú<éÿÿÿÿú>)Úgetattrrs   r   rS   ro   Úbasename)Úobjr‚   s     rB   Úguess_filenamer‰      sw   € å�3˜ Ñ%Ô%€DØð &•
˜4¥Ñ,Ô,ð &°°a´¸C²°ÀDÈÄHÐPSÂOÀOÝŒw×Ò Ñ%Ô%Ð%ð&ð &ð &ð &°°ÀOÀOrE   c                 ó€  — t           j                             | ¦  «        r| S t           j                             | ¦  «        \  }}|r|t           j                             |¦  «        s]t           j                             |¦  «        \  }}|sn8d                     ||g¦  «        }|rt           j                             |¦  «        ¯]t          j        |¦  «        s| S t          j        |¦  «        }||                     ¦   «         vr| S t          j
        ¦   «         }t           j                             ||                     d¦  «        d         ¦  «        }t           j                             |¦  «        sOt          |¦  «        5 }|                     |                     |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   |S )zÄReplace nonexistent paths that look like they refer to a member of a zip
    archive with the location of an extracted copy of the target, or else
    just return the provided path unchanged.
    ú/r„   N)rS   ro   rr   r8   ÚjoinÚzipfileÚ
is_zipfileÚZipFileÚnamelistÚtempfileÚ
gettempdirÚatomic_openÚwriteÚread)ro   ÚarchiveÚmemberÚprefixÚzip_fileÚtmpÚextracted_pathÚfile_handlers           rB   Úextract_zipped_pathsr�     sÅ  € õ
 
„w‡~‚~�dÑÔð àˆõ ”g—m’m DÑ)Ô)�O€GˆVØ
ð ,�"œ'Ÿ.š.¨Ñ1Ô1ð ,Ýœ'Ÿ-š-¨Ñ0Ô0‰ˆ�Øð 	ð Ø—’˜6 6Ð*Ñ+Ô+ˆð ð ,�"œ'Ÿ.š.¨Ñ1Ô1ð ,õ Ô˜gÑ&Ô&ð ØˆåŒ˜wÑ'Ô'€HØ�X×&Ò&Ñ(Ô(Ð(Ð(Øˆõ Ô
Ñ
Ô
€CÝ”W—\’\ # v§|¢|°CÑ'8Ô'8¸Ô'<Ñ=Ô=€NÝŒ7�>Š>˜.Ñ)Ô)ð 6å˜Ñ(Ô(ð 	6¨LØ×Ò˜xŸ}š}¨VÑ4Ô4Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6àÐs   Å>)F3Æ3F7Æ:F7c              #   óH  K  — t          j        t          j                             | ¦  «        ¬¦  «        \  }}	 t          j        |d¦  «        5 }|V — ddd¦  «         n# 1 swxY w Y   t          j        || ¦  «         dS # t          $ r t          j        |¦  «         ‚ w xY w)z-Write a file to the disk in an atomic fashion)ÚdirÚwbN)	r‘   ÚmkstemprS   ro   ÚdirnameÚfdopenr9   ÚBaseExceptionÚremove)ÚfilenameÚtmp_descriptorÚtmp_nameÚtmp_handlers       rB   r“   r“   ,  sé   è è € õ  (Ô/µB´G·O²OÀHÑ4MÔ4MÐNÑNÔNÑ€N�HðÝŒY�~ tÑ,Ô,ð 	°ØÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å
Œ
�8˜XÑ&Ô&Ð&Ð&Ð&øÝð ð ð Ý
Œ	�(ÑÔÐØðøøøs/   ¹B ÁAÁB ÁA#Á#B Á&A#Á'B Â B!c                 ó–   — | €dS t          | t          t          t          t          f¦  «        rt          d¦  «        ‚t          | ¦  «        S )a  Take an object and test to see if it can be represented as a
    dictionary. Unless it can not be represented as such, return an
    OrderedDict, e.g.,

    ::

        >>> from_key_val_list([('key', 'val')])
        OrderedDict([('key', 'val')])
        >>> from_key_val_list('string')
        Traceback (most recent call last):
        ...
        ValueError: cannot encode objects that are not 2-tuples
        >>> from_key_val_list({'key': 'val'})
        OrderedDict([('key', 'val')])

    :rtype: OrderedDict
    Nú+cannot encode objects that are not 2-tuples)rs   r   r   Úboolr4   r7   r   ©Úvalues    rB   Úfrom_key_val_listr¯   9  sG   € ð$ €}Øˆtå�%�#�u¥d­CÐ0Ñ1Ô1ð HÝÐFÑGÔGÐGå�uÑÔÐrE   c                 óè   — | €dS t          | t          t          t          t          f¦  «        rt          d¦  «        ‚t          | t          ¦  «        r|                      ¦   «         } t          | ¦  «        S )aÂ  Take an object and test to see if it can be represented as a
    dictionary. If it can be, return a list of tuples, e.g.,

    ::

        >>> to_key_val_list([('key', 'val')])
        [('key', 'val')]
        >>> to_key_val_list({'key': 'val'})
        [('key', 'val')]
        >>> to_key_val_list('string')
        Traceback (most recent call last):
        ...
        ValueError: cannot encode objects that are not 2-tuples

    :rtype: list
    Nr«   )	rs   r   r   r¬   r4   r7   r   rG   Úlistr­   s    rB   Úto_key_val_listr²   T  sd   € ð" €}Øˆtå�%�#�u¥d­CÐ0Ñ1Ô1ð HÝÐFÑGÔGÐGå�%�Ñ!Ô!ð Ø—’‘”ˆå�‰;Œ;ÐrE   c                 óÆ   — g }t          | ¦  «        D ]N}|dd…         |dd…         cxk    rdk    rn nt          |dd…         ¦  «        }|                     |¦  «         ŒO|S )a  Parse lists as described by RFC 2068 Section 2.

    In particular, parse comma-separated lists where the elements of
    the list may include quoted-strings.  A quoted-string could
    contain a comma.  A non-quoted string could have quotes in the
    middle.  Quotes are removed automatically after parsing.

    It basically works like :func:`parse_set_header` just that items
    may appear multiple times and case sensitivity is preserved.

    The return value is a standard :class:`list`:

    >>> parse_list_header('token, "quoted value"')
    ['token', 'quoted value']

    To create a header from the :class:`list` again, use the
    :func:`dump_header` function.

    :param value: a string with a list header.
    :return: :class:`list`
    :rtype: list
    Nr   r„   ú")Ú_parse_list_headerÚunquote_header_valueÚappend)r®   ÚresultÚitems      rB   Úparse_list_headerrº   r  s�   € ð. €FÝ" 5Ñ)Ô)ð ð ˆØ���Œ8�t˜B˜C˜C”yÐ'Ð'Ò'Ð' CÒ'Ð'Ð'Ð'Ð'Ý'¨¨Q¨r¨T¬
Ñ3Ô3ˆDØ�Š�dÑÔÐÐØ€MrE   c                 óì   — i }t          | ¦  «        D ]a}d|vrd||<   Œ|                     dd¦  «        \  }} | dd…         | dd…         cxk    rdk    rn nt          | dd…         ¦  «        } | ||<   Œb|S )a^  Parse lists of key, value pairs as described by RFC 2068 Section 2 and
    convert them into a python dict:

    >>> d = parse_dict_header('foo="is a fish", bar="as well"')
    >>> type(d) is dict
    True
    >>> sorted(d.items())
    [('bar', 'as well'), ('foo', 'is a fish')]

    If there is no value for a key it will be `None`:

    >>> parse_dict_header('key_without_value')
    {'key_without_value': None}

    To create a header from the :class:`dict` again, use the
    :func:`dump_header` function.

    :param value: a string with a dict header.
    :return: :class:`dict`
    :rtype: dict
    ú=Nr   r„   r´   )rµ   r8   r¶   )r®   r¸   r¹   r‚   s       rB   Úparse_dict_headerr½   ’  s£   € ð, €FÝ" 5Ñ)Ô)ð ð ˆØ�dˆ?ˆ?ØˆF�4‰LØØ—j’j  aÑ(Ô(‰ˆˆeØ��!�Œ9˜˜b˜c˜cœ
Ð)Ð)Ò)Ð) cÒ)Ð)Ð)Ð)Ð)Ý(¨¨q°¨t¬Ñ5Ô5ˆEØˆˆt‰ˆØ€MrE   c                 óÊ   — | r`| d         | d         cxk    rdk    rGn nD| dd…         } |r| dd…         dk    r*|                       dd¦  «                              d	d¦  «        S | S )
zçUnquotes a header value.  (Reversal of :func:`quote_header_value`).
    This does not use the real unquoting but what browsers are actually
    using for quoting.

    :param value: the header value to unquote.
    :rtype: str
    r   r„   r´   r   NrR   z\\ú\z\")r9   )r®   Úis_filenames     rB   r¶   r¶   µ  s‹   € ð ð C��q”˜U 2œYÐ-Ð-Ò-Ð-¨#Ò-Ð-Ð-Ð-Ð-ð
 �a˜�d”ˆð ð 	C˜e B Q Bœi¨6Ò1Ð1Ø—=’= ¨Ñ.Ô.×6Ò6°u¸cÑBÔBÐBØ€LrE   c                 ó2   — i }| D ]}|j         ||j        <   Œ|S )z€Returns a key/value dictionary from a CookieJar.

    :param cj: CookieJar object to extract cookies from.
    :rtype: dict
    )r®   r‚   )ÚcjÚcookie_dictÚcookies      rB   Údict_from_cookiejarrÅ   Î  s/   € ð €Kàð 0ð 0ˆØ#)¤<ˆ�F”KÑ Ð àÐrE   c                 ó"   — t          || ¦  «        S )zÂReturns a CookieJar from a key/value dictionary.

    :param cj: CookieJar to insert cookies into.
    :param cookie_dict: Dict of key/values to insert into CookieJar.
    :rtype: CookieJar
    r   )rÂ   rÃ   s     rB   Úadd_dict_to_cookiejarrÇ   Ý  s   € õ ˜{¨BÑ/Ô/Ð/rE   c                 ó`  — t          j        dt          ¦  «         t          j        dt          j        ¬¦  «        }t          j        dt          j        ¬¦  «        }t          j        d¦  «        }|                     | ¦  «        |                     | ¦  «        z   |                     | ¦  «        z   S )zlReturns encodings from given content string.

    :param content: bytestring to extract encodings from.
    z¤In requests 3.0, get_encodings_from_content will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)z!<meta.*?charset=["\']*(.+?)["\'>])Úflagsz+<meta.*?content=["\']*;?charset=(.+?)["\'>]z$^<\?xml.*?encoding=["\']*(.+?)["\'>])rW   rX   ÚDeprecationWarningr:   Úcompiler<   Úfindall)ÚcontentÚ
charset_reÚ	pragma_reÚxml_res       rB   Úget_encodings_from_contentrÑ   è  s¦   € õ
 „Mð1õ 	ñô ð õ ”Ð@ÍÌÐMÑMÔM€JÝ”
ÐIÕQSÔQUÐVÑVÔV€IÝŒZÐ?Ñ@Ô@€Fð 	×Ò˜7Ñ#Ô#Ø
×
Ò
˜GÑ
$Ô
$ñ	%à
�.Š.˜Ñ
!Ô
!ñ	"ðrE   c                 ó   — |                       d¦  «        }|d                              ¦   «         |dd…         }}i }d}|D ]‹}|                     ¦   «         }|rs|d}}|                     d¦  «        }	|	dk    r=|d|	…                              |¦  «        }||	dz   d…                              |¦  «        }|||                     ¦   «         <   ŒŒ||fS )	z¦Returns content type and parameters from given header

    :param header: string
    :return: tuple containing content type and dictionary of
         parameters
    r,   r   r   Nz"' Tr¼   r„   )r8   ÚstripÚfindÚlower)
ÚheaderÚtokensÚcontent_typeÚparamsÚparams_dictÚitems_to_stripÚparamÚkeyr®   Úindex_of_equalss
             rB   Ú_parse_content_type_headerrß     sä   € ð �\Š\˜#ÑÔ€FØ! !œ9Ÿ?š?Ñ,Ô,¨f°Q°R°R¬j�&€LØ€KØ€Nàð -ð -ˆØ—’‘”ˆØð 	-Ø �ˆCØ#Ÿjšj¨™oœoˆOØ "Ò$Ð$ØÐ,˜_Ð,Ô-×3Ò3°NÑCÔC�Ø˜o°Ñ1Ð3Ð3Ô4×:Ò:¸>ÑJÔJ�Ø',ˆK˜Ÿ	š	™œÑ$øØ˜Ð$Ð$rE   c                 ó²   — |                       d¦  «        }|sdS t          |¦  «        \  }}d|v r|d                              d¦  «        S d|v rdS d|v rdS dS )	z}Returns encodings from given HTTP Header Dict.

    :param headers: dictionary to extract encoding from.
    :rtype: str
    zcontent-typeNÚcharsetz'"Útextz
ISO-8859-1zapplication/jsonúutf-8)rm   rß   rÓ   )ÚheadersrØ   rÙ   s      rB   Úget_encoding_from_headersrå     s€   € ð —;’;˜~Ñ.Ô.€Làð Øˆtå5°lÑCÔCÑ€L�&à�FÐÐØ�iÔ ×&Ò& uÑ-Ô-Ð-à�ÐÐØˆ|à˜\Ð)Ð)àˆwð *Ð)rE   c              #   óð   K  — |j         €
| E d{V —† dS  t          j        |j         ¦  «        d¬¦  «        }| D ]}|                     |¦  «        }|r|V — Œ|                     dd¬¦  «        }|r|V — dS dS )zStream decodes an iterator.Nr9   ©ÚerrorsrE   T)Úfinal)ÚencodingÚcodecsÚgetincrementaldecoderrt   )ÚiteratorÚrÚdecoderÚchunkÚrvs        rB   Ústream_decode_response_unicoderò   3  s²   è è € ð 	„zÐØÐÐÐÐÐÐÐØˆà6�fÔ*¨1¬:Ñ6Ô6¸iÐHÑHÔH€GØð ð ˆØ�^Š^˜EÑ"Ô"ˆØð 	ØˆHˆHˆHøØ	�Š˜ 4ˆÑ	(Ô	(€BØ	ð Øˆˆˆˆˆðð rE   c              #   ó´   K  — d}|�|dk    rt          | ¦  «        }|t          | ¦  «        k     r)| |||z   …         V — ||z  }|t          | ¦  «        k     °'dS dS )z Iterate over slices of a string.r   N)rM   )ÚstringÚslice_lengthÚposs      rB   Úiter_slicesr÷   D  s{   è è € à
€CØÐ˜|¨qÒ0Ð0Ý˜6‘{”{ˆØ
•�F‘”Ò
Ð
Ø�S˜3 Ñ-Ð-Ô.Ð.Ð.Ð.Øˆ|Ñˆð •�F‘”Ò
Ð
Ð
Ð
Ð
Ð
rE   c                 ó:  — t          j        dt          ¦  «         g }t          | j        ¦  «        }|r;	 t          | j        |¦  «        S # t          $ r |                     |¦  «         Y nw xY w	 t          | j        |d¬¦  «        S # t          $ r
 | j        cY S w xY w)zâReturns the requested content back in unicode.

    :param r: Response object to get unicode content from.

    Tried:

    1. charset from content-type
    2. fall back and replace all unicode characters

    :rtype: str
    z£In requests 3.0, get_unicode_from_response will be removed. For more information, please see the discussion on issue #2266. (This warning should only appear once.)r9   rç   )
rW   rX   rÊ   rå   rä   r   rÍ   ÚUnicodeErrorr·   Ú	TypeError)rî   Útried_encodingsrê   s      rB   Úget_unicode_from_responserü   N  sÓ   € õ „Mð1õ 	ñô ð ð €Oõ )¨¬Ñ3Ô3€Hàð -ð	-Ý�q”y (Ñ+Ô+Ð+øÝð 	-ð 	-ð 	-Ø×"Ò" 8Ñ,Ô,Ð,Ð,Ð,ð	-øøøðÝ�1”9˜h¨yÐ9Ñ9Ô9Ð9øÝð ð ð ØŒyÐÐÐðøøøs#   ´A	 Á	A+Á*A+Á/B ÂBÂBzBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~c                 óþ  — |                       d¦  «        }t          dt          |¦  «        ¦  «        D ]¶}||         dd…         }t          |¦  «        dk    rƒ|                     ¦   «         ro	 t	          t          |d¦  «        ¦  «        }n!# t          $ r t          d|› d�¦  «        ‚w xY w|t          v r|||         dd…         z   ||<   Œ™d||         › �||<   Œ¨d||         › �||<   Œ·d	 	                    |¦  «        S )
z¨Un-escape any percent-escape sequences in a URI that are unreserved
    characters. This leaves all reserved, illegal and non-ASCII bytes encoded.

    :rtype: str
    ú%r   r   rR   é   z"Invalid percent-escape sequence: 'ú'NÚ )
r8   ÚrangerM   ÚisalnumÚchrr4   r7   r    ÚUNRESERVED_SETrŒ   )ÚuriÚpartsÚiÚhÚcs        rB   Úunquote_unreservedr  {  s  € ð �IŠI�c‰NŒN€EÝ�1•c˜%‘j”jÑ!Ô!ð &ð &ˆØ�!ŒH�Q�q�SŒMˆÝˆq‰6Œ6�QŠ;ˆ;˜1Ÿ9š9™;œ;ˆ;ðLÝ�˜A˜r™
œ
‘O”O��øÝð Lð Lð LÝ Ð!JÀaÐ!JÐ!JÐ!JÑKÔKÐKðLøøøð •NÐ"Ð"Ø˜u Qœx¨¨¨œ|Ñ+��a‘�à)˜u Qœx˜>˜>��a‘�à%˜5 œ8�~�~ˆE�!‰HˆHØ�7Š7�5‰>Œ>Ðs   Á-BÂB)c                 óŠ   — d}d}	 t          t          | ¦  «        |¬¦  «        S # t          $ r t          | |¬¦  «        cY S w xY w)z¬Re-quote the given URI.

    This function passes the given URI through an unquote/quote cycle to
    ensure that it is fully and consistently quoted.

    :rtype: str
    z!#$%&'()*+,/:;=?@[]~z!#$&'()*+,/:;=?@[]~)Úsafe)r   r  r    )r  Úsafe_with_percentÚsafe_without_percents      rB   Úrequote_urir  “  sk   € ð /ÐØ0Ðð	5õ Õ'¨Ñ,Ô,Ð3DÐEÑEÔEÐEøÝð 5ð 5ð 5õ �SÐ3Ð4Ñ4Ô4Ð4Ð4Ð4ð	5øøøs   †$ ¤AÁAc           
      ó’  — t          j        dt          j        | ¦  «        ¦  «        d         }|                     d¦  «        \  }}t          j        dt          j        t          t          |¦  «        ¦  «        ¦  «        ¦  «        d         }t          j        dt          j        |¦  «        ¦  «        d         |z  }||z  ||z  k    S )zïThis function allows you to check if an IP belongs to a network subnet

    Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24
             returns False if ip = 192.168.1.1 and net = 192.168.100.0/24

    :rtype: bool
    z=Lr   r‹   )ÚstructÚunpackÚsocketÚ	inet_atonr8   Údotted_netmaskr4   )ÚipÚnetÚipaddrÚnetaddrÚbitsÚnetmaskÚnetworks          rB   Úaddress_in_networkr  ©  s¢   € õ Œ]˜4¥Ô!1°"Ñ!5Ô!5Ñ6Ô6°qÔ9€FØ—I’I˜c‘N”N�M€GˆTÝŒm˜D¥&Ô"2µ>Å#ÀdÁ)Ä)Ñ3LÔ3LÑ"MÔ"MÑNÔNÈqÔQ€GÝŒm˜D¥&Ô"2°7Ñ";Ô";Ñ<Ô<¸QÔ?À'ÑI€GØ�WÑ '¨GÑ"3Ò4Ð4rE   c                 ól   — ddd| z
  z  dz
  z  }t          j        t          j        d|¦  «        ¦  «        S )z�Converts mask from /xx format to xxx.xxx.xxx.xxx

    Example: if mask is 24 function returns 255.255.255.0

    :rtype: str
    l   ÿÿ r   é    z>I)r  Ú	inet_ntoar  Úpack)Úmaskr  s     rB   r  r  ¸  s8   € ð ˜˜b 4™i™¨1Ñ,Ñ,€DÝÔ�FœK¨¨dÑ3Ô3Ñ4Ô4Ð4rE   c                 óT   — 	 t          j        | ¦  «         n# t          $ r Y dS w xY wdS )z
    :rtype: bool
    FT)r  r  r6   )Ú	string_ips    rB   Úis_ipv4_addressr&  Ã  sB   € ðÝÔ˜Ñ#Ô#Ð#Ð#øÝð ð ð Øˆuˆuðøøøàˆ4s   ‚ —
%¤%c                 óN  — |                       d¦  «        dk    r‰	 t          |                      d¦  «        d         ¦  «        }n# t          $ r Y dS w xY w|dk     s|dk    rdS 	 t	          j        |                      d¦  «        d         ¦  «         n# t          $ r Y dS w xY wdS dS )zV
    Very simple check of the cidr format in no_proxy variable.

    :rtype: bool
    r‹   r   Fr   r   T)Úcountr4   r8   r7   r  r  r6   )Ústring_networkr#  s     rB   Úis_valid_cidrr*  Î  sØ   € ð ×Ò˜CÑ Ô  AÒ%Ð%ð	Ý�~×+Ò+¨CÑ0Ô0°Ô3Ñ4Ô4ˆDˆDøÝð 	ð 	ð 	Ø�5�5ð	øøøð �!Š8ˆ8�t˜b’y�yØ�5ð	ÝÔ˜^×1Ò1°#Ñ6Ô6°qÔ9Ñ:Ô:Ð:Ð:øÝð 	ð 	ð 	Ø�5�5ð	øøøð ˆuØˆ4s#   ›(A Á
AÁAÁ$-B Â
B ÂB c              #   ó  K  — |du}|r.t           j                             | ¦  «        }|t           j        | <   	 dV — |r"|€t           j        | = dS |t           j        | <   dS dS # |r|€t           j        | = n|t           j        | <   w xY w)zÎSet the environment variable 'env_name' to 'value'

    Save previous value, yield, and then restore the previous value stored in
    the environment variable 'env_name'.

    If 'value' is None, do nothingN)rS   rl   rm   )Úenv_namer®   Úvalue_changedÚ	old_values       rB   Úset_environr/  æ  s´   è è € ð  Ð%€MØð %Ý”J—N’N 8Ñ,Ô,ˆ	Ø$�Œ
�8Ñð1Øˆˆˆàð 	1ØÐ Ý”J˜xÐ(Ð(Ð(à'0•”
˜8Ñ$Ð$Ð$ð		1ð 	1øˆ=ð 	1ØÐ Ý”J˜xÐ(Ð(à'0•”
˜8Ñ$Ð0Ð0Ð0Ð0s   ¸A" Á"#Bc                 óÈ  — d„ }|}|€ |d¦  «        }t          | ¦  «        }|j        €dS |rÕd„ |                     dd¦  «                             d¦  «        D ¦   «         }t	          |j        ¦  «        r<|D ]8}t          |¦  «        rt          |j        |¦  «        r dS Œ*|j        |k    r dS Œ9nR|j        }|j        r|d	|j        › �z  }|D ]4}|j                             |¦  «        s|                     |¦  «        r dS Œ5t          d|¦  «        5  	 t          |j        ¦  «        }n# t          t          j        f$ r d
}Y nw xY wddd¦  «         n# 1 swxY w Y   |rdS d
S )zL
    Returns whether we should bypass proxies or not.

    :rtype: bool
    c                 ó¢   — t           j                             | ¦  «        p0t           j                             |                      ¦   «         ¦  «        S ©N)rS   rl   rm   Úupper)rÝ   s    rB   Ú	get_proxyz(should_bypass_proxies.<locals>.get_proxy  s1   € ÝŒz�~Š~˜cÑ"Ô"ÐA¥b¤j§n¢n°S·Y²Y±[´[Ñ&AÔ&AÐArE   NÚno_proxyTc              3   ó   K  — | ]}|¯|V — Œ	d S r2  rd   )re   r=   s     rB   rg   z(should_bypass_proxies.<locals>.<genexpr>  s'   è è € ÐRÐR˜TÈTÐR�DÐRÐRÐRÐRÐRÐRrE   ú r  ú,ú:F)r   Úhostnamer9   r8   r&  r*  r  ÚportÚendswithr/  r   rú   r  Úgaierror)	rw   r5  r4  Úno_proxy_argÚparsedÚproxy_ipÚhost_with_portr=   Úbypasss	            rB   Úshould_bypass_proxiesrC  ü  s#  € ðBð Bð Bð
 €LØÐØ�9˜ZÑ(Ô(ˆÝ�c‰]Œ]€Fà„Ðàˆtàð  ð SÐR X×%5Ò%5°c¸2Ñ%>Ô%>×%DÒ%DÀSÑ%IÔ%IÐRÑRÔRˆå˜6œ?Ñ+Ô+ð 	 Ø$ð  ð  �Ý  Ñ*Ô*ð  Ý)¨&¬/¸8ÑDÔDð $Ø#˜t˜tð$à”_¨Ò0Ð0ð  ˜4˜4ð 1ð	 ð $œ_ˆNØŒ{ð 4ØÐ"3 f¤kÐ"3Ð"3Ñ3�à ð  ð  �Ø”?×+Ò+¨DÑ1Ô1ð  °^×5LÒ5LÈTÑ5RÔ5Rð  ð  ˜4˜4ð õ
 
�Z Ñ	.Ô	.ð ð ð	Ý! &¤/Ñ2Ô2ˆFˆFøÝ�6œ?Ð+ð 	ð 	ð 	ØˆFˆFˆFð	øøøð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð Øˆtàˆ5s6   ÄEÄD)Ä(EÄ)EÅEÅEÅEÅEÅEc                 óD   — t          | |¬¦  «        ri S t          ¦   «         S )zA
    Return a dict of environment proxies.

    :rtype: dict
    ©r5  )rC  r   )rw   r5  s     rB   Úget_environ_proxiesrF  8  s(   € õ ˜S¨8Ð4Ñ4Ô4ð Øˆ	å‰|Œ|ÐrE   c                 ó  — |pi }t          | ¦  «        }|j        €.|                     |j        |                     d¦  «        ¦  «        S |j        dz   |j        z   |j        d|j        z   dg}d}|D ]}||v r
||         } nŒ|S )z­Select a proxy for the url, if applicable.

    :param url: The url being for the request
    :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
    NÚallz://zall://)r   r:  rm   Úscheme)rw   ÚproxiesÚurlpartsÚ
proxy_keysÚproxyÚ	proxy_keys         rB   Úselect_proxyrO  D  s­   € ð ˆm˜€GÝ˜‰}Œ}€HØÔÐ Ø�{Š{˜8œ?¨G¯KªK¸Ñ,>Ô,>Ñ?Ô?Ð?ð 	Œ˜%Ñ (Ô"3Ñ3ØŒØ�8Ô$Ñ$Øð	€Jð €EØð ð ˆ	Ø˜ÐÐØ˜IÔ&ˆEØˆEð  ð €LrE   c                 ód  — |�|ni }| j         }t          |¦  «        j        }|                     d¦  «        }|                     ¦   «         }|rct          ||¬¦  «        sRt          ||¬¦  «        }|                     ||                     d¦  «        ¦  «        }|r|                     ||¦  «         |S )a¨  This method takes proxy information from a request and configuration
    input to resolve a mapping of target proxies. This will consider settings
    such a NO_PROXY to strip proxy configurations.

    :param request: Request or PreparedRequest
    :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs
    :param trust_env: Boolean declaring whether to trust environment configs

    :rtype: dict
    Nr5  rE  rH  )rw   r   rI  rm   ÚcopyrC  rF  Ú
setdefault)	ÚrequestrJ  Ú	trust_envrw   rI  r5  Únew_proxiesÚenviron_proxiesrM  s	            rB   Úresolve_proxiesrW  ^  s»   € ð !Ð,ˆgˆg°"€GØ
Œ+€CÝ�c‰]Œ]Ô!€FØ�{Š{˜:Ñ&Ô&€HØ—,’,‘.”.€Kàð 2Õ.¨s¸XÐFÑFÔFð 2Ý-¨c¸HÐEÑEÔEˆà×#Ò# F¨O×,?Ò,?ÀÑ,FÔ,FÑGÔGˆàð 	2Ø×"Ò" 6¨5Ñ1Ô1Ð1ØÐrE   úpython-requestsc                 ó   — | › dt           › �S )zO
    Return a string representing the default user agent.

    :rtype: str
    r‹   r   )r‚   s    rB   Údefault_user_agentrZ  y  s   € ð Ð"Ð"•[Ð"Ð"Ð"rE   c                  óL   — t          t          ¦   «         t          dddœ¦  «        S )z9
    :rtype: requests.structures.CaseInsensitiveDict
    z*/*z
keep-alive)z
User-AgentzAccept-EncodingÚAcceptÚ
Connection)r"   rZ  ÚDEFAULT_ACCEPT_ENCODINGrd   rE   rB   Údefault_headersr_  ‚  s2   € õ å,Ñ.Ô.Ý6ØØ&ð		
ð 	
ñô ð rE   c                 ó  — g }d}|                       |¦  «        } | s|S t          j        d| ¦  «        D ]Ë}	 |                     dd¦  «        \  }}n# t          $ r |d}}Y nw xY wd|                      d¦  «        i}|                     d¦  «        D ]X}	 |                     d¦  «        \  }} n# t          $ r Y  n0w xY w|                       |¦  «        ||                      |¦  «        <   ŒY|                     |¦  «         ŒÌ|S )	z¼Return a list of parsed link headers proxies.

    i.e. Link: <http:/.../front.jpeg>; rel=front; type="image/jpeg",<http://.../back.jpeg>; rel=back;type="image/jpeg"

    :rtype: list
    z '"z, *<r,   r   r  rw   z<> '"r¼   )rÓ   r:   r8   r7   r·   )	r®   ÚlinksÚreplace_charsÚvalrw   rÙ   ÚlinkrÜ   rÝ   s	            rB   Úparse_header_linksre  �  sA  € ð €Eà€Mà�KŠK˜Ñ&Ô&€EØð ØˆåŒx˜ Ñ&Ô&ð ð ˆð	"ØŸ)š) C¨Ñ+Ô+‰KˆC��øÝð 	"ð 	"ð 	"Ø˜r�ˆCˆCˆCð	"øøøð �s—y’y Ñ*Ô*Ð+ˆà—\’\ #Ñ&Ô&ð 	Hð 	HˆEðØ"Ÿ[š[¨Ñ-Ô-‘
��U�UøÝð ð ð Ø��ðøøøð .3¯[ª[¸Ñ-GÔ-GˆD�—’˜=Ñ)Ô)Ñ*Ð*à�Š�TÑÔÐÐà€Ls#   ¶AÁA!Á A!ÂB,Â,
B:Â9B:ú rk   rR   é   c                 óÖ  — | dd…         }|t           j        t           j        fv rdS |dd…         t           j        k    rdS |dd…         t           j        t           j        fv rdS |                     t          ¦  «        }|dk    rd	S |dk    r,|ddd…         t          k    rd
S |ddd…         t          k    rdS |dk    r*|dd…         t          k    rdS |dd…         t          k    rdS dS )z
    :rtype: str
    Né   zutf-32rg  z	utf-8-sigrR   zutf-16r   rã   z	utf-16-ber   z	utf-16-lez	utf-32-bez	utf-32-le)
rë   ÚBOM_UTF32_LEÚBOM_UTF32_BEÚBOM_UTF8ÚBOM_UTF16_LEÚBOM_UTF16_BEr(  Ú_nullÚ_null2Ú_null3)ÚdataÚsampleÚ	nullcounts      rB   Úguess_json_utfru  »  s  € ð �"�1�"ŒX€FØ•&Ô%¥vÔ':Ð;Ð;Ð;ØˆxØˆbˆqˆb„z•V”_Ò$Ð$Øˆ{Øˆbˆqˆb„z•fÔ)­6Ô+>Ð?Ð?Ð?ØˆxØ—’�UÑ#Ô#€IØ�A‚~€~ØˆwØ�A‚~€~Ø�#�#�A�#Œ;�&Ò Ð Ø�;Ø�!�$�Q�$Œ<�6Ò!Ð!Ø�;à�A‚~€~Ø�"�1�"Œ:�ÒÐØ�;Ø�!�"�"Œ:�ÒÐØ�;àˆ4rE   c                 óº   — t          | ¦  «        }|\  }}}}}}}	|j        }
|
s||
}}
|rd                     ||
g¦  «        }
|€|}|€d}t          ||
|d||	f¦  «        S )zªGiven a URL that may or may not have a scheme, prepend the given scheme.
    Does not replace a present scheme with the one provided as an argument.

    :rtype: str
    ú@Nr  )r   ru   rŒ   r   )rw   Ú
new_schemer?  rI  Úauthr=   r;  ro   ÚqueryÚfragmentru   s              rB   Úprepend_scheme_if_neededr|  Û  s‹   € õ �s‰^Œ^€FØ6<Ñ3€FˆD�$˜˜d E¨8ð Œ]€FØð $Ø˜V�ˆàð *ð —’˜4 ˜.Ñ)Ô)ˆØ€~ØˆØ€|Øˆå�v˜v t¨R°¸ÐAÑBÔBÐBrE   c                 óª   — t          | ¦  «        }	 t          |j        ¦  «        t          |j        ¦  «        f}n# t          t
          f$ r d}Y nw xY w|S )z{Given a url with authentication components, extract them into a tuple of
    username,password.

    :rtype: (str,str)
    )r  r  )r   r   ÚusernameÚpasswordr[   rú   )rw   r?  ry  s      rB   Úget_auth_from_urlr€  ø  sd   € õ �c‰]Œ]€FðÝ˜œÑ(Ô(­'°&´/Ñ*BÔ*BÐCˆˆøÝ�IÐ&ð ð ð Øˆˆˆðøøøð €Ks   ‘(: ºAÁAc                 óT   — | \  }}t          | |d¦  «         t          | |d¦  «         dS )z§Verifies that header parts don't contain leading whitespace
    reserved characters, or return characters.

    :param header: tuple, in the format (name, value).
    r   r   N)Ú_validate_header_part)rÖ   r‚   r®   s      rB   Úcheck_header_validityrƒ    s7   € ð �K€Dˆ%Ý˜& $¨Ñ*Ô*Ð*Ý˜& %¨Ñ+Ô+Ð+Ð+Ð+rE   c           
      óD  — t          |t          ¦  «        rt          |         }nHt          |t          ¦  «        rt          |         }n%t          d|›d| › dt          |¦  «        › �¦  «        ‚|                     |¦  «        s|dk    rdnd}t          d|› d|›�¦  «        ‚d S )	NzHeader part (z) from z# must be of type str or bytes, not r   r‚   r®   zSInvalid leading whitespace, reserved character(s), or returncharacter(s) in header z: )rs   r   r   r   r
   r   Útyper;   )rÖ   Úheader_partÚheader_validator_indexÚ	validatorÚheader_kinds        rB   r‚  r‚    sô   € Ý�+�sÑ#Ô#ð 
Ý*Ð+AÔBˆ	ˆ	Ý	�K¥Ñ	'Ô	'ð 
Ý+Ð,BÔCˆ	ˆ	åðE˜Kð Eð E°&ð Eð EÝ15°kÑ1BÔ1BðEð Eñ
ô 
ð 	
ð
 �?Š?˜;Ñ'Ô'ð 
Ø 6¸!Ò ;Ð ;�f�fÀˆÝðEØ&1ðEð EØ5@ðEð Eñ
ô 
ð 	
ð
ð 
rE   c                 óœ   — t          | ¦  «        \  }}}}}}|s||}}|                     dd¦  «        d         }t          |||||df¦  «        S )zW
    Given a url remove the fragment and the authentication part.

    :rtype: str
    rw  r   r„   r  )r   Úrsplitr   )rw   rI  ru   ro   rÙ   rz  r{  s          rB   ÚurldefragauthrŒ  &  sb   € õ 5=¸S±M´MÑ1€FˆF�D˜& %¨ð ð $Ø˜V�ˆà�]Š]˜3 Ñ"Ô" 2Ô&€Få�v˜v t¨V°U¸BÐ?Ñ@Ô@Ð@rE   c                 óä   — t          | j        dd¦  «        }|�Jt          | j        t          ¦  «        r0	  || j        ¦  «         dS # t
          $ r t          d¦  «        ‚w xY wt          d¦  «        ‚)zfMove file pointer back to its recorded starting position
    so it can be read again on redirect.
    rQ   Nz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)r†   Úbodyrs   Ú_body_positionr   r6   r!   )Úprepared_requestÚ	body_seeks     rB   Úrewind_bodyr’  7  s–   € õ Ð(Ô-¨v°tÑ<Ô<€IØÐ¥ØÔ'­ñ"ô "Ðð	ØˆIÐ&Ô5Ñ6Ô6Ð6Ð6Ð6øÝð 	ð 	ð 	Ý'ØMñô ð ð	øøøõ
 $Ð$QÑRÔRÐRs   ´A ÁA )Fr2  )T)rX  )jÚ__doc__rë   Ú
contextlibrY   rS   r:   r  r  Úsysr‘   rW   r�   Úcollectionsr   Úurllib3.utilr   r   r  r   r	   Ú_internal_utilsr
   r   r   r   Úcompatr   r   r   r   r   r   r   rµ   r   r   r   r   r   r   r   Úcookiesr   Ú
exceptionsr   r   r    r!   Ú
structuresr"   rn   ÚwhereÚDEFAULT_CA_BUNDLE_PATHÚDEFAULT_PORTSrŒ   r8   r^  ÚplatformrC   rJ   r`   r€   r‰   r�   Úcontextmanagerr“   r¯   r²   rº   r½   r¶   rÅ   rÇ   rÑ   rß   rå   rò   r÷   rü   Ú	frozensetr  r  r  r  r  r&  r*  r/  rC  rF  rO  rW  rZ  r_  re  Úencodero  rp  rq  ru  r|  r€  rƒ  r‚  rŒ  r’  rd   rE   rB   ú<module>r¤     s•  ððð ð €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0à Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +à"€à$˜œ™œÐ à cÐ*Ð*€ð Ÿ)š)Ø€B„HˆW�l�l°4Ð8Ñ8Ô8Ð9JÔKÑLÔLñô Ð ð
 „<�7ÒÐð"ð "ð "ðH	/ð 	/ð 	/ðð ð ð?3ð ?3ð ?3ðD6ð 6ð 6ð 6ðr&ð &ð &ð"ð "ð "ðJ Ôð	ð 	ñ Ôð	ðð ð ð6ð ð ð<ð ð ð@ð ð ðFð ð ð ð2ð ð ð0ð 0ð 0ðð ð ð2%ð %ð %ð2ð ð ð2ð ð ð"ð ð ð$ð $ð $ðP �ØMñô €ð
ð ð ð05ð 5ð 5ð,5ð 5ð 5ð5ð 5ð 5ðð ð ðð ð ð0 Ôð1ð 1ñ Ôð1ð*9ð 9ð 9ðx	ð 	ð 	ð 	ðð ð ð4ð ð ð ð6#ð #ð #ð #ðð ð ð"ð "ð "ðL 	�Š�gÑÔ€Ø	�‰€Ø	�‰€ðð ð ð@Cð Cð Cð:ð ð ð ,ð ,ð ,ð
ð 
ð 
ð&Að Að Að"Sð Sð Sð Sð SrE   