§
    îŽ’jô_  ã                  ó^  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlZ
d dlZ
d dlZ
d dlZ
ddlmZ ddlmZmZmZ ddlmZmZ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"  ej#        d¦  «        Z$dd„Z% G d„ dej&        ¦  «        Z' G d„ de"¦  «        Z( G d„ d¦  «        Z)dS )é    )ÚannotationsN)ÚAsyncGeneratoré   )ÚAsyncNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolError)ÚOriginÚRequestÚResponse)Ú	AsyncLockÚAsyncSemaphoreÚAsyncShieldCancellation)ÚTrace)Úsafe_async_iterateé   )ÚAsyncConnectionInterfacezhttpcore2.http2Úrequestr   ÚreturnÚboolc                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3  ó|   K  — | ]7\  }}|                      ¦   «         d k    p|                      ¦   «         dk    V — Œ8dS )s   content-lengthó   transfer-encodingN©Úlower)Ú.0ÚkÚ_vs      úDC:\Projects\DSCons\.venv\Lib\site-packages\httpcore2\_async\http2.pyú	<genexpr>z#has_body_headers.<locals>.<genexpr>   sJ   è è € ÐpÐpÑW\ÐWXÐZ\ˆq�wŠw‰yŒyÐ-Ò-ÐR°·²±´Ð>RÒ1RÐpÐpÐpÐpÐpÐpó    )ÚanyÚheaders)r   s    r   Úhas_body_headersr$      s#   € ÝÐpÐpÐ`gÔ`oÐpÑpÔpÑpÔpÐpr!   c                  ó   — e Zd ZdZdZdZdS )ÚHTTPConnectionStater   r   é   N)Ú__name__Ú
__module__Ú__qualname__ÚACTIVEÚIDLEÚCLOSED© r!   r   r&   r&      s   € € € € € Ø€FØ€DØ€F€F€Fr!   r&   c                  ó6  — e Zd ZdZej                             d¬¦  «        Z	 d?d@d„ZdAd„Z	dBd„Z
dCd„ZdCd„ZdDd„ZdCd„ZdEd„ZdFd„ZdGd „Zd?dHd"„ZdId%„ZdJd&„ZdKd'„ZdLd)„ZdBd*„ZdMd+„ZdNd-„ZdOd.„ZdOd/„ZdOd0„ZdOd1„ZdOd2„ZdOd3„ZdPd5„Z dPd6„Z!dQd7„Z"	 	 	 dRdSd>„Z#dS )TÚAsyncHTTP2Connectioné   F)Úvalidate_inbound_headersNÚoriginr
   Ústreamr   Úkeepalive_expiryúfloat | Nonec                ó¼  — || _         || _        || _        t          j                             | j        ¬¦  «        | _        t          j	        | _
        d | _        d| _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d| _        d| _        d| _        i | _        d | _        d | _        d | _        d S )N)Úconfigr   F)Ú_originÚ_network_streamÚ_keepalive_expiryÚh2Ú
connectionÚH2ConnectionÚCONFIGÚ	_h2_stater&   r,   Ú_stateÚ
_expire_atÚ_request_countr   Ú
_init_lockÚ_state_lockÚ
_read_lockÚ_write_lockÚ_sent_connection_initÚ_used_all_stream_idsÚ_connection_errorÚ_eventsÚ_connection_terminatedÚ_read_exceptionÚ_write_exception)Úselfr3   r4   r5   s       r   Ú__init__zAsyncHTTP2Connection.__init__)   sÄ   € ð ˆŒØ%ˆÔØ/?ˆÔÝœ×3Ò3¸4¼;Ð3ÑGÔGˆŒÝ)Ô.ˆŒØ(,ˆŒØˆÔÝ#™+œ+ˆŒÝ$™;œ;ˆÔÝ#™+œ+ˆŒÝ$™;œ;ˆÔØ%*ˆÔ"Ø$)ˆÔ!Ø!&ˆÔð ð 	Œð NRˆÔ#à15ˆÔØ26ˆÔÐÐr!   r   r   r   r   c           	   ƒ  óú	  K  — |                       |j        j        ¦  «        s$t          d|j        j        › d| j        › �¦  «        ‚| j        4 ƒd {V —† | j        t          j        t          j	        fv r)| xj
        dz  c_
        d | _        t          j        | _        nt          ¦   «         ‚	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | j        4 ƒd {V —† | j        �s	 d|i}t          dt           ||¦  «        4 ƒd {V —†  | j        di |¤Žƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   nT# t$          $ rG}t'          ¦   «         5  |                      ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |‚d }~ww xY wd| _        d| _        | j        j        j        }t3          |¦  «        | _        t7          || j        z
  ¦  «        D ]!}| j                             ¦   «         ƒ d {V —† Œ"d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | j                             ¦   «         ƒ d {V —† 	 | j                             ¦   «         }g | j        |<   n\# t>          j         j!        $ rE d| _"        | xj
        dz  c_
        | j         #                    ¦   «         ƒ d {V —† t          ¦   «         ‚w xY w	 ||dœ}t          dt           ||¦  «        4 ƒd {V —† |  $                    ||¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t          d	t           ||¦  «        4 ƒd {V —† |  %                    ||¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t          d
t           ||¦  «        4 ƒd {V —†}|  &                    ||¬¦  «        ƒ d {V —†\  }	}
|	|
f|_'        d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   tQ          |	|
tS          | ||¬¦  «        d| j*        |dœ¬¦  «        S # t$          $ r×}t'          ¦   «         5  d|i}t          dt           ||¦  «        4 ƒd {V —† |  +                    |¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d d d ¦  «         n# 1 swxY w Y   tY          |t>          j         j-        ¦  «        r*| j.        rt_          | j.        ¦  «        ‚ta          |¦  «        ‚|‚d }~ww xY w)NzAttempted to send request to z on connection to r   r   Úsend_connection_initT©r   Ú	stream_idÚsend_request_headersÚsend_request_bodyÚreceive_response_headers©rT   s   HTTP/2)Úhttp_versionÚnetwork_streamrT   )Ústatusr#   ÚcontentÚ
extensionsrT   Úresponse_closedr.   )1Úcan_handle_requestÚurlr3   ÚRuntimeErrorr9   rE   rA   r&   r+   r,   rC   rB   r   rD   rH   r   ÚloggerÚ_send_connection_initÚBaseExceptionr   ÚacloseÚ_max_streamsr@   Úlocal_settingsÚmax_concurrent_streamsr   Ú_max_streams_semaphoreÚrangeÚacquireÚget_next_available_stream_idrK   r<   Ú
exceptionsÚNoAvailableStreamIDErrorrI   ÚreleaseÚ_send_request_headersÚ_send_request_bodyÚ_receive_responseÚreturn_valuer   ÚHTTP2ConnectionByteStreamr:   Ú_response_closedÚ
isinstanceÚProtocolErrorrL   r	   r   )rO   r   Ú
sci_kwargsÚexcÚlocal_settings_max_streamsÚ_rT   ÚkwargsÚtracer[   r#   s              r   Úhandle_async_requestz)AsyncHTTP2Connection.handle_async_requestK   s¶
  è è € Ø×&Ò& w¤{Ô'9Ñ:Ô:ð 	uõ
 Ðs¸w¼{Ô?QÐsÐsÐeiÔeqÐsÐsÑtÔtÐtàÔ#ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ØŒ{Õ2Ô9Õ;NÔ;SÐTÐTÐTØÐ#Ô# qÑ(Ð#Ô#Ø"&�”Ý1Ô8�”�å,Ñ.Ô.Ð.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð ”?ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ØÔ-ñ @ðØ"+¨WÐ!5�JÝ$Ð%;½VÀWÈjÑYÔYð Gð Gð Gð Gð Gð Gð Gð GØ8˜dÔ8ÐFÐF¸:ÐFÐFÐFÐFÐFÐFÐFÐFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gøøå$ð ð ð Ý0Ñ2Ô2ð ,ð ,Ø"Ÿkšk™mœmÐ+Ð+Ð+Ð+Ð+Ð+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,à�Iøøøøðøøøð
 .2�Ô*ð %&�Ô!à-1¬^Ô-JÔ-aÐ*Ý.<Ð=WÑ.XÔ.X�Ô+åÐ9¸DÔ<MÑMÑNÔNð @ð @�AØÔ5×=Ò=Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð+	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð. Ô)×1Ò1Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð	+Øœ×CÒCÑEÔEˆIØ&(ˆDŒL˜Ñ#Ð#øÝŒ}Ô5ð 	+ð 	+ð 	+Ø(,ˆDÔ%ØÐÔ 1Ñ$ÐÔØÔ-×5Ò5Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ý(Ñ*Ô*Ð*ð		+øøøð*	Ø!(°yÐAÐAˆFÝÐ3µV¸WÀfÑMÔMð Wð Wð Wð Wð Wð Wð Wð WØ×0Ò0¸ÈIÐ0ÑVÔVÐVÐVÐVÐVÐVÐVÐVðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð WåÐ0µ&¸'À6ÑJÔJð Tð Tð Tð Tð Tð Tð Tð TØ×-Ò-°gÈÐ-ÑSÔSÐSÐSÐSÐSÐSÐSÐSðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð TåÐ7½ÀÈ&ÑQÔQð 7ð 7ð 7ð 7ð 7ð 7ð 7ÐUZØ(,×(>Ò(>ÀwÐZcÐ(>Ñ(dÔ(dÐ"dÐ"dÐ"dÐ"dÐ"dÐ"d‘�˜Ø&,¨gÐ%6�Ô"ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ ØØÝ1°$¸È9ÐUÑUÔUà$-Ø&*Ô&:Ø!*ðð ð		ñ 	ô 	ð 	øõ ð 	ð 	ð 	Ý(Ñ*Ô*ð Eð EØ% yÐ1�Ý Ð!2µF¸GÀVÑLÔLð Eð Eð Eð Eð Eð Eð Eð EØ×/Ò/¸)Ð/ÑDÔDÐDÐDÐDÐDÐDÐDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eõ
 ˜#�rœ}Ô:Ñ;Ô;ð .ð Ô.ð KÝ-¨dÔ.IÑJÔJÐJõ )¨Ñ-Ô-Ð-àˆIøøøøð-	øøøsl  ÁAB=Â=
CÃ
CÃ	HÃ%!D>ÄD,ÄD>Ä,
D6	Ä6D>Ä9D6	Ä:D>Ä=HÄ>
FÅF
ÅE=Å1F
Å=FÆF
ÆFÆF
Æ
FÆA/HÈ
HÈHÉ#I% É%AJ>Ë"P Ë$LÌP Ì
LÌP Ì!LÌ" P ÍM2Í P Í2
M<Í<P Í?M<Î  P Î *OÏ
P Ï
O&Ï&P Ï)O&Ï*.P Ð
S:Ð#S5Ð1"RÑRÑ0RÒ
RÒRÒRÒRÒS5ÒR#	Ò#S5Ò&R#	Ò'AS5Ó5S:ÚNonec           	   ƒ  óÂ  K  — t           j                             dt           j        j        j        dt           j        j        j        dt           j        j        j        di¬¦  «        | j        _        | j        j        t           j        j        j	        = | j         
                    ¦   «          | j                             d¦  «         |                      |¦  «        ƒ d{V —† dS )z�
        The HTTP/2 connection requires some initial setup before we can start
        using individual request/response streams on it.
        Tr   éd   r1   )ÚclientÚinitial_valuesé   N)r<   ÚsettingsÚSettingsÚSettingCodesÚENABLE_PUSHÚMAX_CONCURRENT_STREAMSÚMAX_HEADER_LIST_SIZEr@   rg   ÚENABLE_CONNECT_PROTOCOLÚinitiate_connectionÚincrement_flow_control_windowÚ_write_outgoing_data)rO   r   s     r   rc   z*AsyncHTTP2Connection._send_connection_init©   sÇ   è è € õ )+¬×(<Ò(<Øõ ”Ô(Ô4°aå”Ô(Ô?ÀÝ”Ô(Ô=¸uðð )=ñ 
)
ô 
)
ˆŒÔ%ð ŒNÔ)­"¬+Ô*BÔ*ZÐ[àŒ×*Ò*Ñ,Ô,Ð,ØŒ×4Ò4°UÑ;Ô;Ð;Ø×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r!   rT   Úintc              ƒ  ór  K  — t          |¦  «         }d„ |j        D ¦   «         d         }d|j        fd|fd|j        j        fd|j        j        fgd„ |j        D ¦   «         z   }| j                             |||¬¦  «         | j                             d	|¬
¦  «         |  	                    |¦  «        ƒ d{V —† dS )z@
        Send the request headers to a given stream ID.
        c                óH   — g | ]\  }}|                      ¦   «         d k    ¯|‘Œ S )ó   hostr   ©r   r   Úvs      r   ú
<listcomp>z>AsyncHTTP2Connection._send_request_headers.<locals>.<listcomp>Ò   s.   € ÐKÐKÐK™4˜1˜a°a·g²g±i´iÀ7Ò6JÐ6J�QÐ6JÐ6JÐ6Jr!   r   s   :methods
   :authoritys   :schemes   :pathc                ól   — g | ]1\  }}|                      ¦   «         d v¯|                      ¦   «         |f‘Œ2S ))r’   r   r   r“   s      r   r•   z>AsyncHTTP2Connection._send_request_headers.<locals>.<listcomp>Ù   sR   € ð 
ð 
ð 
á��1Ø�wŠw‰yŒyððð ð �WŠW‰YŒY˜ˆNðð ð r!   )Ú
end_streamr„   rX   N)
r$   r#   Úmethodr`   ÚschemeÚtargetr@   Úsend_headersr�   rŽ   )rO   r   rT   r—   Ú	authorityr#   s         r   rp   z*AsyncHTTP2Connection._send_request_headersÈ   só   è è € õ *¨'Ñ2Ô2Ð2ˆ
ð LÐK 7¤?ÐKÑKÔKÈAÔNˆ	ð ˜œÐ(Ø˜IÐ&Ø˜œÔ+Ð,Ø�w”{Ô)Ð*ð	
ð

ð 
àœð
ñ 
ô 
ñ
ˆð 	Œ×#Ò# I¨wÀ:Ð#ÑNÔNÐNØŒ×4Ò4°UÀiÐ4ÑPÔPÐPØ×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r!   c              ƒ  ót  K  — t          |¦  «        sdS t          |j        t          j        ¦  «        sJ ‚t          |j        ¦  «        4 ƒd{V —†}|2 3 d{V —†}|                      |||¦  «        ƒ d{V —† Œ%6 	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |                      ||¦  «        ƒ d{V —† dS )zP
        Iterate over the request body sending it to a given stream ID.
        N)r$   rv   r4   ÚtypingÚAsyncIterabler   Ú_send_stream_dataÚ_send_end_stream)rO   r   rT   ÚiteratorÚchunks        r   rq   z'AsyncHTTP2Connection._send_request_bodyç   s©  è è € õ   Ñ(Ô(ð 	ØˆFå˜'œ.­&Ô*>Ñ?Ô?Ð?Ð?Ð?Ý% g¤nÑ5Ô5ð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	H¸Ø'ð Hð Hð Hð Hð Hð Hð H�eØ×,Ò,¨W°iÀÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGð  (˜xð	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ð ×#Ò# G¨YÑ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7s   ÁBÁA7Á BÂ
BÂBÚdataÚbytesc              ƒ  ó@  K  — d}|t          |¦  «        k     r†|                      ||¦  «        ƒ d{V —†}||||z   …         }|t          |¦  «        z  }| j                             ||¦  «         |                      |¦  «        ƒ d{V —† |t          |¦  «        k     °„dS dS )zI
        Send a single chunk of data in one or more data frames.
        r   N)ÚlenÚ_wait_for_outgoing_flowr@   Ú	send_datarŽ   )rO   r   rT   r¤   ÚpositionÚmax_flowr£   s          r   r    z&AsyncHTTP2Connection._send_stream_dataõ   sÆ   è è € ð ˆØ�˜T™œÒ"Ð"Ø!×9Ò9¸'À9ÑMÔMÐMÐMÐMÐMÐMÐMˆHØ˜ H¨xÑ$7Ð7Ô8ˆEØ�˜E™
œ
Ñ"ˆHØŒN×$Ò$ Y°Ñ6Ô6Ð6Ø×+Ò+¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð �˜T™œÒ"Ð"Ð"Ð"Ð"Ð"r!   c              ƒ  ót   K  — | j                              |¦  «         |                      |¦  «        ƒ d{V —† dS )z`
        Send an empty data frame on on a given stream ID with the END_STREAM flag set.
        N)r@   r—   rŽ   )rO   r   rT   s      r   r¡   z%AsyncHTTP2Connection._send_end_stream  sJ   è è € ð 	Œ×!Ò! )Ñ,Ô,Ð,Ø×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r!   ú%tuple[int, list[tuple[bytes, bytes]]]c              ƒ  ól  K  — 	 |                       ||¦  «        ƒ d{V —†}t          |t          j        j        ¦  «        rnŒ=d}g }|j        €J ‚|j        D ]\\  }}|dk    r%t          |                     dd¬¦  «        ¦  «        }Œ0|                     d¦  «        s| 	                    ||f¦  «         Œ]||fS )	zT
        Return the response status code and headers for a given stream ID.
        TNéÈ   s   :statusÚasciiÚignore)Úerrorsó   :)
Ú_receive_stream_eventrv   r<   ÚeventsÚResponseReceivedr#   r�   ÚdecodeÚ
startswithÚappend)rO   r   rT   ÚeventÚstatus_coder#   r   r”   s           r   rr   z&AsyncHTTP2Connection._receive_response
  sÞ   è è € ð	Ø×4Ò4°W¸iÑHÔHÐHÐHÐHÐHÐHÐHˆEÝ˜%¥¤Ô!;Ñ<Ô<ð Øð	ð
 ˆØ-/ˆØŒ}Ð(Ð(Ð(Ø”Mð 	'ð 	'‰DˆAˆqØ�JŠˆÝ! !§(¢(¨7¸8 (Ñ"DÔ"DÑEÔE��Ø—\’\ $Ñ'Ô'ð 'Ø—’  1˜vÑ&Ô&Ð&øà˜WÐ%Ð%r!   úAsyncGenerator[bytes]c               óv  K  — 	 |                       ||¦  «        ƒ d{V —†}t          |t          j        j        ¦  «        rZ|j        €J ‚|j        €J ‚|j        }| j                             ||¦  «         |  	                    |¦  «        ƒ d{V —† |j        W V — n!t          |t          j        j
        ¦  «        rdS Œ·)z]
        Iterator that returns the bytes of the response body for a given stream ID.
        TN)r´   rv   r<   rµ   ÚDataReceivedÚflow_controlled_lengthr¤   r@   Úacknowledge_received_datarŽ   ÚStreamEnded)rO   r   rT   rº   Úamounts        r   Ú_receive_response_bodyz+AsyncHTTP2Connection._receive_response_body  sá   è è € ð
	Ø×4Ò4°W¸iÑHÔHÐHÐHÐHÐHÐHÐHˆEÝ˜%¥¤Ô!7Ñ8Ô8ð ØÔ3Ð?Ð?Ð?Ø”zÐ-Ð-Ð-ØÔ5�Ø”×8Ò8¸ÀÑKÔKÐKØ×/Ò/°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø”jÐ Ð Ð Ð Ð Ý˜E¥2¤9Ô#8Ñ9Ô9ð Ø�ð
	r!   úKh2.events.ResponseReceived | h2.events.DataReceived | h2.events.StreamEndedc              ƒ  óF  K  — | j                              |¦  «        s6|                      ||¦  «        ƒ d{V —† | j                              |¦  «        ¯6| j         |                              d¦  «        }t	          |t
          j        j        ¦  «        rt          |¦  «        ‚|S )zƒ
        Return the next available event for a given stream ID.

        Will read more data from the network if required.
        Nr   )	rK   ÚgetÚ_receive_eventsÚpoprv   r<   rµ   ÚStreamResetr	   )rO   r   rT   rº   s       r   r´   z*AsyncHTTP2Connection._receive_stream_event.  s¦   è è € ð ”,×"Ò" 9Ñ-Ô-ð 	;Ø×&Ò& w°	Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð ”,×"Ò" 9Ñ-Ô-ð 	;à”˜YÔ'×+Ò+¨AÑ.Ô.ˆÝ�e�RœYÔ2Ñ3Ô3ð 	-Ý% eÑ,Ô,Ð,Øˆr!   ú
int | Nonec           	   ƒ  ó  K  — | j         4 ƒd{V —† | j        �H| j        j        }|r&|r$||k    r| xj        dz  c_        t	          ¦   «         ‚t          | j        ¦  «        ‚|�| j                             |¦  «        �sO|                      |¦  «        ƒ d{V —†}|D �]0}t          |t          j        j        ¦  «        rct          dt          |¦  «        4 ƒd{V —†}|                      |¦  «        ƒ d{V —† ||_        ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   Œ…t          |t          j        j        t          j        j        t          j        j        t          j        j        f¦  «        r5|j        | j        v r%| j        |j                                      |¦  «         �Œ
t          |t          j        j        ¦  «        r|| _        �Œ2ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |                      |¦  «        ƒ d{V —† dS )zp
        Read some data from the network until we see one or more events
        for a given stream ID.
        Nr   Úreceive_remote_settings)rF   rL   Úlast_stream_idrC   r   r	   rK   rÆ   Ú_read_incoming_datarv   r<   rµ   ÚRemoteSettingsChangedr   rb   Ú_receive_remote_settings_changers   r¶   r¾   rÁ   rÉ   rT   r¹   ÚConnectionTerminatedrŽ   )rO   r   rT   rÍ   rµ   rº   r}   s          r   rÇ   z$AsyncHTTP2Connection._receive_events=  s/  è è € ð
 ”?ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ØÔ*Ð6Ø!%Ô!<Ô!K�Øð 3 ð 3°IÀÒ4NÐ4NØÐ'Ô'¨1Ñ,Ð'Ô'Ý0Ñ2Ô2Ð2Ý)¨$Ô*EÑFÔFÐFð Ð ¨¬×(8Ò(8¸Ñ(CÔ(CÑ Ø#×7Ò7¸Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@�Ø#ð <ñ <�EÝ! %­¬Ô)HÑIÔIð <Ý#(Ð)BÅFÈGÑ#TÔ#Tð 7ð 7ð 7ð 7ð 7ð 7ð 7ÐX]Ø"&×"FÒ"FÀuÑ"MÔ"MÐMÐMÐMÐMÐMÐMÐMØ16˜EÔ.ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7øõ $ØåœIÔ6ÝœIÔ2ÝœIÔ1ÝœIÔ1ð	ñô ð <ð !œ?¨d¬lÐ:Ð:Ø œL¨¬Ô9×@Ò@ÀÑGÔGÐGùå# E­2¬9Ô+IÑJÔJð <Ø6;˜Ô3ùðG#	<ð #	<ð #	<ñ #	<ô #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<ð #	<øøøð #	<ð #	<ð #	<ð #	<ðJ ×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0s7   �CGÃ#DÃ;GÄ
DÄGÄDÄB1GÇ
G(Ç+G(rº   úh2.events.RemoteSettingsChangedc              ƒ  óð  K  — |j                              t          j        j        j        ¦  «        }|r½t          |j        | j        j	        j
        ¦  «        }|r™|| j        k    r�|| j        k    r:| j                             ¦   «         ƒ d {V —† | xj        dz  c_        || j        k    °:|| j        k     rB| j                             ¦   «         ƒ d {V —† | xj        dz  c_        || j        k     °:d S d S d S d S d S )Nr   )Úchanged_settingsrÆ   r<   r…   r‡   r‰   ÚminÚ	new_valuer@   rg   rh   rf   ri   ro   rk   )rO   rº   rh   Únew_max_streamss       r   rÐ   z4AsyncHTTP2Connection._receive_remote_settings_changei  s@  è è € Ø!&Ô!7×!;Ò!;½B¼KÔ<TÔ<kÑ!lÔ!lÐØ!ð 	+Ý!Ø&Ô0Ø”Ô-ÔDñô ˆOð ð + ?°dÔ6GÒ#GÐ#GØ%¨Ô(9Ò9Ð9ØÔ5×=Ò=Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÐ%Ô%¨Ñ*Ð%Ô%ð &¨Ô(9Ò9Ð9ð &¨Ô(9Ò9Ð9ØÔ5×=Ò=Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÐ%Ô%¨Ñ*Ð%Ô%ð &¨Ô(9Ò9Ð9Ð9Ð9ð	+ð 	+ð
+ð +Ð#GÐ#Gð :Ð9r!   c              ƒ  ó  K  — | j         4 ƒd {V —† || j        v r'| j                             ¦   «         ƒ d {V —† | j        |= | j        r"| j        s|                      ¦   «         ƒ d {V —† nw| j        t          j        k    rb| j        s[t          j	        | _        | j
        �"t          j        ¦   «         }|| j
        z   | _        | j        r|                      ¦   «         ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S ©N)rE   rK   ri   ro   rL   re   rA   r&   r+   r,   r;   ÚtimeÚ	monotonicrB   rI   )rO   rT   Únows      r   ru   z%AsyncHTTP2Connection._response_closedx  s´  è è € ØÔ#ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(Ø˜DœLÐ(Ð(ØÔ1×9Ò9Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø”L Ð+ØÔ*ð 	(°4´<ð 	(Ø—k’k‘m”mÐ#Ð#Ð#Ð#Ð#Ð#Ð#Ð#à”Õ 3Ô :Ò:Ð:À4Ä<Ð:Ý1Ô6�”ØÔ)Ð5Ýœ.Ñ*Ô*�CØ&)¨DÔ,BÑ&B�D”OØÔ,ð (ØŸ+š+™-œ-Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   �CC4Ã4
C>ÄC>c              ƒ  óœ   K  — | j                              ¦   «          t          j        | _        | j                             ¦   «         ƒ d {V —† d S rÙ   )r@   Úclose_connectionr&   r-   rA   r:   re   ©rO   s    r   re   zAsyncHTTP2Connection.acloseˆ  sS   è è € ð 	Œ×'Ò'Ñ)Ô)Ð)Ý)Ô0ˆŒØÔ"×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r!   úlist[h2.events.Event]c              ƒ  óz  K  — |j                              di ¦  «        }|                     dd ¦  «        }| j        �| j        ‚	 | j                             | j        |¦  «        ƒ d {V —†}|dk    rt          d¦  «        ‚n"# t          $ r}|| _        d| _        |‚d }~ww xY w| j	         
                    |¦  «        }|S )NÚtimeoutÚreadr!   zServer disconnectedT)r]   rÆ   rM   r:   rã   ÚREAD_NUM_BYTESr	   Ú	ExceptionrJ   r@   Úreceive_data)rO   r   Útimeoutsrâ   r¤   ry   rµ   s          r   rÎ   z(AsyncHTTP2Connection._read_incoming_data‘  sä   è è € ØÔ%×)Ò)¨)°RÑ8Ô8ˆØ—,’,˜v tÑ,Ô,ˆàÔÐ+ØÔ&Ð&ð	ØÔ-×2Ò2°4Ô3FÈÑPÔPÐPÐPÐPÐPÐPÐPˆDØ�sŠ{ˆ{Ý)Ð*?Ñ@Ô@Ð@ð øåð 	ð 	ð 	ð $'ˆDÔ Ø%)ˆDÔ"ØˆIøøøøð	øøøð )-¬×(CÒ(CÀDÑ(IÔ(Iˆàˆs   Á;A? Á?
BÂ	BÂBc              ƒ  óª  K  — |j                              di ¦  «        }|                     dd ¦  «        }| j        4 ƒd {V —† | j                             ¦   «         }| j        �| j        ‚	 | j                             ||¦  «        ƒ d {V —† n"# t          $ r}|| _        d| _	        |‚d }~ww xY w	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nrâ   ÚwriteT)
r]   rÆ   rG   r@   Údata_to_sendrN   r:   ré   rå   rJ   )rO   r   rç   râ   rê   ry   s         r   rŽ   z)AsyncHTTP2Connection._write_outgoing_data­  sŒ  è è € ØÔ%×)Ò)¨)°RÑ8Ô8ˆØ—,’,˜w¨Ñ-Ô-ˆàÔ#ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	Øœ>×6Ò6Ñ8Ô8ˆLàÔ$Ð0ØÔ+Ð+ðØÔ*×0Ò0°¸wÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGøÝð ð ð ð ),�Ô%Ø)-�Ô&Ø�	øøøøðøøøð Hð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   Á(CÁ*!BÂCÂ
B+ÂB&Â&B+Â+CÃ
CÃCc              ƒ  ó0  K  — | j                              |¦  «        }| j         j        }t          ||¦  «        }|dk    rW|                      |¦  «        ƒ d{V —† | j                              |¦  «        }| j         j        }t          ||¦  «        }|dk    °W|S )a  
        Returns the maximum allowable outgoing flow for a given stream.

        If the allowable flow is zero, then waits on the network until
        WindowUpdated frames have increased the flow rate.
        https://tools.ietf.org/html/rfc7540#section-6.9
        r   N)r@   Úlocal_flow_control_windowÚmax_outbound_frame_sizerÕ   rÇ   )rO   r   rT   Ú
local_flowÚmax_frame_sizeÚflows         r   r¨   z,AsyncHTTP2Connection._wait_for_outgoing_flowÈ  s¥   è è € ð œ.×BÒBÀ9ÑMÔMˆ
Ø"œnÔDˆÝ�:˜~Ñ.Ô.ˆØ�aŠiˆiØ×&Ò& wÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Øœ×AÒAÀ)ÑLÔLˆJØ!œ^ÔCˆNÝ�z >Ñ2Ô2ˆDð	 �aŠiˆið
 ˆr!   r   c                ó   — || j         k    S rÙ   )r9   ©rO   r3   s     r   r_   z'AsyncHTTP2Connection.can_handle_requestÜ  s   € Ø˜œÒ%Ð%r!   c                ó,   — |                       ¦   «          S rÙ   )Ú	is_closedrß   s    r   Úis_connectedz!AsyncHTTP2Connection.is_connectedß  s   € Ø—>’>Ñ#Ô#Ð#Ð#r!   c                ó    — | j         t          j        k    o9| j         o1| j         o)| j        j        j        t          j	        j
        j        k     S rÙ   )rA   r&   r-   rJ   rI   r@   Ústate_machineÚstater<   r=   ÚConnectionStaterß   s    r   Úis_availablez!AsyncHTTP2Connection.is_availableâ  sV   € àŒKÕ.Ô5Ò5ð aØÔ*Ð*ðaàÔ-Ð-ðað ”^Ô1Ô7½2¼=Ô;XÔ;_Ò_Ð`ð		
r!   c                óJ   — t          j        ¦   «         }| j        }|d uo||k    S rÙ   )rÚ   rÛ   rB   )rO   rÜ   Ú	expire_ats      r   Úhas_expiredz AsyncHTTP2Connection.has_expiredê  s,   € ÝŒnÑÔˆð ”Oˆ	Ø Ð$Ð8¨¨yªÐ8r!   c                ó,   — | j         t          j        k    S rÙ   )rA   r&   r,   rß   s    r   Úis_idlezAsyncHTTP2Connection.is_idleñ  s   € ØŒ{Õ1Ô6Ò6Ð6r!   c                ó   — dS )NTr.   rß   s    r   Úcan_multiplexz"AsyncHTTP2Connection.can_multiplexô  s   € Øˆtr!   c                ó,   — | j         t          j        k    S rÙ   )rA   r&   r-   rß   s    r   rô   zAsyncHTTP2Connection.is_closed÷  s   € ØŒ{Õ1Ô8Ò8Ð8r!   Ústrc                ó\   — t          | j        ¦  «        }|›d| j        j        › d| j        › �S )Nz
, HTTP/2, ú, Request Count: )r  r9   rA   ÚnamerC   rò   s     r   ÚinfozAsyncHTTP2Connection.infoú  s5   € Ý�T”\Ñ"Ô"ˆØÐ^Ð^ d¤kÔ&6Ð^Ð^ÈÔI\Ð^Ð^Ð^r!   c           	     ó~   — | j         j        }t          | j        ¦  «        }d|› d|›d| j        j        › d| j        › d�	S )Nú<z [z, r  z]>)Ú	__class__r(   r  r9   rA   r  rC   )rO   Ú
class_namer3   s      r   Ú__repr__zAsyncHTTP2Connection.__repr__þ  sM   € Ø”^Ô,ˆ
Ý�T”\Ñ"Ô"ˆØg�:ÐgÐg ÐgÐg¨T¬[Ô-=ÐgÐgÐPTÔPcÐgÐgÐgÐgr!   c              ƒ  ó
   K  — | S rÙ   r.   rß   s    r   Ú
__aenter__zAsyncHTTP2Connection.__aenter__  s   è è € Øˆr!   Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackútypes.TracebackType | Nonec              ƒ  ó>   K  — |                       ¦   «         ƒ d {V —† d S rÙ   )re   )rO   r  r  r  s       r   Ú	__aexit__zAsyncHTTP2Connection.__aexit__	  s.   è è € ð �kŠk‰mŒmÐÐÐÐÐÐÐÐÐr!   rÙ   )r3   r
   r4   r   r5   r6   )r   r   r   r   )r   r   r   r   )r   r   rT   r�   r   r   )r   r   rT   r�   r¤   r¥   r   r   )r   r   rT   r�   r   r­   )r   r   rT   r�   r   r¼   )r   r   rT   r�   r   rÄ   )r   r   rT   rÊ   r   r   )rº   rÒ   r   r   )rT   r�   r   r   ©r   r   )r   r   r   rà   )r   r   rT   r�   r   r�   )r3   r
   r   r   )r   r   )r   r  )r   r0   )NNN)r  r  r  r  r  r  r   r   )$r(   r)   r*   rä   r<   r8   ÚH2Configurationr?   rP   r~   rc   rp   rq   r    r¡   rr   rÃ   r´   rÇ   rÐ   ru   re   rÎ   rŽ   r¨   r_   rõ   rú   rý   rÿ   r  rô   r  r  r  r  r.   r!   r   r0   r0   %   s�  € € € € € Ø€NØŒY×&Ò&ÀÐ&ÑFÔF€Fð *.ð	 7ð  7ð  7ð  7ð  7ðD\ð \ð \ð \ð|1ð 1ð 1ð 1ð>1ð 1ð 1ð 1ð>8ð 8ð 8ð 8ð
5ð 
5ð 
5ð 
5ð1ð 1ð 1ð 1ð&ð &ð &ð &ð(ð ð ð ð ð ð ð ð*1ð *1ð *1ð *1ð *1ðX+ð +ð +ð +ð(ð (ð (ð (ð ,ð ,ð ,ð ,ðð ð ð ð8ð ð ð ð6ð ð ð ð(&ð &ð &ð &ð$ð $ð $ð $ð
ð 
ð 
ð 
ð9ð 9ð 9ð 9ð7ð 7ð 7ð 7ðð ð ð ð9ð 9ð 9ð 9ð_ð _ð _ð _ðhð hð hð hðð ð ð ð
 04Ø*.Ø04ð	ð ð ð ð ð ð r!   r0   c                  ó&   — e Zd Zdd	„Zdd„Zdd„ZdS )rt   r=   r0   r   r   rT   r�   r   r   c                ó>   — || _         || _        || _        d| _        d S )NF)Ú_connectionÚ_requestÚ
_stream_idÚ_closed)rO   r=   r   rT   s       r   rP   z"HTTP2ConnectionByteStream.__init__  s#   € Ø%ˆÔØˆŒØ#ˆŒØˆŒˆˆr!   r¼   c               ó>  K  — | j         | j        dœ}	 t          dt          | j         |¦  «        4 ƒd {V —† t	          | j                             | j         | j        ¬¦  «        ¦  «        4 ƒd {V —†	 }|2 3 d {V —†}|W V — Œ6 	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S # t          $ rG}t          ¦   «         5  |  	                    ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |‚d }~ww xY w)NrS   Úreceive_response_body)
r  r  r   rb   r   r  rÃ   rd   r   re   )rO   r|   r¢   r£   ry   s        r   Ú	__aiter__z#HTTP2ConnectionByteStream.__aiter__  s·  è è € Ø!œ]¸¼ÐIÐIˆð	ÝÐ4µf¸d¼mÈVÑTÔTð $ð $ð $ð $ð $ð $ð $ð $Ý-ØÔ$×;Ò;ÀDÄMÐ]aÔ]lÐ;ÑmÔmñô ð $ð $ð $ð $ð $ð $ð $ð $àØ'/ð $ð $ð $ð $ð $ð $ð $˜eØ#˜˜˜˜˜ð (0 xð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $øõ ð 	ð 	ð 	õ )Ñ*Ô*ð $ð $Ø—k’k‘m”mÐ#Ð#Ð#Ð#Ð#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $àˆIøøøøð	øøøsŽ   “"C µ:B8Á0BÁ3B Á9BÂB8Â
B	ÂB8Â!B	Â"B8Â%C Â8
CÃC ÃCÃC Ã
DÃDÃ#D
Ã>DÄ
D	ÄDÄD	ÄDÄDc              ƒ  ó  K  — | j         sd| _         d| j        i}t          dt          | j        |¦  «        4 ƒd {V —† | j                             | j        ¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S d S )NTrT   r^   rX   )r  r  r   rb   r  r  ru   )rO   r|   s     r   re   z HTTP2ConnectionByteStream.aclose*  sY  è è € ØŒ|ð 	SØˆDŒLØ! 4¤?Ð3ˆFÝÐ.µ¸¼ÀvÑNÔNð Sð Sð Sð Sð Sð Sð Sð SØÔ&×7Ò7À$Ä/Ð7ÑRÔRÐRÐRÐRÐRÐRÐRÐRðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Sð	Sð 	Ss   ¼'A6Á6
B ÂB N)r=   r0   r   r   rT   r�   r   r   )r   r¼   r  )r(   r)   r*   rP   r!  re   r.   r!   r   rt   rt     sV   € € € € € ðð ð ð ðð ð ð ð"Sð Sð Sð Sð Sð Sr!   rt   )r   r   r   r   )*Ú
__future__r   ÚenumÚloggingrÚ   Útypesrž   Úcollections.abcr   Ú	h2.configr<   Úh2.connectionÚ	h2.eventsÚh2.exceptionsÚh2.settingsÚ_backends.baser   Ú_exceptionsr   r   r	   Ú_modelsr
   r   r   Ú_synchronizationr   r   r   Ú_tracer   Ú_utilsr   Ú
interfacesr   Ú	getLoggerrb   r$   ÚIntEnumr&   r0   rt   r.   r!   r   ú<module>r6     sû  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ø YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YÐ YØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à	ˆÔ	Ð,Ñ	-Ô	-€ðqð qð qð qðð ð ð ð ˜$œ,ñ ô ð ðjð jð jð jð jÐ3ñ jô jð jðZSð Sð Sð Sð Sñ Sô Sð Sð Sð Sr!   