+
    j                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	H
t
 ^ RIHtHtHtHtHtHtHtHtHtHtHt ^ RIHtHtHt ^ RIHt ^ RIHtHt RsRsRt R t!R	t" ! R
 R]4      t# ! R R]4      t$ ! R R]4      t%Rt&Rt'Rt(Rt)]PT                  ! R]PV                  ! ])4      ,          4      t,]PT                  ! R4      t-]PT                  ! R4      t.]PT                  ! R4      t/]0! R4      t1R t2 ! R R4      t3 ! R R]34      t4R# )    )IntEnumN)ChunkedReaderLengthReader	EOFReaderBody)InvalidHeaderInvalidHeaderName
NoMoreDataInvalidRequestLineInvalidRequestMethodInvalidHTTPVersionLimitRequestLineLimitRequestHeadersUnsupportedTransferCodingObsoleteFoldingExpectationFailed)InvalidProxyLineInvalidProxyHeaderForbiddenProxyRequest)InvalidSchemeHeaders)bytes_to_strsplit_request_uric                   \        V RR4      pVR8X  d   R# \        f
    ^ RIpRsVs\        '       g   VR8X  d   \        R4      h\        '       g   R# \        \        R	4      '       g   VR8X  d   \        R
4      hR# . p\         F(  p\        WR4      '       g   K  VP                  V4       K*  	  V'       d+   VR8X  d"   \        RRP                  V4      ,          4      hR# R#   \         d    Rs Li ; i)a  Check if fast C parser is available and should be used.

Returns False if:
- http_parser='python' is explicitly set
- gunicorn_h1c is not installed (in 'auto' mode)
- gunicorn_h1c < 0.4.1 (in 'auto' mode)
- Incompatible compatibility flags are enabled (in 'auto' mode)

Raises RuntimeError if:
- http_parser='fast' but gunicorn_h1c is not installed
- http_parser='fast' but gunicorn_h1c < 0.4.1
- http_parser='fast' but incompatible flags are enabled
http_parserautopythonFNTfastz1gunicorn_h1c not installed but http_parser='fast'r   zigunicorn_h1c >= 0.4.1 required for http_parser='fast'. Please upgrade: pip install --upgrade gunicorn_h1czqhttp_parser='fast' is incompatible with compatibility flags: %s. Use http_parser='python' or disable these flags.z, )
getattr_fast_parser_availablegunicorn_h1c_fast_parser_moduleImportErrorRuntimeErrorhasattr_FAST_PARSER_INCOMPATIBLE_FLAGSappendjoin)cfgparser_settingr    incompatibleflags   &    J/var/www/idalgo/venv/lib/python3.14/site-packages/gunicorn/http/message.py_check_fast_parserr-   #   s	     S-8N!%	+%)"". "!n&>NOO!! &(:;;V#E 
  L/3e$$% 0 V#C))L)*  G  	+%*"	+s   C& &C65C6s   

 
QUIT
c                   "    ] tR t^ftRt^ t^tRtR# )	PPCommandzPROXY protocol v2 commands. N)__name__
__module____qualname____firstlineno____doc__LOCALPROXY__static_attributes__r0       r,   r/   r/   f   s    %EEr9   r/   c                   *    ] tR t^ltRt^ t^t^t^tRt	R# )PPFamilyz#PROXY protocol v2 address families.r0   N)
r1   r2   r3   r4   r5   UNSPECINETINET6UNIXr8   r0   r9   r,   r;   r;   l   s    -FDEDr9   r;   c                   &    ] tR t^ttRt^ t^t^tRtR# )
PPProtocolz&PROXY protocol v2 transport protocols.r0   N)	r1   r2   r3   r4   r5   r<   STREAMDGRAMr8   r0   r9   r,   rA   rA   t   s    0FFEr9   rA   i  i   z!#$%&'*+-.^_`|~z[%s0-9a-zA-Z]+z[a-z#]zHTTP/(\d)\.(\d)z[\x00-\x08\x0a-\x1f\x7f]c                    RV9   d   R#  \         P                  ! V 4      pT F  pY49   g   K   R# 	  R#   \         d     R# i ; i)zCheck if IP address is in the allow list.

Args:
    ip_str: The IP address string to check
    allow_list: The original allow list (strings, may contain "*")
    networks: Pre-computed ipaddress.ip_network objects from config
*TF)	ipaddress
ip_address
ValueError)ip_str
allow_listnetworksipnetworks   &&&  r,   _ip_in_allow_listrN      sQ     j!!&) =    s   5 AAc                   X   a  ] tR t^t o R tR tR tR tRR ltRR lt	R t
R tR	tV tR
# )Messagec                   Wn         W n        W0n        W0n        R V n        . V n        . V n        R V n        VP                  '       d   RMRV n	        RV n
        RV n        VP                  V n        V P                  ^ 8:  g   V P                  \        8  d   \        V n        VP                  V n        V P                  ^ 8:  d   \        V n        V P                  ;'       g    \        pV P                  V^,           ,          ^,           V n        V P#                  V P                  4      pV P                  P%                  V4       V P'                  4        R # )NhttpshttpF)r(   unreader	peer_addrremote_addrversionheaderstrailersbodyis_sslscheme
must_close_expected_100_continuelimit_request_fieldsMAX_HEADERSlimit_request_field_sizeDEFAULT_MAX_HEADERFIELD_SIZEmax_buffer_headersparseunreadset_body_reader)selfr(   rT   rU   max_header_field_sizeunuseds   &&&&  r,   __init__Message.__init__   s    "$	!$g&+# %($<$<!%%*,,{:(3D%(+(D(D%((A-,HD) !% = = ] ]A]"&";";"Q&#(*+#, DMM*V$r9   c                    R V n         R# )TN)r]   rg   s   &r,   force_closeMessage.force_close   s	    r9   c                    \        4       hN)NotImplementedError)rg   rT   s   &&r,   rd   Message.parse   s    !##r9   c                
   V P                   p\        V P                  \        4      '       d=   \	        V P                  ^ ,          VP
                  VP                  4       4      '       d   VP                  VP                  3# / . 3# )a  Return the (secure_scheme_headers, forwarder_headers) the peer is allowed to set.

When the peer's address is not in ``forwarded_allow_ips`` (or networks),
configured forwarding/secure-scheme policy must be ignored to prevent
spoofing.  Returns ``({}, [])`` when the peer is untrusted.
)	r(   
isinstancerU   tuplerN   forwarded_allow_ipsforwarded_allow_networkssecure_scheme_headersforwarder_headers)rg   r(   s   & r,   _peer_trusted_for_forwarded#Message._peer_trusted_for_forwarded   sl     hh4>>511$T^^A%68O8O%(%A%A%CE E,,c.C.CCC2vr9   c                   V'       gB   VR8X  d;   VP                  4       R8X  d   V P                  R8  d   MRV n        M\        V4      hW9   dM   W$V,          8H  pV'       d   RMRpV^ ,          '       d   WP                  8w  d   \        4       hMRV^ &   Wn        RV9   dY   W9   g   RV9   d    W3# V P                  P                  R8X  d    W3# V P                  P                  R	8X  d   R
# \        V4      hW3# )a  Apply per-header policy shared between Python and fast parsers.

Mutates ``self._expected_100_continue`` and ``self.scheme`` as needed.
``scheme_state`` is a single-element list used as a mutable sentinel
so the caller can detect repeated scheme headers.

Returns the (name, value) pair to retain, or ``None`` to drop the
header (per ``header_map='drop'``).  Raises the same exceptions the
Python path raises so behavior is identical regardless of parser.
EXPECTz100-continueTrR   rS   _rE   	dangerousdropN   r   )	lowerrW   r^   r   r\   r   r(   
header_mapr	   )	rg   namevaluescheme_statery   rz   from_trailersecurer\   s	   &&&&&&&  r,   _apply_header_policyMessage._apply_header_policy   s     0 {{}.<<&( 26D/ (..(D99F &WFFA[[(.00 ) #'Q$ $;(C3D,D } $$3 } $$.  (--}r9   c           	        . pVP                  R 4       Uu. uF  p\        V4      NK  	  ppR.pV'       d   / . rMV P                  4       w  rxV'       Edo   \        V4      V P                  8  d   \        R4      hVP                  ^ 4      p	\        V	4      \        R4      ,           p
V	P                  R4      ^ 8:  d   \        V	4      hV	P                  R^4      w  rV P                  P                  '       d   VP                  R4      p\        P                  V4      '       g   \        V4      hVP                  4       pV'       d   V\         9   d   \        V4      hVP#                  R4      .pV'       d   V^ ,          P%                  R
4      '       d   V P                  P&                  '       g   \)        V4      hVP                  ^ 4      p	V
\        V	4      \        R4      ,           ,          p
WP*                  u;8  d   ^ 8  d   M M\        R4      hVP-                  V	P#                  R4      4       K  RP/                  V4      p\0        P3                  V4      '       d   \        V4      hWP*                  u;8  d   ^ 8  d   M M\        R4      hV P5                  WVWxVR	7      pVf   EKc  VP-                  V4       EKw  V# u upi )   
Fzlimit request headers fieldsz
: 	 z!limit request headers fields sizez	 r   )r   	)splitr   r{   lenr_   r   popfindr   r(   strip_header_spacesrstripTOKEN_RE	fullmatchr	   upperRFC9110_6_5_1_FORBIDDEN_TRAILERstrip
startswithpermit_obsolete_foldingr   ra   r&   r'   !RFC9110_5_5_INVALID_AND_DANGEROUSsearchr   )rg   datar   rX   linelinesr   ry   rz   currheader_lengthr   r   kepts   &&&           r,   parse_headersMessage.parse_headers  sP    15

70CD0Cd#0CD w 8:2#47;7W7W7Y4! e7|t888)*HII 99Q<DIF3Myy~"#D))**S!,KDxx+++{{5)%%d++'-- ::<D (G G'--[['(E E!H//<<xx777)$//yy|TS[!88 #@#@D1D- /< = =TZZ./HHUOE077>>#D))<<@q@)*MNN,,\%) - D
 |NN4 I Es   Kc                ^   R pRpV P                    EF   w  r4VR8X  d   Ve   \        RV R7      hTpK"  VR8X  g   K+  VP                  R4       Uu. uF  qUP                  4       NK  	  ppV F  pVP	                  4       R8X  d   V'       d   \        RV R7      hRpK1  VP	                  4       R8X  d   V'       d   \        RV R7      hK]  VP	                  4       R	9   d(   V'       d   \        RV R7      hV P                  4        K  \        V4      h	  EK  	  V'       dU   V P                  R
8  d   \        RV R7      hVe   \        RV R7      h\        \        W P                  4      4      V n        R# Vet    \        V4      P                  4       '       d   \        V4      pM\        RV R7      hV^ 8  d   \        RV R7      h\        \!        V P                  V4      4      V n        R# \        \#        V P                  4      4      V n        R# u upi   \         d    \        RT R7      hi ; i)FNCONTENT-LENGTH)reqTRANSFER-ENCODING,chunkedTidentity)compressdeflategzipr   )rX   r   r   r   r   rn   r   rW   r   r   rT   rZ   str	isnumericintrH   r   r   )rg   r   content_lengthr   r   vvalsvals   &       r,   rf   Message.set_body_readere  s   !\\MT''!-'(8dCC!&,, ,1;;s+;<+;a	+;<Cyy{i/""/0C"NN"&
2 #"/0C"NN #(GG""/0C"NN((*7>>#   *8  ||f$#$7TBB) $$4$??]4?@DI'@~&0022%(%8N'(8dCC !#$4$??\$--HIDIYt}}56DI] =L  @#$4$??@s   H7*H "H H,c                    V P                   '       d   R # V P                   FA  w  rVR8X  g   K  VP                  4       P                  R4      pVR8X  d    R # VR8X  d    R#  M	  V P                  R8*  # )T
CONNECTIONr   closez
keep-aliveFr   r   )r]   rX   r   r   rW   )rg   hr   s   &  r,   should_closeMessage.should_close  sc    ???llFQL GGIOOE*<,&  # ||v%%r9   )r^   rZ   r(   rX   ra   r_   rc   r]   rU   rV   r\   rY   rT   rW   NF)r1   r2   r3   r4   rj   rn   rd   r{   r   r   rf   r   r8   __classdictcell__)__classdict__s   @r,   rP   rP      s6     >$:xHT:7x& &r9   rP   c                      a a ] tR tRt oRV 3R lltRR ltR tR tR tRR lt	RR lt
R	 tR
 tR tR tR tR tV 3R ltRtVtV ;t# )Requesti  c                  < R V n         R V n        R V n        R V n        R V n        VP
                  V n        V P
                  ^ 8  d   \        V n        V P
                  ^ 8X  d	   RV n        M=V P
                  \        8  d   \        V n        \        V n        MV P
                  V n        W@n        R V n	        \        V4      V n        \        SV `5  WV4       R # )Ni   )methoduripathqueryfragmentlimit_request_lineMAX_REQUEST_LINE_fast_limit_request_line
req_numberproxy_protocol_infor-   	_use_fastsuperrj   )rg   r(   rT   rU   r   	__class__s   &&&&&r,   rj   Request.__init__  s    	
 #&"8"8""Q&&6D# ""a',7D)$$(88,<D)&6D#,0,C,CD)$#'  ,C0	2r9   c                    VP                  4       pV'       g,   V'       d   \        4       h\        VP                  4       4      hVP	                  V4       R # rq   )readStopIterationr
   getvaluewriterg   rT   bufstopr   s   &&&& r,   get_dataRequest.get_data  s7    }}#o%S\\^,,		$r9   c                $   \        4       pV P                  WR R7       V P                  P                  pVR8w  d$   V P                  ^8X  d   V P                  WV4      pV P                  '       d   V P                  W4      # V P                  W4      # )T)r   off)		bytearray	read_intor(   proxy_protocolr   _handle_proxy_protocolr   _parse_fast_parse_pythonrg   rT   r   modes   &&  r,   rd   Request.parse  s{    kx40 xx&&5=T__1--hTBC >>>##H22!!(00r9   c           
        \        V4      p^ p  \        P                  VVV P                  V P                  V P
                  V P                  P                  V P                  P                  R7      p \-        TR,          4      T n        \-        TR,          4      T n        T P                  P2                  '       d    T P.                  P5                  4       T n        \        T P0                  4      ^ 8X  d   \+        T P0                  4      h \7        T P0                  4      pTP:                  ;'       g    RT n        TP<                  ;'       g    RT n        TP>                  ;'       g    RT n        ^TR,          3T n         . T n!        R.pT PE                  4       w  rTR	,           F]  w  r\-        T4      P5                  4       p\-        T4      pT PG                  YTY4      pTf   KB  T PB                  PI                  T4       K_  	  TR
,          pTTR #   \        P                   dc    \        T4      pT P                  Y4       \        T4      p\        T4      T P                  T P                  ,           8  d   \        R4      h EK~  \        P                   d   p\        \        T4      4      hRp?i\        P                   d   p\        \        T4      4      hRp?i\        P                    d   p\!        \        T4      4      hRp?i\        P"                   d   p\#        \        T4      4      hRp?i\        P$                   d   p\%        \        T4      4      hRp?i\        P&                   d   p\'        \        T4      4      hRp?i\        P(                   d   p\+        \        T4      4      hRp?ii ; i  \8         d    \+        T P0                  4      hi ; i)z:Parse request using fast C parser (gunicorn_h1c >= 0.4.1).)last_lenr   r_   ra   !permit_unconventional_http_method"permit_unconventional_http_versionmax buffer headersNr   r    minor_versionFrX   consumed)%bytesr!   parse_requestr   r_   ra   r(   r   r   IncompleteErrorr   r   rc   r   r   r   r   r   r	   r   
ParseErrorr   r   r   r   casefold_http_methodr   r   rH   r   r   r   rW   rX   r{   r   r&   )rg   rT   r   r   r   resultepartsr   ry   rz   
name_bytesvalue_bytesr   r   r   r   s   &&&              r,   r   Request._parse_fast  s3    Sz 1 -::%'+'D'D)-)B)B-1-J-J6:hh6`6`7;xx7b7b ;  . #6(#34v/ 88(((++++-DK txx=A$TXX..	/%dhh/E JJ$$"	[[&&B
,," 6/23 w373S3S3U0'-i'8'8#J
+113D -E,,\%D |LL% (9 *%HIC '66 Dt9x-Szt9t669V9VVV-.BCC W&77 /&s1v..&:: 2)#a&11&;; 3*3q622&99 1(Q00&88 0'A//&44 ,#CF++&11 1(Q001   	/$TXX..	/s   A"H O A2OOO J44OOK  O7O8LO#O$L88OOM$$O;O<NO'O(N<<O!O%c                   V P                  WV P                  4      w  r2V P                  V4       \        V4      pVR,          R8H  p VP	                  R4      pVR,          R8H  pV^ 8  dL   V'       gD   V P                  W4       \        V4      p\        V4      V P                  8  d   \        R4      hKp   T'       d%   T P                  P                  TR,          4       R# T P                  TRT RR	7      T n        YF^,           R pT# )
z'Parse request using pure Python parser.:N   Nr   s   

r   :r  NNr9   NFr   )	read_liner   parse_request_liner   r   r   r   rc   r   rT   re   r   rX   )rg   rT   r   r   r   doneidxrets   &&&     r,   r   Request._parse_python;  s     NN8$2I2IJ	% SzBx7"))K(C8w&DQwtx-Szt9t666-.BCC 7 MM  b*))$t*5)I78n
r9   c                    VP                  4       pV'       g'   V'       d   \        4       h\        \        V4      4      hVP	                  V4       R# )z7Read data from unreader and append to bytearray buffer.N)r   r   r
   r   extendr   s   &&&& r,   r   Request.read_into[  s6    }}#o%U3Z((

4r9   c                `   \        V4      p VP                  R4      pV^ 8  d   YSu;8  d   ^ 8  d   M M\        WS4      hMU\        V4      ^,
          Tu;8  d   ^ 8  d   M M\        \        V4      V4      hV P	                  W4       \        V4      pK  VRV \        WE^,           R 4      3# )z<Read a line from buffer, returning (line, remaining_buffer).r   N)r   r   r   r   r   r   )rg   rT   r   limitr   r  s   &&&&  r,   r  Request.read_lined  s    Sz))G$Cax??*3664y1}u(q(&s4y%88NN8):DTc
$Qwx.)+ 	+r9   c                ~    \        V4      V8  d   V P                  W4       K#  \        VRV 4      \        W#R 4      3# )z.Read exactly count bytes from buffer/unreader.N)r   r   r   r   )rg   rT   r   counts   &&&&r,   
read_bytesRequest.read_bytesw  s9    #hNN8)S%[!9S[#999r9   c                ,   \        V4      ^8  d   V P                  W4       K#  VR9   d4   VR,          \        8X  d"   V P                  4        V P	                  W4      # VR9   d0   VR,          R8X  d"   V P                  4        V P                  W4      # V# )zdHandle PROXY protocol detection and parsing.

Returns the buffer with proxy protocol data consumed.
:N   N:N   Ns   PROXY )v2r   )v1r   )r   r   PP_V2_SIGNATUREproxy_protocol_access_check_parse_proxy_protocol_v2_parse_proxy_protocol_v1r   s   &&&&r,   r   Request._handle_proxy_protocol}  s     #hmNN8) >!c#h/&A,,.00?? >!c"g&:,,.00?? 
r9   c                "   \        V P                  \        4      '       do   \        V P                  ^ ,          V P                  P
                  V P                  P                  4       4      '       g   \        V P                  ^ ,          4      hR# R# )z2Check if proxy protocol is allowed from this peer.N)ru   rU   rv   rN   r(   proxy_allow_ipsproxy_allow_networksr   rm   s   &r,   r  #Request.proxy_protocol_access_check  sh    t~~u--%dnnQ&79Q9Q&*hh&C&C&EG G'q(9::G .r9   c           
     V   \        V4      pRV9  d   V P                  W4       \        V4      pK%  VP                  R4      p\        VRV 4      p\	        W4^,           R 4      pVP                  R4      p\        V4      ^8w  d   \        V4      hV^,          pV^,          p	V^,          p
VR9  d   \        RV,          4      hVR8X  dM    \        P                  ! \        P                  V	4       \        P                  ! \        P                  V
4       MRVR8X  dL    \        P                  ! \        P                  V	4       \        P                  ! \        P                  V
4        \        V^,          4      p\        V^,          4      p^ Tu;8:  d   R8:  d   M M^ Tu;8:  d   R8:  g   M \        RT,          4      hR	TR
T	RTRT
RT/T n        T#   \         d    \        T4      hi ; i  \         d    \        T4      hi ; i  \         d    \        RT,          4      hi ; i)zPParse PROXY protocol v1 (text format).

Returns buffer with v1 header consumed.
r   Nr   TCP4TCP6zprotocol '%s' not supportedzinvalid port %si  r   client_addrclient_port
proxy_addr
proxy_port)r!  r"  )r   r   r   r   r   r   r   r   socket	inet_ptonAF_INETOSErrorAF_INET6r   rH   r   )rg   rT   r   r   r  r   	remainingbitsprotos_addrd_addrs_portd_ports   &&&          r,   r   Request._parse_proxy_protocol_v1  s    SzT!NN8):Dii D#J'd78n-	zz#t9>"4(( Qaa (("#@5#HIIF?-  8  8 f_-  &9  &9	=a\Fa\F f%%A,@5,@"#4t#;<< e66&&$
  7  -&t,,-  -&t,,-  	="#4t#;<<	=s&   A
G A
G0 *$H
 G-0H
H(c           
        \        V4      ^8  d   V P                  W4       K#  V^,          pV^,          p\        P                  ! R\	        VR,          4      4      ^ ,          pV^,          ^,	          pV^8w  d   \        RV,          4      hV^,          pV\        P                  \        P                  39  d   \        RV,          4      h^V,           p\        V4      V8  d   V P                  W4       K#  V\        P                  8X  d   RRRRR	RR
RRR/V n	        \        W(R 4      # V^,          ^,	          p	V^,          p
V
\        P                  8w  d   \        R4      h\	        V^^V,            4      pV	\        P                  8X  d   V^8  d   \        R4      h\        P                   ! \        P"                  VR,          4      p\        P                   ! \        P"                  VR,          4      p\        P                  ! RVR,          4      ^ ,          p\        P                  ! RVR,          4      ^ ,          pRpEMV	\        P$                  8X  d   V^$8  d   \        R4      h\        P                   ! \        P&                  VR,          4      p\        P                   ! \        P&                  VR,          4      p\        P                  ! RVR,          4      ^ ,          p\        P                  ! RVR,          4      ^ ,          pRpMEV	\        P(                  8X  d   RRRRR	RR
RRR/V n	        \        W(R 4      # \        RV	,          4      hRVRVR	VR
VRV/V n	        \        W(R 4      # )zRParse PROXY protocol v2 (binary format).

Returns buffer with v2 header consumed.
z>H:      Nzunsupported version %dzunsupported command %dr   r6   r#  Nr$  r%  r&  zonly TCP protocol is supportedz"insufficient address data for IPv4:r      N:r7     N:r8  
   N:r9  r  Nr!  z"insufficient address data for IPv6:r   r6  N:r6      N:r:  "   N:r;  $   Nr"  r<   zunsupported address family %d)r   r   structunpackr   r   r/   r6   r7   r   r   rA   rB   r;   r=   r'  	inet_ntopr)  r>   r+  r<   )rg   rT   r   ver_cmd	fam_protolengthrW   commandtotal_header_sizefamilyprotocol	addr_datar/  r0  r1  r2  r.  s   &&&              r,   r   Request._parse_proxy_protocol_v2  s    #hmNN8) b'G	tU3u:%67: T>a'a<$%=%GHH D.9??IOO<<$%=%GHH K#h**NN8) ioo% 'ttdd(D$ S!3455 d"q(t# z((($%EFF#bf-.	X]]"{()MNN%%fnninEF%%fnninEF]]449!<F]]45)9:1=FEx~~%{()MNN%%fooyGF%%fooy7GHF]]45)9:1=F]]45)9:1=FEx& !(ttdd(D$ S!3455 %%Dv%MNN e66&&$
  /011r9   c                   VP                  R ^4       Uu. uF  p\        V4      NK  	  pp\        V4      ^8w  d   \        \        V4      4      hV^ ,          V n        V P
                  P                  '       gq   \        P                  V P                  4      '       d   \        V P                  4      h^\        V^ ,          4      u;8:  d   ^8:  g   M \        V P                  4      h\        P                  V P                  4      '       g   \        V P                  4      hV P
                  P                  '       d    V P                  P                  4       V n        V^,          V n        \        V P                  4      ^ 8X  d   \        \        V4      4      hV P                  R8X  d&   V P                  R8w  d   \        \        V4      4      hV P                  R8w  dX   V P                  R8w  dG   V P                  P                  R4      '       g&   RV P                  9  d   \        \        V4      4      h \!        V P                  4      pTP$                  ;'       g    RT n        TP&                  ;'       g    RT n        TP(                  ;'       g    RT n        \*        P                  T^,          4      pTf   \-        T^,          4      h\/        TP1                  ^4      4      \/        TP1                  ^4      4      3T n        RT P2                  u;8:  d   R	8  g6   M T P
                  P4                  '       g   \-        T P2                  4      hR# R# u upi   \"         d    \        \        T4      4      hi ; i)
    rE   OPTIONSCONNECT/z://r   Nr   )r  r   )r   r   r   r   r   r(   r   METHOD_BADCHAR_REr   r   r   r   r   r   r   r   r   rH   r   r   r   
VERSION_REr   r   grouprW   r   )rg   
line_bytesbitr-  r   matchs   &&    r,   r  Request.parse_request_line4  s   -7-=-=dA-FG-FcS!-FGt9>$\*%=>> 1g xx999 ''44*4;;77DG***4;;77!!$++..&t{{33 88(((++++-DK 7 txx=A$\*%=>> 88s?t{{i7$\*%=>>
 KK9$HHO++C00)$\*%=>>	?%dhh/E JJ$$"	[[&&B
,," $$T!W-=$T!W--EKKN+SQ-@A..88>>>(66 ? /} Hf  	?$\*%=>>	?s   M9M  M?c                   < \         SV `  4        \        V P                  P                  \
        4      '       d'   \        \        V P                  ^ 4      4      V n        R# R# )r   N)	r   rf   ru   rZ   readerr   r   r   rT   )rg   r   s   &r,   rf   Request.set_body_readerx  sA    !dii&&	22\$--;<DI 3r9   )r   r   rZ   r   rX   r   r   r   r   r   r   r   rW   )r   r   )r   )r1   r2   r3   r4   rj   r   rd   r   r   r   r  r  r   r  r  r  r  rf   r8   r   __classcell__)r   r   s   @@r,   r   r     sX     3:1Un@+&:,;;z[2zB7H= =r9   r   )r   r   )HOSTr   r   TRAILERAUTHORIZATIONTE)5enumr   rF   rer'  r=  gunicorn.http.bodyr   r   r   r   gunicorn.http.errorsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   gunicorn.utilr   r   r   r!   r%   r-   r  r/   r;   rA   r   r`   rb   RFC9110_5_6_2_TOKEN_SPECIALScompileescaper   rN  rO  r   	frozensetr   rN   rP   r   r0   r9   r,   <module>rf     s"  
   	   K K    ] \ 5 9   # <@ F w    #   2 ::'2995Q+RSTJJx( ZZ*+
 %'JJ/J$K !
 #, - # (A& A&HL=g L=r9   