Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
odigos / etc / odigos-vmagent / instrumentations / python / urllib3 / contrib / __pycache__ / pyopenssl.cpython-311.pyc
Size: Mime:
§

€QÄgŠKã
óV—UdZddlmZddlZddlmZ	ddlmZn#e	$rGd„de
¦«ZYnwxYwddlZddlZddl
Z
ddlmZdd	lmZdd
lmZddlmZe
jrdd
lmZddgZejjejjejjejjejejjiZ de!d<e"ed¦«r%e"ejd¦«rejj#e ej$<e"ed¦«r%e"ejd¦«rejj%e ej&<ej'ejj(ej)ejj*ej+ejj*ejj,ziZ-d„e- .¦«D¦«Z/e0ejdd¦«e0ejdd¦«zZ1de!d<e0ejdd¦«Z2de!d<e0ejdd¦«Z3de!d<e0ejdd¦«Z4de!d <e0ejd!d¦«Z5de!d"<ej6j7e1ej6j8e1ej6j9e1e2zej6j:e1e2ze3zej6j;e1e2ze3ze4zej6j<e1e2ze3ze4ziZ=de!d#<ej6j7e1e2ze3ze4ze5zej6j8e1e3ze4ze5zej6j9e1e4ze5zej6j:e1e5zej6j;e1ej6j<e1iZ>de!d$<d%Z?ejj@ZAejBeC¦«ZDd?d(„ZEd?d)„ZFd?d*„ZGd@d.„ZHdAd2„ZIGd3„d4¦«ZJejKeJ_KGd5„d6¦«ZLdBd>„ZMdS)Caï
Module for using pyOpenSSL as a TLS backend. This module was relevant before
the standard library ``ssl`` module supported SNI, but now that we've dropped
support for Python 2.7 all relevant Python versions support SNI so
**this module is no longer recommended**.

This needs the following packages installed:

* `pyOpenSSL`_ (tested with 16.0.0)
* `cryptography`_ (minimum 1.3.4, from pyopenssl)
* `idna`_ (minimum 2.0)

However, pyOpenSSL depends on cryptography, so while we use all three directly here we
end up having relatively few packages required.

You can install them with the following command:

.. code-block:: bash

    $ python -m pip install pyopenssl cryptography idna

To activate certificate checking, call
:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code
before you begin making HTTP requests. This can be done in a ``sitecustomize``
module, or at any other time before your application begins using ``urllib3``,
like this:

.. code-block:: python

    try:
        import urllib3.contrib.pyopenssl
        urllib3.contrib.pyopenssl.inject_into_urllib3()
    except ImportError:
        pass

.. _pyopenssl: https://www.pyopenssl.org
.. _cryptography: https://cryptography.io
.. _idna: https://github.com/kjd/idna
é)ÚannotationsN)Úx509)ÚUnsupportedExtensioncó—eZdZdS)rN)Ú__name__Ú
__module__Ú__qualname__©óú@/tmp/pip-target-0z7lll2b/lib/python/urllib3/contrib/pyopenssl.pyrr2s€€€€€Øˆrr)ÚBytesIO)Úsocket)Útimeouté)Úutil©ÚX509Úinject_into_urllib3Úextract_from_urllib3zdict[int, int]Ú_openssl_versionsÚPROTOCOL_TLSv1_1ÚTLSv1_1_METHODÚPROTOCOL_TLSv1_2ÚTLSv1_2_METHODcó—i|]\}}||“Œ	Sr
r
)Ú.0ÚkÚvs   rú
<dictcomp>rYs€ÐPÐPÐP¡d a¨˜Q ÐPÐPÐPrÚOP_NO_SSLv2ÚOP_NO_SSLv3ÚintÚ_OP_NO_SSLv2_OR_SSLv3ÚOP_NO_TLSv1Ú_OP_NO_TLSv1Ú
OP_NO_TLSv1_1Ú_OP_NO_TLSv1_1Ú
OP_NO_TLSv1_2Ú_OP_NO_TLSv1_2Ú
OP_NO_TLSv1_3Ú_OP_NO_TLSv1_3Ú_openssl_to_ssl_minimum_versionÚ_openssl_to_ssl_maximum_versioni@ÚreturnÚNonecóª—t¦«tt_ttj_dt_dtj_dS)z7Monkey-patch urllib3 with PyOpenSSL-backed SSL-support.TN)Ú_validate_dependencies_metÚPyOpenSSLContextrÚ
SSLContextÚssl_ÚIS_PYOPENSSLr
rrrr‹s9€õÑ Ô Ð å&…D„OÝ+…D„IÔØ…DÔØ!…D„IÔÐÐrcóŽ—tt_ttj_dt_dtj_dS)z4Undo monkey-patching by :func:`inject_into_urllib3`.FN)Úorig_util_SSLContextrr3r4r5r
rrrr–s-€õ+…D„OÝ/…D„IÔØ…DÔØ"…D„IÔÐÐrcó²—ddlm}t|dd¦«€td¦«‚ddlm}|¦«}t|dd¦«€td¦«‚dS)	z{
    Verifies that PyOpenSSL's package-level dependencies have been met.
    Throws `ImportError` if they are not met.
    r)Ú
ExtensionsÚget_extension_for_classNzX'cryptography' module missing required functionality.  Try upgrading to v1.3.4 or newer.rÚ_x509zS'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.)Úcryptography.x509.extensionsr9ÚgetattrÚImportErrorÚOpenSSL.cryptor)r9rrs   rr1r1Ÿs€ð8Ð7Ð7Ð7Ð7Ð7åˆzÐ4°dÑ;Ô;ÐCÝð
0ñ
ô
ð	
ð$Ð#Ð#Ð#Ð#Ð#àˆ4‰6Œ6€D݈tW˜dÑ#Ô#Ð+Ýð
/ñ
ô
ð	
ð,Ð+rÚnameÚstrú
str | Nonecó^—d	d„}d|vr|S||¦«}|€dS| d¦«S)
a%
    Converts a dNSName SubjectAlternativeName field to the form used by the
    standard library on the given Python version.

    Cryptography produces a dNSName as a unicode string that was idna-decoded
    from ASCII bytes. We need to idna-encode that string to get it back, and
    then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib
    uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8).

    If the name cannot be idna-encoded then we return None signalling that
    the name given should be skipped.
    r@rAr.úbytes | Nonecó—ddl}	dD][}| |¦«rD|t|¦«d…}| d¦«| |¦«zcSŒ\| |¦«S#|jj$rYdSwxYw)zÒ
        Borrowed wholesale from the Python Cryptography Project. It turns out
        that we can't just safely call `idna.encode`: it can explode for
        wildcard names. This avoids that problem.
        rN)z*.ú.Úascii)ÚidnaÚ
startswithÚlenÚencodeÚcoreÚ	IDNAError)r@rHÚprefixs   rÚidna_encodez'_dnsname_to_stdlib.<locals>.idna_encodeÇs¶€ð	ˆˆˆð	Ø%ð
Fð
FØ—?’? 6Ñ*Ô*ðFØ¥ F¡¤ 
 
Ô.DØ!Ÿ=š=¨Ñ1Ô1°D·K²KÀÑ4EÔ4EÑEÐEÐEÐEðFð—;’;˜tÑ$Ô$Ð$øØŒyÔ"ð	ð	ð	ؐ44ð	øøøs†AA9Á#A9Á9BÂBú:Núutf-8)r@rAr.rD)Údecode)r@rOÚencoded_names   rÚ_dnsname_to_stdlibrT¹sT€ððððð$ˆd€{€{؈à;˜tÑ$Ô$€LØÐ؈tØ×Ò˜wÑ'Ô'Ð'rÚ	peer_certrúlist[tuple[str, str]]có:—| ¦«}	|j tj¦«j}nc#tj$rgcYStjttj	tf$r'}t d|¦«gcYd}~Sd}~wwxYwd„tt| tj¦«¦«D¦«}| d„| tj¦«D¦«¦«|S)zU
    Given an PyOpenSSL certificate, provides all the subject alternative names.
    z­A problem was encountered with the certificate that prevented urllib3 from finding the SubjectAlternativeName field. This can affect certificate validation. The error was %sNcó—g|]}|®d|f‘Œ	S)NÚDNSr
©rr@s  rú
<listcomp>z%get_subj_alt_name.<locals>.<listcomp>s,€ð
ð
ð
àØÐð
ˆ
àÐÐrc3ó8K—|]}dt|¦«fV—ŒdS)z
IP AddressN)rArZs  rú	<genexpr>z$get_subj_alt_name.<locals>.<genexpr>s>èè€ððØ&*ˆ•s˜4‘y”yÐ!ððððððr)Úto_cryptographyÚ
extensionsr:rÚSubjectAlternativeNameÚvalueÚExtensionNotFoundÚDuplicateExtensionrÚUnsupportedGeneralNameTypeÚUnicodeErrorÚlogÚwarningÚmaprTÚget_values_for_typeÚDNSNameÚextendÚ	IPAddress)rUÚcertÚextÚeÚnamess     rÚget_subj_alt_namerqâs?€ð×$Ò$Ñ&Ô&€DðØŒo×5Ò5µdÔ6QÑRÔRÔXˆˆøÝÔ!ðððàˆ	ˆ	ˆ	åÔÝÝÔ'Ýð	ðððõ	Šð
>ð
ñ		
ô	
ð	
ðˆ	ˆ	ˆ	ˆ	ˆ	ˆ	øøøøðøøøð.
ð
åÕ*¨C×,CÒ,CÅDÄLÑ,QÔ,QÑRÔRð
ñ
ô
€Eð

‡L‚LððØ.1×.EÒ.EÅdÄnÑ.UÔ.Uðñôñôðð€Ls#–)AÁB Á&B Á9BÂB ÂB cóŠ—eZdZdZ	d'd(d„Zd)d
„Zd*d„Zd+d„Zd,d„Zd-d„Z	d.d„Z
d/d„Zd*d„Zd*d„Z
d*d„Z	d0d1d!„Zd2d#„Zd3d%„Zd&S)4Ú
WrappedSocketz@API-compatibility wrapper for Python OpenSSL's Connection-class.TÚ
connectionúOpenSSL.SSL.ConnectionrÚ
socket_clsÚsuppress_ragged_eofsÚboolr.r/cóL—||_||_||_d|_d|_dS©NrF)rtrrwÚ_io_refsÚ_closed)Úselfrtrrws    rÚ__init__zWrappedSocket.__init__s,€ð%ˆŒØˆŒØ$8ˆÔ!؈Œ
؈Œˆˆrr"có4—|j ¦«S©N)rÚfileno©r}s rrzWrappedSocket.fileno!s€ØŒ{×!Ò!Ñ#Ô#Ð#rcóv—|jdkr|xjdzc_|jr| ¦«dSdS)Nré)r{r|Úcloser‚s rÚ_decref_socketioszWrappedSocket._decref_socketios%sD€ØŒ=˜1ÒÐØˆMŒM˜QÑˆMŒMØŒ<ð	ØJŠJ‰LŒLˆLˆLˆLð	ð	rÚargsú
typing.AnyÚkwargsÚbytescóž—	|jj|i|¤Ž}|S#tjj$rF}|jr|jdkrYd}~dSt|jdt|¦«¦«|‚d}~wtjj	$r1|j 
¦«tjjkrYdS‚tjj$rX}tj|j|j ¦«¦«st#d¦«|‚|j|i|¤ŽcYd}~Sd}~wtjj$r}t'jd|›¦«|‚d}~wwxYw)N©éÿÿÿÿzUnexpected EOFrrúThe read operation timed outúread error: )rtÚrecvÚOpenSSLÚSSLÚSysCallErrorrwr‡ÚOSErrorrAÚZeroReturnErrorÚget_shutdownÚRECEIVED_SHUTDOWNÚ
WantReadErrorrÚ
wait_for_readrÚ
gettimeoutrÚErrorÚsslÚSSLError)r}r‡r‰Údataros     rrzWrappedSocket.recv+s~€ð	Ø'4”?Ô'¨Ð8°Ð8Ð8ˆDð*ˆKøõ)Œ{Ô'ð	8ð	8ð	8ØÔ(ð
8¨Q¬VÐ7MÒ-MÐ-Mؐssssså˜aœf Qœi­¨Q©¬Ñ0Ô0°aÐ7øøøøÝŒ{Ô*ð	ð	ð	ØŒ×+Ò+Ñ-Ô-µ´Ô1NÒNÐNؐssàÝŒ{Ô(ð	2ð	2ð	2ÝÔ% d¤k°4´;×3IÒ3IÑ3KÔ3KÑLÔLð
2ÝÐ<Ñ=Ô=À1ÐDà t”y $Ð1¨&Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øøøøõŒ{Ô ð	<ð	<ð	<Ý”,Ð3¨aÐ3Ð3Ñ4Ô4¸!Ð;øøøøð	<øøøs@‚–EªA+Á)A+Á+AEÂ1EÃA
DÄEÄEÄ/EÅEcóš—	|jj|i|¤ŽS#tjj$rF}|jr|jdkrYd}~dSt|jdt|¦«¦«|‚d}~wtjj	$r1|j 
¦«tjjkrYdS‚tjj$rX}tj|j|j ¦«¦«st#d¦«|‚|j|i|¤ŽcYd}~Sd}~wtjj$r}t'jd|›¦«|‚d}~wwxYw)NrŒrrŽr)rtÚ	recv_intor‘r’r“rwr‡r”rAr•r–r—r˜rr™rršrr›rœr)r}r‡r‰ros    rr zWrappedSocket.recv_intoDsv€ð	<Ø,4”?Ô,¨dÐ=°fÐ=Ð=Ð=øÝŒ{Ô'ð	8ð	8ð	8ØÔ(ð
8¨Q¬VÐ7MÒ-MÐ-Mؐqqqqqå˜aœf Qœi­¨Q©¬Ñ0Ô0°aÐ7øøøøÝŒ{Ô*ð	ð	ð	ØŒ×+Ò+Ñ-Ô-µ´Ô1NÒNÐNؐqqàÝŒ{Ô(ð	7ð	7ð	7ÝÔ% d¤k°4´;×3IÒ3IÑ3KÔ3KÑLÔLð
7ÝÐ<Ñ=Ô=À1ÐDà%t”~ tÐ6¨vÐ6Ð6Ð6Ð6Ð6Ð6Ð6Ð6øøøøõŒ{Ô ð	<ð	<ð	<Ý”,Ð3¨aÐ3Ð3Ñ4Ô4¸!Ð;øøøøð	<øøøs@‚”E
¨A)Á)A)Á)AE
Â/E
ÃA
DÄE
ÄE
Ä-EÅE
rÚfloatcó6—|j |¦«Sr€)rÚ
settimeout)r}rs  rr£zWrappedSocket.settimeout[s€ØŒ{×%Ò% gÑ.Ô.Ð.rržcó|—		|j |¦«S#tjj$rJ}tj|j|j ¦«¦«st¦«|‚Yd}~Œud}~wtjj
$r.}t|jdt|¦«¦«|‚d}~wwxYw©NTr)rtÚsendr‘r’ÚWantWriteErrorrÚwait_for_writerršrr“r”r‡rA)r}ržros   rÚ_send_until_donezWrappedSocket._send_until_done^s»€ð	8ð
8Ø”×+Ò+¨DÑ1Ô1Ð1øÝ”;Ô-ð
ð
ð
ÝÔ*¨4¬;¸¼×8NÒ8NÑ8PÔ8PÑQÔQð+Ý!™)œ)¨Ð*ؐøøøøÝ”;Ô+ð
8ð
8ð
8ݘaœf Qœi­¨Q©¬Ñ0Ô0°aÐ7øøøøð
8øøøs!ƒB;±AA6Á6B;Â
)B6Â6B;có®—d}|t|¦«kr?| |||tz…¦«}||z
}|t|¦«k°=dSdS©Nr)rJr©ÚSSL_WRITE_BLOCKSIZE)r}ržÚ
total_sentÚsents    rÚsendallzWrappedSocket.sendallisk€Øˆ
؝3˜t™9œ9Ò$Ð$Ø×(Ò(ؐZ *Õ/BÑ"BÐBÔCñôˆDð
˜$ÑˆJð	3˜t™9œ9Ò$Ð$Ð$Ð$Ð$Ð$rcó8—|j ¦«dSr€)rtÚshutdownr‚s rr±zWrappedSocket.shutdownqs€àŒ× Ò Ñ"Ô"Ð"Ð"Ð"rcóV—d|_|jdkr| ¦«dSdSr¥)r|r{Ú_real_closer‚s rr…zWrappedSocket.closeus6€ØˆŒØŒ=˜AÒÐØ×ÒÑÔÐÐÐðÐrcól—	|j ¦«S#tjj$rYdSwxYwr€)rtr…r‘r’r›r‚s rr³zWrappedSocket._real_closezsB€ð	Ø”?×(Ò(Ñ*Ô*Ð*øÝŒ{Ô ð	ð	ð	ØˆFˆFð	øøøs‚›3²3FÚbinary_formú"dict[str, list[typing.Any]] | Nonecóî—|j ¦«}|s|S|r/tj tjj|¦«Sd|j¦«jffft|¦«dœS)NÚ
commonName)ÚsubjectÚsubjectAltName)	rtÚget_peer_certificater‘ÚcryptoÚdump_certificateÚ
FILETYPE_ASN1Úget_subjectÚCNrq)r}rµrs   rÚgetpeercertzWrappedSocket.getpeercert€s„€ðŒ×3Ò3Ñ5Ô5ˆàð	؈Kàð	WÝ”>×2Ò2µ7´>Ô3OÐQUÑVÔVÐVð'Ð(8¨Ô(8Ñ(:Ô(:Ô(=Ð>Ð@ÐBÝ/°Ñ5Ô5ð
ð
ð	
rrAcó4—|j ¦«Sr€)rtÚget_protocol_version_namer‚s rÚversionzWrappedSocket.versions€ØŒ×8Ò8Ñ:Ô:Ð:rrBcód—|j ¦«}|r| ¦«ndSr€)rtÚget_alpn_proto_negotiatedrR)r}Ú
alpn_protos  rÚselected_alpn_protocolz$WrappedSocket.selected_alpn_protocol“s1€Ø”_×>Ò>Ñ@Ô@ˆ
Ø&0Ð:ˆz× Ò Ñ"Ô"Ð"°dÐ:rN)T)rtrurrvrwrxr.r/©r.r"©r.r/)r‡rˆr‰rˆr.rŠ)r‡rˆr‰rˆr.r")rr¡r.r/)ržrŠr.r")ržrŠr.r/)F)rµrxr.r¶)r.rA)r.rB)rrr	Ú__doc__r~rr†rr r£r©r¯r±r…r³rÁrÄrÈr
rrrsrssF€€€€€ØJÐJð&*ð	
ð
ð
ð
ð
ð$ð$ð$ð$ððððððððð2<ð<ð<ð<ð./ð/ð/ð/ð	8ð	8ð	8ð	8ððððð#ð#ð#ð#ððððð
ðððð#(ð
ð
ð
ð
ð
ð ;ð;ð;ð;ð;ð;ð;ð;ð;ð;rrscóR—eZdZdZd3d„Zed4d„¦«Zejd5d	„¦«Zed4d
„¦«Zejd6d„¦«Zd7d
„Z	d8d„Z
			d9d:d„Z		d;d<d„Zd=d„Z
				d>d?d+„Zd7d,„Zed4d-„¦«Zejd@d/„¦«Zed4d0„¦«ZejdAd2„¦«ZdS)Br2zÂ
    I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible
    for translating the interface of the standard library ``SSLContext`` object
    to calls into PyOpenSSL.
    Úprotocolr"r.r/cóð—t||_tj |j¦«|_d|_d|_tj	j
|_tj	j|_
dSrz)rrÍr‘r’ÚContextÚ_ctxÚ_optionsÚcheck_hostnamerœÚ
TLSVersionÚMINIMUM_SUPPORTEDÚ_minimum_versionÚMAXIMUM_SUPPORTEDÚ_maximum_version)r}rÍs  rr~zPyOpenSSLContext.__init__¢sV€Ý)¨(Ô3ˆŒ
Ý”K×'Ò'¨¬
Ñ6Ô6ˆŒ	؈Œ
Ø#ˆÔÝ%(¤^Ô%EˆÔÝ%(¤^Ô%EˆÔÐÐrcó—|jSr€)rÑr‚s rÚoptionszPyOpenSSLContext.optionsªs
€àŒ}Ðrracó<—||_| ¦«dSr€)rÑÚ_set_ctx_options©r}ras  rrÙzPyOpenSSLContext.options®s!€àˆŒ
Ø×ÒÑÔÐÐÐrcóJ—t|j ¦«Sr€)Ú_openssl_to_stdlib_verifyrÐÚget_verify_moder‚s rÚverify_modezPyOpenSSLContext.verify_mode³s€å(¨¬×)BÒ)BÑ)DÔ)DÔEÐErússl.VerifyModecó\—|j t|t¦«dSr€)rÐÚ
set_verifyÚ_stdlib_to_openssl_verifyÚ_verify_callbackrÜs  rràzPyOpenSSLContext.verify_mode·s'€àŒ	×ÒÕ6°uÔ=Õ?OÑPÔPÐPÐPÐPrcó8—|j ¦«dSr€)rÐÚset_default_verify_pathsr‚s rrçz)PyOpenSSLContext.set_default_verify_paths»s€ØŒ	×*Ò*Ñ,Ô,Ð,Ð,Ð,rÚciphersúbytes | strcóŽ—t|t¦«r| d¦«}|j |¦«dS)NrQ)Ú
isinstancerArKrÐÚset_cipher_list)r}rès  rÚset_cipherszPyOpenSSLContext.set_ciphers¾sA€ÝgsÑ#Ô#ð	.Ø—n’n WÑ-Ô-ˆGØŒ	×!Ò! 'Ñ*Ô*Ð*Ð*Ð*rNÚcafilerBÚcapathÚcadatarDcóX—|| d¦«}|| d¦«}	|j ||¦«|)|j t|¦«¦«dSdS#tjj$r}tjd|›¦«|‚d}~wwxYw)NrQz%unable to load trusted certificates: )	rKrÐÚload_verify_locationsr
r‘r’r›rœr)r}rîrïrðros     rròz&PyOpenSSLContext.load_verify_locationsÃsĀðÐØ—]’] 7Ñ+Ô+ˆFØÐØ—]’] 7Ñ+Ô+ˆFð	UØŒI×+Ò+¨F°FÑ;Ô;Ð;ØÐ!Ø”	×/Ò/µ¸±´Ñ@Ô@Ð@Ð@Ð@ð"Ð!øåŒ{Ô ð	Uð	Uð	UÝ”,ÐLÀqÐLÐLÑMÔMÐSTÐTøøøøð	Uøøøs°AA8Á8B)ÂB$Â$B)ÚcertfilerAÚkeyfileÚpasswordcóp‡—	|j |¦«‰Gt‰t¦«s‰ d¦«Š|j ˆfd„¦«|j |p|¦«dS#tjj	$r}tjd|›¦«|‚d}~wwxYw)NrQcó•—‰Sr€r
)Ú_rõs €rú<lambda>z2PyOpenSSLContext.load_cert_chain.<locals>.<lambda>ßsø€°8€rz"Unable to load certificate chain: )rÐÚuse_certificate_chain_filerërŠrKÚ
set_passwd_cbÚuse_privatekey_filer‘r’r›rœr)r}rórôrõros   ` rÚload_cert_chainz PyOpenSSLContext.load_cert_chainÔsÍø€ð	RØŒI×0Ò0°Ñ:Ô:Ð:ØÐ#Ý! (­EÑ2Ô2ð8Ø'Ÿš¨wÑ7Ô7HØ”	×'Ò'Ð(;Ð(;Ð(;Ð(;Ñ<Ô<Ð<ØŒI×)Ò)¨'Ð*=°XÑ>Ô>Ð>Ð>Ð>øÝŒ{Ô ð	Rð	Rð	RÝ”,ÐIÀAÐIÐIÑJÔJÐPQÐQøøøøð	RøøøsƒA?BÂB5ÂB0Â0B5Ú	protocolsúlist[bytes | str]cóN—d„|D¦«}|j |¦«S)NcóN—g|]"}tj |d¦«‘Œ#S)rG)rÚto_bytes)rÚps  rr[z7PyOpenSSLContext.set_alpn_protocols.<locals>.<listcomp>ås*€ÐGÐGÐG¸•T”Y×'Ò'¨¨7Ñ3Ô3ÐGÐGÐGr)rÐÚset_alpn_protos)r}rþs  rÚset_alpn_protocolsz#PyOpenSSLContext.set_alpn_protocolsäs+€ØGÐG¸YÐGÑGÔGˆ	ØŒy×(Ò(¨Ñ3Ô3Ð3rFTÚsockrvÚserver_siderxÚdo_handshake_on_connectrwÚserver_hostnameúbytes | str | Nonerscó’—tj |j|¦«}|r^tj |¦«s?t|t¦«r| 	d¦«}| 
|¦«| ¦«		| ¦«n‡#tjj
$rA}t	j|| ¦«¦«st!d¦«|‚Yd}~Œgd}~wtjj$r}t%jd|›¦«|‚d}~wwxYw	t)||¦«S)NrQTzselect timed outzbad handshake: )r‘r’Ú
ConnectionrÐrr4Úis_ipaddressrërArKÚset_tlsext_host_nameÚset_connect_stateÚdo_handshaker˜r™ršrr›rœrrs)r}rrrrwr	Úcnxros        rÚwrap_socketzPyOpenSSLContext.wrap_socketèsV€õŒk×$Ò$ T¤Y°Ñ5Ô5ˆðð	6¥4¤9×#9Ò#9¸/Ñ#JÔ#Jð	6ݘ/­3Ñ/Ô/ð
BØ"1×"8Ò"8¸Ñ"AÔ"AØ×$Ò$ _Ñ5Ô5Ð5à×ÒÑÔÐð		ð
CØ× Ò Ñ"Ô"Ð"Ð"øÝ”;Ô,ð
ð
ð
ÝÔ)¨$°·²Ñ0AÔ0AÑBÔBð=Ý!Ð"4Ñ5Ô5¸1Ð<ؐøøøøÝ”;Ô$ð
Cð
Cð
CÝ”lÐ#:°QÐ#:Ð#:Ñ;Ô;ÀÐBøøøøð
Cøøøàå˜S $Ñ'Ô'Ð's$ÂB1Â1D5Ã7DÄD5ÄD0Ä0D5có—|j |jt|jzt
|jz¦«dSr€)rÐÚset_optionsrÑr,rÕr-r×r‚s rrÛz!PyOpenSSLContext._set_ctx_optionssM€ØŒ	×ÒØŒMÝ-¨dÔ.CÔDñ
Eå-¨dÔ.CÔDñ
Eñ	
ô	
ð	
ð	
ð	
rcó—|jSr€)rÕr‚s rÚminimum_versionz PyOpenSSLContext.minimum_versionó€àÔ$Ð$rrcó<—||_| ¦«dSr€)rÕrÛ)r}rs  rrz PyOpenSSLContext.minimum_versionó"€à /ˆÔØ×ÒÑÔÐÐÐrcó—|jSr€)r×r‚s rÚmaximum_versionz PyOpenSSLContext.maximum_versionrrrcó<—||_| ¦«dSr€)r×rÛ)r}rs  rrz PyOpenSSLContext.maximum_versionrr)rÍr"r.r/rÉ)rar"r.r/)rarár.r/rÊ)rèrér.r/)NNN)rîrBrïrBrðrDr.r/)NN)rórArôrBrõrBr.r/)rþrÿr.r/)FTTN)rrvrrxrrxrwrxr	r
r.rs)rr"r.r/)rr"r.r/)rrr	rËr~ÚpropertyrÙÚsetterràrçríròrýrrrÛrrr
rrr2r2›s€€€€€ðððFðFðFðFððððñ„Xðð
„^ð ð ð ñ„^ð ððFðFðFñ„XðFðÔðQðQðQñÔðQð-ð-ð-ð-ð+ð+ð+ð+ð"Ø!Ø#ð	UðUðUðUðUð(#Ø#ð	RðRðRðRðRð 4ð4ð4ð4ð"Ø(,Ø%)Ø.2ð
(ð(ð(ð(ð(ð>
ð
ð
ð
ðð%ð%ð%ñ„Xð%ðÔð ð ð ñÔð ðð%ð%ð%ñ„Xð%ðÔð ð ð ñÔð ð ð rr2rrurÚerr_noÚ	err_depthÚreturn_coderxcó—|dkSr«r
)rrrr r!s     rrårå!s€ðQŠ;ÐrrÊ)r@rAr.rB)rUrr.rV)rrurrrr"r r"r!r"r.rx)NrËÚ
__future__rÚOpenSSL.SSLr‘ÚcryptographyrÚcryptography.x509rr>Ú	ExceptionÚloggingrœÚtypingÚior
rrvrÚrÚ
TYPE_CHECKINGr?rÚ__all__r4ÚPROTOCOL_TLSr’Ú
SSLv23_METHODÚPROTOCOL_TLS_CLIENTÚPROTOCOL_TLSv1ÚTLSv1_METHODrÚ__annotations__ÚhasattrrrrrÚ	CERT_NONEÚVERIFY_NONEÚ
CERT_OPTIONALÚVERIFY_PEERÚ
CERT_REQUIREDÚVERIFY_FAIL_IF_NO_PEER_CERTräÚitemsrÞr=r#r%r'r)r+rÓrÔÚTLSv1ÚTLSv1_1ÚTLSv1_2ÚTLSv1_3rÖr,r-r¬r3r7Ú	getLoggerrrfrrr1rTrqrsÚmakefiler2rår
rrú<module>rBs†ðð&ð&ð&ðP#Ð"Ð"Ð"Ð"Ð"àÐÐÐØÐÐÐÐÐð
Ø6Ð6Ð6Ð6Ð6Ð6Ð6øØð
ð
ð
ð
ð
ð
ð
ð
˜yñ
ô
ð
ð
ð
ð
øøøð€€€Ø
€
€
€
Ø
€
€
€
ØÐÐÐÐÐØ'Ð'Ð'Ð'Ð'Ð'ØÐÐÐÐÐàÐÐÐÐÐà	Ôð$Ø#Ð#Ð#Ð#Ð#Ð#ð!Ð"8Ð
9€ð	„IÔ˜GœKÔ5Ø„IÔ! 7¤;Ô#<ØÔ˜œÔ0ð%Ððððñð€7ˆ3Ð"Ñ#Ô#ðI¨¨°´Ð=MÑ(NÔ(NðIØ.5¬kÔ.HАcÔ*Ñ+à
€7ˆ3Ð"Ñ#Ô#ðI¨¨°´Ð=MÑ(NÔ(NðIØ.5¬kÔ.HАcÔ*Ñ+ð„M7”;Ô*ØÔw”{Ô.ØÔw”{Ô.Ø
„kÔ-ñ.ðÐðQÐPÐ.G×.MÒ.MÑ.OÔ.OÐPÑPÔPÐð%˜W W¤[°-ÀÑCÔCÀgÀgØ„K ñGôGñÐðððñðG˜GœK¨¸Ñ:Ô:€Ð:Ð:Ð:Ñ:ؐg˜gœk¨?¸AÑ>Ô>€Ð>Ð>Ð>Ñ>ؐg˜gœk¨?¸AÑ>Ô>€Ð>Ð>Ð>Ñ>ؐg˜gœk¨?¸AÑ>Ô>€Ð>Ð>Ð>Ñ>ð„NÔ$Ð&;Ø„NÔÐ/Ø„NÔÐ1°LÑ@Ø„NÔÐ1°LÑ@À>ÑQØ„NÔØ Ñ,¨~Ñ=ÀÑNà„NÔ$Ø Ñ,¨~Ñ=ÀÑNð3Ððððñð„NÔ$ØØ
ñ	à
ñ	ðñ	ðñ		ð„NÔØ Ñ.°Ñ?À.ÑPà„NÔÐ1°NÑBÀ^ÑSØ„NÔÐ1°NÑBØ„NÔÐ1Ø„NÔ$Ð&;ð3Ððððñð$Ðà”yÔ+Ðð€gÔ˜Ñ!Ô!€ð"ð"ð"ð"ð#ð#ð#ð#ð
ð
ð
ð
ð4&(ð&(ð&(ð&(ðR-ð-ð-ð-ð`C;ðC;ðC;ðC;ðC;ñC;ôC;ðC;ðL$Ô,€
ÔðC ðC ðC ðC ðC ñC ôC ðC ðLðððððs•œ2±2