Ë
    š„j#'  ã                  ó4  — d dl m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 ddlmZmZ ej&                  rd dlmZ dd	lmZ ddd
„Zd„ Zd„ Zd„ Z	 	 	 	 	 	 dd„Z G d„ d«      Zdd„Zd„ Zd„ Z d„ Z!ejD                  dfe dœd„Z#y)é    )ÚannotationsNé   )ÚRequestErroré   )Úcertifi)Ú	ProxyTypeÚsockssocket)ÚIterable)ÚHTTPHeaderDictc                ó>  — t         r'|r%| j                  t        j                  «       ¬«       y 	 | j                  «        y # t        j
                  $ rI t        j                  dk(  r#t        t        d«      rdD ]  }t        | |«       Œ | j                  «        Y y w xY w)N)ÚcafileÚwin32Úenum_certificates)ÚCAÚROOT)r   Úload_verify_locationsÚwhereÚload_default_certsÚsslÚSSLErrorÚsysÚplatformÚhasattrÚssl_load_windows_store_certsÚset_default_verify_paths)ÚcontextÚuse_certifiÚ	storenames      úP/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/networking/_helper.pyÚssl_load_certsr       s�   € Ý‘;Ø×%Ñ%¬W¯]©]«_Ð%Õ=ð
	/Ø×&Ñ&Õ(øô �|‰|ò 	/ä�|‰|˜wÒ&¬7´3Ð8KÔ+LØ!/ò E�IÜ0°¸)ÕDðEà×,Ñ,Ö.ð	/ús   ¯A  Á ABÂBc                ó†  — 	 t        j                  |«      D ���cg c]7  \  }}}|dk(  r,|du s&t         j                  j                  j                  |v r|‘Œ9 }}}}|D ]@  }t        j                  t         j                  «      5  | j                  |¬«       d d d «       ŒB y c c}}}w # t
        $ r Y y w xY w# 1 sw Y   ŒcxY w)NÚx509_asnT)Úcadata)
r   r   ÚPurposeÚSERVER_AUTHÚoidÚPermissionErrorÚ
contextlibÚsuppressr   r   )Ússl_contextr   ÚcertÚencodingÚtrustÚcertss         r   r   r   (   sÌ   € ðÜ36×3HÑ3HÈÓ3S÷ Mð MÑ/˜$ ¨%Ø 
Ò*Ø˜d‘]¤c§k¡k×&=Ñ&=×&AÑ&AÀUÑ&Jò ð Mˆò Mð
 ò ;ˆÜ× Ñ ¤§¡Ó.ñ 	;Ø×-Ñ-°TÐ-Ô:÷	;ð 	;ñ;ùôMøô ò Ùðú÷	;ð 	;ús.   ‚B( ›<B!ÁB( ÂB7Â!B( Â(	B4Â3B4Â7C 	c                ó”  — t         j                  j                  | «      }|j                  j	                  «       dk(  rt
        j                  }d}n¶|j                  j	                  «       dk(  rt
        j                  }d}n†|j                  j	                  «       dk(  rt
        j                  }d}nV|j                  j	                  «       dk(  rt
        j                  }d}n&t        d|j                  j	                  «       › �«      ‚d„ }||j                  |j                  xs d	| ||j                  «       ||j                  «      d
œS )NÚsocks5FÚsocks5hTÚsocks4Úsocks4azUnknown SOCKS proxy version: c                óH   — | s| S t         j                  j                  | «      S ©N)ÚurllibÚparseÚunquote_plus)Úss    r   Úunquote_if_non_emptyz3make_socks_proxy_opts.<locals>.unquote_if_non_emptyF   s   € ÙØˆHÜ�|‰|×(Ñ(¨Ó+Ð+ó    i8  )Ú	proxytypeÚaddrÚportÚrdnsÚusernameÚpassword)r6   r7   ÚurlparseÚschemeÚlowerr   ÚSOCKS5ÚSOCKS4ÚSOCKS4AÚ
ValueErrorÚhostnamer>   r@   rA   )Úsocks_proxyÚurl_componentsÚ
socks_typer?   r:   s        r   Úmake_socks_proxy_optsrM   5   s  € Ü—\‘\×*Ñ*¨;Ó7€NØ×Ñ×"Ñ"Ó$¨Ò0Ü×%Ñ%ˆ
Ø‰Ø	×	Ñ	×	$Ñ	$Ó	&¨)Ò	3Ü×%Ñ%ˆ
Ø‰Ø	×	Ñ	×	$Ñ	$Ó	&¨(Ò	2Ü×%Ñ%ˆ
Ø‰Ø	×	Ñ	×	$Ñ	$Ó	&¨)Ò	3Ü×&Ñ&ˆ
Ø‰äÐ8¸×9NÑ9N×9TÑ9TÓ9VÐ8WÐXÓYÐYò,ð
  Ø×'Ñ'Ø×#Ñ#Ò+ tØÙ(¨×)@Ñ)@ÓAÙ(¨×)@Ñ)@ÓAñð r;   c                ó4   — |dk(  r| dk7  rd} |dv r| dk(  rd} | S )z Unified redirect method handlingi/  ÚHEADÚGET)i-  i.  ÚPOST© )ÚmethodÚstatuss     r   Úget_redirect_methodrU   T   s2   € ð
 �‚}˜ 6Ò)Øˆð
 �Ñ ¨&Ò 0ØˆØ€Mr;   c                ó\  — t        j                  t         j                  «      }| |_        | rt         j                  nt         j
                  |_        t        |d«      r(t        j                  j                  d«      xs d |_        t        j                  t        «      5  |j                  dg«       d d d «       | rt!        ||«       |r'|xj"                  dz  c_        |j%                  d«       nbt         j&                  dk\  rOt         j(                  j+                  d«      s0|j%                  d«       t         j,                  j.                  |_        |r)	 |j3                  |||¬	«       t9        |dd «      �d|_        |S # 1 sw Y   ŒÏxY w# t         j4                  $ r t7        d
«      ‚w xY w)NÚkeylog_filenameÚSSLKEYLOGFILEzhttp/1.1é   ÚDEFAULT)r   r   r   ÚLibreSSLzX@SECLEVEL=2:ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES:DHE+AES:!aNULL:!eNULL:!aDSS:!SHA1:!AESCCM)ÚkeyfilerA   z!Unable to load client certificateÚpost_handshake_authT)r   Ú
SSLContextÚPROTOCOL_TLS_CLIENTÚcheck_hostnameÚCERT_REQUIREDÚ	CERT_NONEÚverify_moder   ÚosÚenvironÚgetrW   r(   r)   ÚNotImplementedErrorÚset_alpn_protocolsr    ÚoptionsÚset_ciphersÚOPENSSL_VERSION_INFOÚOPENSSL_VERSIONÚ
startswithÚ
TLSVersionÚTLSv1_2Úminimum_versionÚload_cert_chainr   r   Úgetattrr]   )ÚverifyÚclient_certificateÚclient_certificate_keyÚclient_certificate_passwordÚlegacy_supportr   r   s          r   Úmake_ssl_contextrx   d   sl  € ô �n‰nœS×4Ñ4Ó5€GØ#€GÔÙ/5œ#×+Ò+¼3¿=¹=€GÔäˆwÐ)Ô*Ü"$§*¡*§.¡.°Ó"AÒ"IÀTˆÔô
 
×	Ñ	Ô0Ó	1ñ 1Ø×"Ñ" J <Ô0÷1áÜ�w Ô,áØ�Š˜1Ñ�Ø×Ñ˜IÕ&ä	×	!Ñ	! YÒ	.´s×7JÑ7J×7UÑ7UÐV`Ô7að 	×ÑØfô	hä"%§.¡.×"8Ñ"8ˆÔáð	DØ×#Ñ#Ø"Ð,BØ4ð $ô 6ô �7Ð1°4Ó8ÐDØ*.ˆGÔ'Ø€N÷I1ð 1ûô> �|‰|ò 	DÜÐBÓCÐCð	Dús   ÂF ÅF Æ F	ÆF+c                  ó@   ‡ — e Zd Zˆ fd„Zed„ «       Zd„ Zd„ Zd„ Zˆ xZ	S )ÚInstanceStoreMixinc                ó2   •— g | _         t        ‰| �  di |¤Ž y ©NrR   )Ú_InstanceStoreMixin__instancesÚsuperÚ__init__)ÚselfÚkwargsÚ	__class__s     €r   r   zInstanceStoreMixin.__init__ž   s   ø€ ØˆÔÜ‰ÑÑ"˜6Ó"r;   c                 ó   — t         ‚r5   )rg   )r�   s    r   Ú_create_instancez#InstanceStoreMixin._create_instance¢   s   € ä!Ð!r;   c                óž   — | j                   D ]  \  }}||k(  sŒ|c S   | j                  di |¤Ž}| j                   j                  ||f«       |S r|   )r}   r„   Úappend)r€   r�   ÚkeyÚinstances       r   Ú_get_instancez InstanceStoreMixin._get_instance¦   s\   € Ø!×-Ñ-ò 	 ‰MˆC�Ø�f‹}Ø’ð	 ð )�4×(Ñ(Ñ2¨6Ñ2ˆØ×Ñ×Ñ ¨Ð 2Ô3Øˆr;   c                óR   — t        t        |dd «      «      r|j                  «        y y )NÚclose)Úcallablerr   r‹   )r€   rˆ   s     r   Ú_close_instancez"InstanceStoreMixin._close_instance¯   s"   € Ü”G˜H g¨tÓ4Ô5Ø�N‰NÕð 6r;   c                ó‚   — | j                   D ]  \  }}| j                  |«       Œ | j                   j                  «        y r5   )r}   r�   Úclear)r€   Ú_rˆ   s      r   Ú_clear_instancesz#InstanceStoreMixin._clear_instances³   s;   € Ø×+Ñ+ò 	+‰KˆAˆxØ× Ñ  Õ*ð	+à×Ñ×ÑÕ r;   )
Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr„   r‰   r�   r‘   Ú__classcell__)r‚   s   @r   rz   rz   �   s+   ø„ ô#ð ñ"ó ð"òòö!r;   rz   c                ó>   — d| vrdj                  |«      xs d| d<   y y )NzAccept-Encodingz, Úidentity)Újoin)ÚheadersÚsupported_encodingss     r   Úadd_accept_encoding_headerrœ   ¹   s)   € Ø Ñ'Ø%)§Y¡YÐ/BÓ%CÒ%QÀzˆÐ!Ò"ð (r;   c                óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                óh   •— 	  ‰| g|¢­i |¤ŽS # t         $ r}|j                  €| |_        ‚ d }~ww xY wr5   )r   Úhandler)r€   Úargsr�   ÚeÚfuncs       €r   Úwrapperz$wrap_request_errors.<locals>.wrapper¿   sA   ø€ ð	Ù˜Ð.˜tÒ. vÑ.Ð.øÜò 	Ø�y‰yÐ Ø �”	Øûð	ús   ƒ �	1˜,¬1)Ú	functoolsÚwraps)r¢   r£   s   ` r   Úwrap_request_errorsr¦   ¾   s%   ø€ Ü‡_�_�TÓóó ðð €Nr;   c                ó  — | \  }}}}}t        j                   |||«      }	 |t         j                  ur|j                  |«       |r|j                  |«       |j	                  |«       |S # t
        $ r |j                  «        ‚ w xY wr5   )ÚsocketÚ_GLOBAL_DEFAULT_TIMEOUTÚ
settimeoutÚbindÚconnectÚOSErrorr‹   )	Úip_addrÚtimeoutÚsource_addressÚafÚsocktypeÚprotoÚ
_canonnameÚsaÚsocks	            r   Ú_socket_connectr·   Ê   s~   € Ø*1Ñ'€Bˆ�%˜ RÜ�=‰=˜˜X uÓ-€Dð	Øœ&×8Ñ8Ñ8Ø�O‰O˜GÔ$ÙØ�I‰I�nÔ%Ø�‰�RÔØˆøÜò Ø�
‰
ŒØðús   ¡AA* Á*Bc                ót  — |\  }}}}}	t        |||«      }
	 |j                  «       }|j                  |	d   |	d   dœ«        |
j                  di |¤Ž |t        j
                  ur|
j                  |«       |r|
j                  |«       |
j                  | «       |
S # t        $ r |
j                  «        ‚ w xY w)Nr   r   )r=   r>   rR   )r	   ÚcopyÚupdateÚsetproxyr¨   r©   rª   r«   r¬   r­   r‹   )Ú	dest_addrÚ
proxy_argsÚproxy_ip_addrr¯   r°   r±   r²   r³   r´   rµ   r¶   Úconnect_proxy_argss               r   Úcreate_socks_proxy_socketrÀ   Ù   s´   € Ø*7Ñ'€Bˆ�%˜ RÜ�r˜8 UÓ+€DðØ'Ÿ_™_Ó.ÐØ×!Ñ!¨2¨a©5¸"¸Q¹%Ñ"@ÔAØˆ�‰Ñ+Ð*Ò+Øœ&×8Ñ8Ñ8Ø�O‰O˜GÔ$ÙØ�I‰I�nÔ%Ø�‰�YÔØˆøÜò Ø�
‰
ŒØðús   —BB ÂB7)Ú_create_socket_funcc               óÌ  — | \  }}t        j                  ||dt         j                  «      }|st        d«      ‚|�kd|d   vrt         j                  nt         j
                  }|D �cg c]  }|d   |k(  sŒ|‘Œ }}|s*t        d|t         j                  k(  rdnd› d|d   › d�«      ‚d }	|D ]  }
	  ||
||«      }d }	|c S  	 |	‚c c}w # t        $ r}|}	Y d }~Œ-d }~ww xY w# d }	w xY w)	Nr   z!getaddrinfo returns an empty listú:zNo remote IPvrY   é   z- addresses available for connect. Can't use "z" as source address)r¨   ÚgetaddrinfoÚSOCK_STREAMr­   ÚAF_INETÚAF_INET6)Úaddressr¯   r°   rÁ   Úhostr>   Úip_addrsr±   r=   Úerrr®   r¶   r¡   s                r   Úcreate_connectionrÍ   ë   s  € ð �J€Dˆ$Ü×!Ñ! $¨¨a´×1CÑ1CÓD€HÙÜÐ9Ó:Ð:ØÐ!Ø"¨.¸Ñ*;Ñ;ŒV�^Š^ÄÇÁˆØ%-Ö?˜T°°a±¸B³’DÐ?ˆÐ?ÙÜØ R¬6¯>©>Ò%9¡¸qÐAð BØ-¨aÑ0Ð1Ð1DðFóGð Gð €CØò ˆð	Ù& w°¸ÓHˆDð ˆCØŠKððØˆ	ùò% @øô ò 	Ø�Cûð	ûð ‰ús0   Á&CÁ4CÂ.CÃ C Ã	CÃCÃCÃC#)T)r   zssl.SSLContext)TNNNFT)rš   r   r›   zIterable[str])$Ú
__future__r   r(   r¤   rd   r¨   r   r   ÚtypingÚurllib.parser6   Úurllib.requestÚ
exceptionsr   Údependenciesr   Úsocksr   r	   ÚTYPE_CHECKINGÚcollections.abcr
   Úutils.networkingr   r    r   rM   rU   rx   rz   rœ   r¦   r·   rÀ   r©   rÍ   rR   r;   r   ú<module>rØ      s¥   ðÝ "ã Û Û 	Û Û 
Û 
Û Û Û å $Ý "ß *à	×ÒÝ(å1ô/ò"
;òò>ð" ØØØ $ØØó6÷r!ñ !ó8Rò
	òòð( ×*Ñ*Øð&ð
 (õ&r;   