ó
    &ÝNjâ�  ã            	      ó®  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKJrJr  SSKJrJrJrJrJrJr  SSKJrJr  SS	KJr  SS
KJr  SSK J!r!J"r"J#r#J$r$  SSK%J&r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5  SSK(J6r7  SSK8J9r9  SSK:J;r;J<r<J=r=J>r>  SSK?J@r@  \(       a  SSKAJBrB  SSKJCrC  SSKJ%rD  SSKEJFrFJGrGJHrH  SrIS\JS'   \R–                  " 5       rLS\JS'   SSS.rMS\JS'   \" S5      rN\" S 5      rOS!R¡                  \R¢                  " S"\" S#S$9S%   5      5      rRS\JS&'   \
R¦                  S':X  a
  S\S( jrTS\S) jr/    S]S* jrUS^S+ jrV S_     S`S, jjrWSaS- jrXSbS. jrY\R´                  ScS/ j5       r[    SdS0 jr\\SeS1 j5       r]\    SfS2 j5       r]    SgS3 jr]ShS4 jr^SiS5 jr_S_SjS6 jjr`SkS7 jraSlS8 jrbSmS9 jrcSnS: jrdSoS; jre      SpS< jrf\      SqS= j5       rg\      SrS> j5       rg      SsS? jrgStS@ jrh\i" SA5      rjS\JSB'   SuSC jrkSuSD jrlSvSE jrmSwSF jrnSxSG jroSySH jrp\R´                  SzSI j5       rqS{SJ jrrS|S}SK jjrsS~SL jrt S       S€SM jjruS�S‚SN jjrvSƒSO jrwS„SP jrxSQRó                  SR5      rz\zSS-  r{\zST-  r|S…SU jr}S†SV jr~S‡SW jrSˆSX jr€        S‰SY jr�SŠSZ jr‚S‹S[ jrƒg)Œz”
requests.utils
~~~~~~~~~~~~~~

This module provides utility functions that are used within Requests
that are also useful for external consumption.
é    )ÚannotationsN)ÚOrderedDict)Ú	GeneratorÚIterable)ÚTYPE_CHECKINGÚAnyÚFinalÚTypeVarÚcastÚoverload)Úmake_headersÚ	parse_urlé   )Úcerts©Ú__version__)Ú_HEADER_VALIDATORS_BYTEÚ_HEADER_VALIDATORS_STRÚHEADER_VALIDATORSÚto_native_string)ÚSupportsItems)ÚMappingÚbytesÚ
getproxiesÚgetproxies_environmentÚinteger_typesÚis_urllib3_1Úproxy_bypassÚproxy_bypass_environmentÚquoteÚstrÚunquoteÚurlparseÚ
urlunparse)Úparse_http_list©Úcookiejar_from_dict)ÚFileModeWarningÚInvalidHeaderÚ
InvalidURLÚUnrewindableBodyError)ÚCaseInsensitiveDict)Ú	CookieJar)ÚBufferedWriter)Ú_types)ÚPreparedRequestÚRequestÚResponse)z.netrcÚ_netrcr	   ÚNETRC_FILESr!   ÚDEFAULT_CA_BUNDLE_PATHéP   i»  )ÚhttpÚhttpsÚDEFAULT_PORTSÚ_KTÚ_VTz, z,\s*T)Úaccept_encodingzaccept-encodingÚDEFAULT_ACCEPT_ENCODINGÚwin32c                óD  •  SS K n UR                  UR                  S5      n[	        UR                  US5      S   5      nUR                  US5      S   nU(       a  U(       d  gUR                  S5      n[        S U5      nU Hs  nUS:X  a  SU ;  a    g	UR                  SS
5      nUR                  SS5      nUR                  SS5      n[        R                  " XP[        R                  5      (       d  Ms    g	   g! [         a     gf = f! [        [        4 a     gf = f)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ÚfilterÚreplaceÚreÚmatchÚI)ÚhostrF   ÚinternetSettingsÚproxyEnableÚproxyOverrideÚtests         ÚK/home/mande/repo/quber/.venv/lib/python3.13/site-packages/requests/utils.pyÚproxy_bypass_registryrZ   c   s!  € ð	Ûð
	Ø%Ÿ~™~Ø×(Ñ(ØNó Ðô
 ˜f×1Ñ1Ð2BÀMÓRÐSTÑUÓVˆKà"×/Ñ/Ð0@À/ÓRÐSTÑUˆMö ¦-Øð
 &×+Ñ+¨CÓ0ˆä˜t ]Ó3ˆã!ˆDØ�yÓ Ø˜d“?ÙØ—<‘<  UÓ+ˆDØ—<‘<  UÓ+ˆDØ—<‘<  TÓ*ˆDÜ�xŠx˜¤B§D¡D×)Ó)Ùñ "ð øôC ó 	Ùð	ûô œÐ$ó 	Ùð	ús#   ‚C< ‡AD Ã<
D	ÄD	ÄDÄDc                óL   • [        5       (       a  [        U 5      $ [        U 5      $ )z‚Return True, if the host should be bypassed.

Checks proxy settings gathered from the environment, if specified,
or the registry.
)r   r   rZ   )rT   s    rY   r   r   ‰   s#   € ô "×#Ñ#Ü+¨DÓ1Ð1ä(¨Ó.Ð.ó    c                óP   • [        U [        5      (       a  U R                  5       $ U $ )z/Returns an internal sequence dictionary update.)Ú
isinstanceÚ_SupportsItemsÚitems)Úds    rY   Údict_to_sequencerb   •   s"   € ô
 �!”^×$Ñ$Ø�w‰w‹yÐà€Hr\   c                óV  • S nSn[         (       d&  [        U [        5      (       a  U R                  S5      n [	        U S5      (       a  [        U 5      nO‹[	        U S5      (       a  U R
                  nOm[	        U S5      (       a\   U R                  5       n[        R                  " U5      R                  nSU R                  ;  a  [        R                  " S[        5        [	        U S5      (       ab   U R#                  5       n[	        U S	5      (       a@  Uc=   U R%                  SS
5        U R#                  5       nU R%                  U=(       d    S5        Uc  Sn[)        SX-
  5      $ ! [        R                  [         4 a     N¢f = f! [&         a    Sn NAf = f! [&         a    Ub  Un NVf = f)Nr   úutf-8Ú__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é   )r   r^   r!   ÚencodeÚhasattrrf   rg   ÚosÚfstatÚst_sizeÚmodeÚwarningsÚwarnr(   ÚioÚUnsupportedOperationÚAttributeErrorri   rj   rL   Úmax)ÚoÚtotal_lengthÚcurrent_positionrg   s       rY   Ú	super_lenr{       sŠ  € Ø€LØÐçŠ<œJ q¬#×.Ñ.ð �H‰H�WÓˆäˆq�)×ÑÜ˜1“v‰ä	��E×	Ñ	Ø—u‘u‰ä	��H×	Ñ	ð	Ø—X‘X“ZˆFô Ÿ8š8 FÓ+×3Ñ3ˆLð ˜!Ÿ&™&Ó Ü—’ð2ô $ô
ô ˆq�&×Ñð	%Ø Ÿv™v›xÐô �q˜&×!Ñ! lÑ&:ð	%à—F‘F˜1˜a”LØ#$§6¡6£8�Lð —F‘FÐ+×0¨qÔ1ð ÑØˆäˆq�,Ñ1Ó2Ð2øôe ×'Ñ'¬Ð8ó 	ñ ð		ûôX ó %Ø#$’Lð%ûô% ó 	0ð
 Ñ'Ø#/Ð ùð	0ús6   ÂE$ Ã0F Ä<F Å$FÆ FÆFÆFÆF(Æ'F(c                ó¼  • [        U [        5      (       a  U R                  S5      n [        R                  R                  S5      nUb  U4nOS [         5       n SSKJnJn  SnU HJ  n[        R                  R                  U5      n[        R                  R                  U5      (       d  MH  Un  O   Uc  g[        U 5      n	U	R                  n
U
c  g U" U5      R                  U
5      nU(       a:  [        U5      (       a)  US   (       a  SOSnX¼   =(       d    SUS	   =(       d    S4$ gg! U[         4 a    U(       a  e  gf = f! ["        [$        4 a     gf = f)
z;Returns the Requests tuple auth for a given url from netrc.rd   ÚNETRCNc              3  ó,   #   • U  H
  nS U 3v •  M     g7f)z~/N© )Ú.0Úfs     rY   Ú	<genexpr>Ú!get_netrc_auth.<locals>.<genexpr>ó   s   é € Ð9ª[¨˜R ˜s�8ª[ùs   ‚r   )ÚNetrcParseErrorÚnetrcr   Ú rk   )r^   r   Údecodern   ÚenvironÚgetr4   r…   r„   ÚpathÚ
expanduserÚexistsr#   ÚhostnameÚauthenticatorsÚanyrL   rG   rv   )ÚurlÚraise_errorsÚ
netrc_fileÚnetrc_locationsr„   r…   Ú
netrc_pathr�   ÚlocÚrirT   r3   Úlogin_is                rY   Úget_netrc_authr˜   ç   sA  € ô
 �#”u×ÑØ�j‰j˜Ó!ˆä—‘—‘ Ó(€JØÑØ%˜-‰á9­[Ó9ˆð#ß0àˆ
ã ˆAÜ—'‘'×$Ñ$ QÓ'ˆCÜ�w‰w�~‰~˜c×"Ó"Ø �
Ùñ	 !ð ÑØä�c‹]ˆØ�{‰{ˆà‰<Øð
	Ù˜:Ó&×5Ñ5°dÓ;ˆFÞœ#˜fŸ+™+à% aŸy™!¨a�Ø™×-¨2¨v°a©y¯¸BÐ?Ð?ð &ˆvøð  ¤Ð)ó 	ö Øñ ð	ûô œÐ(ó Ùðús>   ÁAE Â/	E Â9E ÃAD. Ä.EÅE ÅEÅE ÅEÅEc                óÊ   • [        U SS5      nU(       aO  [        U[        [        45      (       a3  US   S:w  a)  US   S:w  a  [        R
                  R                  U5      $ gggg)z0Tries to guess the filename of the given object.ÚnameNr   Ú<éÿÿÿÿÚ>)Úgetattrr^   r!   r   rn   rŠ   Úbasename)Úobjrš   s     rY   Úguess_filenamer¡     s[   € ä�3˜ Ó%€DÞ”
˜4¤#¤u ×.Ñ.°4¸±7¸c³>ÀdÈ2ÁhÐRUÃoÜ�w‰w×Ñ Ó%Ð%ð GV°>Ð.€tr\   c                óŒ  • [         R                  R                  U 5      (       a  U $ [         R                  R                  U 5      u  pU(       aŒ  [         R                  R                  U5      (       dh  [         R                  R                  U5      u  pU(       d  O?SR	                  X2/5      nU(       a&  [         R                  R                  U5      (       d  Mh  [
        R                  " U5      (       d  U $ [
        R                  " U5      nX$R                  5       ;  a  U $ [         R                  R                  UR                  S5      S   5      S   n[        R                  " US9u  pg [         R                  " XdR                  U5      5        [         R                  " U5        U$ ! [         R                  " U5        f = f)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œ   )Úsuffix)rn   rŠ   rŒ   rN   ÚjoinÚzipfileÚ
is_zipfileÚZipFileÚnamelistÚsplitextÚtempfileÚmkstempÚwriteÚreadÚclose)rŠ   ÚarchiveÚmemberÚprefixÚzip_filer¤   ÚfdÚextracted_paths           rY   Úextract_zipped_pathsr¶   "  s;  € ô
 
‡w�w‡~�~�d×Ñàˆô —g‘g—m‘m DÓ)�O€GÞ
œ"Ÿ'™'Ÿ.™.¨×1Ñ1ÜŸ'™'Ÿ-™-¨Ó0‰ˆÞð Ø—‘˜6Ð*Ó+ˆö œ"Ÿ'™'Ÿ.™.¨×1Ó1ô ×Ò˜g×&Ñ&Øˆä�Š˜wÓ'€HØ×&Ñ&Ó(Ó(Øˆô �W‰W×Ñ˜fŸl™l¨3Ó/°Ñ3Ó4°RÑ8€FÜ!×)Ò)°Ñ8Ñ€BðÜ
�Š�—]‘] 6Ó*Ô+ä
�Š�ŒàÐøô 	�Š��ús   Å.%F+ Æ+Gc              #  óT  #   • [         R                  " [        R                  R	                  U 5      S9u  p [        R
                  " US5       nUv •  SSS5        [        R                  " X 5        g! , (       d  f       N%= f! [         a    [        R                  " U5        e f = f7f)z-Write a file to the disk in an atomic fashion)ÚdirÚwbN)	r«   r¬   rn   rŠ   ÚdirnameÚfdopenrP   ÚBaseExceptionÚremove)ÚfilenameÚtmp_descriptorÚtmp_nameÚtmp_handlers       rY   Úatomic_openrÂ   H  sz   é € ô  (×/Ò/´B·G±G·O±OÀHÓ4MÑNÑ€NðÜ�YŠY�~ tÔ,°ØÒ÷ -ä
�
Š
�8Õ&÷ -Õ,ûô ó Ü
�	Š	�(ÔØðüs4   ‚4B(·B ÁA2ÁB Á1B(Á2
B Á<B Â"B%Â%B(c                ó€   • U c  g[        U [        [        [        [        45      (       a  [        S5      e[        U 5      $ )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)r^   r!   r   ÚboolrJ   rM   r   ©Úvalues    rY   Úfrom_key_val_listrÈ   U  s9   € ð( �}Øä�%œ#œu¤d¬CÐ0×1Ñ1ÜÐFÓGÐGä�uÓÐr\   c                ó   • g ©Nr   rÆ   s    rY   Úto_key_val_listrË   r  s   € Ø*-r\   c                ó   • g rÊ   r   rÆ   s    rY   rË   rË   t  s   € ð  r\   c                óÜ   • U c  g[        U [        [        [        [        45      (       a  [        S5      e[        U [        5      (       a  [        U R                  5       5      $ [        U 5      $ )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Ä   )	r^   r!   r   rÅ   rJ   rM   r_   Úlistr`   rÆ   s    rY   rË   rË   x  sV   € ð& �}Øä�%œ#œu¤d¬CÐ0×1Ñ1ÜÐFÓGÐGä�%œ×(Ñ(Ü�E—K‘K“MÓ"Ð"ä�‹;Ðr\   c                ó˜   • / n[        U 5       H8  nUSS USS s=:X  a  S:X  a  O  O[        USS 5      nUR                  U5        M:     U$ )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      rY   Úparse_list_headerrÖ   ˜  sT   € ð. €FÜ" 5Ö)ˆØ��ˆ8�t˜B˜C�yÕ' CÖ'Ü'¨¨Q¨r¨
Ó3ˆDØ�‰�dÖñ *ð €Mr\   c                ó¾   • 0 n[        U 5       HK  nSU;  a  SX'   M  UR                  SS5      u  p0U SS U SS s=:X  a  S:X  a  O  O[        U SS 5      n XU'   MM     U$ )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Ñ   rN   rÒ   )rÇ   rÔ   rÕ   rš   s       rY   Úparse_dict_headerrÙ   ¸  sr   € ð, %'€FÜ" 5Ö)ˆØ�d‹?ØˆF‰LÙØ—j‘j  aÓ(‰ˆØ��!ˆ9˜˜b˜c˜
Õ) cÖ)Ü(¨¨q°¨Ó5ˆEØˆt‹ñ *ð €Mr\   c                ó°   • U (       aN  U S   U S   s=:X  a  S:X  a;  O  U $ U SS n U(       a	  U SS S:w  a"  U R                  SS5      R                  S	S5      $ U $ )
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   Nrk   z\\Ú\z\")rP   )rÇ   Úis_filenames     rY   rÒ   rÒ   Û  sd   € ö ��q‘˜U 2™YÕ-¨#Õ-ð €Lð �a˜�ˆö ˜e B Q˜i¨6Ó1Ø—=‘= ¨Ó.×6Ñ6°u¸cÓBÐBØ€Lr\   c                ó\   • U  Vs0 s H  oR                   UR                  _M     nnU$ s  snf )ztReturns a key/value dictionary from a CookieJar.

:param cj: CookieJar object to extract cookies from.
:rtype: dict
)rš   rÇ   )ÚcjÚcookieÚcookie_dicts      rY   Údict_from_cookiejarrá   ô  s.   € ñ <>Ó>º2°—;‘; §¡Ò,¹2€KÐ>ØÐùò ?s   … )c                ó   • [        X5      $ )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     rY   Úadd_dict_to_cookiejarrã   ÿ  s   € ô ˜{Ó/Ð/r\   c                óZ  • [         R                  " S[        5        [        R                  " S[        R
                  S9n[        R                  " S[        R
                  S9n[        R                  " S5      nUR                  U 5      UR                  U 5      -   UR                  U 5      -   $ )zdReturns 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=["\']*(.+?)["\'>])rr   rs   ÚDeprecationWarningrQ   ÚcompilerS   Úfindall)ÚcontentÚ
charset_reÚ	pragma_reÚxml_res       rY   Úget_encodings_from_contentrí   
  s‘   € ô
 ‡M‚Mð1ô 	ôô —’Ð@ÌÏÉÑM€JÜ—
’
ÐIÔQS×QUÑQUÑV€IÜ�ZŠZÐ?Ó@€Fð 	×Ñ˜7Ó#Ø
×
Ñ
˜GÓ
$ñ	%à
�.‰.˜Ó
!ñ	"ðr\   c                óN  • U R                  S5      nUS   R                  5       USS p20 nSnU Hq  nUR                  5       nU(       d  M  UR                  S5      =nS:w  d  M5  USU R                  U5      nXgS-   S R                  U5      n	X”UR                  5       '   Ms     X$4$ )z˜Returns content type and parameters from given header.

:param header: string
:return: tuple containing content type and dictionary of
     parameters.
rB   r   r   Nz"' rØ   rœ   )rN   ÚstripÚfindÚlower)
ÚheaderÚtokensÚcontent_typeÚparamsÚparams_dictÚstrip_charsÚparamÚidxÚkeyrÇ   s
             rY   Ú_parse_content_type_headerrû   #  sª   € ð �\‰\˜#Ó€FØ! !™9Ÿ?™?Ó,¨f°Q°R¨j�&Ø)+€KØ€KãˆØ—‘“ˆßˆ5˜UŸZ™Z¨›_Ð,�c°Õ3Ø˜˜�+×#Ñ# KÓ0ˆCØ ™'˜)Ð$×*Ñ*¨;Ó7ˆEØ',˜Ÿ	™	›Ó$ñ ð Ð$Ð$r\   c                ó    • U R                  S5      nU(       d  g[        U5      u  pSU;   a  US   R                  S5      $ SU;   a  gSU;   a  gg)	zqReturns encodings from given HTTP Header Dict.

:param headers: dictionary to extract encoding from.
:rtype: str
zcontent-typeNÚcharsetz'"Útextz
ISO-8859-1zapplication/jsonrd   )r‰   rû   rï   )Úheadersrô   rõ   s      rY   Úget_encoding_from_headersr   9  s^   € ð —;‘;˜~Ó.€LæØä5°lÓCÑ€Là�FÓØ�iÑ ×&Ñ& uÓ-Ð-à�ÓØà˜\Ó)àð *r\   c              #  ó  #   • UR                   c  U  Sh  v•N   g[        R                  " UR                   5      " SS9nU  H!  nUR                  U5      nU(       d  M  Uv •  M#     UR                  SSS9nU(       a  Uv •  gg Nm7f)zStream decodes an iterator.NrP   ©Úerrorsr\   T)Úfinal)ÚencodingÚcodecsÚgetincrementaldecoderr‡   )ÚiteratorÚrÚdecoderÚchunkÚrvs        rY   Ústream_decode_response_unicoder  R  s~   é € ð
 	‡z�zÑØ×ÐØä×*Ò*¨1¯:©:Ô6¸iÑH€GÛˆØ�^‰^˜EÓ"ˆßˆ2ØŒHñ ð 
�‰˜ 4ˆÐ	(€BÞ	Ø‹ð 
ñ 	ùs   ‚B•B–ABÁ&Bc                ó   • g rÊ   r   ©ÚstringÚslice_lengths     rY   Úiter_slicesr  e  s   € ð $'r\   c                ó   • g rÊ   r   r  s     rY   r  r  i  s   € ð "%r\   c              #  ó’   #   • SnUb  US::  a  [        U 5      nU[        U 5      :  a  XX!-    v •  X!-  nU[        U 5      :  a  M  gg7f)z Iterate over slices of a string.r   N)rf   )r  r  Úposs      rY   r  r  m  sR   é € ð €CØÑ˜|¨qÓ0Ü˜6“{ˆØ
”�F“Ó
Ø˜3Ñ-Ð.Ò.ØÑˆð ”�F“×
ùs   ‚AAÁAc                óv  • [         R                  " S[        5        U R                  c  g/ n[	        U R
                  5      nU(       a   [        U R                  U5      $  [        U R                  U=(       d    SSS9$ ! [         a    UR                  U5         N<f = f! [         a    U R                  s $ f = f)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.)Nrd   rP   r  )
rr   rs   ræ   ré   r   rÿ   r!   ÚUnicodeErrorrÓ   Ú	TypeError)r	  Útried_encodingsr  s      rY   Úget_unicode_from_responser  y  s­   € ô ‡M‚Mð1ô 	ôð 	‡y�yÑØà!#€Oô )¨¯©Ó3€Hæð	-Ü�q—y‘y (Ó+Ð+ð
Ü�1—9‘9˜h×1¨'¸)ÑDÐDøô ó 	-Ø×"Ñ" 8Ö,ð	-ûô ó Ø�y‰yÒðús$   Á	A> Á B Á>BÂBÂB8Â7B8zBABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~ÚUNRESERVED_SETc                ó’  • U R                  S5      n[        S[        U5      5       Hp  nX   SS n[        U5      S:X  aN  UR                  5       (       a9   [	        [        US5      5      nU[        ;   a  XAU   SS -   X'   M\  SX    3X'   Mg  SX    3X'   Mr     S	R                  U5      $ ! [         a    [        SU S35      ef = f)
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   rk   é   z"Invalid percent-escape sequence: 'Ú'Nr†   )
rN   Úrangerf   ÚisalnumÚchrrJ   rM   r*   r  r¥   )ÚuriÚpartsÚiÚhÚcs        rY   Úunquote_unreservedr(  ¨  sÑ   € ð �I‰I�c‹N€EÜ�1”c˜%“jÖ!ˆØ‰H�Q�qˆMˆÜˆq‹6�Q‹;˜1Ÿ9™9Ÿ;™;ðLÜœ˜A˜r›
“O�ð ”NÓ"Ø Q™x¨¨˜|Ñ+�“à˜u™x˜j˜>�“à˜5™8˜*�~ˆE‹Hñ "ð �7‰7�5‹>Ðøô ó LÜ Ð#EÀaÀSÈÐ!JÓKÐKðLús   ÁB,Â,Cc                ód   • SnSn [        [        U 5      US9$ ! [         a    [        XS9s $ f = f)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      rY   Úrequote_urir-  À  sG   € ð /ÐØ0Ðð	5ô Ô'¨Ó,Ð3DÑEÐEøÜó 5ô �SÑ4Ò4ð	5ús   † ™/®/c           
     óx  • [         R                  " S[        R                  " U 5      5      S   nUR	                  S5      u  p4[         R                  " S[        R                  " [        [        U5      5      5      5      S   n[         R                  " S[        R                  " U5      5      S   U-  nX%-  Xe-  :H  $ )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_atonrN   Údotted_netmaskrJ   )ÚipÚnetÚipaddrÚnetaddrÚbitsÚnetmaskÚnetworks          rY   Úaddress_in_networkr;  Ö  s’   € ô �]Š]˜4¤×!1Ò!1°"Ó!5Ó6°qÑ9€FØ—I‘I˜c“N�M€GÜ�mŠm˜D¤&×"2Ò"2´>Ä#ÀdÃ)Ó3LÓ"MÓNÈqÑQ€GÜ�mŠm˜D¤&×"2Ò"2°7Ó";Ó<¸QÑ?À'ÑI€GØÑ 'Ñ"3Ñ4Ð4r\   c                ót   • SSSU -
  -  S-
  -  n[         R                  " [        R                  " SU5      5      $ )zuConverts 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)r1  Ú	inet_ntoar/  Úpack)Úmaskr8  s     rY   r3  r3  å  s7   € ð ˜˜b 4™i™¨1Ñ,Ñ,€DÜ×ÒœFŸKšK¨¨dÓ3Ó4Ð4r\   c                óR   •  [         R                  " U 5        g! [         a     gf = f)z
:rtype: bool
FT)r1  r2  rL   )Ú	string_ips    rY   Úis_ipv4_addressrC  ð  s.   € ðÜ×Ò˜Ô#ð øô ó Ùðús   ‚ ™
&¥&c                ó  • U R                  S5      S:X  aU   [        U R                  S5      S   5      nUS:  d  US:”  a  g [        R
                  " U R                  S5      S   5        gg! [         a     gf = f! [         a     gf = f)zJ
Very simple check of the cidr format in no_proxy variable.

:rtype: bool
r£   r   Fr=  r   T)ÚcountrJ   rN   rM   r1  r2  rL   )Ústring_networkr@  s     rY   Úis_valid_cidrrG  û  sœ   € ð ×Ñ˜CÓ  AÓ%ð	Ü�~×+Ñ+¨CÓ0°Ñ3Ó4ˆDð �!‹8�t˜b“yØð	Ü×Ò˜^×1Ñ1°#Ó6°qÑ9Ô:ð
 ð øô ó 	Ùð	ûô ó 	Ùð	ús#   —A, Á(A< Á,
A9Á8A9Á<
B	ÂB	c              #  ó^  #   • USLnSnU(       a2  [         R                  R                  U 5      nU[         R                  U '    Sv •  U(       a)  Uc  [         R                  U 	 gU[         R                  U '   gg! U(       a)  Uc  [         R                  U 	 f U[         R                  U '   f f = f7f)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)rn   rˆ   r‰   )Úenv_namerÇ   Úvalue_changedÚ	old_values       rY   Úset_environrL    s‘   é € ð  Ð%€MØ €IÞÜ—J‘J—N‘N 8Ó,ˆ	Ø$Œ�
‰
�8Ñð1ÛæØÑ Ü—J‘J˜xÑ(à'0”—
‘
˜8Ò$ð	 øŽ=ØÑ Ü—J‘J˜xÑ(à'0”—
‘
˜8Ò$ð	 üs   ‚A B-ÁA8 Á1B-Á82B*Â*B-c                óú  • SS jnUnUc  U" S5      n[        U 5      nUR                  nUc  gU(       aë  S UR                  SS5      R                  S5       5       n[	        U5      (       a5  U H.  n[        U5      (       a  [        XW5      (       a    gM'  XW:X  d  M.    g   O~UnUR                  (       a  US	UR                   3-  nU HS  n	U	R                  S
5      n	XY:X  d  X‰:X  a    gS
U	-   n	UR                  U	5      (       d  UR                  U	5      (       d  MS    g   [        SU5          [        U5      n
SSS5        W
(       a  gg! [        [        R                  4 a    Sn
 N/f = f! , (       d  f       N9= f)z@
Returns whether we should bypass proxies or not.

:rtype: bool
c                ó¨   • [         R                  R                  U 5      =(       d-    [         R                  R                  U R                  5       5      $ rÊ   )rn   rˆ   r‰   Úupper)rú   s    rY   Ú	get_proxyÚ(should_bypass_proxies.<locals>.get_proxy3  s-   € Ü�z‰z�~‰~˜cÓ"×A¤b§j¡j§n¡n°S·Y±Y³[Ó&AÐAr\   NÚno_proxyTc              3  ó6   #   • U  H  o(       d  M  Uv •  M     g 7frÊ   r   )r€   rT   s     rY   r‚   Ú(should_bypass_proxies.<locals>.<genexpr>E  s   é € ÐXÒ+O 4ÓSWŸ$™$Ò+Oùs   ‚
�	Ú r†   Ú,Ú:rC   F)rú   r!   Úreturnú
str | None)r#   r�   rP   rN   rC  rG  r;  ÚportÚlstripÚendswithrL  r   r  r1  Úgaierror)r�   rR  rP  Úno_proxy_argÚparsedr�   Úno_proxy_hostsÚproxy_ipÚhost_with_portrT   Úbypasss              rY   Úshould_bypass_proxiesrd  *  si  € ôBð
 €LØÑÙ˜ZÓ(ˆÜ�c‹]€FØ�‰€HàÑàæñ Y¨8×+;Ñ+;¸CÀÓ+D×+JÑ+JÈ3Ô+OÓXˆä˜8×$Ñ$Û*�Ü  ×*Ñ*Ü)¨(×=Ñ=Ù#ñ >àÕ)ñ  ò +ð &ˆNØ�{�{Ø A f§k¡k ]Ð"3Ñ3�ã&�Ø—{‘{ 3Ó'�ØÓ# ~Ó'=ÙØ˜T‘z�Ø×$Ñ$ T×*Ñ*¨n×.EÑ.EÀd×.KÓ.KÙñ 'ô 
�Z Õ	.ð	Ü! (Ó+ˆF÷ 
/ö Øàøô œ6Ÿ?™?Ð+ó 	ØŠFð	ú÷ 
/Õ	.ús*   Ä,E,Ä.E
Å
E)Å&E,Å(E)Å)E,Å,
E:c                ó6   • [        XS9(       a  0 $ [        5       $ )z5
Return a dict of environment proxies.

:rtype: dict
©rR  )rd  r   )r�   rR  s     rY   Úget_environ_proxiesrg  i  s   € ô ˜S×4Øˆ	ä‹|Ðr\   c                ó>  • U=(       d    0 n[        U 5      nUR                  c+  UR                  UR                  UR                  S5      5      $ UR                  S-   UR                  -   UR                  SUR                  -   S/nSnU H  nXQ;   d  M
  X   n  U$    U$ )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�   r‰   Úscheme)r�   ÚproxiesÚurlpartsÚ
proxy_keysÚproxyÚ	proxy_keys         rY   Úselect_proxyrp  u  s¦   € ð �m˜€GÜ˜‹}€HØ×ÑÑ Ø�{‰{˜8Ÿ?™?¨G¯K©K¸Ó,>Ó?Ð?ð 	�‰˜%Ñ (×"3Ñ"3Ñ3Ø�‰Ø�8×$Ñ$Ñ$Øð	€Jð €EÛˆ	ØÕØÑ&ˆEØà€Lñ  ð
 €Lr\   c                ó`  • Ub  UO0 n[        [        U R                  5      n[        U5      R                  nUR                  S5      nUR                  5       nU(       aO  [        X5S9(       dA  [        X5S9nUR                  XGR                  S5      5      nU(       a  UR                  XH5        U$ )a�  This method takes proxy information from a request and configuration
input to resolve a mapping of target proxies. This will consider settings
such as 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
rR  rf  ri  )
r   r!   r�   r#   rj  r‰   Úcopyrd  rg  Ú
setdefault)	Úrequestrk  Ú	trust_envr�   rj  rR  Únew_proxiesÚenviron_proxiesrn  s	            rY   Úresolve_proxiesrx  �  s�   € ð !Ñ,‰g°"€GÜ
Œs�G—K‘KÓ
 €CÜ�c‹]×!Ñ!€FØ�{‰{˜:Ó&€HØ—,‘,“.€KæÔ.¨s×FÜ-¨cÑEˆà×#Ñ# F×,?Ñ,?ÀÓ,FÓGˆæØ×"Ñ" 6Ô1ØÐr\   c                ó   • U  S[          3$ )zC
Return a string representing the default user agent.

:rtype: str
r£   r   )rš   s    rY   Údefault_user_agentrz  ®  s   € ð ˆV�1”[�MÐ"Ð"r\   c                 ó:   • [        [        5       [        SSS.5      $ )z1
:rtype: requests.structures.CaseInsensitiveDict
z*/*z
keep-alive)z
User-AgentzAccept-EncodingÚAcceptÚ
Connection)r,   rz  r=   r   r\   rY   Údefault_headersr~  ·  s%   € ô ä,Ó.Ü6ØØ&ñ		
óð r\   c                óÖ  • / nSnU R                  U5      n U (       d  U$ [        R                  " SU 5       HŠ  n UR                  SS5      u  pESUR                  S5      0nUR                  S5       H9  n UR                  S5      u  p€U R                  U5      XhR                  U5      '   M;     UR	                  U5        MŒ     U$ ! [         a    USpT N‡f = f! [         a       M8  f = f)	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, *<rB   r   r†   r�   z<> '"rØ   )rï   rQ   rN   rM   rÓ   )	rÇ   ÚlinksÚreplace_charsÚvalr�   rõ   Úlinkrø   rú   s	            rY   Úparse_header_linksr„  Å  sé   € ð #%€Eà€Mà�K‰K˜Ó&€EÞØˆä�xŠx˜ Ö&ˆð	"ØŸ)™) C¨Ó+‰KˆCð !& s§y¡y°Ó':Ð;ˆà—\‘\ #Ö&ˆEðØ"Ÿ[™[¨Ó-‘
�ð .3¯[©[¸Ó-GˆD—‘˜=Ó)Ó*ñ 'ð 	�‰�TÖñ! 'ð$ €Løô ó 	"Ø˜r’ð	"ûô ó Ûðús#   ºCÁ6CÃCÃCÃ
C(Ã'C(Ú Úasciirk   é   c                ó¤  • U SS nU[         R                  [         R                  4;   a  gUSS [         R                  :X  a  gUSS [         R                  [         R
                  4;   a  gUR                  [        5      nUS:X  a  g	US:X  a"  USSS2   [        :X  a  g
USSS2   [        :X  a  gUS:X  a  USS [        :X  a  gUSS [        :X  a  gg)z
:rtype: str
Né   zutf-32r‡  z	utf-8-sigrk   zutf-16r   rd   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_BErE  Ú_nullÚ_null2Ú_null3)ÚdataÚsampleÚ	nullcounts      rY   Úguess_json_utfr•  ð  sÕ   € ð �"�1ˆX€FØ”&×%Ñ%¤v×':Ñ':Ð;Ó;ØØˆbˆq€z”V—_‘_Ó$ØØˆbˆq€z”f×)Ñ)¬6×+>Ñ+>Ð?Ó?ØØ—‘œUÓ#€IØ�Aƒ~ØØ�Aƒ~Ø‘#�A�#‰;œ&Ó ØØ�!�$�Q�$‰<œ6Ó!Øà�Aƒ~Ø�"�1ˆ:œÓØØ�!�"ˆ:œÓØàr\   c                óÔ   • [        U 5      nUu  p4pVpxn	UR                  n
U
(       d  XzpzU(       a"  [        [        U
5      n
SR	                  XJ/5      n
Uc  UnUc  Sn[        X:USX‰45      $ )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
Ú@r†   )r   Únetlocr   r!   r¥   r$   )r�   Ú
new_schemer_  rj  ÚauthÚ_hostÚ_portrŠ   ÚqueryÚfragmentr˜  s              rY   Úprepend_scheme_if_neededrŸ    sw   € ô �s‹^€FØ8>Ñ5€F�% ¨Xð �]‰]€FÞØ�æô ”c˜6Ó"ˆØ—‘˜4˜.Ó)ˆØ�~ØˆØ�|Øˆä�v t¨R°ÐAÓBÐBr\   c                ó¤   • [        U 5      n [        UR                  5      [        UR                  5      4nU$ ! [        [
        4 a    Sn U$ f = f)zoGiven a url with authentication components, extract them into a tuple of
username,password.

:rtype: (str,str)
)r†   r†   )r#   r"   ÚusernameÚpasswordrv   r  )r�   r_  rš  s      rY   Úget_auth_from_urlr£  .  sU   € ô �c‹]€Fðä˜Ÿ™Ó(¬'°&·/±/Ó*BÐCˆð €Køô œIÐ&ó Ø‰à€Kðús   �*9 ¹AÁAc                ó<   • U u  p[        XS5        [        XS5        g)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      rY   Úcheck_header_validityr¦  ?  s   € ð �K€DÜ˜&¨Ô*Ü˜&¨Õ+r\   c           
     ó   • [        U[        5      (       a
  [        U   nO=[        U[        5      (       a
  [        U   nO[        SU< SU  S[        U5       35      eUR                  U5      (       d  US:X  a  SOSn[        SU SU< 35      eg )	NzHeader part (z) from z# must be of type str or bytes, not r   rš   rÇ   zTInvalid leading whitespace, reserved character(s), or return character(s) in header z: )r^   r!   r   r   r   r)   ÚtyperR   )rò   Úheader_partÚheader_validator_indexÚ	validatorÚheader_kinds        rY   r¥  r¥  J  s«   € ô
 �+œs×#Ñ#Ü*Ð+AÑB‰	Ü	�K¤×	'Ñ	'ä+Ð,BÑC‰	äØ˜K™?¨'°&°ð :1Ü15°kÓ1BÐ0CðEó
ð 	
ð
 �?‰?˜;×'Ñ'Ø 6¸!Ó ;‘fÀˆÜð&Ø&1 ]°"°[±OðEó
ð 	
ð (r\   c                óz   • [        U 5      u  pp4pVU(       d  X2p2UR                  SS5      S   n[        XX4US45      $ )zK
Given a url remove the fragment and the authentication part.

:rtype: str
r—  r   rœ   r†   )r#   Úrsplitr$   )r�   rj  r˜  rŠ   rõ   r�  Ú	_fragments          rY   Úurldefragauthr°  b  sG   € ô 6>¸c³]Ñ2€F�D %ö Ø�à�]‰]˜3 Ó" 2Ñ&€Fä�v t°U¸BÐ?Ó@Ð@r\   c                óä   • [        U R                  SS5      nUb3  [        U R                  [        5      (       a   U" U R                  5        g[        S5      e! [
         a    [        S5      ef = f)z^Move file pointer back to its recorded starting position
so it can be read again on redirect.
rj   Nz;An error occurred when rewinding request body for redirect.z+Unable to rewind request body for redirect.)rž   Úbodyr^   Ú_body_positionr   rL   r+   )Úprepared_requestÚ	body_seeks     rY   Úrewind_bodyr¶  s  sz   € ô Ð(×-Ñ-¨v°tÓ<€IØÑ¤Ø×'Ñ'Ü÷"ñ "ð	ÙÐ&×5Ñ5Õ6ô $Ð$QÓRÐRøô ó 	Ü'ØMóð ð	ús   »A ÁA/)rT   r!   rX  rÅ   )ra   z6_t.SupportsItems[Any, Any] | Iterable[tuple[Any, Any]]rX  zIterable[tuple[Any, Any]])rx   r   rX  rJ   )F)r�   z
_t.UriTyper‘   rÅ   rX  ztuple[str, str] | None)r    r   rX  rY  )rŠ   r!   rX  r!   )r¾   r!   rX  z%Generator[BufferedWriter, None, None])rÇ   z4Mapping[Any, Any] | Iterable[tuple[Any, Any]] | NonerX  zdict[Any, Any] | None)rÇ   ÚNonerX  r·  )rÇ   z6_t.SupportsItems[_KT, _VT] | Iterable[tuple[_KT, _VT]]rX  zlist[tuple[_KT, _VT]])rÇ   z=_t.SupportsItems[_KT, _VT] | Iterable[tuple[_KT, _VT]] | NonerX  zlist[tuple[_KT, _VT]] | None)rÇ   r!   rX  ú	list[str])rÇ   r!   rX  údict[str, str | None])rÇ   r!   rÜ   rÅ   rX  r!   )rÞ   r-   rX  r¹  )rÞ   r-   rà   údict[str, str]rX  r-   )ré   r!   rX  r¸  )rò   r!   rX  ztuple[str, dict[str, Any]])rÿ   úCaseInsensitiveDict[str]rX  rY  )r  zIterable[bytes]r	  r2   rX  z"Generator[str | bytes, None, None])r  r   r  ú
int | NonerX  zGenerator[bytes, None, None])r  r!   r  r¼  rX  zGenerator[str, None, None])r  zbytes | strr  r¼  rX  z"Generator[bytes | str, None, None])r	  r2   rX  zstr | bytes | None)r#  r!   rX  r!   )r4  r!   r5  r!   rX  rÅ   )r@  rJ   rX  r!   )rB  r!   rX  rÅ   )rF  r!   rX  rÅ   )rI  r!   rÇ   rY  rX  zGenerator[None, None, None])r�   r!   rR  rY  rX  rÅ   rÊ   )r�   r!   rR  rY  rX  rº  )r�   r!   rk  údict[str, str] | NonerX  rY  )T)rt  zRequest | PreparedRequestrk  r½  ru  rÅ   rX  rº  )zpython-requests)rš   r!   rX  r!   )rX  r»  )rÇ   r!   rX  zlist[dict[str, str]])r’  r   rX  rY  )r�   r!   r™  r!   rX  r!   )r�   r!   rX  ztuple[str, str])rò   útuple[str | bytes, str | bytes]rX  r·  )rò   r¾  r©  zstr | bytesrª  rJ   rX  r·  )r�   r!   rX  r!   )r´  r0   rX  r·  )„Ú__doc__Ú
__future__r   r  Ú
contextlibrt   rn   rQ   r1  r/  Úsysr«   rr   r¦   Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r	   r
   r   r   Úurllib3.utilr   r   r†   r   r   Ú_internal_utilsr   r   r   r   r/   r   r_   Úcompatr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   rÑ   Úcookiesr'   Ú
exceptionsr(   r)   r*   r+   Ú
structuresr,   Úhttp.cookiejarr-   r.   Ú_tÚmodelsr0   r1   r2   r4   Ú__annotations__Úwherer5   r9   r:   r;   r¥   rN   r=   ÚplatformrZ   rb   r{   r˜   r¡   r¶   ÚcontextmanagerrÂ   rÈ   rË   rÖ   rÙ   rÒ   rá   rã   rí   rû   r   r  r  r  Ú	frozensetr  r(  r-  r;  r3  rC  rG  rL  rd  rg  rp  rx  rz  r~  r„  rl   r�  r�  r‘  r•  rŸ  r£  r¦  r¥  r°  r¶  r   r\   rY   Ú<module>rÔ     s­  ðòõ #ã Û Û 	Û 	Û 	Û Û Û 
Û Û Û Ý #ß /÷÷ ÷ 1å Ý $÷ó õ 4÷÷ ÷ õ õ :Ý (÷ó õ ,æÝ(Ý!åß:Ñ:à)€ˆUÓ )ð $Ÿkšk›mÐ ˜Ó +ð !#¨SÑ1€ˆuÓ 1áˆeƒn€Ùˆeƒn€ð "&§¡Ø‡H‚HˆW‘l°4Ñ8Ð9JÑKÓLó"Ð ˜ó ð
 ‡<�<�7Óô$ôL	/ðØ=ðàôôD3ðP +0ð1Ø	ð1Ø#'ð1àõ1ôh&ô#ðL ×Ñó	ó ð	ðØ?ðàôð: 
Û -ó 
Ø -Ø	ð ØAð àó ó 
ð ðØHðà!ôô@ô@öFô2ô0ôô2%ô,ð2ØðØ"*ðà'ôð& 
ð'Øð'Ø!+ð'à!ó'ó 
ð'ð 
ð%Øð%Ø)ð%àó%ó 
ð%ð	Øð	Ø'1ð	à'ô	ô&ñT "ØMó€�ó ô
ô05ô,5ô5ôôð0 ×Ñó1ó ð1ô,<ö~	ôð: ðØ&ðà"ðð ðð õ	ö>#ôô"ðL 	�‰�gÓ€Ø	�‰€Ø	�‰€ôô@Cô<ô",ð
Ø+ð
àð
ð  ð
ð 
ô	
ô0Aõ"Sr\   