ó
    &ÝNj˜I  ã                   ó,
  • % S SK r S SKJr  S SKJr  S SKJrJr  S SKJ	r	  \
" \R                  5      rSrS rS rS rS rS rS rS rS rS rS rS rS rS rS r\(       Ga#  \R8                  " \R:                  " S\R<                  " 5       5      5      SS r\R>                  " 5       r\R@                  " 5       r\RB                  " 5       r\RD                  " 5       r\RF                  " 5       r\RH                  " 5       r\RJ                  " 5       r\RL                  " 5       r\RN                  " 5       r\RP                  " 5       r\RR                  " 5       r\RT                  " 5       r\RV                  " 5       r\RX                  " 5       r\RZ                  " 5       r.\/\0S'   \Rb                  " 5       r2\/\0S'   \Rf                  " 5       r4\/\0S	'   \Rj                  " 5       r6\/\0S
'   \Rn                  " 5       r8\/\0S'   \Rr                  " 5       r:\/\0S'   \Rv                  " 5       r<\/\0S'   \Rz                  " 5       r>\/\0S'   \R~                  " 5       r@\/\0S'   \R8                  " \R:                  " S\R‚                  " 5       5      5      SS rB\C\0S'   \Rˆ                  " 5       rE\/\0S'   \RŒ                  " 5       rG\/\0S'   \R�                  " 5       rI\/\0S'   \R”                  " 5       rK\/\0S'   \R˜                  " 5       rM\/\0S'   \Rœ                  " 5       rO\/\0S'   \R                   " 5       rQ\/\0S'   \R¤                  " 5       rS\/\0S'   \R¨                  " 5       rU\/\0S'   \R¬                  " 5       rW\/\0S'   \R8                  " \R:                  " S\R°                  " 5       5      5      SS rY\C\0S'   \R´                  " 5       r[\/\0S'   \R¸                  " 5       r]\/\0S'   \R¼                  " 5       r_\/\0S'   \RÀ                  " 5       ra\/\0S'   \RÄ                  " 5       rc\/\0S '   \RÈ                  " 5       re\/\0S!'   \RÌ                  " 5       rg\/\0S"'   \RÐ                  " 5       ri\/\0S#'   \RÔ                  " 5       rk\/\0S$'   \RØ                  " 5       rm\/\0S%'   \rn\ro\rp\rq\rr\rsS&rtS'ruS(rvS)rw\w4S*\/S+\/S,\/S-\/S.S4
S/ jjrxS0\/S1\/S.\\/\/\/4   4S2 jryS3\w4S4\CS5\CS*\/S+\/S,\/S6\/S-\/S.\C4S7 jjrz\n\o4S4\CS0\/S1\/S.\C4S8 jjr{S9\CS4\CS.\
4S: jr|S0\/S1\/S;\/S.S4S< jr}S=\/S4\CS5\CS0\/S1\/S;\/S.\C4S> jr~S4\CS0\/S1\/S;\/S.\C4
S? jrS9\CS4\CS.\
4S@ jr€\€r�g)Aé    N)ÚTuple)ÚffiÚlib)Úensureó    úchar *Úcrypto_pwhash_ALG_ARGON2I13Úcrypto_pwhash_ALG_ARGON2ID13Úcrypto_pwhash_ALG_DEFAULTÚcrypto_pwhash_SALTBYTESÚcrypto_pwhash_STRBYTESÚcrypto_pwhash_PASSWD_MINÚcrypto_pwhash_PASSWD_MAXÚcrypto_pwhash_BYTES_MINÚcrypto_pwhash_BYTES_MAXÚcrypto_pwhash_argon2i_STRPREFIXÚ"crypto_pwhash_argon2i_MEMLIMIT_MINÚ"crypto_pwhash_argon2i_MEMLIMIT_MAXÚ"crypto_pwhash_argon2i_OPSLIMIT_MINÚ"crypto_pwhash_argon2i_OPSLIMIT_MAXÚ*crypto_pwhash_argon2i_OPSLIMIT_INTERACTIVEÚ*crypto_pwhash_argon2i_MEMLIMIT_INTERACTIVEÚ'crypto_pwhash_argon2i_OPSLIMIT_MODERATEÚ'crypto_pwhash_argon2i_MEMLIMIT_MODERATEÚ(crypto_pwhash_argon2i_OPSLIMIT_SENSITIVEÚ(crypto_pwhash_argon2i_MEMLIMIT_SENSITIVEÚ crypto_pwhash_argon2id_STRPREFIXÚ#crypto_pwhash_argon2id_MEMLIMIT_MINÚ#crypto_pwhash_argon2id_MEMLIMIT_MAXÚ#crypto_pwhash_argon2id_OPSLIMIT_MINÚ#crypto_pwhash_argon2id_OPSLIMIT_MAXÚ+crypto_pwhash_argon2id_OPSLIMIT_INTERACTIVEÚ+crypto_pwhash_argon2id_MEMLIMIT_INTERACTIVEÚ(crypto_pwhash_argon2id_OPSLIMIT_MODERATEÚ(crypto_pwhash_argon2id_MEMLIMIT_MODERATEÚ)crypto_pwhash_argon2id_OPSLIMIT_SENSITIVEÚ)crypto_pwhash_argon2id_MEMLIMIT_SENSITIVEéÿÿÿ?é?   l   ÿÿÿÿ i   ÚnÚrÚpÚmaxmemÚreturnc                 óò  • [        US:g  S[        R                  S9  [        US:g  S[        R                  S9  [        X S-
  -  S:H  S[        R                  S9  [        U S:„  S[        R                  S9  [        U[        U-  :*  SR	                  [        5      [        R                  S9  [        U SS	U-  -  :  [        R                  S9  US
-  U-  n[
        S
-  n[        U S-   XQ-  :*  [        R                  S9  SU-  U S-   -  S-  n[        U[
        U-
  :*  [        R                  S9  [        U[        R                  U-
  :*  [        R                  S9  [        XF-   U:*  S[        R                  S9  g )Nr   zInvalid block size©ÚraisingzInvalid parallelization factoré   z Cost factor must be a power of 2zCost factor must be at least 2zp*r is greater than {}é   é€   é   é    é   z6Memory limit would be exceeded with the chosen n, r, p)r   ÚexcÚ
ValueErrorÚSCRYPT_PR_MAXÚformatÚ
UINT64_MAXÚsysÚmaxsize)r*   r+   r,   r-   ÚBlenÚiÚVlens          ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/nacl/bindings/crypto_pwhash.pyÚ_check_memory_occupationrC   ¿   sB  € ô ˆ1�‰6Ð'´·±Ò@ä
ˆ1�‰6Ð3¼S¿^¹^ÒLä
Ø	
�!‰e‰˜ÑØ*Ü—‘òô ˆ1ˆq‰5Ð2¼C¿N¹NÒKä
Ø	Œ]˜QÑÑØ ×'Ñ'¬Ó6Ü—‘òô ˆ1��b˜1‘f‘Ñ¬¯©Ò7àˆs‰7�Q‰;€Dä�SÑ€Aä
ˆ1ˆq‰5�A‘E‰>¤3§>¡>Ò2à�‰6�Q˜‘UÑ˜aÑ€Dä
ˆ4”: Ñ$Ñ$¬c¯n©nÒ=ä
ˆ4”3—;‘; Ñ%Ñ%¬s¯~©~Ò>ä
Ø‰�vÑØ@Ü—‘ór   ÚopslimitÚmemlimitc                 ó  • U S:  a  Sn SnXS-  :  a,  SnU SU-  -  n[        SS5       H  nSU-  US-  :”  d  M    OB   O?XS-  -  n[        SS5       H  nSU-  US-  :”  d  M    O   U S-  SW-  -  nUS	:”  a  S	nXb-  nWX#4$ )
z/Python implementation of libsodium's pickparamsi €  é   r6   r2   r7   r)   r5   r4   r(   )Úrange)rD   rE   r+   r,   ÚmaxnÚn_log2Úmaxrps          rB   Ú nacl_bindings_pick_scrypt_paramsrL   é   s¹   € ð
 �%ÓØˆà	€Aà˜r‘>Ó"ØˆØ˜A ™EÑ"ˆÜ˜A˜r–lˆFØ�6‘	˜d a™iÕ(Ùò #ð  ™GÑ$ˆÜ˜A˜r–lˆFØ�6‘	˜T Q™YÕ&Ùñ #ð ˜Q‘ A v¡IÑ.ˆà�:ÓØˆEà‰Jˆà�1ˆ<Ðr   é@   ÚpasswdÚsaltÚdklenc                 óŒ  • [        [        S[        R                  S9  [        [	        U[
        5      [        S9  [        [	        U[
        5      [        S9  [        [	        U[
        5      [        S9  [        [	        U [        5      [        S9  [        [	        U[        5      [        S9  [        X#XF5        [        R                  " SU5      n[        R                  " U [        U 5      U[        U5      X#XGU5	      n[        US:H  S[        R                  S9  [        R                  " [        R                   " SU5      U5      SS $ )aR  
Derive a cryptographic key using the ``passwd`` and ``salt``
given as input.

The work factor can be tuned by by picking different
values for the parameters

:param bytes passwd:
:param bytes salt:
:param bytes salt: *must* be *exactly* :py:const:`.SALTBYTES` long
:param int dklen:
:param int opslimit:
:param int n:
:param int r: block size,
:param int p: the parallelism factor
:param int maxmem: the maximum available memory available for scrypt's
                   operations
:rtype: bytes
:raises nacl.exceptions.UnavailableError: If called when using a
    minimal build of libsodium.
úNot available in minimal buildr0   z	uint8_t[]r   ú$Unexpected failure in key derivationr   N)r   Ú&has_crypto_pwhash_scryptsalsa208sha256r8   ÚUnavailableErrorÚ
isinstanceÚintÚ	TypeErrorÚbytesrC   r   Únewr   Ú%crypto_pwhash_scryptsalsa208sha256_llÚlenÚRuntimeErrorÚbufferÚcast)	rN   rO   r*   r+   r,   rP   r-   ÚbufÚrets	            rB   r[   r[   	  só   € ô< Ü.Ø(Ü×$Ñ$òô Œ:�aœÓ¤yÒ1Ü
Œ:�aœÓ¤yÒ1Ü
Œ:�aœÓ¤yÒ1ä
Œ:�fœeÓ$¬iÒ8Ü
Œ:�dœEÓ"¬IÒ6ä˜Q 1Ô-ä
�'Š'�+˜uÓ
%€Cä
×
3Ò
3Ø”�F“˜T¤3 t£9¨a°A¸Eó€Cô Øˆq‰Ø.Ü× Ñ òô �:Š:”c—h’h˜x¨Ó-¨uÓ5±aÐ8Ð8r   c                 ó  • [        [        S[        R                  S9  [        R
                  " S[        5      n[        R                  " X0[        U 5      X5      n[        US:H  S[        R                  S9  [        R                  " U5      $ )aL  
Derive a cryptographic key using the ``passwd`` and ``salt``
given as input, returning a string representation which includes
the salt and the tuning parameters.

The returned string can be directly stored as a password hash.

See :py:func:`.crypto_pwhash_scryptsalsa208sha256` for a short
discussion about ``opslimit`` and ``memlimit`` values.

:param bytes passwd:
:param int opslimit:
:param int memlimit:
:return: serialized key hash, including salt and tuning parameters
:rtype: bytes
:raises nacl.exceptions.UnavailableError: If called when using a
    minimal build of libsodium.
rR   r0   úchar[]r   z&Unexpected failure in password hashing)r   rT   r8   rU   r   rZ   ÚSCRYPT_STRBYTESr   Ú&crypto_pwhash_scryptsalsa208sha256_strr\   r]   Ústring)rN   rD   rE   r`   ra   s        rB   re   re   E  su   € ô. Ü.Ø(Ü×$Ñ$òô �'Š'�(œOÓ
,€Cä
×
4Ò
4Ø”S˜“[ (ó€Cô Øˆq‰Ø0Ü× Ñ òô �:Š:�c‹?Ðr   Úpasswd_hashc                 ó  • [        [        S[        R                  S9  [        [	        U 5      [
        S-
  :H  S[        R                  S9  [        R                  " X[	        U5      5      n[        US:H  S[        R                  S9  g)a  
Verifies the ``passwd`` against the ``passwd_hash`` that was generated.
Returns True or False depending on the success

:param passwd_hash: bytes
:param passwd: bytes
:rtype: boolean
:raises nacl.exceptions.UnavailableError: If called when using a
    minimal build of libsodium.
rR   r0   r2   zInvalid password hashr   úWrong passwordT)
r   rT   r8   rU   r\   rd   r9   r   Ú-crypto_pwhash_scryptsalsa208sha256_str_verifyÚInvalidkeyError©rg   rN   ra   s      rB   rj   rj   q  sx   € ô Ü.Ø(Ü×$Ñ$òô ÜˆKÓœO¨aÑ/Ñ/ØÜ—‘òô ×
;Ò
;ØœS ›[ó€Cô ˆ3�!‰8Ð%¬s×/BÑ/BÒCàr   Úalgc                 óŠ  • U[         :X  aÍ  U[        :  a)  [        R                  " SR	                  [        5      5      eU[
        :”  a)  [        R                  " SR	                  [
        5      5      eU [        :  a)  [        R                  " SR	                  [        5      5      eU [        :”  a)  [        R                  " SR	                  [        5      5      eg U[        :X  aÍ  U[        :  a)  [        R                  " SR	                  [        5      5      eU[        :”  a)  [        R                  " SR	                  [        5      5      eU [        :  a)  [        R                  " SR	                  [        5      5      eU [        :”  a)  [        R                  " SR	                  [        5      5      eg [        R                  " S5      e)Nz"memlimit must be at least {} bytesz!memlimit must be at most {} byteszopslimit must be at least {}zopslimit must be at most {}zUnsupported algorithm)r	   r   r8   r9   r;   r   r   r   r
   r   r   r    r!   rX   )rD   rE   rm   s      rB   Ú_check_argon2_limits_algro   ’  s–  € Ø
Ô)Ó)ØÔ8Ó8Ü—.’.Ø4×;Ñ;Ü6óóð ð
 Ô:Ó:Ü—.’.Ø3×:Ñ:Ü6óóð ð
 Ô8Ó8Ü—.’.Ø.×5Ñ5Ü6óóð ð
 Ô:Ó:Ü—.’.Ø-×4Ñ4Ü6óóð ð ;ð 
Ô,Ó	,ØÔ9Ó9Ü—.’.Ø4×;Ñ;Ü7óóð ð
 Ô;Ó;Ü—.’.Ø3×:Ñ:Ü7óóð ð
 Ô9Ó9Ü—.’.Ø.×5Ñ5Ü7óóð ð
 Ô;Ó;Ü—.’.Ø-×4Ñ4Ü7óóð ð <ô �mŠmÐ3Ó4Ð4r   Úoutlenc           
      ó¸  • [        [        U [        5      [        R                  S9  [        [        U[        5      [        R                  S9  [        [        U[        5      [        R                  S9  [        [        U[        5      [        R                  S9  [        [        U[
        5      [        R                  S9  [        U5      [        :w  a)  [        R                  " SR                  [        5      5      eU [        :  a)  [        R                  " SR                  [        5      5      eU [        :”  a)  [        R                  " SR                  [        5      5      e[        X4U5        [        R                  " SU 5      n[        R                   " X`U[        U5      X#XE5      n[        US:H  S[        R"                  S9  [        R$                  " X`5      SS $ )	aÀ  
Derive a raw cryptographic key using the ``passwd`` and the ``salt``
given as input to the ``alg`` algorithm.

:param outlen: the length of the derived key
:type outlen: int
:param passwd: The input password
:type passwd: bytes
:param salt:
:type salt: bytes
:param opslimit: computational cost
:type opslimit: int
:param memlimit: memory cost
:type memlimit: int
:param alg: algorithm identifier
:type alg: int
:return: derived key
:rtype: bytes
r0   z"salt must be exactly {} bytes longz*derived key must be at least {} bytes longz)derived key must be at most {} bytes longzunsigned char[]r   rS   N)r   rV   rW   r8   rX   rY   r\   r   r9   r;   r   r   ro   r   rZ   r   Úcrypto_pwhashr]   r^   )rp   rN   rO   rD   rE   rm   Úoutbufra   s           rB   Úcrypto_pwhash_algrt   Ê  se  € ô6 Œ:�fœcÓ"¬C¯M©MÒ:Ü
Œ:�h¤Ó$¬c¯m©mÒ<Ü
Œ:�h¤Ó$¬c¯m©mÒ<Ü
Œ:�cœ3Ó¬¯©Ò7Ü
Œ:�fœeÓ$¬c¯m©mÒ<ä
ˆ4ƒyÔ+Ó+Ü�nŠnØ0×7Ñ7Ü'óó
ð 	
ð Ô'Ó'Ü�nŠnØ8×?Ñ?Ü'óó
ð 	
ð 
Ô)Ó	)Ü�nŠnØ7×>Ñ>Ü'óó
ð 	
ô ˜X°Ô5ä�WŠWÐ&¨Ó/€Fä
×
Ò
Ø˜¤ F£¨T¸Xó€Cô Øˆq‰Ø.Ü× Ñ òô �:Š:�fÓ%¡aÐ(Ð(r   c                 ó˜  • [        [        U[        5      [        S9  [        [        U[        5      [        S9  [        [        U [        5      [        S9  [        XU5        [        R                  " SS5      n[        R                  " X@[        U 5      XU5      n[        US:H  S[        R                  S9  [        R                  " U5      $ )aÉ  
Derive a cryptographic key using the ``passwd`` given as input
and a random salt, returning a string representation which
includes the salt, the tuning parameters and the used algorithm.

:param passwd: The input password
:type passwd: bytes
:param opslimit: computational cost
:type opslimit: int
:param memlimit: memory cost
:type memlimit: int
:param alg: The algorithm to use
:type alg: int
:return: serialized derived key and parameters
:rtype: bytes
r0   rc   r4   r   rS   )r   rV   rW   rX   rY   ro   r   rZ   r   Úcrypto_pwhash_str_algr\   r8   r]   rf   )rN   rD   rE   rm   rs   ra   s         rB   rv   rv     sœ   € ô, Œ:�h¤Ó$¬iÒ8Ü
Œ:�h¤Ó$¬iÒ8Ü
Œ:�fœeÓ$¬iÒ8ä˜X°Ô5ä�WŠW�X˜sÓ#€Fä
×
#Ò
#Øœ˜F› X¸ó€Cô Øˆq‰Ø.Ü× Ñ òô �:Š:�fÓÐr   c                 ó6  • [        [        U [        5      [        S9  [        [        U[        5      [        S9  [        [	        U 5      S:*  S[
        R                  S9  [        R                  " X[	        U5      5      n[        US:H  S[
        R                  S9  g)a  
Verifies the ``passwd`` against a given password hash.

Returns True on success, raises InvalidkeyError on failure
:param passwd_hash: saved password hash
:type passwd_hash: bytes
:param passwd: password to be checked
:type passwd: bytes
:return: success
:rtype: boolean
r0   é   z#Hash must be at most 127 bytes longr   ri   T)
r   rV   rY   rX   r\   r8   r9   r   Úcrypto_pwhash_str_verifyrk   rl   s      rB   ry   ry   <  sw   € ô Œ:�k¤5Ó)´9Ò=Ü
Œ:�fœeÓ$¬iÒ8Ü
ÜˆKÓ˜CÑØ-Ü—‘òô ×
&Ò
& {¼CÀ»KÓ
H€Cä
ˆ3�!‰8Ð%¬s×/BÑ/BÒCàr   )‚r=   Útypingr   Únacl.exceptionsÚ
exceptionsr8   Únacl._sodiumr   r   r   ÚboolÚ-PYNACL_HAS_CRYPTO_PWHASH_SCRYPTSALSA208SHA256rT   Ú,crypto_pwhash_scryptsalsa208sha256_STRPREFIXÚ,crypto_pwhash_scryptsalsa208sha256_SALTBYTESÚ+crypto_pwhash_scryptsalsa208sha256_STRBYTESÚ-crypto_pwhash_scryptsalsa208sha256_PASSWD_MINÚ-crypto_pwhash_scryptsalsa208sha256_PASSWD_MAXÚ,crypto_pwhash_scryptsalsa208sha256_BYTES_MINÚ,crypto_pwhash_scryptsalsa208sha256_BYTES_MAXÚ/crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MINÚ/crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAXÚ/crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MINÚ/crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAXÚ7crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVEÚ7crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVEÚ5crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVEÚ5crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVErf   r_   Ú,crypto_pwhash_scryptsalsa208sha256_strprefixÚ,crypto_pwhash_scryptsalsa208sha256_saltbytesÚ+crypto_pwhash_scryptsalsa208sha256_strbytesÚ-crypto_pwhash_scryptsalsa208sha256_passwd_minÚ-crypto_pwhash_scryptsalsa208sha256_passwd_maxÚ,crypto_pwhash_scryptsalsa208sha256_bytes_minÚ,crypto_pwhash_scryptsalsa208sha256_bytes_maxÚ/crypto_pwhash_scryptsalsa208sha256_memlimit_minÚ/crypto_pwhash_scryptsalsa208sha256_memlimit_maxÚ/crypto_pwhash_scryptsalsa208sha256_opslimit_minÚ/crypto_pwhash_scryptsalsa208sha256_opslimit_maxÚ7crypto_pwhash_scryptsalsa208sha256_opslimit_interactiveÚ7crypto_pwhash_scryptsalsa208sha256_memlimit_interactiveÚ5crypto_pwhash_scryptsalsa208sha256_opslimit_sensitiveÚ5crypto_pwhash_scryptsalsa208sha256_memlimit_sensitiveÚcrypto_pwhash_alg_argon2i13r	   rW   Ú__annotations__Úcrypto_pwhash_alg_argon2id13r
   Úcrypto_pwhash_alg_defaultr   Úcrypto_pwhash_saltbytesr   Úcrypto_pwhash_strbytesr   Úcrypto_pwhash_passwd_minr   Úcrypto_pwhash_passwd_maxr   Úcrypto_pwhash_bytes_minr   Úcrypto_pwhash_bytes_maxr   Úcrypto_pwhash_argon2i_strprefixr   rY   Ú"crypto_pwhash_argon2i_memlimit_minr   Ú"crypto_pwhash_argon2i_memlimit_maxr   Ú"crypto_pwhash_argon2i_opslimit_minr   Ú"crypto_pwhash_argon2i_opslimit_maxr   Ú*crypto_pwhash_argon2i_opslimit_interactiver   Ú*crypto_pwhash_argon2i_memlimit_interactiver   Ú'crypto_pwhash_argon2i_opslimit_moderater   Ú'crypto_pwhash_argon2i_memlimit_moderater   Ú(crypto_pwhash_argon2i_opslimit_sensitiver   Ú(crypto_pwhash_argon2i_memlimit_sensitiver   Ú crypto_pwhash_argon2id_strprefixr   Ú#crypto_pwhash_argon2id_memlimit_minr   Ú#crypto_pwhash_argon2id_memlimit_maxr   Ú#crypto_pwhash_argon2id_opslimit_minr    Ú#crypto_pwhash_argon2id_opslimit_maxr!   Ú+crypto_pwhash_argon2id_opslimit_interactiver"   Ú+crypto_pwhash_argon2id_memlimit_interactiver#   Ú(crypto_pwhash_argon2id_opslimit_moderater$   Ú(crypto_pwhash_argon2id_memlimit_moderater%   Ú)crypto_pwhash_argon2id_opslimit_sensitiver&   Ú)crypto_pwhash_argon2id_memlimit_sensitiver'   ÚSCRYPT_OPSLIMIT_INTERACTIVEÚSCRYPT_MEMLIMIT_INTERACTIVEÚSCRYPT_OPSLIMIT_SENSITIVEÚSCRYPT_MEMLIMIT_SENSITIVEÚSCRYPT_SALTBYTESrd   r:   ÚLOG2_UINT64_MAXr<   ÚSCRYPT_MAX_MEMrC   rL   r[   re   rj   ro   rt   rv   ry   Ú crypto_pwhash_argon2i_str_verify© r   rB   Ú<module>rÇ      s  ðô Ý å ß !Ý "ñ *.Ø×5Ñ5ó*Ð &ð 03Ð ,Ø/0Ð ,Ø./Ð +Ø01Ð -Ø01Ð -Ø/0Ð ,Ø/0Ð ,Ø23Ð /Ø23Ð /Ø23Ð /Ø23Ð /Ø:;Ð 7Ø:;Ð 7Ø89Ð 5Ø89Ð 5ç)Ø36·:²:Ø�Š�˜3×KÒKÓMÓNó4áð4	Ð0ð 	×8Ò8Ó:ð 1ð 	×7Ò7Ó9ð 0ð 	×9Ò9Ó;ð 2ð 	×9Ò9Ó;ð 2ð 	×8Ò8Ó:ð 1ð 	×8Ò8Ó:ð 1ð 	×;Ò;Ó=ð 4ð 	×;Ò;Ó=ð 4ð 	×;Ò;Ó=ð 4ð 	×;Ò;Ó=ð 4ð 	×CÒCÓEð <ð 	×CÒCÓEð <ð 	×AÒAÓCð :ð 	×AÒAÓCð :ð $'×#BÒ#BÓ#DÐ ˜SÓ DØ$'×$DÒ$DÓ$FÐ ˜cÓ FØ!$×!>Ò!>Ó!@Ð ˜3Ó @à"×:Ò:Ó<Ð ˜Ó <Ø!×8Ò8Ó:Ð ˜Ó :à #× <Ò <Ó >Ð ˜#Ó >Ø #× <Ò <Ó >Ð ˜#Ó >Ø"×:Ò:Ó<Ð ˜Ó <Ø"×:Ò:Ó<Ð ˜Ó <à),¯ªØ‡H‚HˆX�s×:Ò:Ó<Ó=ó*áð*Ð  ó ð ×*Ò*Ó,ð # Có ð ×*Ò*Ó,ð # Có ð ×*Ò*Ó,ð # Có ð ×*Ò*Ó,ð # Có ð ×2Ò2Ó4ð +¨Có ð ×2Ò2Ó4ð +¨Có ð ×/Ò/Ó1ð (¨ó ð ×/Ò/Ó1ð (¨ó ð ×0Ò0Ó2ð )¨#ó ð ×0Ò0Ó2ð )¨#ó ð +.¯*ª*Ø‡H‚HˆX�s×;Ò;Ó=Ó>ó+áð+Ð   %ó ð ×+Ò+Ó-ð $ Só ð ×+Ò+Ó-ð $ Só ð ×+Ò+Ó-ð $ Só ð ×+Ò+Ó-ð $ Só ð ×3Ò3Ó5ð ,¨Só ð ×3Ò3Ó5ð ,¨Só ð ×0Ò0Ó2ð )¨#ó ð ×0Ò0Ó2ð )¨#ó ð ×1Ò1Ó3ð *¨3ó ð ×1Ò1Ó3ð *¨3ó ð
 <ð ð <ð ð :ð ð :ð ð @Ð Ø=€à€Ø€Ø€
Ø#€ð +9ñ'Ø
ð'Øð'Øð'Ø$'ð'à	õ'ðTØðØ ðà
ˆ3��Sˆ=ÑôðL Ø ñ99Øð99à
ð99ð ð99ð ð	99ð
 ð99ð ð99ð ð99ð õ99ð| 0Ø/ñ)Øð)àð)ð ð)ð õ	)ðXØðØ %ðà	ôðB55 sð 55°cð 55Àð 55Èô 55ðpD)ØðD)àðD)ð ðD)ð ð	D)ð
 ðD)ð 
ðD)ð ôD)ðN(Øð(àð(ð ð(ð 
ð	(ð
 ô(ðV¨%ð ¸ð À4ô ð6 $<Ñ  r   