Ë
    _§1hƒ  ã                   óú   — 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gZ
ded	efd
„ZddgZded	efd„Zded	efd„Zdeded	efd„Zdedee   d	efd„Z	 	 	 	 	 ddededee   dedee   dee   ded	efd„Zy)é    N)ÚOptional)ÚunquoteÚurlparseé   )ÚWebSocketProxyExceptionÚ	parse_urlÚget_proxy_infoÚurlÚreturnc                 óª  — d| vrt        d«      ‚| j                  dd«      \  }} t        | d¬«      }|j                  r|j                  }nt        d«      ‚d}|j                  r|j                  }d}|d	k(  r|sd
}n|dk(  rd}|sd}nt        d|z  «      ‚|j
                  r|j
                  }nd}|j                  r|d|j                  › �z  }||||fS )z®
    parse url and the result is tuple of
    (hostname, port, resource path and the flag of secure mode)

    Parameters
    ----------
    url: str
        url string.
    ú:zurl is invalidr   Úhttp)Úschemezhostname is invalidr   FÚwséP   ÚwssTi»  zscheme %s is invalidú/ú?)Ú
ValueErrorÚsplitr   ÚhostnameÚportÚpathÚquery)r
   r   Úparsedr   r   Ú	is_secureÚresources          úL/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/websocket/_url.pyr   r      sá   € ð �#�~ÜÐ)Ó*Ð*à—)‘)˜C Ó#�K€FˆCä�c &Ô)€FØ‡‚Ø—?‘?‰äÐ.Ó/Ð/Ø€DØ‡{‚{Ø�{‰{ˆà€IØ�‚~ÙØ‰DØ	�5ŠØˆ	ÙØ‰DäÐ/°&Ñ8Ó9Ð9à‡{‚{Ø—;‘;‰àˆà‡|‚|Ø�a˜Ÿ™�~Ð&Ñ&ˆà�T˜8 YÐ.Ð.ó    Ú	localhostz	127.0.0.1Úaddrc                 ób   — 	 t        j                  | «       y# t         j                  $ r Y yw xY w)NTF)ÚsocketÚ	inet_atonÚerror)r!   s    r   Ú_is_ip_addressr&   O   s2   € ðÜ×Ñ˜Ôð øô �<‰<ò Ùðús   ‚ ˜.­.r   c                 ó–   — 	 | j                  d«      \  }}t        |«      xr dt        |«      cxk  xr dk  S c S # t        $ r Y yw xY w)Nr   r   é    F)r   r&   Úintr   )r   r!   Únetmasks      r   Ú_is_subnet_addressr+   X   sO   € ðØ Ÿ™ sÓ+‰ˆˆgÜ˜dÓ#Ò>¨¬S°«\Ö(>¸BÑ(>Ð>Ñ(>Ð>øÜò Ùðús   ‚6< ¹< ¼	AÁAÚipÚnetc                 ó  — t        j                  dt        j                  | «      «      d   }|j	                  d«      \  }}t        j                  dt        j                  |«      «      d   }ddt        |«      z
  z  dz  }||z  |k(  S )Nz!Ir   r   l   ÿÿ r(   )ÚstructÚunpackr#   r$   r   r)   )r,   r-   ÚipaddrÚnetaddrr*   s        r   Ú_is_address_in_networkr3   `   s|   € Ü—-‘- ¤f×&6Ñ&6°rÓ&:Ó;¸AÑ>€FØ—y‘y “~Ñ€GˆWÜ—=‘= ¤v×'7Ñ'7¸Ó'@ÓAÀ!ÑD€Gà˜b¤3 w£<Ñ/Ñ0°JÑ>€GØ�GÑ˜wÑ&Ð&r   Úno_proxyc           	      óè  — |sat         j                  j                  dt         j                  j                  dd«      «      j                  dd«      x}r|j	                  d«      }|st
        }d|v ry| |v ryt        | «      r.t        |D �cg c]  }t        |«      rt        | |«      ‘Œ c}«      S |D �cg c]  }|j                  d«      sŒ|‘Œ c}D ]  }| j                  |«      sŒ y y	c c}w c c}w )
Nr4   ÚNO_PROXYÚ ú ú,Ú*Tú.F)ÚosÚenvironÚgetÚreplacer   ÚDEFAULT_NO_PROXY_HOSTr&   Úanyr+   r3   Ú
startswithÚendswith)r   r4   ÚvÚsubnetÚdomains        r   Ú_is_no_proxy_hostrG   i   sô   € ÙÜ—
‘
—‘˜z¬2¯:©:¯>©>¸*ÀbÓ+IÓJ×RÑRØ�ó
ð 
ˆ1ð 
ð —w‘w˜s“|ˆHÙÜ(ˆà
ˆh�ØØ�8ÑØÜ�hÔÜð 'öàÜ% fÔ-ô ' x°Õ8òó
ð 	
ð )1ÖK˜f°F×4EÑ4EÀcÕ4J’6ÒKò ˆØ×Ñ˜VÕ$Ùðð ùòùò Ls   Â
C*Â3C/Ã
C/r   Ú
proxy_hostÚ
proxy_portÚ
proxy_authÚ
proxy_typec                 óÎ  — t        | |«      ry|r|st        d«      ‚|}|}|||fS |rdnd}	t        j                  j	                  |	t        j                  j	                  |	j                  «       d«      «      j                  dd«      }
|
r\t        |
«      }|j                  r*t        |j                  «      t        |j                  «      fnd}|j                  |j                  |fS y)aœ  
    Try to retrieve proxy host and port from environment
    if not provided in options.
    Result is (proxy_host, proxy_port, proxy_auth).
    proxy_auth is tuple of username and password
    of proxy authentication information.

    Parameters
    ----------
    hostname: str
        Websocket server name.
    is_secure: bool
        Is the connection secure? (wss) looks for "https_proxy" in env
        instead of "http_proxy"
    proxy_host: str
        http proxy host name.
    proxy_port: str or int
        http proxy port.
    no_proxy: list
        Whitelisted host names that don't use the proxy.
    proxy_auth: tuple
        HTTP proxy auth information. Tuple of username and password. Default is None.
    proxy_type: str
        Specify the proxy protocol (http, socks4, socks4a, socks5, socks5h). Default is "http".
        Use socks4a or socks5h if you want to send DNS requests through the proxy.
    )Nr   Nz+Cannot use port 0 when proxy_host specifiedÚhttps_proxyÚ
http_proxyr7   r8   N)rG   r   r<   r=   r>   Úupperr?   r   Úusernamer   Úpasswordr   r   )r   r   rH   rI   rJ   r4   rK   r   ÚauthÚenv_keyÚvalueÚproxys               r   r	   r	   „   sÒ   € ôF ˜ 8Ô,ØáÙÜ)Ð*WÓXÐXØˆØˆØ˜4 Ð%Ð%á(‰m¨l€GÜ�J‰J�N‰N˜7¤B§J¡J§N¡N°7·=±=³?ÀBÓ$GÓH×PÑPØˆRó€Eñ Ü˜“ˆð �~Š~ô �U—^‘^Ó$¤g¨e¯n©nÓ&=Ñ>àð 	ð
 �~‰~˜uŸz™z¨4Ð/Ð/àr   )Nr   NNr   )r<   r#   r/   Útypingr   Úurllib.parser   r   Ú_exceptionsr   Ú__all__ÚstrÚtupler   r@   Úboolr&   r+   r3   ÚlistrG   r)   r	   © r   r   ú<module>r_      s  ðÛ 	Û Û Ý ß *Ý 0ðð& Ð(Ð
)€ð+/�3ð +/˜5ó +/ð\ % kÐ2Ð ð˜ð  ó ð ð ¨ó ð'˜sð '¨ð '°ó 'ð ð ¨x¸©~ð À$ó ð< !%ØØ"&Ø#Øñ:Øð:àð:ð ˜‘ð:ð ð	:ð
 ˜‘ð:ð �t‰nð:ð ð:ð ô:r   