Ë
    rPêjÃ�  ã                   ó°  — d dl Z d dlZ d dlZd dlZd dlZd dlmZ d dlmZ 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 d d	lmZmZmZmZ d dlZd dlZd d
lmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z& ddlm'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ dZAdZBer
d dlCZCddlDmEZE ee*e4de!dge=f   ZFee=ge
e@   f   ZG e*dde)i i ddd d  ej�                  d«      «
      ZI G d!„ d"eJ«      ZK G d#„ d$eJ«      ZL eL«       ZM ejœ                  ddd¬%«       G d&„ d'«      «       ZOePe*eOz  e4f   ZQ G d(„ de#«      ZRy))é    N)ÚBaseEventLoop)Údeque)Ú	AwaitableÚCallableÚSequence)Úsuppress)Úescape)Ú
HTTPStatus)ÚLogger)ÚTYPE_CHECKINGÚAnyÚOptionalÚcast)Úunder_cached_propertyé   )ÚAbstractAccessLoggerÚAbstractStreamWriter)ÚBaseProtocol)ÚDEFAULT_CHUNK_SIZEÚceil_timeout)ÚHttpProcessingErrorÚHttpRequestParserÚHttpVersion10ÚRawRequestMessageÚStreamWriterÚWebSocketReader)ÚBadHttpMethod)Úaccess_loggerÚserver_logger)ÚEMPTY_PAYLOADÚStreamReader)Útcp_keepalive)ÚHTTPExceptionÚHTTPInternalServerError)Ú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__© ó    úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/aiohttp/web_protocol.pyr*   r*   O   s   „ Ú r7   r*   c                   ó   — e Zd ZdZy)r+   z-Payload was accessed after response was sent.Nr1   r6   r7   r8   r+   r+   S   s   „ Ú7r7   r+   )Úauto_attribsÚfrozenÚslotsc                   ó,   — e Zd ZU eed<   eed<   eed<   y)Ú_ErrInfoÚstatusÚexcÚmessageN)r2   r3   r4   ÚintÚ__annotations__ÚBaseExceptionÚstrr6   r7   r8   r>   r>   Z   s   … àƒKØ	ÓØ„Lr7   r>   c            !       ó@  ‡ — e Zd ZdZdZddeeeej                  ddddde	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d   fd „«       Zedeeeeeef   z  eeef   z  d!z  fd"„«       Zedeeeeeef   z  eeef   z  d!z  fd#„«       Zedefd$„«       ZdJd%ed!z  dd!fd&„Zd'e
j<                  dd!fˆ fd(„Zd)e d!z  dd!fˆ fd*„Z!	 dKd+e"d,e#g d!f   d!z  dd!fd-„Z$dLd.„Z%d/e&dd!fd0„Z'dLd1„Z(d2edd!fd3„Z)dLd4„Z*dLd5„Z+d6e,d7e-d8ed!z  dd!fd9„Z.d:e/d;e/dd!fd<„Z0d:e/d;e/dd!fd=„Z1dLd>„Z2d6e,d?ed!z  d@e#e,ge3e-   f   dee-ef   fdA„Z4dLdB„Z5d6e,dCe-d?ed!z  dee-ef   fdD„Z6	 	 	 dMd6e,dEed)e d!z  dFed!z  de-f
dG„Z7dHe8de#e,ge3e-   f   fdI„Z9ˆ xZ:S )Nr)   aO  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 an idle 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

    )"Úmax_field_sizeÚmax_headersÚmax_line_sizeÚ_request_countÚ
_keepaliveÚ_managerÚ_request_handlerÚ_request_factoryÚ_tcp_keepaliveÚ_next_keepalive_close_timeÚ_keepalive_handleÚ_keepalive_timeoutÚ_lingering_timeÚ	_messagesÚ_max_msg_queue_sizeÚ_msg_queue_resume_sizeÚ_message_tailÚ_read_bufsizeÚ_handler_waiterÚ_waiterÚ_task_handlerÚ_payload_parserÚ_data_received_cbÚloggerÚdebugÚ
access_logr   Ú_closeÚ_force_closeÚ_current_requestÚ_timeout_ceil_thresholdÚ_request_in_progressÚ_logging_enabledÚ_cachei.  TFiþ  é€   g      $@é   )Úkeepalive_timeoutr"   r^   Úaccess_log_classr`   Úaccess_log_formatr_   rI   rH   rG   Úlingering_timeÚread_bufsizeÚauto_decompressÚtimeout_ceil_thresholdÚmanagerr-   Úlooprj   r"   r^   rk   r`   rl   r_   rI   rH   rG   rm   rn   ro   rp   c                ó>  •— t         | _        t         dz  | _        || _        t	        | |||
||t
        |t         ¬«	      }t        ‰| �  ||«       d| _        d| _	        d | _
        || _        |j                  | _        |j                  | _        |
| _        || _        || _        || _        d| _        d | _        || _        t/        |«      | _        t3        «       | _        d| _        d | _        d | _        d | _        d | _        d | _         d| _!        	 t/        |«      | _!        || _$        |	| _%        || _&        |r* |||«      | _'        | jN                  jP                  | _)        nd | _'        d| _)        d| _*        d| _+        d| _,        i | _-        y # tD        tF        f$ r Y Œ}w xY w)	Né   )rI   rG   rH   Úpayload_exceptionro   Úmax_msg_queue_sizer   Tg        r7   ri   F).ÚMAX_MSG_QUEUE_SIZErU   rV   rX   r   r*   ÚsuperÚ__init__rJ   rK   rc   rL   Úrequest_handlerrM   Úrequest_factoryrN   rI   rH   rG   rO   rP   rQ   rR   ÚfloatrS   r   rT   rW   r]   rZ   rY   r[   r\   rd   Ú	TypeErrorÚ
ValueErrorr^   r_   r`   r   Úenabledrf   ra   rb   re   rg   )Úselfrq   rr   rj   r"   r^   rk   r`   rl   r_   rI   rH   rG   rm   rn   ro   rp   ÚparserÚ	__class__s                     €r8   ry   zRequestHandler.__init__°   s¸  ø€ ô* $6ˆÔ ô '9¸AÑ&=ˆÔ#Ø)ˆÔÜ"ØØØØ'Ø)Ø#Ü1Ø+Ü1ô

ˆô 	‰Ñ˜˜vÔ&ð  ˆÔØˆŒØ48ˆÔØ'.ˆŒØ8?×8OÑ8OˆÔØ8?×8OÑ8OˆÔà*ˆÔØ&ˆÔØ,ˆÔà+ˆÔà*-ˆÔ'Ø8<ˆÔØ"3ˆÔÜ$ ^Ó4ˆÔä*/«'ˆŒØ ˆÔØ<@ˆÔà48ˆŒØ<@ˆÔØ8<ˆÔØ$(ˆÔà./ˆÔ$ð	Ü+0Ð1GÓ+HˆDÔ(ð ˆŒØˆŒ
Ø$ˆŒÙÙ>NØÐ-ó?ˆDÔð %)×$6Ñ$6×$>Ñ$>ˆDÕ!à!%ˆDÔØ$)ˆDÔ!àˆŒØ!ˆÔØ$)ˆÔ!Ø&(ˆ�øô% œ:Ð&ò 	Ùð	ús   ÄF
 Æ
FÆFÚreturnc                 ór   — dj                  | j                  j                  | j                  �d«      S d«      S )Nz<{} {}>Ú	connectedÚdisconnected)Úformatr‚   r2   Ú	transport©r€   s    r8   Ú__repr__zRequestHandler.__repr__
  s;   € Ø×ÑØ�N‰N×#Ñ#ØŸ>™>Ð5ˆKó
ð 	
à;Ió
ð 	
r7   zssl.SSLContextc                 óT   — | j                   €dS | j                   j                  d«      S )zReturn SSLContext if available.NÚ
sslcontext©rˆ   Úget_extra_infor‰   s    r8   Ússl_contextzRequestHandler.ssl_context  s1   € ð
 �~‰~Ð%ð ð	
ð —‘×.Ñ.¨|Ó<ð	
r7   Nc                 óT   — | j                   €dS | j                   j                  d«      S )zReturn peername if available.NÚpeernamer�   r‰   s    r8   r‘   zRequestHandler.peername  ó1   € ð �~‰~Ð%ð ð	
ð —‘×.Ñ.¨zÓ:ð	
r7   c                 óT   — | j                   €dS | j                   j                  d«      S )zReturn sockname if available.NÚsocknamer�   r‰   s    r8   r”   zRequestHandler.sockname$  r’   r7   c                 ó   — | j                   S ©N)rR   r‰   s    r8   rj   z RequestHandler.keepalive_timeout/  s   € à×&Ñ&Ð&r7   Útimeoutc              ƒ   óþ  K  — d| _         | j                  �| j                  j                  «        | j                  rX| j                  j                  «       | _        	 t        |«      4 ƒd{  –—†  | j                  ƒ d{  –—†  ddd«      ƒd{  –—†  	 t        |«      4 ƒd{  –—†  | j                  �-| j                  j!                  t        j                  «       «       | j"                  �A| j"                  j%                  «       s't        j&                  | j"                  «      ƒ d{  –—†  ddd«      ƒd{  –—†  | j"                  �| j"                  j                  «        | j)                  «        y7 �Œ7 Œù7 Œë# 1 ƒd{  –—†7  sw Y   ŒûxY w# t        j                  t        j                  f$ rE d| _        t        j                  dk\  r't        j                  «       x}r|j                  «       r‚ Y �Œew xY w7 �ŒY7 ŒÕ7 ŒÇ# 1 ƒd{  –—†7  sw Y   Œ×xY w# t        j                  t        j                  f$ r> t        j                  dk\  r't        j                  «       x}r|j                  «       r‚ Y �Œ:w x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©é   é   )rb   rQ   Úcancelre   Ú_loopÚcreate_futurerY   r   ÚasyncioÚCancelledErrorÚTimeoutErrorÚsysÚversion_infoÚcurrent_taskÚ
cancellingrc   Ú_cancelr[   ÚdoneÚshieldÚforce_close)r€   r—   Útasks      r8   ÚshutdownzRequestHandler.shutdown3  s  è ø€ ð !ˆÔà×!Ñ!Ð-Ø×"Ñ"×)Ñ)Ô+ð ×$Ò$ð $(§:¡:×#;Ñ#;Ó#=ˆDÔ ð
Ü'¨Ó0÷ /ñ /Ø×.Ñ.×.Ð.÷/÷ /ð	Ü# GÓ,÷ =ñ =Ø×(Ñ(Ð4Ø×)Ñ)×1Ñ1´'×2HÑ2HÓ2JÔKà×%Ñ%Ð1¸$×:LÑ:L×:QÑ:QÔ:SÜ!Ÿ.™.¨×);Ñ);Ó<×<Ð<÷=÷ =ð ×ÑÐ)Ø×Ñ×%Ñ%Ô'à×ÑÕð=/ùØ.øð/ø÷ /÷ /ñ /ûä×*Ñ*¬G×,@Ñ,@ÐAò Ø'+�Ô$ä×$Ñ$¨Ò/Ü!(×!5Ñ!5Ó!7Ð7˜Ð7ØŸ™Ô)àúðúð=ùð
 =øð=ø÷ =÷ =ñ =ûô ×&Ñ&¬×(<Ñ(<Ð=ò 	ä× Ñ  GÒ+Ü$×1Ñ1Ó3Ð3�TÐ3Ø—O‘OÔ%àúð	üsÿ   ‚AI=ÁF Á+E6Á,F Á/E=Á?E9Â E=ÂF ÂE;ÂF ÂH Â$G=Â%H Â(BHÄ*H Ä+HÄ/H Ä:HÄ;H Ä?7I=Å6F Å9E=Å;F Å=FÆFÆFÆF ÆA$G:Ç6I=Ç9G:Ç:I=Ç=H È HÈH ÈHÈ
HÈHÈH ÈAI:É6I=É9I:É:I=rˆ   c                 ód  •— t         ‰| �  |«       t        t        j                  |«      }| j
                  rt        |«       | j                  €J ‚| j                  j                  | |«       | j                  }| j                  dkD  rE|j                  «       | j                  z   }|| _        |j                  || j                  «      | _        t        j                   dk\  rkt#        |t$        «      r-t        j&                  | j)                  «       d¬«      }|| _        y t        j*                  | j)                  «       |d¬«      }|| _        y t        j                   dk\  r.t        j*                  | j)                  «       |d¬«      }|| _        y |j'                  | j)                  «       «      }|| _        y )Nr   ©rš   é   T©Úeager_start©rr   r°   ©rš   é   )rx   Úconnection_mader   rŸ   Ú	TransportrO   r"   rL   r�   rR   ÚtimerP   Úcall_atÚ_process_keepaliverQ   r¢   r£   Ú
isinstancer   Úcreate_taskÚstartÚTaskr[   )r€   rˆ   Úreal_transportrr   Ú
close_timerª   r‚   s         €r8   r´   zRequestHandler.connection_madee  sW  ø€ Ü‰Ñ 	Ô*äœg×/Ñ/°Ó;ˆØ×ÒÜ˜.Ô)à�}‰}Ð(Ð(Ð(Ø�‰×%Ñ% d¨NÔ;à�z‰zˆð ×"Ñ" QÒ&ØŸ™› t×'>Ñ'>Ñ>ˆJØ.8ˆDÔ+Ø%)§\¡\°*¸d×>UÑ>UÓ%VˆDÔ"ä×Ñ˜wÒ&Ü˜$¤Ô.Ü×*Ñ*¨4¯:©:«<ÀTÔJ�ð "ˆÕô —|‘| D§J¡J£L°tÈÔN�ð
 "ˆÕô	 ×Ñ Ò(Ü—<‘< §
¡
£°4ÀTÔJˆDð "ˆÕð ×#Ñ# D§J¡J£LÓ1ˆDØ!ˆÕr7   r@   c                 óh  •— | j                   €y | j                   j                  | |«       | j                   j                  }| j                  «        t        ‰| �  |«       d | _         d | _        d | _        d | _        | j                  �| j                  j                  «        | j                  �(|€t        d«      }| j                  j                  |«       |r&| j                  �| j                  j                  «        d | _        | j                  �"| j                  j                  «        d | _        y y )NzConnection lost)rL   Úconnection_lostÚhandler_cancellationr©   rx   rN   rM   Ú_parserrQ   rœ   rc   ÚConnectionResetErrorr¦   r[   r\   Úfeed_eof)r€   r@   rÁ   r‚   s      €r8   rÀ   zRequestHandler.connection_lost‚  s  ø€ Ø�=‰=Ð ØØ�‰×%Ñ% d¨CÔ0ð  $Ÿ}™}×AÑAÐà×ÑÔÜ‰Ñ Ô$ØˆŒØ $ˆÔØ $ˆÔØˆŒà×!Ñ!Ð-Ø×"Ñ"×)Ñ)Ô+à× Ñ Ð,Øˆ{Ü*Ð+<Ó=�Ø×!Ñ!×)Ñ)¨#Ô.á D×$6Ñ$6Ð$BØ×Ñ×%Ñ%Ô'à!ˆÔà×ÑÐ+Ø× Ñ ×)Ñ)Ô+Ø#'ˆDÕ ð ,r7   r�   Údata_received_cbc                 óæ   — | j                   �J ‚|| _         || _        | j                  r,| j                   j                  | j                  «       d| _        | j                  r| j                  «        y y ©Nr7   )r\   r]   rW   Ú	feed_dataÚ_buffer_pausedÚ_resume_reading_if_drained)r€   r�   rÅ   s      r8   Ú
set_parserzRequestHandler.set_parser¢  sk   € ð
 ×#Ñ#Ð+Ð+Ð+à%ˆÔØ!1ˆÔà×ÒØ× Ñ ×*Ñ*¨4×+=Ñ+=Ô>Ø!$ˆDÔà×ÒØ×+Ñ+Õ-ð r7   c                  ó   — y r–   r6   r‰   s    r8   Úeof_receivedzRequestHandler.eof_received³  s   € Ør7   Údatac                 ó6  — | j                   s| j                  ry | j                  €ú| j                  sî| j                  €J ‚	 | j                  j                  |«      \  }}}|D ]7  \  }}| xj                  dz  c_
        | j                  j                  ||f«       Œ9 | j                  }|r#|�!|j                  «       s|j                  d «       | j                   s2t#        | j                  «      | j$                  k\  r| j'                  «        || _        |r|r|| _        y y y | j                  €d| j                  rX|rV| xj(                  |z  c_        | j                   s4t#        | j(                  «      | j*                  k\  r| j'                  «        y y y |rN| j,                  �| j-                  «        | 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)Né�  ©r?   r@   rA   Fr7   r   )rb   ra   r\   Ú	_upgradedrÂ   rÈ   r   r>   rA   r    rJ   rT   ÚappendrZ   r§   Ú
set_resultrÉ   ÚlenrU   Ú_pause_reading_for_bufferrW   rX   r]   Úclose)
r€   rÎ   ÚmessagesÚupgradedÚtailr@   ÚmsgÚpayloadÚwaiterÚeofs
             r8   Údata_receivedzRequestHandler.data_received¶  sî  € Ø×Ò §¢Øð ×ÑÐ'°·²Ø—<‘<Ð+Ð+Ð+ðØ+/¯<©<×+AÑ+AÀ$Ó+GÑ(�˜( Dð !)ò 6‘��WØ×#Ò# qÑ(Õ#Ø—‘×%Ñ% s¨G nÕ5ð6ð —\‘\ˆFÙ˜FÐ.°v·{±{´}à×!Ñ! $Ô'ð
 ×'Ò'Ü˜Ÿ™Ó'¨4×+CÑ+CÒCà×.Ñ.Ô0à%ˆDŒNÙ™DØ%)�Õ"ð !ˆxð ×!Ñ!Ð)¨d¯nªnÁØ×Ò $Ñ&Õà×'Ò'Ü˜×*Ñ*Ó+¨t×/AÑ/AÒAà×.Ñ.Õ0ð Bð (ñ Ø×%Ñ%Ð1Ø×&Ñ&Ô(Ø×,Ñ,×6Ñ6°tÓ<‰IˆC�ÙØ—
‘
•ð ð	 øôM 'ò ä S¨c¸3¿;¹;ÔGÌÐWð�ð !�Ø–ûðús   ÁG! Ç!	HÇ*#HÈHc                 ó  — | j                   r#t        | j                   «      | j                  k\  ry | j                  s4| j	                  d«       t        | j
                  «      | j                  k\  ry | j                  «        y rÇ   )rW   rÕ   rX   rÒ   rß   rT   rU   Ú_resume_reading_for_bufferr‰   s    r8   rÊ   z)RequestHandler._resume_reading_if_drainedì  sc   € à×Ò¤# d×&8Ñ&8Ó"9¸T×=OÑ=OÒ"OØà�~Š~ð ×Ñ˜sÔ#Ü�4—>‘>Ó" d×&>Ñ&>Ò>ØØ×'Ñ'Õ)r7   Úvalc                 ón   — || _         | j                  r"| j                  j                  «        d| _        yy)zMSet keep-alive connection mode.

        :param bool val: new state.
        N)rK   rQ   rœ   )r€   râ   s     r8   Ú
keep_alivezRequestHandler.keep_aliveú  s3   € ð
 ˆŒØ×!Ò!Ø×"Ñ"×)Ñ)Ô+Ø%)ˆDÕ"ð "r7   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)ra   rZ   rœ   r‰   s    r8   r×   zRequestHandler.close  s'   € ð ˆŒØ�<Š<Ø�L‰L×ÑÕ!ð r7   c                 óº   — d| _         | j                  r| j                  j                  «        | j                  �"| j                  j	                  «        d| _        yy)zForcefully close connection.TN)rb   rZ   rœ   rˆ   r×   r‰   s    r8   r©   zRequestHandler.force_close  sG   € à ˆÔØ�<Š<Ø�L‰L×ÑÔ!Ø�>‰>Ð%Ø�N‰N× Ñ Ô"Ø!ˆD�Nð &r7   ÚrequestÚresponser¶   c                 ó¼   — | j                   rP| j                  �Ct        r|€J ‚| j                  j                  ||| j                  j                  «       |z
  «       y y y r–   )rf   r   r   Úlogr�   r¶   )r€   rç   rè   r¶   s       r8   Ú
log_accesszRequestHandler.log_access  sX   € ð × Ò  T×%7Ñ%7Ð%CÝØÐ'Ð'Ð'Ø×Ñ×"Ñ" 7¨H°d·j±j·o±oÓ6GÈ$Ñ6NÕOð &DÐ r7   ÚargsÚkwc                 óV   — | j                   r | j                  j                   |i |¤Ž y y r–   )r_   r^   ©r€   rì   rí   s      r8   Ú	log_debugzRequestHandler.log_debug  s'   € Ø�:Š:ØˆD�K‰K×Ñ˜tÐ* rÓ*ð r7   c                 ó<   —  | j                   j                  |i |¤Ž y r–   )r^   Ú	exceptionrï   s      r8   Úlog_exceptionzRequestHandler.log_exception#  s   € Øˆ�‰×Ñ˜tÐ* rÓ*r7   c                 óR  — d | _         | j                  s| j                  sy | j                  }|j	                  «       }| j
                  }||k  r"|j                  || j                  «      | _         y | j                  r,| j                  j                  «       s| j                  «        y y y r–   )rQ   rb   rK   r�   r¶   rP   r·   r¸   rZ   r§   r©   )r€   rr   Únowr¾   s       r8   r¸   z!RequestHandler._process_keepalive&  sŠ   € Ø!%ˆÔØ×Ò D§O¢OØà�z‰zˆØ�i‰i‹kˆØ×4Ñ4ˆ
Ø�Òà%)§\¡\°*¸d×>UÑ>UÓ%VˆDÔ"Øð �<Š< §¡× 1Ñ 1Ô 3Ø×ÑÕð !4ˆ<r7   Ú
start_timerz   c              ƒ   óª  K  — d| _         	 	 || _         ||«      ƒ d {  –—† }d | _        	 t        |dd«      rt        j                  dt
        «       | j                  |||«      ƒ d {  –—† \  }}d| _         | j                  �| j                  j                  d «       ||fS 7 Œƒ# d | _        w xY w7 ŒG# t        $ r+}|}| j                  |||«      ƒ d {  –—†7  \  }}Y d }~Œqd }~wt        j                  $ r ‚ t        j                  $ rN}| j                  d|¬«       | j                  |d«      }| j                  |||«      ƒ d {  –—†7  \  }}Y d }~Œãd }~wt        $ r=}| j                  |d|«      }| j                  |||«      ƒ d {  –—†7  \  }}Y d }~�Œ'd }~ww xY w# d| _         | j                  �| j                  j                  d «       w w xY w­w)	NTÚ__http_exception__Fzlreturning HTTPException object is deprecated (#2415) and will be removed, please raise the exception insteadzRequest handler timed out.©Úexc_infoiø  éô  )re   rc   ÚgetattrÚwarningsÚwarnÚDeprecationWarningÚfinish_responser#   rŸ   r    r¡   rð   Úhandle_errorÚ	ExceptionrY   rÔ   )r€   rç   rö   rz   ÚrespÚresetr@   s          r8   Ú_handle_requestzRequestHandler._handle_request7  sÄ  è ø€ ð %)ˆÔ!ð 	6ð-Ø(/�Ô%Ù,¨WÓ5×5�à(,�Õ%ô �tÐ1°5Ô9Ü—‘ð9ô 'ô	ð !%× 4Ñ 4°W¸dÀJÓ O×O‰KˆD�%à(-ˆDÔ%Ø×#Ñ#Ð/Ø×$Ñ$×/Ñ/°Ô5à�Uˆ{Ðð? 6ùà(,�Õ%úð. Pùô- ò 	PØˆDØ $× 4Ñ 4°W¸dÀJÓ O×OÐO‰KˆD•%ûÜ×%Ñ%ò 	ØÜ×#Ñ#ò 	PØ�N‰NÐ7À#ˆNÔFØ×$Ñ$ W¨cÓ2ˆDØ $× 4Ñ 4°W¸dÀJÓ O×OÐO‰KˆD•%ûÜò 	PØ×$Ñ$ W¨c°3Ó7ˆDØ $× 4Ñ 4°W¸dÀJÓ O×OÐO‰KˆD–%ûð	Pûð ).ˆDÔ%Ø×#Ñ#Ð/Ø×$Ñ$×/Ñ/°Õ5ð 0üsº   ‚GŒB$ žB"ŸB$ £B2 «=F Á(B0Á)F Á02GÂ"B$ Â$	B-Â-B2 Â0F Â2	FÂ;C!ÃCÃC!ÃF Ã!)FÄ
;EÅEÅEÅF ÅFÅ)FÆFÆ	FÆF ÆFÆF Æ1GÇGc           	   ƒ   ó°  K  — | j                   }| j                  }|€J ‚| j                  }d}| j                  €J ‚| j                  €J ‚| j
                  �s3| j                  s1	 |j                  «       | _        | j                  ƒ d{  –—†  d| _        | j                  j                  «       \  }}| j                  �| j                  j                  «        | j                  r2t        | j                  «      | j                  k  r| j                  «        | j                   r|j#                  «       nd}|xj$                  dz  c_        t'        | |«      }t)        |t*        «      r| j-                  |«      }	t.        }n| j                  }	| j                  ||| || j0                  xs t3        j4                  |«      «      }
	 | j7                  |
||	«      }t8        j:                  dk\  rAt)        |t<        «      rt3        j>                  |d¬«      }nVt3        j@                  ||d¬«      }n=t8        j:                  dk\  rt3        j@                  ||d¬«      }n|j?                  |«      }	 |ƒ d{  –—† \  }}~|r<| jE                  d
«       	 d|
_#        | jH                  �€ð|��í| jE                  d	«       �nÚtK        |jL                  «      | _'        |jQ                  «       sù| jR                  }| j
                  s¤|r¢| jE                  d|«       |j#                  «       }||z   }	 |jQ                  «       sj||k  retU        ||z
  «      4 ƒd{  –—†  |jW                  «       ƒ d{  –—†  ddd«      ƒd{  –—†  |j#                  «       }|jQ                  «       s||k  rŒe|jQ                  «       s-| j
                  s!| jE                  d«       | j_                  «        |ja                  tb        «       d|
_#        | jH                  €|�| jE                  d	«       	 | jN                  r`| jl                  sT| j
                  sH|j#                  «       |z   }|| _7        | jp                  €#|js                  || jt                  «      | _8        nn| j
                  s�Œ3| j
                  s/d| _        | jH                  �| jH                  j_                  «        yyy7 �Œ># d| _        w xY w7 �Œl# tB        $ r< | jE                  d«       Y d|
_#        | jH                  �Œ}|€Œ€| jE                  d	«       Œ’w xY w7 �ŒÝ7 �ŒÈ7 �Œ»# 1 ƒd{  –—†7  sw Y   �ŒÌxY w# t2        jX                  t2        jZ                  f$ r> t8        j:                  dk\  r't3        j4                  «       x}r|j]                  «       r‚ Y �Œ	w xY w# t2        jX                  $ r# | jE                  d«       | je                  «        ‚ tf        $ r.}| ji                  d|¬«       | je                  «        Y d}~�Œ!d}~wtj        $ r | je                  «        ‚ w xY w# d|
_#        | jH                  €|�| jE                  d	«       w w w 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   r­   Tr¯   r±   r²   z&Ignored premature client disconnectionz'Ignored premature client disconnection.z(Ignored premature client disconnection 2z'Start lingering close timer for %s sec.r™   zUncompleted request.zUnhandled exceptionrù   );r�   rL   rR   rN   rM   rb   rT   rž   rZ   ÚpopleftrÂ   Úmessage_consumedrÉ   rÕ   rV   rÊ   rf   r¶   Úrequests_countr   r¹   r>   Ú_make_error_handlerÚERRORr[   rŸ   r¤   r  r¢   r£   r   rº   r¼   ÚConnectionErrorrð   Ú_taskrˆ   Úboolrä   rK   Úis_eofrS   r   Úreadanyr    r¡   r¥   r×   Úset_exceptionÚ_PAYLOAD_ACCESS_ERRORr©   r  ró   rD   ra   rP   rQ   r·   r¸   )r€   rr   rq   rj   r  rA   rÜ   r»   Úwriterrz   rç   Úcororª   r  rm   rõ   Úend_tÚtr@   r¾   s                       r8   r»   zRequestHandler.startb  sˆ  è ø€ ð �z‰zˆØ—-‘-ˆØÐ"Ð"Ð"Ø ×3Ñ3ÐØˆØ×$Ñ$Ð0Ð0Ð0Ø×$Ñ$Ð0Ð0Ð0à×#Ó#Ø—>’>ð(à#'×#5Ñ#5Ó#7�D”LØŸ,™,×&Ð&à#'�D”Là#Ÿ~™~×5Ñ5Ó7ÑˆG�Wð �|‰|Ð'Ø—‘×-Ñ-Ô/à×#Ò#Ü˜Ÿ™Ó'¨4×+FÑ+FÒFà×/Ñ/Ô1ð $(×#8Ò#8�D—I‘I”K¸dˆEà×"Ò" aÑ'Õ"Ü! $¨Ó-ˆFÜ˜'¤8Ô,à"&×":Ñ":¸7Ó"C�Ü‘à"&×"7Ñ"7�ð
 ×+Ñ+ØØØØØ×"Ñ"Ò@¤g×&:Ñ&:¸4Ó&@óˆGðHNà×+Ñ+¨G°U¸OÓL�Ü×#Ñ# wÒ.Ü! $¬Ô6Ü&×2Ñ2°4ÀTÔJ™ä&Ÿ|™|¨D°tÈÔN™Ü×%Ñ%¨Ò0Ü"Ÿ<™<¨°4ÀTÔJ‘Dà×+Ñ+¨DÓ1�DðØ(,§*‘K�D˜%ð ÙØ—N‘NÐ#MÔNØð` !%�”Ø—>‘>Ñ)¨dÑ.>Ø—N‘NÐ#LÖMô_ #' t§¡Ó"7�”ð —~‘~Ô'Ø%)×%9Ñ%9�NØ×,Ò,±ØŸ™ØEÀ~ôð #Ÿi™i›k˜Ø # nÑ 4˜ð&Ø&-§n¡nÔ&6¸3Àº;Ü+7¸À¹Ó+D÷ !<ñ !<à*1¯/©/Ó*;×$;Ð$;÷!<÷ !<ð '+§i¡i£k ð	 '.§n¡nÔ&6¸3À»;ð #Ÿ>™>Ô+°D×4EÒ4EØŸ™Ð'=Ô>ØŸ
™
œà×%Ñ%Ô&;Ô<ð !%�”Ø—>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÕMà�Š t§{¢{¸4×;LÒ;Là!ŸY™Y›[Ð+<Ñ<�
Ø2<�Ô/Ø×)Ñ)Ð1Ø-1¯\©\Ø" D×$;Ñ$;ó.�DÕ*ð ðC ×#Ô#ðH × Ò Ø!%ˆDÔØ�~‰~Ð)Ø—‘×$Ñ$Õ&ð *ð !ð 'úà#'�D•Lúðh #-úÜ&ò Ø—N‘NÐ#KÔLØðl !%�”Ø—>‘>Ñ)¨dÑ.>Ø—N‘NÐ#LÕMðuúð4!<ùà$;ùð!<ù÷ !<÷ !<ò !<ûô !(× 6Ñ 6¼×8LÑ8LÐMò &ä #× 0Ñ 0°GÒ ;Ü*1×*>Ñ*>Ó*@Ð%@ QÐ%@Ø$%§L¡L¤Nà %úð&ûô ×)Ñ)ò Ø—‘ÐGÔHØ× Ñ Ô"ØÜò #Ø×"Ñ"Ð#8À3Ð"ÔGØ× Ñ ×"Ò"ûÜ ò Ø× Ñ Ô"Øðûð !%�”Ø—>‘>Ð)¨dÐ.>Ø—N‘NÐ#LÕMð /?Ð)üsD  ‚A YÁ#$S ÂSÂS ÂD1YÆ>B$V" É#S É(SÉ)S É0V" Ê*YÊ/A+V" Ì'T> ÍTÍT> ÍT(ÍT"ÍT(ÍT> Í*T%Í+)T> ÎAV" Ï'B YÒ	<YÓS Ó	SÓYÓS ÓTÓ1V" Ó2YÔYÔ	YÔTÔV" ÔT> Ô"T(Ô%T> Ô(T;Ô.T1Ô/T;Ô6T> Ô>AVÖV" ÖVÖV" Ö"=X&×#XØX) ØX&Ø&X) Ø)*YÙYr  c              ƒ   óø  K  — |j                  «        | j                  �r%| j                  �s| j                  �€| j                  �ÿ| j                  j                  d«       d| _        | j                  rÑ	 | j                  j                  | j                  «      \  }}}|| _        || _        |D ]7  \  }}	| xj                  dz  c_        | j                  j                  ||	f«       Œ9 t        | j                  «      | j                  k\  r| j!                  «        n| j"                  r| j%                  «        | j&                  �J ‚	 |j(                  }
	  |
|«      ƒ d{  –—†  |j;                  «       ƒ d{  –—†  | j?                  |||«       |dfS # t        $ r.}t        d||j                  ¬«      t        fg}d}d}Y d}~�Œ&d}~ww xY w# t*        $ rx |€| j-                  d«       n| j-                  d|›�«       t/        «       }t1        |j2                  |j4                  |j6                  |j8                  ¬	«      }|j(                  }
Y Œúw xY w7 Œñ7 ŒÛ# t<        $ r | j?                  |||«       |d
fcY S 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.
        NFrÐ   rÑ   r7   r   z+Missing return statement on request handlerz3Web-handler should return a response instance, got )r?   ÚreasonÚtextÚheadersT) Ú_finishrÒ   rT   r\   rÂ   Úset_upgradedrW   rÈ   r   r>   rA   r    rJ   rÓ   rÕ   rU   rÖ   rÉ   rÊ   rZ   ÚprepareÚAttributeErrorró   r$   r'   r?   r  r  r  Ú	write_eofr  rë   )r€   rç   r  rö   rØ   rÙ   rÚ   Ú	parse_excrÛ   rÜ   Úprepare_methr@   s               r8   r   zRequestHandler.finish_responseü  sV  è ø€ ð 	�‰Ôð �N‹NØ—N“NØ×$Ñ$Ñ,Ø—‘Ð(à�L‰L×%Ñ% eÔ,Ø"ˆDŒNØ×!Ò!ðØ/3¯|©|×/EÑ/EØ×*Ñ*ó0Ñ,�H˜h¨ð( "*�”Ø%)�Ô"Ø$,ò :‘L�C˜Ø×'Ò'¨1Ñ,Õ'Ø—N‘N×)Ñ)¨3°¨.Õ9ð:ô �t—~‘~Ó&¨$×*BÑ*BÒBà×2Ñ2Õ4Ø×(Ò(à×3Ñ3Ô5ð —|‘|Ð+Ð+Ð+ð	(ØŸ<™<ˆLð	Ù˜wÓ'×'Ð'Ø—.‘.Ó"×"Ð"ð
 	�‰˜  zÔ2Ø�Uˆ{Ðøôk +ò ô %Ø'*Ø$-Ø(1×(9Ñ(9ôô
 *ðð	 �Hð  %�HØ–DûðûôB ò 	(Øˆ|Ø×"Ñ"Ð#PÕQà×"Ñ"ØIÈ$ÈÐRôô *Ó+ˆCÜØ—z‘z¨#¯*©*¸3¿8¹8ÈSÏ[É[ôˆDð  Ÿ<™<ŠLð	(úð (øØ"ùÜò 	Ø�O‰O˜G T¨:Ô6Ø˜�:Òð	üs˜   ‚A2I:Á5)F ÂB'I:ÅG ÅI ÅIÅI Å6IÅ7I Å;I:Æ	G	Æ#GÆ>I:ÇG	Ç	I:ÇA>IÉ
I:ÉIÉI:ÉI ÉI É I7É4I:É6I7É7I:r?   rA   c                 óF  — | j                   dk(  r9t        |t        «      r)| j                  j	                  d|j
                  |¬«       n| j                  d|j
                  |¬«       |j                  j                  dkD  rt        d«      ‚d}|t        j                  k(  r×t        j                  j                  › dt        j                  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|› d|› d|› d�}d	}n|r|}|dz   |z   }t-        |||¬«      }	|	j/                  «        |	S # 1 sw Y   ŒuxY w)z›Handle errors.

        Returns HTTP response with specific status code. Logs additional
        information. It always closes current connection.
        r   zError handling request from %srù   r   zMResponse is sent already, cannot send another response with the error messagez
text/plainú Nz	text/htmlÚAcceptÚ z<h2>Traceback:</h2>
<pre>z</pre>z<html><head><title>z</title></head><body>
<h1>z</h1>
z
</body></html>
z

)r?   r  Úcontent_type)rJ   r¹   r   r^   r_   Úremoteró   r  Úoutput_sizer  r
   ÚINTERNAL_SERVER_ERRORÚvalueÚphraseÚdescriptionr   r  Ú	tracebackÚ
format_excr  ÚgetÚhtml_escaper'   r©   )
r€   rç   r?   r@   rA   ÚctÚtitlerÛ   Útbr  s
             r8   r  zRequestHandler.handle_errorR  s¨  € ð ×Ñ !Ò#¬
°3¼Ô(Fð
 �K‰K×ÑØ0°'·.±.È3ð õ ð ×ÑØ0°'·.±.È3ð ô ð
 �>‰>×%Ñ%¨Ò)Ü!ð)óð ð
 ˆØ”Z×5Ñ5Ò5Ü!×7Ñ7×=Ñ=Ð>¸aÄ
×@`Ñ@`×@gÑ@gÐ?hÐiˆEÜ×2Ñ2×>Ñ>ˆCØˆBØ�zŠzÜœiÓ(ñ 0Ü"×-Ñ-Ó/�B÷0ð ˜gŸo™o×1Ñ1°(¸BÓ?Ñ?ÙÜ$ R›�BØ6°r°d¸&ÐA�CðØ#˜Wð %*Ø*/¨ð 1Ø˜Ð/ð1ð ð !‘áØ�CØ &™.¨3Ñ.�ä˜v¨GÀ"ÔEˆØ×ÑÔàˆ÷-0ð 0ús   ÄFÆF Úerr_infoc                 ó0   ‡ ‡— dt         dt        fˆˆ fd„}|S )Nrç   rƒ   c              “   óp   •K  — ‰j                  | ‰j                  ‰j                  ‰j                  «      S ­wr–   )r  r?   r@   rA   )rç   r4  r€   s    €€r8   Úhandlerz3RequestHandler._make_error_handler.<locals>.handler“  s1   øè ø€ Ø×$Ñ$Ø˜Ÿ™¨(¯,©,¸×8HÑ8Hóð ùs   ƒ36)r&   r(   )r€   r4  r7  s   `` r8   r
  z"RequestHandler._make_error_handler�  s   ù€ ð	¤;ð 	´>ö 	ð
 ˆr7   )g      .@r–   )rƒ   N)rû   NN);r2   r3   r4   r5   Ú	__slots__r   r%   r   Ú
LOG_FORMATr   rŸ   ÚAbstractEventLoopr|   r  r   Útyper   rE   rB   ry   rŠ   r   r   r�   Útupler‘   r”   Úpropertyrj   r«   ÚBaseTransportr´   rD   rÀ   r   r   rË   rÍ   Úbytesrß   rÊ   rä   r×   r©   r&   r(   rë   r   rð   ró   r¸   r   r  r»   r   r  r>   r
  Ú__classcell__)r‚   s   @r8   r)   r)   d   sé  ø„ ñ$ðL#€IðV $(Ø"Ø&Ø7CØ*Ø!-×!8Ñ!8ØØ!ØØ"Ø $Ø.Ø $Ø()ò'X)àðX)ð ×'Ñ'ð	X)ð !ðX)ð ðX)ð ðX)ð Ð3Ñ4ðX)ð ðX)ð ðX)ð ðX)ð ðX)ð ðX)ð ðX)ð  ð!X)ð" ð#X)ð$ ð%X)ð& !&õ'X)ðt
˜#ó 
ð ð
˜XÐ&6Ñ7ò 
ó ð
ð ð
à	ˆu�S˜#˜s CÐ'Ñ(Ñ	(¨5°°c°©?Ñ	:¸TÑ	Aò
ó ð
ð ð
à	ˆu�S˜#˜s CÐ'Ñ(Ñ	(¨5°°c°©?Ñ	:¸TÑ	Aò
ó ð
ð ð' 5ò 'ó ð'ñ0 e¨d¡lð 0¸dó 0ðd"¨×)>Ñ)>ð "À4õ "ð:( =°4Ñ#7ð (¸Dõ (ðF 7;ñ.àð.ð # 2 t 8Ñ,¨tÑ3ð.ð 
ó	.ó"ð4 %ð 4¨Dó 4ól*ð*˜dð * tó *ó"ó"ðPØ"ðPØ.<ðPØDIÈDÁLðPà	óPð+˜sð +¨#ð +°$ó +ð+ 3ð +¨cð +°dó +óð")àð)ð ˜D‘Lð)ð " ; -°¸>Ñ1JÐ"JÑKð	)ð
 
ˆ~˜tÐ#Ñ	$ó)óVX'ðtTØ"ðTØ*8ðTØFKÈdÁlðTà	ˆ~˜tÐ#Ñ	$óTðr Ø$(Ø"ñ<àð<ð ð<ð ˜TÑ!ð	<ð
 �t‘ð<ð 
ó<ð|Ø ðà	�;�- ¨>Ñ!:Ð:Ñ	;÷r7   )SrŸ   Úasyncio.streamsr¢   r-  rý   Úasyncio.base_eventsr   Úcollectionsr   Úcollections.abcr   r   r   Ú
contextlibr   Úhtmlr	   r0  Úhttpr
   Úloggingr   Útypingr   r   r   r   ÚattrÚyarlÚ	propcacher   Úabcr   r   Úbase_protocolr   Úhelpersr   r   r   r   r   r   r   r   Úhttp_exceptionsr   rê   r   r   Ústreamsr    r!   Útcp_helpersr"   Úweb_exceptionsr#   r$   Úweb_logr%   Úweb_requestr&   Úweb_responser'   r(   Ú__all__rw   ÚsslÚ
web_serverr-   Ú_RequestFactoryÚ_RequestHandlerÚURLr  r  r*   r+   r  Úsr>   r<  Ú_MsgTyper)   r6   r7   r8   ú<module>r_     sb  ðÛ Û Û 
Û Û Ý -Ý ß 9Ñ 9Ý Ý &Ý Ý ß 5Ó 5ã Û Ý +ç ;Ý 'ß 5÷÷ õ +ß -ß 0Ý &ß BÝ !Ý $ß 2à
I€ð
 Ð áÛå"ð àØØØØðð ðñ	€ð ˜K˜=¨)°NÑ*CÐCÑD€áØØØØØØØØ	Ø	Ø€D‡H�HˆSƒMó	€ô!˜)ô !ô8˜ô 8ñ +Ó,Ð ð €‡��T $¨dÔ3÷ð ó 4ðð Ð" XÑ-¨|Ð;Ñ<€ôt�\õ tr7   