§
    ;xÅj^Š  ã                   ó*  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	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mZmZmZ d dl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" 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/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZD ddlEmFZFmGZG ddlHmIZI ejJ        dk    rd dlKmLZL n#d dlKZK G d„ deKjL        eM         ejN        ¦  «        ZLdZOerddlPmQZQ ddlRmSZS ddlTmUZU  ed¦  «        ZVdZWeeX         eYd<    ejZ        ddd¬ ¦  «         G d!„ d"¦  «        ¦   «         Z[e\eMz  e]z  e[z  Z^ej_        ej`        z   d#z   Zaee\         eYd$<   d%ea› d&�Zbee\         eYd'<   d( c                    d) d                    d*„ d+ ee efd,d-¦  «        ¦  «        z   D ¦   «         ¦  «        ¦  «        Zgee\         eYd.<   d/Zhee\         eYd0<   d1eh› d2eg› d3�Ziee\         eYd4<   d5eb› d6eb› d2ei› d7�Zjee\         eYd8<    ejk        d9¦  «        Zleee\                  eYd:<    ejk        ej¦  «        Zmeee\                  eYd;<   d<eXd=eFfd>„Zn G d?„ d@ee\e0e         z  ef         e/¦  «        Zo G dA„ dBeo¦  «        ZpdS )Cé    N)ÚIteratorÚMappingÚMutableMapping)ÚPattern)ÚMappingProxyType)ÚIOÚTYPE_CHECKINGÚAnyÚFinalÚOptionalÚTypeVarÚcastÚoverload)ÚCIMultiDictÚCIMultiDictProxyÚ	MultiDictÚMultiDictProxyÚMultiMapping)ÚURLÚquery_to_pairsé   )Úhdrs)Úparse_cookie_header)ÚAbstractStreamWriter)Ú	_SENTINELÚDEBUGÚDEFAULT_CHUNK_SIZEÚETAG_ANYÚLIST_QUOTED_ETAG_REÚChainMapProxyÚETagÚHeadersMixinÚ
RequestKeyÚparse_http_dateÚreifyÚsentinelÚset_exception)ÚRawRequestMessage)ÚHttpVersion)ÚBodyPartReaderÚMultipartReader)ÚEmptyStreamReaderÚStreamReader)ÚDEFAULT_JSON_DECODERÚJSONDecoderÚLooseHeadersÚ
RawHeadersÚStrOrURL)ÚHTTPRequestEntityTooLargeÚNotAppKeyWarning)ÚStreamResponse)é   é   )ÚSpooledTemporaryFilec                   ó6   — e Zd ZdZdefd„Zdefd„Zdefd„ZdS )r8   a€  Make the spooled file satisfy the documented `FileField.file` type.

        `tempfile.SpooledTemporaryFile` only became an `io.IOBase` subclass in
        3.11 (python/cpython#70363), and never grew the three capability
        predicates before then. Both underlying files (`io.BytesIO` before
        rollover, a `w+b` temp file after) are readable, writable and seekable.
        Úreturnc                 ó   — dS ©NT© ©Úselfs    úDC:\Projects\Historical\venv\Lib\site-packages\aiohttp/web_request.pyÚreadablezSpooledTemporaryFile.readableF   ó   € Ø�4ó    c                 ó   — dS r<   r=   r>   s    r@   ÚwritablezSpooledTemporaryFile.writableI   rB   rC   c                 ó   — dS r<   r=   r>   s    r@   ÚseekablezSpooledTemporaryFile.seekableL   rB   rC   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚboolrA   rE   rG   r=   rC   r@   r8   r8   =   so   € € € € € ð	ð 	ð	˜dð 	ð 	ð 	ð 	ð	˜dð 	ð 	ð 	ð 	ð	˜dð 	ð 	ð 	ð 	ð 	ð 	rC   r8   )ÚBaseRequestÚ	FileFieldÚRequest)ÚApplication)ÚRequestHandler)ÚUrlMappingMatchInfoÚ_Té   Ú_FILE_SPOOL_MAX_SIZET)Úauto_attribsÚfrozenÚslotsc                   óZ   — e Zd ZU eed<   eed<   ee         ed<   eed<   ee         ed<   dS )rN   ÚnameÚfilenameÚfileÚcontent_typeÚheadersN)rH   rI   rJ   ÚstrÚ__annotations__r   Úbytesr   r=   rC   r@   rN   rN   c   sN   € € € € € € à
€I€I�IØ€M€M�MØ
ˆUŒ)€O€O�OØÐÐÑØ˜cÔ"Ð"Ð"Ñ"Ð"Ð"rC   rN   z!#$%&'*+.^_`|~-Ú_TCHARú[z]+Ú_TOKENz[{}]Ú c              #   ó4   K  — | ]}t          |¦  «        V — Œd S ©N)Úchr)Ú.0Úcs     r@   ú	<genexpr>rk   s   s(   è è € ÐKÐK˜�S�‰VŒVÐKÐKÐKÐKÐKÐKrC   )é	   é    é!   é#   é   Ú_QDTEXTz
\\[\t !-~]Ú_QUOTED_PAIRz"(?:ú|z)*"Ú_QUOTED_STRINGú(z)=(z)(:\d{1,4})?Ú_FORWARDED_PAIRz\\([\t !-~])Ú_QUOTED_PAIR_REPLACE_REÚ_FORWARDED_PAIR_REÚ
max_fieldsr:   c                 ó,   — t          | d| › d�¬¦  «        S )NzMaximum number of form fields z
 exceeded.©Útext)r3   )ry   s    r@   Ú_too_many_fieldsr}   ‰   s*   € Ý$ØÐP¸*ÐPÐPÐPðñ ô ð rC   c                   óÌ  — e Zd ZU ej        ej        ej        ej        ej        hZ	e
j         eg d¢¦  «        z  ZdZee         dz  ed<   dZedz  ed<    e¦   «         Zee         ed<   dddddddœd	ed
edddedddej        dededeee         ez  ef         dz  dedz  dedz  dedz  ddfd„Ze e e e e e e e dœdee!z  de"e!z  de#e!z  dee!z  dee!z  dee!z  dee!z  dee!z  dd fd„Z$e%dhd„¦   «         Z&e%did„¦   «         Z'e%dej(        dz  fd „¦   «         Z)e%defd!„¦   «         Z*e%defd"„¦   «         Z+e%defd#„¦   «         Z,e-defd$„¦   «         Z.e-de/fd%„¦   «         Z0e-dej        fd&„¦   «         Z1e2d'ee3         de3fd(„¦   «         Z4e2d'edefd)„¦   «         Z4d'eee3         z  defd*„Z4e2d'ee3         d+e3ddfd,„¦   «         Z5e2d'ed+eddfd-„¦   «         Z5d'eee3         z  d+eddfd.„Z5d'eee3         z  ddfd/„Z6defd0„Z7de8eee         z           fd1„Z9e-de:fd2„¦   «         Z;e-de<e=eef         d3f         fd4„¦   «         Z>e-defd5„¦   «         Z?e-defd6„¦   «         Z@e-deAfd7„¦   «         ZBe-defd8„¦   «         ZCe-dedz  fd9„¦   «         ZDe-de/fd:„¦   «         ZEe-defd;„¦   «         ZFe-defd<„¦   «         ZGe-defd=„¦   «         ZHe-djd?„¦   «         ZIe-defd@„¦   «         ZJe-deKe         fdA„¦   «         ZLe-deMfdB„¦   «         ZNe-deOjO        dz  fdC„¦   «         ZPe-deOjO        dz  fdD„¦   «         ZQeRdEede8eS         fdF„¦   «         ZTeUdGedz  de<eSd3f         dz  fdH„¦   «         ZVe-de<eSd3f         dz  fdI„¦   «         ZWe-de<eSd3f         dz  fdJ„¦   «         ZXe-deOjO        dz  fdK„¦   «         ZYe-de:fdL„¦   «         ZZe-de=eef         fdM„¦   «         Z[e-de\fdN„¦   «         Z]e-defdO„¦   «         Z^e%de:fdP„¦   «         Z_e%de:fdQ„¦   «         Z`e-de:fdR„¦   «         ZadkdS„ZbdefdT„ZcdefdU„ZdeedVœdWefdefdX„ZgdehfdY„Zidld[„Zjdmd\ed]edefd^„Zkdefd_„Zld`emde:fda„Znde:fdb„Zodcepddfdd„Zqdeerddfdf„Zsdkdg„ZtdS )nrM   )Ú_messageÚ	_protocolÚ_payload_writerÚ_payloadÚ_headersÚ_methodÚ_versionÚ_rel_urlÚ_postÚ_read_bytesÚ_stateÚ_cacheÚ_taskÚ_client_max_sizeÚ_client_max_fieldsÚ_loopÚ_transport_sslcontextÚ_transport_peernameÚ_transport_socknameNr‡   rˆ   Ú_seen_str_keysrT   iè  )Úclient_max_sizeÚclient_max_fieldsÚstateÚschemeÚhostÚremoteÚmessageÚpayloadÚprotocolrQ   Úpayload_writerÚtaskúasyncio.Task[None]Úloopr“   r”   r•   r–   r—   r˜   r:   c                óž  — || _         || _        || _        || _        |j        | _        |j        | _        |j        | _	        i | _
        |j        }|j        r|
€|j        r|j        rdnd}
|
�|                     |
¦  «        }|
| j
        d<   |�|                     |¦  «        }|| j
        d<   |j        | j
        d<   |                     ¦   «         | _        n|| _        |
�
|
| j
        d<   |�
|| j
        d<   |	€i n|	| _        || _        || _        || _        || _        |j        | _        |j        | _        |j        | _        |�|| j
        d<   d S d S )NÚhttpsÚhttpr–   Úurlr—   r˜   )r   r€   r�   r‚   r^   rƒ   Úmethodr„   Úversionr…   rŠ   r£   Úabsoluter–   Ússl_contextÚwith_schemeÚ	with_hostr—   Úrelativer†   r‰   r‹   rŒ   r�   rŽ   r�   Úpeernamer�   Úsocknamer‘   )r?   r™   rš   r›   rœ   r�   rŸ   r“   r”   r•   r–   r—   r˜   r£   s                 r@   Ú__init__zBaseRequest.__init__³   sr  € ð   ˆŒØ!ˆŒØ-ˆÔàˆŒØ/6¬ˆŒØ”~ˆŒØœˆŒØ&(ˆŒØŒkˆØŒ<ð 	+Øˆ~ #¤*ˆ~à$,Ô$8ÐD˜˜¸f�ØÐ!ð —o’o fÑ-Ô-�Ø(.�”˜HÑ%ØÐØ—m’m DÑ)Ô)�ð "%ˆDŒK˜ÑØ"%¤(ˆDŒK˜ÑØŸLšL™NœNˆDŒMˆMàˆDŒMØÐ!Ø(.�”˜HÑ%ØÐØ&*�”˜FÑ#à!˜M�b�b¨uˆŒØˆŒ
Ø /ˆÔØ"3ˆÔØˆŒ
à%-Ô%9ˆÔ"Ø#+Ô#4ˆÔ Ø#+Ô#4ˆÔ àÐØ$*ˆDŒK˜Ñ!Ð!Ð!ð ÐrC   ©r¤   Úrel_urlr^   r–   r—   r˜   r“   r”   r¤   r¯   r^   c                ó®  — | j         rt          d¦  «        ‚i }	|t          ur||	d<   |t          ur&t          |¦  «        }
|
|	d<   t	          |
¦  «        |	d<   |t          urSt          t          |¦  «        ¦  «        |	d<   t          d„ |	d                              ¦   «         D ¦   «         ¦  «        |	d<    | j	        j
        di |	¤Ž}i }|t          ur||d<   |t          ur||d	<   |t          ur||d
<   |t          u r| j        }|t          u r| j        } | j        || j        | j        | j        | j        | j        f||| j                             ¦   «         dœ|¤ŽS )a  Clone itself with replacement some attributes.

        Creates and returns a new instance of Request object. If no parameters
        are given, an exact copy is returned. If a parameter is not passed, it
        will reuse the one from the current request object.
        z.Cannot clone request after reading its contentr¤   r£   Úpathr^   c              3   óp   K  — | ]1\  }}|                      d ¦  «        |                      d ¦  «        fV — Œ2dS )úutf-8N)Úencode)ri   ÚkÚvs      r@   rk   z$BaseRequest.clone.<locals>.<genexpr>  sW   è è € ð 'ð 'á�A�qð —’˜'Ñ"Ô" A§H¢H¨WÑ$5Ô$5Ð6ð'ð 'ð 'ð 'ð 'ð 'rC   Úraw_headersr–   r—   r˜   )r“   r”   r•   r=   )rˆ   ÚRuntimeErrorr&   r   r_   r   r   ÚtupleÚitemsr   Ú_replacerŒ   r�   Ú	__class__r‚   r€   r�   r‹   rŽ   r‰   Úcopy)r?   r¤   r¯   r^   r–   r—   r˜   r“   r”   ÚdctÚnew_urlr™   Úkwargss                r@   ÚclonezBaseRequest.cloneò   s°  € ð$ Ôð 	QÝÐOÑPÔPÐPà ˆØ�Ð!Ð!Ø"ˆC�‰MØ�(Ð"Ð"Ý˜w™<œ<ˆGØ ˆC�‰JÝ˜g™,œ,ˆC�‰KØ�(Ð"Ð"å-­k¸'Ñ.BÔ.BÑCÔCˆC�	‰NÝ!&ð 'ð 'à 	œN×0Ò0Ñ2Ô2ð'ñ 'ô 'ñ "ô "ˆC�Ñð
 )�$”-Ô(Ð/Ð/¨3Ð/Ð/ˆàˆØ�Ð!Ð!Ø%ˆF�8ÑØ•xÐÐØ!ˆF�6‰NØ�Ð!Ð!Ø%ˆF�8ÑØ�hÐ&Ð&Ø"Ô3ˆOØ¥Ð(Ð(Ø $Ô 7ÐàˆtŒ~ØØŒMØŒNØÔ ØŒJØŒJð
ð ,Ø/Ø”+×"Ò"Ñ$Ô$ð
ð 
ð ð
ð 
ð 	
rC   c                 ó   — | j         S rg   )r‹   r>   s    r@   r�   zBaseRequest.task1  s
   € àŒzÐrC   c                 ó   — | j         S rg   )r€   r>   s    r@   r›   zBaseRequest.protocol5  s
   € àŒ~ÐrC   c                 ó,   — | j         €d S | j         j        S rg   )r€   Ú	transportr>   s    r@   rÅ   zBaseRequest.transport9  s   € àŒ>Ð!Ø�4ØŒ~Ô'Ð'rC   c                 ó   — | j         S rg   )r�   r>   s    r@   ÚwriterzBaseRequest.writer?  s   € àÔ#Ð#rC   c                 ó   — | j         S rg   )rŒ   r>   s    r@   r“   zBaseRequest.client_max_sizeC  s   € àÔ$Ð$rC   c                 ó   — | j         S rg   )r�   r>   s    r@   r”   zBaseRequest.client_max_fieldsG  s   € àÔ&Ð&rC   c                 óH   — t          j        dt          d¬¦  «         | j        S )NzRequest.message is deprecatedr6   ©Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr   r>   s    r@   r™   zBaseRequest.messageK  s$   € åŒÐ5Õ7IÐVWÐXÑXÔXÐXØŒ}ÐrC   c                 ó   — | j         S rg   )r†   r>   s    r@   r¯   zBaseRequest.rel_urlP  s
   € àŒ}ÐrC   c                 óH   — t          j        dt          d¬¦  «         | j        S )Nz#request.loop property is deprecatedé   rË   )rÍ   rÎ   rÏ   rŽ   r>   s    r@   rŸ   zBaseRequest.loopT  s.   € åŒØ1Õ3EÐRSð	
ñ 	
ô 	
ð 	
ð ŒzÐrC   Úkeyc                 ó   — d S rg   r=   ©r?   rÓ   s     r@   Ú__getitem__zBaseRequest.__getitem__]  s   € Ø69°crC   c                 ó   — d S rg   r=   rÕ   s     r@   rÖ   zBaseRequest.__getitem__`  s   € Ø,/¨CrC   c                 ó   — | j         |         S rg   ©r‰   rÕ   s     r@   rÖ   zBaseRequest.__getitem__c  s   € ØŒ{˜3ÔÐrC   Úvaluec                 ó   — d S rg   r=   ©r?   rÓ   rÚ   s      r@   Ú__setitem__zBaseRequest.__setitem__f  s   € ØCFÀ3rC   c                 ó   — d S rg   r=   rÜ   s      r@   rÝ   zBaseRequest.__setitem__i  s   € Ø9<¸rC   c                 óÖ   — t          |t          ¦  «        sI|t          j        vr;t          j                             |¦  «         t          j        dt          d¬¦  «         || j        |<   d S )Nz‚It is recommended to use web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storagerÒ   )ÚcategoryrÌ   )	Ú
isinstancer#   rM   r’   ÚaddrÍ   rÎ   r4   r‰   rÜ   s      r@   rÝ   zBaseRequest.__setitem__l  sr   € Ý˜#�zÑ*Ô*ð 	¨s½+Ô:TÐ/TÐ/TÝÔ&×*Ò*¨3Ñ/Ô/Ð/ÝŒMð'õ *Øðñ ô ð ð !ˆŒ�CÑÐÐrC   c                 ó   — | j         |= d S rg   rÙ   rÕ   s     r@   Ú__delitem__zBaseRequest.__delitem__x  s   € ØŒK˜ÐÐÐrC   c                 ó*   — t          | j        ¦  «        S rg   )Úlenr‰   r>   s    r@   Ú__len__zBaseRequest.__len__{  s   € Ý�4”;ÑÔÐrC   c                 ó*   — t          | j        ¦  «        S rg   )Úiterr‰   r>   s    r@   Ú__iter__zBaseRequest.__iter__~  s   € Ý�D”KÑ Ô Ð rC   c                 ó   — | j         dk    S )z5A bool indicating if the request is handled with SSL.r¡   )r–   r>   s    r@   ÚsecurezBaseRequest.secureƒ  s   € ð Œ{˜gÒ%Ð%rC   .c                 ó´  — g }| j         j                             t          j        d¦  «        D �]œ}t          |¦  «        }d}d}i }|                     t          j        |¦  «        ¦  «         d|cxk    r|k     �rOn ŒPt           
                    ||¦  «        }|�§|r|                     d|¦  «        }�n|                     ¦   «         \  }}	}
|	d         dk    r#t                               d|	dd	…         ¦  «        }	|
r|	|
z  }	|	||                     ¦   «         <   |t          |                     d¦  «        ¦  «        z  }d
}nw||         dk    r1d}i }|                     t          j        |¦  «        ¦  «         |dz  }n:||         dk    rd}|dz  }n&||         dv r|dz  }n|                     d|¦  «        }d|cxk    r|k     �°I�Œ› �Œžt#          |¦  «        S )a˜  A tuple containing all parsed Forwarded header(s).

        Makes an effort to parse Forwarded headers as specified by RFC 7239:

        - It adds one (immutable) dictionary per Forwarded 'field-value', ie
          per proxy. The element corresponds to the data in the Forwarded
          field-value added by the first proxy encountered by the client. Each
          subsequent item corresponds to those added by later proxies.
        - It checks that every value has valid syntax in general as specified
          in section 4: either a 'token' or a 'quoted-string'.
        - It un-escapes found escape sequences.
        - It does NOT validate 'by' and 'for' contents as specified in section
          6.
        - It does NOT validate 'host' contents (Host ABNF).
        - It does NOT validate 'proto' contents for valid URI scheme names.

        Returns a tuple containing one or more immutable dicts
        r=   r   FNú,ú"z\1r   éÿÿÿÿTú;z 	)r   r^   Úgetallr   Ú	FORWARDEDræ   ÚappendÚtypesr   rx   ÚmatchÚfindÚgroupsrw   ÚsubÚlowerÚgroupr¹   )r?   ÚelemsÚfield_valueÚlengthÚposÚneed_separatorÚelemrö   rZ   rÚ   Úports              r@   Ú	forwardedzBaseRequest.forwardedˆ  s  € ð( ˆØœ=Ô0×7Ò7½¼ÈÑKÔKð %	5ñ %	5ˆKÝ˜Ñ%Ô%ˆFØˆCØ"ˆNØ#%ˆDØ�LŠL�Ô/°Ñ5Ô5Ñ6Ô6Ð6Ø�sÐ#Ð#Ò#Ð#˜VÒ#Ñ#Ð#Ð#Ð#Ý*×0Ò0°¸cÑBÔB�ØÐ$Ø%ð .à)×.Ò.¨s°CÑ8Ô8˜™à,1¯LªL©N¬NÑ)˜˜e TØ  œ8 sš?˜?å$;×$?Ò$?ÀÀuÈQÈrÈTÄ{Ñ$SÔ$S˜EØð *Ø! T™M˜EØ-2˜˜TŸZšZ™\œ\Ñ*Ø�s 5§;¢;¨q¡>¤>Ñ2Ô2Ñ2˜Ø)-˜˜Ø  Ô%¨Ò,Ð,Ø%*�NØ�DØ—L’L¥Ô!7¸Ñ!=Ô!=Ñ>Ô>Ð>Ø˜1‘H�C�CØ  Ô%¨Ò,Ð,Ø%*�NØ˜1‘H�C�CØ  Ô%¨Ð.Ð.ð ˜1‘H�C�Cð &×*Ò*¨3°Ñ4Ô4�Cð? �sÐ#Ð#Ò#Ð#˜VÒ#Ñ#Ñ#Ð#ùõ@ �U‰|Œ|ÐrC   c                 ó   — | j         rdS dS )a  A string representing the scheme of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(scheme=new_scheme) call.
        - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

        'http' or 'https'.
        r¡   r¢   )r�   r>   s    r@   r–   zBaseRequest.schemeÅ  s   € ð Ô%ð 	Ø�7à�6rC   c                 ó   — | j         S )zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )r„   r>   s    r@   r¤   zBaseRequest.methodÕ  s   € ð Œ|ÐrC   c                 ó   — | j         S )zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )r…   r>   s    r@   r¥   zBaseRequest.versionÝ  s   € ð Œ}ÐrC   c                 ó"  — | j         j                             t          j        ¦  «        }|�|S | j        }|€dS t          |t          ¦  «        r4t          |¦  «        dk    rd|d         › d�S t          |d         ¦  «        S t          |¦  «        S )a¸  Hostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - local socket address the request arrived on
          (transport ``sockname``)
        - empty string if no transport information is available

        For example, 'example.com' or 'localhost:8080'.

        For historical reasons, the port number may be included.
        Nre   é   rc   r   ú])
r   r^   Úgetr   ÚHOSTr‘   rá   r¹   ræ   r_   )r?   r—   r¬   s      r@   r—   zBaseRequest.hostå  s”   € ð  Œ}Ô$×(Ò(­¬Ñ3Ô3ˆØÐØˆKØÔ+ˆØÐØ�2Ý�h¥Ñ&Ô&ð 	$õ �8‰}Œ} Ò!Ð!Ø)˜8 Aœ;Ð)Ð)Ð)Ð)Ý�x ”{Ñ#Ô#Ð#Ý�8‰}Œ}ÐrC   c                 ó²   — | j         €dS t          | j         t          t          f¦  «        rt	          | j         d         ¦  «        S t	          | j         ¦  «        S )zÂRemote IP of client initiated HTTP request.

        The IP is resolved in this order:

        - overridden value by .clone(remote=new_remote) call.
        - peername of opened socket
        Nr   )r�   rá   Úlistr¹   r_   r>   s    r@   r˜   zBaseRequest.remote  sR   € ð Ô#Ð+Ø�4Ý�dÔ.µµu°Ñ>Ô>ð 	4Ý�tÔ/°Ô2Ñ3Ô3Ð3Ý�4Ô+Ñ,Ô,Ð,rC   c                 ór   — t          j        | j        | j        ¬¦  «                             | j        ¦  «        S )zThe full URL of the request.)r–   Ú	authority)r   Úbuildr–   r—   Újoinr†   r>   s    r@   r£   zBaseRequest.url  s-   € õ
 Œy ¤°t´yÐAÑAÔA×FÒFÀtÄ}ÑUÔUÐUrC   c                 ó   — | j         j        S )z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )r†   r±   r>   s    r@   r±   zBaseRequest.path  s   € ð Œ}Ô!Ð!rC   c                 ó*   — t          | j        ¦  «        S )zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )r_   r†   r>   s    r@   Úpath_qszBaseRequest.path_qs"  s   € õ �4”=Ñ!Ô!Ð!rC   c                 ó   — | j         j        S )zÚThe URL including raw *PATH INFO* without the host or scheme.

        Warning, the path is unquoted and may contains non valid URL characters

        E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
        )r   r±   r>   s    r@   Úraw_pathzBaseRequest.raw_path*  s   € ð Œ}Ô!Ð!rC   úMultiMapping[str]c                 ó   — | j         j        S )z7A multidict with all the variables in the query string.)r†   Úqueryr>   s    r@   r  zBaseRequest.query4  s   € ð Œ}Ô"Ð"rC   c                 ó   — | j         j        S )z:The query string in the URL.

        E.g., id=10
        )r†   Úquery_stringr>   s    r@   r  zBaseRequest.query_string9  s   € ð Œ}Ô)Ð)rC   c                 ó   — | j         S )z4A case-insensitive multidict proxy with all headers.)rƒ   r>   s    r@   r^   zBaseRequest.headersA  ó   € ð Œ}ÐrC   c                 ó   — | j         j        S )z$A sequence of pairs for all headers.)r   r·   r>   s    r@   r·   zBaseRequest.raw_headersF  s   € ð Œ}Ô(Ð(rC   c                 ód   — t          | j                             t          j        ¦  «        ¦  «        S )zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r$   r^   r
  r   ÚIF_MODIFIED_SINCEr>   s    r@   Úif_modified_sincezBaseRequest.if_modified_sinceK  s%   € õ ˜tœ|×/Ò/µÔ0FÑGÔGÑHÔHÐHrC   c                 ód   — t          | j                             t          j        ¦  «        ¦  «        S )z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r$   r^   r
  r   ÚIF_UNMODIFIED_SINCEr>   s    r@   Úif_unmodified_sincezBaseRequest.if_unmodified_sinceS  s%   € õ ˜tœ|×/Ò/µÔ0HÑIÔIÑJÔJÐJrC   Úetag_headerc              #   ó  K  — | t           k    rt          dt           ¬¦  «        V — dS t          j        | ¦  «        D ]B}|                     ddd¦  «        \  }}}|r dS t          t          |¦  «        |¬¦  «        V — ŒCdS )z'Extract `ETag` objects from raw header.F)Úis_weakrÚ   rÒ   r6   r  N)r   r!   r   Úfinditerrû   rL   )r%  rö   r'  rÚ   Úgarbages        r@   Ú_etag_valueszBaseRequest._etag_values[  sÉ   è è € ð �(Ò"Ð"ÝØÝðñ ô ð ð ð ð ð õ
 -Ô5°kÑBÔBð 
ð 
�Ø*/¯+ª+°a¸¸AÑ*>Ô*>Ñ'�˜ ð ð Ø�E�EåÝ  ™MœMØðñ ô ð ð ð ð ð
ð 
rC   Úheader_valuec                 óN   — |sd S t          |                      |¦  «        ¦  «        S rg   )r¹   r*  )Úclsr+  s     r@   Ú_if_match_or_none_implz"BaseRequest._if_match_or_none_implp  s-   € ð ð 	Ø�4å�S×%Ò% lÑ3Ô3Ñ4Ô4Ð4rC   c                 óp   — |                       | j                             t          j        ¦  «        ¦  «        S )zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r.  r^   r
  r   ÚIF_MATCHr>   s    r@   Úif_matchzBaseRequest.if_matchy  s*   € ð ×*Ò*¨4¬<×+;Ò+;½D¼MÑ+JÔ+JÑKÔKÐKrC   c                 óp   — |                       | j                             t          j        ¦  «        ¦  «        S )z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r.  r^   r
  r   ÚIF_NONE_MATCHr>   s    r@   Úif_none_matchzBaseRequest.if_none_match�  s+   € ð ×*Ò*¨4¬<×+;Ò+;½DÔ<NÑ+OÔ+OÑPÔPÐPrC   c                 ód   — t          | j                             t          j        ¦  «        ¦  «        S )zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r$   r^   r
  r   ÚIF_RANGEr>   s    r@   Úif_rangezBaseRequest.if_range‰  s$   € õ ˜tœ|×/Ò/µ´Ñ>Ô>Ñ?Ô?Ð?rC   c                 ó   — | j         j         S )zIs keepalive enabled by client?)r   Úshould_closer>   s    r@   Ú
keep_alivezBaseRequest.keep_alive‘  s   € ð ”=Ô-Ð-Ð-rC   c                 ó˜   — t          | j                             t          j        d¦  «        ¦  «        }t          d„ |D ¦   «         ¦  «        S )zMReturn request cookies.

        A read-only dictionary-like object.
        re   c                 ó$   — i | ]\  }}||j         “ŒS r=   )rÚ   )ri   rZ   Úmorsels      r@   ú
<dictcomp>z'BaseRequest.cookies.<locals>.<dictcomp>   s    € Ð OÐ OÐ O¹¸¸f  v¤|Ð OÐ OÐ OrC   )r   r^   r
  r   ÚCOOKIEr   )r?   Úparseds     r@   ÚcookieszBaseRequest.cookies–  sB   € õ % T¤\×%5Ò%5µd´kÀ2Ñ%FÔ%FÑGÔGˆåÐ OÐ OÈÐ OÑ OÔ OÑPÔPÐPrC   c                 óô  — | j                              t          j        ¦  «        }d\  }}|�½	 d}t	          j        ||t          j        t          j        z  ¦  «        d         \  }}n# t          $ r t          d¦  «        ‚w xY w|rt          |¦  «        nd}|rt          |¦  «        nd}|€|�| }d}|�|�|dz  }||k    rt          d¦  «        ‚||cxu r€n nt          d¦  «        ‚t          ||d¦  «        S )	zMThe content of Range HTTP header.

        Return a slice instance.

        )NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)rƒ   r
  r   ÚRANGEÚreÚfindallÚASCIIÚ
IGNORECASEÚ
IndexErrorÚ
ValueErrorÚintÚslice)r?   ÚrngÚstartÚendÚpatterns        r@   Ú
http_rangezBaseRequest.http_range¢  s2  € ð Œm×Ò¥¤
Ñ+Ô+ˆØ‰
ˆˆsØˆ?ðCØ0�åœZ¨°µb´hÅÄÑ6NÑOÔOÐPQÔR‘
��s�søÝð Cð Cð CÝ Ð!AÑBÔBÐBðCøøøð "Ð+•#�c‘(”(�( tˆCØ"'Ð1•C˜‘J”J�J¨TˆEàˆ}  à˜�Ø�àÐ  S _à�q‘�à˜C’<�<Ý$Ð%@ÑAÔAÐAà˜Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ý Ð!EÑFÔFÐFå�U˜C Ñ#Ô#Ð#s   ­8A& Á&B c                 ó   — | j         S )zReturn raw payload stream.)r‚   r>   s    r@   ÚcontentzBaseRequest.contentÇ  r  rC   c                 ón   — t          j        dt          d¬¦  «         | j                             ¦   «          S )ú@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005rÒ   rË   )rÍ   rÎ   rÏ   r‚   Úat_eofr>   s    r@   Úhas_bodyzBaseRequest.has_bodyÌ  s?   € õ 	ŒØ2Õ4FÐSTð	
ñ 	
ô 	
ð 	
ð ”=×'Ò'Ñ)Ô)Ð)Ð)rC   c                 ó6   — | j                              ¦   «          S )rT  )r‚   rU  r>   s    r@   Úcan_read_bodyzBaseRequest.can_read_bodyÔ  s   € ð ”=×'Ò'Ñ)Ô)Ð)Ð)rC   c                 ó8   — t          | j        ¦  «        t          uS )z6Return True if request has HTTP BODY, False otherwise.)Útyper‚   r,   r>   s    r@   Úbody_existszBaseRequest.body_existsÙ  s   € õ �D”MÑ"Ô"Õ*;Ð;Ð;rC   c              ƒ   ó°   K  — | j                              ¦   «         s:| j                              ¦   «         ƒ d{V —† | j                              ¦   «         ¯8dS dS )zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)r‚   rU  Úreadanyr>   s    r@   ÚreleasezBaseRequest.releaseÞ  sp   è è € ð
 ”-×&Ò&Ñ(Ô(ð 	*Ø”-×'Ò'Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð ”-×&Ò&Ñ(Ô(ð 	*ð 	*ð 	*ð 	*ð 	*rC   c              ƒ   óŽ  K  — | j         €¶| j        r| j                             | j        ¦  «         t	          ¦   «         }	 | j                             ¦   «         ƒ d{V —†}|                     |¦  «         | j        r.t          |¦  «        }|| j        k    rt          | j        ¦  «        ‚|snŒmt          |¦  «        | _         | j         S )z_Read request body if present.

        Returns bytes object with full request content.
        N)
rˆ   rŒ   r‚   Úset_read_chunk_sizeÚ	bytearrayr]  Úextendræ   r3   ra   )r?   ÚbodyÚchunkÚ	body_sizes       r@   ÚreadzBaseRequest.readæ  sÜ   è è € ð
 ÔÐ#ð Ô$ð IØ”×1Ò1°$Ô2GÑHÔHÐHÝ‘;”;ˆDðØ"œm×3Ò3Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5�Ø—’˜EÑ"Ô"Ð"ØÔ(ð OÝ # D¡	¤	�IØ  4Ô#8Ò8Ð8Ý7¸Ô8MÑNÔNÐNØð Øðõ  % T™{œ{ˆDÔØÔÐrC   c              ƒ   óv   K  — |                       ¦   «         ƒ d{V —†}| j        pd}|                     |¦  «        S )z1Return BODY as text using encoding from .charset.Nr³   )rf  ÚcharsetÚdecode)r?   Ú
bytes_bodyÚencodings      r@   r|   zBaseRequest.textý  sE   è è € àŸ9š9™;œ;Ð&Ð&Ð&Ð&Ð&Ð&ˆ
Ø”<Ð* 7ˆØ× Ò  Ñ*Ô*Ð*rC   )Úloadsrl  c             ƒ   óP   K  — |                       ¦   «         ƒ d{V —†} ||¦  «        S )zReturn BODY as JSON.Nr{   )r?   rl  rc  s      r@   ÚjsonzBaseRequest.json  s3   è è € à—Y’Y‘[”[Ð Ð Ð Ð Ð Ð ˆØˆu�T‰{Œ{ÐrC   c              ƒ   ó€   K  — t          | j        | j        | j        | j        j        | j        j        t          ¬¦  «        S )z3Return async iterator to process BODY as multipart.)r“   Úmax_field_sizeÚmax_headersÚmax_size_error_cls)r+   rƒ   r‚   rŒ   r€   rp  rq  r3   r>   s    r@   Ú	multipartzBaseRequest.multipart  s@   è è € åØŒMØŒMØ Ô1Øœ>Ô8ØœÔ2Ý8ð
ñ 
ô 
ð 	
rC   úMultiDictProxy[_Post]c              ƒ   óî
  K  — | j         �| j         S | j        | j        vr't          t	          ¦   «         ¦  «        | _         | j         S | j        }|dvr't          t	          ¦   «         ¦  «        | _         | j         S |dk    �r4t	          ¦   «         }|                      ¦   «         ƒ d{V —†}| j        }| j        }| j	        }| 
                    ¦   «         ƒ d{V —†x}��Ùd|cxk     r|j        k     rn nt          |¦  «        ‚d|cxk     rt          |¦  «        k    rn nt          |¦  «        ‚|j                             t"          j        ¦  «        }t'          |t(          ¦  «        �r#|j        €t-          d¦  «        ‚|j        �rÍt1          t2          ¦  «        }	d}
|                     t6          ¬¦  «        ƒ d{V —†x}�rd|cxk     r|j        k     rOn nL|
r'| j                             d|	j        ¦  «        ƒ d{V —† n|	                     ¦   «          t          |¦  «        ‚|                     |¦  «        2 3 d{V —†}|
p,|	                      ¦   «         t          |¦  «        z   t2          k    }
|
r(| j                             d|	j!        |¦  «        ƒ d{V —† Œ`|	 !                    |¦  «         Œv6 |                     t6          ¬¦  «        ƒ d{V —†x}�°|
r(| j                             d|	j"        d¦  «        ƒ d{V —† n|	 "                    d¦  «         |€d}tG          |j        |j        |	||j        ¦  «        }| $                    |j        |¦  «         �nGtK          ¦   «         }|                     ¦   «         ƒ d{V —†x}rUd|cxk     r|j        k     rn nt          |¦  «        ‚| &                    |¦  «         |                     ¦   «         ƒ d{V —†x}°UtK          ¦   «         }|                     |¦  «        2 3 d{V —†}| &                    |¦  «         Œ6 |�| '                    d	¦  «        rE| (                    d
¬¦  «        }| $                    |j        | )                    |¦  «        ¦  «         n+| $                    |j        |¦  «         nt-          d¦  «        ‚| 
                    ¦   «         ƒ d{V —†x}�­Ùn©|  *                    ¦   «         ƒ d{V —†x}st	          ¦   «         }n~| j+        pd
}| ,                    ¦   «          )                    |¦  «        }| j        }	 t	          t[          ||dk    r|nd|¬¦  «        ¦  «        }n# t,          $ r t          |¦  «        d‚w xY wt          |¦  «        | _         | j         S )zReturn POST parameters.N)re   z!application/x-www-form-urlencodedúmultipart/form-datarv  r   zMultipart field missing name.F)Úsizezapplication/octet-streamztext/r³   )Údefaultz8To decode nested multipart you need to use custom reader)ry   rk  ).r‡   r„   ÚPOST_METHODSr   r   r]   rs  rŒ   r�   r‚   ÚnextÚtotal_bytesr3   ræ   r}   r^   r
  r   ÚCONTENT_TYPErá   r*   rZ   rI  r[   r8   rU   Ú
read_chunkr   rŽ   Úrun_in_executorÚcloseÚdecode_iterÚtellÚwriteÚseekrN   râ   ra  rb  Ú
startswithÚget_charsetri  rf  rh  Úrstripr   )r?   r]   Úoutrs  Úmax_sizery   rš   ÚfieldÚfield_ctÚtmpÚrolledrd  Údecoded_chunkÚffÚraw_datarÚ   Údrh  Údatar  s                       r@   ÚpostzBaseRequest.post  s“  è è € àŒ:Ð!Ø”:ÐØŒ<˜tÔ0Ð0Ð0Ý'­	©¬Ñ4Ô4ˆDŒJØ”:ÐàÔ(ˆØð  
ð 
ð 
õ
 (­	©¬Ñ4Ô4ˆDŒJØ”:Ðð Ð0Ò0Ñ0Ý‘+”+ˆCØ"ŸnšnÑ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ˆIØÔ,ˆHØÔ0ˆJà”mˆGØ"+§.¢.Ñ"2Ô"2Ð2Ð2Ð2Ð2Ð2Ð2Ð2�5Ñ?ð �xÐ5Ð5Ò5Ð5 'Ô"5Ò5Ð5Ð5Ð5Ð5Ý3°HÑ=Ô=Ð=Ø�zÐ-Ð-Ò-Ð-¥S¨¡X¤XÒ-Ð-Ð-Ð-Ð-Ý*¨:Ñ6Ô6Ð6à œ=×,Ò,­TÔ->Ñ?Ô?�å˜e¥^Ñ4Ô4ñ GØ”zÐ)Ý(Ð)HÑIÔIÐIð ”~ñ ;7Ý2Õ3GÑHÔH˜ð "'˜Ø-2×-=Ò-=ÕCUÐ-=Ñ-VÔ-VÐ'VÐ'VÐ'VÐ'VÐ'VÐ'VÐV˜eñ =à  8ÐAÐAÒAÐA¨gÔ.AÒAÐAÐAÐAÐAØ#)ð !0Ø*.¬*×*DÒ*DÀTÈ3Ì9Ñ*UÔ*UÐ$UÐ$UÐ$UÐ$UÐ$UÐ$UÐ$UÐ$Uà$'§I¢I¡K¤K KÝ&?ÀÑ&IÔ&IÐ IØ7<×7HÒ7HÈÑ7OÔ7Oð =ð =ð =ð =ð =ð =ð = mð *0ð *"Ø$'§H¢H¡J¤Jµ°]Ñ1CÔ1CÑ$CÝ&:ò%;ð !'ð $*ð !=Ø*.¬*×*DÒ*DØ(,¨c¬i¸ñ+&ô +&ð %&ð %&ð %&ð %&ð %&ð %&ð %&ð %&ð %(§I¢I¨mÑ$<Ô$<Ð$<Ð$<ð 8Pð .3×-=Ò-=ÕCUÐ-=Ñ-VÔ-VÐ'VÐ'VÐ'VÐ'VÐ'VÐ'VÐV˜eñ =ð* "ð (Ø"&¤*×"<Ò"<¸TÀ3Ä8ÈQÑ"OÔ"OÐOÐOÐOÐOÐOÐOÐOÐOàŸHšH Q™KœK˜Kà#Ð+Ø'A˜Hå&Ø!œJØ!œNØØ$Ø!œMñô ˜ð Ÿš ¤
¨BÑ/Ô/Ð/Ñ/õ $-¡;¤;˜Ø-2×-=Ò-=Ñ-?Ô-?Ð'?Ð'?Ð'?Ð'?Ð'?Ð'?Ð?˜eð 3Ø  8ÐAÐAÒAÐA¨gÔ.AÒAÐAÐAÐAÐAÝ&?ÀÑ&IÔ&IÐ IØ$ŸOšO¨EÑ2Ô2Ð2ð .3×-=Ò-=Ñ-?Ô-?Ð'?Ð'?Ð'?Ð'?Ð'?Ð'?Ð?˜eð 3õ
 !*¡¤˜à',×'8Ò'8¸Ñ'BÔ'Bð ,ð ,ð ,ð ,ð ,ð ,ð , !Ø!ŸLšL¨™OœO˜O˜Oð (Cð $Ð+¨x×/BÒ/BÀ7Ñ/KÔ/KÐ+Ø&+×&7Ò&7ÀÐ&7Ñ&HÔ&H˜GØŸGšG E¤J°·²¸WÑ0EÔ0EÑFÔFÐFÐFàŸGšG E¤J°Ñ6Ô6Ð6Ð6å$ØRñô ð ð_ #,§.¢.Ñ"2Ô"2Ð2Ð2Ð2Ð2Ð2Ð2Ð2�5Ñ?øðd !%§	¢	¡¤Ð+Ð+Ð+Ð+Ð+Ð+Ð+�$ð 	=Ý‘+”+ˆCˆCà”lÐ- gˆGØ—K’K‘M”M×(Ò(¨Ñ1Ô1ˆEØÔ0ˆJð	=ÝÝ"ØØ1;¸a²° : :ÀTØ!(ðñ ô ñô ��øõ ð =ð =ð =Ý& zÑ2Ô2¸Ð<ð=øøøõ $ CÑ(Ô(ˆŒ
ØŒzÐs   È1J'Ï0PÔ'T> Ô>UrZ   rx  c                 óZ   — | j         }|€|S |j        }|€|S |                     ||¦  «        S )z"Extra info from protocol transport)r€   rÅ   Úget_extra_info)r?   rZ   rx  r›   rÅ   s        r@   r”  zBaseRequest.get_extra_info“  s=   € à”>ˆØÐØˆNàÔ&ˆ	ØÐØˆNà×'Ò'¨¨gÑ6Ô6Ð6rC   c                 ó”   — | j                              dd¦  «                             d¦  «        }d| j        j        › d| j        › d|› d�S )NÚasciiÚbackslashreplaceú<ú z >)r±   r´   ri  r¼   rH   r„   )r?   Úascii_encodable_paths     r@   Ú__repr__zBaseRequest.__repr__Ÿ  sZ   € Ø#œy×/Ò/°Ð9KÑLÔL×SÒSØñ 
ô  
Ðð U�4”>Ô*ÐTÐT¨T¬\ÐTÐTÐ<PÐTÐTÐTÐTrC   Úotherc                 óB   — t          | ¦  «        t          |¦  «        k    S rg   )Úid)r?   rœ  s     r@   Ú__eq__zBaseRequest.__eq__¥  s   € Ý�$‰xŒx�2˜e™9œ9Ò$Ð$rC   c                 ó   — dS r<   r=   r>   s    r@   Ú__bool__zBaseRequest.__bool__¨  s   € ØˆtrC   Úresponsec              ƒ   ó
   K  — d S rg   r=   )r?   r¢  s     r@   Ú_prepare_hookzBaseRequest._prepare_hook«  s   è è € ØˆrC   Úexcc                 ó0   — t          | j        |¦  «         d S rg   )r'   r‚   )r?   r¥  s     r@   Ú_cancelzBaseRequest._cancel®  s   € Ý�d”m SÑ)Ô)Ð)Ð)Ð)rC   c                 óÈ   — | j         �| j        dk    rd S | j                              ¦   «         D ]3\  }}t          |t          ¦  «        r|j                             ¦   «          Œ4d S )Nrv  )r‡   r]   rº   rá   rN   r\   r  )r?   Ú	file_nameÚfile_field_objects      r@   Ú_finishzBaseRequest._finish±  su   € ØŒ:Ð Ô!2Ð6KÒ!KÐ!KØˆFð -1¬J×,<Ò,<Ñ,>Ô,>ð 	/ð 	/Ñ(ˆIÐ(ÝÐ+­YÑ7Ô7ð /Ø!Ô&×,Ò,Ñ.Ô.Ð.øð	/ð 	/rC   )r:   rž   )r:   rQ   )r:   r  )r:   N)r:   rt  rg   )urH   rI   rJ   r   Ú
METH_PATCHÚ	METH_POSTÚMETH_PUTÚ
METH_TRACEÚMETH_DELETEry  r"   ÚATTRSÚ	frozensetr‡   r   Ú_Postr`   rˆ   ra   Úsetr’   r_   r(   r-   r   ÚasyncioÚAbstractEventLooprJ  Údictr#   r
   r­   r&   r   r2   r0   rÁ   Úpropertyr�   r›   Ú	TransportrÅ   rÇ   r“   r”   r%   r™   r   r¯   rŸ   r   rS   rÖ   rÝ   rä   rç   r   rê   rL   rì   r¹   r   r  r–   r¤   r)   r¥   r—   r˜   r£   r±   r  r  r  r  r   r^   r1   r·   Údatetimer!  r$  Ústaticmethodr!   r*  Úclassmethodr.  r1  r4  r7  r:  rA  rK  rP  rR  rV  rX  r[  r^  rf  r|   r.   r/   rn  r+   rs  r’  r”  r›  ÚobjectrŸ  r¡  r5   r¤  ÚBaseExceptionr§  r«  r=   rC   r@   rM   rM   �   s˜  € € € € € € àŒØŒØŒØŒØÔð€Lð Ô  ð	
ð 	
ð 	
ñ"ô "ñ €Eð. +/€Eˆ>˜%Ô  4Ñ'Ð.Ð.Ñ.Ø $€K�˜‘Ð$Ð$Ñ$Ø"˜s™uœu€N�C˜”HÐ$Ð$Ñ$ð  'Ø!%Ø9=Ø!ØØ!ð=+ð =+ð =+à"ð=+ð ð=+ð #ð	=+ð
 -ð=+ð #ð=+ð Ô'ð=+ð ð=+ð ð=+ð �J˜s”O cÑ)¨3Ð.Ô/°$Ñ6ð=+ð �d‘
ð=+ð �D‰jð=+ð �d‘
ð=+ð 
ð=+ð =+ð =+ð =+ðD #+Ø(0Ø,4Ø"*Ø (Ø"*Ø+3Ø-5ð=
ð =
ð =
ð �i‘ð=
ð ˜IÑ%ð	=
ð
  	Ñ)ð=
ð �i‘ð=
ð �I‰oð=
ð �i‘ð=
ð ˜y™ð=
ð  ™?ð=
ð 
ð=
ð =
ð =
ð =
ð~ ðð ð ñ „Xðð ðð ð ñ „Xðð ð(˜7Ô,¨tÑ3ð (ð (ð (ñ „Xð(ð
 ð$Ð,ð $ð $ð $ñ „Xð$ð ð% ð %ð %ð %ñ „Xð%ð ð' 3ð 'ð 'ð 'ñ „Xð'ð ðÐ*ð ð ð ñ „Uðð ð˜ð ð ð ñ „Uðð ð�gÔ/ð ð ð ñ „Uðð Ø9˜z¨"œ~Ð9°"Ð9Ð9Ð9ñ „XØ9àØ/˜sÐ/ sÐ/Ð/Ð/ñ „XØ/ð ˜s Z°¤^Ñ3ð  ¸ð  ð  ð  ð  ð ØF˜z¨"œ~ÐF°bÐF¸TÐFÐFÐFñ „XØFàØ<˜sÐ<¨3Ð<°4Ð<Ð<Ð<ñ „XØ<ð
!˜s Z°¤^Ñ3ð 
!¸Cð 
!ÀDð 
!ð 
!ð 
!ð 
!ð˜s Z°¤^Ñ3ð ¸ð ð ð ð ð ˜ð  ð  ð  ð  ð!˜( 3¨°C¬Ñ#8Ô9ð !ð !ð !ð !ð
 ð&˜ð &ð &ð &ñ „Uð&ð ð:˜5 ¨¨c¨Ô!2°CÐ!7Ô8ð :ð :ð :ñ „Uð:ðx ð˜ð ð ð ñ „Uðð ð˜ð ð ð ñ „Uðð ð˜ð ð ð ñ „Uðð ð�cð ð ð ñ „Uðð< ð-˜˜d™
ð -ð -ð -ñ „Uð-ð ðV�Sð Vð Vð Vñ „UðVð ð"�cð "ð "ð "ñ „Uð"ð ð"˜ð "ð "ð "ñ „Uð"ð ð"˜#ð "ð "ð "ñ „Uð"ð ð#ð #ð #ñ „Uð#ð ð*˜cð *ð *ð *ñ „Uð*ð ðÐ)¨#Ô.ð ð ð ñ „Uðð ð)˜Zð )ð )ð )ñ „Uð)ð ðI 8Ô#4°tÑ#;ð Ið Ið Iñ „UðIð ðK XÔ%6¸Ñ%=ð Kð Kð Kñ „UðKð ð #ð ¨(°4¬.ð ð ð ñ „\ðð( ð5Ø ™:ð5à	ˆt�SˆyÔ	˜DÑ	 ð5ð 5ð 5ñ „[ð5ð ðL˜%  c 	Ô*¨TÑ1ð Lð Lð Lñ „UðLð ðQ˜u T¨3 YÔ/°$Ñ6ð Qð Qð Qñ „UðQð ð@˜(Ô+¨dÑ2ð @ð @ð @ñ „Uð@ð ð.˜Dð .ð .ð .ñ „Uð.ð ð	Q˜  c Ô*ð 	Qð 	Qð 	Qñ „Uð	Qð ð"$˜Eð "$ð "$ð "$ñ „Uð"$ðH ð˜ð ð ð ñ „Uðð ð*˜$ð *ð *ð *ñ „Xð*ð ð*˜tð *ð *ð *ñ „Xð*ð ð<˜Tð <ð <ð <ñ „Uð<ð*ð *ð *ð *ð ˜Eð  ð  ð  ð  ð.+˜Cð +ð +ð +ð +ð 2Fð ð ð  ;ð È#ð ð ð ð ð
	
 ð 	
ð 	
ð 	
ð 	
ð~ð ~ð ~ð ~ð@
7ð 
7 3ð 
7°ð 
7Àð 
7ð 
7ð 
7ð 
7ðU˜#ð Uð Uð Uð Uð%˜Fð % tð %ð %ð %ð %ð˜$ð ð ð ð ð¨Nð ¸tð ð ð ð ð*˜=ð *¨Tð *ð *ð *ð *ð/ð /ð /ð /ð /ð /rC   rM   c                   óD  ‡ — e Zd ZU ej         edg¦  «        z  ZdZed         ed<   e	rde
deddfˆ fd„Zeeeeeeeedœd	e
ez  d
eez  deez  de
ez  de
ez  de
ez  deez  deez  dd fˆ fd„Zedd„¦   «         Zedd„¦   «         Zedefd„¦   «         Zdeddfd„Zˆ xZS )rO   Ú_match_infoNrR   rZ   Úvalr:   c                 ó¸   •— || j         vr-t          j        d| j        j        › d|› d�t
          d¬¦  «         t          ¦   «                              ||¦  «         d S )NzSetting custom ú.z attribute is discouragedrÒ   rË   )r±  rÍ   rÎ   r¼   rH   rÏ   ÚsuperÚ__setattr__)r?   rZ   rÁ  r¼   s      €r@   rÅ  zRequest.__setattr__Ã  sx   ø€ Ø˜4œ:Ð%Ð%Ý”ð% d¤nÔ&=ð %ð %Àð %ð %ð %å&Ø ð	ñ ô ð õ ‰GŒG×Ò  cÑ*Ô*Ð*Ð*Ð*rC   r®   r¤   r¯   r^   r–   r—   r˜   r“   r”   c          
      óœ   •— t          ¦   «                              ||||||||¬¦  «        }	t          t          |	¦  «        }
| j        |
_        |
S )Nr®   )rÄ  rÁ   r   rO   rÀ  )r?   r¤   r¯   r^   r–   r—   r˜   r“   r”   ÚretÚnew_retr¼   s              €r@   rÁ   zRequest.cloneÍ  sZ   ø€ õ ‰gŒg�mŠmØØØØØØØ+Ø/ð ñ 	
ô 	
ˆõ •w Ñ$Ô$ˆØ"Ô.ˆÔØˆrC   c                 ó   — | j         }|€J ‚|S )zResult of route resolving.)rÀ  ©r?   Ú
match_infos     r@   rË  zRequest.match_infoç  s   € ð Ô%ˆ
ØÐ%Ð%Ð%ØÐrC   rP   c                 ó&   — | j         }|€J ‚|j        S )zApplication instance.)rÀ  Úcurrent_apprÊ  s     r@   ÚappzRequest.appî  s!   € ð Ô%ˆ
ØÐ%Ð%Ð%ØÔ%Ð%rC   c                 óÊ   — | j         }|€J ‚|j        }| j        }|                     |¦  «        }t	          t          |d |dz   …         ¦  «        ¦  «        }t          |¦  «        S )Nr   )rÀ  ÚappsrÎ  Úindexr  Úreversedr    )r?   rË  ÚlstrÎ  ÚidxÚsublists         r@   Úconfig_dictzRequest.config_dictõ  sb   € àÔ%ˆ
ØÐ%Ð%Ð%ØŒoˆØŒhˆØ�iŠi˜‰nŒnˆÝ•x  I c¨A¡g I¤Ñ/Ô/Ñ0Ô0ˆÝ˜WÑ%Ô%Ð%rC   r¢  c              ƒ   ó~   K  — | j         }|€d S |j        D ]'}|j        x}r|                     | |¦  «        ƒ d {V —† Œ(d S rg   )rÀ  Ú_appsÚon_response_prepareÚsend)r?   r¢  rË  rÎ  rÙ  s        r@   r¤  zRequest._prepare_hookÿ  so   è è € ØÔ%ˆ
ØÐØˆFØÔ#ð 	?ð 	?ˆCØ&)Ô&=Ð=Ð"ð ?Ø)×.Ò.¨t°XÑ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>øð	?ð 	?rC   )r:   rR   )r:   rP   )rH   rI   rJ   rM   r±  r²  rÀ  r   r`   r   r_   r
   rÅ  r&   r   r2   r0   rJ  rÁ   r%   rË  r¸  rÎ  r    rÖ  r5   r¤  Ú__classcell__)r¼   s   @r@   rO   rO   »  sÒ  ø€ € € € € € àÔ 	 	¨=¨/Ñ :Ô :Ñ:€Eà37€K�Ð/Ô0Ð7Ð7Ñ7àð 
+ð	+ Cð 	+¨cð 	+°dð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð #+Ø(0Ø,4Ø"*Ø (Ø"*Ø+3Ø-5ðð ð ð �i‘ðð ˜IÑ%ð	ð
  	Ñ)ðð �i‘ðð �I‰oðð �i‘ðð ˜y™ðð  ™?ðð 
ðð ð ð ð ð ð4 ðð ð ñ „Uðð ð&ð &ð &ñ „Xð&ð ð&˜]ð &ð &ð &ñ „Xð&ð?¨Nð ?¸tð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?rC   rO   )qrµ  rº  ÚiorD  ÚstringÚsysrõ   rÍ   Úcollections.abcr   r   r   r   r   Útypingr   r	   r
   r   r   r   r   r   ÚattrÚ	multidictr   r   r   r   r   Úyarlr   r   re   r   Ú_cookie_helpersr   Úabcr   Úhelpersr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Úhttp_parserr(   Úhttp_writerr)   rs  r*   r+   Ústreamsr,   r-   Útypedefsr.   r/   r0   r1   r2   Úweb_exceptionsr3   r4   Úweb_responser5   Úversion_infoÚtempfiler8   ra   ÚIOBaseÚ__all__Úweb_apprP   Úweb_protocolrQ   Úweb_urldispatcherrR   rS   rU   rJ  r`   ÚsrN   r_   ra  r³  ÚdigitsÚascii_lettersrb   rd   Úformatr  r¹   Úrangerq   rr   rt   rv   Úcompilerw   rx   r}   rM   rO   r=   rC   r@   ú<module>rú     s  ðØ €€€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sà €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ (Ð (Ð (Ð (Ð (Ð (àÔ�wÒÐØ-Ð-Ð-Ð-Ð-Ð-Ð-à€O€O€Oðð ð ð ð ˜xÔ<¸UÔCÀRÄYñ ô ð ð& 2€ð ð 7Ø$Ð$Ð$Ð$Ð$Ð$Ø,Ð,Ð,Ð,Ð,Ð,Ø6Ð6Ð6Ð6Ð6Ð6ð €WˆT�]„]€ð $+Ð �e˜C”jÐ *Ð *Ñ *ð €„�T $¨dÐ3Ñ3Ô3ð#ð #ð #ð #ð #ñ #ô #ñ 4Ô3ð#ð 	ˆe‰�iÑ )Ñ+€Ø”] VÔ%9Ñ9Ð<NÑN€ˆˆcŒ
Ð NÐ NÑ Nð %˜&�_�_�_€ˆˆcŒ
Ð $Ð $Ñ $à—n’nØ‡H‚HÐKÐKÐ/°%°%¸¸¸dÀDÑ8IÔ8IÑ2JÔ2JÑJÐKÑKÔKÑKÔKñô €ˆˆsŒð ð ñ ð )€ˆe�CŒjÐ (Ð (Ñ (à@ \Ð@Ð@°GÐ@Ð@Ð@€��c”
Ð @Ð @Ñ @ð V 6ÐUÐU¨fÐUÐU°~ÐUÐUÐU€��s”Ð UÐ UÑ Uà/9¨r¬z¸/Ñ/JÔ/JÐ ˜˜w sœ|Ô,Ð JÐ JÑ Jð +5¨"¬*°_Ñ*EÔ*EÐ �E˜' #œ,Ô'Ð EÐ EÑ Eð ð Ð)Bð ð ð ð ði/ð i/ð i/ð i/ð i/�.  z°#¤Ñ!6¸Ð!;Ô<¸lñ i/ô i/ð i/ðXJ?ð J?ð J?ð J?ð J?ˆkñ J?ô J?ð J?ð J?ð J?rC   