§
    $xÅj‰5  ã                  ó  — U d dl m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	Z	d dl
Z
d dlZd dlZd dlZd dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ erLd d
lm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. e"e$z  e(z  e&z  e z  e.z  e*z  e,z  Z/de0d<   e	j1        e	j2        fZ3ej        dk    re3e	j4        fz  Z3 ej5        d¦  «        Z6 G d„ d¦  «        Z7 G d„ d¦  «        Z8dS )é    )ÚannotationsN)Ú	GeneratorÚSequence)Ú
formatdate)Ú	FrameType)ÚTYPE_CHECKINGÚ	TypeAlias)Ústyle)Úasyncio_run)ÚSTARTUP_FAILUREÚConfig)ÚAutoZttpProtocol)ÚH11Protocol)ÚHttpToolsProtocol)ÚZttpH2Protocol)ÚZttpProtocol)ÚWebSocketProtocol)ÚWebSocketsSansIOProtocol)Ú
WSProtocolr	   Ú	ProtocolsÚwin32zuvicorn.errorc                  ó   — e Zd ZdZdd„ZdS )ÚServerStatezP
    Shared servers state that is available between all protocol instances.
    ÚreturnÚNonec                ón   — d| _         t          ¦   «         | _        t          ¦   «         | _        g | _        d S ©Nr   )Útotal_requestsÚsetÚconnectionsÚtasksÚdefault_headers©Úselfs    ú?C:\Projects\Historical\venv\Lib\site-packages\uvicorn/server.pyÚ__init__zServerState.__init__<   s/   € ØˆÔÝ+.©5¬5ˆÔÝ.1©e¬eˆŒ
Ø:<ˆÔÐÐó    N©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r&   © r'   r%   r   r   7   s2   € € € € € ðð ð=ð =ð =ð =ð =ð =r'   r   c                  ó´   — e Zd Zdd„Zej        d d„¦   «         Zd!d"d„Zd!d"d„Zd!d"d„Z	d!d"d„Z
d#d„Zd$d„Zd%d„Zd!d"d„Zd$d„Zej        d&d„¦   «         Zd'd„ZdS )(ÚServerÚconfigr   r   r   c                ó€   — || _         t          ¦   «         | _        d| _        d| _        d| _        d| _        g | _        d S )NFg        )r0   r   Úserver_stateÚstartedÚshould_exitÚ
force_exitÚlast_notifiedÚ_captured_signals)r$   r0   s     r%   r&   zServer.__init__D   sA   € ØˆŒÝ'™MœMˆÔàˆŒØ ˆÔØˆŒØ ˆÔà,.ˆÔÐÐr'   ú
int | Nonec                óv   — | j         j        €d S | j         j        t          j        d| j         j        ¦  «        z   S r   )r0   Úlimit_max_requestsÚrandomÚrandintÚlimit_max_requests_jitterr#   s    r%   r:   zServer.limit_max_requestsO   s3   € àŒ;Ô)Ð1Ø�4ØŒ{Ô-µ´¸qÀ$Ä+ÔBgÑ0hÔ0hÑhÐhr'   NÚsocketsúlist[socket.socket] | Nonec                óz   — t          |                      |¬¦  «        | j                             ¦   «         ¬¦  «        S )N©r>   )Úloop_factory)r   Úserver0   Úget_loop_factory©r$   r>   s     r%   Úrunz
Server.runU   s1   € Ý˜4Ÿ:š:¨g˜:Ñ6Ô6ÀTÄ[×EaÒEaÑEcÔEcÐdÑdÔdÐdr'   c              ƒ  óš   K  — |                       ¦   «         5  |                      |¦  «        ƒ d {V —† d d d ¦  «         d S # 1 swxY w Y   d S ©N)Úcapture_signalsÚ_serverE   s     r%   rC   zServer.serveX   s    è è € Ø×!Ò!Ñ#Ô#ð 	'ð 	'Ø—+’+˜gÑ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   —A Á AÁAc              ƒ  óL  K  — t          j        ¦   «         }| j        }|j        s|                     ¦   «          |                     |¦  «        | _        d}dt          dd¬¦  «        z   dz   }t           	                    ||d|i¬¦  «         |  
                    |¬	¦  «        ƒ d {V —† | j        s|                      ¦   «         ƒ d {V —† | j        rV|                      |¬	¦  «        ƒ d {V —† d
}dt          dd¬¦  «        z   dz   }t           	                    ||d|i¬¦  «         d S d S )NzStarted server process [%d]zStarted server process [z%dÚcyan)Úfgú]Úcolor_message©ÚextrarA   zFinished server process [%d]zFinished server process [)ÚosÚgetpidr0   ÚloadedÚloadÚlifespan_classÚlifespanr
   ÚloggerÚinfoÚstartupr4   Ú	main_loopr3   Úshutdown)r$   r>   Ú
process_idr0   ÚmessagerO   s         r%   rJ   zServer._serve\   sW  è è € Ý”Y‘[”[ˆ
à”ˆØŒ}ð 	Ø�KŠK‰MŒMˆMà×-Ò-¨fÑ5Ô5ˆŒà/ˆØ2µU¸4ÀFÐ5KÑ5KÔ5KÑKÈcÑQˆÝ�Š�G˜Z°ÀÐ/OˆÑPÔPÐPà�lŠl 7ˆlÑ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔð 	#Ø—.’.Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØŒ<ð 	UØ—-’-¨�-Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0à4ˆGØ7½%ÀÈÐ:PÑ:PÔ:PÑPÐSVÑVˆMÝ�KŠK˜ °OÀ]Ð3SˆKÑTÔTÐTÐTÐTð	Uð 	Ur'   c              ƒ  óä  ‡ ‡K  — ‰ j                              ¦   «         ƒ d {V —† ‰ j         j        rt          j        t
          ¦  «         ‰ j        Š	 ddˆˆ fd„}t          j        ¦   «         }|�†dd„}g ‰ _	        |D ]t}t          j        ¦   «         d	k    }‰j        d
k    r|r ||¦  «        }|                     ||‰j        ‰j        ¬¦  «        ƒ d {V —†}‰ j	                             |¦  «         Œu|}�nÜ‰j        �rt%          j        ‰j        t$          j        t$          j        ¦  «        }|                     ||‰j        ‰j        ¬¦  «        ƒ d {V —†}|j        €J ‚|j        }|g‰ _	        �nc‰j        �¥d}	t0          j                             ‰j        ¦  «        rt1          j        ‰j        ¦  «        j        }	|                     |‰j        ‰j        ‰j        ¬¦  «        ƒ d {V —†}t1          j        ‰j        |	¦  «         |j        €J ‚|j        }|g‰ _	        n·	 |                     |‰j        ‰j         ‰j        ‰j        ¬¦  «        ƒ d {V —†}ni# tB          $ r\}
tD           #                    |
¦  «         ‰ j          $                    ¦   «         ƒ d {V —† t          j        t
          ¦  «         Y d }
~
nd }
~
ww xY w|j        €J ‚|j        }|g‰ _	        |€‰  %                    |¦  «         n	 d‰ _&        d S )NÚ_loopú asyncio.AbstractEventLoop | Noner   úasyncio.Protocolc                óT   •— ‰                      ‰‰j        ‰j        j        | ¬¦  «        S )N)r0   r2   Ú	app_stater`   )Úhttp_protocol_classr2   rW   Ústate)r`   r0   r$   s    €€r%   Úcreate_protocolz'Server.startup.<locals>.create_protocolz   s6   ø€ ð ×-Ò-ØØ!Ô.Øœ-Ô-Øð	 .ñ ô ð r'   Úsockúsocket.SocketTypec                óp   — ddl m} |                      t          j        ¦   «         ¦  «        } ||¦  «        S )Nr   )Ú	fromshare)Úsocketrk   ÚsharerR   rS   )rh   rk   Ú	sock_datas      r%   Ú_share_socketz%Server.startup.<locals>._share_socket‹   s=   € ð
 -Ð,Ð,Ð,Ð,Ð,à ŸJšJ¥r¤y¡{¤{Ñ3Ô3�	Ø �y Ñ+Ô+Ð+r'   ÚWindowsé   )rh   ÚsslÚbacklogi¶  )Úpathrr   rs   )ÚhostÚportrr   rs   TrH   )r`   ra   r   rb   )rh   ri   r   ri   )'rW   rZ   r4   ÚsysÚexitr   r0   ÚasyncioÚget_running_loopÚserversÚplatformÚsystemÚworkersÚcreate_serverrr   rs   ÚappendÚfdrl   ÚfromfdÚAF_UNIXÚSOCK_STREAMr>   ÚudsrR   rt   ÚexistsÚstatÚst_modeÚcreate_unix_serverÚchmodru   rv   ÚOSErrorrX   Úerrorr\   Ú_log_started_messager3   )r$   r>   rg   Úloopro   rh   Ú
is_windowsÚserverÚ	listenersÚ	uds_permsÚexcr0   s   `          @r%   rZ   zServer.startups   s“  øøè è € ØŒm×#Ò#Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ=Ô$ð 	&ÝŒH•_Ñ%Ô%Ð%à”ˆð 7;ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô'Ñ)Ô)ˆð Ðð,ð ,ð ,ð ,ð >@ˆDŒLØð ,ð ,�Ý%œ_Ñ.Ô.°)Ò;�
Ø”> AÒ%Ð%¨*Ð%Ø(˜=¨Ñ.Ô.�DØ#×1Ò1°/ÈÐRXÔR\ÐflÔftÐ1ÑuÔuÐuÐuÐuÐuÐuÐu�Ø”×#Ò# FÑ+Ô+Ð+Ð+ØˆI‰IàŒYÐ"å”= ¤­F¬N½FÔ<NÑOÔOˆDØ×-Ò-¨oÀDÈfÌjÐbhÔbpÐ-ÑqÔqÐqÐqÐqÐqÐqÐqˆFØ”>Ð-Ð-Ð-ØœˆIØ"˜8ˆDŒL‰LàŒZÐ#àˆIÝŒw�~Š~˜fœjÑ)Ô)ð 8ÝœG F¤JÑ/Ô/Ô7�	Ø×2Ò2Ø f¤j°f´jÈ&Ì.ð 3ñ ô ð ð ð ð ð ð ˆFõ ŒH�V”Z Ñ+Ô+Ð+Ø”>Ð-Ð-Ð-ØœˆIØ"˜8ˆDŒLˆLð*Ø#×1Ò1Ø#ØœØœØœ
Ø"œNð  2ñ  ô  ð ð ð ð ð ð ��øõ ð *ð *ð *Ý—’˜SÑ!Ô!Ð!Ø”m×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ý”�Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)øøøøð*øøøð
 ”>Ð-Ð-Ð-ØœˆIØ"˜8ˆDŒLàˆ?Ø×%Ò% iÑ0Ô0Ð0Ð0ð àˆŒˆˆs   È4I É
J5ÉAJ0Ê0J5r‘   úSequence[socket.SocketType]c                óþ  — | j         }|j        �7|d         }t                               d|                     ¦   «         ¦  «         d S |j        �"t                               d|j        ¦  «         d S d}|j        €dn|j        }d|v rd}|j        }|dk    r |d                              ¦   «         d         }|j        rd	nd
}d|› d�}dt          |d¬¦  «        z   dz   }	t                               ||||d|	i¬¦  «         d S )Nr   z3Uvicorn running on socket %s (Press CTRL+C to quit)z8Uvicorn running on unix socket %s (Press CTRL+C to quit)z
%s://%s:%dz0.0.0.0ú:z%s://[%s]:%drq   ÚhttpsÚhttpzUvicorn running on z (Press CTRL+C to quit)T)ÚboldrO   rP   )
r0   r�   rX   rY   Úgetsocknamer…   ru   rv   rr   r
   )
r$   r‘   r0   rh   Úaddr_formatru   rv   Úprotocol_namer^   rO   s
             r%   r�   zServer._log_started_messageÏ   s<  € Ø”ˆàŒ9Ð Ø˜Q”<ˆDÝ�KŠKØEØ× Ò Ñ"Ô"ñô ð ð ð ð
 ŒZÐ#Ý�KŠKÐRÐTZÔT^Ñ_Ô_Ð_Ð_Ð_ð 'ˆKØ &¤Ð 3�9�9¸¼ˆDØ�dˆ{ˆ{à,�à”;ˆDØ�qŠyˆyØ  ”|×/Ò/Ñ1Ô1°!Ô4�à'-¤zÐ=˜G˜G°vˆMØP¨KÐPÐPÐPˆGØ1µE¸+ÈDÐ4QÑ4QÔ4QÑQÐTmÑmˆMÝ�KŠKØØØØØ&¨Ð6ð ñ ô ð ð ð r'   c              ƒ  óÎ   K  — d}|                       |¦  «        ƒ d {V —†}|sC|dz  }|dz  }t          j        d¦  «        ƒ d {V —† |                       |¦  «        ƒ d {V —†}|¯Ad S d S )Nr   rq   i / çš™™™™™¹?)Úon_tickry   Úsleep)r$   Úcounterr4   s      r%   r[   zServer.main_loopò   s¬   è è € ØˆØ ŸLšL¨Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1ˆØð 	6Ø�q‰LˆGØ Ñ&ˆGÝ”- Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø $§¢¨WÑ 5Ô 5Ð5Ð5Ð5Ð5Ð5Ð5ˆKð	 ð 	6ð 	6ð 	6ð 	6ð 	6r'   r¡   ÚintÚboolc              ƒ  óô  K  — |dz  dk    r­t          j         ¦   «         }t          |d¬¦  «                             ¦   «         }| j        j        rd|fg}ng }|| j        j        z   | j        _        | j        j        �>|| j	        z
  | j        j
        k    r&|| _	        | j                             ¦   «         ƒ d {V —† | j        rdS | j        }|�-| j        j        |k    rt                               d|¦  «         dS dS )Né
   r   T)Úusegmts   datez:Maximum request limit of %d exceeded. Terminating process.F)Útimer   Úencoder0   Údate_headerÚencoded_headersr2   r"   Úcallback_notifyr6   Útimeout_notifyr4   r:   r   rX   rY   )r$   r¡   Úcurrent_timeÚcurrent_dater©   Úmax_requestss         r%   rŸ   zServer.on_tickû   s  è è € à�R‰<˜1ÒÐÝœ9™;œ;ˆLÝ% l¸4Ð@Ñ@Ô@×GÒGÑIÔIˆLàŒ{Ô&ð !Ø '¨Ð6Ð7��à �à0;¸d¼kÔ>YÑ0YˆDÔÔ-ð Œ{Ô*Ð6Ø $Ô"4Ñ4°t´{Ô7QÒQÐQØ)5�DÔ&Øœ+×5Ò5Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð Ôð 	Ø�4àÔ.ˆØÐ#¨Ô(9Ô(HÈLÒ(XÐ(XÝ�KŠKÐTÐVbÑcÔcÐcØ�4àˆur'   c              ƒ  óà  K  — t                                d¦  «         | j        D ]}|                     ¦   «          Œ|pg D ]}|                     ¦   «          Œt	          | j        j        ¦  «        D ]}|                     ¦   «          Œt          j	        d¦  «        ƒ d {V —† 	 t          j
        |                      ¦   «         | j        j        ¬¦  «        ƒ d {V —† nl# t          j        $ rZ t                                dt!          | j        j        ¦  «        ¦  «         | j        j        D ]}|                     d¬¦  «         ŒY nw xY w| j        s!| j                             ¦   «         ƒ d {V —† d S d S )NzShutting downrž   )Útimeoutz=Cancel %s running task(s), timeout graceful shutdown exceededz2Task cancelled, timeout graceful shutdown exceeded)Úmsg)rX   rY   r{   ÚcloseÚlistr2   r    r\   ry   r    Úwait_forÚ_wait_tasks_to_completer0   Útimeout_graceful_shutdownÚTimeoutErrorrŒ   Úlenr!   Úcancelr5   rW   )r$   r>   r�   rh   Ú
connectionÚts         r%   r\   zServer.shutdown  sÙ  è è € Ý�Š�OÑ$Ô$Ð$ð ”lð 	ð 	ˆFØ�LŠL‰NŒNˆNˆNØ�M˜rð 	ð 	ˆDØ�JŠJ‰LŒLˆLˆLõ ˜tÔ0Ô<Ñ=Ô=ð 	"ð 	"ˆJØ×ÒÑ!Ô!Ð!Ð!ÝŒm˜CÑ Ô Ð Ð Ð Ð Ð Ð Ð ð	SÝÔ"Ø×,Ò,Ñ.Ô.ØœÔ=ðñ ô ð ð ð ð ð ð ð ð øõ Ô#ð 	Sð 	Sð 	SÝ�LŠLØOÝ�DÔ%Ô+Ñ,Ô,ñô ð ð Ô&Ô,ð Sð S�Ø—’ÐQ�ÑRÔRÐRÐRðSð Sð	Søøøð Œð 	+Ø”-×(Ò(Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð	+ð 	+s   Â!8C ÃA&EÅEc              ƒ  ó  K  — | j         j        rc| j        s\d}t                               |¦  «         | j         j        r4| j        s-t          j        d¦  «        ƒ d {V —† | j         j        r| j        ¯-| j         j        rc| j        s\d}t                               |¦  «         | j         j        r4| j        s-t          j        d¦  «        ƒ d {V —† | j         j        r| j        ¯-| j        D ]}| 	                    ¦   «         ƒ d {V —† Œd S )Nz8Waiting for connections to close. (CTRL+C to force quit)rž   z@Waiting for background tasks to complete. (CTRL+C to force quit))
r2   r    r5   rX   rY   ry   r    r!   r{   Úwait_closed)r$   r²   r�   s      r%   r¶   zServer._wait_tasks_to_complete9  sL  è è € àÔÔ(ð 	)°´ð 	)ØLˆCÝ�KŠK˜ÑÔÐØÔ#Ô/ð )¸¼ð )Ý”m CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð Ô#Ô/ð )¸¼ð )ð ÔÔ"ð 	)¨4¬?ð 	)ØTˆCÝ�KŠK˜ÑÔÐØÔ#Ô)ð )°$´/ð )Ý”m CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð Ô#Ô)ð )°$´/ð )ð ”lð 	'ð 	'ˆFØ×$Ò$Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð	'ð 	'r'   úGenerator[None, None, None]c              #  ó²  ‡ K  — t          j        ¦   «         t          j        ¦   «         urd V — d S ˆ fd„t          D ¦   «         }	 d V — |                     ¦   «         D ]\  }}t          j        ||¦  «         Œn4# |                     ¦   «         D ]\  }}t          j        ||¦  «         Œw xY wt          ‰ j        ¦  «        D ]}t          j        |¦  «         Œd S )Nc                óF   •— i | ]}|t          j         |‰j        ¦  «        “ŒS r-   )ÚsignalÚhandle_exit)Ú.0Úsigr$   s     €r%   ú
<dictcomp>z*Server.capture_signals.<locals>.<dictcomp>S  s*   ø€ ÐbÐbÐbÈ3˜S¥&¤-°°TÔ5EÑ"FÔ"FÐbÐbÐbr'   )	Ú	threadingÚcurrent_threadÚmain_threadÚHANDLED_SIGNALSÚitemsrÂ   Úreversedr7   Úraise_signal)r$   Úoriginal_handlersrÅ   ÚhandlerÚcaptured_signals   `    r%   rI   zServer.capture_signalsK  s  øè è € õ Ô#Ñ%Ô%­YÔ-BÑ-DÔ-DÐDÐDØˆEˆEˆEØˆFð cÐbÐbÐbÕRaÐbÑbÔbÐð	,ØˆEˆEˆEà 1× 7Ò 7Ñ 9Ô 9ð ,ð ,‘��WÝ”˜c 7Ñ+Ô+Ð+Ð+ð,øÐ 1× 7Ò 7Ñ 9Ô 9ð ,ð ,‘��WÝ”˜c 7Ñ+Ô+Ð+Ð+ð,øøøõ
  (¨Ô(>Ñ?Ô?ð 	1ð 	1ˆOÝÔ Ñ0Ô0Ð0Ð0ð	1ð 	1s   ÁA8 Á81B)rÅ   ÚframeúFrameType | Nonec                óˆ   — | j                              |¦  «         | j        r|t          j        k    r	d| _        d S d| _        d S )NT)r7   r€   r4   rÂ   ÚSIGINTr5   )r$   rÅ   rÑ   s      r%   rÃ   zServer.handle_exit_  sI   € ØÔ×%Ò% cÑ*Ô*Ð*ØÔð 	$ ¥v¤}Ò 4Ð 4Ø"ˆDŒOˆOˆOà#ˆDÔÐÐr'   )r0   r   r   r   )r   r8   rH   )r>   r?   r   r   )r‘   r”   r   r   r(   )r¡   r¢   r   r£   )r   r¿   )rÅ   r¢   rÑ   rÒ   r   r   )r)   r*   r+   r&   Ú	functoolsÚcached_propertyr:   rF   rC   rJ   rZ   r�   r[   rŸ   r\   r¶   Ú
contextlibÚcontextmanagerrI   rÃ   r-   r'   r%   r/   r/   C   sg  € € € € € ð	/ð 	/ð 	/ð 	/ð Ôðið ið iñ Ôðið
eð eð eð eð eð'ð 'ð 'ð 'ð 'ðUð Uð Uð Uð Uð.Zð Zð Zð Zð Zðx!ð !ð !ð !ðF6ð 6ð 6ð 6ðð ð ð ð<+ð +ð +ð +ð +ð@'ð 'ð 'ð 'ð$ Ôð1ð 1ð 1ñ Ôð1ð&$ð $ð $ð $ð $ð $r'   r/   )9Ú
__future__r   ry   r×   rÕ   ÚloggingrR   r|   r;   rÂ   rl   rw   rÇ   r§   Úcollections.abcr   r   Úemail.utilsr   Útypesr   Útypingr   r	   Úuvicorn._ansir
   Úuvicorn._compatr   Úuvicorn.configr   r   Ú%uvicorn.protocols.http.auto_zttp_implr   Úuvicorn.protocols.http.h11_implr   Ú%uvicorn.protocols.http.httptools_implr   Ú#uvicorn.protocols.http.zttp_h2_implr   Ú uvicorn.protocols.http.zttp_implr   Ú,uvicorn.protocols.websockets.websockets_implr   Ú3uvicorn.protocols.websockets.websockets_sansio_implr   Ú)uvicorn.protocols.websockets.wsproto_implr   r   Ú__annotations__rÔ   ÚSIGTERMrÊ   ÚSIGBREAKÚ	getLoggerrX   r   r/   r-   r'   r%   ú<module>rî      s¾  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2àð ØFÐFÐFÐFÐFÐFØ;Ð;Ð;Ð;Ð;Ð;ØGÐGÐGÐGÐGÐGØBÐBÐBÐBÐBÐBØ=Ð=Ð=Ð=Ð=Ð=ØNÐNÐNÐNÐNÐNØ\Ð\Ð\Ð\Ð\Ð\ØDÐDÐDÐDÐDÐDð 	Ø
ñ	à
ñ	ð ñ	ð ñ		ð
 ñ	ð ñ	ð #ñ	#ð ð 	ð 	ð 	ñ 	ð „MØ
„Nð€ð „<�7ÒÐØ˜œÐ)Ñ)€Oà	ˆÔ	˜?Ñ	+Ô	+€ð	=ð 	=ð 	=ð 	=ð 	=ñ 	=ô 	=ð 	=ða$ð a$ð a$ð a$ð a$ñ a$ô a$ð a$ð a$ð a$r'   