§
    ÑÁ³g]   ã                  óÊ   — d dl m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	 ej
        rddlmZ d"d„Zd#d„Zd$d%d„Zd$d&d„Zd'd„Zd(d„Zd)d„Z G d„ d¦  «        Zd*d „Zd*d!„ZdS )+é    )ÚannotationsN)Ú
getproxiesé   )ÚPrimitiveData©ÚURLÚvaluer   ÚreturnÚstrc                ó@   — | du rdS | du rdS | €dS t          | ¦  «        S )z‡
    Coerce a primitive data type into a string value.

    Note that we prefer JSON-style 'true'/'false' for boolean values here.
    TÚtrueFÚfalseNÚ )r   ©r	   s    úJ/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/httpx/_utils.pyÚprimitive_value_to_strr      s6   € ð �€}€}ØˆvØ	�%ˆˆØˆwØ	ˆØˆrÝˆu‰:Œ:Ðó    údict[str, str | None]c                 óÜ  — t          ¦   «         } i }dD ]0}|                      |¦  «        r| |         }d|v r|nd|› �||› d�<   Œ1d„ |                      dd¦  «                             d¦  «        D ¦   «         }|D ]r}|dk    ri c S |rdd|v rd	||<   Œt          |¦  «        r	d	|d
|› �<   Œ0t	          |¦  «        r
d	|d|› d�<   ŒI|                     ¦   «         dk    r	d	|d
|› �<   Œjd	|d|› �<   Œs|S )z+Gets proxy information from the environment)ÚhttpÚhttpsÚallz://zhttp://c                ó6   — g | ]}|                      ¦   «         ‘ŒS © )Ústrip)Ú.0Úhosts     r   ú
<listcomp>z+get_environment_proxies.<locals>.<listcomp>/   s    € ÐSÐSÐS t�d—j’j‘l”lÐSÐSÐSr   Únor   ú,Ú*Nzall://zall://[ú]Ú	localhostzall://*)r   ÚgetÚsplitÚis_ipv4_hostnameÚis_ipv6_hostnameÚlower)Ú
proxy_infoÚmountsÚschemeÚhostnameÚno_proxy_hostss        r   Úget_environment_proxiesr.      sv  € õ ‘”€JØ$&€Fà*ð ð ˆØ�>Š>˜&Ñ!Ô!ð 	Ø! &Ô)ˆHà! XÐ-Ð-��Ð3G¸XÐ3GÐ3Gð �f�>�>�>Ñ"øð TÐS¨z¯~ª~¸dÀBÑ/GÔ/G×/MÒ/MÈcÑ/RÔ/RÐSÑSÔS€NØ"ð 4ð 4ˆð �sŠ?ˆ?ð
 ˆIˆIˆIØð 	4ð ˜Ð Ð Ø#'��xÑ Ð Ý! (Ñ+Ô+ð 4Ø.2�Ð* Ð*Ð*Ñ+Ð+Ý! (Ñ+Ô+ð 4Ø04�Ð, Ð,Ð,Ð,Ñ-Ð-Ø—’Ñ!Ô! [Ò0Ð0Ø.2�Ð* Ð*Ð*Ñ+Ð+à/3�Ð+ Ð+Ð+Ñ,øà€Mr   úutf-8ústr | bytesÚencodingÚbytesc                óZ   — t          | t          ¦  «        r|                      |¦  «        n| S ©N©Ú
isinstancer   Úencode©r	   r1   s     r   Úto_bytesr9   O   s(   € Ý%/°µsÑ%;Ô%;ÐFˆ5�<Š<˜Ñ!Ô!Ð!ÀÐFr   c                óZ   — t          | t          ¦  «        r| n|                      |¦  «        S r4   )r6   r   Údecoder8   s     r   Úto_strr<   S   s'   € Ý˜u¥cÑ*Ô*ÐFˆ5ˆ5°·²¸XÑ0FÔ0FÐFr   Úmatch_type_ofútyping.AnyStrc                óX   — t          |t          ¦  «        r| n|                      ¦   «         S r4   r5   )r	   r=   s     r   Úto_bytes_or_strr@   W   s#   € Ý˜}­cÑ2Ô2ÐFˆ5ˆ5¸¿º¹¼ÐFr   c                óR   — | d         | d         cxk    rdk    rn n
| dd…         n| S )Nr   éÿÿÿÿú"r   r   r   s    r   ÚunquoterD   [   s=   € Ø œ( e¨B¤iÐ6Ð6Ò6Ð6°3Ò6Ð6Ð6Ð6Ð6ˆ5��2�Œ;ˆ;¸EÐAr   Ústreamú
typing.Anyú
int | Nonec                óZ  — 	 |                       ¦   «         }t          j        |¦  «        j        }n{# t          t
          f$ rg 	 |                      ¦   «         }|                      dt          j        ¦  «        }|                      |¦  «         n# t          t
          f$ r Y Y dS w xY wY nw xY w|S )zs
    Given a file-like stream object, return its length in number of bytes
    without reading it into memory.
    r   N)	ÚfilenoÚosÚfstatÚst_sizeÚAttributeErrorÚOSErrorÚtellÚseekÚSEEK_END)rE   ÚfdÚlengthÚoffsets       r   Úpeek_filelike_lengthrU   _   s¼   € ð
à�]Š]‰_Œ_ˆå”˜"‘”Ô%ˆˆøÝ�GÐ$ð 
ð 
ð 
ð	ð —[’[‘]”]ˆFØ—[’[ ¥B¤KÑ0Ô0ˆFØ�KŠK˜ÑÔÐÐøÝ¥Ð(ð 	ð 	ð 	à�4�4�4ð	øøøð  Ðð
øøøð €Ms4   ‚-0 °B(ÁA	BÂB(ÂB"ÂB(Â!B"Â"B(Â'B(c                  óR   — e Zd ZdZdd„Zdd
„Zedd„¦   «         Zdd„Zdd„Z	dd„Z
dS )Ú
URLPatternaË  
    A utility class currently used for making lookups against proxy keys...

    # Wildcard matching...
    >>> pattern = URLPattern("all://")
    >>> pattern.matches(httpx.URL("http://example.com"))
    True

    # Witch scheme matching...
    >>> pattern = URLPattern("https://")
    >>> pattern.matches(httpx.URL("https://example.com"))
    True
    >>> pattern.matches(httpx.URL("http://example.com"))
    False

    # With domain matching...
    >>> pattern = URLPattern("https://example.com")
    >>> pattern.matches(httpx.URL("https://example.com"))
    True
    >>> pattern.matches(httpx.URL("http://example.com"))
    False
    >>> pattern.matches(httpx.URL("https://other.com"))
    False

    # Wildcard scheme, with domain matching...
    >>> pattern = URLPattern("all://example.com")
    >>> pattern.matches(httpx.URL("https://example.com"))
    True
    >>> pattern.matches(httpx.URL("http://example.com"))
    True
    >>> pattern.matches(httpx.URL("https://other.com"))
    False

    # With port matching...
    >>> pattern = URLPattern("https://example.com:1234")
    >>> pattern.matches(httpx.URL("https://example.com:1234"))
    True
    >>> pattern.matches(httpx.URL("https://example.com"))
    False
    Úpatternr   r
   ÚNonec                óô  — ddl m} |rd|vrt          d|› d|› d�¦  «        ‚ ||¦  «        }|| _        |j        dk    rdn|j        | _        |j        d	k    rdn|j        | _        |j        | _        |j        r|j        d	k    r	d | _        d S |j                             d
¦  «        r@t          j
        |j        dd …         ¦  «        }t          j        d|› d�¦  «        | _        d S |j                             d	¦  «        r@t          j
        |j        dd …         ¦  «        }t          j        d|› d�¦  «        | _        d S t          j
        |j        ¦  «        }t          j        d|› d�¦  «        | _        d S )Nr   r   ú:zUProxy keys should use proper URL forms rather than plain scheme strings. Instead of "z", use "z://"r   r   r!   z*.é   z^.+\.ú$z^(.+\.)?ú^)Ú_urlsr   Ú
ValueErrorrX   r+   r   ÚportÚ
host_regexÚ
startswithÚreÚescapeÚcompile)ÚselfrX   r   ÚurlÚdomains        r   Ú__init__zURLPattern.__init__¢   sž  € ØÐÐÐÐÐàð 	�s 'Ð)Ð)Ýð>à&ð>ð >à07ð>ð >ð >ñô ð ð ˆc�'‰lŒlˆØˆŒØœJ¨%Ò/Ð/�b�b°S´ZˆŒØœ( cš/˜/�B�B¨s¬xˆŒ	Ø”HˆŒ	ØŒxð 	8˜3œ8 sš?˜?Ø:>ˆDŒOˆOˆOØŒX× Ò  Ñ&Ô&ð 	8å”Y˜sœx¨¨¨œ|Ñ,Ô,ˆFÝ œjÐ);°&Ð);Ð);Ð);Ñ<Ô<ˆDŒOˆOˆOØŒX× Ò  Ñ%Ô%ð 	8å”Y˜sœx¨¨¨œ|Ñ,Ô,ˆFÝ œjÐ)>°VÐ)>Ð)>Ð)>Ñ?Ô?ˆDŒOˆOˆOõ ”Y˜sœxÑ(Ô(ˆFÝ œj¨¨V¨¨¨Ñ7Ô7ˆDŒOˆOˆOr   Úotherr   Úboolc                óÈ   — | j         r| j         |j         k    rdS | j        r(| j        �!| j                             |j        ¦  «        sdS | j        �| j        |j        k    rdS dS )NFT)r+   r   rb   Úmatchra   ©rg   rk   s     r   ÚmatcheszURLPattern.matchesÀ   sr   € ØŒ;ð 	˜4œ;¨%¬,Ò6Ð6Ø�5àŒIð	à”Ð+Ø”O×)Ò)¨%¬*Ñ5Ô5ð ,ð �5ØŒ9Ð  T¤Y°%´*Ò%<Ð%<Ø�5Øˆtr   útuple[int, int, int]c                óv   — | j         �dnd}t          | j        ¦  «         }t          | j        ¦  «         }|||fS )z�
        The priority allows URLPattern instances to be sortable, so that
        we can match from most specific to least specific.
        Nr   r   )ra   Úlenr   r+   )rg   Úport_priorityÚhost_priorityÚscheme_prioritys       r   ÚpriorityzURLPattern.priorityÍ   sB   € ð "œYÐ2˜˜¸ˆå˜TœY™œ˜ˆå˜tœ{Ñ+Ô+Ð+ˆØ˜}¨oÐ>Ð>r   Úintc                ó*   — t          | j        ¦  «        S r4   )ÚhashrX   )rg   s    r   Ú__hash__zURLPattern.__hash__Û   s   € Ý�D”LÑ!Ô!Ð!r   c                ó"   — | j         |j         k     S r4   )rw   ro   s     r   Ú__lt__zURLPattern.__lt__Þ   s   € ØŒ}˜uœ~Ò-Ð-r   rF   c                óL   — t          |t          ¦  «        o| j        |j        k    S r4   )r6   rW   rX   ro   s     r   Ú__eq__zURLPattern.__eq__á   s    € Ý˜%¥Ñ,Ô,ÐN°´ÀÄÒ1NÐNr   N)rX   r   r
   rY   )rk   r   r
   rl   )r
   rq   )r
   rx   )rk   rW   r
   rl   )rk   rF   r
   rl   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rj   rp   Úpropertyrw   r{   r}   r   r   r   r   rW   rW   x   s©   € € € € € ð'ð 'ðR8ð 8ð 8ð 8ð<ð ð ð ð ð?ð ?ð ?ñ „Xð?ð"ð "ð "ð "ð.ð .ð .ð .ðOð Oð Oð Oð Oð Or   rW   r,   rl   c                ó†   — 	 t          j        |                      d¦  «        d         ¦  «         n# t          $ r Y dS w xY wdS ©Nú/r   FT)Ú	ipaddressÚIPv4Addressr%   Ú	Exception©r,   s    r   r&   r&   å   óS   € ðÝÔ˜hŸnšn¨SÑ1Ô1°!Ô4Ñ5Ô5Ð5Ð5øÝð ð ð Øˆuˆuðøøøàˆ4ó   ‚-0 °
>½>c                ó†   — 	 t          j        |                      d¦  «        d         ¦  «         n# t          $ r Y dS w xY wdS r†   )rˆ   ÚIPv6Addressr%   rŠ   r‹   s    r   r'   r'   í   rŒ   r�   )r	   r   r
   r   )r
   r   )r/   )r	   r0   r1   r   r
   r2   )r	   r0   r1   r   r
   r   )r	   r   r=   r>   r
   r>   )r	   r   r
   r   )rE   rF   r
   rG   )r,   r   r
   rl   )Ú
__future__r   rˆ   rJ   rd   ÚtypingÚurllib.requestr   Ú_typesr   ÚTYPE_CHECKINGr_   r   r   r.   r9   r<   r@   rD   rU   rW   r&   r'   r   r   r   ú<module>r•      s“  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %à !Ð !Ð !Ð !Ð !Ð !à	Ôð ØÐÐÐÐÐðð ð ð ð.ð .ð .ð .ðbGð Gð Gð Gð GðGð Gð Gð Gð GðGð Gð Gð GðBð Bð Bð Bðð ð ð ð2jOð jOð jOð jOð jOñ jOô jOð jOðZð ð ð ðð ð ð ð ð r   