Ë
    çÍ:j|B  ã                   óB  — d 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mZmZmZmZmZmZmZ ddlmZ dd	lmZ d
dlmZmZmZmZmZm Z m!Z!m"Z" d
dl#m$Z$ d
dl%m&Z&m'Z' d
dl(m)Z) erd
dl*m+Z+  e jX                  e-«      Z. ej^                  d«      Z0dZ1dddœZ2e G d„ d«      «       Z3e"	 	 	 	 d;dee3   dee4   de4de4dee4   dee4   deee4e4f      deee4      deee5   ee5   ee4   f   fd„«       Z6 G d „ d!e«      Z7 G d"„ d#e«      Z8	 	 	 d<d$d%d&edee4   deee4e4f      dee4   ddfd'„Z9d(e5fd)„Z:d*e5fd+„Z;d,e5fd-„Z<d$d%d.e4ddfd/„Z=d$d%d0ed1e>d.e4ddf
d2„Z?d0ed3e3d1e>dee4   fd4„Z@d5ee   d6e4de8fd7„ZAd$d%d8ee4   d1e>dee   fd9„ZBd$d%d8ee4   d1e>dee   fd:„ZCy)=z.Git LFS related type definitions and utilitiesé    N)Ú	dataclass)Úceil)Úgetsize)ÚPath)ÚTYPE_CHECKINGÚBinaryIOÚDictÚIterableÚListÚOptionalÚTupleÚ	TypedDict)Úunquote)Ú	constantsé   )Úbuild_hf_headersÚfix_hf_endpoint_in_urlÚget_sessionÚhf_raise_for_statusÚhttp_backoffÚloggingÚtqdmÚvalidate_hf_hub_args)ÚSliceFileObj)Úsha256Úsha_fileobj)Úis_tqdm_disabled)ÚCommitOperationAddz^[0-9a-f]{40}$zlfs-multipart-uploadzapplication/vnd.git-lfs+json)ÚAcceptzContent-Typec                   ór   — e Zd ZU dZeed<   eed<   eed<   edefd„«       Z	edefd„«       Z
ed	efd
„«       Zy)Ú
UploadInfoad  
    Dataclass holding required information to determine whether a blob
    should be uploaded to the hub using the LFS protocol or the regular protocol

    Args:
        sha256 (`bytes`):
            SHA256 hash of the blob
        size (`int`):
            Size in bytes of the blob
        sample (`bytes`):
            First 512 bytes of the blob
    r   ÚsizeÚsampleÚpathc                 óÂ   — t        |«      }t        j                  |d«      5 }|j                  d«      d d }t	        |«      }d d d «        | |¬«      S # 1 sw Y   ŒxY w)NÚrbé   ©r"   r   r#   )r   ÚioÚopenÚpeekr   )Úclsr$   r"   Úfiler#   Úshas         úh/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/huggingface_hub/lfs.pyÚ	from_pathzUploadInfo.from_pathO   s_   € ä�t‹}ˆÜ�W‰W�T˜4Ó ð 	$ DØ—Y‘Y˜s“^ D SÐ)ˆFÜ˜dÓ#ˆC÷	$ñ ˜ S°Ô8Ð8÷	$ð 	$ús   ¢ AÁAÚdatac                 ób   — t        |«      j                  «       } | t        |«      |d d |¬«      S )Nr'   )r"   r#   r   )r   ÚdigestÚlen)r,   r1   r.   s      r/   Ú
from_byteszUploadInfo.from_bytesW   s-   € ä�T‹l×!Ñ!Ó#ˆÙœ˜D›	¨$¨t°¨*¸SÔAÐAó    Úfileobjc                 óð   — |j                  d«      }|j                  dt        j                  «       t	        |«      }|j                  «       }|j                  dt        j                  «        | |||¬«      S )Nr'   r   r(   )ÚreadÚseekr)   ÚSEEK_SETr   Útell)r,   r7   r#   r.   r"   s        r/   Úfrom_fileobjzUploadInfo.from_fileobj\   sX   € à—‘˜cÓ"ˆØ�‰�QœŸ™Ô$Ü˜'Ó"ˆØ�|‰|‹~ˆØ�‰�QœŸ™Ô$Ù˜ S°Ô8Ð8r6   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚbytesÚ__annotations__ÚintÚclassmethodÚstrr0   r5   r   r=   © r6   r/   r!   r!   <   sj   … ñð ƒMØ
ƒIØƒMàð9˜Sò 9ó ð9ð ðB˜eò Bó ðBð ð9 8ò 9ó ñ9r6   r!   Úupload_infosÚtokenÚ	repo_typeÚrepo_idÚrevisionÚendpointÚheadersÚ	transfersÚreturnc                 ó  — |�|nt         j                  }d}|t         j                  v rt         j                  |   }|› d|› |› d�}	d|�|nddg| D �
cg c])  }
|
j                  j	                  «       |
j
                  dœ‘Œ+ c}
d	d
œ}|�dt        |«      i|d<   i t        ¥t        |¬«      ¥|xs i ¥}t        «       j                  |	||¬«      }t        |«       |j                  «       }|j                  dd«      }t        |t        «      st!        d«      ‚|j                  d«      }t        |t"        «      r|nd}|D �cg c]  }d|vsŒt%        |«      ‘Œ c}|D �cg c]  }d|v sŒt'        |«      ‘Œ c}|fS c c}
w c c}w c c}w )aÍ  
    Requests the LFS batch endpoint to retrieve upload instructions

    Learn more: https://github.com/git-lfs/git-lfs/blob/main/docs/api/batch.md

    Args:
        upload_infos (`Iterable` of `UploadInfo`):
            `UploadInfo` for the files that are being uploaded, typically obtained
            from `CommitOperationAdd.upload_info`
        repo_type (`str`):
            Type of the repo to upload to: `"model"`, `"dataset"` or `"space"`.
        repo_id (`str`):
            A namespace (user or an organization) and a repo name separated
            by a `/`.
        revision (`str`, *optional*):
            The git revision to upload to.
        headers (`dict`, *optional*):
            Additional headers to include in the request
        transfers (`list`, *optional*):
            List of transfer methods to use. Defaults to ["basic", "multipart"].

    Returns:
        `LfsBatchInfo`: 3-tuple:
            - First element is the list of upload instructions from the server
            - Second element is a list of errors, if any
            - Third element is the chosen transfer adapter if provided by the server (e.g. "basic", "multipart", "xet")

    Raises:
        [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
            If an argument is invalid or the server response is malformed.
        [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
            If the server returned an error.
    NÚ ú/z.git/info/lfs/objects/batchÚuploadÚbasicÚ	multipart©Úoidr"   r   )Ú	operationrO   ÚobjectsÚ	hash_algoÚnameÚref)rI   ©rN   ÚjsonrZ   zMalformed response from serverÚtransferÚerror)r   ÚENDPOINTÚREPO_TYPES_URL_PREFIXESr   Úhexr"   r   ÚLFS_HEADERSr   r   Úpostr   r_   ÚgetÚ
isinstanceÚlistÚ
ValueErrorrF   Ú_validate_batch_actionsÚ_validate_batch_error)rH   rI   rJ   rK   rL   rM   rN   rO   Ú
url_prefixÚ	batch_urlrT   ÚpayloadÚrespÚ
batch_inforZ   Úchosen_transferÚobjs                    r/   Úpost_lfs_batch_infort   f   s«  € ðX $Ð/‰x´Y×5GÑ5G€HØ€JØ”I×5Ñ5Ñ5Ü×6Ñ6°yÑAˆ
Ø�*˜A˜j˜\¨'¨Ð2MÐN€IàØ"+Ð"7‘Y¸gÀ{Ð=Sð 'ö
ð
 ð —}‘}×(Ñ(Ó*ØŸ™óò
ð ñ€Gð ÐØ ¤'¨(Ó"3Ð4ˆ�‰ðÜ
ðä
 Ô
'ðð Š=�bð€Gô
 ‹=×Ñ˜i°¸wÐÓG€DÜ˜ÔØ—‘“€Jà�n‰n˜Y¨Ó-€GÜ�gœtÔ$ÜÐ9Ó:Ð:à —n‘n ZÓ0€OÜ)3°OÄSÔ)I‘oÈt€Oð 29ÖO¨#¸GÈ3Ò<NÔ	  Õ	%ÒOØ/6ÖI¨¸'ÀSº.Ô	˜sÕ	#ÒIØðð ùò9
ùò: 	PùÚIs   Á.E8Ä?	E=Å	E=Å	FÅ&Fc                   ó"   — e Zd ZU eed<   eed<   y)ÚPayloadPartTÚ
partNumberÚetagN)r>   r?   r@   rD   rC   rF   rG   r6   r/   rv   rv   ½   s   … ØƒOØ
„Ir6   rv   c                   ó,   — e Zd ZU dZeed<   ee   ed<   y)ÚCompletionPayloadTz?Payload that will be sent to the Hub when uploading multi-part.rX   ÚpartsN)r>   r?   r@   rA   rF   rC   r   rv   rG   r6   r/   rz   rz   Â   s   … ÙIà	ƒHØ�ÑÔr6   rz   rY   r   Úlfs_batch_actionc                 óB  — t        |«       |j                  d«      }|€$t        j                  d| j                  › d�«       y|d   d   }t        |«       |d   j                  d«      }|�t        |«       |j                  di «      }|j                  d«      }	t        |d	   |¬
«      }
|	�	 t        |	«      }	t        | ||	|
¬«       nt        | |
¬«       |�…t        |«       t        |d	   |«      }t        «       j                  |t        ||¬«      | j                  j                   j#                  «       | j                  j$                  dœ¬«      }t'        |«       t        j                  | j                  › d�«       y# t        t        f$ r t        d|	› d�«      ‚w xY w)aw  
    Handles uploading a given object to the Hub with the LFS protocol.

    Can be a No-op if the content of the file is already present on the hub large file storage.

    Args:
        operation (`CommitOperationAdd`):
            The add operation triggering this upload.
        lfs_batch_action (`dict`):
            Upload instructions from the LFS batch endpoint for this object. See [`~utils.lfs.post_lfs_batch_info`] for
            more details.
        headers (`dict`, *optional*):
            Headers to include in the request, including authentication and user agent headers.

    Raises:
        [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError)
            If `lfs_batch_action` is improperly formatted
        [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
            If the upload resulted in an error
    ÚactionsNzContent of file z. is already present upstream - skipping uploadrT   ÚverifyÚheaderÚ
chunk_sizeÚhref)rM   zTMalformed response from LFS batch endpoint: `chunk_size` should be an integer. Got 'z'.)rY   r€   r�   Ú
upload_url)rY   rƒ   )rI   rN   rW   r^   z: Upload successful)rk   rg   ÚloggerÚdebugÚpath_in_repoÚ_validate_lfs_actionr   rD   rj   Ú	TypeErrorÚ_upload_multi_partÚ_upload_single_partr   rf   r   Úupload_infor   rd   r"   r   )rY   r|   rI   rN   rM   r~   Úupload_actionÚverify_actionr€   r�   rƒ   Ú
verify_urlÚverify_resps                r/   Ú
lfs_uploadr�   É   s¦  € ô8 Ð,Ô-Ø×"Ñ" 9Ó-€GØ€ä�‰Ð'¨	×(>Ñ(>Ð'?Ð?mÐnÔoØð % YÑ/°Ñ9€MÜ˜Ô'Ø$ YÑ/×3Ñ3°HÓ=€MØÐ Ü˜]Ô+ð ×Ñ˜x¨Ó,€FØ—‘˜LÓ)€JÜ'¨°fÑ(=ÈÔQ€JØÐð	Ü˜Z›ˆJô
 	 Y°vÈ*ÐakÖlä i¸JÕGð Ð Ü˜]Ô+Ü+¨M¸&Ñ,AÀ8ÓLˆ
Ü!“m×(Ñ(ØÜ$¨5¸'ÔBØ"×.Ñ.×5Ñ5×9Ñ9Ó;ÀY×EZÑEZ×E_ÑE_Ñ`ð )ó 
ˆô
 	˜KÔ(Ü
‡L�L�I×*Ñ*Ð+Ð+>Ð?Õ@øô% œIÐ&ò 	ÜØfÐgqÐfrÐrtÐuóð ð	ús   Â-E? Å?FÚ
lfs_actionc                 óº   — t        | j                  d«      t        «      r0| j                  d«      �*t        | j                  d«      t        «      st	        d«      ‚| S )ú.validates response from the LFS batch endpointr‚   r€   z"lfs_action is improperly formatted)rh   rg   rF   Údictrj   )r‘   s    r/   r‡   r‡     sK   € ô 	�:—>‘> &Ó)¬3Ô/Ø�^‰^˜HÓ%Ð-´¸J¿N¹NÈ8Ó<TÔVZÔ1[äÐ=Ó>Ð>ØÐr6   Úlfs_batch_actionsc                 óP  — t        | j                  d«      t        «      rt        | j                  d«      t        «      st	        d«      ‚| j                  di «      j                  d«      }| j                  di «      j                  d«      }|�t        |«       |�t        |«       | S )r“   rX   r"   z)lfs_batch_actions is improperly formattedr~   rT   r   )rh   rg   rF   rD   rj   r‡   )r•   rŒ   r�   s      r/   rk   rk     s—   € äÐ(×,Ñ,¨UÓ3´SÔ9¼jÐIZ×I^ÑI^Ð_eÓIfÔhkÔ>lÜÐDÓEÐEà%×)Ñ)¨)°RÓ8×<Ñ<¸XÓF€MØ%×)Ñ)¨)°RÓ8×<Ñ<¸XÓF€MØÐ Ü˜]Ô+ØÐ Ü˜]Ô+ØÐr6   Úlfs_batch_errorc                 ól  — t        | j                  d«      t        «      rt        | j                  d«      t        «      st	        d«      ‚| j                  d«      }t        |t
        «      r>t        |j                  d«      t        «      rt        |j                  d«      t        «      st	        d«      ‚| S )r“   rX   r"   z'lfs_batch_error is improperly formattedra   ÚmessageÚcode)rh   rg   rF   rD   rj   r”   )r—   Ú
error_infos     r/   rl   rl   '  s‹   € ä�×*Ñ*¨5Ó1´3Ô7¼JÀ×GZÑGZÐ[aÓGbÔdgÔ<hÜÐBÓCÐCØ ×$Ñ$ WÓ-€Jä�:œtÔ$Ü�z—~‘~ iÓ0´#Ô6Ü�z—~‘~ fÓ-¬sÔ3äÐBÓCÐCØÐr6   rƒ   c                 ó„   — | j                  d¬«      5 }t        d||¬«      }t        |«       ddd«       y# 1 sw Y   yxY w)a¤  
    Uploads `fileobj` as a single PUT HTTP request (basic LFS transfer protocol)

    Args:
        upload_url (`str`):
            The URL to PUT the file to.
        fileobj:
            The file-like object holding the data to upload.

    Returns: `requests.Response`

    Raises:
     [`HTTPError`](https://requests.readthedocs.io/en/latest/api/#requests.HTTPError)
        If the upload resulted in an error.
    T©Ú	with_tqdmÚPUT©r1   N)Úas_filer   r   )rY   rƒ   r7   Úresponses       r/   rŠ   rŠ   5  sB   € ð  
×	Ñ	 TÐ	Ó	*ð &¨gä  z¸Ô@ˆÜ˜HÔ%÷&÷ &ñ &ús   “6¶?r€   r�   c                 óô  — t        || j                  |¬«      }t        j                  }t        j                  rKt	        | j
                  t        «      s1t	        | j
                  t        «      st        j                  d«       d}|rt        | ||¬«      nt        | ||¬«      }t        «       j                  |t        || j                  j                  j!                  «       «      t"        ¬«      }t%        |«       y)z@
    Uploads file using HF multipart LFS transfer protocol.
    )r€   r‹   r�   zlhf_transfer is enabled but does not support uploading from bytes or BinaryIO, falling back to regular uploadF)rY   Úsorted_parts_urlsr�   )r_   rN   N)Ú_get_sorted_parts_urlsr‹   r   ÚHF_HUB_ENABLE_HF_TRANSFERrh   Úpath_or_fileobjrF   r   ÚwarningsÚwarnÚ_upload_parts_hf_transferÚ_upload_parts_iterativelyr   rf   Ú_get_completion_payloadr   rd   re   r   )rY   r€   r�   rƒ   r¤   Úuse_hf_transferÚresponse_headersÚcompletion_ress           r/   r‰   r‰   K  sÙ   € ô
 /°fÈ)×J_ÑJ_ÐlvÔwÐô  ×9Ñ9€Oä×+Ò+Ü˜9×4Ñ4´cÔ:Ü˜9×4Ñ4´dÔ;ä�‰ðô	
ð  ˆñ ô 	"¨IÐIZÐgqÕrä&°ÐN_ÐlvÔwð ô !“]×'Ñ'ØÜ$Ð%5°y×7LÑ7L×7SÑ7S×7WÑ7WÓ7YÓZÜð (ó €Nô
 ˜Õ'r6   r‹   c           
      óV  — t        | j                  «       D ��cg c]1  \  }}|j                  «       rt        |«      dkD  rt	        |d«      |f‘Œ3 c}}d„ ¬«      D ��cg c]  \  }}|‘Œ	 }}}t        |«      }|t        |j                  |z  «      k7  rt        d«      ‚|S c c}}w c c}}w )Nr   é
   c                 ó   — | d   S )Nr   rG   )Úts    r/   ú<lambda>z(_get_sorted_parts_urls.<locals>.<lambda>w  s
   € ˜!˜A™$€ r6   )Úkeyz0Invalid server response to upload large LFS file)ÚsortedÚitemsÚisdigitr4   rD   r   r"   rj   )r€   r‹   r�   Úpart_numrƒ   Ú_Úsorted_part_upload_urlsÚ	num_partss           r/   r¥   r¥   n  s¶   € ô $ð -3¯L©L«N÷á(�H˜jØ×#Ñ#Ô%¬#¨h«-¸!Ò*;ô �X˜rÓ" JÒ/óñ
 ô
÷
áˆAˆzò 	ð
Ðñ 
ô Ð+Ó,€IØ”D˜×)Ñ)¨JÑ6Ó7Ò7ÜÐKÓLÐLØ"Ð"ùóùó
s   ™6B
ÁB%r®   rX   c                 ó¼   — g }t        | «      D ]H  \  }}|j                  d«      }|�|dk(  rt        d|› d|dz   › �«      ‚|j                  |dz   |dœ«       ŒJ ||dœS )Nrx   rR   zInvalid etag (`z`) returned for part r   )rw   rx   )rX   r{   )Ú	enumeraterg   rj   Úappend)r®   rX   r{   Úpart_numberr€   rx   s         r/   r¬   r¬   €  s�   € Ø "€EÜ(Ð)9Ó:ò 	
Ñˆ�VØ�z‰z˜&Ó!ˆØˆ<˜4 2š:Ü˜¨t¨fÐ4IÈ+ÐXYÉ/ÐIZÐ[Ó\Ð\Ø�‰à)¨A™oØñõ	
ð		
ð  Ñ'Ð'r6   r¤   c                 ó6  — g }| j                  d¬«      5 }t        |«      D ]S  \  }}t        |||z  |¬«      5 }t        d||¬«      }t	        |«       |j                  |j                  «       d d d «       ŒU 	 d d d «       |S # 1 sw Y   ŒjxY w# 1 sw Y   |S xY w)NTr�   )Ú	seek_fromÚ
read_limitrŸ   r    )r¡   r¾   r   r   r   r¿   rN   )	rY   r¤   r�   rN   r7   Úpart_idxÚpart_upload_urlÚfileobj_sliceÚpart_upload_ress	            r/   r«   r«   �  s±   € ð €GØ	×	Ñ	 TÐ	Ó	*ð 
8¨gÜ)2Ð3DÓ)Eò 		8Ñ%ˆH�oÜØØ$ xÑ/Ø%ôð 8ð ä".¨u°oÈMÔ"Z�Ü# OÔ4Ø—‘˜×6Ñ6Ô7÷8ð 8ñ		8÷
8ð €N÷8ð 8ú÷
8ð €Nús"   •#B¸5BÁ-
BÂBÂBÂBc                 ó^  — 	 ddl m} dt	        j
                  |«      j                  v }|st        j                  d«       | j                  j                  }| j                  }t        |«      dkD  rd|dd  › �}t        d	d
|d|t        t        j!                  «       «      d¬«      5 }	  |d| j"                  ||ddddœ|rd|j$                  ini ¤Ž}|s|j%                  |«       |cd d d «       S # t        $ r t        d«      ‚w xY w# t&        $ r}	t)        d«      |	‚d }	~	ww xY w# 1 sw Y   y xY w)Nr   )Úmultipart_uploadzªFast uploading using 'hf_transfer' is enabled (HF_HUB_ENABLE_HF_TRANSFER=1) but 'hf_transfer' package is not available in your environment. Try `pip install hf_transfer`.Úcallbackz”You are using an outdated version of `hf_transfer`. Consider upgrading to latest version to enable progress bars using `pip install -U hf_transfer`.é(   u   (â€¦)iØÿÿÿÚBTzhuggingface_hub.lfs_upload)ÚunitÚ
unit_scaleÚtotalÚinitialÚdescÚdisabler\   é€   é   é   )Ú	file_pathÚ
parts_urlsr�   Ú	max_filesÚparallel_failuresÚmax_retriesz~An error occurred while uploading using `hf_transfer`. Consider disabling HF_HUB_ENABLE_HF_TRANSFER for better error handling.rG   )Úhf_transferrÉ   ÚImportErrorrj   ÚinspectÚ	signatureÚ
parametersr¨   r©   r‹   r"   r†   r4   r   r   r„   ÚgetEffectiveLevelr§   ÚupdateÚ	ExceptionÚRuntimeError)
rY   r¤   r�   rÉ   Úsupports_callbackrÏ   rÑ   ÚprogressÚoutputÚes
             r/   rª   rª   ¡  sh  € ð
Ý0ð #¤g×&7Ñ&7Ð8HÓ&I×&TÑ&TÐTÐÙÜ�‰ð cô	
ð ×!Ñ!×&Ñ&€EØ×!Ñ!€DÜ
ˆ4ƒy�2‚~Ø�t˜C˜D�z�lÐ#ˆä	ØØØØØÜ ¤×!9Ñ!9Ó!;Ó<Ø)ô
ð ð 
ð	Ù%ð Ø#×3Ñ3Ø,Ø%ØØ"%Øññ 5F�J §¡Ñ0È2ñˆFñ !Ø�O‰O˜EÔ"Ø÷5ñ øô# ò 
ÜðQó
ð 	
ð
ûôH ò 	Üð*óð ðûð	ú÷'ð ús;   ‚C. Â%D#Â')DÃD#Ã.DÄ	D ÄDÄD Ä D#Ä#D,)NNNN)NNN)DrA   rÝ   r)   Úrer¨   Údataclassesr   Úmathr   Úos.pathr   Úpathlibr   Útypingr   r   r	   r
   r   r   r   r   Úurllib.parser   Úhuggingface_hubr   Úutilsr   r   r   r   r   r   r   r   Ú
utils._lfsr   Ú	utils.shar   r   Ú
utils.tqdmr   Ú_commit_apir   Ú
get_loggerr>   r„   ÚcompileÚ	OID_REGEXÚLFS_MULTIPART_UPLOAD_COMMANDre   r!   rF   r”   rt   rv   rz   r�   r‡   rk   rl   rŠ   rD   r‰   r¥   r¬   r«   rª   rG   r6   r/   ú<module>rù      sù  ðñ 5ã Û 	Û 	Û Ý !Ý Ý Ý ß \× \Ó \Ý  å %÷	÷ 	ó 	õ %ß *Ý (ñ Ý/à	ˆ×	Ñ	˜HÓ	%€àˆB�J‰JÐ(Ó)€	à5Ð ð -Ø2ñ€ð ÷&9ð &9ó ð&9ðR ð #Ø"Ø(,Ø%)ñSØ˜:Ñ&ðSà�C‰=ðSð ðSð ð	Sð
 �s‰mðSð �s‰mðSð �d˜3 ˜8‘nÑ%ðSð ˜˜S™	Ñ"ðSð ˆ4�‰:�t˜D‘z 8¨C¡=Ð0Ñ1òSó ðSôl�9ô ô
˜ô ð  Ø(,Ø"ñCAØ#ðCAàðCAð �C‰=ðCAð �d˜3 ˜8‘nÑ%ð	CAð
 �s‰mðCAð 
óCAðL Tó ð¨tó ð¨4ó ð&Ð#7ð &ÀSð &ÈTó &ð, (Ð"6ð  (Àð  (ÐRUð  (Ðcfð  (Ðkoó  (ðF# 4ð #°jð #Ècð #ÐVZÐ[^ÑV_ó #ð$(¨d°4©jð (¸sð (ÐGYó (ðØ#ðØ8<¸S¹	ðØORðà	ˆ$�Zóð$1Ø#ð1Ø8<¸S¹	ð1ØORð1à	ˆ$�Zô1r6   