§
    Æ! hª=  ã            !       ó0  — 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
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlZdd	lm Z  dd
l!m"Z"m#Z#m$Z$m%Z% erd dlm&Z& dZ' ej(        d¦  «        Z)dddd e ¦   «         d ddddddddœdeee*f         dee*edef         f         deedf         deee*ef                  dddeeee#         gdf                  deee"e*ge+f                  de,d e-d!e-d"ee+         d#e-d$e-d%e+d&e+d'e-f d(„Z.dddd e ¦   «         d dddddd)œdeee*f         dee*edef         f         deedf         deee*ef                  dddeeee#         gef                  deee"e*ge+f                  de,d e-d!e-d"ee+         d%e+d&e+d'e-fd*„Z/ ed+¦  «        Z0d,e*d'ee*         fd-„Z1	 d@dee*edef         f         dd.deedf         deee*ef                  d/eee#                  d'd0fd1„Z2dee*edef         f         d'd.fd2„Z3 G d3„ d0¦  «        Z4d4e*d5ee*         deedf         dee*ef         d'df
d6„Z5d7e*d'efd8„Z6d'ee*         fd9„Z7e j8        d5ee*         d'ed:         fd;„¦   «         Z9d<e-d=ed'dfd>„Z:dAd?„Z;dS )Bé    N)Úimport_module)Úget_context)ÚSpawnProcess)ÚPath)Úsleep)
ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚ	GeneratorÚListÚOptionalÚSetÚTupleÚUnioné   )ÚDefaultFilter)ÚChangeÚ
FileChangeÚawatchÚwatch)ÚLiteral)Úrun_processÚarun_processÚdetect_target_typeÚimport_stringzwatchfiles.main© Úautoi@  é2   é   TF)ÚargsÚkwargsÚtarget_typeÚcallbackÚwatch_filterÚgrace_periodÚdebounceÚstepÚdebugÚsigint_timeoutÚsigkill_timeoutÚ	recursiveÚignore_permission_deniedÚpathsÚtarget.r!   r"   r#   z&Literal['function', 'command', 'auto']r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Úreturnc                 ó  — |dk    rt          | ¦  «        }t                               d| |¦  «         t          ¦   «          t	          | |||¦  «        }d}|r*t                               d|¦  «         t          |¦  «         	 t          |||||	d||dœŽD ]>}|o
 ||¦  «         |                     |
|¬¦  «         t	          | ||||¦  «        }|dz  }Œ?	 |                     ¦   «          n# |                     ¦   «          w xY w|S )	u†  
    Run a process and restart it upon file changes.

    `run_process` can work in two ways:

    * Using `multiprocessing.Process` â€  to run a python function
    * Or, using `subprocess.Popen` to run a command

    !!! note

        **â€ ** technically `multiprocessing.get_context('spawn').Process` to avoid forking and improve
        code reload/import.

    Internally, `run_process` uses [`watch`][watchfiles.watch] with `raise_interrupt=False` so the function
    exits cleanly upon `Ctrl+C`.

    Args:
        *paths: matches the same argument of [`watch`][watchfiles.watch]
        target: function or command to run
        args: arguments to pass to `target`, only used if `target` is a function
        kwargs: keyword arguments to pass to `target`, only used if `target` is a function
        target_type: type of target. Can be `'function'`, `'command'`, or `'auto'` in which case
            [`detect_target_type`][watchfiles.run.detect_target_type] is used to determine the type.
        callback: function to call on each reload, the function should accept a set of changes as the sole argument
        watch_filter: matches the same argument of [`watch`][watchfiles.watch]
        grace_period: number of seconds after the process is started before watching for changes
        debounce: matches the same argument of [`watch`][watchfiles.watch]
        step: matches the same argument of [`watch`][watchfiles.watch]
        debug: matches the same argument of [`watch`][watchfiles.watch]
        sigint_timeout: the number of seconds to wait after sending sigint before sending sigkill
        sigkill_timeout: the number of seconds to wait after sending sigkill before raising an exception
        recursive: matches the same argument of [`watch`][watchfiles.watch]

    Returns:
        number of times the function was reloaded.

    ```py title="Example of run_process running a function"
    from watchfiles import run_process

    def callback(changes):
        print('changes detected:', changes)

    def foobar(a, b):
        print('foobar called with:', a, b)

    if __name__ == '__main__':
        run_process('./path/to/dir', target=foobar, args=(1, 2), callback=callback)
    ```

    As well as using a `callback` function, changes can be accessed from within the target function,
    using the `WATCHFILES_CHANGES` environment variable.

    ```py title="Example of run_process accessing changes"
    from watchfiles import run_process

    def foobar(a, b, c):
        # changes will be an empty list "[]" the first time the function is called
        changes = os.getenv('WATCHFILES_CHANGES')
        changes = json.loads(changes)
        print('foobar called due to changes:', changes)

    if __name__ == '__main__':
        run_process('./path/to/dir', target=foobar, args=(1, 2, 3))
    ```

    Again with the target as `command`, `WATCHFILES_CHANGES` can be used
    to access changes.

    ```bash title="example.sh"
    echo "changers: ${WATCHFILES_CHANGES}"
    ```

    ```py title="Example of run_process running a command"
    from watchfiles import run_process

    if __name__ == '__main__':
        run_process('.', target='./example.sh')
    ```
    r   úrunning "%s" as %sr   ú3sleeping for %s seconds before watching for changesF)r%   r'   r(   r)   Úraise_interruptr,   r-   )r*   r+   r   )r   Úloggerr)   Úcatch_sigtermÚstart_processr   r   Ústop)r/   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   ÚprocessÚreloadsÚchangess                     úHc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\watchfiles/run.pyr   r      s3  € ð@ �fÒÐÝ(¨Ñ0Ô0ˆå
‡L‚LÐ% v¨{Ñ;Ô;Ð;Ý�O„O€OÝ˜F K°°vÑ>Ô>€GØ€Gàð Ý�ŠÐJÈLÑYÔYÐYÝˆlÑÔÐðÝØØ%ØØØØ!ØØ%=ð	
ð 	
ð 	
ð 	ð 	ˆGð Ð*˜˜ 'Ñ*Ô*øØ�LŠL¨ÈˆLÑXÔXÐXÝ# F¨K¸¸vÀwÑOÔOˆGØ�q‰LˆGˆGð	ð 	�Š‰Œˆˆøˆ�Š‰ŒˆˆøøøØ€Ns   ÂAC( Ã(C>)r!   r"   r#   r$   r%   r&   r'   r(   r)   r,   r-   c           
   ‡   óö  K  — ddl }|dk    rt          | ¦  «        }t                               d| |¦  «         t	          ¦   «          t
          j                             t          | |||¦  «        ƒ d{V —†}d}|r5t                               d|¦  «         t          j	        |¦  «        ƒ d{V —† t          |||||	|
|dœŽ2 3 d{V —†}|�( ||¦  «        }|                     |¦  «        r|ƒ d{V —† t
          j                             |j        ¦  «        ƒ d{V —† t
          j                             t          | ||||¦  «        ƒ d{V —†}|dz  }Œ�6 t
          j                             |j        ¦  «        ƒ d{V —† |S )a  
    Async equivalent of [`run_process`][watchfiles.run_process], all arguments match those of `run_process` except
    `callback` which can be a coroutine.

    Starting and stopping the process and watching for changes is done in a separate thread.

    As with `run_process`, internally `arun_process` uses [`awatch`][watchfiles.awatch], however `KeyboardInterrupt`
    cannot be caught and suppressed in `awatch` so these errors need to be caught separately, see below.

    ```py title="Example of arun_process usage"
    import asyncio
    from watchfiles import arun_process

    async def callback(changes):
        await asyncio.sleep(0.1)
        print('changes detected:', changes)

    def foobar(a, b):
        print('foobar called with:', a, b)

    async def main():
        await arun_process('.', target=foobar, args=(1, 2), callback=callback)

    if __name__ == '__main__':
        try:
            asyncio.run(main())
        except KeyboardInterrupt:
            print('stopped via KeyboardInterrupt')
    ```
    r   Nr   r2   r3   )r%   r'   r(   r)   r,   r-   r   )Úinspectr   r5   r)   r6   ÚanyioÚ	to_threadÚrun_syncr7   r   r   Úisawaitabler8   )r/   r!   r"   r#   r$   r%   r&   r'   r(   r)   r,   r-   r.   r>   r9   r:   r;   Úrs                     r<   r   r   �   sè  è è € ðZ €N€N€Nà�fÒÐÝ(¨Ñ0Ô0ˆå
‡L‚LÐ% v¨{Ñ;Ô;Ð;Ý�O„O€OÝ”O×,Ò,­]¸FÀKÐQUÐW]Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^€GØ€Gàð (Ý�ŠÐJÈLÑYÔYÐYÝŒk˜,Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'åØ	Ø!ØØØØØ!9ðð ð ð ð ð ð ð ð ð ˆgð ÐØ�˜Ñ!Ô!ˆAØ×"Ò" 1Ñ%Ô%ð Ø�������åŒo×&Ò& w¤|Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ýœ×0Ò0µÀÈÐUYÐ[aÐcjÑkÔkÐkÐkÐkÐkÐkÐkˆØ�1‰ˆˆð!õ" Œ/×
"Ò
" 7¤<Ñ
0Ô
0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø€Ns   Â>EÚspawnÚcmdc                 ó”   — dd l }|                     ¦   «         j                             ¦   «         dk    }t	          j        | |¬¦  «        S )Nr   Úwindows)Úposix)ÚplatformÚunameÚsystemÚlowerÚshlexÚsplit)rE   rI   rH   s      r<   Ú	split_cmdrO   ò   sC   € Ø€O€O€Oà�NŠNÑÔÔ#×)Ò)Ñ+Ô+¨yÒ8€EÝŒ;�s %Ð(Ñ(Ô(Ð(ó    zLiteral['function', 'command']r;   ÚCombinedProcessc                 ó"  — |€d}nt          j        d„ |D ¦   «         ¦  «        }|t          j        d<   |dk    ri|pi }t	          | t
          ¦  «        r| t          ¦   «         ||f}t          }i }n| }t           	                    |||¬¦  «        }| 
                    ¦   «          n`|s|rt                               d¦  «         t	          | t
          ¦  «        s
J d¦   «         ‚t          | ¦  «        }t          j        |¦  «        }t!          |¦  «        S )Nz[]c                 ó@   — g | ]\  }}|                      ¦   «         |g‘ŒS r   )Úraw_str)Ú.0ÚcÚps      r<   ú
<listcomp>z!start_process.<locals>.<listcomp>  s)   € Ð%KÐ%KÐ%K¹4¸1¸a q§y¢y¡{¤{°AÐ&6Ð%KÐ%KÐ%KrP   ÚWATCHFILES_CHANGESÚfunction)r/   r!   r"   z-ignoring args and kwargs for "command" targetz+target must be a string to run as a command)ÚjsonÚdumpsÚosÚenvironÚ
isinstanceÚstrÚget_tty_pathÚrun_functionÚspawn_contextÚProcessÚstartr5   ÚwarningrO   Ú
subprocessÚPopenrQ   )	r/   r#   r!   r"   r;   Úchanges_env_varÚtarget_r9   Ú
popen_argss	            r<   r7   r7   ù   s  € ð €Øˆˆåœ*Ð%KÐ%KÀ7Ð%KÑ%KÔ%KÑLÔLˆà'6…B„JÐ#Ñ$ð �jÒ Ð Ø�˜2ˆÝ�f�cÑ"Ô"ð 	Ø�<™>œ>¨4°Ð7ˆDÝ"ˆGØˆFˆFàˆGå×'Ò'¨w¸TÈ&Ð'ÑQÔQˆØ�Š‰Œˆˆàð 	L�6ð 	LÝ�NŠNÐJÑKÔKÐKå˜&¥#Ñ&Ô&ÐUÐUÐ(UÑUÔUÐ&Ý˜vÑ&Ô&ˆ
ÝÔ" :Ñ.Ô.ˆÝ˜7Ñ#Ô#Ð#rP   c                 ó�   — t          | t          ¦  «        sdS |                      d¦  «        rdS t          j        d| ¦  «        rdS dS )a^  
    Used by [`run_process`][watchfiles.run_process], [`arun_process`][watchfiles.arun_process]
    and indirectly the CLI to determine the target type with `target_type` is `auto`.

    Detects the target type - either `function` or `command`. This method is only called with `target_type='auto'`.

    The following logic is employed:

    * If `target` is not a string, it is assumed to be a function
    * If `target` ends with `.py` or `.sh`, it is assumed to be a command
    * Otherwise, the target is assumed to be a function if it matches the regex `[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+`

    If this logic does not work for you, specify the target type explicitly using the `target_type` function argument
    or `--target-type` command line argument.

    Args:
        target: The target value

    Returns:
        either `'function'` or `'command'`
    rZ   )z.pyz.shÚcommandz[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+)r_   r`   ÚendswithÚreÚ	fullmatch)r/   s    r<   r   r     sS   € õ, �f�cÑ"Ô"ð ØˆzØ	�Š˜Ñ	(Ô	(ð ØˆyÝ	ŒÐ8¸&Ñ	AÔ	Að ØˆzàˆyrP   c                   óŒ   — e Zd Zdd„Zddededd	fd
„Zdefd„Zedefd„¦   «         Z	dedd	fd„Z
edee         fd„¦   «         Zd	S )rQ   rW   ú,Union[SpawnProcess, subprocess.Popen[bytes]]c                 ó6   — || _         | j        €
J d¦   «         ‚d S )Nzprocess not yet spawned©Ú_pÚpid)ÚselfrW   s     r<   Ú__init__zCombinedProcess.__init__>  s&   € ØˆŒØŒxÐ#Ð#Ð%>Ñ#Ô#Ð#Ð#Ð#rP   r    r   r*   r+   r0   Nc                 ó¨  — t           j                             dd ¦  «         |                      ¦   «         rýt                               d¦  «         t          j        | j        t          j	        ¦  «         	 |  
                    |¦  «         n0# t          j        $ r t                               d|¦  «         Y nw xY w| j        €Ut                               d¦  «         t          j        | j        t          j        ¦  «         |  
                    |¦  «         d S t                               d¦  «         d S t                               d| j        ¦  «         d S )NrY   zstopping process...z!SIGINT timed out after %r secondsz+process has not terminated, sending SIGKILLzprocess stoppedz#process already dead, exit code: %d)r]   r^   ÚpopÚis_aliver5   r)   Úkillrv   ÚsignalÚSIGINTÚjoinrg   ÚTimeoutExpiredrf   ÚexitcodeÚSIGKILL)rw   r*   r+   s      r<   r8   zCombinedProcess.stopB  s(  € Ý
Œ
�ŠÐ+¨TÑ2Ô2Ð2Ø�=Š=‰?Œ?ð 	QÝ�LŠLÐ.Ñ/Ô/Ð/åŒG�D”H�fœmÑ,Ô,Ð,ðØ—	’	˜.Ñ)Ô)Ð)Ð)øÝÔ,ð ð ð õ —’ÐBÀNÑSÔSÐSØ�ð	øøøð Œ}Ð$Ý—’ÐLÑMÔMÐMÝ”˜œ¥&¤.Ñ1Ô1Ð1Ø—	’	˜/Ñ*Ô*Ð*Ð*Ð*å—’Ð.Ñ/Ô/Ð/Ð/Ð/å�NŠNÐ@À$Ä-ÑPÔPÐPÐPÐPs   Á4B
 Â
*B7Â6B7c                 óž   — t          | j        t          ¦  «        r| j                             ¦   «         S | j                             ¦   «         d u S ©N)r_   ru   r   r{   Úpoll©rw   s    r<   r{   zCombinedProcess.is_aliveZ  s?   € Ý�d”g�|Ñ,Ô,ð 	*Ø”7×#Ò#Ñ%Ô%Ð%à”7—<’<‘>”> TÐ)Ð)rP   c                 ó   — | j         j        S r„   rt   r†   s    r<   rv   zCombinedProcess.pid`  s   € ð ŒwŒ{ÐrP   Útimeoutc                 ó¦   — t          | j        t          ¦  «        r| j                             |¦  «         d S | j                             |¦  «         d S r„   )r_   ru   r   r   Úwait)rw   rˆ   s     r<   r   zCombinedProcess.joine  sJ   € Ý�d”g�|Ñ,Ô,ð 	"ØŒG�LŠL˜Ñ!Ô!Ð!Ð!Ð!àŒG�LŠL˜Ñ!Ô!Ð!Ð!Ð!rP   c                 óf   — t          | j        t          ¦  «        r| j        j        S | j        j        S r„   )r_   ru   r   r�   Ú
returncoder†   s    r<   r�   zCombinedProcess.exitcodek  s,   € å�d”g�|Ñ,Ô,ð 	&Ø”7Ô#Ð#à”7Ô%Ð%rP   )rW   rr   )r    r   )Ú__name__Ú
__module__Ú__qualname__rx   Úintr8   Úboolr{   Úpropertyrv   r   r   r�   r   rP   r<   rQ   rQ   =  sí   € € € € € ð?ð ?ð ?ð ?ðQð Q 3ð Q¸Sð QÈð Qð Qð Qð Qð0*˜$ð *ð *ð *ð *ð ð�Sð ð ð ñ „Xðð"˜Cð " Dð "ð "ð "ð "ð ð&˜( 3œ-ð &ð &ð &ñ „Xð&ð &ð &rP   rZ   Útty_pathc                 ó„   — t          |¦  «        5  t          | ¦  «        } ||i |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S r„   )Úset_ttyr   )rZ   r“   r!   r"   Úfuncs        r<   rb   rb   s  s–   € Ý	�Ñ	Ô	ð ð Ý˜XÑ&Ô&ˆØˆˆdÐ�fÐÐÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   �5µ9¼9Údotted_pathc                 ó<  — 	 |                       d¦  «                             dd¦  «        \  }}n&# t          $ r}t          d| › d�¦  «        |‚d}~ww xY wt	          |¦  «        }	 t          ||¦  «        S # t          $ r}t          d|› d|› d	�¦  «        |‚d}~ww xY w)
zº
    Stolen approximately from django. Import a dotted module path and return the attribute/class designated by the
    last name in the path. Raise ImportError if the import fails.
    ú ú.r   ú"z!" doesn't look like a module pathNzModule "z" does not define a "z" attribute)ÚstripÚrsplitÚ
ValueErrorÚImportErrorr   ÚgetattrÚAttributeError)r—   Úmodule_pathÚ
class_nameÚeÚmodules        r<   r   r   y  sß   € ð
VØ"-×"3Ò"3°CÑ"8Ô"8×"?Ò"?ÀÀQÑ"GÔ"GÑˆ�Z�ZøÝð Vð Vð VÝÐM˜kÐMÐMÐMÑNÔNÐTUÐUøøøøðVøøøõ ˜;Ñ'Ô'€FðgÝ�v˜zÑ*Ô*Ð*øÝð gð gð gÝÐ^ [Ð^Ð^ÀzÐ^Ð^Ð^Ñ_Ô_ÐefÐføøøøðgøøøs,   ‚,/ ¯
A¹AÁAÁ%A5 Á5
BÁ?BÂBc                  óž   — 	 t          j        t          j                             ¦   «         ¦  «        S # t
          $ r Y dS t          $ r Y dS w xY w)zr
    Return the path to the current TTY, if any.

    Virtually impossible to test in pytest, hence no cover.
    z/dev/ttyN)r]   ÚttynameÚsysÚstdinÚfilenoÚOSErrorr¡   r   rP   r<   ra   ra   Š  s`   € ðÝŒz�#œ)×*Ò*Ñ,Ô,Ñ-Ô-Ð-øÝð ð ð àˆzˆzÝð ð ð àˆtˆtðøøøs   ‚/2 ²
A¿	AÁA)NNNc              #   ó¶   K  — | rP	 t          | ¦  «        5 }|t          _        d V — d d d ¦  «         d S # 1 swxY w Y   d S # t          $ r d V — Y d S w xY wd V — d S r„   )Úopenr¨   r©   r«   )r“   Úttys     r<   r•   r•   š  sË   è è € àð 
ð	Ý�h‘”ð  3Ø•”	Ø���ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð øõ ð 	ð 	ð 	àˆEˆEˆEˆEˆEˆEð	øøøð
 	ˆˆˆˆˆs,   †A  •3¦A  ³7·A  º7»A  Á AÁAÚsignumÚ_framec                 ój   — t                                dt          j        | ¦  «        ¦  «         t          ‚)Nz-received signal %s, raising KeyboardInterrupt)r5   rf   r}   ÚSignalsÚKeyboardInterrupt)r¯   r°   s     r<   Úraise_keyboard_interruptr´   ©  s(   € Ý
‡N‚NÐBÅFÄNÐSYÑDZÔDZÑ[Ô[Ð[Ý
ÐrP   c                  ó¦   — t                                dt          j        ¦   «         ¦  «         t	          j        t          j        t          ¦  «         dS )a  
    Catch SIGTERM and raise KeyboardInterrupt instead. This means watchfiles will stop quickly
    on `docker compose stop` and other cases where SIGTERM is sent.

    Without this the watchfiles process will be killed while a running process will continue uninterrupted.
    z8registering handler for SIGTERM on watchfiles process %dN)r5   r)   r]   Úgetpidr}   ÚSIGTERMr´   r   rP   r<   r6   r6   ®  s:   € õ ‡L‚LÐKÍRÌYÉ[Ì[ÑYÔYÐYÝ
„M•&”.Õ":Ñ;Ô;Ð;Ð;Ð;rP   r„   )r0   N)<Ú
contextlibr[   Úloggingr]   ro   rM   r}   rg   r¨   Ú	importlibr   Úmultiprocessingr   Úmultiprocessing.contextr   Úpathlibr   Útimer   Útypingr   r	   r
   r   r   r   r   r   r   r   r?   Úfiltersr   Úmainr   r   r   r   r   Ú__all__Ú	getLoggerr5   r`   r‘   Úfloatr�   r   r   rc   rO   r7   r   rQ   rb   r   ra   Úcontextmanagerr•   r´   r6   r   rP   r<   ú<module>rÆ      sI  ðØ Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cÐ cà €€€à "Ð "Ð "Ð "Ð "Ð "Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3àð ØÐÐÐÐÐà
N€Ø	ˆÔ	Ð,Ñ	-Ô	-€ð Ø'+Ø<BØ<@Ø<I¸M¹O¼OØØØØ ØØØØ%*ð}ð }ð }Ø�$˜�)Ôð}à�#�x  S Ô)Ð)Ô*ð}ð ��S�Œ/ð}ð �T˜#˜s˜(”^Ô$ð	}ð
 :ð}ð �x  Z¤Ð 1°4Ð 7Ô8Ô9ð}ð ˜8 V¨S M°4Ð$7Ô8Ô9ð}ð ð}ð ð}ð ð}ð �DŒ>ð}ð ð}ð ð}ð ð}ð #ð}ð  	ð!}ð }ð }ð }ðF Ø'+Ø<BØ;?Ø<I¸M¹O¼OØØØØ ØØ%*ðMð Mð MØ�$˜�)ÔðMà�#�x  S Ô)Ð)Ô*ðMð ��S�Œ/ðMð �T˜#˜s˜(”^Ô$ð	Mð
 :ðMð �x  Z¤Ð 1°3Ð 6Ô7Ô8ðMð ˜8 V¨S M°4Ð$7Ô8Ô9ðMð ðMð ðMð ðMð �DŒ>ðMð ðMð #ðMð 	ðMð Mð Mð Mðd �˜GÑ$Ô$€ð)�3ð )˜4 œ9ð )ð )ð )ð )ð *.ð!$ð !$Ø�#�x  S Ô)Ð)Ô*ð!$à1ð!$ð ��S�Œ/ð!$ð �T˜#˜s˜(”^Ô$ð	!$ð
 �c˜*”oÔ&ð!$ð ð!$ð !$ð !$ð !$ðH˜u S¨(°3¸°8Ô*<Ð%<Ô=ð ÐBbð ð ð ð ð@3&ð 3&ð 3&ð 3&ð 3&ñ 3&ô 3&ð 3&ðl˜3ð ¨(°3¬-ð ¸uÀSÈ#ÀX¼ð ÐX\Ð]`ÐbeÐ]eÔXfð Ðkoð ð ð ð ðg˜sð g sð gð gð gð gð"�h˜s”mð ð ð ð ð  Ôð�h˜s”mð ¨	Ð2BÔ(Cð ð ð ñ Ôðð Sð °#ð ¸$ð ð ð ð ð
<ð <ð <ð <ð <ð <rP   