§
    &xÅjïK  ã                   ó\	  — U d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	  e
ej        ¦  «        ZdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Ze�r ej         ej        d ej        ¦   «         ¦  «        ¦  «        dd…         Z ej        ¦   «         Z ej         ¦   «         Z ej!        ¦   «         Z ej"        ¦   «         Z ej#        ¦   «         Z ej$        ¦   «         Z ej%        ¦   «         Z ej&        ¦   «         Z ej'        ¦   «         Z ej(        ¦   «         Z ej)        ¦   «         Z ej*        ¦   «         Z ej+        ¦   «         Z ej,        ¦   «         Z ej-        ¦   «         Z.e/e0d<    ej1        ¦   «         Z2e/e0d<    ej3        ¦   «         Z4e/e0d	<    ej5        ¦   «         Z6e/e0d
<    ej7        ¦   «         Z8e/e0d<    ej9        ¦   «         Z:e/e0d<    ej;        ¦   «         Z<e/e0d<    ej=        ¦   «         Z>e/e0d<    ej?        ¦   «         Z@e/e0d<    ej         ej        d ejA        ¦   «         ¦  «        ¦  «        dd…         ZBeCe0d<    ejD        ¦   «         ZEe/e0d<    ejF        ¦   «         ZGe/e0d<    ejH        ¦   «         ZIe/e0d<    ejJ        ¦   «         ZKe/e0d<    ejL        ¦   «         ZMe/e0d<    ejN        ¦   «         ZOe/e0d<    ejP        ¦   «         ZQe/e0d<    ejR        ¦   «         ZSe/e0d<    ejT        ¦   «         ZUe/e0d<    ejV        ¦   «         ZWe/e0d<    ej         ej        d ejX        ¦   «         ¦  «        ¦  «        dd…         ZYeCe0d<    ejZ        ¦   «         Z[e/e0d<    ej\        ¦   «         Z]e/e0d<    ej^        ¦   «         Z_e/e0d<    ej`        ¦   «         Zae/e0d<    ejb        ¦   «         Zce/e0d <    ejd        ¦   «         Zee/e0d!<    ejf        ¦   «         Zge/e0d"<    ejh        ¦   «         Zie/e0d#<    ejj        ¦   «         Zke/e0d$<    ejl        ¦   «         Zme/e0d%<   eZneZoeZpeZqeZreZsd&Ztd'Zud(Zvd)Zwewfd*e/d+e/d,e/d-e/d.df
d/„Zxd0e/d1e/d.ee/e/e/f         fd2„Zyd3ewfd4eCd5eCd*e/d+e/d,e/d6e/d-e/d.eCfd7„Zzeneofd4eCd0e/d1e/d.eCfd8„Z{d9eCd4eCd.e
fd:„Z|d0e/d1e/d;e/d.dfd<„Z}d=e/d4eCd5eCd0e/d1e/d;e/d.eCfd>„Z~d4eCd0e/d1e/d;e/d.eCf
d?„Zd9eCd4eCd.e
fd@„Z€e€Z�dS )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                 óR  — t          |dk    dt          j        ¬¦  «         t          |dk    dt          j        ¬¦  «         t          | | dz
  z  dk    dt          j        ¬¦  «         t          | dk    dt          j        ¬¦  «         t          |t          |z  k    d                     t          ¦  «        t          j        ¬¦  «         t          | dd	|z  z  k     t          j        ¬¦  «         |d
z  |z  }t
          d
z  }t          | dz   ||z  k    t          j        ¬¦  «         d|z  | dz   z  dz  }t          |t
          |z
  k    t          j        ¬¦  «         t          |t          j        |z
  k    t          j        ¬¦  «         t          ||z   |k    dt          j        ¬¦  «         d S )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          úLC:\Projects\Historical\venv\Lib\site-packages\nacl/bindings/crypto_pwhash.pyÚ_check_memory_occupationrC   ¿   s«  € õ ˆ1�Š6Ð'µ´Ð@Ñ@Ô@Ð@å
ˆ1�Š6Ð3½S¼^ÐLÑLÔLÐLå
Ø	
ˆa�!‰e‰˜ÒØ*Ý”ðñ ô ð õ ˆ1ˆqŠ5Ð2½C¼NÐKÑKÔKÐKå
Ø	�]˜QÑÒØ ×'Ò'­Ñ6Ô6Ý”ðñ ô ð õ ˆ1��b˜1‘f‘Ò­¬Ð7Ñ7Ô7Ð7àˆs‰7�Q‰;€Då�SÑ€Aå
ˆ1ˆq‰5�A˜‘EŠ>¥3¤>Ð2Ñ2Ô2Ð2à�‰6�Q˜‘UÑ˜aÑ€Då
ˆ4•: Ñ$Ò$­c¬nÐ=Ñ=Ô=Ð=å
ˆ4•3”; Ñ%Ò%­s¬~Ð>Ñ>Ô>Ð>å
Øˆt‰�vÒØ@Ý”ðñ ô ð ð ð r   ÚopslimitÚmemlimitc                 ó  — | dk     rd} d}| |dz  k     r,d}| d|z  z  }t          dd¦  «        D ]}d|z  |dz  k    r nŒnA||dz  z  }t          dd¦  «        D ]}d|z  |dz  k    r nŒ| dz  d|z  z  }|d	k    rd	}||z  }|||fS )
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à�8˜r‘>Ò"Ð"ØˆØ˜A ™EÑ"ˆÝ˜A˜r‘l”lð 	ð 	ˆFØ�6‘	˜d a™iÒ(Ð(Ø�ð )øð ˜A ™GÑ$ˆÝ˜A˜r‘l”lð 	ð 	ˆFØ�6‘	˜T Q™YÒ&Ð&Ø�ð 'ð ˜Q‘ A v¡IÑ.ˆà�:ÒÐØˆEà�Q‰Jˆà�1�aˆ<Ðr   é@   ÚpasswdÚsaltÚdklenc                 ó8  — t          t          dt          j        ¬¦  «         t          t	          |t
          ¦  «        t          ¬¦  «         t          t	          |t
          ¦  «        t          ¬¦  «         t          t	          |t
          ¦  «        t          ¬¦  «         t          t	          | t          ¦  «        t          ¬¦  «         t          t	          |t          ¦  «        t          ¬¦  «         t          ||||¦  «         t          j
        d|¦  «        }t          j        | t          | ¦  «        |t          |¦  «        |||||¦	  «	        }t          |dk    dt          j        ¬¦  «         t          j        t          j        d|¦  «        |¦  «        dd…         S )aš  
    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[   	  sb  € õ< Ý.Ø(ÝÔ$ðñ ô ð õ �:�a�ÑÔ¥yÐ1Ñ1Ô1Ð1Ý
�:�a�ÑÔ¥yÐ1Ñ1Ô1Ð1Ý
�:�a�ÑÔ¥yÐ1Ñ1Ô1Ð1å
�:�f�eÑ$Ô$­iÐ8Ñ8Ô8Ð8Ý
�:�d�EÑ"Ô"­IÐ6Ñ6Ô6Ð6å˜Q  1 fÑ-Ô-Ð-å
Œ'�+˜uÑ
%Ô
%€Cå
Ô
3Ø•�F‘”˜T¥3 t¡9¤9¨a°°A°s¸Eñô €Cõ ØˆqŠØ.ÝÔ ðñ ô ð õ Œ:•c”h˜x¨Ñ-Ô-¨uÑ5Ô5°a°a°aÔ8Ð8r   c                 ó*  — t          t          dt          j        ¬¦  «         t	          j        dt          ¦  «        }t          j        || t          | ¦  «        ||¦  «        }t          |dk    dt          j
        ¬¦  «         t	          j        |¦  «        S )a„  
    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  s–   € õ. Ý.Ø(ÝÔ$ðñ ô ð õ Œ'�(�OÑ
,Ô
,€Cå
Ô
4ØˆV•S˜‘[”[ (¨Hñô €Cõ ØˆqŠØ0ÝÔ ðñ ô ð õ Œ:�c‰?Œ?Ðr   Úpasswd_hashc                 ó8  — t          t          dt          j        ¬¦  «         t          t	          | ¦  «        t
          dz
  k    dt          j        ¬¦  «         t          j        | |t	          |¦  «        ¦  «        }t          |dk    dt          j	        ¬¦  «         dS )a9  
    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  s¢   € õ Ý.Ø(ÝÔ$ðñ ô ð õ ÝˆKÑÔ�O¨aÑ/Ò/ØÝ”ðñ ô ð õ Ô
;Ø�V�S ™[œ[ñô €Cõ ˆ3�!Š8Ð%­sÔ/BÐCÑCÔCÐCàˆ4r   Úalgc                 óÎ  — |t           k    rÞ|t          k     r,t          j        d                     t          ¦  «        ¦  «        ‚|t
          k    r,t          j        d                     t
          ¦  «        ¦  «        ‚| t          k     r,t          j        d                     t          ¦  «        ¦  «        ‚| t          k    r,t          j        d                     t          ¦  «        ¦  «        ‚d S |t          k    rÞ|t          k     r,t          j        d                     t          ¦  «        ¦  «        ‚|t          k    r,t          j        d                     t          ¦  «        ¦  «        ‚| t          k     r,t          j        d                     t          ¦  «        ¦  «        ‚| t          k    r,t          j        d                     t          ¦  «        ¦  «        ‚d S t          j        d¦  «        ‚)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Ð8Ý”.Ø4×;Ò;Ý6ñô ñô ð ð
 Õ:Ò:Ð:Ý”.Ø3×:Ò:Ý6ñô ñô ð ð
 Õ8Ò8Ð8Ý”.Ø.×5Ò5Ý6ñô ñô ð ð
 Õ:Ò:Ð:Ý”.Ø-×4Ò4Ý6ñô ñô ð ð ;Ð:ð 
Õ,Ò	,Ð	,ØÕ9Ò9Ð9Ý”.Ø4×;Ò;Ý7ñô ñô ð ð
 Õ;Ò;Ð;Ý”.Ø3×:Ò:Ý7ñô ñô ð ð
 Õ9Ò9Ð9Ý”.Ø.×5Ò5Ý7ñô ñô ð ð
 Õ;Ò;Ð;Ý”.Ø-×4Ò4Ý7ñô ñô ð ð <Ð;õ ŒmÐ3Ñ4Ô4Ð4r   Úoutlenc           
      óH  — t          t          | t          ¦  «        t          j        ¬¦  «         t          t          |t          ¦  «        t          j        ¬¦  «         t          t          |t          ¦  «        t          j        ¬¦  «         t          t          |t          ¦  «        t          j        ¬¦  «         t          t          |t
          ¦  «        t          j        ¬¦  «         t          |¦  «        t          k    r,t          j        d 	                    t          ¦  «        ¦  «        ‚| t          k     r,t          j        d 	                    t          ¦  «        ¦  «        ‚| t          k    r,t          j        d 	                    t          ¦  «        ¦  «        ‚t          |||¦  «         t          j        d| ¦  «        }t          j        || |t          |¦  «        ||||¦  «        }t          |dk    dt          j        ¬¦  «         t          j        || ¦  «        dd…         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   Ê  sà  € õ6 �:�f�cÑ"Ô"­C¬MÐ:Ñ:Ô:Ð:Ý
�:�h¥Ñ$Ô$­c¬mÐ<Ñ<Ô<Ð<Ý
�:�h¥Ñ$Ô$­c¬mÐ<Ñ<Ô<Ð<Ý
�:�c�3ÑÔ­¬Ð7Ñ7Ô7Ð7Ý
�:�f�eÑ$Ô$­c¬mÐ<Ñ<Ô<Ð<å
ˆ4�y„yÕ+Ò+Ð+ÝŒnØ0×7Ò7Ý'ñô ñ
ô 
ð 	
ð Õ'Ò'Ð'ÝŒnØ8×?Ò?Ý'ñô ñ
ô 
ð 	
ð 
Õ)Ò	)Ð	)ÝŒnØ7×>Ò>Ý'ñô ñ
ô 
ð 	
õ ˜X x°Ñ5Ô5Ð5åŒWÐ&¨Ñ/Ô/€Få
Ô
Ø�˜¥ F¡¤¨T°8¸XÀsñô €Cõ ØˆqŠØ.ÝÔ ðñ ô ð õ Œ:�f˜fÑ%Ô% a a aÔ(Ð(r   c                 óø  — t          t          |t          ¦  «        t          ¬¦  «         t          t          |t          ¦  «        t          ¬¦  «         t          t          | t          ¦  «        t          ¬¦  «         t          |||¦  «         t          j        dd¦  «        }t          j	        || t          | ¦  «        |||¦  «        }t          |dk    dt          j        ¬¦  «         t          j        |¦  «        S )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Ñ8Ô8Ð8Ý
�:�h¥Ñ$Ô$­iÐ8Ñ8Ô8Ð8Ý
�:�f�eÑ$Ô$­iÐ8Ñ8Ô8Ð8å˜X x°Ñ5Ô5Ð5åŒW�X˜sÑ#Ô#€Få
Ô
#Ø��˜F™œ X¨x¸ñô €Cõ ØˆqŠØ.ÝÔ ðñ ô ð õ Œ:�fÑÔÐr   c                 óŠ  — t          t          | t          ¦  «        t          ¬¦  «         t          t          |t          ¦  «        t          ¬¦  «         t          t	          | ¦  «        dk    dt
          j        ¬¦  «         t          j        | |t	          |¦  «        ¦  «        }t          |dk    dt
          j	        ¬¦  «         dS )a4  
    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   <  s«   € õ �:�k¥5Ñ)Ô)µ9Ð=Ñ=Ô=Ð=Ý
�:�f�eÑ$Ô$­iÐ8Ñ8Ô8Ð8Ý
ÝˆKÑÔ˜CÒØ-Ý”ðñ ô ð õ Ô
& {°F½CÀ¹K¼KÑ
HÔ
H€Cå
ˆ3�!Š8Ð%­sÔ/BÐCÑCÔCÐCàˆ4r   )‚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ñ*ô *Ð &ð 03Ð ,Ø/0Ð ,Ø./Ð +Ø01Ð -Ø01Ð -Ø/0Ð ,Ø/0Ð ,Ø23Ð /Ø23Ð /Ø23Ð /Ø23Ð /Ø:;Ð 7Ø:;Ð 7Ø89Ð 5Ø89Ð 5à)ñ -Ø3=°3´:ØˆŒ�ÐK˜3ÔKÑMÔMÑNÔNñ4ô 4à€a€aô4	Ð0ð 	9ˆÔ8Ñ:Ô:ð 1ð 	8ˆÔ7Ñ9Ô9ð 0ð 	:ˆÔ9Ñ;Ô;ð 2ð 	:ˆÔ9Ñ;Ô;ð 2ð 	9ˆÔ8Ñ:Ô:ð 1ð 	9ˆÔ8Ñ:Ô:ð 1ð 	<ˆÔ;Ñ=Ô=ð 4ð 	<ˆÔ;Ñ=Ô=ð 4ð 	<ˆÔ;Ñ=Ô=ð 4ð 	<ˆÔ;Ñ=Ô=ð 4ð 	DˆÔCÑEÔEð <ð 	DˆÔCÑEÔEð <ð 	BˆÔAÑCÔCð :ð 	BˆÔAÑCÔCð :ð $C 3Ô#BÑ#DÔ#DÐ ˜SÐ DÐ DÑ DØ$D CÔ$DÑ$FÔ$FÐ ˜cÐ FÐ FÑ FØ!> Ô!>Ñ!@Ô!@Ð ˜3Ð @Ð @Ñ @à:˜sÔ:Ñ<Ô<Ð ˜Ð <Ð <Ñ <Ø8˜cÔ8Ñ:Ô:Ð ˜Ð :Ð :Ñ :à < Ô <Ñ >Ô >Ð ˜#Ð >Ð >Ñ >Ø < Ô <Ñ >Ô >Ð ˜#Ð >Ð >Ñ >Ø:˜sÔ:Ñ<Ô<Ð ˜Ð <Ð <Ñ <Ø:˜sÔ:Ñ<Ô<Ð ˜Ð <Ð <Ñ <à)3¨¬Ø€C„HˆXÐ:�sÔ:Ñ<Ô<Ñ=Ô=ñ*ô *à€!€!ô*Ð  ð ð ñ ð +€CÔ*Ñ,Ô,ð # Cð ð ñ ð +€CÔ*Ñ,Ô,ð # Cð ð ñ ð +€CÔ*Ñ,Ô,ð # Cð ð ñ ð +€CÔ*Ñ,Ô,ð # Cð ð ñ ð 3€CÔ2Ñ4Ô4ð +¨Cð ð ñ ð 3€CÔ2Ñ4Ô4ð +¨Cð ð ñ ð 0€CÔ/Ñ1Ô1ð (¨ð ð ñ ð 0€CÔ/Ñ1Ô1ð (¨ð ð ñ ð 1€CÔ0Ñ2Ô2ð )¨#ð ð ñ ð 1€CÔ0Ñ2Ô2ð )¨#ð ð ñ ð +5¨#¬*Ø€C„HˆXÐ;�sÔ;Ñ=Ô=Ñ>Ô>ñ+ô +à€!€!ô+Ð   %ð ð ñ ð ,€CÔ+Ñ-Ô-ð $ Sð ð ñ ð ,€CÔ+Ñ-Ô-ð $ Sð ð ñ ð ,€CÔ+Ñ-Ô-ð $ Sð ð ñ ð ,€CÔ+Ñ-Ô-ð $ Sð ð ñ ð 4€CÔ3Ñ5Ô5ð ,¨Sð ð ñ ð 4€CÔ3Ñ5Ô5ð ,¨Sð ð ñ ð 1€CÔ0Ñ2Ô2ð )¨#ð ð ñ ð 1€CÔ0Ñ2Ô2ð )¨#ð ð ñ ð 2€CÔ1Ñ3Ô3ð *¨3ð ð ñ ð 2€CÔ1Ñ3Ô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ð ð99ð 99ð 99ð 99ð| 0Ø/ð)ð )Øð)àð)ð ð)ð ð	)ð )ð )ð )ðXØðØ %ðà	ðð ð ð ðB55 sð 55°cð 55Àð 55Èð 55ð 55ð 55ð 55ðpD)ØðD)àðD)ð ðD)ð ð	D)ð
 ðD)ð 
ðD)ð ðD)ð D)ð D)ð D)ðN(Øð(àð(ð ð(ð 
ð	(ð
 ð(ð (ð (ð (ðV¨%ð ¸ð À4ð ð ð ð ð6 $<Ð  Ð  Ð  r   