§
    ~Štj” ã                   óP  — 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m	Z	m
Z
 d dlmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZmZm Z m!Z!m"Z" d dl#Z#d d
l#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.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z> ddl(m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZF ddlGmHZH ddlImJZJ ejK        dk    rd dlmLZL ne!eMeNddf         ZLerd dlOZOeOjP        ZPn	 d dlOZOeOjP        ZPn# eQ$ r dZOeRZPY nw xY w eSdh¦  «        ZT eSddh¦  «        ZU eSddh¦  «        ZVeUeTz  ZWeWeVz  ZXdejK        cxk    odk     nc p
ejK        dk     ZYd ZZerdd!l[m\Z\ dd"l;m]Z] dd#l^m_Z_  G d$„ d%¦  «        Z`d&eaeeR                  d'dfd(„Zb G d)„ d*¦  «        Zc G d+„ d,ec¦  «        Zd G d-„ d.¦  «        Ze G d/„ d0¦  «        Zf G d1„ d2¦  «        Zgd3ehd'ePfd4„Zi eid5¦  «        Zj eid6¦  «        Zk G d7„ d8ef¦  «        Zl G d9„ d:ef¦  «        Zm G d;„ d<ef¦  «        ZndS )=é    N)ÚOrderedDictÚdefaultdictÚdeque)Ú	AwaitableÚCallableÚIteratorÚSequence)Úsuppress)Ú
HTTPStatus)ÚchainÚcycleÚislice)Ú	monotonic)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚLiteralÚOptionalÚUnionÚcast)ÚAddrInfoTypeÚSocketFactoryTypeé   )ÚhdrsÚhelpers)ÚAbstractResolverÚResolveResult)ÚClientConnectionErrorÚClientConnectorCertificateErrorÚClientConnectorDNSErrorÚClientConnectorErrorÚClientConnectorSSLErrorÚClientHttpProxyErrorÚClientProxyConnectionErrorÚInvalidUrlClientErrorÚServerFingerprintMismatchÚUnixClientConnectorErrorÚcert_errorsÚ
ssl_errors)ÚResponseHandler)ÚClientRequestÚFingerprintÚ_merge_ssl_params)Ú	_SENTINELÚceil_timeoutÚis_canonical_ipv4_addressÚis_ip_addressÚnoopÚsentinelÚset_exceptionÚ
set_result)Úclient_logger)ÚDefaultResolver©é   é   )ÚBufferzmemoryview[int]zmemoryview[bytes]Ú ÚhttpÚhttpsÚwsÚwss)r9   é   r   )r9   rA   r   )r9   r:   é   )ÚBaseConnectorÚTCPConnectorÚUnixConnectorÚNamedPipeConnectorr   r   )ÚClientTimeout)ÚConnectionKey)ÚTracec                   óB   — e Zd ZdZdee         ddfd„Zdefd„Zdd„ZdS )	Ú_DeprecationWaiter©Ú
_awaitableÚ_awaitedÚ	awaitableÚreturnNc                 ó"   — || _         d| _        d S ©NFrL   )ÚselfrO   s     úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/aiohttp/connector.pyÚ__init__z_DeprecationWaiter.__init__h   s   € Ø#ˆŒØˆŒˆˆó    c                 óB   — d| _         | j                             ¦   «         S )NT)rN   rM   Ú	__await__©rS   s    rT   rX   z_DeprecationWaiter.__await__l   s   € ØˆŒØŒ×(Ò(Ñ*Ô*Ð*rV   c                 óL   — | j         st          j        dt          ¦  «         d S d S )NzDConnector.close() is a coroutine, please use await connector.close())rN   ÚwarningsÚwarnÚDeprecationWarningrY   s    rT   Ú__del__z_DeprecationWaiter.__del__p   s<   € ØŒ}ð 	ÝŒMð5å"ñô ð ð ð ð	ð 	rV   ©rP   N)	Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   rU   rX   r^   © rV   rT   rK   rK   e   sn   € € € € € Ø*€Ið )¨C¤.ð °Tð ð ð ð ð+˜3ð +ð +ð +ð +ðð ð ð ð ð rV   rK   ÚwaitersrP   c              ƒ   ó–   K  — t          j        | ddiŽƒ d{V —†}|D ],}t          |t          ¦  «        rt	          j        d|¦  «         Œ-dS )z'Wait for all waiters to finish closing.Úreturn_exceptionsTNz!Error while closing connector: %r)ÚasyncioÚgatherÚ
isinstanceÚ	Exceptionr6   Údebug)re   ÚresultsÚress      rT   Ú_wait_for_closero   y   sq   è è € å”N GÐD¸tÐDÐDÐDÐDÐDÐDÐDÐD€GØð Jð JˆÝ�c�9Ñ%Ô%ð 	JÝÔÐ CÀSÑIÔIÐIøðJð JrV   c            
       ó8  — e Zd ZdZdddddedej        ddf
d	„Zdefd
„Z	e
fdeddfd„Zded         fd„Zedej        fd„¦   «         Zedej        dz  fd„¦   «         Zededz  fd„¦   «         Zdeg df         ddfd„Zdd„Zdd„Zdd„Zedefd„¦   «         ZdS )Ú
ConnectionNÚ	connectorrC   ÚkeyrH   ÚprotocolÚlooprP   c                 óÎ   — || _         || _        || _        || _        g | _        |                     ¦   «         r-t          j        t          j	        d¦  «        ¦  «        | _
        d S d S )Nr   )Ú_keyÚ
_connectorÚ_loopÚ	_protocolÚ
_callbacksÚ	get_debugÚ	tracebackÚextract_stackÚsysÚ	_getframeÚ_source_traceback)rS   rr   rs   rt   ru   s        rT   rU   zConnection.__init__…   si   € ð ˆŒ	Ø#ˆŒØˆŒ
Ø19ˆŒØ46ˆŒà�>Š>ÑÔð 	OÝ%.Ô%<½S¼]È1Ñ=MÔ=MÑ%NÔ%NˆDÔ"Ð"Ð"ð	Oð 	OrV   c                 ó   — d| j         › d�S )NzConnection<ú>)rw   rY   s    rT   Ú__repr__zConnection.__repr__•   s   € Ø)˜TœYÐ)Ð)Ð)Ð)rV   Ú	_warningsc                 ó2  — | j         ��d| i} |j        d| ›�t          fi |¤Ž | j                             ¦   «         rd S | j                             | j        | j         d¬¦  «         | ddœ}| j        �
| j        |d<   | j         	                    |¦  «         d S d S )NÚsourcezUnclosed connection T©Úshould_closezUnclosed connection)Úclient_connectionÚmessageÚsource_traceback)
rz   r\   ÚResourceWarningry   Ú	is_closedrx   Ú_releaserw   r�   Úcall_exception_handler)rS   r…   ÚkwargsÚcontexts       rT   r^   zConnection.__del__˜   s¾   € ØŒ>Ð%Ø Ð%ˆFØˆIŒNÐ:°$Ð:Ð:½OÐVÐVÈvÐVÐVÐVØŒz×#Ò#Ñ%Ô%ð Ø�àŒO×$Ò$ T¤Y°´ÈTÐ$ÑRÔRÐRà,0Ð=RÐSÐSˆGØÔ%Ð1Ø.2Ô.D�Ð*Ñ+ØŒJ×-Ò-¨gÑ6Ô6Ð6Ð6Ð6ð &Ð%rV   Tc                 ó   — dS )z9Force subclasses to not be falsy, to make checks simpler.Trd   rY   s    rT   Ú__bool__zConnection.__bool__¦   s   € àˆtrV   c                 óH   — t          j        dt          d¬¦  «         | j        S )Nz%connector.loop property is deprecatedé   ©Ú
stacklevel)r[   r\   r]   ry   rY   s    rT   ru   zConnection.loopª   s.   € åŒØ3Õ5GÐTUð	
ñ 	
ô 	
ð 	
ð ŒzÐrV   c                 ó,   — | j         €d S | j         j        S ©N)rz   Ú	transportrY   s    rT   r›   zConnection.transport±   s   € àŒ>Ð!Ø�4ØŒ~Ô'Ð'rV   c                 ó   — | j         S rš   )rz   rY   s    rT   rt   zConnection.protocol·   s
   € àŒ~ÐrV   Úcallbackc                 óB   — |�| j                              |¦  «         d S d S rš   )r{   Úappend)rS   r�   s     rT   Úadd_callbackzConnection.add_callback»   s,   € ØÐØŒO×"Ò" 8Ñ,Ô,Ð,Ð,Ð,ð  ÐrV   c                 óª   — | j         d d …         g c}| _         |D ]8}t          t          ¦  «        5   |¦   «          d d d ¦  «         n# 1 swxY w Y   Œ9d S rš   )r{   r
   rk   )rS   Ú	callbacksÚcbs      rT   Ú_notify_releasezConnection._notify_release¿   s£   € Ø%)¤_°Q°Q°QÔ%7¸Ð"ˆ	�4”?àð 	ð 	ˆBÝ�)Ñ$Ô$ð ð Ø�‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	ð 	s   °AÁA	ÁA	c                 óœ   — |                       ¦   «          | j        �0| j                             | j        | j        d¬¦  «         d | _        d S d S )NTrˆ   ©r¤   rz   rx   r�   rw   rY   s    rT   ÚclosezConnection.closeÆ   sP   € Ø×ÒÑÔÐàŒ>Ð%ØŒO×$Ò$ T¤Y°´ÈTÐ$ÑRÔRÐRØ!ˆDŒNˆNˆNð &Ð%rV   c                 ó˜   — |                       ¦   «          | j        �.| j                             | j        | j        ¦  «         d | _        d S d S rš   r¦   rY   s    rT   ÚreleasezConnection.releaseÍ   sK   € Ø×ÒÑÔÐàŒ>Ð%ØŒO×$Ò$ T¤Y°´Ñ?Ô?Ð?Ø!ˆDŒNˆNˆNð &Ð%rV   c                 óH   — | j         d u p| j                              ¦   «          S rš   )rz   Úis_connectedrY   s    rT   ÚclosedzConnection.closedÔ   s%   € àŒ~ Ð%ÐJ¨T¬^×-HÒ-HÑ-JÔ-JÐ)JÐJrV   r_   )r`   ra   rb   r�   r*   rh   ÚAbstractEventLooprU   Ústrr„   r[   r   r^   r   r”   Úpropertyru   Ú	Transportr›   rt   r   r    r¤   r§   r©   Úboolr¬   rd   rV   rT   rq   rq   �   sê  € € € € € àÐðOà"ðOð ðOð "ð	Oð
 Ô'ðOð 
ðOð Oð Oð Oð *˜#ð *ð *ð *ð *ð (0ð 7ð 7 ð 7°Dð 7ð 7ð 7ð 7ð˜' $œ-ð ð ð ð ð ð�gÔ/ð ð ð ñ „Xðð ð(˜7Ô,¨tÑ3ð (ð (ð (ñ „Xð(ð
 ð˜/¨DÑ0ð ð ð ñ „Xðð- X¨b°$¨hÔ%7ð -¸Dð -ð -ð -ð -ðð ð ð ð"ð "ð "ð "ð"ð "ð "ð "ð ðK˜ð Kð Kð Kñ „XðKð Kð KrV   rq   c                   ó   — e Zd ZdZdd„ZdS )Ú_ConnectTunnelConnectiona¨  Special connection wrapper for CONNECT tunnels that must never be pooled.

    This connection wraps the proxy connection that will be upgraded with TLS.
    It must never be released to the pool because:
    1. Its 'closed' future will never complete, causing session.close() to hang
    2. It represents an intermediate state, not a reusable connection
    3. The real connection (with TLS) will be created separately
    rP   Nc                 ó   — dS )aa  Do nothing - don't pool or close the connection.

        These connections are an intermediate state during the CONNECT tunnel
        setup and will be cleaned up naturally after the TLS upgrade. If they
        were to be pooled, they would never be properly closed, causing
        session.close() to wait forever for their 'closed' future.
        Nrd   rY   s    rT   r©   z _ConnectTunnelConnection.releaseã   ó   € € € rV   r_   )r`   ra   rb   Ú__doc__r©   rd   rV   rT   r³   r³   Ù   s2   € € € € € ðð ðð ð ð ð ð rV   r³   c                   óR   — e Zd ZdZdZdej        edz           ddfd„Zd	d„Z	d	d„Z
dS )
Ú_TransportPlaceholderz.placeholder for BaseConnector.connect function©r¬   r›   Úclosed_futureNrP   c                 ó"   — || _         d| _        dS )z)Initialize a placeholder for a transport.Nr¹   )rS   rº   s     rT   rU   z_TransportPlaceholder.__init__ò   s   € à#ˆŒØˆŒˆˆrV   c                 ó   — dS )zClose the placeholder.Nrd   rY   s    rT   r§   z_TransportPlaceholder.close÷   rµ   rV   c                 ó   — dS )z%Abort the placeholder (does nothing).Nrd   rY   s    rT   Úabortz_TransportPlaceholder.abortú   rµ   rV   r_   )r`   ra   rb   r¶   rc   rh   ÚFuturerk   rU   r§   r¾   rd   rV   rT   r¸   r¸   í   su   € € € € € Ø8Ð8à'€Ið g¤n°YÀÑ5EÔ&Fð È4ð ð ð ð ð
%ð %ð %ð %ð4ð 4ð 4ð 4ð 4ð 4rV   r¸   c                   ó¢  — e Zd ZdZdZdZdZeZe	ddddddd	œd
e
dz  ez  dededededej        dz  deddfd„Zefdeddfd„Zd;d„Zdeddfd„Zd;d„Z	 	 	 d<dee         dz  dedz  dedz  ddfd„Zedefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zd=d „Zd=d!„Z dd"œd#ede!d         fd$„Z"dd"œd#ede#e!e
                  fd%„Z$edefd&„¦   «         Z%d'd(defd)„Z&d*e'de'fd+„Z(d*e'd,e#d-         d.d/de)fd0„Z*d'd(d,e#d-         ddfd1„Z+d'd(d,e#d-         de)dz  fd2„Z,d=d3„Z-d'd(d4e.ddfd5„Z/dd6œd'd(d7e.d8eddfd9„Z0d*e'd,e#d-         d.d/de.fd:„Z1dS )>rC   a\  Base connector class.

    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    enable_cleanup_closed - Enables clean-up closed ssl transports.
                            Disabled by default.
    timeout_ceil_threshold - Trigger ceiling of timeout values when
                             it's above timeout_ceil_threshold.
    loop - Optional event loop.
    TNg       @Féd   r   é   ©Úkeepalive_timeoutÚforce_closeÚlimitÚlimit_per_hostÚenable_cleanup_closedru   Útimeout_ceil_thresholdrÄ   rÅ   rÆ   rÇ   rÈ   ru   rÉ   rP   c                ó²  — |r|�|t           urt          d¦  «        ‚n|t           u rd}|pt          j        ¦   «         }|| _        d| _        |                     ¦   «         r+t          j        t          j
        d¦  «        ¦  «        | _        t          t          ¦  «        | _        || _        || _        t#          ¦   «         | _        t          t"          ¦  «        | _        t)          t*          |¦  «        | _        || _        t          t0          ¦  «        | _        || _        t7          j        t:          |¬¦  «        | _        d | _        d | _         |r2tB          s+tE          j#        dt          j$        › �tJ          d¬¦  «         d}| | _&        g | _'        | (                    ¦   «         | _)        | j)         *                    d ¦  «         |  +                    ¦   «          d S )	Nz6keepalive_timeout cannot be set if force_close is Trueg      .@Fr   ©ru   zoenable_cleanup_closed ignored because https://github.com/python/cpython/pull/118960 is fixed in Python version r–   r—   ),r3   Ú
ValueErrorrh   Úget_running_loopÚ_timeout_ceil_thresholdÚ_closedr|   r}   r~   r   r€   r�   r   r   Ú_connsÚ_limitÚ_limit_per_hostÚsetÚ	_acquiredÚ_acquired_per_hostr   ÚfloatÚ_keepalive_timeoutÚ_force_closer   Ú_waitersry   Ú	functoolsÚpartialr*   Ú_factoryÚ_cleanup_handleÚ_cleanup_closed_handleÚNEEDS_CLEANUP_CLOSEDr[   r\   Úversion_infor]   Ú_cleanup_closed_disabledÚ_cleanup_closed_transportsÚcreate_futureÚ_placeholder_futurer5   Ú_cleanup_closed)rS   rÄ   rÅ   rÆ   rÇ   rÈ   ru   rÉ   s           rT   rU   zBaseConnector.__init__  sì  € ð ð 	)Ø Ð,Ð1BÍ(Ð1RÐ1RÝ ØLñô ð øð !¥HÐ,Ð,Ø$(Ð!àÐ1•wÔ/Ñ1Ô1ˆØ'=ˆÔ$àˆŒØ�>Š>ÑÔð 	OÝ%.Ô%<½S¼]È1Ñ=MÔ=MÑ%NÔ%NˆDÔ"õ �ÑÔð 	Œð ˆŒØ-ˆÔÝ/2©u¬uˆŒå�ÑÔð 	Ôõ #'¥uÐ.?Ñ"@Ô"@ˆÔØ'ˆÔõ �Ñ$Ô$ð 	Œð ˆŒ
Ý!Ô)­/ÀÐEÑEÔEˆŒð <@ˆÔð CGˆÔ#à ð 	*Õ)=ð 	*ÝŒMð8å%(Ô%5ð8ð 8õ #Øðñ ô ð ð %*Ð!à,AÐ(AˆÔ%ØJLˆÔ'à×ÒÑ Ô ð 	Ô ð 	Ô ×+Ò+¨DÑ1Ô1Ð1Ø×ÒÑÔÐÐÐrV   r…   c                 ó0  — | j         rd S | j        sd S d„ | j                             ¦   «         D ¦   «         }|                      ¦   «          d| i} |j        d| ›�t
          fi |¤Ž | |ddœ}| j        �
| j        |d<   | j                             |¦  «         d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rd   )Úrepr)Ú.0Úcs     rT   ú
<listcomp>z)BaseConnector.__del__.<locals>.<listcomp>h  s   € Ð7Ð7Ð7˜Q•�a‘”Ð7Ð7Ð7rV   r‡   zUnclosed connector zUnclosed connector)rr   Úconnectionsr‹   rŒ   )	rÏ   rÐ   ÚvaluesÚ_closer\   r�   r�   ry   r�   )rS   r…   Úconnsr‘   r’   s        rT   r^   zBaseConnector.__del__b  sÇ   € ØŒ<ð 	ØˆFØŒ{ð 	ØˆFà7Ð7 $¤+×"4Ò"4Ñ"6Ô"6Ð7Ñ7Ô7ˆà�Š‰Œˆà˜DÐ!ˆØˆ	ŒÐ5¨TÐ5Ð5µÐQÐQÈ&ÐQÐQÐQàØ Ø+ð
ð 
ˆð
 Ô!Ð-Ø*.Ô*@ˆGÐ&Ñ'ØŒ
×)Ò)¨'Ñ2Ô2Ð2Ð2Ð2rV   c                 ó:   — t          j        dt          ¦  «         | S )NzH"with Connector():" is deprecated, use "async with Connector():" instead)r[   r\   r]   rY   s    rT   Ú	__enter__zBaseConnector.__enter__w  s%   € ÝŒð4åñ	
ô 	
ð 	
ð
 ˆrV   Úexcc                 ó.   — |                       ¦   «          d S rš   )rî   )rS   rò   s     rT   Ú__exit__zBaseConnector.__exit__  s   € Ø�Š‰ŒˆˆˆrV   c              ƒ   ó
   K  — | S rš   rd   rY   s    rT   Ú
__aenter__zBaseConnector.__aenter__‚  s   è è € ØˆrV   Úexc_typeÚ	exc_valueÚexc_tracebackc              ƒ   ó>   K  — |                       ¦   «         ƒ d {V —† d S rš   )r§   )rS   r÷   rø   rù   s       rT   Ú	__aexit__zBaseConnector.__aexit__…  s.   è è € ð �jŠj‰lŒlÐÐÐÐÐÐÐÐÐrV   c                 ó   — | j         S )z1Ultimately close connection on releasing if True.)rØ   rY   s    rT   rÅ   zBaseConnector.force_close�  s   € ð Ô Ð rV   c                 ó   — | j         S )z‘The total number for simultaneous connections.

        If limit is 0 the connector has no limit.
        The default limit size is 100.
        )rÑ   rY   s    rT   rÆ   zBaseConnector.limit’  s   € ð Œ{ÐrV   c                 ó   — | j         S )z¡The limit for simultaneous connections to the same endpoint.

        Endpoints are the same if they are have equal
        (host, port, is_ssl) triple.
        )rÒ   rY   s    rT   rÇ   zBaseConnector.limit_per_host›  s   € ð Ô#Ð#rV   c                 ó–  — | j         r | j                              ¦   «          d| _         t          ¦   «         }| j        }| j        rÔt          t          ¦  «        }||z
  }| j                             ¦   «         D ]š\  }}t          ¦   «         }|D ]}\  }}	|                     ¦   «         r!|	|z
  dk    r| 	                    ||	f¦  «         Œ:|j
        }
|                     ¦   «          | j        s!|j        r| j         	                    |
¦  «         Œ~|r|||<   Œ›|| _        | j        r*t          j        | d|| j        | j        ¬¦  «        | _         dS dS )zCleanup unused transports.Nr   Ú_cleanup©rÉ   )rÝ   Úcancelr   r×   rÐ   r   r   Úitemsr«   rŸ   r›   r§   rá   Úis_sslrâ   r   Úweakref_handlery   rÎ   )rS   ÚnowÚtimeoutrì   Údeadliners   rï   ÚaliveÚprotoÚuse_timer›   s              rT   r   zBaseConnector._cleanup¤  s}  € àÔð 	(ØÔ ×'Ò'Ñ)Ô)Ð)ð $(ˆDÔ å‰kŒkˆØÔ)ˆàŒ;ð 	&Ý%¥eÑ,Ô,ˆKØ˜W‘}ˆHØ"œk×/Ò/Ñ1Ô1ð -ð -‘
��UÝ>C¹g¼g�Ø',ð Jð J‘O�E˜8Ø×)Ò)Ñ+Ô+ð !°¸8Ñ0CÀqÒ0HÐ0HØŸš e¨XÐ%6Ñ7Ô7Ð7Ø Ø %¤�IØ—K’K‘M”M�MØÔ8ð J¸S¼Zð JØÔ7×>Ò>¸yÑIÔIÐIøàð -Ø',�K Ñ$øà%ˆDŒKàŒ;ð 	Ý#*Ô#9ØØØØ”
Ø'+Ô'Cð$ñ $ô $ˆDÔ Ð Ð ð	ð 	rV   c                 ó   — | j         r| j                              ¦   «          | j        D ]}|�|                     ¦   «          Œg | _        | j        s/t          j        | d| j        | j        | j	        ¬¦  «        | _         dS dS )z~Double confirmation for transport close.

        Some broken ssl servers may leave socket open without proper close.
        Nrå   r  )
rÞ   r  râ   r¾   rá   r   r  Ú_cleanup_closed_periodry   rÎ   )rS   r›   s     rT   rå   zBaseConnector._cleanup_closedË  s¡   € ð
 Ô&ð 	1ØÔ'×.Ò.Ñ0Ô0Ð0àÔ8ð 	"ð 	"ˆIØÐ$Ø—’Ñ!Ô!Ð!øà*,ˆÔ'àÔ,ð 	Ý*1Ô*@ØØ!ØÔ+Ø”
Ø'+Ô'Cð+ñ +ô +ˆDÔ'Ð'Ð'ð	ð 	rV   ©Ú	abort_sslr  c                ó2  — |                       |¬¦  «        x}st          t          ¦   «         ¦  «        S t          |¦  «        }t          j        dk    rt          j        || j        d¬¦  «        }n| j         	                    |¦  «        }t          |¦  «        S )a  Close all opened transports.

        :param abort_ssl: If True, SSL connections will be aborted immediately
                         without performing the shutdown handshake. This provides
                         faster cleanup at the cost of less graceful disconnection.
        r  r8   T©ru   Úeager_start)
rî   rK   r2   ro   r   rà   rh   ÚTaskry   Úcreate_task)rS   r  re   ÚcoroÚtasks        rT   r§   zBaseConnector.closeâ  s�   € ð  Ÿ;š;°˜;Ñ;Ô;Ð;�ð 	.õ &¥d¡f¤fÑ-Ô-Ð-Ý˜wÑ'Ô'ˆÝÔ˜wÒ&Ð&õ ”< ¨4¬:À4ÐHÑHÔHˆDˆDà”:×)Ò)¨$Ñ/Ô/ˆDÝ! $Ñ'Ô'Ð'rV   c                ó  — g }| j         r|S d| _         	 | j                             ¦   «         r©|| j                             ¦   «          | j                             ¦   «          | j                             ¦   «         D ]}|D ]}|                     ¦   «          ŒŒ| j                             ¦   «          d | _	        | j
                             ¦   «          d | _        S | j	        r| j	                             ¦   «          | j        r| j                             ¦   «          | j                             ¦   «         D ]t}|D ]o\  }}|r6|j        r/|j                             d¦  «        �|                     ¦   «          n|                     ¦   «          |j        x}r|                     |¦  «         ŒpŒu| j        D ]l}|r6|j        r/|j                             d¦  «        �|                     ¦   «          n|                     ¦   «          |j        x}r|                     |¦  «         Œm| j
        D ]}	|	�|	                     ¦   «          Œ|| j                             ¦   «          | j                             ¦   «          | j                             ¦   «         D ]}|D ]}|                     ¦   «          ŒŒ| j                             ¦   «          d | _	        | j
                             ¦   «          d | _        S # | j                             ¦   «          | j                             ¦   «          | j                             ¦   «         D ]}|D ]}|                     ¦   «          ŒŒ| j                             ¦   «          d | _	        | j
                             ¦   «          d | _        w xY w)NTÚ
sslcontext)rÏ   ry   rŽ   rÐ   ÚclearrÔ   rÙ   rí   r  rÝ   râ   rÞ   r›   Úget_extra_infor¾   r§   r¬   rŸ   )
rS   r  re   Úkeyed_waitersÚkeyed_waiterÚdatar
  Ú_r¬   r›   s
             rT   rî   zBaseConnector._closeö  sÓ  € Ø+-ˆàŒ<ð 	ØˆNàˆŒð4	/ØŒz×#Ò#Ñ%Ô%ð ØðT ŒK×ÒÑÔÐØŒN× Ò Ñ"Ô"Ð"Ø!%¤×!5Ò!5Ñ!7Ô!7ð *ð *�Ø$1ð *ð *�LØ ×'Ò'Ñ)Ô)Ð)Ð)ð*àŒM×ÒÑ!Ô!Ð!Ø#'ˆDÔ ØÔ+×1Ò1Ñ3Ô3Ð3Ø*.ˆDÔ'Ð'ð_ Ô#ð .ØÔ$×+Ò+Ñ-Ô-Ð-ð Ô*ð 5ØÔ+×2Ò2Ñ4Ô4Ð4àœ×*Ò*Ñ,Ô,ð /ð /�Ø $ð 
/ð 
/‘H�E˜1à!ð&à!œOð&ð "œO×:Ò:¸<ÑHÔHÐTàŸš™œ˜˜àŸš™œ˜Ø!&¤Ð-�vð /ØŸš vÑ.Ô.Ð.øð
/ð œð 
+ð 
+�àð"àœð"ð œ×6Ò6°|ÑDÔDÐPà—K’K‘M”M�M�Mà—K’K‘M”M�MØ"œ\Ð)�6ð +Ø—N’N 6Ñ*Ô*Ð*øà!Ô<ð &ð &�	ØÐ(Ø—O’OÑ%Ô%Ð%øàð ŒK×ÒÑÔÐØŒN× Ò Ñ"Ô"Ð"Ø!%¤×!5Ò!5Ñ!7Ô!7ð *ð *�Ø$1ð *ð *�LØ ×'Ò'Ñ)Ô)Ð)Ð)ð*àŒM×ÒÑ!Ô!Ð!Ø#'ˆDÔ ØÔ+×1Ò1Ñ3Ô3Ð3Ø*.ˆDÔ'Ð'øð ŒK×ÒÑÔÐØŒN× Ò Ñ"Ô"Ð"Ø!%¤×!5Ò!5Ñ!7Ô!7ð *ð *�Ø$1ð *ð *�LØ ×'Ò'Ñ)Ô)Ð)Ð)ð*àŒM×ÒÑ!Ô!Ð!Ø#'ˆDÔ ØÔ+×1Ò1Ñ3Ô3Ð3Ø*.ˆDÔ'Ð.Ð.Ð.Ð.s   ”K! ÃE#K! Ë!B)N
c                 ó   — | j         S )z;Is connector closed.

        A readonly property.
        )rÏ   rY   s    rT   r¬   zBaseConnector.closed4  s   € ð Œ|ÐrV   rs   rH   c                 óÞ   — d}| j         r$| j         t          | j        ¦  «        z
  x}dk    r|S | j        x}r6| j                             |¦  «        x}r|t          |¦  «        z  }||k    r|S |S )zå
        Return number of available connections.

        The limit, limit_per_host and the connection key are taken into account.

        If it returns less than 1 means that there are no connections
        available.
        r   r   )rÑ   ÚlenrÔ   rÒ   rÕ   Úget)rS   rs   Útotal_remainÚhost_remainÚacquireds        rT   Ú_available_connectionsz$BaseConnector._available_connections<  s‘   € ð ˆàŒ;ð 	 ¨D¬K½#¸d¼nÑ:MÔ:MÑ,MÐM˜LÐRSÒSÐSØÐð Ô.Ð.ˆ;ð 	#ØÔ2×6Ò6°sÑ;Ô;Ð;ˆxð -Ø�s 8™}œ}Ñ,�Ø˜kÒ)Ð)Ø"Ð"àÐrV   Úreqc                 ó¨  — |j         }|€J ‚i }|j        �|j        }|j        t          j                 |t          j        <   t          t          j        |||j        | j        |j	        ¬¦  «        }|j         
                    t          j        d¦  «        }|�=|                     ¦   «         s||j        t          j        <   n||j        t          j        <   |S )znSet Proxy-Authorization header for non-SSL proxy requests and builds the proxy request for SSL proxy requests.N)ÚheadersÚauthru   Ússl)ÚproxyÚproxy_headersr)  r   ÚHOSTr+   ÚMETH_GETÚ
proxy_authry   r+  ÚpopÚAUTHORIZATIONr  ÚPROXY_AUTHORIZATION)rS   r'  Úurlr)  Ú	proxy_reqr*  s         rT   Ú-_update_proxy_auth_header_and_build_proxy_reqz;BaseConnector._update_proxy_auth_header_and_build_proxy_reqU  sÉ   € ð ŒiˆØˆˆˆØ"$ˆØÔÐ(ØÔ'ˆGØ œ[­¬Ô3ˆ•”	ÑÝ!ÝŒMØØØ”Ø”Ø”ð
ñ 
ô 
ˆ	ð Ô ×$Ò$¥TÔ%7¸Ñ>Ô>ˆØÐØ—:’:‘<”<ð CØ8<�”�DÔ4Ñ5Ð5à>B�	Ô!¥$Ô":Ñ;ØÐrV   ÚtracesrI   r  rG   c              ƒ   ó^  K  — |j         }|                      ||¦  «        ƒ d{V —†x}�|j        r|                      |¦  «         |S t	          |j        |j        ¦  «        4 ƒd{V —† |                      |¦  «        dk    rj|                      ||¦  «        ƒ d{V —† |                      ||¦  «        ƒ d{V —†x}�0|j        r|                      |¦  «         |cddd¦  «        ƒd{V —† S t          t          t          | j        ¦  «        ¦  «        }| j                             |¦  «         | j        r | j        |                              |¦  «         	 |r|D ]}|                     ¦   «         ƒ d{V —† Œ|                      |||¦  «        ƒ d{V —†}|r|D ]}|                     ¦   «         ƒ d{V —† Œ| j        r#|                     ¦   «          t-          d¦  «        ‚n%# t.          $ r |                      ||¦  «         ‚ w xY w	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   | j                             |¦  «         | j                             |¦  «         | j        r7| j        |         }	|	                     |¦  «         |	                     |¦  «         t5          | ||| j        ¦  «        S )z'Get from pool or create new connection.Nr   zConnector is closed.)Úconnection_keyÚ_getr,  r6  r/   ÚconnectÚceil_thresholdr&  Ú_wait_for_available_connectionr   r*   r¸   rä   rÔ   ÚaddrÒ   rÕ   Úsend_connection_create_startÚ_create_connectionÚsend_connection_create_endrÏ   r§   r   ÚBaseExceptionÚ_release_acquiredÚremoverq   ry   )
rS   r'  r7  r  rs   ÚconnÚplaceholderÚtracer
  Úacquired_per_hosts
             rT   r;  zBaseConnector.connecto  s/  è è € ð Ô ˆØŸ)š) C¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ˆDÐ=ð Œyð HØ×BÒBÀ3ÑGÔGÐGØˆKå ¤°Ô1GÑHÔHð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	HØ×*Ò*¨3Ñ/Ô/°1Ò4Ð4Ø×9Ò9¸#¸vÑFÔFÐFÐFÐFÐFÐFÐFÐFØ"&§)¢)¨C°Ñ"8Ô"8Ð8Ð8Ð8Ð8Ð8Ð8Ð8�DÐEØ”yð PØ×JÒJÈ3ÑOÔOÐOØð 	Hð  	Hð  	Hð  	Hñ  	Hô  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hõ ÝÕ!6°tÔ7OÑ!PÔ!Pñô ˆKð ŒN×Ò˜{Ñ+Ô+Ð+ØÔ#ð >ØÔ'¨Ô,×0Ò0°Ñ=Ô=Ð=ðHð ð CØ!'ð Cð C˜Ø#×@Ò@ÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBØ"×5Ò5°c¸6À7ÑKÔKÐKÐKÐKÐKÐKÐK�Øð AØ!'ð Að A˜Ø#×>Ò>Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð
 ”<ð HØ—K’K‘M”M�MÝ/Ð0FÑGÔGÐGðHøõ	 !ð ð ð Ø×&Ò& s¨KÑ8Ô8Ð8ØðøøøðHð= 	Hð  	Hð  	Hñ  	Hô  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Hð  	Høøøð  	Hð  	Hð  	Hð  	HðN 	Œ×Ò˜kÑ*Ô*Ð*ØŒ×Ò˜5Ñ!Ô!Ð!ØÔð 	)Ø $Ô 7¸Ô <ÐØ×$Ò$ [Ñ1Ô1Ð1Ø×!Ò! %Ñ(Ô(Ð(Ý˜$  U¨D¬JÑ7Ô7Ð7s3   Á&A1HÃ*A(HÅAGÆ2+HÇ"G?Ç?HÈ
HÈ"Hc              ƒ   ó^  K  — d}	 | j                              ¦   «         }| j        |         }d||<   |r|                     |d¬¦  «         	 |r|D ]}|                     ¦   «         ƒ d{V —† Œ|ƒ d{V —† |r|D ]}|                     ¦   «         ƒ d{V —† Œ|                     |d¦  «         | j                             |d¦  «        s| j        |= n># |                     |d¦  «         | j                             |d¦  «        s| j        |= w xY w|                      |¦  «        dk    rdS |dz  }�Œ))z&Wait for an available connection slot.r   TNF©Úlastr   )	ry   rã   rÙ   Úmove_to_endÚsend_connection_queued_startÚsend_connection_queued_endr1  r"  r&  )rS   rs   r7  ÚattemptsÚfutr  rG  s          rT   r=  z,BaseConnector._wait_for_available_connectionª  sª  è è € ð ˆð	Ø(,¬
×(@Ò(@Ñ(BÔ(BˆCØ œM¨#Ô.ˆMØ!%ˆM˜#ÑØð ;ð ×)Ò)¨#°EÐ)Ñ:Ô:Ð:ð+ð ð CØ!'ð Cð C˜Ø#×@Ò@ÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBØ�	�	�	�	�	�	�	Øð AØ!'ð Að A˜Ø#×>Ò>Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð ×!Ò! # tÑ,Ô,Ð,Ø”}×(Ò(¨¨dÑ3Ô3ð +Øœ cÐ*øøð ×!Ò! # tÑ,Ô,Ð,Ø”}×(Ò(¨¨dÑ3Ô3ð +Øœ cÐ*Ð*Ð*Ð*Ð*à×*Ò*¨3Ñ/Ô/°!Ò3Ð3Ø�Ø˜‰MˆHñ;	s   ÁA
C Ã;D
c              ƒ   óÈ  K  — | j                              |¦  «        x}€dS t          ¦   «         }|�r(|                     ¦   «         \  }}|                     ¦   «         r·||z
  | j        k    r©|s| j         |= | j                             |¦  «         | j        r | j	        |                              |¦  «         |rE|D ]B}	 | 
                    ¦   «         ƒ d{V —† Œ# t          $ r |                      ||¦  «         ‚ w xY wt          | ||| j        ¦  «        S |j        }|                     ¦   «          | j        s!|j        r| j                             |¦  «         |�°(| j         |= dS )znGet next reusable connection for the key or None.

        The connection will be marked as acquired.
        N)rÐ   r"  r   Úpopleftr«   r×   rÔ   r>  rÒ   rÕ   Úsend_connection_reuseconnrB  rC  rq   ry   r›   r§   rá   r  râ   rŸ   )	rS   rs   r7  rï   Út1r
  Út0rG  r›   s	            rT   r:  zBaseConnector._getÔ  s®  è è € ð ”[—_’_ SÑ)Ô)Ð)ˆEÐ2Ø�4å‰[Œ[ˆØñ 	BØŸš™œ‰IˆE�2ð ×!Ò!Ñ#Ô#ð @¨¨R©°4Ô3JÒ(JÐ(JØð )àœ CÐ(Ø”×"Ò" 5Ñ)Ô)Ð)ØÔ'ð <ØÔ+¨CÔ0×4Ò4°UÑ;Ô;Ð;Øð "Ø!'ð "ð "˜ð"Ø"'×"AÒ"AÑ"CÔ"CÐCÐCÐCÐCÐCÐCÐCÐCøÝ,ð "ð "ð "Ø ×2Ò2°3¸Ñ>Ô>Ð>Ø!ð"øøøõ " $¨¨U°D´JÑ?Ô?Ð?ð œˆIØ�KŠK‰MŒMˆMàÔ0ð B°S´Zð BØÔ/×6Ò6°yÑAÔAÐAð3 ñ 	Bð8 ŒK˜ÐØˆts   Â=CÃ"C:c                 óR  — | j         sdS t          | j         ¦  «        }t          j        |¦  «         |D ]r}|                      |¦  «        dk     rŒ| j         |         }|rG|                     d¬¦  «        \  }}|                     ¦   «         s|                     d¦  «          dS |°GŒsdS )z¼
        Iterates over all waiters until one to be released is found.

        The one to be released is not finished and
        belongs to a host that has available connections.
        Nr   FrJ  )rÙ   ÚlistÚrandomÚshuffler&  ÚpopitemÚdoner5   )rS   Úqueuesrs   re   Úwaiterr  s         rT   Ú_release_waiterzBaseConnector._release_waiterþ  sÊ   € ð Œ}ð 	ØˆFõ �d”mÑ$Ô$ˆÝŒ�vÑÔÐàð 		ð 		ˆCØ×*Ò*¨3Ñ/Ô/°!Ò3Ð3Øà”m CÔ(ˆGØð Ø#ŸOšO°˜OÑ7Ô7‘	�˜Ø—{’{‘}”}ð Ø×%Ò% dÑ+Ô+Ð+Ø�F�Fð	 ð øð		ð 		rV   r
  c                 óø   — | j         rdS | j                             |¦  «         | j        r;| j                             |¦  «        x}r|                     |¦  «         |s| j        |= |                      ¦   «          dS )zRelease acquired connection.N)rÏ   rÔ   ÚdiscardrÒ   rÕ   r"  r^  )rS   rs   r
  rï   s       rT   rC  zBaseConnector._release_acquired  sŒ   € àŒ<ð 	àˆFàŒ×Ò˜uÑ%Ô%Ð%ØÔð 	1¨dÔ.E×.IÒ.IÈ#Ñ.NÔ.NÐ%N Uð 	1Ø�MŠM˜%Ñ Ô Ð Øð 1ØÔ+¨CÐ0Ø×ÒÑÔÐÐÐrV   rˆ   rt   r‰   c                ó¶  — | j         rd S |                      ||¦  «         | j        s	|s|j        rE|j        }|                     ¦   «          |j        r!| j        s| j         	                    |¦  «         d S | j
        |          	                    |t          ¦   «         f¦  «         | j        €/t          j        | d| j        | j        | j        ¬¦  «        | _        d S d S )Nr   r  )rÏ   rC  rØ   r‰   r›   r§   r  rá   râ   rŸ   rÐ   r   rÝ   r   r  r×   ry   rÎ   )rS   rs   rt   r‰   r›   s        rT   r�   zBaseConnector._release%  sû   € ð Œ<ð 	àˆFà×Ò˜s HÑ-Ô-Ð-àÔð 	 ð 	°Ô0Eð 	Ø Ô*ˆIØ�NŠNÑÔÐàŒzð B $Ô"?ð BØÔ/×6Ò6°yÑAÔAÐAØˆFàŒ�CÔ×Ò ­9©;¬;Ð 7Ñ8Ô8Ð8àÔÐ'Ý#*Ô#9ØØØÔ'Ø”
Ø'+Ô'Cð$ñ $ô $ˆDÔ Ð Ð ð (Ð'rV   c              ƒ   ó"   K  — t          ¦   «         ‚rš   )ÚNotImplementedError)rS   r'  r7  r  s       rT   r@  z BaseConnector._create_connectionE  s   è è € õ "Ñ#Ô#Ð#rV   )rP   rC   )NNNr_   )2r`   ra   rb   r¶   rÏ   r�   r  ÚHIGH_LEVEL_SCHEMA_SETÚallowed_protocol_schema_setr3   ÚobjectrÖ   r±   Úintrh   r­   rU   r[   r   r^   rñ   rô   rö   ÚtyperB  r   rû   r¯   rÅ   rÆ   rÇ   r   rå   r   r§   rW  rî   r¬   r&  r+   r6  rq   r;  r=  r:  r^  r*   rC  r�   r@  rd   rV   rT   rC   rC   þ   sŽ  € € € € € ðð ð €GØÐð !Ðà"7Ðð
 4<Ø!ØØØ&+Ø15Ø()ðKð Kð Kð " D™=¨5Ñ0ðKð ð	Kð
 ðKð ðKð  $ðKð Ô'¨$Ñ.ðKð !&ðKð 
ðKð Kð Kð KðZ (0ð 3ð 3 ð 3°Dð 3ð 3ð 3ð 3ð*ð ð ð ð˜Sð  Tð ð ð ð ðð ð ð ð
 04Ø*.Ø.2ð	ð à�}Ô%¨Ñ,ðð ! 4Ñ'ðð % tÑ+ð	ð
 
ðð ð ð ð ð!˜Tð !ð !ð !ñ „Xð!ð ð�sð ð ð ñ „Xðð ð$ ð $ð $ð $ñ „Xð$ð%ð %ð %ð %ðNð ð ð ð. */ð (ð (ð ( $ð (°9¸T´?ð (ð (ð (ð (ð( +0ð </ð </ð </ 4ð </°D¸À6Ô9JÔ4Kð </ð </ð </ð </ð| ð˜ð ð ð ñ „Xðð¨/ð ¸cð ð ð ð ð2Ø ðà	ðð ð ð ð498Ø ð98Ø*.¨w¬-ð98ØBQð98à	ð98ð 98ð 98ð 98ðv(Ø"ð(Ø,0°¬Mð(à	ð(ð (ð (ð (ðT(Ø"ð(Ø,0°¬Mð(à	�dÑ	ð(ð (ð (ð (ðTð ð ð ð4 _ð ¸_ð ÐQUð ð ð ð ð$ #ðð ð àðð "ðð
 ðð 
ðð ð ð ð@$Ø ð$Ø*.¨w¬-ð$ØBQð$à	ð$ð $ð $ð $ð $ð $rV   rC   c                   óÞ   — e Zd Zddedz  deddfd„Zdedefd„Zd	e	e
ef         d
ee         ddfd„Zd	e	e
ef         ddfd„Zdd„Zd	e	e
ef         dee         fd„Zd	e	e
ef         defd„ZdS )Ú_DNSCacheTableNéè  ÚttlÚmax_sizerP   c                 óV   — t          ¦   «         | _        i | _        || _        || _        d S rš   )r   Ú	_addrs_rrÚ_timestampsÚ_ttlÚ	_max_size)rS   rl  rm  s      rT   rU   z_DNSCacheTable.__init__L  s.   € õ ‰MŒMð 	Œð :<ˆÔØˆŒ	Ø!ˆŒˆˆrV   Úhostc                 ó   — || j         v S rš   )ro  )rS   rs  s     rT   Ú__contains__z_DNSCacheTable.__contains__T  s   € Ø�t”~Ð%Ð%rV   rs   Úaddrsc                 ó‚  — || j         v r| j                              |¦  «         t          |¦  «        t          |¦  «        f| j         |<   | j        �t          ¦   «         | j        |<   t          | j         ¦  «        | j        k    r;| j                              d¬¦  «        \  }}| j         	                    |d ¦  «         d S d S )NFrJ  )
ro  rL  r   r!  rq  r   rp  rr  rZ  r1  )rS   rs   rv  Ú
oldest_keyr  s        rT   r>  z_DNSCacheTable.addW  sµ   € Ø�$”.Ð Ð ØŒN×&Ò& sÑ+Ô+Ð+å$ U™|œ|­S°©Z¬ZÐ8ˆŒ�sÑàŒ9Ð Ý$-¡K¤KˆDÔ˜SÑ!åˆtŒ~ÑÔ ¤Ò/Ð/Ø œN×2Ò2¸Ð2Ñ>Ô>‰MˆJ˜ØÔ× Ò  ¨TÑ2Ô2Ð2Ð2Ð2ð 0Ð/rV   c                 ór   — | j                              |d ¦  «         | j                             |d ¦  «         d S rš   )ro  r1  rp  ©rS   rs   s     rT   rD  z_DNSCacheTable.removed  s9   € ØŒ×Ò˜3 Ñ%Ô%Ð%ØÔ×Ò˜S $Ñ'Ô'Ð'Ð'Ð'rV   c                 ój   — | j                              ¦   «          | j                             ¦   «          d S rš   )ro  r  rp  rY   s    rT   r  z_DNSCacheTable.clearh  s1   € ØŒ×ÒÑÔÐØÔ×ÒÑ Ô Ð Ð Ð rV   c                 ó²   — | j         |         \  }}t          t          ||¦  «        ¦  «        }t          |¦  «         | j                              |¦  «         |S rš   )ro  rW  r   ÚnextrL  )rS   rs   ru   Úlengthrv  s        rT   Ú
next_addrsz_DNSCacheTable.next_addrsl  sO   € Ø”~ cÔ*‰ˆˆfÝ•V˜D &Ñ)Ô)Ñ*Ô*ˆåˆT‰
Œ
ˆ
ØŒ×"Ò" 3Ñ'Ô'Ð'ØˆrV   c                 ó^   — | j         €dS | j        |         | j         z   t          ¦   «         k     S rR   )rq  rp  r   rz  s     rT   Úexpiredz_DNSCacheTable.expiredt  s-   € ØŒ9ÐØ�5àÔ Ô$ t¤yÑ0µ9±;´;Ò>Ð>rV   )Nrk  r_   )r`   ra   rb   rÖ   rg  rU   rf  r±   ru  Útupler®   rW  r   r>  rD  r  r  r�  rd   rV   rT   rj  rj  K  s5  € € € € € ð"ð "˜E D™Lð "¸3ð "È$ð "ð "ð "ð "ð& ð &¨Dð &ð &ð &ð &ð3�u˜S #˜X”ð 3¨t°MÔ/Bð 3Àtð 3ð 3ð 3ð 3ð(˜%  S œ/ð (¨dð (ð (ð (ð (ð!ð !ð !ð !ð˜e C¨ Hœoð °$°}Ô2Eð ð ð ð ð?˜5  c œ?ð ?¨tð ?ð ?ð ?ð ?ð ?ð ?rV   rj  Úverifiedc                 óž  — t           €dS | rt          j        ¦   «         }n˜t          j        t           j        ¦  «        }|xj        t           j        z  c_        |xj        t           j        z  c_        d|_        t           j        |_	        |xj        t           j
        z  c_        |                     ¦   «          |                     d¦  «         |S )z­Create SSL context.

    This method is not async-friendly and should be called from a thread
    because it will load certificates from disk and do other blocking I/O.
    NF)zhttp/1.1)r+  Úcreate_default_contextÚ
SSLContextÚPROTOCOL_TLS_CLIENTÚoptionsÚOP_NO_SSLv2ÚOP_NO_SSLv3Úcheck_hostnameÚ	CERT_NONEÚverify_modeÚOP_NO_COMPRESSIONÚset_default_verify_pathsÚset_alpn_protocols)rƒ  r  s     rT   Ú_make_ssl_contextr‘  {  s¹   € õ €{àˆtØð 	.ÝÔ/Ñ1Ô1ˆ
ˆ
å”^¥CÔ$;Ñ<Ô<ˆ
ØÐÔ�cœoÑ-ÐÔØÐÔ�cœoÑ-ÐÔØ$)ˆ
Ô!Ý!$¤ˆ
ÔØÐÔ�cÔ3Ñ3ÐÔØ×+Ò+Ñ-Ô-Ð-Ø×!Ò! -Ñ0Ô0Ð0ØÐrV   TFc            ,       óÒ  ‡ — e Zd ZdZe edh¦  «        z  Zdddddej        j	        dddde
ddd	ddd
ddde
dœdededz  dededz  dedej        dedz  deez  ez  deeef         dz  dedz  ddez  ez  dededededej        dz  dededz  dedz  d edz  d!edz  ez  f*ˆ fd"„Zdd#œd$ed%eee                  fˆ fd&„Zdd#œd$ed%dfˆ fd'„Zed%efd(„¦   «         Zed%efd)„¦   «         Z dMd*edz  d+edz  d%dfd,„Z!	 dNd*ed+ed-e"d.         dz  d%ee#         fd/„Z$d0eeef         d*ed+ed1e%d2         d-e"d.         dz  d%ee#         fd3„Z&d4e'd-ed.         d5d6d%e(fd7„Z)d4e'd%edz  fd8„Z*d4e'd%e+d9         fd:„Z,e-d;œd<e.d=ee/         d4e'd5d6d>e0e1         d?e.d%eej2        e(f         fd@„Z3e-d;œd<e.d4e'd5d6d>e0e1         d?e.d%eej2        e(f         fdA„Z4dOdC„Z5dPdD„Z6d%efdE„Z7dFej2        d4e'd%dfdG„Z8e-fdFej2        d4e'd5d6d>e0e1         d%eej9        e(f         f
dH„Z:dIee#         d%ee/         fdJ„Z;e-d;œd4e'd-ed.         d5d6d>e0e1         d%eej2        e(f         f
dK„Z<d4e'd-ed.         d5d6d%eej9        e(f         fdL„Z=ˆ xZ>S )QrD   uæ  TCP connector.

    verify_ssl - Set to True to check ssl certifications.
    fingerprint - Pass the binary sha256
        digest of the expected certificate in DER format to verify
        that the certificate the server presents matches. See also
        https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning
    resolver - Enable DNS lookups and use this
        resolver
    use_dns_cache - Use memory cache for DNS lookups.
    ttl_dns_cache - Max seconds having cached a DNS entry, None forever.
    family - socket address family
    local_addr - local tuple of (host, port) to bind socket to

    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    enable_cleanup_closed - Enables clean-up closed ssl transports.
                            Disabled by default.
    happy_eyeballs_delay - This is the â€œConnection Attempt Delayâ€�
                           as defined in RFC 8305. To disable
                           the happy eyeballs algorithm, set to None.
    interleave - â€œFirst Address Family Countâ€� as defined in RFC 8305
    loop - Optional event loop.
    socket_factory - A SocketFactoryType function that, if supplied,
                     will be used to create sockets given an
                     AddrInfoType.
    ssl_shutdown_timeout - DEPRECATED. Will be removed in aiohttp 4.0.
                           Grace period for SSL shutdown handshake on TLS
                           connections. Default is 0 seconds (immediate abort).
                           This parameter allowed for a clean SSL shutdown by
                           notifying the remote peer of connection closure,
                           while avoiding excessive delays during connector cleanup.
                           Note: Only takes effect on Python 3.11+.
    ÚtcpTNé
   rk  FrÁ   r   rÂ   g      Ð?)Ú
verify_sslÚfingerprintÚuse_dns_cacheÚttl_dns_cacheÚdns_cache_max_sizeÚfamilyÚssl_contextr+  Ú
local_addrÚresolverrÄ   rÅ   rÆ   rÇ   rÈ   ru   rÉ   Úhappy_eyeballs_delayÚ
interleaveÚsocket_factoryÚssl_shutdown_timeoutr•  r–  r—  r˜  r™  rš  r›  r+  rœ  r�  rÄ   rÅ   rÆ   rÇ   rÈ   ru   rÉ   rž  rŸ  r   r¡  c          	      ó¤  •— t          ¦   «                              |||||||¬¦  «         t          ||||¦  «        | _        |  |
€"t	          | j        ¬¦  «        | _        d| _        n|
| _        d| _        || _        t          ||¬¦  «        | _
        i | _        || _        t          j        |	¦  «        | _        || _        || _        t%          ¦   «         | _        || _        |  |t*          u r	d| _        d S t/          j        dt2          d¬	¦  «         t4          j        d
k     r(|�&|dk    r t/          j        d|› d�t8          d¬	¦  «         || _        d S )NrÃ   rË   TF)rl  rm  r   zSThe ssl_shutdown_timeout parameter is deprecated and will be removed in aiohttp 4.0r–   r—   ©r9   é   zssl_shutdown_timeout=zd is ignored on Python < 3.11; only ssl_shutdown_timeout=0 is supported. The timeout will be ignored.)ÚsuperrU   r-   Ú_sslr7   ry   Ú	_resolverÚ_resolver_ownerÚ_use_dns_cacherj  Ú_cached_hostsÚ_throttle_dns_futuresÚ_familyÚaiohappyeyeballsÚaddr_to_addr_infosÚ_local_addr_infosÚ_happy_eyeballs_delayÚ_interleaverÓ   Ú_resolve_host_tasksÚ_socket_factoryr3   Ú_ssl_shutdown_timeoutr[   r\   r]   r   rà   ÚRuntimeWarning)rS   r•  r–  r—  r˜  r™  rš  r›  r+  rœ  r�  rÄ   rÅ   rÆ   rÇ   rÈ   ru   rÉ   rž  rŸ  r   r¡  Ú	__class__s                         €rT   rU   zTCPConnector.__init__Ã  s¬  ø€ õ2 	‰Œ×ÒØ/Ø#ØØ)Ø"7ØØ#9ð 	ñ 	
ô 	
ð 	
õ & c¨:°{ÀKÑPÔPˆŒ	àÐ(ØÐÝ,°$´*Ð=Ñ=Ô=ˆDŒNØ#'ˆDÔ Ð à%ˆDŒNØ#(ˆDÔ à+ˆÔÝ+ØÐ(:ð
ñ 
ô 
ˆÔð ð 	Ô"ð ˆŒÝ!1Ô!DÀZÑ!PÔ!PˆÔØ%9ˆÔ"Ø%ˆÔÝKNÉ5Ì5ˆÔ Ø-ˆÔØÐ0à¥8Ð+Ð+Ø)*ˆDÔ&Ð&Ð&õ ŒMØeÝ"Øðñ ô ð õ Ô  7Ò*Ð*Ø(Ð4Ø(¨AÒ-Ð-å”ð]Ð,@ð ]ð ]ð ]å"Ø ð	ñ ô ð ð *>ˆDÔ&Ð&Ð&rV   r  r  rP   c                ó6  •— t          j        | j                             ¦   «         ¦  «        D ]}|                     ¦   «          Œt          ¦   «                              |¬¦  «        }| j        D ]+}|                     ¦   «          |                     |¦  «         Œ,|S )zClose all ongoing DNS calls.r  )	r   Úfrom_iterabler«  rí   r  r¥  rî   r²  rŸ   )rS   r  rP  re   Útr¶  s        €rT   rî   zTCPConnector._close  s‹   ø€ åÔ& tÔ'A×'HÒ'HÑ'JÔ'JÑKÔKð 	ð 	ˆCØ�JŠJ‰LŒLˆLˆLå‘'”'—.’.¨9�.Ñ5Ô5ˆàÔ)ð 	ð 	ˆAØ�HŠH‰JŒJˆJØ�NŠN˜1ÑÔÐÐàˆrV   c             ƒ   óÂ   •K  — t          ¦   «                              |p
| j        dk    ¬¦  «        ƒ d{V —† | j        r!| j                             ¦   «         ƒ d{V —† dS dS )aÆ  
        Close all opened transports.

        :param abort_ssl: If True, SSL connections will be aborted immediately
                         without performing the shutdown handshake. If False (default),
                         the behavior is determined by ssl_shutdown_timeout:
                         - If ssl_shutdown_timeout=0: connections are aborted
                         - If ssl_shutdown_timeout>0: graceful shutdown is performed
        r   r  N)r¥  r§   r´  r¨  r§  )rS   r  r¶  s     €rT   r§   zTCPConnector.close"  s‚   øè è € õ ‰gŒg�mŠm iÐ&R°4Ô3MÐQRÒ3RˆmÑSÔSÐSÐSÐSÐSÐSÐSÐSØÔð 	)Ø”.×&Ò&Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð	)ð 	)rV   c                 ó   — | j         S )zSocket family like AF_INET.)r¬  rY   s    rT   rš  zTCPConnector.family1  s   € ð Œ|ÐrV   c                 ó   — | j         S )z%True if local DNS caching is enabled.)r©  rY   s    rT   r—  zTCPConnector.use_dns_cache6  s   € ð Ô"Ð"rV   rs  Úportc                 ó¢   — |� |�| j                              ||f¦  «         dS |€|�t          d¦  «        ‚| j                              ¦   «          dS )z8Remove specified host/port or clear all dns local cache.Nz5either both host and port or none of them are allowed)rª  rD  rÌ   r  )rS   rs  r½  s      rT   Úclear_dns_cachezTCPConnector.clear_dns_cache;  sc   € àÐ Ð 0ØÔ×%Ò% t¨T lÑ3Ô3Ð3Ð3Ð3ØÐ Ð!1ÝÐTÑUÔUÐUàÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&rV   r7  rI   c              ƒ   ó  K  — t          |¦  «        r2d|vrt          |¦  «        st          |d¦  «        ‚|||| j        dddœgS | j        s„|r |D ]}|                     |¦  «        ƒ d{V —† Œ| j        rt          d¦  «        ‚| j         	                    ||| j        ¬¦  «        ƒ d{V —†}|r |D ]}| 
                    |¦  «        ƒ d{V —† Œ|S ||f}|| j        v rX| j                             |¦  «        s>| j                             |¦  «        }|r |D ]}|                     |¦  «        ƒ d{V —† Œ|S || j        v r°| j        |         }| j                             ¦   «         }	|                     |	¦  «         |r |D ]}|                     |¦  «        ƒ d{V —† Œ	 |	ƒ d{V —† |                     |	¦  «         n# |                     |	¦  «         w xY w| j                             |¦  «        S t)          ¦   «         x| j        |<   }|                      |||||¦  «        }
t-          j        ¦   «         }t0          j        dk    rt-          j        |
|d	¬
¦  «        }n|                     |
¦  «        }|                     ¦   «         s9| j                             |¦  «         |                     | j        j        ¦  «         	 t-          j        |¦  «        ƒ d{V —†S # t,          j         $ r dd„}|                     |¦  «         ‚ w xY w)z*Resolve host and return list of addresses.ú:zis not a canonical IPv4 addressr   )Úhostnamers  r½  rš  r
  ÚflagsNzConnector is closed©rš  r8   Tr  rP  ú#asyncio.Future[list[ResolveResult]]rP   c                 óž   — t          t          t          j        ¦  «        5  |                      ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S rš   )r
   rk   rh   ÚCancelledErrorÚresult)rP  s    rT   Údrop_exceptionz2TCPConnector._resolve_host.<locals>.drop_exception   s†   € Ý�i­Ô)?Ñ@Ô@ð !ð !Ø—J’J‘L”L�Lð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s    AÁAÁ	A)rP  rÅ  rP   N)!r1   r0   r%   r¬  r©  Úsend_dns_resolvehost_startrÏ   r   r§  ÚresolveÚsend_dns_resolvehost_endrª  r�  r  Úsend_dns_cache_hitr«  ry   rã   r>  r`  rÓ   Ú_resolve_host_with_throttlerh   rÍ   r   rà   r  r  r[  r²  Úadd_done_callbackÚshieldrÇ  )rS   rs  r½  r7  rG  rn   rs   rÈ  ÚfuturesÚfuturer  ru   Úresolved_host_taskrÉ  s                 rT   Ú_resolve_hostzTCPConnector._resolve_hostD  sç  è è € õ ˜ÑÔð 	ð ˜$ˆˆÕ'@ÀÑ'FÔ'FˆÝ+¨DÐ2SÑTÔTÐTð !%Ø Ø Ø"œlØØðð ð	ð 	ð Ô"ð 	àð AØ#ð Að A�EØ×:Ò:¸4Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@àŒ|ð CÝ+Ð,AÑBÔBÐBàœ×.Ò.¨t°TÀ$Ä,Ð.ÑOÔOÐOÐOÐOÐOÐOÐOˆCàð ?Ø#ð ?ð ?�EØ×8Ò8¸Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>àˆJà�TˆlˆØ�$Ô$Ð$Ð$¨TÔ-?×-GÒ-GÈÑ-LÔ-LÐ$àÔ'×2Ò2°3Ñ7Ô7ˆFàð 9Ø#ð 9ð 9�EØ×2Ò2°4Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØˆMð �$Ô,Ð,Ð,àÔ0°Ô5ˆGØ+/¬:×+CÒ+CÑ+EÔ+EˆFØ�KŠK˜ÑÔÐØð 9Ø#ð 9ð 9�EØ×2Ò2°4Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ð(Ø�������à—’ Ñ'Ô'Ð'Ð'ø�—’ Ñ'Ô'Ð'Ð'øøøØÔ%×0Ò0°Ñ5Ô5Ð5õ 58±E´EÐ9ˆÔ" 3Ñ'¨'ð ×/Ò/°°T¸4ÀÈ&ÑQÔQˆÝÔ'Ñ)Ô)ˆÝÔ˜wÒ&Ð&å!(¤¨d¸È4Ð!PÑ!PÔ!PÐÐà!%×!1Ò!1°$Ñ!7Ô!7Ðà!×&Ò&Ñ(Ô(ð 	SØÔ$×(Ò(Ð);Ñ<Ô<Ð<Ø×0Ò0°Ô1IÔ1QÑRÔRÐRð		Ý œÐ(:Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;øÝÔ%ð 	ð 	ð 	ð!ð !ð !ð !ð ×0Ò0°Ñ@Ô@Ð@Øð	øøøs   ÆF9 Æ9GÊ<K Ë*L rs   rÑ  zasyncio.Future[None]c              ƒ   ó|  K  — 	 |r@|D ]}|                      |¦  «        ƒ d{V —† Œ|D ]}|                     |¦  «        ƒ d{V —† Œ| j                             ||| j        ¬¦  «        ƒ d{V —†}|r |D ]}|                     |¦  «        ƒ d{V —† Œ| j                             ||¦  «         |D ]}t          |d¦  «         Œn(# t          $ r}	|D ]}t          ||	¦  «         Œ‚ d}	~	ww xY w	 | j                             |¦  «         n# | j                             |¦  «         w xY w| j                             |¦  «        S )z²Resolve host and set result for all waiters.

        This method must be run in a task and shielded from cancellation
        to avoid cancelling the underlying lookup.
        NrÄ  )Úsend_dns_cache_missrÊ  r§  rË  r¬  rÌ  rª  r>  r5   rB  r4   r«  r1  r  )
rS   rs   rs  r½  rÑ  r7  rG  rv  rP  Úes
             rT   rÎ  z(TCPConnector._resolve_host_with_throttle§  sÑ  è è € ð	0Øð AØ#ð :ð :�EØ×3Ò3°DÑ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9à#ð Að A�EØ×:Ò:¸4Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@àœ.×0Ò0°°tÀDÄLÐ0ÑQÔQÐQÐQÐQÐQÐQÐQˆEØð ?Ø#ð ?ð ?�EØ×8Ò8¸Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>àÔ×"Ò" 3¨Ñ.Ô.Ð.Øð &ð &�Ý˜3 Ñ%Ô%Ð%Ð%ð&øåð 	ð 	ð 	ð ð &ð &�Ý˜c 1Ñ%Ô%Ð%Ð%Øøøøøð	øøøð&ð Ô&×*Ò*¨3Ñ/Ô/Ð/Ð/øˆDÔ&×*Ò*¨3Ñ/Ô/Ð/Ð/øøøàÔ!×,Ò,¨SÑ1Ô1Ð1s*   „B<C Ã D Ã
C&ÃC!Ã!C&Ã&D ÄD!r'  r  rG   c              ƒ   óš   K  — |j         r!|                      |||¦  «        ƒ d{V —†\  }}n |                      |||¦  «        ƒ d{V —†\  }}|S )zcCreate connection.

        Has same keyword arguments as BaseEventLoop.create_connection.
        N)r,  Ú_create_proxy_connectionÚ_create_direct_connection)rS   r'  r7  r  r  r
  s         rT   r@  zTCPConnector._create_connectionÐ  st   è è € ð Œ9ð 	RØ!×:Ò:¸3ÀÈÑPÔPÐPÐPÐPÐPÐPÐP‰HˆAˆuˆuà!×;Ò;¸CÀÈÑQÔQÐQÐQÐQÐQÐQÐQ‰HˆAˆuàˆrV   c                 ó   — |                      ¦   «         sdS t          €t          d¦  «        ‚|j        }t          |t          j        ¦  «        r|S |durt
          S | j        }t          |t          j        ¦  «        r|S |durt
          S t          S )a*  Logic to get the correct SSL context

        0. if req.ssl is false, return None

        1. if ssl_context is specified in req, use it
        2. if _ssl_context is specified in self, use it
        3. otherwise:
            1. if verify_ssl is not specified in req, use self.ssl_context
               (will generate a default context according to self.verify_ssl)
            2. if verify_ssl is True in req, generate a default SSL context
            3. if verify_ssl is False in req, generate a SSL context that
               won't verify
        NzSSL is not supported.T)r  r+  ÚRuntimeErrorrj   r†  Ú_SSL_CONTEXT_UNVERIFIEDr¦  Ú_SSL_CONTEXT_VERIFIED)rS   r'  r  s      rT   Ú_get_ssl_contextzTCPConnector._get_ssl_contextÞ  s—   € ð �zŠz‰|Œ|ð 	Ø�4åˆ;ÝÐ6Ñ7Ô7Ð7Ø”Wˆ
Ý�j¥#¤.Ñ1Ô1ð 	ØÐØ˜TÐ!Ð!å*Ð*Ø”Yˆ
Ý�j¥#¤.Ñ1Ô1ð 	ØÐØ˜TÐ!Ð!å*Ð*Ý$Ð$rV   r,   c                 ó~   — |j         }t          |t          ¦  «        r|S | j        }t          |t          ¦  «        r|S d S rš   )r+  rj   r,   r¦  )rS   r'  Úrets      rT   Ú_get_fingerprintzTCPConnector._get_fingerprintÿ  sC   € ØŒgˆÝ�c�;Ñ'Ô'ð 	ØˆJØŒiˆÝ�c�;Ñ'Ô'ð 	ØˆJØˆtrV   ©Úclient_errorÚargsÚ
addr_infosrä  r‘   c          	   �   óÄ  K  — 	 t          |j        |j        ¬¦  «        4 ƒd {V —† t          j        || j        | j        | j        | j        | j	        ¬¦  «        ƒ d {V —†}| 
                    d¦  «        r!| j        rt          j        dk    r
| j        |d<    | j        j        |i |¤d|i¤Žƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S # t          $ r}t!          |j        |¦  «        |‚d }~wt$          $ r}t'          |j        |¦  «        |‚d }~wt(          $ r9}|j        €t-          |t.          j        ¦  «        r‚  ||j        |¦  «        |‚d }~ww xY w)N©r<  )ræ  Úlocal_addr_infosrž  rŸ  ru   r   r+  r£  r¡  Úsock)r/   Úsock_connectr<  r­  Ústart_connectionr¯  r°  r±  ry   r³  r"  r´  r   rà   Úcreate_connectionr(   r   r9  r)   r"   ÚOSErrorÚerrnorj   rh   ÚTimeoutError)	rS   ræ  r'  r  rä  rå  r‘   rê  rò   s	            rT   Ú_wrap_create_connectionz$TCPConnector._wrap_create_connection  s“  è è € ð	AÝ#ØÔ$°WÔ5Kðñ ô ð Vð Vð Vð Vð Vð Vð Vð Võ .Ô>Ø)Ø%)Ô%;Ø)-Ô)CØ#Ô/ØœØ#'Ô#7ðñ ô ð ð ð ð ð ð �ð —J’J˜uÑ%Ô%ðPàÔ2ðPõ Ô(¨GÒ3Ð3à59Ô5O�FÐ1Ñ2Ø9˜TœZÔ9¸4ÐUÀ6ÐUÐUÐPTÐUÐUÐUÐUÐUÐUÐUÐUÐUð%Vð Vð Vð Vñ Vô Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vøøøð Vð Vð Vð Vð Vð Vøõ& ð 	Tð 	Tð 	TÝ1°#Ô2DÀcÑJÔJÐPSÐSøøøøÝð 	Lð 	Lð 	LÝ)¨#Ô*<¸cÑBÔBÈÐKøøøøÝð 	Að 	Að 	AØŒyÐ ¥Z°µWÔ5IÑ%JÔ%JÐ ØØ�,˜sÔ1°3Ñ7Ô7¸SÐ@øøøøð	AøøøsS   „!C ¥BCÂ0C Ã
CÃC ÃCÃC Ã
EÃ C6Ã6EÄDÄEÄ&4EÅEc             �   óÞ  K  — 	 t          |j        |j        ¬¦  «        4 ƒd {V —†  | j        j        |i |¤Žƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S # t
          $ r}t          |j        |¦  «        |‚d }~wt          $ r}t          |j        |¦  «        |‚d }~wt          $ r9}|j        €t          |t          j        ¦  «        r‚  ||j        |¦  «        |‚d }~ww xY w©Nrè  )r/   rë  r<  ry   rí  r(   r   r9  r)   r"   rî  rï  rj   rh   rð  )rS   r'  r  rä  rå  r‘   rò   s          rT   Ú_wrap_existing_connectionz&TCPConnector._wrap_existing_connection.  sñ  è è € ð	AÝ#ØÔ$°WÔ5Kðñ ô ð Kð Kð Kð Kð Kð Kð Kð Kð :˜TœZÔ9¸4ÐJÀ6ÐJÐJÐJÐJÐJÐJÐJÐJðKð Kð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð Kð Køõ ð 	Tð 	Tð 	TÝ1°#Ô2DÀcÑJÔJÐPSÐSøøøøÝð 	Lð 	Lð 	LÝ)¨#Ô*<¸cÑBÔBÈÐKøøøøÝð 	Að 	Að 	AØŒyÐ ¥Z°µWÔ5IÑ%JÔ%JÐ ØØ�,˜sÔ1°3Ñ7Ô7¸SÐ@øøøøð	AøøøsQ   „!A# ¥A½A# Á
AÁA# ÁAÁA# Á#
C,Á-BÂC,ÂB&Â&C,Â34C'Ã'C,r+   c                 óŠ   — |                      ¦   «         sdS |j        }|€J ‚|j        dk    rdS |                      ¦   «          dS )zóRaise a :py:exc:`RuntimeError` on missing ``start_tls()``.

        It is necessary for TLS-in-TLS so that it is possible to
        send HTTPS queries through HTTPS proxies.

        This doesn't affect regular HTTP requests, though.
        Nr>   )r  r,  ÚschemeÚ_check_loop_for_start_tls)rS   r'  Ú	proxy_urls      rT   Ú_fail_on_no_start_tlsz"TCPConnector._fail_on_no_start_tlsD  sW   € ð �zŠz‰|Œ|ð 	ØˆFà”Iˆ	ØÐ$Ð$Ð$ØÔ˜wÒ&Ð&ØˆFà×&Ò&Ñ(Ô(Ð(Ð(Ð(rV   c                 ód   — 	 | j         j         d S # t          $ r}t          d¦  «        |‚d }~ww xY w)Na¶  An HTTPS request is being sent through an HTTPS proxy. This needs support for TLS in TLS but it is not implemented in your runtime for the stdlib asyncio.

Please upgrade to Python 3.11 or higher. For more details, please see:
* https://bugs.python.org/issue37179
* https://github.com/python/cpython/pull/28073
* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support
* https://github.com/aio-libs/aiohttp/discussions/6044
)ry   Ú	start_tlsÚAttributeErrorrÜ  )rS   Úattr_excs     rT   r÷  z&TCPConnector._check_loop_for_start_tlsV  sT   € ð	ØŒJÔ Ð Ð Ð øÝð 	ð 	ð 	Ýð	Kñô ð ðøøøøð	øøøs   ‚ �
/š*ª/c                 óR   — 	 |                       ¦   «          dS # t          $ r Y dS w xY w)NTF)r÷  rÜ  rY   s    rT   Ú_loop_supports_start_tlsz%TCPConnector._loop_supports_start_tlsg  sD   € ð	Ø×*Ò*Ñ,Ô,Ð,ð �4øõ ð 	ð 	ð 	Ø�5�5ð	øøøs   ‚ ˜
&¥&Úunderlying_transportc                 ó<  — |j         j        j        dk    rdS |j        �|j        j        dk    rdS t	          |¦  «        j                             d¦  «        rdS t          j        dk    pt          |dd¦  «        }|rdS t          j        dt          | d¬	¦  «         dS )
z6Issue a warning if the requested URL has HTTPS scheme.r>   NÚuvloopr£  Ú_start_tls_compatibleFa  An HTTPS request is being sent through an HTTPS proxy. This support for TLS in TLS is known to be disabled in the stdlib asyncio (Python <3.11). This is why you'll probably see an error in the log below.

It is possible to enable it via monkeypatching. For more details, see:
* https://bugs.python.org/issue37179
* https://github.com/python/cpython/pull/28073

You can temporarily patch this as follows:
* https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support
* https://github.com/aio-libs/aiohttp/discussions/6044
r9   )r‡   r˜   )Úrequest_infor4  rö  r,  rh  ra   Ú
startswithr   rà   Úgetattrr[   r\   rµ  )rS   r   r'  Úasyncio_supports_tls_in_tlss       rT   Ú_warn_about_tls_in_tlsz#TCPConnector._warn_about_tls_in_tlso  sÕ   € ð ÔÔÔ&¨'Ò1Ð1ØˆFð
 Œ9Ð ¤	Ô 0°GÒ ;Ð ;ØˆFõ Ð$Ñ%Ô%Ô0×;Ò;¸HÑEÔEð 	ØˆFõ '*Ô&6¸'Ò&Að '
ÅWØ Ø#ØñF
ô F
Ð#ð 'ð 	ØˆFåŒð
Gõ Øð ð!	
ñ 	
ô 	
ð 	
ð 	
ð 	
rV   c              ƒ   óÐ  K  — |                       ¦   «         }|                      |¦  «        }t          r|€J ‚	 t          |j        |j        ¬¦  «        4 ƒd{V —† 	 t          j        dk    rF| j        r?| j	         
                    ||||j        p|j        |j        pd| j        ¬¦  «        ƒ d{V —†}n8| j	         
                    ||||j        p|j        |j        pd¬¦  «        ƒ d{V —†}nC# t          $ r6 | j        dk    r|                     ¦   «          n|                     ¦   «          ‚ w xY wt#          |t$          j        ¦  «        rr|                      |¦  «        }|r[	 |                     |¦  «         nD# t,          $ r7 |                     ¦   «          | j        s| j                             |¦  «         ‚ w xY wddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |€ d}	 ||j        t7          |	¦  «        ¦  «        ‚|                     |¦  «         nÐ# t:          $ r}
t=          |j        |
¦  «        |
‚d}
~
wt>          $ r}
tA          |j        |
¦  «        |
‚d}
~
wt6          $ r9}
|
j!        €t#          |
t$          j"        ¦  «        r‚  ||j        |
¦  «        |
‚d}
~
wtF          $ r<}tI          d|j        ›d	|j%        d
›d|j&        ›d|j'        pd› d|›d�¦  «        |‚d}~ww xY w||fS )z$Wrap the raw TCP transport with TLS.Nrè  r£  )Úserver_hostnameÚssl_handshake_timeoutr¡  )r
  r  r   z:Failed to start TLS (possibly caused by closing transport)z2Cannot initialize a TLS-in-TLS connection to host rÁ  Údz4 through an underlying connection to an HTTPS proxy z ssl:Údefaultz [ú])(rÜ   rß  r   r/   rë  r<  r   rà   r´  ry   rû  r
  rs  ÚtotalrB  r¾   r§   rj   rh   r°   râ  Úcheckr&   rá   râ   rŸ   r9  rî  Úconnection_mader(   r   r)   r"   rï  rð  Ú	TypeErrorr   r½  r,  r+  )rS   r   r'  r  rä  Ú	tls_protor  Útls_transportr–  Úmsgrò   Útype_errs               rT   Ú_start_tls_connectionz"TCPConnector._start_tls_connection   s  è è € ð —M’M‘O”Oˆ	Ø×*Ò*¨3Ñ/Ô/ˆ
Ýð 	*ð Ð)Ð)Ð)ðC	Ý#ØÔ$°WÔ5Kðñ ô ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ðåÔ'¨7Ò2Ð2°tÔ7QÐ2Ø.2¬j×.BÒ.BØ0Ø%Ø&Ø,/Ô,?Ð,KÀ3Ä8Ø29´-Ð2GÀ4Ø15Ô1Kð /Cñ /ô /ð )ð )ð )ð )ð )ð )˜˜ð /3¬j×.BÒ.BØ0Ø%Ø&Ø,/Ô,?Ð,KÀ3Ä8Ø29´-Ð2GÀ4ð /Cñ /ô /ð )ð )ð )ð )ð )ð )˜øøõ %ð ð ð ð Ô1°QÒ6Ð6Ø,×2Ò2Ñ4Ô4Ð4Ð4à,×2Ò2Ñ4Ô4Ð4Øðøøøõ ˜m­WÔ->Ñ?Ô?ð 	"Ø"&×"7Ò"7¸Ñ"<Ô"<�KØ"ð "ð"Ø'×-Ò-¨mÑ<Ô<Ð<Ð<øÝ8ð "ð "ð "Ø)×/Ò/Ñ1Ô1Ð1Ø#'Ô#@ð VØ $Ô ?× FÒ FÀ}Ñ UÔ UÐ UØ!ð	"øøøðI("ð ("ð ("ñ ("ô ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("ð ("øøøð ("ð ("ð ("ð ("ðz Ð$ØR�Ø"�l 3Ô#5µw¸s±|´|ÑDÔDÐDØ×%Ò%Øñô ð ð øõ/ ð 	Tð 	Tð 	TÝ1°#Ô2DÀcÑJÔJÐPSÐSøøøøÝð 	Lð 	Lð 	LÝ)¨#Ô*<¸cÑBÔBÈÐKøøøøÝð 	Að 	Að 	AØŒyÐ ¥Z°µWÔ5IÑ%JÔ%JÐ ØØ�,˜sÔ1°3Ñ7Ô7¸SÐ@øøøøÝð 
	ð 
	ð 
	õ
 (ð"Ø”8ð"ð "Ø #¤ÐNð"ð "à%(¤Yð"ð "à7:´wÐ7KÀ)ð"ð "ð ð"ð "ð "ñô ð
 ðøøøøð
	øøøð& ˜iÐ'Ð's’   ¸!H ÁGÁBC*Ã)GÃ*A D*Ä*4GÅE5Å4GÅ5AF6Æ6GÆ9H Ç
GÇH ÇGÇH È
K!ÈH4È4K!ÉIÉK!É$4JÊK!Ê%7KËK!Úhostsc                 ó  — g }|D ]�}|d         }d|v }|rt           j        nt           j        }| j        r| j        |k    rŒ;|r||d         ddfn	||d         f}|                     |t           j        t           j        d|f¦  «         Œ‚|S )zÈConverts the list of hosts to a list of addr_infos.

        The list of hosts is the result of a DNS lookup. The list of
        addr_infos is the result of a call to `socket.getaddrinfo()`.
        rs  rÁ  r½  r   r<   )ÚsocketÚAF_INET6ÚAF_INETr¬  rŸ   ÚSOCK_STREAMÚIPPROTO_TCP)rS   r  ræ  Úhinfors  Úis_ipv6rš  Úaddrs           rT   Ú_convert_hosts_to_addr_infosz)TCPConnector._convert_hosts_to_addr_infosö  s³   € ð *,ˆ
Øð 		ð 		ˆEØ˜”=ˆDØ˜T�kˆGØ(/ÐC•V”_�_µV´^ˆFØŒ|ð  ¤°Ò 6Ð 6ØØ29ÐT�D˜% œ-¨¨AÐ.Ð.ÀÀeÈFÄmÐ?TˆDØ×ÒØ�Ô+­VÔ-?ÀÀTÐJñô ð ð ð ÐrV   c          	   ƒ   ó�  K  — |                       |¦  «        }|                      |¦  «        }|j        j        }|€J ‚|                     d¦  «        r|                     d¦  «        dz   }|j        }|€J ‚	 |                      |||¬¦  «        ƒ d {V —†}	nJ# t          $ r=}
|
j	        €t          |
t          j        ¦  «        r‚ t          |j        |
¦  «        |
‚d }
~
ww xY wd }|                      |	¦  «        }|�rI|r|j        p|                     d¦  «        nd }	 |                      | j        ||||||¬¦  «        ƒ d {V —†\  }}n?# t&          t          j        f$ r&}
|
}t)          j        || j        ¦  «         Y d }
~
Œ†d }
~
ww xY w|                     ¦   «         r¦|r¤	 |                     |¦  «         n�# t2          $ r€}
|                     ¦   «          | j        s| j                             |¦  «         |
}|                     d¦  «        }|                     ¦   «         }t)          j         ||¦  «         Y d }
~
�Œ@d }
~
ww xY w||fS |€J ‚|‚)Nz..ú.)r7  )r  r+  ræ  r
  r'  rä  r  )!rß  râ  r4  Úraw_hostÚendswithÚrstripr½  rÔ  rî  rï  rj   rh   rð  r    r9  r"  r
  rñ  rÜ   r!   r­  Úpop_addr_infos_interleaver±  r  r  r&   r§   rá   râ   rŸ   r  ÚgetpeernameÚremove_addr_infos)rS   r'  r7  r  rä  r  r–  rs  r½  r  rò   Úlast_excræ  r
  Útranspr
  rê  Úbad_peers                     rT   rÚ  z&TCPConnector._create_direct_connection  sï  è è € ð ×*Ò*¨3Ñ/Ô/ˆ
Ø×+Ò+¨CÑ0Ô0ˆàŒwÔˆØÐÐÐð �=Š=˜ÑÔð 	*Ø—;’;˜sÑ#Ô# cÑ)ˆDØŒxˆØÐÐÐð
	Lð ×,Ò,¨T°4ÀÐ,ÑGÔGÐGÐGÐGÐGÐGÐGˆEˆEøÝð 	Lð 	Lð 	LØŒyÐ ¥Z°µWÔ5IÑ%JÔ%JÐ Øõ *¨#Ô*<¸cÑBÔBÈÐKøøøøð	Løøøð &*ˆØ×6Ò6°uÑ=Ô=ˆ
Øñ '	ð >HÐQ�Ô$Ð,¨×4Ò4°SÑ9Ô9Ð9ÈTð ðØ&*×&BÒ&BØ”MØ#Ø"Ø)Ø$3ØØ!-ð 'Cñ 'ô 'ð !ð !ð !ð !ð !ð !‘�˜˜øõ )­'Ô*>Ð?ð ð ð Ø�Ý Ô:¸:ÀtÔGWÑXÔXÐXØ����øøøøðøøøð
 �zŠz‰|Œ|ð  ð ðØ×%Ò% fÑ-Ô-Ð-Ð-øÝ0ð 	ð 	ð 	Ø—L’L‘N”N�NØÔ8ð GØÔ7×>Ò>¸vÑFÔFÐFØ"�Hà*0×*?Ò*?ÀÑ*IÔ*I�DØ#×/Ò/Ñ1Ô1�HÝ$Ô6°zÀ8ÑLÔLÐLØ�H�H�H‘Høøøøð	øøøð ˜5�=Ð àÐ'Ð'Ð'ØˆNsI   Á6B Â
CÂ8CÃCÄ*E ÅFÅE<Å<FÆF1 Æ1
H;Æ;A5H6È6H;c              ƒ   ó(  K  — |                       |¦  «         |                      ¦   «         }|                      |¦  «        }|                      |g |t          ¬¦  «        ƒ d {V —†\  }}|                     ¦   «         �r“|r|                      ||¦  «         t          j        |_	        |j
        |_
        |j                             d d d ¬¦  «        }t          | ||| j        ¦  «        }	|                     |	¦  «        ƒ d {V —†}
	 |	j        }|€J ‚|                     || j        ¬¦  «         |
                     |	¦  «        ƒ d {V —†}d |	_        	 |j        dk    rJ|j        }|€t-          |j        ¦  «        j        }t1          |
j        |j        |j        ||j        ¬¦  «        ‚|s<|                     dd ¬¦  «        }|€t;          d¦  «        ‚|                     ¦   «         }n## t>          $ r |                      ¦   «          ‚ w xY w|s|                      ¦   «          n# |s|                      ¦   «          w w xY w|sU|  !                    |¦  «        }|  "                    | j#        ||||j$        |¬	¦  «        ƒ d {V —†	 |
                      ¦   «          S |  %                    |||¬
¦  «        ƒ d {V —†	 |
                      ¦   «          S # t>          $ r* |
                      ¦   «          |	                      ¦   «          ‚ w xY w# |
                      ¦   «          w xY w||fS )Nrã  )r,  r0  Úproxy_headers_hash)Úread_until_eofrÉ   éÈ   )Ústatusr‹   r)  r  )r  z)Transport does not expose socket instance)r  r+  rê  r
  r'  )r'  r  )&rù  rÿ  r6  rÚ  r$   r  r  r   ÚMETH_CONNECTÚmethodr4  r9  Ú_replacer³   ry   Úsendrz   Úset_response_paramsrÎ   Ústartr2  Úreasonr   Úphraser#   r  Úhistoryr)  r  rÜ  ÚduprB  r§   rß  rô  rÜ   rs  r  )rS   r'  r7  r  Úruntime_has_start_tlsr5  r›   r
  rs   rE  Ú
proxy_resprt   Úrespr‹   Úrawsockr  s                   rT   rÙ  z%TCPConnector._create_proxy_connectionV  s	  è è € ð 	×"Ò" 3Ñ'Ô'Ð'Ø $× =Ò =Ñ ?Ô ?ÐØ×FÒFÀsÑKÔKˆ	ð "&×!?Ò!?Ø�r˜7Õ1Kð "@ñ "
ô "
ð 
ð 
ð 
ð 
ð 
ð 
Ñˆ	�5ð �:Š:‰<Œ<ñ X	#Ø$ð <Ø×+Ò+¨I°sÑ;Ô;Ð;õ  $Ô0ˆIÔØœGˆIŒMØÔ$×-Ò-Ø tÀð .ñ ô ˆCõ ,¨D°#°u¸d¼jÑIÔIˆDØ(Ÿ~š~¨dÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆJðD#Øœ>�ØÐ+Ð+Ð+ð
 ×,Ò,Ø#8Ø+/Ô+Gð -ñ ô ð ð (×-Ò-¨dÑ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3�ð "&�”ð*Ø”{ cÒ)Ð)Ø"&¤+˜Ø"˜?Ý&0°´Ñ&=Ô&=Ô&D˜GÝ2Ø&Ô3Ø œLØ#'¤;Ø$+Ø$(¤Lðñ ô ð ð 1ð 0Ø"+×":Ò":¸8ÈTÐ":Ñ"RÔ"R˜Ø"˜?Ý".Ø Kñ#ô #ð ð #*§+¢+¡-¤-˜øøÝ$ð ð ð ð —O’OÑ%Ô%Ð%Øðøøøð 1ð *Ø!ŸšÑ)Ô)Ð)øøð 1ð *Ø!ŸšÑ)Ô)Ð)Ð)ð*øøøð -ð 
à!%×!6Ò!6°sÑ!;Ô!;�JØ!%×!?Ò!?ØœØ 'Ø&Ø$Ø(+¬Øð "@ñ "ô "ð ð ð ð ð ð ð ð" × Ò Ñ"Ô"Ð"Ð"ð "×7Ò7ð ØØ#ð 8ñ ô ð ð ð ð ð ð ð ð × Ò Ñ"Ô"Ð"Ð"øõq !ð ð ð Ø× Ò Ñ"Ô"Ð"Ø—
’
‘”�Øðøøøøðp × Ò Ñ"Ô"Ð"Ð"øøøà˜%ÐÐsQ   ÄAK  ÅK7 ÅBG  ÇH Ç  H È H ÈK7 ÈH3È3AK7 ÊK7 Ë 4K4Ë4K7 Ë7L)NNrš   )r'  r+   rP   Nr_   )?r`   ra   rb   r¶   rd  Ú	frozensetre  r  ÚAddressFamilyÚ	AF_UNSPECr3   r±   Úbytesrg  r†  r,   r‚  r®   r   rÖ   rf  rh   r­   r   r.   rU   rW  r   rî   r§   r¯   rš  r—  r¿  r	   r   rÔ  rÓ   rÎ  r+   r*   r@  rß  r   râ  r!   r   r   rh  rk   r°   rñ  rô  rù  r÷  rÿ  r  ÚBaseTransportr  r"  rÚ  rÙ  Ú__classcell__©r¶  s   @rT   rD   rD   š  s#  ø€ € € € € ð$ð $ðL #8¸)¸)ÀUÀGÑ:LÔ:LÑ"LÐð
  Ø$(Ø"Ø$&Ø"&Ø'-Ô';Ô'EØ)-Ø/3Ø-1Ø,0Ø3;Ø!ØØØ&+Ø15Ø()Ø-1Ø!%Ø37Ø9Að/P>ð P>ð P>ð ðP>ð ˜T‘\ð	P>ð
 ðP>ð ˜T‘zðP>ð  ðP>ð Ô$ðP>ð   $Ñ&ðP>ð �KÑ *Ñ,ðP>ð ˜#˜s˜(”O dÑ*ðP>ð # TÑ)ðP>ð   %™<¨&Ñ0ðP>ð ðP>ð ðP>ð  ð!P>ð"  $ð#P>ð$ Ô'¨$Ñ.ð%P>ð& !&ð'P>ð( $ d™lð)P>ð* ˜$‘Jð+P>ð, *¨DÑ0ð-P>ð. (¨$Ñ.°Ñ6ð/P>ð P>ð P>ð P>ð P>ð P>ðd +0ð ð ð  4ð °D¸À6Ô9JÔ4Kð ð ð ð ð ð ð 05ð )ð )ð )¨ð )¸ð )ð )ð )ð )ð )ð )ð ð˜ð ð ð ñ „Xðð ð#˜tð #ð #ð #ñ „Xð#ð'ð ' C¨$¡Jð '¸SÀ4¹Zð 'ÐSWð 'ð 'ð 'ð 'ð HLðað aØðaØ"ðaØ,4°WÔ,=ÀÑ,Dðaà	ˆmÔ	ðað að að aðF'2à�3˜�8Œ_ð'2ð ð'2ð ð	'2ð
 Ð+Ô,ð'2ð ˜Ô! DÑ(ð'2ð 
ˆmÔ	ð'2ð '2ð '2ð '2ðRØ ðØ*.¨w¬-ðØBQðà	ðð ð ð ð% Mð %°jÀ4Ñ6Gð %ð %ð %ð %ðB Mð °h¸}Ô6Mð ð ð ð ð )=ð$Að $Að $Aàð$Að ˜Ô&ð$Að ð	$Að
 !ð$Að ˜9”oð$Að ð$Að 
ˆwÔ  /Ð1Ô	2ð$Að $Að $Að $AðV )=ðAð Að AàðAð ðAð !ð	Að
 ˜9”oðAð ðAð 
ˆwÔ  /Ð1Ô	2ðAð Að Að Að,)ð )ð )ð )ð$ð ð ð ð"¨$ð ð ð ð ð/
à%Ô/ð/
ð ð/
ð 
ð	/
ð /
ð /
ð /
ðl )=ðT(ð T(à%Ô/ðT(ð ðT(ð !ð	T(ð
 ˜9”oðT(ð 
ˆwÔ$ oÐ5Ô	6ðT(ð T(ð T(ð T(ðlØ˜-Ô(ðà	ˆlÔ	ðð ð ð ð6 )=ðIð Ið IàðIð �W”ðIð !ð	Ið ˜9”oðIð 
ˆwÔ  /Ð1Ô	2ðIð Ið Ið IðVf Ø ðf Ø*.¨w¬-ðf ØBQðf à	ˆwÔ$ oÐ5Ô	6ðf ð f ð f ð f ð f ð f ð f ð f rV   rD   c                   óÆ   ‡ — e Zd ZdZe edh¦  «        z  Zdedddfdede	d	e
ez  dz  d
ededej        dz  ddfˆ fd„Zedefd„¦   «         Zdeded         dddefd„Zˆ xZS )rE   a�  Unix socket connector.

    path - Unix socket path.
    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    loop - Optional event loop.
    ÚunixFrÁ   r   NÚpathrÅ   rÄ   rÆ   rÇ   ru   rP   c                 ób   •— t          ¦   «                              |||||¬¦  «         || _        d S )N©rÅ   rÄ   rÆ   rÇ   ru   )r¥  rU   Ú_path©rS   rJ  rÅ   rÄ   rÆ   rÇ   ru   r¶  s          €rT   rU   zUnixConnector.__init__Í  sB   ø€ õ 	‰Œ×ÒØ#Ø/ØØ)Øð 	ñ 	
ô 	
ð 	
ð ˆŒ
ˆ
ˆ
rV   c                 ó   — | j         S )zPath to unix socket.©rM  rY   s    rT   rJ  zUnixConnector.pathß  ó   € ð ŒzÐrV   r'  r7  rI   r  rG   c              ƒ   ó”  K  — 	 t          |j        |j        ¬¦  «        4 ƒd {V —† | j                             | j        | j        ¦  «        ƒ d {V —†\  }}d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   nP# t          $ rC}|j        €t          |t          j        ¦  «        r‚ t          | j        |j        |¦  «        |‚d }~ww xY w|S ró  )r/   rë  r<  ry   Úcreate_unix_connectionrÜ   rM  rî  rï  rj   rh   rð  r'   rJ  r9  ©rS   r'  r7  r  r  r
  rò   s          rT   r@  z UnixConnector._create_connectionä  sƒ  è è € ð
	XÝ#ØÔ$°WÔ5Kðñ ô ð ð ð ð ð ð ð ð ð "&¤×!BÒ!BØ”M 4¤:ñ"ô "ð ð ð ð ð ð ‘��5ðð ð ñ ô ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð øøøð ð ð ð øøõ ð 	Xð 	Xð 	XØŒyÐ ¥Z°µWÔ5IÑ%JÔ%JÐ ØÝ*¨4¬9°cÔ6HÈ#ÑNÔNÐTWÐWøøøøð	Xøøøð
 ˆs:   „!A8 ¥/A&ÁA8 Á&
A0Á0A8 Á3A0Á4A8 Á8
CÂ>C Ã C©r`   ra   rb   r¶   rd  rA  re  r3   r®   r±   rf  rÖ   rg  rh   r­   rU   r¯   rJ  r+   rW  r*   r@  rF  rG  s   @rT   rE   rE   ¿  s*  ø€ € € € € ð	ð 	ð #8¸)¸)ÀVÀHÑ:MÔ:MÑ"MÐð
 "Ø3;ØØØ15ðð àðð ðð " E™>¨DÑ0ð	ð
 ðð ðð Ô'¨$Ñ.ðð 
ðð ð ð ð ð ð$ ð�cð ð ð ñ „XððØ ðØ*.¨w¬-ðØBQðà	ðð ð ð ð ð ð ð rV   rE   c                   óÆ   ‡ — e Zd ZdZe edh¦  «        z  Zdedddfdede	d	e
ez  dz  d
ededej        dz  ddfˆ fd„Zedefd„¦   «         Zdeded         dddefd„Zˆ xZS )rF   aþ  Named pipe connector.

    Only supported by the proactor event loop.
    See also: https://docs.python.org/3/library/asyncio-eventloop.html

    path - Windows named pipe path.
    keepalive_timeout - (optional) Keep-alive timeout.
    force_close - Set to True to force close and do reconnect
        after each request (and between redirects).
    limit - The total number of simultaneous connections.
    limit_per_host - Number of simultaneous connections to one host.
    loop - Optional event loop.
    ÚnpipeFrÁ   r   NrJ  rÅ   rÄ   rÆ   rÇ   ru   rP   c                 ó¾   •— t          ¦   «                              |||||¬¦  «         t          | j        t          j        ¦  «        st          d¦  «        ‚|| _        d S )NrL  z9Named Pipes only available in proactor loop under windows)r¥  rU   rj   ry   rh   ÚProactorEventLooprÜ  rM  rN  s          €rT   rU   zNamedPipeConnector.__init__  sx   ø€ õ 	‰Œ×ÒØ#Ø/ØØ)Øð 	ñ 	
ô 	
ð 	
õ ØŒJÝÔ%ñ
ô 
ð 	õ ØKñô ð ð ˆŒ
ˆ
ˆ
rV   c                 ó   — | j         S )zPath to the named pipe.rP  rY   s    rT   rJ  zNamedPipeConnector.path   rQ  rV   r'  r7  rI   r  rG   c              ƒ   óâ  K  — 	 t          |j        |j        ¬¦  «        4 ƒd {V —† | j                             | j        | j        ¦  «        ƒ d {V —†\  }}t          j        d¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   nJ# t          $ r=}|j
        €t          |t          j        ¦  «        r‚ t          |j        |¦  «        |‚d }~ww xY wt          t           |¦  «        S )Nrè  r   )r/   rë  r<  ry   Úcreate_pipe_connectionrÜ   rM  rh   Úsleeprî  rï  rj   rð  r!   r9  r   r*   rT  s          rT   r@  z%NamedPipeConnector._create_connection%  s­  è è € ð	IÝ#ØÔ$°WÔ5Kðñ ô ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð "&¤×!BÒ!BØ”M 4¤:ñ"ô "ð ð ð ð ð ð ‘��5õ ”m AÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð
'ð 
'ð 
'ñ 
'ô 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'øøøð 
'ð 
'ð 
'ð 
'øøõ ð 	Ið 	Ið 	IØŒyÐ ¥Z°µWÔ5IÑ%JÔ%JÐ ØÝ& sÔ'9¸3Ñ?Ô?ÀSÐHøøøøð	Iøøøõ
 •O UÑ+Ô+Ð+s;   „!B ¥A	B Á.B Â 
B
Â
B ÂB
ÂB Â
CÂ8CÃCrU  rG  s   @rT   rF   rF   ö  s*  ø€ € € € € ðð ð #8¸)¸)ÀWÀIÑ:NÔ:NÑ"NÐð
 "Ø3;ØØØ15ðð àðð ðð " E™>¨DÑ0ð	ð
 ðð ðð Ô'¨$Ñ.ðð 
ðð ð ð ð ð ð2 ð�cð ð ð ñ „Xðð,Ø ð,Ø*.¨w¬-ð,ØBQð,à	ð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,rV   rF   )orh   rÚ   rX  r  r   r}   r[   Úcollectionsr   r   r   Úcollections.abcr   r   r   r	   Ú
contextlibr
   r=   r   Ú	itertoolsr   r   r   Útimer   Útypesr   Útypingr   r   r   r   r   r   r­  r   r   r<   r   r   Úabcr   r   Úclient_exceptionsr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Úclient_protor*   Úclient_reqrepr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   Úlogr6   r�  r7   rà   r;   rD  Ú	bytearrayr+  r†  ÚImportErrorrf  rA  ÚEMPTY_SCHEMA_SETÚHTTP_SCHEMA_SETÚWS_SCHEMA_SETÚHTTP_AND_EMPTY_SCHEMA_SETrd  rß   Ú__all__ÚclientrG   rH   ÚtracingrI   rK   rW  ro   rq   r³   r¸   rC   rj  r±   r‘  rÞ  rÝ  rD   rE   rF   rd   rV   rT   ú<module>rs     sT  ðØ €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà Ð Ð Ð Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à Ð Ð Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %àÔ�wÒÐØ&Ð&Ð&Ð&Ð&Ð&Ð&à�5˜)Ð%6Ð8KÐKÔL€Fàð Ø€J€J€Jà”€J€JðØˆ
ˆ
ˆ
à”^ˆ
ˆ
øØð ð ð ØˆØˆ
ˆ
ˆ
ðøøøð �9˜b˜T‘?”?Ð Ø�)˜V WÐ-Ñ.Ô.€Ø�	˜4 ˜-Ñ(Ô(€à+Ð.>Ñ>Ð Ø1°MÑAÐ à! SÔ%5ð ð ò ð ð 9ò ð ð ð ð #ð 	Ô˜
Ò"ð	 ð€ð ð Ø%Ð%Ð%Ð%Ð%Ð%Ø,Ð,Ð,Ð,Ð,Ð,ØÐÐÐÐÐðð ð ð ð ñ ô ð ð(J 4¨	°&Ô(9Ô#:ð J¸tð Jð Jð Jð JðUKð UKð UKð UKð UKñ UKô UKð UKðpð ð ð ð ˜zñ ô ð ð(4ð 4ð 4ð 4ð 4ñ 4ô 4ð 4ð"J	$ð J	$ð J	$ð J	$ð J	$ñ J	$ô J	$ð J	$ðZ-?ð -?ð -?ð -?ð -?ñ -?ô -?ð -?ð` ð ¨ð ð ð ð ð6 *Ð)¨$Ñ/Ô/Ð Ø+Ð+¨EÑ2Ô2Ð ðb ð b ð b ð b ð b �=ñ b ô b ð b ðJ4ð 4ð 4ð 4ð 4�Mñ 4ô 4ð 4ðnE,ð E,ð E,ð E,ð E,˜ñ E,ô E,ð E,ð E,ð E,s   Ã:D Ä	DÄD