ó
    pñ:i’›  ã                  ó  • % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
rSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr   SSKr\\R>                  \R@                  4r!S\"S'   Sr%\RL                  S:X  a	   \'" S5        \(" \S5      r)\)(       a  \RT                  r*O
 " S S5      r* \RV                  r,Sr.\R^                  \R`                  S\1\2\R^                  \2   4   \Rf                  S   4      r4\Rj                  (       a  SSK6J7r7  SSK6J8r8  SS K9J:r:  SS!K;J<r<   " S" S#\Rz                  5      r> " S$ S%\5      r?S8S& jr@ S9   S:S' jjrA S;       S<S( jjrBS=S) jrC S;       S>S* jjrDS9S?S+ jjrES@S, jrF        SAS- jrGSBS. jrH " S/ S0\5      rI " S1 S2\R”                  \I5      rK " S3 S4\*\I5      rL      SC                   SDS5 jjrMSES6 jrN             SF                                 SGS7 jjrOg! \# a#     " S S5      r$\$" 5       r\\R>                  4r! GNÙf = f! \# a    Sr% GNÍf = f! \- a    Sr, GN¨f = f)HaØ  A WSGI and HTTP server for use **during development only**. This
server is convenient to use, but is not designed to be particularly
stable, secure, or efficient. Use a dedicate WSGI server and HTTP
server when deploying to production.

It provides features like interactive debugging and code reloading. Use
``run_simple`` to start the server. Put this in a ``run.py`` script:

.. code-block:: python

    from myapp import create_app
    from werkzeug import run_simple
é    )ÚannotationsN)Údatetime)Ú	timedelta)Útimezone)ÚBaseHTTPRequestHandler)Ú
HTTPServer)Úunquote)Úurlsplité   ©Ú_log)Ú_wsgi_encoding_dance)ÚInternalServerError)Ú
uri_to_iriztuple[type[Exception], ...]Úconnection_dropped_errorsc                  ó   • \ rS rSrSS jrSrg)Ú	_SslDummyé0   c                ó   • [        S5      e)NzUSSL is unavailable because this Python runtime was not compiled with SSL/TLS support.)ÚRuntimeError)ÚselfÚnames     ÚS/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/werkzeug/serving.pyÚ__getattr__Ú_SslDummy.__getattr__1   s   € Üð2óð ó    © N©r   ÚstrÚreturnút.Any)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__r   r   r   r   r   0   s   † ÷	r   r   TÚntÚcoloramaFÚforkc                  ó   • \ rS rSrSrg)ÚForkingMixInéH   r   N)r"   r#   r$   r%   r&   r   r   r   r+   r+   H   s   † Úr   r+   é€   ússl.SSLContextÚadhoc)ÚWSGIApplication)ÚWSGIEnvironment)ÚRSAPrivateKeyWithSerialization)ÚCertificatec                  ó@   • \ rS rSrSrS	S jrS
S jrSS jrSS jrSr	g)ÚDechunkedInputé`   z8An input stream that handles Transfer-Encoding 'chunked'c                ó,   • Xl         SU l        SU l        g )NFr   )Ú_rfileÚ_doneÚ_len)r   Úrfiles     r   Ú__init__ÚDechunkedInput.__init__c   s   € ØŒØˆŒ
Øˆ�	r   c                ó   • g)NTr   ©r   s    r   ÚreadableÚDechunkedInput.readableh   s   € Ør   c                óì   •  U R                   R                  5       R                  S5      n[        UR	                  5       S5      nUS:  a  [        S5      eU$ ! [
         a  n[        S5      UeS nAff = f)NÚlatin1é   zInvalid chunk headerr   z!Negative chunk length not allowed)r8   ÚreadlineÚdecodeÚintÚstripÚ
ValueErrorÚOSError)r   Úliner:   Úes       r   Úread_chunk_lenÚDechunkedInput.read_chunk_lenk   sp   € ð	9Ø—;‘;×'Ñ'Ó)×0Ñ0°Ó:ˆDÜ�t—z‘z“| RÓ(ˆDð �!‹8ÜÐ=Ó>Ð>Øˆøô	 ó 	9ÜÐ0Ó1°qÐ8ûð	9ús   ‚AA Á
A3Á"A.Á.A3c                ó  • SnU R                   (       Gdx  U[        U5      :  Gah  U R                  S:X  a  U R                  5       U l        U R                  S:X  a  SU l         U R                  S:”  a¾  [	        [        U5      U R                  5      nX#-   [        U5      :”  aV  U R
                  R                  [        U5      U-
  5      XS & U =R                  [        U5      U-
  -  sl        [        U5      nO8U R
                  R                  U5      XX#-   & U =R                  U-  sl        X#-  nU R                  S:X  a+  U R
                  R                  5       nUS;  a  [        S5      eU R                   (       d  U[        U5      :  a  GMh  U$ )Nr   T)ó   
ó   
ó   z!Missing chunk terminating newline)	r9   Úlenr:   rM   Úminr8   ÚreadrE   rJ   )r   ÚbufrU   ÚnÚ
terminators        r   ÚreadintoÚDechunkedInput.readintou   s:  € ØˆØ—*—*�* ¬¨C«¤Ø�y‰y˜A‹~ð !×/Ñ/Ó1�”	à�y‰y˜A‹~ð "�”
à�y‰y˜1‹}ô œ˜C› $§)¡)Ó,�ð
 ‘8œc #›hÓ&Ø!%§¡×!1Ñ!1´#°c³(¸T±/Ó!B�C˜�JØ—I’I¤ S£¨D¡Ñ0•IÜ˜s›8‘Dà+/¯;©;×+;Ñ+;¸AÓ+>�C˜t™xÐ(Ø—I’I ‘N•IØ‘I�Dà�y‰y˜A‹~ð "Ÿ[™[×1Ñ1Ó3�
ØÐ%<Ó<Ü!Ð"EÓFÐFðE —*—* ¬¨C«¦ðH ˆr   )r9   r:   r8   N)r;   zt.IO[bytes]r    ÚNone©r    Úbool©r    rG   )rV   Ú	bytearrayr    rG   )
r"   r#   r$   r%   Ú__doc__r<   r@   rM   rY   r&   r   r   r   r5   r5   `   s   † ÙBôô
ô÷&r   r5   c            
      ób  ^• \ rS rSr% SrS\S'   \SS j5       rSS jrSS jr	SU4S jjr
 S     SS	 jjrSU4S
 jjrSS jrSS jr\R!                  / \" S5      Q\" SS5      Q V Vs0 s H	  oSUS 3_M     snn 5      rS\\" S5      '   S S!S jjrS"S jrS"S jrS#S jrSrU=r$ s  snn f )$ÚWSGIRequestHandleréž   z3A request handler that implements WSGI dispatching.ÚBaseWSGIServerÚserverc                ó.   • U R                   R                  $ ©N)re   Ú_server_versionr?   s    r   Úserver_versionÚ!WSGIRequestHandler.server_version£   s   € à�{‰{×*Ñ*Ð*r   c                óÚ  • [        U R                  5      nU R                  R                  c  SOSnU R                  (       d  SU l        O2[        U R                  [        5      (       a  U R                  S4U l        UR                  (       d-  UR                  (       a  SUR                   UR                   3nOUR                  n[        U5      n0 SS_SU_S	U R                  _S
[        R                  _SU R                  R                  _SU R                  R                  _SS_SU R                  _SU R                   _SU R"                  _SS_S[%        U5      _S[%        UR&                  5      _S[%        U R                  5      _S[%        U R                  5      _SU R)                  5       _SU R+                  5       _U R                  R,                  S   [        U R                  R,                  S   5      U R.                  S.EnU R0                  R3                  5        H\  u  pVSU;   a  M  UR5                  5       R7                  SS5      nUR7                  SS5      nUS;  a  S U 3nXT;   a	  XE    S!U 3nXdU'   M^     UR9                  S"S5      R;                  5       R=                  5       S#:X  a  S$US%'   [?        US	   5      US	'   UR                  (       a   UR                  (       a  UR                  US&'    U R                  RA                  S$S'9nUb  [B        RD                  " U5      US('   U$ ! [F         a     U R                  RI                  S)S*5         U$ [J         a     U$ f = f)+NÚhttpÚhttps)ú<local>r   r   Ú/zwsgi.version)r   r   zwsgi.url_schemez
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocesszwsgi.run_onceFzwerkzeug.socketÚSERVER_SOFTWAREÚREQUEST_METHODÚSCRIPT_NAMEÚ Ú	PATH_INFOÚQUERY_STRINGÚREQUEST_URIÚRAW_URIÚREMOTE_ADDRÚREMOTE_PORTr   )ÚSERVER_NAMEÚSERVER_PORTÚSERVER_PROTOCOLÚ_Ú-z
)ÚCONTENT_TYPEÚCONTENT_LENGTHÚHTTP_Ú,ÚHTTP_TRANSFER_ENCODINGÚchunkedTzwsgi.input_terminatedÚ	HTTP_HOST)Úbinary_formÚSSL_CLIENT_CERTÚerrorz&Cannot fetch SSL peer certificate info)&r
   Úpathre   Ússl_contextÚclient_addressÚ
isinstancer   ÚschemeÚnetlocr	   r;   ÚsysÚstderrÚmultithreadÚmultiprocessÚ
connectionri   Úcommandr   ÚqueryÚaddress_stringÚport_integerÚserver_addressÚrequest_versionÚheadersÚitemsÚupperÚreplaceÚgetrH   Úlowerr5   ÚgetpeercertÚsslÚDER_cert_to_PEM_certrI   ÚlogÚAttributeError)r   Úrequest_urlÚ
url_schemeÚ	path_infoÚenvironÚkeyÚvalueÚ	peer_certs           r   Úmake_environÚWSGIRequestHandler.make_environ§   su  € Ü˜tŸy™yÓ)ˆØ#Ÿ{™{×6Ñ6Ñ>‘VÀGˆ
à×"×"Ø"0ˆDÕÜ˜×+Ñ+¬S×1Ñ1Ø#'×#6Ñ#6¸Ð":ˆDÔð
 ×!×! k×&8×&8Ø˜K×.Ñ.Ð/°×0@Ñ0@Ð/AÐB‰Ià#×(Ñ(ˆIä˜IÓ&ˆ	ð$
Ø˜Fð$
à˜zð$
ð ˜$Ÿ*™*ð$
ð œ3Ÿ:™:ð	$
ð
  §¡× 7Ñ 7ð$
ð   §¡×!9Ñ!9ð$
ð ˜Uð$
ð ˜tŸ™ð$
ð ˜t×2Ñ2ð$
ð ˜dŸl™lð$
ð ˜2ð$
ð Ô-¨iÓ8ð$
ð Ô0°×1BÑ1BÓCð$
ð Ô/°·	±	Ó:ð$
ð" Ô+¨D¯I©IÓ6ð#$
ð$ ˜4×.Ñ.Ó0ð%$
ð& ˜4×,Ñ,Ó.ð'$
ð(  Ÿ;™;×5Ñ5°aÑ8Ü˜tŸ{™{×9Ñ9¸!Ñ<Ó=Ø#×3Ñ3ò-$
ˆð2 Ÿ,™,×,Ñ,Ö.‰JˆCØ�c‹zÙà—)‘)“+×%Ñ% c¨3Ó/ˆCØ—M‘M &¨"Ó-ˆEØÐ<Ó<Ø˜c˜U�m�Ø“>Ø&™|˜n¨A¨e¨WÐ5�EØ �C‹Lñ /ð �;‰;Ð/°Ó4×:Ñ:Ó<×BÑBÓDÈ	ÓQØ/3ˆGÐ+Ñ,Ü$2°7¸<Ñ3HÓ$IˆG�LÑ!ð ×× +×"4×"4Ø#.×#5Ñ#5ˆG�KÑ ð	ð Ÿ™×3Ñ3ÀÐ3ÐEˆIØÑ$ä-0×-EÒ-EÀiÓ-P�Ð)Ñ*ð ˆøô ó 	Oà�K‰K�O‰O˜GÐ%MÕNð
 ˆô	 ó 	ààˆð		ús   Ë=5L4 Ì4&M*Í	M*Í)M*c                ó$  ^ ^^^^^	^
^^• T R                   R                  SS5      R                  5       R                  5       S:X  a  T R                  R                  S5        T R                  5       =T l        mS mS mS m
S mSmSUUUUU U
U4S jjmSUUUU4S jjm	SUUUU U	U4S jjn U" T R                  R                  5        g ! [         a  nT R                  UT5         S nAg S nAf[         a›  nT R                  R                  (       a  e T
b  T(       a  S	T l         T
c  S mS mU" [        5       5        O! [         a     Of = fS
SKJn  U" U5      R%                  5       nT R                  R'                  SSU 35         S nAg S nAff = f)NÚExpectrs   z100-continues   HTTP/1.1 100 Continue

Fc                óØ  >• Tc   S5       eT
c   S5       eTcä  TmT
m	 TR                  S S5      u  p[        U5      nTR                  X25        [	        5       nT	 H5  u  pVTR                  XV5        UR                  UR                  5       5        M7     SU;   dB  TS   S:X  d9  SUs=::  a  S:  d,  O  US	;   d$  TR                  S
:¼  a  SmTR                  SS5        TR                  SS5        TR                  5         [        U [        5      (       d   S5       eU (       a�  T(       aY  TR                  R                  [        [        U 5      5      SS  R!                  5       5        TR                  R                  S5        TR                  R                  U 5        T(       a  TR                  R                  S5        TR                  R#                  5         g ! [         a    TSp! GN¶f = f)Nzwrite() before start_responser   rs   zcontent-lengthrq   ÚHEADéd   éÈ   >   é0  éÌ   úHTTP/1.1TzTransfer-Encodingr„   Ú
ConnectionÚclosezapplications must write bytesé   rQ   )ÚsplitrI   rG   Úsend_responseÚsetÚsend_headerÚaddrŸ   Úprotocol_versionÚend_headersrŒ   ÚbytesÚwfileÚwriteÚhexrS   ÚencodeÚflush)ÚdataÚcode_strÚmsgÚcodeÚheader_keysr©   rª   Úchunk_responser¨   Úheaders_sentÚheaders_setr   Ústatus_sentÚ
status_sets          €€€€€€€r   rÃ   Ú*WSGIRequestHandler.run_wsgi.<locals>.write  s¶  ø€ àÑ)ÐJÐ+JÓJÐ)ØÑ*ÐKÐ,KÓKÐ*ØÑ"Ø(�Ø*�ð4Ø$/×$5Ñ$5°d¸AÓ$>‘M�Hô ˜8“}�Ø×"Ñ" 4Ô-Ü!›e�Û".‘J�CØ×$Ñ$ SÔ0Ø—O‘O C§I¡I£KÖ0ñ #/ð )¨KÓ7Ø"Ð#3Ñ4¸Ó>Ø 4Õ-¨#Õ-Ø :Ó-à×-Ñ-°Ó;à%)�NØ×$Ñ$Ð%8¸)ÔDð × Ñ  ¨wÔ7Ø× Ñ Ô"ä˜d¤E×*Ñ*ÐKÐ,KÓKÐ*æÞ!Ø—J‘J×$Ñ$¤S¬¨T«£^°A°BÐ%7×%>Ñ%>Ó%@ÔAØ—J‘J×$Ñ$ WÔ-à—
‘
× Ñ  Ô&æ!Ø—J‘J×$Ñ$ WÔ-à�J‰J×ÑÕøô] "ó 4Ø$/°›cð4ús   žG ÇG)Ç(G)c                ó–   >• U(       a#   T(       a  US   R                  US   5      e S nOT(       a  [        S5      eU mUmT$ ! S nf = f)Nr   r¹   zHeaders already set)Úwith_tracebackÚAssertionError)Ústatusrš   Úexc_inforÍ   rÎ   rÐ   rÃ   s      €€€€r   Ústart_responseÚ3WSGIRequestHandler.run_wsgi.<locals>.start_response<  sZ   ø€ æð$Þ#Ø& q™k×8Ñ8¸À!¹ÓEÐEð $ð  $‘HÞÜ$Ð%:Ó;Ð;ØˆJØ!ˆKØˆLøð  $‘Hús   ŠA ÁAc                ó,  >• U " TT
5      n U H  nT" U5        M     T(       d  T" S5        T(       a  T	R                   R                  S5        [        R                  " 5       nUR	                  T	R
                  [        R                  5        SnSnUR                  SS9(       aX  T	R                  R                  S5      nU[        U5      -  nUS-  nU(       a  US:¼  d  US	:”  a  OUR                  SS9(       a  MX  UR                  5         [        US
5      (       a  UR                  5         g g ! [        R                  " 5       nUR	                  T	R
                  [        R                  5        SnSnUR                  SS9(       aX  T	R                  R                  S5      nU[        U5      -  nUS-  nU(       a  US:¼  d  US	:”  a  OUR                  SS9(       a  MX  UR                  5         [        US
5      (       a  UR                  5         f f = f)Nr   s   0

r   g{®Gáz„?)Útimeouti€–˜ r   l    d(	 iè  r¸   )rÂ   rÃ   Ú	selectorsÚDefaultSelectorÚregisterr“   Ú
EVENT_READÚselectr;   rU   rS   r¸   Úhasattr)ÚappÚapplication_iterrÇ   ÚselectorÚ
total_sizeÚtotal_readsrÌ   r¨   rÍ   r   r×   rÃ   s         €€€€€€r   ÚexecuteÚ,WSGIRequestHandler.run_wsgi.<locals>.executeJ  sÍ  ø€ Ù" 7¨NÓ;Ðð#-Û,�DÙ˜$–Kñ -æ#Ù˜#”JÞ!Ø—J‘J×$Ñ$ \Ô2ô %×4Ò4Ó6�Ø×!Ñ! $§/¡/´9×3GÑ3GÔHØ�
Ø�ð —o‘o¨d�oÖ3àŸ:™:Ÿ?™?¨:Ó6�DØ¤# d£)Ñ+�JØ 1Ñ$�Kö   :°Ó#?À;ÐQUÓCUØð —o‘o¨d�o×3Ð3ð —‘Ô äÐ+¨W×5Ñ5Ø$×*Ñ*Õ,ð 6øô) %×4Ò4Ó6�Ø×!Ñ! $§/¡/´9×3GÑ3GÔHØ�
Ø�ð —o‘o¨d�oÖ3àŸ:™:Ÿ?™?¨:Ó6�DØ¤# d£)Ñ+�JØ 1Ñ$�Kö   :°Ó#?À;ÐQUÓCUØð —o‘o¨d�o×3Ð3ð —‘Ô äÐ+¨W×5Ñ5Ø$×*Ñ*Õ,ð 6ús   ŒAD0 Ä0B.HÇ 3HTr   )ÚDebugTracebackrˆ   zError on request:
)rÇ   rÁ   r    r[   rg   )rá   r0   r    r[   )rš   rž   rŸ   rH   rÂ   rÃ   r¬   r¨   re   rá   r   Úconnection_droppedÚ	ExceptionÚpassthrough_errorsÚclose_connectionr   Údebug.tbtoolsrè   Úrender_traceback_textr£   )r   ræ   rL   rè   rÉ   rÌ   r¨   rÍ   rÎ   r×   rÏ   rÐ   rÃ   s   `    @@@@@@@@r   Úrun_wsgiÚWSGIRequestHandler.run_wsgiø   s^  ÿø€ Ø�<‰<×Ñ˜H bÓ)×/Ñ/Ó1×7Ñ7Ó9¸^ÓKØ�J‰J×ÑÐ=Ô>à!%×!2Ñ!2Ó!4Ð4ˆŒ�wØ!%ˆ
Ø48ˆØ"&ˆØ59ˆØ$ˆ÷7	õ 7	÷r	ò 	÷%	-ô %	-ðN	BÙ�D—K‘K—O‘OÕ$øÜ(ó 	0Ø×#Ñ# A w×/Ñ/ûÜó 	BØ�{‰{×-×-ØàÑ&®>Ø(,�Ô%ðð Ñ&Ø!%�JØ"&�KÙÔ+Ó-Õ.øÜó Ùðúõ 6á  Ó#×9Ñ9Ó;ˆCØ�K‰K�O‰O˜GÐ':¸3¸%Ð%@×AÑAûð)	BúsH   Â)C Ã
FÃC'Ã'FÃ4-F
Ä"D:Ä9F
Ä:
EÅF
ÅEÅ>F
Æ
Fc                ó,  >•  [         TU ]  5         g! [        [        R                  4 a  nU R                  U5         SnAgSnAf[         aD  nU R                  R                  b'  [        U5      (       a  U R                  SU5         SnAge SnAff = f)z/Handles a request ignoring dropped connections.NzSSL error occurred: %s)ÚsuperÚhandleÚConnectionErrorÚsocketrÚ   ré   rê   re   rŠ   Úis_ssl_errorÚ	log_error)r   rL   Ú	__class__s     €r   ró   ÚWSGIRequestHandler.handle‹  sr   ø€ ð	Ü‰G‰NÕøÜ¤§¡Ð0ó 	'Ø×#Ñ# A×&Ñ&ûÜó 	Ø�{‰{×&Ñ&Ñ2´|ÀA·±Ø—‘Ð7¸×;Ñ;àûð		ús&   ƒ ’B¬AÁBÁ9BÂBÂBc                ó   • g)zPCalled if the connection was closed by the client.  By default
nothing happens.
Nr   )r   rˆ   r¨   s      r   ré   Ú%WSGIRequestHandler.connection_dropped—  s   � r   c                óp   >• UR                  S5      (       a  U R                  $ [        [        5       U5      $ )NÚdo_)Ú
startswithrï   Úgetattrrò   )r   r   rø   s     €r   r   ÚWSGIRequestHandler.__getattr__ž  s-   ø€ à�?‰?˜5×!Ñ!Ø—=‘=Ð ô ”u“w Ó%Ð%r   c                ó†   • [        U SS 5      (       a  U R                  S   $ U R                  (       d  gU R                  S   $ )Nr¨   rx   rn   r   )rÿ   r¨   r‹   r?   s    r   r–   Ú!WSGIRequestHandler.address_string¦  s=   € Ü�4˜ D×)Ñ)Ø—<‘< Ñ.Ð.à×"×"Øà×"Ñ" 1Ñ%Ð%r   c                ó    • U R                   S   $ )Nr   )r‹   r?   s    r   r—   ÚWSGIRequestHandler.port_integer¯  s   € Ø×"Ñ" 1Ñ%Ð%r   é    é   é    z\xÚ02xz\\Ú\c                ó  •  [        U R                  5      nU R                   SU SU R                   3nUR                  U R                  5      n[        U5      nUS   S:X  a  [        US5      nOgUS:X  a  O`US:X  a  [        US5      nOMUS   S:X  a  [        US	5      nO7US
:X  a  [        US5      nO$US   S:X  a  [        USS5      nO[        USS5      nU R                  SSXAU5        g ! [         a    U R
                  n NÐf = f)NÚ r   Ú1ÚboldÚ200Ú304ÚcyanÚ3ÚgreenÚ404ÚyellowÚ4ÚredÚmagentaÚinfoz
"%s" %s %s)r   r‰   r”   r™   r¤   ÚrequestlineÚ	translateÚ_control_char_tabler   Ú_ansi_styler£   )r   rÊ   Úsizer‰   rÉ   s        r   Úlog_requestÚWSGIRequestHandler.log_request¸  s  € ð	#Ü˜dŸi™iÓ(ˆDØ—\‘\�N ! D 6¨¨4×+?Ñ+?Ð*@ÐAˆCð �m‰m˜D×4Ñ4Ó5ˆÜ�4‹yˆà�‰7�c‹>Ü˜c 6Ó*‰CØ�U‹]ØØ�U‹]Ü˜c 6Ó*‰CØ�!‰W˜‹^Ü˜c 7Ó+‰CØ�U‹]Ü˜c 8Ó,‰CØ�!‰W˜‹^Ü˜c 6¨5Ó1‰Cä˜c 6¨9Ó5ˆCà�‰�˜ s°$Õ7øô/ ó 	#à×"Ñ"ŠCð	#ús   ‚3C- Ã-DÄDc                ó,   • U R                   " SU/UQ76   g )Nrˆ   ©r£   ©r   ÚformatÚargss      r   r÷   ÚWSGIRequestHandler.log_errorÕ  s   € Ø�Š�˜&Ð( 4Ô(r   c                ó,   • U R                   " SU/UQ76   g )Nr  r!  r"  s      r   Úlog_messageÚWSGIRequestHandler.log_messageØ  s   € Ø�Š�˜Ð' $Ô'r   c           	     óŒ   • U R                  5       R                  SS5      n[        UU SU R                  5        SU S3/UQ76   g )NÚ%z%%z - - [z] Ú
)r–   r�   r   Úlog_date_time_string)r   ÚtypeÚmessager$  r–   s        r   r£   ÚWSGIRequestHandler.logÛ  sS   € à×,Ñ,Ó.×6Ñ6°s¸DÓAˆÜØØÐ˜f T×%>Ñ%>Ó%@Ð$AÀÀGÀ9ÈBÐOð	
ð ô	
r   )r‹   rì   r¨   )r    r   )r    r1   ©r    r[   rg   )rˆ   ÚBaseExceptionr¨   zWSGIEnvironment | Noner    r[   r   r^   )r~   r~   )rÊ   ú	int | strr  r2  r    r[   )r#  r   r$  r!   r    r[   ©r-  r   r.  r   r$  r!   r    r[   )r"   r#   r$   r%   r`   Ú__annotations__Úpropertyri   r¬   rï   ró   ré   r   r–   r—   r   Ú	maketransÚranger  Úordr  r÷   r'  r£   r&   Ú__classcell__)Ú.0Úcrø   s   00@r   rb   rb   ž   sÛ   ø‡ Ù=àÓàó+ó ð+ôOôbQB÷f
ð GKðØ"ðØ-Cðà	õ÷&ô&ô&ð Ÿ-™-Ø#E¡U¨4£[Ð#E±5¸¸tÓ3DÑ#EÔFÒ#E˜aˆr�!�C�ˆMÒ	Ñ#EÒFóÐð &+Ð™˜D›	Ñ"ö8ô:)ô(÷
ò 
ùóO 	Gs   Á,B+
rb   c                ó^   • [         (       d  U $ SSSSSSS.nU H  nSX#    S	U  3n M     U  S
3$ )Nr   é   r  é!   é#   é$   )r  r  r  r  r  r  z[Úmz[0m)Ú_log_add_style)rª   ÚstylesÚcodesÚstyles       r   r  r  å  sV   € ßŠ>Øˆð ØØØØØñ€Eó ˆØ˜™�~ Q u gÐ.Šñ ð ˆW�GÐÐr   c           	     ó  •  SSK Jn  SSKJn  SSKJn  SSKJn  SSKJ	n  U" 5       nUR                  SS	US
9nU c  Sn UR                  UR                  UR                  S5      UR                  UR                   U 5      /5      nU" 5       nUR#                  5       R%                  U5      R'                  U5      R)                  UR)                  5       5      R+                  UR-                  5       5      R/                  [0        R2                  " [4        R6                  5      5      R9                  [0        R2                  " [4        R6                  5      [;        SS9-   5      R=                  UR?                  UR@                  /5      SS9R=                  URC                  URE                  U 5      URE                  SU  35      /5      SS9RG                  XsRI                  5       U5      n	X—4$ ! [         a    [        S5      S ef = f)Nr   )Úx509)Údefault_backend)Úhashes)Úrsa)ÚNameOIDz<Using ad-hoc certificates requires the cryptography library.i  i   )Úpublic_exponentÚkey_sizeÚbackendÚ*zDummy Certificateim  )ÚdaysF)Úcriticalz*.)%ÚcryptographyrG  Úcryptography.hazmat.backendsrH  Úcryptography.hazmat.primitivesrI  Ú)cryptography.hazmat.primitives.asymmetricrJ  Úcryptography.x509.oidrK  ÚImportErrorÚ	TypeErrorÚgenerate_private_keyÚNameÚNameAttributeÚORGANIZATION_NAMEÚCOMMON_NAMEÚCertificateBuilderÚsubject_nameÚissuer_nameÚ
public_keyÚserial_numberÚrandom_serial_numberÚnot_valid_beforeÚdtÚnowr   ÚutcÚnot_valid_afterr   Úadd_extensionÚExtendedKeyUsageÚOID_SERVER_AUTHÚSubjectAlternativeNameÚDNSNameÚsignÚSHA256)
ÚcnrG  rH  rI  rJ  rK  rN  ÚpkeyÚsubjectÚcerts
             r   Úgenerate_adhoc_ssl_pairrt  ø  s¶  € ð	Ý%Ý@Ý9ÝAÝ1ñ Ó€GØ×#Ñ#Ø¨°gð $ð €Dð
 
�zØˆà�i‰ià×Ñ˜w×8Ñ8Ð:MÓNØ×Ñ˜w×2Ñ2°BÓ7ð	
ó€Gñ Ó€Gà×ÑÓ!ß	‰�gÓ	ß	‰�WÓ	ß	‰�D—O‘OÓ%Ó	&ß	‰�t×0Ñ0Ó2Ó	3ß	Ñ	œ"Ÿ&š&¤§¡Ó.Ó	/ß	‰œŸš¤§¡Ó-´	¸sÑ0CÑCÓ	Dß	‰�t×,Ñ,¨d×.BÑ.BÐ-CÓDÈuˆÐ	Uß	‰Ø×'Ñ'¨¯©°bÓ)9¸4¿<¹<È"ÈRÈDÈ	Ó;RÐ(SÓTØð 
ð 

÷ 
‰ˆd—M‘M“O WÓ	-ð 	ð ˆ:ÐøôK ó ÜØJó
àð	ðús   ‚G( Ç(G?c           	     óø  • Ub  Un[        US9u  p4SSKJn  U  S3nU  S3n[        US5       nUR	                  UR                  UR                  R                  5      5        SSS5        [        US5       nUR	                  UR                  UR                  R                  UR                  R                  UR                  5       S95        SSS5        Xg4$ ! , (       d  f       N|= f! , (       d  f       Xg4$ = f)	aŽ  Creates an SSL key for development.  This should be used instead of
the ``'adhoc'`` key which generates a new cert on each server start.
It accepts a path for where it should store the key and cert and
either a host or CN.  If a host is given it will use the CN
``*.host/CN=host``.

For more information see :func:`run_simple`.

.. versionadded:: 0.9

:param base_path: the path to the certificate and key.  The extension
                  ``.crt`` is added for the certificate, ``.key`` is
                  added for the key.
:param host: the name of the host.  This can be used as an alternative
             for the `cn`.
:param cn: the `CN` to use.
N)rp  r   ©Úserializationz.crtz.keyÚwb©Úencodingr#  Úencryption_algorithm)rt  rT  rw  ÚopenrÃ   Úpublic_bytesÚEncodingÚPEMÚprivate_bytesÚPrivateFormatÚTraditionalOpenSSLÚNoEncryption)	Ú	base_pathÚhostrp  rs  rq  rw  Ú	cert_fileÚ	pkey_fileÚfs	            r   Úmake_ssl_devcertr‰  )  sê   € ð* ÑØˆÜ(¨BÑ/�J€Då<à�+˜TÐ"€IØ�+˜TÐ"€Iä	ˆi˜Ô	 !Ø	�‰�×!Ñ! -×"8Ñ"8×"<Ñ"<Ó=Ô>÷ 
ä	ˆi˜Ô	 !Ø	�‰Ø×ÑØ&×/Ñ/×3Ñ3Ø$×2Ñ2×EÑEØ%2×%?Ñ%?Ó%Að ð ô	
÷ 
ð ÐÐ÷ 
Õ	úç	Ô	ð ÐÐús   ­5CÁ6AC)Ã
C&Ã)
C9c            	     óš  • SSK n SSKn[        5       u  p#SSKJn  UR                  5       u  pVUR                  5       u  pxU R                  [        R                  U5        U R                  [        R                  U5        [        R                  " XRR                  UR                  R                  5      5        [        R                  " UUR                  UR                  R                  UR                  R                  UR!                  5       S95        [        R"                  " U5        [        R"                  " U5        [%        Xh5      n	U	$ )z:Generates an adhoc SSL context for the development server.r   Nrv  ry  )ÚatexitÚtempfilert  rT  rw  ÚmkstemprÝ   ÚosÚremoverÃ   r}  r~  r  r€  r�  r‚  rƒ  r¸   Úload_ssl_context)
r‹  rŒ  rs  rq  rw  Úcert_handler†  Úpkey_handler‡  Úctxs
             r   Úgenerate_adhoc_ssl_contextr”  U  só   € ãÛä(Ó*�J€Då<à%×-Ñ-Ó/Ñ€KØ%×-Ñ-Ó/Ñ€KØ
‡O�O”B—I‘I˜yÔ)Ø
‡O�O”B—I‘I˜yÔ)ä‡H‚Hˆ[×+Ñ+¨M×,BÑ,B×,FÑ,FÓGÔHÜ‡H‚HØØ×ÑØ"×+Ñ+×/Ñ/Ø ×.Ñ.×AÑAØ!.×!;Ñ!;Ó!=ð 	ð 	
ôô ‡H‚Hˆ[ÔÜ‡H‚Hˆ[ÔÜ
˜9Ó
0€CØ€Jr   c                óz   • Uc  [         R                  n[         R                  " U5      nUR                  X5        U$ )aÃ  Loads SSL context from cert/private key files and optional protocol.
Many parameters are directly taken from the API of
:py:class:`ssl.SSLContext`.

:param cert_file: Path of the certificate to use.
:param pkey_file: Path of the private key to use. If not given, the key
                  will be obtained from the certificate file.
:param protocol: A ``PROTOCOL`` constant from the :mod:`ssl` module.
    Defaults to :data:`ssl.PROTOCOL_TLS_SERVER`.
)r¡   ÚPROTOCOL_TLS_SERVERÚ
SSLContextÚload_cert_chain)r†  r‡  Úprotocolr“  s       r   r�  r�  s  s6   € ð ÑÜ×*Ñ*ˆä
�.Š.˜Ó
"€CØ×Ñ˜	Ô-Ø€Jr   c                óž   • U c1  [         R                  " [        [        R                  " 5       S   5      n [        U [        R                  5      $ )z?Checks if the given error (or the current one) is an SSL error.r   )ÚtÚcastrê   r�   rÖ   rŒ   r¡   ÚSSLError)rˆ   s    r   rö   rö   ˆ  s3   € à�}Ü—’”y¤#§,¢,£.°Ñ"3Ó4ˆÜ�eœSŸ\™\Ó*Ð*r   c                óÄ   • U R                  S5      (       a  [        R                  $ SU ;   a%  [        [        S5      (       a  [        R                  $ [        R
                  $ )zQReturn ``AF_INET4``, ``AF_INET6``, or ``AF_UNIX`` depending on
the host and port.zunix://Ú:ÚAF_INET6)rþ   rõ   ÚAF_UNIXrà   r   ÚAF_INET)r…  Úports     r   Úselect_address_familyr¤  �  sD   € ð ‡��y×!Ñ!Ü�~‰~ÐØ	�‹œ¤¨×4Ñ4Ü�‰ÐÜ�>‰>Ðr   c                ó.  • U[         :X  a1  [        R                  R                  U R	                  S5      S   5      $  [
        R                  " XU[
        R                  [
        R                  5      nUS   S   $ ! [
        R                   a    X4s $ f = f)zRReturn a fully qualified socket address that can be passed to
:func:`socket.bind`.ú://r¹   r   é   )
Úaf_unixrŽ  r‰   ÚabspathÚ	partitionrõ   ÚgetaddrinfoÚSOCK_STREAMÚIPPROTO_TCPÚgaierror)r…  r£  ÚfamilyÚress       r   Úget_sockaddrr±  ™  s„   € ð
 ”Óä�w‰w�‰˜tŸ~™~¨eÓ4°QÑ7Ó8Ð8ðÜ× Ò Ø˜¤× 2Ñ 2´F×4FÑ4Fó
ˆð
 ˆq‰6�!‰9Ðøô �?‰?ó ØˆzÒðús   ½5A: Á:BÂBc                ób  • U [         R                  :X  a  SOSn[         R                   " U [         R                  5       n UR                  US45        UR                  5       S   sSSS5        $ ! [         a$    U [         R                  :X  a  SOSs sSSS5        $ f = f! , (       d  f       g= f)z|Get the IP address of an external interface. Used when binding to
0.0.0.0 or ::1 to show a more useful URL.

:meta private:
zfd31:f903:5ab5:1::1z10.253.155.219i2ã  z::1ú	127.0.0.1Nr   )rõ   r   Ú
SOCK_DGRAMÚconnectrJ   Úgetsockname)r¯  r…  Úss      r   Úget_interface_ipr¸  ª  s“   € ð %+¬f¯o©oÓ$=Ñ ÐCS€Dä	�Š�vœv×0Ñ0Ô	1°Qð	GØ�I‰I�t˜U�mÔ$ð �}‰}‹˜qÑ!÷ 
2Ñ	1øô ó 	GØ"¤f§o¡oÓ5‘5¸;ÑF÷	 
2Ñ	1ð	Gú÷ 
2Õ	1ús/   ¾B Á A/ÁB Á/"BÂB ÂBÂB Â 
B.c                  ó®   ^ • \ rS rSrSrSrSr\rSr	    S               SU 4S jjjr
SS jrSSU 4S jjjr      SU 4S jjrSS	 jrS
rU =r$ )rd   i¼  zmA WSGI server that that handles one request at a time.

Use :func:`make_server` to create a server instance.
FTc                óø  >• Uc  [         nS[        U5      ;  a)  U R                  (       d  U R                  (       a  SUl        Xl        X l        X0l        XPl        [        X5      =U l
        n[        U[        U5      U5      n	U[        :X  aX  UcU  [        R                  " [         U	5      n	["        R$                  R'                  U	5      (       a  ["        R(                  " U	5        [*        TU ]Y  U	USS9  Uc"   U R/                  5         U R1                  5         OYU R5                  5         [H        RJ                  " Xx[H        RL                  5      U l$        U RH                  RO                  5       U l(        U[        :w  a  U RP                  S   U l        UbT  [S        U[T        5      (       a	  [W        U6 nOUS:X  a
  [Y        5       nUR[                  U RH                  SS9U l$        X`l.        OS U l.        SS K/nSUR`                  Rc                  S5       3U l2        g ! [2         a¿  n
U R5                  5         [7        U
R8                  [:        R<                  S9  U
R>                  [>        R@                  :X  aN  [7        SU S3[:        R<                  S9  [:        RB                  S:X  a  US	:X  a  [7        S
[:        R<                  S9  [:        RD                  " S5         S n
A
GNhS n
A
f[F         a    U R5                  5         e f = f)Nr¿   r¶   F)Úbind_and_activate)ÚfilezPort zp is in use by another program. Either identify and stop that program, or start the server with a different port.Údarwiniˆ  zPOn macOS, try searching for and disabling 'AirPlay Receiver' in System Settings.r   r/   T)Úserver_sider   z	Werkzeug/Úwerkzeug)3rb   Úvarsr‘   r’   r¿   r…  r£  rá   rë   r¤  Úaddress_familyr±  rG   r¨  r›  rœ  r   rŽ  r‰   ÚexistsÚunlinkrò   r<   Úserver_bindÚserver_activaterJ   Úserver_closeÚprintÚstrerrorr�   r�   ÚerrnoÚ
EADDRINUSEÚplatformÚexitr1  rõ   Úfromfdr¬  r¶  r˜   rŒ   Útupler�  r”  Úwrap_socketrŠ   Úimportlib.metadataÚmetadataÚversionrh   )r   r…  r£  rá   Úhandlerrë   rŠ   ÚfdrÁ  r˜   rL   Ú	importlibrø   s               €r   r<   ÚBaseWSGIServer.__init__Ç  st  ø€ ð ‰?Ü(ˆGð
 ¤T¨'£]Ó2Ø×× × 1× 1à'1ˆGÔ$àŒ	ØŒ	ØŒØ"4Ôä/DÀTÓ/PÐPˆÔ˜nÜ% d¬C°«I°~ÓFˆð œWÓ$¨©ÜŸVšV¤C¨Ó8ˆNä�w‰w�~‰~˜n×-Ñ-Ü—	’	˜.Ô)ô 	‰ÑØØØ#ð 	ñ 	
ð ‰:ðØ× Ñ Ô"Ø×$Ñ$Õ&ð: ×ÑÔô !Ÿ-š-¨¼F×<NÑ<NÓOˆDŒKØ"&§+¡+×"9Ñ"9Ó";ˆDÔàœWÓ$à×+Ñ+¨AÑ.ˆDŒIàÑ"Ü˜+¤u×-Ñ-Ü.°Ð<‘Ø Ó'Ü8Ó:�à%×1Ñ1°$·+±+È4Ð1ÐPˆDŒKØ6AÕà#ˆDÔã!à!*¨9×+=Ñ+=×+EÑ+EÀjÓ+QÐ*RÐSˆÕøôg ó ð ×!Ñ!Ô#Ü�a—j‘j¤s§z¡zÒ2à—7‘7œe×.Ñ.Ó.ÜØ ˜vð &!ð !ô !ŸZ™Zò	ô —|‘| xÓ/°D¸D³LÜðFä!$§¡òô —’˜—’ûÜ ó Ø×!Ñ!Ô#Øðús   Ã8 H È
K9È B4KËK9c                ó   • [        X/UQ76   g rg   r   )r   r-  r.  r$  s       r   r£   ÚBaseWSGIServer.log.  s   € ÜˆTÐ"˜TÔ"r   c                óŒ   >•  [         TU ]  US9  U R                  5         g ! [         a     Nf = f! U R                  5         f = f)N)Úpoll_interval)rò   Úserve_foreverÚKeyboardInterruptrÆ  )r   rÚ  rø   s     €r   rÛ  ÚBaseWSGIServer.serve_forever1  sI   ø€ ð	 Ü‰GÑ!°Ð!Ñ>ð ×ÑÕøô !ó 	Ùð	ûð ×ÑÕús   ƒ! ¡
.«1 ­.®1 ±Ac                óF   >• U R                   (       a  e [        TU ]	  X5      $ rg   )rë   rò   Úhandle_error)r   Úrequestr‹   rø   s      €r   rß  ÚBaseWSGIServer.handle_error9  s!   ø€ ð ×"×"Øä‰wÑ# GÓ<Ð<r   c                ó’  • Sn[        USS5      nU/nU R                  [        :X  a  UR                  SU R                   35        OçU R
                  c  SOSnU R                  nU R                  S;   aŠ  UR                  S	U R                   S
35        U R                  S:X  a  Sn[        [        R                  5      nOSn[        [        R                  5      nUR                  SU SU SU R                   35        SU;   a  SU S3nUR                  SU SU SU R                   35        [        SSR                  U5      5        g)z<Show information about the address when starting the server.zvWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.r  r  z * Running on Nrl   rm   >   ú::ú0.0.0.0z * Running on all addresses (Ú)rä  r³  z[::1]r¦  rŸ  Ú[Ú]r  r+  )r  rÁ  r¨  Úappendr…  rŠ   r¸  rõ   r¢  r   r£  r   Újoin)r   Údev_warningÚmessagesr�   Údisplay_hostnameÚ	localhosts         r   Úlog_startupÚBaseWSGIServer.log_startupA  s5  € ðAð 	ô " +¨v°uÓ=ˆØ�=ˆà×Ñ¤'Ó)Ø�O‰O˜n¨T¯Y©Y¨KÐ8Õ9à#×/Ñ/Ñ7‘V¸WˆFØ#Ÿy™yÐà�y‰yÐ-Ó-Ø—‘Ð"?ÀÇ	Á	¸{È!Ð LÔMà—9‘9 	Ó)Ø +�IÜ'7¼¿¹Ó'GÑ$à '�IÜ'7¼¿¹Ó'HÐ$à—‘ .°°¸¸I¸;ÀaÈÏ	É	À{Ð SÔTàÐ&Ó&Ø%&Ð'7Ð&8¸Ð#:Ð à�O‰O˜n¨V¨H°CÐ8HÐ7IÈÈ4Ï9É9È+ÐVÔWäˆV�T—Y‘Y˜xÓ(Õ)r   )	rh   rÁ  rá   r…  rë   r£  r˜   rõ   rŠ   )NFNN)r…  r   r£  rG   rá   r0   rÓ  útype[WSGIRequestHandler] | Nonerë   r]   rŠ   ú_TSSLContextArg | NonerÔ  ú
int | Noner    r[   r3  )g      à?)rÚ  Úfloatr    r[   )rà  r!   r‹   útuple[str, int] | strr    r[   r0  )r"   r#   r$   r%   r`   r‘   r’   ÚLISTEN_QUEUEÚrequest_queue_sizeÚallow_reuse_addressr<   r£   rÛ  rß  rî  r&   r9  ©rø   s   @r   rd   rd   ¼  sÑ   ø† ñð
 €KØ€LØ%ÐØÐð 48Ø#(Ø.2ØðeTàðeTð ðeTð ð	eTð
 1ðeTð !ðeTð ,ðeTð ðeTð 
÷eTð eTôN#÷ ñ  ð=Øð=Ø.Cð=à	÷=÷ *ò  *r   rd   c                  ó    • \ rS rSrSrSrSrSrg)ÚThreadedWSGIServerid  zzA WSGI server that handles concurrent requests in separate
threads.

Use :func:`make_server` to create a server instance.
Tr   N)r"   r#   r$   r%   r`   r‘   Údaemon_threadsr&   r   r   r   rú  rú  d  s   † ñð €KØƒNr   rú  c                  ód   ^ • \ rS rSrSrSr     S                 SU 4S jjjrSrU =r$ )ÚForkingWSGIServerio  zƒA WSGI server that handles concurrent requests in separate forked
processes.

Use :func:`make_server` to create a server instance.
Tc	           	     ób   >• [         (       d  [        S5      e[        T	U ]  XX5XgU5        X@l        g )Nz'Your platform does not support forking.)Úcan_forkrI   rò   r<   Úmax_children)
r   r…  r£  rá   Ú	processesrÓ  rë   rŠ   rÔ  rø   s
            €r   r<   ÚForkingWSGIServer.__init__x  s1   ø€ ÷ ŠxÜÐFÓGÐGä‰Ñ˜ SÐ3EÐTVÔWØ%Õr   )r   )é(   NFNN)r…  r   r£  rG   rá   r0   r  rG   rÓ  rð  rë   r]   rŠ   rñ  rÔ  rò  r    r[   )	r"   r#   r$   r%   r`   r’   r<   r&   r9  rø  s   @r   rý  rý  o  s‚   ø† ñð €Lð Ø37Ø#(Ø.2Øð&àð&ð ð&ð ð	&ð
 ð&ð 1ð&ð !ð&ð ,ð&ð ð&ð 
÷&ö &r   rý  c	                óœ   • U(       a  US:”  a  [        S5      eU(       a  [        XX%XgUS9$ US:”  a  [        U UUUUUUUS9$ [        XX%XgUS9$ )a  Create an appropriate WSGI server instance based on the value of
``threaded`` and ``processes``.

This is called from :func:`run_simple`, but can be used separately
to have access to the server object, such as to run it in a separate
thread.

See :func:`run_simple` for parameter docs.
r   z4Cannot have a multi-thread and multi-process server.©rÔ  )rI   rú  rý  rd   )	r…  r£  rá   Úthreadedr  Úrequest_handlerrë   rŠ   rÔ  s	            r   Úmake_serverr  Š  s{   € ö( �I “MÜÐOÓPÐPæÜ!Ø˜Ð.@ÐRTñ
ð 	
ð �1ƒ}Ü ØØØØØØØØñ	
ð 		
ô Ø�CÐ*<Èbñð r   c                 óF   • [         R                  R                  S5      S:H  $ )zeCheck if the server is running as a subprocess within the
Werkzeug reloader.

.. versionadded:: 0.10
ÚWERKZEUG_RUN_MAINÚtrue)rŽ  r¨   rž   r   r   r   Úis_running_from_reloaderr  ·  s   € ô �:‰:�>‰>Ð-Ó.°&Ñ8Ð8r   c                óì  • [        U[        5      (       d  [        S5      eU(       a  SSKJn  U" X-5      nU(       a'  SSKJn  U" X%S9nUR                  R                  U 5        [        5       (       d  SnO[        [        R                  S   5      n[        U UUU
UUUUUS9	nUR                  R                  S	5        [        UR!                  5       5      [        R                  S'   [        5       (       d&  UR#                  5         [%        S
['        SS5      5        U(       a,  SSKJn   U" UR,                  UUUU	S9  UR/                  5         gUR-                  5         g! UR/                  5         f = f)aã  Start a development server for a WSGI application. Various
optional features can be enabled.

.. warning::

    Do not use the development server when deploying to production.
    It is intended for use only during local development. It is not
    designed to be particularly efficient, stable, or secure.

:param hostname: The host to bind to, for example ``'localhost'``.
    Can be a domain, IPv4 or IPv6 address, or file path starting
    with ``unix://`` for a Unix socket.
:param port: The port to bind to, for example ``8080``. Using ``0``
    tells the OS to pick a random free port.
:param application: The WSGI application to run.
:param use_reloader: Use a reloader process to restart the server
    process when files are changed.
:param use_debugger: Use Werkzeug's debugger, which will show
    formatted tracebacks on unhandled exceptions.
:param use_evalex: Make the debugger interactive. A Python terminal
    can be opened for any frame in the traceback. Some protection is
    provided by requiring a PIN, but this should never be enabled
    on a publicly visible server.
:param extra_files: The reloader will watch these files for changes
    in addition to Python modules. For example, watch a
    configuration file.
:param exclude_patterns: The reloader will ignore changes to any
    files matching these :mod:`fnmatch` patterns. For example,
    ignore cache files.
:param reloader_interval: How often the reloader tries to check for
    changes.
:param reloader_type: The reloader to use. The ``'stat'`` reloader
    is built in, but may require significant CPU to watch files. The
    ``'watchdog'`` reloader is much more efficient but requires
    installing the ``watchdog`` package first.
:param threaded: Handle concurrent requests using threads. Cannot be
    used with ``processes``.
:param processes: Handle concurrent requests using up to this number
    of processes. Cannot be used with ``threaded``.
:param request_handler: Use a different
    :class:`~BaseHTTPServer.BaseHTTPRequestHandler` subclass to
    handle requests.
:param static_files: A dict mapping URL prefixes to directories to
    serve static files from using
    :class:`~werkzeug.middleware.SharedDataMiddleware`.
:param passthrough_errors: Don't catch unhandled exceptions at the
    server level, let the server crash instead. If ``use_debugger``
    is enabled, the debugger will still catch such errors.
:param ssl_context: Configure TLS to serve over HTTPS. Can be an
    :class:`ssl.SSLContext` object, a ``(cert_file, key_file)``
    tuple to create a typical context, or the string ``'adhoc'`` to
    generate a temporary self-signed certificate.

.. versionchanged:: 2.1
    Instructions are shown for dealing with an "address already in
    use" error.

.. versionchanged:: 2.1
    Running on ``0.0.0.0`` or ``::`` shows the loopback IP in
    addition to a real IP.

.. versionchanged:: 2.1
    The command-line interface was removed.

.. versionchanged:: 2.0
    Running on ``0.0.0.0`` or ``::`` shows a real IP address that
    was bound as well as a warning not to run the development server
    in production.

.. versionchanged:: 2.0
    The ``exclude_patterns`` parameter was added.

.. versionchanged:: 0.15
    Bind to a Unix socket by passing a ``hostname`` that starts with
    ``unix://``.

.. versionchanged:: 0.10
    Improved the reloader and added support for changing the backend
    through the ``reloader_type`` parameter.

.. versionchanged:: 0.9
    A command-line interface was added.

.. versionchanged:: 0.8
    ``ssl_context`` can be a tuple of paths to the certificate and
    private key files.

.. versionchanged:: 0.6
    The ``ssl_context`` parameter was added.

.. versionchanged:: 0.5
   The ``static_files`` and ``passthrough_errors`` parameters were
   added.
zport must be an integerr   )ÚSharedDataMiddleware)ÚDebuggedApplication)ÚevalexNÚWERKZEUG_SERVER_FDr  Tr  zPress CTRL+C to quitr  )Úrun_with_reloader)Úextra_filesÚexclude_patternsÚintervalÚreloader_type)rŒ   rG   rX  Úmiddleware.shared_datar  Údebugr  Útrusted_hostsrè  r  rŽ  r¨   r  rõ   Úset_inheritabler   Úfilenorî  r   r  Ú	_reloaderr  rÛ  rÆ  )Úhostnamer£  ÚapplicationÚuse_reloaderÚuse_debuggerÚ
use_evalexr  r  Úreloader_intervalr  r  r  r  Ústatic_filesrë   rŠ   r  r  rÔ  Úsrvr  s                        r   Ú
run_simpler%  À  s@  € ô` �dœC× Ñ ÜÐ1Ó2Ð2æÝ@á*¨;ÓEˆæÝ.á)¨+ÑIˆð 	×!Ñ!×(Ñ(¨Ô2ä#×%Ñ%Ø‰ä”—‘Ð0Ñ1Ó2ˆä
ØØØØØØØØØñ
€Cð ‡J�J×Ñ˜tÔ$Ü'*¨3¯:©:«<Ó'8„B‡J�JÐ#Ñ$ä#×%Ñ%Ø�‰ÔÜˆV”[Ð!7¸ÓBÔCæÝ0ð		ÙØ×!Ñ!Ø'Ø!1Ø*Ø+òð ×ÑÕà×ÑÕøð ×ÑÕús   Ä+E! Å!E3)rª   r   rC  r   r    r   rg   )rp  ú
str | Noner    z2tuple[Certificate, RSAPrivateKeyWithSerialization])NN)r„  r   r…  r&  rp  r&  r    ztuple[str, str])r    r.   )r†  r   r‡  r&  r™  rò  r    r.   )rˆ   zException | Noner    r]   )r…  r   r£  rG   r    úsocket.AddressFamily)r…  r   r£  rG   r¯  r'  r    rô  )r¯  r'  r    r   )Fr   NFNN)r…  r   r£  rG   rá   r0   r  r]   r  rG   r  rð  rë   r]   rŠ   rñ  rÔ  rò  r    rd   r\   )FFTNNr   ÚautoFr   NNFN)"r  r   r£  rG   r  r0   r  r]   r   r]   r!  r]   r  út.Iterable[str] | Noner  r)  r"  rG   r  r   r  r]   r  rG   r  rð  r#  z'dict[str, str | tuple[str, str]] | Nonerë   r]   rŠ   rñ  r    r[   )Pr`   Ú
__future__r   rÉ  ÚiorŽ  rÛ   rõ   Úsocketserverr�   Útypingr›  r   re  r   r   Úhttp.serverr   r   Úurllib.parser	   r
   Ú	_internalr   r   Ú
exceptionsr   Úurlsr   r¡   rô   rÚ   ÚSSLEOFErrorr   r4  rW  r   rB  r   Ú
__import__rà   rÿ  r+   r¡  r¨  r¤   rõ  ÚOptionalÚUnionrÎ  r   ÚLiteralÚ_TSSLContextArgÚTYPE_CHECKINGÚ_typeshed.wsgir0   r1   Ú-cryptography.hazmat.primitives.asymmetric.rsar2   Úcryptography.x509r3   Ú	RawIOBaser5   rb   r  rt  r‰  r”  r�  rö   r¤  r±  r¸  rd   ÚThreadingMixInrú  rý  r  r  r%  r   r   r   Ú<module>r?     sì  ðòõ #ã Û 	Û 	Û Û Û Û 
Û Ý #Ý Ý Ý .Ý "Ý  Ý !å Ý +Ý +Ý ðBÛð 	Ø�‰Ø�‰ð>ÐÐ:ó ð" €à‡7�7ˆdƒ?ðÙ�:Ôñ �2�vÓ€æØ×,Ñ,�L÷ñ ðØ�n‰n€Gð €à—*‘*Ø‡G�GÐ˜e C¨¯©°C©Ð$8Ñ9¸1¿9¹9ÀWÑ;MÐMÑNñ€ð ‡?‡?Ý.Ý.õõ .ô;�R—\‘\ô ;ô|D
Ð/ô D
ôN
ð( ð.Øð.à7õ.ðd ?Cð) Øð) Ø$ð) Ø1;ð) àõ) ôXð> JNðØðØ)ðØ<Fðàõö*+ôðØ
ðØðØ"6ðàôô""ô$e*�Zô e*ôP˜×4Ñ4°nô ô&˜ nô &ð> ØØ7;Ø$Ø*.Øð*Ø
ð*à
ð*ð 
ð*ð ð	*ð
 ð*ð 5ð*ð ð*ð (ð*ð 	ð*ð õ*ôZ9ð ØØØ*.Ø/3ØØØØØ7;Ø<@Ø$Ø*.ð!eØðeà
ðeð !ðeð ð	eð
 ðeð ðeð (ðeð -ðeð ðeð ðeð ðeð ðeð 5ðeð :ðeð ðeð  (ð!eð" 
ö#eøðe ó 
B÷ñ ñ ‹+€CØ!0°&·.±.Ð AÓð
Bûð" ó Ø‹ðûð ó ØƒGðús6   Á-"I  Â"I, ÃI; É %I)É(I)É,I8É7I8É;JÊJ