
    }j7                    x   U 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m	Z	 ddl
mZ ddlmZ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mZ dd
lmZmZ ddlm Z m!Z! e e"d       e# e$e% ejL                  dejN                        dd             Z(e(dk7  r)de(cxk  rdk  sn ejN                   de_)         e"d      d dl*Zd dl+m,Z,m-Z-  G d dej\                        Z/ G d de      Z0 edddd       edddd       edddd       edd dd       edd!dd       edd"dd       edd#dd       ed$ddd       ed$d dd      d%	 edd&dd       edd'd(d)       edd*d(d)       ed+d,d(d)       ed+d-d.d-       ed+d/d(d0       ed+d1d(d      d2 edd3d(d)       edd4d(d)      d5 ed+d6d(d7       ed+d6d.d6      d8 edd9d(d)       edd9dd)       edd:d(d7       ed;d:d(d)      d<d= ed;d>d(d)      i ed?d@d(d)       ed+dAd(d7       ed+dAd.dA       eddBd(d7      dC ed+dDd(dE       ed+dDd.dD      dF eddGd(dE       ed+dHd(dE      dI eddJd(dE       eddKd(dE       ed;dLd(dE       ed;dMd(dE      dNdO
Z1dPe2dQ<   dRdSdTdUdVdWdXZ3 edd:d(d7       eddBd(d7      hZ4e G dY dZee	             Z5 ee5      d[        Z6y)\    )annotationsN   )InstanceStoreMixin   )select_proxy)FeaturesRequestResponseregister_preferenceregister_rh)CertificateVerifyError	HTTPErrorIncompleteRead
ProxyErrorSSLErrorTransportError)ImpersonateRequestHandlerImpersonateTarget)	curl_cfficertifi)int_or_noneversion_tuplezcurl_cffi is not installedz[^\d]+   )r      
   r   r   )r      z (unsupported)zFOnly curl_cffi versions 0.5.10 and 0.10.x through 0.15.x are supported)	CurlECodeCurlOptc                  4     e Zd ZddZd ZddZ fdZ xZS )CurlCFFIResponseReaderc                X    || _         |j                         | _        d| _        d| _        y )N    r   )	_responseiter_content	_iterator_buffer
bytes_read)selfresponses     N/root/.hermes/venv/lib/python3.12/site-packages/yt_dlp/networking/_curlcffi.py__init__zCurlCFFIResponseReader.__init__-   s'    !!..0r#   c                     y)NT )r)   s    r+   readablezCurlCFFIResponseReader.readable3   s    r#   c                l   d}	 | j                   r|t        | j                        |k  r{t        | j                   d       }|d | _         n[| xj                  |z  c_        | xj                  t        |      z  c_        | j                   r|bt        | j                        |k  r{|t        | j                        }| j                  d | }| j                  |d  | _        | j                   s| j                  s| j                          d}||r| j                          S S # |r| j                          w w xY w)NTF)r&   lenr'   nextr(   close)r)   sizeexception_raisedchunkdatas        r+   readzCurlCFFIResponseReader.read6   s    	..dlc$,,6G$6NT^^T2=%)DN%3u:- ..dlc$,,6G$6N |4<<(<<&D<<.DL >>$,,

$

  

  s   BD D %A%D D3c                |    | j                   s!| j                  j                          d| _        t        | 	          y )Nr#   )closedr$   r3   r'   super)r)   	__class__s    r+   r3   zCurlCFFIResponseReader.closeP   s*    {{NN  "DLr#   r*   zcurl_cffi.requests.ResponseN)__name__
__module____qualname__r,   r/   r8   r3   __classcell__r<   s   @r+   r!   r!   ,   s    4 r#   r!   c                  4     e Zd ZU ded<   d fdZddZ xZS )CurlCFFIResponseAdapterr!   fpc                    t         |   t        |      |j                  |j                  |j
                  |j                         y )N)rF   headersurlstatusreason)r;   r,   r!   rH   rI   status_coderK   )r)   r*   r<   s     r+   r,   z CurlCFFIResponseAdapter.__init__Z   s=    %h/$$''?? 	 	$r#   c                0   	 | j                   j                  |      }| j                   j                  r| j                          |S # t        j
                  j                  j                  $ r}|j                  t        j                  k(  rz|j                  xr. t        |j                  j                  j                  d            }t        | j                   j                   ||| j                   j                   z
  nd |      |t#        |      |d }~ww xY w)NzContent-Length)partialexpectedcauserP   )rF   r8   r:   r3   r   requestserrorsRequestsErrorcoder   PARTIAL_FILEr*   r   rH   getr   r(   r   )r)   amtresecontent_lengths        r+   r8   zCurlCFFIResponseAdapter.readb   s    	1'',,s#Cww~~

J!!((66 	1vv///!"!eAJJ<N<N<R<RSc<d0e$ GG..DRD^^dgg.@.@@dh #$$ !q)q0	1s   AA 'D,B$DDr=   r>   )r?   r@   rA   __annotations__r,   r8   rB   rC   s   @r+   rE   rE   W   s    $1r#   rE   chrome99windows10android12100101104107110edge)	chrome99chrome99_android	chrome100	chrome101	chrome104	chrome107	chrome110edge99edge101116119macos14120safariz17.0z17.2iosz15.311z15.5)	chrome116	chrome119	chrome120	safari170safari172_ios	safari153	safari155123124)	chrome123	chrome124z18.015)	safari180safari180_ios131133firefox)	chrome131chrome131_android
chrome133a
firefox133
firefox135135torz14.5z18.4136)tor145	safari184safari184_ios	chrome136z26.026)	safari260safari260_ios142z26.0.1)	chrome142
safari2601145146144147)	chrome145	chrome146
firefox144
firefox147)
)r   r   )r      )r      )r      r   	   r   r      )r      )r      )r      z3dict[tuple[int, ...], dict[str, ImpersonateTarget]]BROWSER_TARGETS
safari15_3
safari15_5
safari17_0safari17_2_ios
safari18_0safari18_0_ios)r   r   r}   r~   r   r   c                     e Zd ZdZdZej                  ej                  fZdZ	 e
 eej                  j                  d ej!                         D              d d            j!                         D  ci c]a  \  }}|t"        dk\  r|nOt"        d	k\  rt$        j'                  ||      n0t(        j*                  j,                  t$        j'                  ||         c c}}}}}} Zdd
ZfdZdfdZddZxZS c c}}}}}} w )
CurlCFFIRHr   )httphttps)r   r   socks4socks4asocks5socks5hc              #  T   K   | ]   \  }}t         |k\  r|j                          " y wr>   )curl_cffi_versionitems).0versiontargetss      r+   	<genexpr>zCurlCFFIRH.<genexpr>   s,      H
  G+ MMOH
s   &(c                    | d   t         v| d   j                  dvdj                  | d   j                        t	        | d   j
                  xs d      | d   j                  fS )Nr   )rx   ra   )r   rh   r   rw   r]   0)_DEPRIORITIZED_TARGETSosindexclientr   r   )xs    r+   <lambda>zCurlCFFIRH.<lambda>   s]    aD..aDGG--:@@1M!A$,,-#.aDGG
 r#   T)keyreverser   r   c                B    t         j                  j                  |      S )N)cookies)r   rR   Session)r)   	cookiejars     r+   _create_instancezCurlCFFIRH._create_instance   s    !!))))<<r#   c                    t         |   |       |j                  dd        |j                  dd        |j                  dd        |j                  dd        y )Nimpersonater   timeout
legacy_ssl)r;   _check_extensionspop)r)   
extensionsr<   s     r+   r   zCurlCFFIRH._check_extensions   sJ    !*-}d+{D)y$' 	|T*r#   c                    | j                  |      }	 t        | 	  |      }||j
                  d<   |S # t        $ r}||j                  j
                  d<    d }~ww xY w)Nr   )_get_request_targetr;   sendr   r*   r   )r)   requesttargetr*   rZ   r<   s        r+   r   zCurlCFFIRH.send   sf    ))'2	w|G,H .4M*	  	39AJJ!!-0	s   4 	AAAc                N
   d}| j                  d|j                  vr| j                  |      nd       }| j                  r*|j                  j                  t        j                  d       | j                  |      }d|v r?|j                  j                  t        j                  |d          |j                  dd        t        |j                  |      }|r6|j                  j                  t        j                  |       t        j                  j!                  |j                        j"                  j%                         }|dk7  r*|j                  j                  t        j&                  d       |j                  j                  t        j(                  t+        j,                                | j.                  sT|j                  j                  t        j0                  d       |j                  j                  t        j2                  d       | j5                  |      }| j6                  r|j                  j                  t        j8                  | j6                  d	          | j6                  j;                  d
      }| j6                  j;                  d      }	|r*|j                  j                  t        j<                  |       |	r*|j                  j                  t        j>                  |	       | jA                  |      }
|j                  j                  t        jB                  d       |j                  j                  t        jD                  tG        jH                  |
             	 |jK                  |jL                  |j                  ||jN                  | j.                  d|
|
f| jP                  j;                  | jS                  |            | jT                  d
      }tw        |      }d|jx                  cxk  rdk  sn t{        ||      |S # tV        jX                  jZ                  j\                  $ r}|j^                  t`        jb                  k(  rte        |      ||j^                  t`        jf                  k(  rti        |      ||j^                  t`        jj                  k(  rd}|jl                  }na|j^                  t`        j                  k(  s*|j^                  t`        jn                  k(  rdtq        |      v rts        |      |tu        |      |Y d }~?d }~ww xY w)NFcookie)r   r   no)proxiesr   r   client_certificateclient_certificate_keyclient_certificate_passwordr   T)
methodrI   rH   r7   verifymax_redirectsr   r   	interfacestreamrQ   CONNECT   i,  )redirect_loop)>_get_instancerH   _get_cookiejarverbosecurlsetoptr   VERBOSE_get_proxiesNOPROXYr   r   rI   PROXYurllibparseurlparseschemelowerHTTPPROXYTUNNELPROXY_CAINFOr   wherer   PROXY_SSL_VERIFYPEERPROXY_SSL_VERIFYHOST_get_impersonate_headers_client_certSSLCERTrW   SSLKEY	KEYPASSWD_calculate_timeoutLOW_SPEED_LIMITLOW_SPEED_TIMEmathceilr   r   r7   !_SUPPORTED_IMPERSONATE_TARGET_MAPr   source_addressr   rR   rS   rT   rU   r   PEER_FAILED_VERIFICATIONr   SSL_CONNECT_ERRORr   TOO_MANY_REDIRECTSr*   
RECV_ERRORstrr   r   rE   rJ   r   )r)   r   max_redirects_exceededsessionr   proxyr   rH   r   r   r   curl_responserZ   r*   s                 r+   _sendzCurlCFFIRH._send   s   !&.2.@.@6>goo6Ud))'2[_ /A /a <<LL3##G,7?LL?KKd# W[[':LLu5\\**7;;7>>DDFF ##G$;$;Q? LL 4 4gmmoF;;##G$@$@!D##G$@$@!D//8LL1B1BCW1XY%)%6%6%:%:;S%T"*.*;*;*?*?@]*^'%##GNN4JK*##G$5$57RS))'2 	G33Q7G22DIIg4FG	5#OO~~KK\\{{ '* BBFF,,W57-- , M@ +=9hoo++H4JKK1 !!((66 	5vv;;;,151<9666Q'Q.9777)-& !

 )//)FFi222yCF7J q)q0$1-14 	5s   )A7P 'T$8C!TT$r>   )r   r	   returnr
   )r   r	   )r?   r@   rA   RH_NAME_SUPPORTED_URL_SCHEMESr   NO_PROXY	ALL_PROXY_SUPPORTED_FEATURES_SUPPORTED_PROXY_SCHEMESdictsorted	itertoolschainfrom_iterabler   r   r   _TARGETS_COMPAT_LOOKUPrW   r   rR   BrowserTyper  r   r   r   r  rB   )r   namer   r   r$  r   r<   s   000000@r+   r   r      s    G.#,,h.@.@AZ #6)//*G*G H
$3$9$9$;H
 +

 $   %')) )
 dF	 	%0D;LPV;V'++D$7##//0F0J0J4QU0VW	X)%.=+[[)s   9A&C>r   c                     y)Nir.   )rhr   s     r+   curl_cffi_preferencer)  X  s    r#   )7
__future__r   ior!  r
  reurllib.parser   _helperr   utils.networkingr   commonr   r	   r
   r   r   
exceptionsr   r   r   r   r   r   r   r   r   dependenciesr   r   utilsr   r   ImportErrortuplemapintsplit__version__r   _yt_dlp__versioncurl_cffi.requestscurl_cffi.constr   r   IOBaser!   rE   r   r\   r$  r   r   r)  r.   r#   r+   <module>r>     s   " 	   	  ' +   F - .
2
33 #c8288Iy7L7L#Mbq#QRS 
"76G+Q'+Q$-$9$9#:.!II
^
__  .(RYY (V1h 1> &hiF-hiN&x	4H&x	4H&x	4H&x	4H&x	4H#FD)TB$VUItD
 'x	4H&xF&xF&x$G*8VUFK 'x$G&x$G
 'xF&xF
 'x$G*8VUFK
 'xF.x	4P'%$G'	5'4H	 	'	5'4H $E67DA&x$G*8VUFK&xF	 'x$G*8VUFK
 'xF'(GTJ
 'xF&xF (	5'4H'	5'4Hm>HD >F %%  hw5hw5  M*,> M M` Z  !r#   