Ë
    CØïiZ  ã                   ój  — 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
 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 d dlZd dlZdd	lmZmZ dd
l m!Z! ddl"m#Z# ddlm$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 dZ:erddl;m<Z< ee'e.dedge6f   Z=ee6gee9   f   Z> e'dde&i i dddd ej~                  d«      «
      Z@ G d„ deA«      ZB G d„ deA«      ZC ejˆ                  ddd¬ «       G d!„ d"«      «       ZEeee'eEf   e.f   ZF G d#„ de!«      ZGy)$é    N)Údeque)Úsuppress)Úescape)Ú
HTTPStatus)ÚLogger)ÚTYPE_CHECKINGÚAnyÚ	AwaitableÚCallableÚDequeÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcasté   )ÚAbstractAccessLoggerÚAbstractStreamWriter)ÚBaseProtocol)Úceil_timeout)ÚHttpProcessingErrorÚHttpRequestParserÚHttpVersion10ÚRawRequestMessageÚStreamWriter)Úaccess_loggerÚserver_logger)ÚEMPTY_PAYLOADÚStreamReader)Útcp_keepalive)ÚHTTPException)ÚAccessLogger)ÚBaseRequest)ÚResponseÚStreamResponse)ÚRequestHandlerÚRequestPayloadErrorÚPayloadAccessError)ÚServerr'   zasyncio.Task[None]ÚUNKNOWNú/TFc                   ó   — e Zd ZdZy)r(   zPayload parsing error.N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úN/var/www/html/aiagents/fe/lib/python3.12/site-packages/aiohttp/web_protocol.pyr(   r(   N   s   „ Ú r4   r(   c                   ó   — e Zd ZdZy)r)   z-Payload was accessed after response was sent.Nr.   r3   r4   r5   r)   r)   R   s   „ Ú7r4   r)   )Úauto_attribsÚfrozenÚslotsc                   ó,   — e Zd ZU eed<   eed<   eed<   y)Ú_ErrInfoÚstatusÚexcÚmessageN)r/   r0   r1   ÚintÚ__annotations__ÚBaseExceptionÚstrr3   r4   r5   r;   r;   V   s   … àƒKØ	ÓØ„Lr4   r;   c            !       ól  ‡ — e Zd ZdZdZdZddeeeej                  ddddd	d
dddœddde
j                  dedededee   dedededededededededef ˆ fd„Zdefd „Zedefd!„«       ZdFd"ee   dd#fd$„Zd%e
j2                  dd#fˆ fd&„Zd'ee   dd#fˆ fd(„Zd)edd#fd*„ZdGd+„Zd,e dd#fd-„Z!d.edd#fd/„Z"dGd0„Z#dGd1„Z$d2e%d3e&d4edd#fd5„Z'd6ed7edd#fd8„Z(d6ed7edd#fd9„Z)dGd:„Z*d2e%d;ed<e+e%ge,e&   f   de-e&ef   fd=„Z.dGd>„Z/d2e%d?e&d;edefd@„Z0	 	 	 dHd2e%dAed'ee   dBee   de&f
dC„Z1dDe2de+e%ge,e&   f   fdE„Z3ˆ xZ4S )Ir'   aj  HTTP protocol implementation.

    RequestHandler handles incoming HTTP request. It reads request line,
    request headers and request payload and calls handle_request() method.
    By default it always returns with 404 response.

    RequestHandler handles errors in incoming request, like bad
    status line, bad headers or incomplete payload. If any error occurs,
    connection gets closed.

    keepalive_timeout -- number of seconds before closing
                         keep-alive connection

    tcp_keepalive -- TCP keep-alive is on, default is on

    debug -- enable debug mode

    logger -- custom logger object

    access_log_class -- custom class for access_logger

    access_log -- custom logging object

    access_log_format -- access log format string

    loop -- Optional event loop

    max_line_size -- Optional maximum header line size

    max_field_size -- Optional maximum header field size

    max_headers -- Optional maximum header size

    timeout_ceil_threshold -- Optional value to specify
                              threshold to ceil() timeout
                              values

    r   )Ú_request_countÚ
_keepaliveÚ_managerÚ_request_handlerÚ_request_factoryÚ_tcp_keepaliveÚ_keepalive_timeÚ_keepalive_handleÚ_keepalive_timeoutÚ_lingering_timeÚ	_messagesÚ_message_tailÚ_waiterÚ_task_handlerÚ_upgradeÚ_payload_parserÚ_request_parserÚ_reading_pausedÚloggerÚdebugÚ
access_logr   Ú_closeÚ_force_closeÚ_current_requestÚ_timeout_ceil_thresholdg     ÀR@TFiþ  i €  g      $@i   é   )Úkeepalive_timeoutr!   rV   Úaccess_log_classrX   Úaccess_log_formatrW   Úmax_line_sizeÚmax_headersÚmax_field_sizeÚlingering_timeÚread_bufsizeÚauto_decompressÚtimeout_ceil_thresholdÚmanagerr*   Úloopr^   r!   rV   r_   rX   r`   rW   ra   rb   rc   rd   re   rf   rg   c          
      ód  •— t         ‰| �  |«       d| _        d| _        d | _        || _        |j                  | _        |j                  | _	        || _
        d| _        d | _        || _        t        |«      | _        t!        «       | _        d| _        d | _        d | _        d| _        d | _        t/        | |||
||t0        |¬«      | _        d| _        	 t        |«      | _        || _        |	| _        || _        |r |||«      | _         nd | _         d| _!        d| _"        y # t6        t8        f$ r Y ŒMw xY w)Nr   Fg        r4   )ra   rc   rb   Úpayload_exceptionrf   r]   )#ÚsuperÚ__init__rD   rE   r[   rF   Úrequest_handlerrG   Úrequest_factoryrH   rI   rJ   rK   rL   ÚfloatrM   r   rN   rO   rP   rQ   rR   rS   r   r(   rT   r\   Ú	TypeErrorÚ
ValueErrorrV   rW   rX   r   rY   rZ   )Úselfrh   ri   r^   r!   rV   r_   rX   r`   rW   ra   rb   rc   rd   re   rf   rg   Ú	__class__s                    €r5   rm   zRequestHandler.__init__§   sJ  ø€ ô( 	‰Ñ˜ÔàˆÔØˆŒØ7;ˆÔØ*1ˆŒØ;B×;RÑ;RˆÔØ;B×;RÑ;RˆÔà+ˆÔà"ˆÔØ;?ˆÔØ"3ˆÔÜ$ ^Ó4ˆÔä*/«'ˆŒØ ˆÔà7;ˆŒØ;?ˆÔàˆŒØ$(ˆÔÜ<MØØØØ'Ø)Ø#Ü1Ø+ô	=
ˆÔð /0ˆÔ$ð	Ü+0Ð1GÓ+HˆDÔ(ð ˆŒØˆŒ
Ø$ˆŒÙÙAQØÐ-óBˆDÕð "&ˆDÔàˆŒØ!ˆÕøô œ:Ð&ò 	Ùð	ús   ÃD ÄD/Ä.D/Úreturnc                 ór   — dj                  | j                  j                  | j                  �d«      S d«      S )Nz<{} {}>Ú	connectedÚdisconnected)Úformatrt   r/   Ú	transport©rs   s    r5   Ú__repr__zRequestHandler.__repr__ñ   s;   € Ø×ÑØ�N‰N×#Ñ#ØŸ>™>Ð5ˆKó
ð 	
à;Ió
ð 	
r4   c                 ó   — | j                   S ©N)rL   r{   s    r5   r^   z RequestHandler.keepalive_timeout÷   s   € à×&Ñ&Ð&r4   ÚtimeoutNc              ƒ   ó8  K  — d| _         | j                  �| j                  j                  «        | j                  r| j                  j                  «        t	        t
        j                  t
        j                  «      5  t        |«      4 ƒd{  –—†  | j                  �-| j                  j                  t        j                  «       «       | j                  �.| j                  j                  «       s| j                  ƒ d{  –—†  ddd«      ƒd{  –—†  ddd«       | j                  �| j                  j                  «        | j                  �"| j                  j                  «        d| _        yy7 Œä7 Œs7 Œe# 1 ƒd{  –—†7  sw Y   ŒuxY w# 1 sw Y   ŒyxY w­w)z±Do worker process exit preparations.

        We need to clean up everything and stop accepting requests.
        It is especially important for keep-alive connections.
        TN)rZ   rK   ÚcancelrP   r   ÚasyncioÚCancelledErrorÚTimeoutErrorr   r[   Ú_cancelrQ   Údonerz   Úclose)rs   r   s     r5   ÚshutdownzRequestHandler.shutdownû   sJ  è ø€ ð !ˆÔà×!Ñ!Ð-Ø×"Ñ"×)Ñ)Ô+à�<Š<Ø�L‰L×ÑÔ!ô ”g×,Ñ,¬g×.BÑ.BÓCñ 	-Ü# GÓ,÷ -ñ -Ø×(Ñ(Ð4Ø×)Ñ)×1Ñ1´'×2HÑ2HÓ2JÔKà×%Ñ%Ð1¸$×:LÑ:L×:QÑ:QÔ:SØ×,Ñ,×,Ð,÷-÷ -÷	-ð ×ÑÐ)Ø×Ñ×%Ñ%Ô'à�>‰>Ð%Ø�N‰N× Ñ Ô"Ø!ˆD�Nð &ð-øð
 -øð-ø÷ -÷ -ñ -ú÷	-ð 	-üsz   ‚A<FÁ>FÂE3ÂFÂA/E9ÄE5ÄE9ÄFÄE7ÄFÄAFÅ3FÅ5E9Å7FÅ9F	Å?FÆ F	ÆFÆFÆFrz   c                 ó6  •— t         ‰| �  |«       t        t        j                  |«      }| j
                  rt        |«       | j                  j                  | j                  «       «      | _
        | j                  €J ‚| j                  j                  | |«       y r~   )rl   Úconnection_mader   r‚   Ú	TransportrI   r!   Ú_loopÚcreate_taskÚstartrQ   rF   )rs   rz   Úreal_transportrt   s      €r5   rŠ   zRequestHandler.connection_made  st   ø€ Ü‰Ñ 	Ô*äœg×/Ñ/°Ó;ˆØ×ÒÜ˜.Ô)à!ŸZ™Z×3Ñ3°D·J±J³LÓAˆÔØ�}‰}Ð(Ð(Ð(Ø�‰×%Ñ% d¨NÕ;r4   r=   c                 ó¢  •— | j                   €y | j                   j                  | |«       t        ‰| �  |«       | j                   j                  }d | _         d| _        d | _        d | _        d | _        | j                  �| j                  j                  «        | j                  �(|€t        d«      }| j                  j                  |«       | j                  �| j                  j                  «        |r&| j                  �| j                  j                  «        d | _        | j                  �"| j                  j!                  «        d | _        y y )NTzConnection lost)rF   Úconnection_lostrl   Úhandler_cancellationrZ   rH   rG   rT   rK   r�   r[   ÚConnectionResetErrorr…   rP   rQ   rS   Úfeed_eof)rs   r=   r’   rt   s      €r5   r‘   zRequestHandler.connection_lost%  s%  ø€ Ø�=‰=Ð ØØ�‰×%Ñ% d¨CÔ0ä‰Ñ Ô$ð  $Ÿ}™}×AÑAÐàˆŒØ ˆÔØ $ˆÔØ $ˆÔØ#ˆÔà×!Ñ!Ð-Ø×"Ñ"×)Ñ)Ô+à× Ñ Ð,Øˆ{Ü*Ð+<Ó=�Ø×!Ñ!×)Ñ)¨#Ô.à�<‰<Ð#Ø�L‰L×ÑÔ!á D×$6Ñ$6Ð$BØ×Ñ×%Ñ%Ô'à!ˆÔà×ÑÐ+Ø× Ñ ×)Ñ)Ô+Ø#'ˆDÕ ð ,r4   Úparserc                 ó    — | j                   �J ‚|| _         | j                  r-| j                   j                  | j                  «       d| _        y y )Nr4   )rS   rO   Ú	feed_data)rs   r•   s     r5   Ú
set_parserzRequestHandler.set_parserI  sL   € à×#Ñ#Ð+Ð+Ð+à%ˆÔà×ÒØ× Ñ ×*Ñ*¨4×+=Ñ+=Ô>Ø!$ˆDÕð r4   c                  ó   — y r~   r3   r{   s    r5   Úeof_receivedzRequestHandler.eof_receivedS  s   € Ør4   Údatac                 ó
  — | j                   s| j                  ry | j                  €À| j                  s´| j                  €J ‚	 | j                  j                  |«      \  }}}|xs dD ]7  \  }}| xj                  dz  c_
        | j                  j                  ||f«       Œ9 | j                  }|r#|�!|j                  «       s|j                  d «       || _        |r|r|| _        y y y | j                  €$| j                  r|r| xj                   |z  c_        y |r2| j                  j                  |«      \  }	}|	r| j#                  «        y y y # t        $ r.}t        d||j                  ¬«      t        fg}d}d}Y d }~�Œd }~ww xY w)Ni�  )r<   r=   r>   Fr4   r3   r   )rZ   rY   rS   rR   rT   r—   r   r;   r>   r   rD   rN   ÚappendrP   r†   Ú
set_resultrO   r‡   )
rs   r›   ÚmessagesÚupgradedÚtailr=   ÚmsgÚpayloadÚwaiterÚeofs
             r5   Údata_receivedzRequestHandler.data_receivedV  sv  € Ø×Ò §¢Øð ×ÑÐ'°·²Ø×'Ñ'Ð3Ð3Ð3ðØ+/×+?Ñ+?×+IÑ+IÈ$Ó+OÑ(�˜( Dð !)¢¨Bò 6‘��WØ×#Ò# qÑ(Õ#Ø—‘×%Ñ% s¨G nÕ5ð6ð —\‘\ˆFÙ˜FÐ.°v·{±{´}à×!Ñ! $Ô'à$ˆDŒMÙ™DØ%)�Õ"ð !ˆxð ×!Ñ!Ð)¨d¯mªmÁØ×Ò $Ñ&Öñ Ø×,Ñ,×6Ñ6°tÓ<‰IˆC�ÙØ—
‘
•ð ð øô3 'ò ä S¨c¸3¿;¹;ÔGÌÐWð�ð !�Ø–ûðús   ÁE Å	FÅ#E=Å=FÚvalc                 ón   — || _         | j                  r"| j                  j                  «        d| _        yy)zMSet keep-alive connection mode.

        :param bool val: new state.
        N)rE   rK   r�   )rs   r§   s     r5   Ú
keep_alivezRequestHandler.keep_alive}  s3   € ð
 ˆŒØ×!Ò!Ø×"Ñ"×)Ñ)Ô+Ø%)ˆDÕ"ð "r4   c                 ó`   — d| _         | j                  r| j                  j                  «        yy)z�Close connection.

        Stop accepting new pipelining messages and close
        connection when handlers done processing messages.
        TN)rY   rP   r�   r{   s    r5   r‡   zRequestHandler.close‡  s'   € ð ˆŒØ�<Š<Ø�L‰L×ÑÕ!ð r4   c                 óº   — d| _         | j                  r| j                  j                  «        | j                  �"| j                  j	                  «        d| _        yy)zForcefully close connection.TN)rZ   rP   r�   rz   r‡   r{   s    r5   Úforce_closezRequestHandler.force_close‘  sG   € à ˆÔØ�<Š<Ø�L‰L×ÑÔ!Ø�>‰>Ð%Ø�N‰N× Ñ Ô"Ø!ˆD�Nð &r4   ÚrequestÚresponseÚtimec                 óŽ   — | j                   �9| j                   j                  ||| j                  j                  «       |z
  «       y y r~   )r   ÚlogrŒ   r¯   )rs   r­   r®   r¯   s       r5   Ú
log_accesszRequestHandler.log_accessš  s=   € ð ×ÑÐ)Ø×Ñ×"Ñ" 7¨H°d·j±j·o±oÓ6GÈ$Ñ6NÕOð *r4   ÚargsÚkwc                 óV   — | j                   r | j                  j                   |i |¤Ž y y r~   )rW   rV   ©rs   r³   r´   s      r5   Ú	log_debugzRequestHandler.log_debug   s'   € Ø�:Š:ØˆD�K‰K×Ñ˜tÐ* rÓ*ð r4   c                 ó<   —  | j                   j                  |i |¤Ž y r~   )rV   Ú	exceptionr¶   s      r5   Úlog_exceptionzRequestHandler.log_exception¤  s   € Øˆ�‰×Ñ˜tÐ* rÓ*r4   c                 óF  — | j                   s| j                  sy | j                  | j                  z   }| j                  r.| j
                  j                  «       |kD  r| j                  «        y | j
                  j                  | j                  | j                  «      | _        y r~   )rZ   rE   rJ   rL   rP   rŒ   r¯   r¬   Ú
call_laterÚKEEPALIVE_RESCHEDULE_DELAYÚ_process_keepaliverK   )rs   Únexts     r5   r¾   z!RequestHandler._process_keepalive§  s€   € Ø×Ò D§O¢OØà×#Ñ# d×&=Ñ&=Ñ=ˆð �<Š<Ø�z‰z�‰Ó  4Ò'Ø× Ñ Ô"Øð "&§¡×!6Ñ!6Ø×+Ñ+Ø×#Ñ#ó"
ˆÕr4   Ú
start_timern   c              ƒ   óì  K  — | j                   €J ‚	 	 || _         ||«      ƒ d {  –—† }d | _        	 t        |dd«      rt        j                  dt
        «       | j                  |||«      ƒ d {  –—† }||fS 7 ŒR# d | _        w xY w7 Œ# t        $ r+}|}| j                  |||«      ƒ d {  –—†7  }Y d }~||fS d }~wt        j                  $ r ‚ t        j                  $ rN}| j                  d|¬«       | j                  |d«      }| j                  |||«      ƒ d {  –—†7  }Y d }~||fS d }~wt        $ r<}| j                  |d|«      }| j                  |||«      ƒ d {  –—†7  }Y d }~||fS d }~ww xY w­w)NÚ__http_exception__Fzlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception insteadzRequest handler timed out.©Úexc_infoiø  éô  )rG   r[   ÚgetattrÚwarningsÚwarnÚDeprecationWarningÚfinish_responser"   r‚   rƒ   r„   r·   Úhandle_errorÚ	Exception)rs   r­   rÀ   rn   ÚrespÚresetr=   s          r5   Ú_handle_requestzRequestHandler._handle_requestº  s�  è ø€ ð ×$Ñ$Ð0Ð0Ð0ð	Jð-Ø(/�Ô%Ù,¨WÓ5×5�à(,�Õ%ô �tÐ1°5Ô9Ü—‘ð9ô 'ô	ð ×.Ñ.¨w¸¸jÓI×IˆEà�Uˆ{Ðð7 6ùà(,�Õ%úð. Jùô- ò 	JØˆDØ×.Ñ.¨w¸¸jÓI×IÐIŒEð, �Uˆ{Ðûô+ ×%Ñ%ò 	ØÜ×#Ñ#ò 	JØ�N‰NÐ7À#ˆNÔFØ×$Ñ$ W¨cÓ2ˆDØ×.Ñ.¨w¸¸jÓI×IÐIŒEð  �Uˆ{Ðûô ò 	JØ×$Ñ$ W¨c°3Ó7ˆDØ×.Ñ.¨w¸¸jÓI×IÐIŒEð �Uˆ{Ðûð	Jüs¨   ‚E4“A: ¥A8¦A: ªB ²=E4Á/BÁ0E4Á8A: Á:	BÂB ÂE4Â	E1ÂB7Â)B,Â*B7Â/E4Â7)E1Ã ;D)ÄDÄD)Ä!E4Ä)E1Ä5)E,ÅE!ÅE,Å$E4Å,E1Å1E4c              ƒ   ó  K  — | j                   }| j                  }|€J ‚| j                  }|€J ‚| j                  }d}| j                  €J ‚| j
                  €J ‚| j                  �sØ| j                  s2	 |j                  «       | _	        | j                  ƒ d{  –—†  	 d| _	        | j                  j                  «       \  }}|j                  «       }|xj                  dz  c_        t        | |«      }	t!        |t"        «      r| j%                  |«      }
t&        }n| j
                  }
| j	                  ||| |	|«      }	 | j                   j)                  | j+                  |||
«      «      }	 |ƒ d{  –—† \  }}~|r±| j/                  d«       	 | j0                  €|�| j/                  d«       �n’| j                  �s…| j2                  rc| j4                  sW|��j| j                   j                  «       }|| _        | j8                  �€<|j;                  ||z   | j<                  «      | _        �n�nt?        |j@                  «      | _        |jC                  «       �s)| jD                  }| j                  sÔ|rÒ| j/                  d|«       |j                  «       }||z   }tG        t        jH                  t        j                  «      5  |jC                  «       sj||k  retK        ||z
  «      4 ƒd{  –—†  |jM                  «       ƒ d{  –—†  ddd«      ƒd{  –—†  |j                  «       }|jC                  «       s||k  rŒeddd«       |jC                  «       s-| j                  s!| j/                  d«       | jO                  «        |jQ                  tS        «       «       | j0                  €|�| j/                  d«       ny| j                  sm| j2                  r`| j4                  sT|�S| j                   j                  «       }|| _        | j8                  €&|j;                  ||z   | j<                  «      | _        nn| j                  s�ŒØ| j                  s/d| _        | j0                  �| j0                  jO                  «        yyy7 �Œã# t        j                  $ r
 Y d| _	        Œ[w xY w# d| _	        w xY w7 �Œ;# t        j                  t,        f$ r² | j/                  d«       Y | j0                  €|�| j/                  d«       Œ¹| j                  rŒÆ| j2                  rd| j4                  sX|€Œá| j                   j                  «       }|| _        | j8                  ��Œ|j;                  ||z   | j<                  «      | _        �Œ6�Œ8w xY w7 �Œ”7 �Œ7 �Œr# 1 ƒd{  –—†7  sw Y   �ŒƒxY w# 1 sw Y   �ŒbxY w# t        j                  $ rµ | j/                  d«       Y | j0                  €|�| j/                  d«       �Œ®| j                  r�Œ¼| j2                  re| j4                  sY|€�ŒØ| j                   j                  «       }|| _        | j8                  ��Œ|j;                  ||z   | j<                  «      | _        �Œ-�Œ/tT        $ r:}| jV                  r| jY                  d	|¬
«       | j[                  «        Y d}~�Œd}~wt\        $ r.}| jY                  d|¬
«       | j[                  «        Y d}~�ŒHd}~ww xY w# | j0                  €|�| j/                  d«       w | j                  sr| j2                  rb| j4                  sV|�S| j                   j                  «       }|| _        | j8                  €%|j;                  ||z   | j<                  «      | _        w w w  Y �ŒHw xY w­w)a_  Process incoming request.

        It reads request line, request headers and request payload, then
        calls handle_request() method. Subclass has to override
        handle_request(). start() handles various exceptions in request
        or response handling. Connection is being closed always unless
        keep_alive(True) specified.
        Nr   z&Ignored premature client disconnectionz'Ignored premature client disconnection.z(Ignored premature client disconnection 2z'Start lingering close timer for %s sec.zUncompleted request.z'Ignored premature client disconnection zUnhandled runtime exceptionrÃ   zUnhandled exception)/rŒ   rQ   rF   rL   rH   rG   rZ   rN   Úcreate_futurerP   r‚   rƒ   Úpopleftr¯   Úrequests_countr   Ú
isinstancer;   Ú_make_error_handlerÚERRORr�   rÏ   ÚConnectionErrorr·   rz   rE   rY   rJ   rK   Úcall_atr¾   Úboolr©   Úis_eofrM   r   r„   r   Úreadanyr‡   Úset_exceptionr)   ÚRuntimeErrorrW   rº   r¬   rÌ   )rs   ri   Úhandlerrh   r^   rÍ   r>   r£   rŽ   Úwriterrn   r­   ÚtaskrÎ   Únowrd   Úend_tr=   s                     r5   rŽ   zRequestHandler.startá  s™  è ø€ ð �z‰zˆØ×$Ñ$ˆØÐ"Ð"Ð"Ø—-‘-ˆØÐ"Ð"Ð"Ø ×3Ñ3ÐØˆØ×$Ñ$Ð0Ð0Ð0Ø×$Ñ$Ð0Ð0Ð0à×#Ó#Ø—>’>ð(à#'×#5Ñ#5Ó#7�D”LØŸ,™,×&Ñ&ð $(�D”Là#Ÿ~™~×5Ñ5Ó7ÑˆG�Wà—I‘I“KˆEà×"Ò" aÑ'Õ"Ü! $¨Ó-ˆFÜ˜'¤8Ô,à"&×":Ñ":¸7Ó"C�Ü‘à"&×"7Ñ"7�à×+Ñ+¨G°W¸dÀFÈGÓTˆGðEà—z‘z×-Ñ-Ø×(Ñ(¨°%¸ÓIó�ðØ(,§*‘K�D˜%ð ÙØ—N‘NÐ#MÔNØðR —>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÖMØ×*Ó*Ø—’¨t¯{ª{à,Ñ8Ø"&§*¡*§/¡/Ó"3˜CØ36˜DÔ0Ø#×5Ñ5Ñ=Ø9=¿¹Ø$'Ð*;Ñ$;¸T×=TÑ=Tó:" Ö 6ñ ôg #' t§¡Ó"7�”ð —~‘~Õ'Ø%)×%9Ñ%9�NØ×,Ò,±ØŸ™ØEÀ~ôð #Ÿi™i›k˜Ø # nÑ 4˜ä%¤g×&:Ñ&:¼G×<RÑ<RÓSñ 2Ø&-§n¡nÔ&6¸3Àº;Ü+7¸À¹Ó+D÷ !<ñ !<à*1¯/©/Ó*;×$;Ð$;÷!<÷ !<ð '+§i¡i£k ð	 '.§n¡nÔ&6¸3À»;÷2ð #Ÿ>™>Ô+°D×4EÒ4EØŸ™Ð'=Ô>ØŸ
™
œà×%Ñ%Ô&8Ó&:Ô;ð —>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÕMØ×*Ò*Ø—’¨t¯{ª{à,Ð8Ø"&§*¡*§/¡/Ó"3˜CØ36˜DÔ0Ø#×5Ñ5Ð=Ø9=¿¹Ø$'Ð*;Ñ$;¸T×=TÑ=Tó:" Õ 6ð ð} ×#Ô#ðB × Ò Ø!%ˆDÔØ�~‰~Ð)Ø—‘×$Ñ$Õ&ð *ð !ðy 'úÜ×-Ñ-ò Øà#'�D•Lðûð $(�D•Lúð, #-úÜ×.Ñ.´Ð@ò Ø—N‘NÐ#KÔLØð^ —>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÕMØ×*Ó*Ø—’¨t¯{ª{à,Ñ8Ø"&§*¡*§/¡/Ó"3˜CØ36˜DÔ0Ø#×5Ñ5Ò=Ø9=¿¹Ø$'Ð*;Ñ$;¸T×=TÑ=Tó:" Ö 6ñ ð}úð4!<ùà$;ùð!<ù÷ !<÷ !<ò !<ú÷2ñ 2ûô ×)Ñ)ò Ø—‘ÐHÔIØð —>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÖMØ×*Ô*Ø—’¨t¯{ª{à,Ò8Ø"&§*¡*§/¡/Ó"3˜CØ36˜DÔ0Ø#×5Ñ5Ò=Ø9=¿¹Ø$'Ð*;Ñ$;¸T×=TÑ=Tó:" Ö 6ñ ô+  ò #Ø—:’:Ø×&Ñ&Ð'DÈsÐ&ÔSØ× Ñ ×"Ò"ûÜò #Ø×"Ñ"Ð#8À3Ð"ÔGØ× Ñ ×"Ò"ûð#ûð —>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÕMØ×*Ò*Ø—’¨t¯{ª{à,Ð8Ø"&§*¡*§/¡/Ó"3˜CØ36˜DÔ0Ø#×5Ñ5Ð=Ø9=¿¹Ø$'Ð*;Ñ$;¸T×=TÑ=Tó:" Õ 6ð  >ð 9ó ð +üsž  ‚A0^
Á3$Q= ÂQ:ÂQ= ÂB^
Ä<,V& Å)R, Å.R)Å/R, Å6V& ÆB^
È*BV& Ê>(VË&U:Ë'VË*VË>U=Ë?VÌVÌV Ì)VÌ9AV& ÎB%^
Ð><^
Ñ:Q= Ñ=RÒR Ò^
ÒRÒR Ò	R&Ò&^
Ò)R, Ò,*U7ÓV& Ó,^
Ô^
Ô-^
Õ(^
Õ6U7Õ7V& Õ:VÕ=VÖ VÖV	Ö	VÖ
V	ÖVÖV#ÖV& Ö&$[$×
[' ×-^
×:^
Ø-^
Ù(^
Ù-[$Ù5/Z*Ú$[' Ú*[$Ú6#[Û[' Û[$Û$[' Û'B^Þ^
Þ^Þ^
rÍ   c              ƒ   ó  K  — | j                   �Z| j                   j                  d«       d| _        | j                  r,| j                   j	                  | j                  «       d| _        	 |j
                  }	  ||«      ƒ d{  –—†  |j                  «       ƒ d{  –—†  | j                  |||«       y# t        $ r( |€t        d«      ‚t        dj                  |«      «      ‚w xY w7 Œd7 ŒN# t        $ r | j                  |||«       Y yw xY w­w)a   Prepare the response and write_eof, then log access.

        This has to
        be called within the context of any exception so the access logger
        can get exception information. Returns True if the client disconnects
        prematurely.
        NFr4   z+Missing return statement on request handlerz7Web-handler should return a response instance, got {!r}T)rT   Úset_upgradedrR   rO   r—   ÚprepareÚAttributeErrorrÝ   ry   Ú	write_eofr²   r×   )rs   r­   rÍ   rÀ   Úprepare_meths        r5   rÊ   zRequestHandler.finish_responseZ  s  è ø€ ð ×ÑÐ+Ø× Ñ ×-Ñ-¨eÔ4Ø!ˆDŒMØ×!Ò!Ø×$Ñ$×.Ñ.¨t×/AÑ/AÔBØ%(�Ô"ð
	ØŸ<™<ˆLð	Ù˜wÓ'×'Ð'Ø—.‘.Ó"×"Ð"ð
 �O‰O˜G T¨:Ô6Øøô# ò 	Øˆ|Ü"Ð#SÓTÐTä"ðç%™v d›|óð ð		úð (øØ"ùÜò 	Ø�O‰O˜G T¨:Ô6Ùð	üs`   ‚A'DÁ*B3 Á7C+ ÂC'ÂC+ ÂC)ÂC+ ÂDÂ31C$Ã$DÃ'C+ Ã)C+ Ã+D
ÄDÄ	D
Ä
Dr<   r>   c                 ó~  — | j                  d|¬«       |j                  j                  dkD  rt        d«      ‚d}|t        j
                  k(  rÆdj                  t        j
                  «      }t        j
                  j                  }d}| j                  r,t        t        «      5  t        j                  «       }ddd«       d|j                  j                  d	d
«      v r)|rt        |«      }d|› d�}dj                  ||¬«      }d}n|r|}|dz   |z   }t!        |||¬«      }	|	j#                  «        |	S # 1 sw Y   Œ|xY w)z›Handle errors.

        Returns HTTP response with specific status code. Logs additional
        information. It always closes current connection.
        zError handling requestrÃ   r   zMResponse is sent already, cannot send another response with the error messagez
text/plainz{0.value} {0.phrase}Nz	text/htmlÚAcceptÚ z<h2>Traceback:</h2>
<pre>z</pre>zV<html><head><title>{title}</title></head><body>
<h1>{title}</h1>
{msg}
</body></html>
)Útitler¢   z

)r<   ÚtextÚcontent_type)rº   rß   Úoutput_sizer×   r   ÚINTERNAL_SERVER_ERRORry   ÚdescriptionrW   r   rÌ   Ú	tracebackÚ
format_excÚheadersÚgetÚhtml_escaper%   r¬   )
rs   r­   r<   r=   r>   Úctrì   r¢   ÚtbrÍ   s
             r5   rË   zRequestHandler.handle_error  s<  € ð 	×ÑÐ3¸cÐÔBð �>‰>×%Ñ%¨Ò)Ü!ð)óð ð
 ˆØ”Z×5Ñ5Ò5Ø*×1Ñ1´*×2RÑ2RÓSˆEÜ×2Ñ2×>Ñ>ˆCØˆBØ�zŠzÜœiÓ(ñ 0Ü"×-Ñ-Ó/�B÷0ð ˜gŸo™o×1Ñ1°(¸BÓ?Ñ?ÙÜ$ R›�BØ6°r°d¸&ÐA�Cð0÷ ‘&˜u¨#�&Ó.ð ð !‘áØ�CØ &™.¨3Ñ.�ä˜v¨GÀ"ÔEˆØ×ÑÔàˆ÷-0ð 0ús   Â#D3Ä3D<Úerr_infoc                 ó0   ‡ ‡— dt         dt        fˆˆ fd„}|S )Nr­   ru   c              “   óp   •K  — ‰j                  | ‰j                  ‰j                  ‰j                  «      S ­wr~   )rË   r<   r=   r>   )r­   rù   rs   s    €€r5   rÞ   z3RequestHandler._make_error_handler.<locals>.handlerµ  s1   øè ø€ Ø×$Ñ$Ø˜Ÿ™¨(¯,©,¸×8HÑ8Hóð ùs   ƒ36)r$   r&   )rs   rù   rÞ   s   `` r5   rÕ   z"RequestHandler._make_error_handler²  s   ù€ ð	¤;ð 	´>ö 	ð
 ˆr4   )g      .@)ru   N)rÅ   NN)5r/   r0   r1   r2   r½   Ú	__slots__r   r#   r   Ú
LOG_FORMATr‚   ÚAbstractEventLooprp   rÙ   r   r   r   rB   r?   rm   r|   Úpropertyr^   r   rˆ   ÚBaseTransportrŠ   rA   r‘   r	   r˜   rš   Úbytesr¦   r©   r‡   r¬   r$   r&   r²   r·   rº   r¾   r   r
   r   rÏ   rŽ   rÊ   rË   r;   rÕ   Ú__classcell__)rt   s   @r5   r'   r'   `   s  ø„ ñ%ðN "#Ðð€IðD $(Ø"Ø&Ø7CØ*Ø!-×!8Ñ!8ØØ!Ø Ø"Ø $Ø!Ø $Ø()ò%H"àðH"ð ×'Ñ'ð	H"ð
 !ðH"ð ðH"ð ðH"ð Ð3Ñ4ðH"ð ðH"ð ðH"ð ðH"ð ðH"ð ðH"ð ðH"ð ðH"ð  ð!H"ð" ð#H"ð$ !&õ%H"ðT
˜#ó 
ð ð' 5ò 'ó ð'ñ" h¨u¡oð "Àó "ð>	<¨×)>Ñ)>ð 	<À4õ 	<ð"( 8¨MÑ#:ð "(¸tõ "(ðH% ð %¨ó %óð% %ð %¨Dó %ðN*˜dð * tó *ó"ó"ðPØ"ðPØ.<ðPØDIðPà	óPð+˜sð +¨#ð +°$ó +ð+ 3ð +¨cð +°dó +ó
ð&%àð%ð ð%ð " ; -°¸>Ñ1JÐ"JÑKð	%ð
 
ˆ~˜tÐ#Ñ	$ó%óNw'ðr#Ø"ð#Ø*8ð#ØFKð#à	ó#ðP Ø'+Ø!%ñ1àð1ð ð1ð �mÑ$ð	1ð
 ˜#‘ð1ð 
ó1ðfØ ðà	�;�- ¨>Ñ!:Ð:Ñ	;÷r4   )Hr‚   Úasyncio.streamsrò   rÇ   Úcollectionsr   Ú
contextlibr   Úhtmlr   rö   Úhttpr   Úloggingr   Útypingr   r	   r
   r   r   r   r   r   r   r   r   ÚattrÚyarlÚabcr   r   Úbase_protocolr   Úhelpersr   r   r   r   r   r   r±   r   r   Ústreamsr   r    Útcp_helpersr!   Úweb_exceptionsr"   Úweb_logr#   Úweb_requestr$   Úweb_responser%   r&   Ú__all__Ú
web_serverr*   Ú_RequestFactoryÚ_RequestHandlerÚURLrÖ   rÌ   r(   r)   Úsr;   Ú_MsgTyper'   r3   r4   r5   ú<module>r     sO  ðÛ Û Û Û Ý Ý Ý &Ý Ý ÷÷ ÷ ñ ó Û ç ;Ý 'Ý !÷õ ÷ .ß 0Ý &Ý )Ý !Ý $ß 2à
I€áÝ"ð àØØØØðð ðñ	€ð ˜K˜=¨)°NÑ*CÐCÑD€áØØØØØØØØ	Ø	Ø€D‡H�HˆSƒMó	€ô!˜)ô !ô8˜ô 8ð €‡��T $¨dÔ3÷ð ó 4ðð �Ð(¨(Ð2Ñ3°\ÐAÑB€ôZ	�\õ Z	r4   