
     |
j                         U d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZ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  dd
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZB dZCed         ZD eEejF                  ZGeeeH                  eId<    ejJ        d          ZKeeH         eId<    ejL        deK d          ZMeeeH                  eId<    ejL        d          ZNeeeH                  eId<    ejL        dejO                  ZPeeeH                  eId<    ejL        dejO                  ZQeeeH                  eId<    ejL        d          ZReeeS                  eId<    G d  d!e          ZT G d" d#e          ZU ed$eTeU          ZV G d% d&e          ZW G d' d(e          ZX G d) d*          ZYd+eeH         d,eZfd-Z[ G d. d/e j\        eeV                   Z] G d0 d1e]eT                   Z^ G d2 d3e]eU                   Z_ G d4 d5          Z` G d6 d7          Zae^Zbe_ZceTZdeUZe	 e-sdd8lfm^Z^m_Z_mTZTmUZU e^Zge_ZheTZieUZjdS dS # ek$ r Y dS w xY w)9    N)suppress)IntEnum)AnyClassVarFinalGenericListLiteral
NamedTupleOptionalPatternSetTupleTypeTypeVarUnion)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)DEFAULT_MAX_DECOMPRESS_SIZE
HAS_BROTLIHAS_ZSTDBrotliDecompressorZLibDecompressorZSTDDecompressor)_EXC_SENTINELDEBUGEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)
BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorDecompressSizeErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10)EMPTY_PAYLOADStreamReader)
RawHeaders)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREz[\x00-\x08\x0a-\x1f\x7f]_FIELD_VALUE_FORBIDDEN_CTL_REzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSc                       e Zd ZU eed<   eed<   eed<   ded<   eed<   eed<   ee         ed<   eed	<   eed
<   e	ed<   dS )r:   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurlN)
__name__
__module____qualname__str__annotations__r1   r5   boolr   r        Z/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/http_parser.pyr:   r:   ]   s}         KKK
III$$$$#MMMMMM	HHHHHrX   r:   c                       e Zd ZU eed<   eed<   eed<   ee         ed<   eed<   e	ed<   e
e         ed<   e	ed<   e	ed	<   d
S )r;   rH   codereasonrJ   rK   rL   rM   rN   rO   N)rQ   rR   rS   r1   rU   intrT   r   r5   rV   r   rW   rX   rY   r;   r;   j   sy         
IIIKKKc""""#MMMMMMMMrX   r;   _MsgTc                       e Zd ZdZdZdZdZdS )
ParseStater   r         N)rQ   rR   rS   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrW   rX   rY   r`   r`   y   s"        JLMOOOrX   r`   c                   "    e Zd ZdZdZdZdZdZdS )
ChunkStater   r   ra   rb      N)rQ   rR   rS   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrW   rX   rY   rh   rh      s+        NNNrX   rh   c                   `    e Zd Z	 	 	 	 ddededededd	f
d
Zdee         dede	f         fdZ
d	S )r6        Fmax_line_sizemax_headersmax_field_sizelaxreturnNc                 >    || _         || _        || _        || _        d S N)rr   rs   rt   _lax)selfrr   rs   rt   ru   s        rY   __init__zHeadersParser.__init__   s'     +&,			rX   linesrI   c                 D   t                      }g }d}||         }t          |          }|rW	 |                    dd          \  }}n# t          $ r t	          |          d w xY wt          |          dk    rt	          |          |d         |d         hddhz  rt	          |          |                    d          }|                    dd	          }	t                              |	          st	          |          |dz  }||         }| j	        o|o	|d         d
v }
|
rt          |          }|g}|
r|t          |          z  }|| j
        k    r;|dz   d                    |          z   }t          |d d         dz   | j
                  |                    |           |dz  }||k     r||         }|r
|d         d
v }
nd}n|
d                    |          }|                    d          }|                    dd	          }| j	        rd|v sd|v sd|v rt	          |          n)t                              |          rt	          |          |                    |	|           |                    ||f           |Wt%          |          t'          |          fS )Nr      :r       	   s    	utf-8surrogateescape)r   r   s   : rX   d      ...
 )r   lensplit
ValueErrorr-   lstripdecoder@   	fullmatchry   rt   joinr/   appendstriprA   searchaddr   tuple)rz   r|   rJ   rK   	lines_idxline
line_countbnamebvaluenamecontinuationheader_length
bvalue_lstheader_linevalues                  rY   parse_headerszHeadersParser.parse_headers   s    %0MM	YZZ
 =	04 $

4 3 3vv 4 4 4#D))t34 5zzQ#E*** a%)$Aw. *#D)))]]6**F<<):;;D$$T** +#E*** NI#D  9DD$q'W2DL  . #F$X
" !SYY.M$t':::&+emchhz6J6J&J)'-68K   %%d+++ NI :--$Y/ >+/7g+=L"# # $ *--\\&))FMM'+<==E y ,5==DEMMVu__'/// 6E.55e<< ,#F+++KKe$$$v///{  =	0~ !))5+=+=>>s   A A#)rp   rq   rp   F)rQ   rR   rS   r]   rV   r{   r	   bytesr   r5   r   rW   rX   rY   r6   r6      s         " "
 

 
 	

 
 

 
 
 
J?%[J?	&
2	3J? J? J? J? J? J?rX   r6   rJ   rv   c                     |                      t          j        d          }|                                o|                                dv S )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciilower)rJ   us     rY   _is_supported_upgrader      s8    DL"%%A99;;<17799(<<<rX   c                   4   e Zd ZU dZee         ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 d)dee         d	ee	j
                 d
ededededee         dee         dee         deee                  dedededdfdZej        dee         defd            Zej        dedefd            Zdee         fdZddej        ej        ej        fdeded ed!ed"ed#edeeeee f                  eef         fd$Z!dee         ded%e"ee         ee         eef         fd&Z#d'eddfd(Z$dS )*r7   Fru   N   rp      Tprotocollooplimitrr   rs   rt   timerr[   rF   payload_exceptionresponse_with_bodyread_until_eofauto_decompressrv   c                 H   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        || _        || _        t%          |||| j                  | _        d S )NrX   F)r   r   rr   rs   rt   r   r[   rF   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr6   ru   _headers_parser)rz   r   r   r   rr   rs   rt   r   r[   rF   r   r   r   r   s                 rY   r{   zHttpParser.__init__   s      !	*&,&
	!2"4,#%
<@ /,; 
  
rX   r|   c                     d S rx   rW   )rz   r|   s     rY   parse_messagezHttpParser.parse_message  s    :=#rX   tec                     d S rx   rW   rz   r   s     rY   _is_chunked_tezHttpParser._is_chunked_te  s    /2srX   c                    | j         !| j                                          d | _         n| j        r| j                            | j                   | j        rq| j        d         dk    r| j                            d           t          t                    5  |                     | j                  cd d d            S # 1 swxY w Y   d S )Nr   z
rX   )r   feed_eofr   r   r   r   	Exceptionr   rz   s    rY   r   zHttpParser.feed_eof  s    + ))+++#'D   z /""4:...{ ;;r?f,,K&&s+++i(( ; ;--dk::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;ts   B<<C C r<   rX   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 r   g }| j         r| j         |z   dc}| _         t          |          }d}	| j        }
| j        }d}|	|k     rT| j        O| j        sG|                    ||	          }||	k    r| j        s|t          |          z   }	M||	k    r|rt          d          ||	|         }|dk    r|	                    d          }t          |          |k    rt          |d d         dz   |          | j                            |           | j        }t          | j                  | j        k    rt          d	          |t          |          z   }	| j        d
         |k    r| j        t          | j                  z
  }	 |                     | j                  | j                                         n# | j                                         w xY wdt           t"                   ffd} |            }|j        v rt'          |          j        ot+          j                  | _        t-          d| j                  }t-          dd          }| j        J |t2          v pt5          |o|t6          v           }|s||dk    sj        r| j        s{t;          | j        | j        |
| j                  }tA          ||j        |j!        | j"        | j#        | j$        | j%        | j&        | j        | j        |          }|j'        s|| _        n||k    rtQ          tR                    sJ t;          | j        | j        |
| j                  }d| _        tA          |j        j!        | j$        | j%        | j&        | j        | j        |	  	        | _        n|s|| j*        rzt;          | j        | j        |
| j                  }tA          ||j        |j!        | j"        | j#        | j$        | j%        | j&        | j        | j        |          }|j'        s|| _        ntV          }|                    |f           j,        }nJ||	d          | _         t          | j                   | j        k    r%t          | j         d d         dz   | j                  |}n| j        | j        r
| j        rJ n|r|	|k     r| j        rJ | j        J 	 | j        -                    ||	d          |          \  }}n~# t\          $ rq}|}| j/        "| /                    ta          |                    }tc          | j        j2        ||           d}d}tQ          |t&          tf          f          r Y d }~nd }~ww xY w|rd}	t          |          }d | _        Rnn|	|k     T|r|	|k     r||	d          }n|}|| j        |fS )NrX   r   FzData after `Connection: close`r=      r   r   zToo many headers receivedr   rv   c                      j                                       } | d S t                              |           st	                    t          |           S rx   )rJ   r   rC   r   r-   r]   )
length_hdrr   msgs    rY   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_lengthg  sT    ),)H)HJ)1'+t
 $*#3#3J#?#? D&3N&C&C C#&z??2rX   rF   r[   )r   r   r   )lengthrO   rF   rM   r[   r   r   ru   headers_parserrr   rt   max_trailersT)rF   rM   r   ru   r   rr   rt   r   )4r   r   r   rr   r   r   findr   r'   rstripr/   r   rt   rs   r   clearr   r]   rJ   r-   rN   r   getattrrF   r   r#   rV   r"   rO   r4   r   r   HttpPayloadParserrM   r[   r   r   ru   r   done
isinstancer:   r   r3   rL   	feed_dataBaseExceptionr   rT   r&   payloadr0   )rz   r   r   r   r   r   r   messagesdata_len	start_posr   max_line_lengthrL   posr   r   r   r   rF   r[   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                     @rY   r   zHttpParser.feed_data+  s    : 	6#zD0#D$*t99	y,("" #+DN+iiY//)##DK# #c#hhI)### O,-MNNN  	#.De||#{{5114yy?22)$tt*v*=OOOK&&t,,,&*&9O4;''$*:::,-HIII #c#hhI {2%//'+'7#dk:J:J'J0)-););DK)H)HC K--////DK--////3HSM 3 3 3 3 3 3 3 "4!3!5!5-<<"/0B"C"CC), *9NK: : ")h!D!D&sFA66#}888%)-D%D &"Cv1C'CI I
  * H4$0VaZZCKZ$(N 6@ '3 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H/3/C.2.@/3/B-9. . .N $2#6 F7E 4#|33#-c3D#E#EEE#E&2 $&*j%)&*k	' ' 'G .2DN3D ''*z,/O040E$(H/3/C.2.@/3/B-9
4 
4 
4D00 ", 44CV&2 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H/3/C.2.@/3/B-9. . .N $2#6 F7E 4&3G g777'*'7!%ijj!1DJ4:);;;)$*TcT*:V*CTEWXXX D %-$.-;&&  )h..;&&+777 $ 4 > >tIJJ?OQT U UIC$   #1L-9'+'='=c.>Q>Q'R'R!,4$&   CD!&8M(N       $   !I"4yyH+/D(	 { (""~  	I((	

#DDD--s%   F9 9G&S7 7
U2A'U--U2rI   c           
         | j                             |          \  }d}d}d}d}t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        f
}t          fd|D             d          }|t          d| d                              t          j        d          }	|	r>d |	D             }
d|
v rd	}nd
|
v rd}d|
v r!                    t          j                  rd	}                    t          j        d          }|                                r|                                dv r|}                    t          j                  }|4|                     |          rd	}t          j        v rt          d          |||||fS )zParses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFc              3   j   K   | ]-}t                              |d                     dk    )|V  .dS )rW   r   N)r   getall).0hrJ   s     rY   	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>$  sC      PPaW^^Ar5J5J1K1Ka1O1O1O1O1O1OPPrX   zDuplicate 'z' header found.rW   c                     h | ]N}d  |                     d          D             D ],}||                                |                                -OS )c              3   @   K   | ]}|                     d           V  dS ) 	N)r   )r   parts     rY   r   z5HttpParser.parse_headers.<locals>.<setcomp>.<genexpr>/  s.      RRDdjj//RRRRRRrX   ,)r   r   r   )r   
conn_valuetokens      rY   	<setcomp>z+HttpParser.parse_headers.<locals>.<setcomp>,  s{       RRJ<L<LS<Q<QRRR  	 #]]__	   rX   closeTz
keep-aliverN   r   >   brgzipzstddeflatez6Transfer-Encoding can't be present with Content-Length)r   r   r   r   CONTENT_LOCATIONCONTENT_RANGECONTENT_TYPEETAGHOSTMAX_FORWARDSSERVERTRANSFER_ENCODING
USER_AGENTnextr'   r   
CONNECTIONr   r   CONTENT_ENCODINGr   r   r   )rz   r|   rK   
close_connencodingrN   rO   
singletonsbad_hdrconn_valuesconn_tokensencr   rJ   s                @rY   r   zHttpParser.parse_headers  s     $3AA%HH

 !IIK"O

 PPPP:PPPRVWW !Gw!G!G!GHHH nnT_b99 	 "-  K +%%!

,,"
 K''GKK,E,E' kk$/44;;== 	SYY[[,MMMH [[/00>""2&& "g--$L   j(GWMMrX   valc                     || _         dS )zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )rz   r  s     rY   set_upgradedzHttpParser.set_upgradedN  s    
 rX   )NNr   rp   r   rp   NNNNTFT)%rQ   rR   rS   ru   r   rV   rU   r   r   asyncioAbstractEventLoopr]   r%   rT   r   r   r{   abcabstractmethodr	   r   r^   r   r   r   r   r   r   r   _SEPr   r   r4   r   r5   r   r  rW   rX   rY   r7   r7      s        C$ ,048!",0" $;?#'$ $&
 &
<(&
 w01&
 	&

 &
 &
 &
 ()&
 sm&
 &
 $D$78&
 !&
 &
 &
 
&
 &
 &
 &
P 	=4;=5=== =22222 2(5/    & #2 -#'#:Y. Y.Y. Y. 	Y.
 Y. Y. !Y. 
tE%-./u<	=Y. Y. Y. Y.vFN%[FN	Xd^Xc]DRVV
FN FN FN FNP       rX   r7   c                   >    e Zd ZdZdee         defdZdede	fdZ
dS )r8   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    r|   rv   c                 n   |d                              dd          }	 |                    dd          \  }}}n# t          $ r t          |          d w xY wt                              |          st          |          t                              |          }|t          |          t          t          |
                    d                    t          |
                    d                              }|dk    rt          j        |d	
          }n|                    d          rK|                    d          \  }	}
}|	                    d          \  }	}}t          j        |	||d	          }np|dk    r|dk    rt          |d	          }nRt          |d	          }|j        dk    r6t!          |                    d                               d                    |                     |dd                    \  }}}}}}||t&          k    rd	}nd}t)          ||||||||||
  
        S )Nr   r   r    ra   maxsplitr   CONNECTT)	authorityencoded/#?)rG   query_stringfragmentr"  *OPTIONS)r"  r   )errorslatin1F)r   r   r   r(   r@   r   rB   r)   r1   r]   groupr   build
startswith	partitionschemer.   encoder   r2   r:   )rz   r|   r   rF   rG   rH   match	version_orP   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrJ   rK   r   rM   rN   rO   s                       rY   r   zHttpRequestParser.parse_message^  sw   Qxw(9::	0$(JJsQJ$?$?!FD'' 	0 	0 	0%%4/	0   (( 	('''   ))=%%%EKKNN 3 3SQ5H5HII	Y )dD999CC__S!! 	 8<~~c7J7J4I;D;N;Ns;S;S8I/ )$%	  CC S[[Vy00dD)))CC dD)))CzR%KK'8K99@@JJ   uQRRy))	
 =M)) 
 
 	
s	   : Ar   c                     |                     dd          d                             d          }|                                r|                                dk    rdS t	          d          )	Nr   r   r  r   r   rO   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r'   r   s     rY   r   z HttpRequestParser._is_chunked_te  s`    YYsQY''+11%88::<< 	BHHJJ)334FGGGrX   N)rQ   rR   rS   __doc__r	   r   r:   r   rT   rV   r   rW   rX   rY   r8   r8   V  sv         N
4; N
3D N
 N
 N
 N
`H H H H H H H HrX   r8   c                        e Zd ZdZe Z	 ddedee         de	de	de
ee
eef                  eef         f
 fdZd	ee         defd
ZdedefdZ xZS )r9   zRead response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr   r   argskwargsrv   c                 Z    |t           rdnd} t                      j        ||g|R i |S )Nr<   r=   )r!   superr   )rz   r   r   r=  r>  	__class__s        rY   r   zHttpResponseParser.feed_data  sA     ;"-''C uww s<T<<<V<<<rX   r|   c                    |d                              dd          }	 |                    d          \  }}n# t          $ r t          |          d w xY w	 |                    d          \  }}n&# t          $ r |                                }d}Y nw xY wt
                              |          }|t          |          t          t          |	                    d                    t          |	                    d                              }t          |          dk    st                              |          st          |          t          |          }|                     |dd                    \  }	}
}}}}|E|t          k    rd	}n7d
|cxk    rdk     sn |dv rd}n!t          j        |	v st          j        |	v rd}nd	}t#          |||                                |	|
||||	  	        S )Nr   r   r   r   r  r   ra   rb   Tr      >   0     F)r   r   r   r)   r   rB   r   r1   r]   r,  r   rC   r   r2   r   r   r  r;   )rz   r|   r   rH   statusr\   r2  r3  status_irJ   rK   r   rM   rN   rO   s                  rY   r   z HttpResponseParser.parse_message  s%   Qxw(9::	0"jj!j44OGVV 	0 	0 	0%%4/	0	#\\1\55NFFF 	 	 	\\^^FFFF	
   ))=%%%EKKNN 3 3SQ5H5HII	 v;;!6#3#3F#;#;%%%v;; uQRRy))	
 =M))&&&&3&&&&(j*@*@$//43IW3T3T !LLNN

 

 
	
s   8 AA1 1 BBr   c                     |                     dd          d                             d                                          dk    S )Nr   r   r  r   r   rO   )r:  r   r   r   s     rY   r   z!HttpResponseParser._is_chunked_te  s<    yyqy))"-33E::@@BBiOOrX   rx   )rQ   rR   rS   r;  r!   ru   r   r   r  r   r   r	   r;   r4   rV   r   r   rT   r   __classcell__)rA  s   @rY   r9   r9     s          )C
 #	= 	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	= 	= 	= 	= 	=8
4; 8
3E 8
 8
 8
 8
tP P P P P P P P P PrX   r9   c                       e Zd Z	 	 	 	 	 	 	 	 ddddddedee         d	ed
ee         dee         dee         dedededededededdfdZ	ddZ
	 ddedededeeef         fdZdS ) r   NFTrp   r   )rr   rt   r   r   r   rO   rM   r[   rF   r   r   ru   r   rr   rt   r   rv   c
                4   d| _         t          j        | _        t          j        | _        d| _        d| _        || _	        |	| _
        |
| _        || _        || _        || _        g | _        d| _        |r|r| j	        rt#          ||          }n|}|s-t          j        | _        |                                 d| _        nT|rt          j        | _        n@|>t          j        | _        || _         | j         dk    r|                                 d| _        || _        d S )Nr   rX   FT)_lengthr`   rf   _typerh   rj   _chunk_chunk_size_chunk_tailr   ry   r   _max_line_size_max_field_size_max_trailers_trailer_linesr   DeflateBufferrc   r   re   rd   r   )rz   r   r   rO   rM   r[   rF   r   r   ru   r   rr   rt   r   real_payloads                  rY   r{   zHttpPayloadParser.__init__  s2   " /
 3 /	-+-)+-	  	#+ 	#$2G 	#?L@ @LL #L " 	!#.DJ!!###DII 	!#1DJJ#0DJ!DL|q  %%''' 	#rX   c                     | j         t          j        k    r| j                                         d S | j         t          j        k    rt          d          | j         t          j        k    rt          d          d S )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	rM  r`   rf   r   r   rd   r+   re   r0   r   s    rY   r   zHttpPayloadParser.feed_eofD  s    :333L!!#####Z:222$C   Z:333'D   43rX   r<      ;chunkr   	CHUNK_EXTc                 *   | j         t          j        k    r| j        }t	          |          }||k    rM||z
  | _        | j                            ||           | j        dk    r| j                                         dS nd| _        | j                            |d |         |           | j                                         d||d          fS | j         t          j        k    rr| j	        r| j
        t          j        k    sJ | j        }| j
        t          j        k    r| j        }t	          | j	                  |k    r t!          | j	        d d         dz   |          | j	        |z   }d| _	        |r| j
        t          j        k    r|                    |          }|dk    r|                    |d|          }|dk    rB|d |         }	d|||         x}
v r)t'          d|
          }t)          | j        |           |n
|d |         }	| j        r|	                                }	t/          j        t2          |	          sBt'          |d |                             d	d
                    }t)          | j        |           |t7          t9          |	          d          }||t	          |          z   d          }|dk    r8t          j        | _
        | j        r|                    d          r
|dd          }n;t          j        | _
        || _        | j                                         n	|| _	        dS | j
        t          j        k    r| j        }t	          |          }||k    r'||z
  | _        | j                            ||           dS d| _        | j                            |d |         |           ||d          }t          j         | _
        | j        !                                 | j
        t          j         k    r| j        r|                    d          r
|dd          }|d t	          |                   |k    r)|t	          |          d          }t          j        | _
        njt	          |          t	          |          k    s||d t	          |                   k    r&t'          d          }t)          | j        |           ||| _	        dS | j
        t          j        k    rj|                    |          }|dk     r	|| _	        dS |d |         }||t	          |          z   d          }|dk    r|"                    d          }t	          |          | j        k    r t!          |d d         dz   | j                  | j#        $                    |           t	          | j#                  | j%        k    rtM          d          | j#        d         dk    rx	 | j'        (                    | j#                  \  }}| j#        )                                 n# | j#        )                                 w xY w| j                                         d|fS |n=| j         t          j*        k    r(| j                            |t	          |                     dS )Nr   )TrX   Tr   r   rX   r=   z"Unexpected LF in chunk-extension: asciir      r   r   )FrX   z3Chunk size mismatch: expected CRLF after chunk datazToo many trailers receivedr   )+rM  r`   rd   rL  r   r   r   r   re   rP  rN  rh   rk   rQ  rn   rR  r/   rj   r   r0   r&   ry   r   rer   rD   r   r]   r   r.  rO  begin_http_chunk_receivingrl   end_http_chunk_receivingr   rT  r   rS  r'   r   r   r   rf   )rz   rY  r   rZ  required	chunk_lenr   r   isize_bextexcsizer   trailersraw_trailerss                   rY   r   zHttpPayloadParser.feed_dataP  s    :000|HE

I9$$')3&&ui888<1$$L))+++$9 %  !&&uYhY'7BBB%%'''U899--- Z:333 '{j&DDDDD"&"5;*";;;&*&:Ot'((?::%d&6tt&<v&EWWW(50#&  j+ ;*"???**S//Caxx!JJy!S9966%*2A2YF$ae)<==&;$P$P$P'" '" !.dlC @ @ @&)	  > &+4C4[F9 4%+\\^^F!|Iv>> &"7 %dsd 2 27<M N N# #C *$,<<<"%I"5=="55 %cCHHn&6&6 7199*4*CDK#y 2U-=-=e-D-D 2(-abb	*4*HDK/3D, LCCEEEE+0()z ;*"@@@#/H #E

I)+++3i+?(..ui@@@)z+,(..uYhY/?JJJ %hii 0&0&H==??? ;*"DDDy *U%5%5e%<%< * %abb	Zs3xxZ(C// %c#hhjj 1&0&CUs3xx//5C#e**<M3M3M3Q  &dlC888!	+0()z;*";;;**S//CQww+0()z #;D!#C."2"23Ee||#{{5114yy4#777)$tt*v*=t?STTT'..t4444.//$2DDD,-IJJJ *2.#558595I5W5W $ 36 62Hl !/557777D/557777--///#U{*U  j+Z Z:555L""5#e**555zs   "X X2)NFNNNTTFrv   N)r<   rX  )rQ   rR   rS   r4   r   r]   rV   rT   r6   r{   r   r   r  r   r   rW   rX   rY   r   r     s_        !%%)" $#' $6$ ""6$ 6$ 6$6$ 6$ 	6$
 c]6$ sm6$ 6$ !6$ 6$ 6$ &6$ 6$ 6$ 6$  
!6$ 6$ 6$ 6$p
 
 
 
 EIS SS!%S<AS	tU{	S S S S S SrX   r   c            	           e Zd ZU dZeed<   efdedee	         de
ddfdZefd	ed
eddfdZdede
ddfdZddZddZddZdS )rU  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  max_decompress_sizerv   Nc                 R   || _         d| _        | j        |_        || _        d| _        |  |dk    r*t
          st          d          t                      | _        nE|dk    r*t          st          d          t                      | _        nt          |          | _        || _        d S )Nr   Fr   zECan not decode content-encoding: brotli (br). Please install `Brotli`r   zRCan not decode content-encoding: zstandard (zstd). Please install `backports.zstd`)r  )rm  rg  total_compressed_bytesr  _started_decodingr   r*   r   rl  r   r   r   _max_decompress_size)rz   rm  r  rn  s       rY   r{   zDeflateBuffer.__init__  s     	%)Y" !&Xt *.   !3 4 4D *6   !1 2 2D 0( C C CD$7!!!rX   rf  	exc_causec                 2    t          | j        ||           d S rx   )r&   rm  )rz   rf  rs  s      rY   r&   zDeflateBuffer.set_exception  s    
 	dhY/////rX   rY  rg  c                 "   |sd S | xj         |z  c_         | j         | j        _        | j        s5| j        dk    r*|d         dz  dk    rt          | j        d          | _        	 | j                            || j        dz             }n%# t          $ r t          d	| j        z            w xY wd| _        t          |          | j        k    rt          d
| j        z            |r*| j                            |t          |                     d S d S )Nr   r         T)r  suppress_deflate_headerr   )
max_lengthz#Can not decode content-encoding: %sz:Decompressed data exceeds the configured limit of %d bytes)rg  rm  rp  rq  r  r   rl  decompress_syncrr  r   r*   r   r,   r   )rz   rY  rg  s      rY   r   zDeflateBuffer.feed_data  sZ    	F		T		*.)' &		**a3!## !1! ! !D	%55$";a"? 6  EE  	 	 	&5E  	
 "& u::111%L+,  
  	2Huc%jj11111	2 	2s   #$B "B*c                     | j                                         }|s| j        dk    rN| j                            |t          |                     | j        dk    r| j         j        st          d          | j        	                                 d S )Nr   r   )
rl  flushrg  rm  r   r   r  r   r*   r   )rz   rY  s     rY   r   zDeflateBuffer.feed_eof=  s    !'')) 	6DIMMHuc%jj111}	))$2C2G)*9555rX   c                 8    | j                                          d S rx   )rm  r_  r   s    rY   r_  z(DeflateBuffer.begin_http_chunk_receivingG  s    ++-----rX   c                 8    | j                                          d S rx   )rm  r`  r   s    rY   r`  z&DeflateBuffer.end_http_chunk_receivingJ  s    ))+++++rX   rj  )rQ   rR   rS   r;  r   rU   r   r4   r   rT   r]   r{   r    r   r&   r   r   r   r_  r`  rW   rX   rY   rU  rU    s        NN $?	8 88 3-8 !	8
 
8 8 8 8F $10 00 !0 
	0 0 0 0)2u )2C )2D )2 )2 )2 )2V   . . . ., , , , , ,rX   rU  )r8   r9   r:   r;   )lr  r  r^  string
contextlibr   enumr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	multidictr   r   r   yarlr   r   r   base_protocolr   compression_utilsr   r   r   r   r   r   helpersr    r!   r"   r#   r$   r%   r&   http_exceptionsr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   http_writerr1   r2   streamsr3   r4   typedefsr5   __all__r  set	printabler>   rT   rU   escaper?   compiler@   rA   ASCIIrB   rC   rD   r   r:   r;   r^   r`   rh   r6   rV   r   ABCr7   r8   r9   r   rU  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrW   rX   rY   <module>r     s   




  				                                            " : 9 9 9 9 9 9 9 9 9             ' ' ' ' ' '                                                        4 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0             ~C 011%C/ 1 1 1 (bi(9::s : : :)rz*J*J*J*JKKws|	 K K K5?RZ6 6 uWS\2    )bj);RXFFgcl F F F(bj::gcl : : :#-2:.>#?#?	5  ? ? ?
 
 
 
 

 
 
 
	 	 	 	 	 	 	 	 	*,>??              W? W? W? W? W? W? W? W?t=#3C#8 =T = = = =i i i i i'%. i i iX^H ^H ^H ^H ^H
#45 ^H ^H ^HBQP QP QP QP QP$67 QP QP QPhX X X X X X X Xve, e, e, e, e, e, e, e,P ( ) ' ) 	 1	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 /0.01 1  	 	 	DD	s   *J JJ