Ë
    æU.jNE  ã            
      ó>  — 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Zd dlZd dl	m
Z
 ddlmZmZ ddlmZmZ dZdZdZdZd	gZeeeeeef   Zd
D � �ci c]  \  } }|  ee|d«      “Œ c}} Z	 	 	 	 d(d„Zej:                  rd dlmZ d dlm Z  ddl!mZ"  G d„ de d¬«      Z#i Z$de%d<   	 d dlZd dlm&Z&mZm'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/mZm0Z0 e*Z1er
 ee)«      sdZdD ]  Z2	  ee0e2«      e$ eede2› �«      <   Œ ddl!mZ ejj                  de6df   Z7d)d„Z8d*d„Z9d+d „Z:	 	 	 	 	 	 	 d,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-d!„Z;ejx                  	 	 	 	 	 	 	 	 	 	 	 	 d.	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/d"„«       Z=ejx                  	 	 	 	 	 	 	 	 	 	 	 	 d.	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d0d#„«       Z=	 	 	 	 	 	 	 	 	 	 	 	 d1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d0d$„Z=d2d%„Z>d3d&„Z?	 d4	 	 	 	 	 	 	 	 	 d5d'„Z@yc c}} w # e3$ r Y �Œ#w xY w# e4$ r dZ'dZ(dZ.dZ/dxZ1Z*dZ+dZ,dZ-Y �Œw xY w)6é    )ÚannotationsN)Ú	unhexlifyé   )ÚProxySchemeUnsupportedÚSSLErroré   )Ú_BRACELESS_IPV6_ADDRZ_REÚ_IPV4_REFzhttp/1.1))é    Úmd5)é(   Úsha1)é@   Úsha256c                ó(   — | j                  d«      }|S )NzOpenSSL )Ú
startswith)Úopenssl_versionÚ
is_openssls     úSC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\urllib3/util/ssl_.pyÚ(_is_has_never_check_common_name_reliabler      s   € ð
 !×+Ñ+¨JÓ7€JàÐó    )Ú
VerifyMode)Ú	TypedDict)ÚSSLTransportc                  ó,   — e Zd ZU ded<   ded<   ded<   y)Ú_TYPE_PEER_CERT_RET_DICTztuple[tuple[str, str], ...]ÚsubjectAltNamez'tuple[tuple[tuple[str, str], ...], ...]ÚsubjectÚstrÚserialNumberN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r   r   r   r   .   s   … Ø3Ó3Ø8Ó8ØÔr   r   )Útotalzdict[int, int]Ú_SSL_VERSION_TO_TLS_VERSION)ÚCERT_REQUIREDÚHAS_NEVER_CHECK_COMMON_NAMEÚOP_NO_COMPRESSIONÚOP_NO_TICKETÚOPENSSL_VERSIONÚPROTOCOL_TLSÚPROTOCOL_TLS_CLIENTÚVERIFY_X509_PARTIAL_CHAINÚVERIFY_X509_STRICTÚOP_NO_SSLv2ÚOP_NO_SSLv3Ú
SSLContextÚ
TLSVersion)ÚTLSv1ÚTLSv1_1ÚTLSv1_2Ú	PROTOCOL_i   i @  i   i   é   i   r   c                ó´  — | €t        d«      ‚|j                  dd«      j                  «       }t        |«      }|t        vrt        d|› �«      ‚t        j                  |«      }|€t        d|› �«      ‚t        |j                  «       «      } || «      j                  «       }t        j                  ||«      s t        d|› d|j                  «       › d	�«      ‚y)
zá
    Checks if given fingerprint matches the supplied certificate.

    :param cert:
        Certificate as bytes object.
    :param fingerprint:
        Fingerprint as string of hexdigits, can be interspersed by colons.
    NzNo certificate for the peer.Ú:Ú zFingerprint of invalid length: zAHash function implementation unavailable for fingerprint length: z&Fingerprints did not match. Expected "z", got "Ú")r   ÚreplaceÚlowerÚlenÚHASHFUNC_MAPÚgetr   ÚencodeÚdigestÚhmacÚcompare_digestÚhex)ÚcertÚfingerprintÚdigest_lengthÚhashfuncÚfingerprint_bytesÚcert_digests         r   Úassert_fingerprintrN   k   sé   € ð €|ÜÐ5Ó6Ð6à×%Ñ% c¨2Ó.×4Ñ4Ó6€KÜ˜Ó$€MØœLÑ(ÜÐ8¸¸ÐFÓGÐGÜ×Ñ Ó.€HØÐÜØOÐP]ÈÐ_ó
ð 	
ô
 " +×"4Ñ"4Ó"6Ó7Ðá˜4“.×'Ñ'Ó)€Kä×Ñ˜{Ð,=Ô>ÜØ4°[°MÀÈ+Ï/É/ÓJ[ÐI\Ð\]Ð^ó
ð 	
ð ?r   c                ó†   — | €t         S t        | t        «      r(t        t        | d«      }|€t        t        d| z   «      }|S | S )aë  
    Resolves the argument to a numeric constant, which can be passed to
    the wrap_socket function/method from the ssl module.
    Defaults to :data:`ssl.CERT_REQUIRED`.
    If given a string it is assumed to be the name of the constant in the
    :mod:`ssl` module or its abbreviation.
    (So you can specify `REQUIRED` instead of `CERT_REQUIRED`.
    If it's neither `None` nor a string we assume it is already the numeric
    constant which can directly be passed to wrap_socket.
    NÚCERT_)r(   Ú
isinstancer   ÚgetattrÚssl©Ú	candidateÚress     r   Úresolve_cert_reqsrW   �   sI   € ð ÐÜÐä�)œSÔ!Ü”c˜9 dÓ+ˆØˆ;Üœ#˜w¨Ñ2Ó3ˆCØˆ
àÐr   c                ó¶   — | €t         S t        | t        «      r@t        t        | d«      }|€t        t        d| z   «      }t        j                  t        |«      S | S )z 
    like resolve_cert_reqs
    Nr8   )r-   rQ   r   rR   rS   ÚtypingÚcastÚintrT   s     r   Úresolve_ssl_versionr\   ¤   sU   € ð ÐÜÐä�)œSÔ!Ü”c˜9 dÓ+ˆØˆ;Üœ#˜{¨YÑ6Ó7ˆCÜ�{‰{œ3 Ó$Ð$àÐr   c                ó4  — t         €t        d«      ‚| dt        t        fvrs|€|�t	        d«      ‚t
        j                  | t        j                  «      }t
        j                  | t        j                  «      }t        j                  dt        d¬«       t        t        «      }|�||_        nt        j                  |_        |�||_        |r|j!                  |«       |€t"        j$                  n|}|€&d}|t&        z  }|t(        z  }|t*        z  }|t,        z  }|xj.                  |z  c_        |€'d}t0        j2                  dk\  r|t4        z  }|t6        z  }|xj8                  |z  c_        t;        |d	d«      �d
|_        |t"        j$                  k(  rt>        s||_         d
|_!        nd|_!        ||_         d|_"        dtF        jH                  v r=tF        jJ                  jM                  tF        jH                  j                  d«      «      }nd}|r||_'        |S )a#  Creates and configures an :class:`ssl.SSLContext` instance for use with urllib3.

    :param ssl_version:
        The desired protocol version to use. This will default to
        PROTOCOL_SSLv23 which will negotiate the highest protocol that both
        the server and your installation of OpenSSL support.

        This parameter is deprecated instead use 'ssl_minimum_version'.
    :param ssl_minimum_version:
        The minimum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
    :param ssl_maximum_version:
        The maximum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value.
        Not recommended to set to anything other than 'ssl.TLSVersion.MAXIMUM_SUPPORTED' which is the
        default value.
    :param cert_reqs:
        Whether to require the certificate verification. This defaults to
        ``ssl.CERT_REQUIRED``.
    :param options:
        Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``,
        ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``, and ``ssl.OP_NO_TICKET``.
    :param ciphers:
        Which cipher suites to allow the server to select. Defaults to either system configured
        ciphers if OpenSSL 1.1.1+, otherwise uses a secure default set of ciphers.
    :param verify_flags:
        The flags for certificate verification operations. These default to
        ``ssl.VERIFY_X509_PARTIAL_CHAIN`` and ``ssl.VERIFY_X509_STRICT`` for Python 3.13+.
    :returns:
        Constructed SSLContext object with specified options
    :rtype: SSLContext
    Nz7Can't create an SSLContext object without an ssl modulezZCan't specify both 'ssl_version' and either 'ssl_minimum_version' or 'ssl_maximum_version'zi'ssl_version' option is deprecated and will be removed in urllib3 v3.0. Instead use 'ssl_minimum_version'r   )ÚcategoryÚ
stacklevelr   )é   é   Úpost_handshake_authTFÚSSLKEYLOGFILE)(r3   Ú	TypeErrorr-   r.   Ú
ValueErrorr'   rB   r4   ÚMINIMUM_SUPPORTEDÚMAXIMUM_SUPPORTEDÚwarningsÚwarnÚFutureWarningÚminimum_versionr7   Úmaximum_versionÚset_ciphersrS   r(   r1   r2   r*   r+   ÚoptionsÚsysÚversion_infor/   r0   Úverify_flagsrR   rb   ÚIS_PYOPENSSLÚverify_modeÚcheck_hostnameÚhostname_checks_common_nameÚosÚenvironÚpathÚ
expandvarsÚkeylog_filename)	Ússl_versionÚ	cert_reqsrn   ÚciphersÚssl_minimum_versionÚssl_maximum_versionrq   ÚcontextÚsslkeylogfiles	            r   Úcreate_urllib3_contextr‚   ´   s  € ôN ÐÜÐQÓRÐRð ˜4¤Ô/BÐCÑCð Ð*Ð.AÐ.MÜðAóð ô #>×"AÑ"AØœZ×9Ñ9ó#Ðô #>×"AÑ"AØœZ×9Ñ9ó#Ðô �M‰MðMä&Øõ	ô Ô,Ó-€GØÐ&Ø"5ˆÕä",×"4Ñ"4ˆÔàÐ&Ø"5ˆÔñ Ø×Ñ˜GÔ$ð &/Ð%6”×!Ò!¸I€Ià€Øˆà”;Ñˆà”;Ñˆð 	Ô$Ñ$ˆð
 	”<Ñˆà‡O‚O�wÑ…OàÐØˆô ×Ñ˜wÒ&ØÔ5Ñ5ˆLØÔ.Ñ.ˆLà×Ò˜LÑ(Õô ˆwÐ-¨tÓ4Ð@Ø&*ˆÔ#ð ”C×%Ñ%Ò%­lØ'ˆÔØ!%ˆÕà!&ˆÔØ'ˆÔà*/€GÔ'àœ"Ÿ*™*Ñ$ÜŸ™×*Ñ*¬2¯:©:¯>©>¸/Ó+JÓK‰àˆÙØ"/ˆÔà€Nr   c                 ó   — y ©Nr%   ©ÚsockÚkeyfileÚcertfiler|   Úca_certsÚserver_hostnamer{   r}   Ússl_contextÚca_cert_dirÚkey_passwordÚca_cert_dataÚ
tls_in_tlss                r   Ússl_wrap_socketr�   G  s   € ð r   c                 ó   — y r„   r%   r…   s                r   r�   r�   Y  s   € ð (+r   c                ó¤  — |}|€t        |||¬«      }|s|	s|r	 |j                  ||	|«       n|€t	        |d«      r|j                  «        |r|
€t        |«      rt        d«      ‚|r(|
€|j                  ||«       n|j                  |||
«       |j                  t        «       t        | |||«      }|S # t        $ r}t        |«      |‚d}~ww xY w)a´  
    All arguments except for server_hostname, ssl_context, tls_in_tls, ca_cert_data and
    ca_cert_dir have the same meaning as they do when using
    :func:`ssl.create_default_context`, :meth:`ssl.SSLContext.load_cert_chain`,
    :meth:`ssl.SSLContext.set_ciphers` and :meth:`ssl.SSLContext.wrap_socket`.

    :param server_hostname:
        When SNI is supported, the expected hostname of the certificate
    :param ssl_context:
        A pre-made :class:`SSLContext` object. If none is provided, one will
        be created using :func:`create_urllib3_context`.
    :param ciphers:
        A string of ciphers we wish the client to support.
    :param ca_cert_dir:
        A directory containing CA certificates in multiple separate files, as
        supported by OpenSSL's -CApath flag or the capath argument to
        SSLContext.load_verify_locations().
    :param key_password:
        Optional password if the keyfile is encrypted.
    :param ca_cert_data:
        Optional string containing CA certificates in PEM format suitable for
        passing as the cadata parameter to SSLContext.load_verify_locations()
    :param tls_in_tls:
        Use SSLTransport to wrap the existing socket.
    N)r}   Úload_default_certsz5Client private key is encrypted, password is required)r‚   Úload_verify_locationsÚOSErrorr   Úhasattrr“   Ú_is_key_file_encryptedÚload_cert_chainÚset_alpn_protocolsÚALPN_PROTOCOLSÚ_ssl_wrap_socket_impl)r†   r‡   rˆ   r|   r‰   rŠ   r{   r}   r‹   rŒ   r�   rŽ   r�   r€   ÚeÚssl_socks                   r   r�   r�   k  så   € ðP €GØ€ô )¨°iÈÔQˆá‘;¡,ð	%Ø×)Ñ)¨(°KÀÕNð 
Ð	¤¨Ð2FÔ!Gà×"Ñ"Ô$ñ
 �<Ð'Ô,BÀ7Ô,KÜÐNÓOÐOáØÐØ×#Ñ# H¨gÕ6à×#Ñ# H¨g°|ÔDà×Ñœ~Ô.ä$ T¨7°JÀÓP€HØ€Oøô- ò 	%Ü˜1“+ 1Ð$ûð	%ús   šB5 Â5	CÂ>C
Ã
Cc                ó®   — t        | t        «      r| j                  d«      } t        t	        j
                  | «      xs t        j
                  | «      «      S )zæDetects whether the hostname given is an IPv4 or IPv6 address.
    Also detects IPv6 addresses with Zone IDs.

    :param str hostname: Hostname to examine.
    :return: True if the hostname is an IP address, False otherwise.
    Úascii)rQ   ÚbytesÚdecodeÚboolr
   Úmatchr	   )Úhostnames    r   Úis_ipaddressr¥   µ  sA   € ô �(œEÔ"à—?‘? 7Ó+ˆÜ”—‘˜xÓ(ÒTÔ,D×,JÑ,JÈ8Ó,TÓUÐUr   c                óp   — t        | «      5 }|D ]  }d|v sŒ ddd«       y 	 ddd«       y# 1 sw Y   yxY w)z*Detects if a key file is encrypted or not.Ú	ENCRYPTEDNTF)Úopen)Úkey_fileÚfÚlines      r   r—   r—   Â  s:   € ä	ˆhŒ˜1ÛˆDà˜dÒ"Ø÷	 
ˆÙ÷ 
ð ÷ 
ð ús   Œ
,—,¡,¬5c                ó’   — |r3t         st        d«      ‚t        j                  |«       t        | ||«      S |j                  | |¬«      S )Nz0TLS in TLS requires support for the 'ssl' module)rŠ   )r   r   Ú$_validate_ssl_context_for_tls_in_tlsÚwrap_socket)r†   r‹   r�   rŠ   s       r   r›   r›   Í  sO   € ñ Ýä(ØBóð ô 	×9Ñ9¸+ÔFÜ˜D +¨Ó?Ð?à×"Ñ" 4¸Ð"ÓIÐIr   )r   r   Úreturnr¢   )rH   zbytes | NonerI   r   r¯   ÚNone)rU   úNone | int | strr¯   r   )rU   r±   r¯   r[   )NNNNNNN)r{   ú
int | Noner|   r²   rn   r²   r}   ú
str | Noner~   r²   r   r²   rq   r²   r¯   ússl.SSLContext)............)r†   úsocket.socketr‡   r³   rˆ   r³   r|   r²   r‰   r³   rŠ   r³   r{   r²   r}   r³   r‹   ússl.SSLContext | NonerŒ   r³   r�   r³   rŽ   úNone | str | bytesr�   ztyping.Literal[False]r¯   zssl.SSLSocket)r†   rµ   r‡   r³   rˆ   r³   r|   r²   r‰   r³   rŠ   r³   r{   r²   r}   r³   r‹   r¶   rŒ   r³   r�   r³   rŽ   r·   r�   r¢   r¯   ú ssl.SSLSocket | SSLTransportType)NNNNNNNNNNNF)r¤   zstr | bytesr¯   r¢   )r©   r   r¯   r¢   r„   )
r†   rµ   r‹   r´   r�   r¢   rŠ   r³   r¯   r¸   )AÚ
__future__r   ÚhashlibrE   rv   Úsocketro   rY   rh   Úbinasciir   Ú
exceptionsr   r   Úurlr	   r
   r3   r   r)   rr   rš   Útupler[   r   Ú_TYPE_VERSION_INFOrR   rA   r   ÚTYPE_CHECKINGrS   r   r   ÚssltransportÚSSLTransportTyper   r'   r$   r(   r*   r+   r,   r-   r.   r/   r0   r1   r2   r4   ÚPROTOCOL_SSLv23ÚattrÚAttributeErrorÚImportErrorÚUnionr    Ú_TYPE_PEER_CERT_RETrN   rW   r\   r‚   Úoverloadr�   r¥   r—   r›   )ÚlengthÚ	algorithms   00r   Ú<module>rÍ      sÓ  ðÞ "ã Û Û 	Û Û 
Û Û Ý ç 9ß 3à€
Ø€Ø#Ð Ø€Ø�€à˜3  S¨#¨sÐ2Ñ3Ð ñ
 IôáHÑˆ�	ð ‰G�G˜Y¨Ó-Ñ-ØHò€ðØðà	óð 
×ÒÝÝ å>ô 9°Eõ ð /1Ð ˜^Ó 0ð.Û÷÷ ÷ õ ð  #€Oñ #Ñ+SØô,ð ',Ð#ó 0ˆð	ÙLSØ˜DóMÐ'©°°yÀÀÐ5GÓ(HÒIð 0õ +ð —l‘lÐ#=¸uÀdÐ#JÑKÐ ó
óDó.ð" #Ø ØØØ&*Ø&*Ø#ðPØðPàðPð ðPð ð	Pð
 $ðPð $ðPð ðPð óPðf ‡�ð ØØØØ"%Ø!ØØ),Ø!Ø"Ø'*Ø(+ðØ
ðàðð ðð ð	ð
 ðð  ðð ðð ðð 'ðð ðð ðð %ðð &ðð òó ðð" ‡�ð ØØØØ"%Ø!ØØ),Ø!Ø"Ø'*Øð+Ø
ð+àð+ð ð+ð ð	+ð
 ð+ð  ð+ð ð+ð ð+ð 'ð+ð ð+ð ð+ð %ð+ð ð+ð &ò+ó ð+ð& ØØ ØØ"&Ø"ØØ)-Ø"Ø#Ø'+ØðGØ
ðGàðGð ðGð ð	Gð
 ðGð  ðGð ðGð ðGð 'ðGð ðGð ðGð %ðGð ðGð &óGóT
Vóð #'ð	JØ
ðJàðJð ðJð  ð	Jð
 &ôJùókøðB ò 	Úð	ûð ò ØÐØ€LØ€KØ€KØ%&Ð&€O�lØÐØ 'ÐØÓðús<   ÁG/Â(5H ÃG5Ã4H Ç5G>Ç:H Ç=G>Ç>H ÈHÈH