§
    }ŠtjYA  ã                   ó.  — U d 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
mZ ddlmZmZ ddlmZ ddlmZmZmZmZ ddlmZ d	d
lmZ i Zeeef         ed<    G d„ d¦  «        Z d1dedz  ddfd„Z!d1dedz  defd„Z"de#dedz  fd„Z$ G d„ de¦  «        Ze %                     ej&        ¦   «         ¦  «          G d„ d¦  «        Z'edeez  deej(                 fd„¦   «         Z)ddœde*e         de#dedz  defd„Z+ddddddddœd ede#d!e#dz  d"e#d#ed$ededz  d%e*e         dz  d&edz  dee         fd'„Z, ed(¦  «        Z- ed)¦  «        Z.d*e#dz  d+e*e         de
fd,„Z/ddd-œd.ee-ge.f         d/ee-         d*e#dz  d%e*e         dz  de0e.         f
d0„Z1dS )2u	  Utility helpers to handle progress bars in `huggingface_hub`.

Example:
    1. Use `huggingface_hub.utils.tqdm` as you would use `tqdm.tqdm` or `tqdm.auto.tqdm`.
    2. To disable progress bars, either use `disable_progress_bars()` helper or set the
       environment variable `HF_HUB_DISABLE_PROGRESS_BARS` to 1.
    3. To re-enable progress bars, use `enable_progress_bars()`.
    4. To check whether progress bars are disabled, use `are_progress_bars_disabled()`.

NOTE: Environment variable `HF_HUB_DISABLE_PROGRESS_BARS` has the priority.

Example:
    ```py
    >>> from huggingface_hub.utils import are_progress_bars_disabled, disable_progress_bars, enable_progress_bars, tqdm

    # Disable progress bars globally
    >>> disable_progress_bars()

    # Use as normal `tqdm`
    >>> for _ in tqdm(range(5)):
    ...    pass

    # Still not showing progress bars, as `disable=False` is overwritten to `True`.
    >>> for _ in tqdm(range(5), disable=False):
    ...    pass

    >>> are_progress_bars_disabled()
    True

    # Re-enable progress bars globally
    >>> enable_progress_bars()

    # Progress bar will be shown !
    >>> for _ in tqdm(range(5)):
    ...   pass
    100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ| 5/5 [00:00<00:00, 117817.53it/s]
    ```

Group-based control:
    ```python
    # Disable progress bars for a specific group
    >>> disable_progress_bars("peft.foo")

    # Check state of different groups
    >>> assert not are_progress_bars_disabled("peft"))
    >>> assert not are_progress_bars_disabled("peft.something")
    >>> assert are_progress_bars_disabled("peft.foo"))
    >>> assert are_progress_bars_disabled("peft.foo.bar"))

    # Enable progress bars for a subgroup
    >>> enable_progress_bars("peft.foo.bar")

    # Check if enabling a subgroup affects the parent group
    >>> assert are_progress_bars_disabled("peft.foo"))
    >>> assert not are_progress_bars_disabled("peft.foo.bar"))

    # No progress bar for `name="peft.foo"`
    >>> for _ in tqdm(range(5), name="peft.foo"):
    ...     pass

    # Progress bar will be shown for `name="peft.foo.bar"`
    >>> for _ in tqdm(range(5), name="peft.foo.bar"):
    ...     pass
    100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ| 5/5 [00:00<00:00, 117817.53it/s]

    ```
é    N)ÚIterableÚIterator)ÚThreadPoolExecutorÚas_completed)ÚcontextmanagerÚnullcontext)ÚPath)ÚCallableÚContextManagerÚTypeVarÚcast)Útqdmé   )ÚHF_HUB_DISABLE_PROGRESS_BARSÚprogress_bar_statesc                   ó:   — e Zd ZdZddedz  ddfd„Zd	d„Zd
d„ZdS )Údisable_progress_barsa&  
    Disable progress bars either globally or for a specified group.

    This function updates the state of progress bars based on a group name.
    If no group name is provided, all progress bars are disabled. The operation
    respects the `HF_HUB_DISABLE_PROGRESS_BARS` environment variable's setting.

    Works as both a regular call and a context manager:
        disable_progress_bars()           # disables until enable_progress_bars()
        with disable_progress_bars():     # disables for the block, re-enables on exit
            ...

    Args:
        name (`str`, *optional*):
            The name of the group for which to disable the progress bars. If None,
            progress bars are disabled globally.

    Raises:
        Warning: If the environment variable precludes changes.
    NÚnameÚreturnc                 ó.  ‡— ‰| _         t          du rt          j        d¦  «         d| _        d S t          ‰¦  «         | _        ‰€%t                               ¦   «          dt          d<   d S ˆfd„t          D ¦   «         }|D ]
}t          |= Œdt          ‰<   d S )NFzlCannot disable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=0` is set and has priority.Ú_globalc                 óD   •— g | ]}|                      ‰› d �¦  «        ¯|‘ŒS ©ú.©Ú
startswith©Ú.0Úkeyr   s     €úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/huggingface_hub/utils/tqdm.pyú
<listcomp>z2disable_progress_bars.__init__.<locals>.<listcomp>’   s4   ø€ Ð_Ð_Ð_ cÀCÇNÂNÐVZÐS]ÐS]ÐS]ÑD^ÔD^Ð_˜cÐ_Ð_Ð_ó    )r   r   ÚwarningsÚwarnÚ_should_reenableÚare_progress_bars_disabledr   Úclear)Úselfr   Úkeys_to_remover   s    `  r    Ú__init__zdisable_progress_bars.__init__ƒ   s»   ø€ ØˆŒ	å'¨5Ð0Ð0ÝŒMØ~ñô ð ð %*ˆDÔ!ØˆFå$>¸tÑ$DÔ$DÐ DˆÔØˆ<Ý×%Ò%Ñ'Ô'Ð'Ø-2Õ 	Ñ*Ð*Ð*à_Ð_Ð_Ð_Õ-@Ð_Ñ_Ô_ˆNØ%ð -ð -�Ý'¨Ð,Ð,Ø(-Õ Ñ%Ð%Ð%r"   c                 ó   — | S ©N© ©r(   s    r    Ú	__enter__zdisable_progress_bars.__enter__—   ó   € Øˆr"   c                 ó@   — | j         rt          | j        ¦  «         d S d S r,   )r%   Úenable_progress_barsr   )r(   Úexcs     r    Ú__exit__zdisable_progress_bars.__exit__š   s-   € ØÔ ð 	,Ý  ¤Ñ+Ô+Ð+Ð+Ð+ð	,ð 	,r"   r,   )r   r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr*   r/   r4   r-   r"   r    r   r   m   sq   € € € € € ðð ð*.ð .˜S 4™Zð .°4ð .ð .ð .ð .ð(ð ð ð ð,ð ,ð ,ð ,ð ,ð ,r"   r   r   r   c                 óè   ‡ — t           du rt          j        d¦  «         dS ‰ €%t                               ¦   «          dt          d<   dS ˆ fd„t          D ¦   «         }|D ]
}t          |= Œdt          ‰ <   dS )a  
    Enable progress bars either globally or for a specified group.

    This function sets the progress bars to enabled for the specified group or globally
    if no group is specified. The operation is subject to the `HF_HUB_DISABLE_PROGRESS_BARS`
    environment setting.

    Args:
        name (`str`, *optional*):
            The name of the group for which to enable the progress bars. If None,
            progress bars are enabled globally.

    Raises:
        Warning: If the environment variable precludes changes.
    TzkCannot enable progress bars: environment variable `HF_HUB_DISABLE_PROGRESS_BARS=1` is set and has priority.Nr   c                 óD   •— g | ]}|                      ‰› d �¦  «        ¯|‘ŒS r   r   r   s     €r    r!   z(enable_progress_bars.<locals>.<listcomp>¹   s1   ø€ Ð[Ð[Ð[ #ÀÇÂÐRVÈzÈzÈzÑ@ZÔ@ZÐ[˜#Ð[Ð[Ð[r"   )r   r#   r$   r   r'   )r   r)   r   s   `  r    r2   r2   Ÿ   s›   ø€ õ  $ tÐ+Ð+ÝŒØyñ	
ô 	
ð 	
ð 	ˆà€|Ý×!Ò!Ñ#Ô#Ð#Ø)-Õ˜IÑ&Ð&Ð&à[Ð[Ð[Ð[Õ)<Ð[Ñ[Ô[ˆØ!ð 	)ð 	)ˆCÝ# CÐ(Ð(Ø$(Õ˜DÑ!Ð!Ð!r"   c                 ó"  — t           du rdS | €t                               dd¦  «         S | rI| t          v rt          |           S d                     |                      d¦  «        dd…         ¦  «        } | °It                               dd¦  «         S )aæ  
    Check if progress bars are disabled globally or for a specific group.

    This function returns whether progress bars are disabled for a given group or globally.
    It checks the `HF_HUB_DISABLE_PROGRESS_BARS` environment variable first, then the programmatic
    settings.

    Args:
        name (`str`, *optional*):
            The group name to check; if None, checks the global setting.

    Returns:
        `bool`: True if progress bars are disabled, False otherwise.
    TNr   r   éÿÿÿÿ)r   r   ÚgetÚjoinÚsplit©r   s    r    r&   r&   ¿   s�   € õ $ tÐ+Ð+Øˆtà€|Ý&×*Ò*¨9°dÑ;Ô;Ð;Ð;à
ð .ØÕ&Ð&Ð&Ý*¨4Ô0Ð0Ð0Ø�xŠx˜Ÿ
š
 3™œ¨¨¨Ô,Ñ-Ô-ˆð ð .õ
 #×&Ò& y°$Ñ7Ô7Ð7Ð7r"   Ú	log_levelc                 ó^   — | t           j        k    rdS t          j        d¦  «        dk    rdS dS )zí
    Determine if tqdm progress bars should be disabled based on logging level and environment settings.

    see https://github.com/huggingface/huggingface_hub/pull/2000 and https://github.com/huggingface/huggingface_hub/pull/2698.
    TÚTQDM_POSITIONz-1FN)ÚloggingÚNOTSETÚosÚgetenv)rB   s    r    Úis_tqdm_disabledrI   Ü   s5   € ð •G”NÒ"Ð"ØˆtÝ	„y�Ñ!Ô! TÒ)Ð)ØˆuØˆ4r"   c                   ó6   ‡ — e Zd ZdZˆ fd„Zdeddfˆ fd„Zˆ xZS )r   z«
    Class to override `disable` argument in case progress bars are globally disabled.

    Taken from https://github.com/tqdm/tqdm/issues/619#issuecomment-619639324.
    c                 óŽ   •— |                      dd ¦  «        }t          |¦  «        rd|d<    t          ¦   «         j        |i |¤Ž d S )Nr   TÚdisable)Úpopr&   Úsuperr*   )r(   ÚargsÚkwargsr   Ú	__class__s       €r    r*   ztqdm.__init__ð   sR   ø€ Ø�zŠz˜& $Ñ'Ô'ˆÝ% dÑ+Ô+ð 	%Ø $ˆF�9ÑØ�‰ŒÔ˜$Ð) &Ð)Ð)Ð)Ð)Ð)r"   Úattrr   Nc                 ó|   •— 	 t          ¦   «                              |¦  «         dS # t          $ r |dk    r‚ Y dS w xY w)zBFix for https://github.com/huggingface/huggingface_hub/issues/1603Ú_lockN)rN   Ú__delattr__ÚAttributeError)r(   rR   rQ   s     €r    rU   ztqdm.__delattr__ö   sV   ø€ ð	Ý‰GŒG×Ò Ñ%Ô%Ð%Ð%Ð%øÝð 	ð 	ð 	Ø�wŠˆØð ˆˆð	øøøs   ƒ!& ¦;º;)r5   r6   r7   r8   r*   r9   rU   Ú__classcell__)rQ   s   @r    r   r   é   sn   ø€ € € € € ðð ð*ð *ð *ð *ð *ð ð ¨ð ð ð ð ð ð ð ð ð ð r"   r   c                   óB   — e Zd ZdZd„ Zd„ Zd„ Zd
deez  dz  ddfd	„Z	dS )Úsilent_tqdmz#Fake tqdm object that does nothing.c                 ó   — d S r,   r-   )r(   rO   rP   s      r    r*   zsilent_tqdm.__init__	  ó   € Øˆr"   c                 ó   — | S r,   r-   r.   s    r    r/   zsilent_tqdm.__enter__  r0   r"   c                 ó   — d S r,   r-   )r(   Úexc_typeÚ	exc_valueÚ	tracebacks       r    r4   zsilent_tqdm.__exit__  r[   r"   é   ÚnNr   c                 ó   — d S r,   r-   )r(   rb   s     r    Úupdatezsilent_tqdm.update  r[   r"   )ra   )
r5   r6   r7   r8   r*   r/   r4   ÚintÚfloatrd   r-   r"   r    rY   rY     sw   € € € € € Ø-Ð-ðð ð ðð ð ðð ð ðð ˜˜e™ dÑ*ð °4ð ð ð ð ð ð r"   rY   Úpathc              #   ó”  ‡‡K  — t          | t          ¦  «        rt          | ¦  «        } |                      d¦  «        5 }|                      ¦   «         j        }t          dd|d| j        ¬¦  «        Š|j        Šddt          dz  d	t          fˆˆfd
„}||_        |V — ‰                     ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )uQ  
    Open a file as binary and wrap the `read` method to display a progress bar when it's streamed.

    First implemented in `transformers` in 2019 but removed when switched to git-lfs. Used in `huggingface_hub` to show
    progress bar when uploading an LFS file to the Hub. See github.com/huggingface/transformers/pull/2078#discussion_r354739608
    for implementation details.

    Note: currently implementation handles only files stored on disk as it is the most common use case. Could be
          extended to stream any `BinaryIO` object but we might have to debug some corner cases.

    Example:
    ```py
    >>> with tqdm_stream_file("config.json") as f:
    >>>     httpx.put(url, data=f)
    config.json: 100%|â–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆâ–ˆ| 8.19k/8.19k [00:02<00:00, 3.72kB/s]
    ```
    ÚrbÚBTr   )ÚunitÚ
unit_scaleÚtotalÚinitialÚdescr=   ÚsizeNr   c                 ób   •—  ‰| ¦  «        }‰                      t          |¦  «        ¦  «         |S r,   )rd   Úlen)rp   ÚdataÚf_readÚpbars     €€r    Ú_inner_readz%tqdm_stream_file.<locals>._inner_read8  s-   ø€ Ø�6˜$‘<”<ˆDØ�KŠK�˜D™	œ	Ñ"Ô"Ð"ØˆKr"   )r=   )Ú
isinstancer9   r	   ÚopenÚstatÚst_sizer   r   Úreadre   ÚbytesÚclose)rg   ÚfÚ
total_sizerv   rt   ru   s       @@r    Útqdm_stream_filer€     s/  øøè è € õ& �$�ÑÔð Ý�D‰zŒzˆà	�Š�4‰Œð ˜AØ—Y’Y‘[”[Ô(ˆ
ÝØØØØØ”ð
ñ 
ô 
ˆð ”ˆð	ð 	�c D™jð 	µ%ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð
 ˆŒàˆˆˆà�
Š
‰Œˆð+ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ¾A2B=Â=CÃCrA   Úclsc                 óš   — t          | t          ¦  «        rt          | t          ¦  «        s | di |¤ŽS t	          |¦  «        } | d||dœ|¤ŽS )aÇ  Create a progress bar.

    For our `tqdm` subclass (or subclasses of it): respects all disable signals
    (`HF_HUB_DISABLE_PROGRESS_BARS`, `disable_progress_bars()`, log level) and uses
    `disable=None` for TTY auto-detection (see https://github.com/huggingface/huggingface_hub/pull/2000),
    unless `TQDM_POSITION=-1` forces bars on (https://github.com/huggingface/huggingface_hub/pull/2698).

    For other classes: does not inject `disable` or `name`. the custom class is fully
    responsible for its own behavior. Vanilla tqdm defaults to `disable=False` (bar shows).
    Omits `name` which vanilla tqdm rejects with `TqdmKeyError`. See https://github.com/huggingface/huggingface_hub/issues/4050.
    )rL   r   r-   )rw   ÚtypeÚ
issubclassr   rI   )r�   rB   r   rP   rL   s        r    Ú_create_progress_barr…   D  se   € õ �s�DÑ!Ô!ð ¥j°µdÑ&;Ô&;ð Øˆsˆ}ˆ}�Vˆ}ˆ}Ðõ ˜yÑ)Ô)€GØˆ3Ð4�w TÐ4Ð4¨VÐ4Ð4Ð4r"   rj   T)rm   rn   rk   rl   r   Ú
tqdm_classÚ	_tqdm_barro   rm   rn   rk   rl   r†   r‡   c        	   
      ó`   — |�t          |¦  «        S t          |pt          ||||||| ¬¦  «        S )N)r�   rB   r   rk   rl   rm   rn   ro   )r   r…   r   )	ro   rB   rm   rn   rk   rl   r   r†   r‡   s	            r    Ú_get_progress_bar_contextr‰   Z  sN   € ð ÐÝ˜9Ñ%Ô%Ð%õ
  ØÐ�$ØØØØØØØð	ñ 	ô 	ð 	r"   ÚTÚRÚmax_workersÚ	bar_classc                 ó¶   — t          |d¦  «        r:t          |d¦  «        r*t          | |j        |                     ¦   «         f¬¦  «        S t          | ¬¦  «        S )a   Create a `ThreadPoolExecutor` that shares the tqdm lock with its worker threads.

    Like `tqdm.contrib.concurrent.thread_map`, we make sure the bar class has a lock and pass it to the
    worker threads, so that bars created inside the mapped function (e.g. the per-file download bars in
    `snapshot_download`) don't race on concurrent `update()` calls. `get_lock()` creates the shared
    class-level lock if needed. Classes that don't implement tqdm's locking API (e.g. `silent_tqdm`)
    render nothing anyway, so no lock is needed.
    Úget_lockÚset_lock)rŒ   ÚinitializerÚinitargs)rŒ   )Úhasattrr   r�   r�   ©rŒ   r�   s     r    Ú_make_thread_pool_executorr•   |  sj   € õ ˆy˜*Ñ%Ô%ð 
­'°)¸ZÑ*HÔ*Hð 
Ý!Ø#°Ô1CÈy×OaÒOaÑOcÔOcÐNeð
ñ 
ô 
ð 	
õ ¨+Ð6Ñ6Ô6Ð6r"   )rŒ   r†   ÚfnÚiterablec                óº  ‡ ‡— t          |¦  «        }|€&t          dt          j        ¦   «         pddz   ¦  «        }|                     dt          |¦  «        ¦  «         |pt          }dgt          |¦  «        z  } |d	i |¤Ž5 }t          ||¬¦  «        5 Šˆˆ fd„t          |¦  «        D ¦   «         }		 t          |	¦  «        D ]4}
|
 
                    ¦   «         ||	|
         <   |                     d¦  «         Œ5n(# t          $ r |	D ]}
|
                     ¦   «          Œ‚ w xY w	 ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          d|¦  «        S )
a-  Drop-in replacement for `tqdm.contrib.concurrent.thread_map`.

    The version shipped by `tqdm` consumes results in submission order and the progress bar only advances when the "next
    item in input order" finishes. A single slow early item pins the bar near zero while later items
    complete, with everything flushed at once at the end. This helper avoids that problem by consuming items in completion
    order.

    See https://github.com/huggingface/huggingface_hub/issues/4518 for more details.

    Args:
        fn (`Callable`):
            Function to apply to each item.
        iterable (`Iterable`):
            Items to process.
        max_workers (`int`, *optional*):
            Maximum number of worker threads. Defaults to tqdm's own default.
        tqdm_class (`type`, *optional*):
            Progress bar class to use. Defaults to `huggingface_hub`'s `tqdm`.
        **tqdm_kwargs:
            Additional keyword arguments forwarded to the progress bar (e.g. `desc`).

    Returns:
        `list`: Results in the same order as `iterable`.
    Né    ra   é   rm   r”   c                 óD   •— i | ]\  }}‰                      ‰|¦  «        |“ŒS r-   )Úsubmit)r   ÚindexÚitemÚexecutorr–   s      €€r    ú
<dictcomp>z!hf_thread_map.<locals>.<dictcomp>¶  s-   ø€ Ð`Ð`Ð`ÁÀÀt˜8Ÿ?š?¨2¨tÑ4Ô4°eÐ`Ð`Ð`r"   zlist[R]r-   )ÚlistÚminrG   Ú	cpu_countÚ
setdefaultrr   r   r•   Ú	enumerater   Úresultrd   ÚBaseExceptionÚcancelr   )r–   r—   rŒ   r†   Útqdm_kwargsÚitemsr�   Úresultsru   Úfuture_to_indexÚfuturerŸ   s   `          @r    Úhf_thread_mapr®   Œ  s  øø€ õ@ �‰NŒN€EØÐÝ˜"�rœ|™~œ~Ð2°°aÑ7Ñ8Ô8ˆØ×Ò˜7¥C¨¡J¤JÑ/Ô/Ð/ØÐ"�d€IØ#˜f¥s¨5¡z¤zÑ1€Gàˆ	Ð Ð �KÐ Ð ðØ$(Ý"¨{ÀiÐPÑPÔPðàT\à`Ð`Ð`Ð`Ð`ÍyÐY^ÑO_ÔO_Ð`Ñ`Ô`ˆð		Ý& Ñ7Ô7ð ð �Ø39·=²=±?´?�˜¨Ô/Ñ0Ø—’˜A‘”��ðøõ ð 	ð 	ð 	ð *ð  ð  �Ø—’‘”��Øð	øøøððð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ �	˜7Ñ#Ô#Ð#sO   ÂEÂD+Â1AC6Ã5D+Ã6%DÄD+ÄEÄ+D/	Ä/EÄ2D/	Ä3EÅEÅ	Er,   )2r8   ÚiorE   rG   Ú	threadingr#   Úcollections.abcr   r   Úconcurrent.futuresr   r   Ú
contextlibr   r   Úpathlibr	   Útypingr
   r   r   r   Ú	tqdm.autor   Úold_tqdmÚ	constantsr   r   Údictr9   ÚboolÚ__annotations__r   r2   r&   re   rI   r�   ÚRLockrY   ÚBufferedReaderr€   rƒ   r…   r‰   rŠ   r‹   r•   r¡   r®   r-   r"   r    ú<module>r¾      s  ððBð Bð BðH 
€	€	€	Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à &Ð &Ð &Ð &Ð &Ð &à 4Ð 4Ð 4Ð 4Ð 4Ð 4ð (*Ð �T˜#˜t˜)”_Ð )Ð )Ñ )ð/,ð /,ð /,ð /,ð /,ñ /,ô /,ð /,ðd)ð )˜s T™zð )°Tð )ð )ð )ð )ð@8ð 8 S¨4¡Zð 8¸4ð 8ð 8ð 8ð 8ð:
 ð 
¨¨t©ð 
ð 
ð 
ð 
ðð ð ð ð ˆ8ñ ô ð ð4 ‡‚ˆoˆiŒoÑÔÑ  Ô  Ð  ðð ð ð ð ñ ô ð ð  ð*˜4 #™:ð *¨(°2Ô3DÔ*Eð *ð *ð *ñ „ð*ðZ UYð 5ð 5ð 5  h¤ð 5¸Cð 5ÀsÈTÁzð 5Ðgoð 5ð 5ð 5ð 5ð4 ØØØØØ(,Ø!ðð ð à
ðð ðð �‰:ð	ð
 ðð ðð ðð �‰*ðð �X” Ñ%ðð �d‰{ðð �DÔðð ð ð ð< €GˆC�L„L€Ø€GˆC�L„L€ð7¨s°T©zð 7ÀdÈ8Änð 7ÐYkð 7ð 7ð 7ð 7ð( #Ø(,ð5$ð 5$ð 5$Ø�!��a�Ôð5$à�qŒkð5$ð �t‘ð	5$ð
 �X” Ñ%ð5$ð 
ˆ!„Wð5$ð 5$ð 5$ð 5$ð 5$ð 5$r"   