Ë
    àU.j&´  ã                   ó  — d Z ddlmZ ddlmZ ddlZddlmZmZ ddl	m
Z
mZmZmZmZmZmZ ddlmZmZmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Z G d„ de«      ZddlmZmZ  G d„ de«      Z G d„ de«      Zy)ztests for passlib.utilé    )Úwith_statement)ÚpartialN)Úis_ascii_safeÚto_bytes)ÚirangeÚPY2ÚPY3ÚuÚunicodeÚ
join_bytesÚPYPY)ÚTestCaseÚhbÚrun_with_fixed_seedsc                   ó|   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Z e	d¬«      d	„ «       Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚMiscTestz#tests various parts of utils modulec                 óÌ   — ddl m} | j                  t        |«      d«       t	        |«       | j                  dt	        |«      v «       | j                  dt	        |«      v «       y)ztest compat's lazymoduler   )Úcompatz,^<module 'passlib.utils.compat' from '.*?'>$Ú	UnicodeIOr   N)Úpasslib.utilsr   ÚassertRegexÚreprÚdirÚ
assertTrue)Úselfr   s     úZC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\passlib/tests/test_utils.pyÚtest_compatzMiscTest.test_compat   sP   € å(à×Ñœ˜f›ØHô	Jô 	ˆFŒØ�‰˜¤s¨6£{Ð2Ô3Ø�‰˜¤C¨£KÐ/Õ0ó    c                 óÖ   ‡— ddl mŠ  G ˆfd„dt        «      }| j                  |j                  d«       |j
                  d   }| j                  |j                  |j                  «       y )Nr   ©Úclasspropertyc                   ó$   •— e Zd ZdZW ° d„ «       Zy)ú)MiscTest.test_classproperty.<locals>.testé   c                 ó   — | j                   S ©N)Úxvar)Úclss    r   Úxpropz/MiscTest.test_classproperty.<locals>.test.xprop)   s   € à—x‘x�r   N)Ú__name__Ú
__module__Ú__qualname__r'   r)   r    s   €r   Útestr#   '   s   ø„ ØˆDÙñ ó ñ r   r-   r$   r)   )	Úpasslib.utils.decorr!   ÚobjectÚassertEqualr)   Ú__dict__ÚassertIsÚim_funcÚ__func__)r   r-   Úpropr!   s      @r   Útest_classpropertyzMiscTest.test_classproperty$   sL   ø€ Ý5ö	 ”6ô 	 ð 	×Ñ˜Ÿ™ QÔ'Ø�}‰}˜WÑ%ˆØ�‰�d—l‘l D§M¡MÕ2r   c                 ó  — ddl m}  |dd¬«      d„ «       }| j                  d|j                  v «       | j	                  t        t        d¬	«      «      5  | j                   |d
d«      d«       d d d «       y # 1 sw Y   y xY w)Nr   )Údeprecated_functionz1.6z1.8)Ú
deprecatedÚremovedc                  ó   — | S )ztest docstring© )Úargss    r   Ú	test_funcz4MiscTest.test_deprecated_function.<locals>.test_func5   s	   € ð ˆKr   z.. deprecated::zvthe function passlib.tests.test_utils.test_func() is deprecated as of Passlib 1.6, and will be removed in Passlib 1.8.)ÚcategoryÚmessager$   é   )r$   rA   )r.   r8   r   Ú__doc__ÚassertWarningListÚdictÚDeprecationWarningr0   )r   r8   r>   s      r   Útest_deprecated_functionz!MiscTest.test_deprecated_function1   s   € Ý;ñ 
¨°uÔ	=ñ	ó 
>ð	ð 	�‰Ð)¨Y×->Ñ->Ð>Ô?à×#Ñ#¤DÔ2Dð2ô%õ ð
 ×Ñ™Y q¨›^¨UÔ3÷÷ ñ ús   ÁA7Á7B c                 ó\  ‡— ddl mŠ  G ˆfd„dt        «      } |«       }| j                  |j                  d«       | j                  |j                  d«       | j                  |j
                  d«       |j                  }t        s'| j                  |j                  |j                  «       y y )Nr   ©Úmemoized_propertyc                   ó$   •— e Zd ZdZW ° d„ «       Zy)ú.MiscTest.test_memoized_property.<locals>.dummyr   c                 ó2   — | j                   }|dz   | _         |S )Nr$   )Úcounter)r   Úvalues     r   rN   z4MiscTest.test_memoized_property.<locals>.dummy.valueI   s   € àŸ™�Ø$ Q™w�”Ø�r   N)r*   r+   r,   rM   rN   rH   s   €r   ÚdummyrK   F   s   ø„ ØˆGáñó ñr   rO   r$   )
r.   rI   r/   r0   rN   rM   r	   r2   r3   r4   )r   rO   Údr5   rI   s       @r   Útest_memoized_propertyzMiscTest.test_memoized_propertyC   s~   ø€ Ý9ö	”Fô 	ñ ‹GˆØ×Ñ˜Ÿ™ !Ô$Ø×Ñ˜Ÿ™ !Ô$Ø×Ñ˜Ÿ™ AÔ&à�{‰{ˆÝØ�M‰M˜$Ÿ,™,¨¯©Õ6ð r   c                 ób  — ddl m} t        || j                  «       «      }| j	                  t         |d«      «      d«        |d«      } |d«      }| j                  |t        «       | j	                  t        |«      d«       | j	                  t        |«      d«       | j                  ||«       y)zgetrandbytes()r   )Úgetrandbytesé
   N)	r   rS   r   Ú	getRandomr0   ÚlenÚassertIsInstanceÚbytesÚassertNotEqual)r   rS   ÚwrapperÚaÚbs        r   Útest_getrandbyteszMiscTest.test_getrandbytesX   sŠ   € å.Ü˜,¨¯©Ó(8Ó9ˆØ×Ñœ™W Q›Z›¨!Ô,Ù�B‹KˆÙ�B‹KˆØ×Ñ˜a¤Ô'Ø×Ñœ˜Q› Ô$Ø×Ñœ˜Q› Ô$Ø×Ñ˜A˜qÕ!r   i   )Úcountc           	      ó>  — ddl m} t        || j                  |¬«      «      }| j	                   |dd«      d«       | j                  t        |dd«       | j                  t        |dd«       | j	                   |dd«      d	«        |t        d«      d
«      } |t        d«      d
«      }| j                  |t        «       | j                  ||«       | j	                  t        t        |«      «      t        d«      t        d«      t        d«      g«        |dd
«      } |dd
«      }| j                  |t        «       | j                  ||«       | j	                  t        t        |j                  d«      «      «      t        d«      t        d«      t        d«      g«       y)zgetrandstr()r   ©Ú
getrandstr)ÚseedÚabcÚ éÿÿÿÿr[   é   Úaaaaaé    r\   Úcó   abcÚasciiN)r   ra   r   rU   r0   ÚassertRaisesÚ
ValueErrorr
   rW   r   rY   ÚsortedÚsetrX   Údecode)r   rb   ra   rZ   ÚxÚys         r   Útest_getrandstrzMiscTest.test_getrandstrd   sX  € õ 	-ä˜* d§n¡n¸$ nÓ&?Ó@ˆð 	×Ñ™  qÓ)¨2Ô.ð 	×Ñœ* g¨u°bÔ9ð 	×Ñœ* g¨r°1Ô5ð 	×Ñ™  a›¨'Ô2ñ ”A�e“H˜bÓ!ˆÙ”A�e“H˜bÓ!ˆØ×Ñ˜a¤Ô)Ø×Ñ˜A˜aÔ Ø×Ñœ¤ A£›¬!¨C«&´°3³¼¸#»Ð)?Ô@ñ �F˜BÓˆÙ�F˜BÓˆØ×Ñ˜a¤Ô'Ø×Ñ˜A˜aÔ à×Ñœ¤ A§H¡H¨WÓ$5Ó 6Ó7¼!¸C»&ÄÀ3ÃÌÈ#ËÐ9OÕPr   c                 ó~   — ddl m} t        j                  dd«       | j	                  t         |d«      «      d«       y)zgenerate_password()r   )Úgenerate_passwordÚignorez1The function.*generate_password\(\) is deprecatedé   N)r   ru   ÚwarningsÚfilterwarningsr0   rV   )r   ru   s     r   Útest_generate_passwordzMiscTest.test_generate_password�   s1   € å3Ü×Ñ Ð*]Ô^Ø×ÑœÑ.¨rÓ2Ó3°RÕ8r   c                 óŒ   — ddl m} ddlm}  |dg«      }| j	                   ||«      «       | j                   ||«       «       y)ztest is_crypt_context()r   )Úis_crypt_context)ÚCryptContextÚ	des_cryptN)r   r|   Úpasslib.contextr}   r   ÚassertFalse)r   r|   r}   Úccs       r   Útest_is_crypt_contextzMiscTest.test_is_crypt_context“   s=   € å2Ý0Ù˜;˜-Ó(ˆØ�‰Ñ(¨Ó,Ô-Ø×ÑÑ-¨bÓ1Ð1Õ2r   c                 ó
  — ddl }ddlm} |j                   |«       «      }|j	                  dd«      }|j                   |«       «      }|j	                  dd«      }| j                  ||«       |j                   ||«      «       y)ztest genseed()r   N)Úgenseedl    d(	 )Úrandomr   r„   ÚRandomÚrandintrY   rb   )r   r…   r„   Úrngr[   r\   s         r   Útest_genseedzMiscTest.test_genseed›   sh   € ãÝ)Ø�m‰m™G›IÓ&ˆØ�K‰K˜˜6Ó"ˆà�m‰m™G›IÓ&ˆØ�K‰K˜˜6Ó"ˆà×Ñ˜A˜aÔ à�‰‘˜“Õr   c                 ó4  ‡‡— ddl m}m}m} ddlm}m}  |«       }|sT| j                  |d«       | j                   |dd«      d«       | j                   |dd«      «       | j                  d	«      ‚|s| j                  d
«      ‚dD ]  }||v sŒ n |d   } ||«      Št        ‰dd«      r‰j                  ‰j                  ¬«      Šˆfd„}t        d«      }	 ||	«      }
 ||	|
«      }| j                  |t         «       | j                  ||
«       | j                   |t#        |	«      t#        |
«      «      |
«       |
dd dz   }| j                   ||	|«      |
«       t        d«      } ||«      }| j                   |||«      |«       | j                   |t#        |«      t#        |«      «      |«       | j%                  t&        |d|
«       | j)                   |d|
«      «       | j                   |d|«      «       ddl m} |j,                  }	 dŠˆfd„|_        dD ]3  Š| j                   |d|
«      d«       | j                   |d|
«      «       Œ5 dŠ| j                   |d|
«      d«       | j                   |d|
«      «       ||_        y# ||_        w xY w)ztest crypt.crypt() wrappersr   )Ú	has_cryptÚ
safe_cryptÚ
test_crypt)Úget_supported_os_crypt_schemesÚget_crypt_handlerr<   r-   ÚaaNzaaqPiZY5xR5l.zcrypt.crypt() not availablez0crypt() present, but no supported schemes found!)Ú	md5_cryptÚsha256_cryptre   Ú
min_rounds)Úroundsc                 ó´   •— t        | t        «      sJ ‚‰j                  | «      }t        |t        «      r|j	                  d«      }t        |t        «      sJ ‚|S )Núutf-8)Ú
isinstancer   ÚhashrX   rp   )Úsecretr˜   Úhashers     €r   Úget_hashz%MiscTest.test_crypt.<locals>.get_hashÊ   sN   ø€ Ü˜f¤gÔ.Ð.Ð.Ø—;‘;˜vÓ&ˆDÜ˜$¤Ô&Ø—{‘{ 7Ó+�Ü˜d¤GÔ,Ð,Ð,ØˆKr   éþÿÿÿÚxxu   testáˆ´Ú c                 ó   •— ‰S r&   r<   )r™   r˜   Úretvals     €r   Ú<lambda>z%MiscTest.test_crypt.<locals>.<lambda>ò   s   ø€ ©fr   )Nrd   Ú:z:0z*0Úxxx)r   r‹   rŒ   r�   Úpasslib.registryrŽ   r�   r0   r€   ÚskipTestÚfailÚgetattrÚusingr“   r
   rW   r   r   rl   rm   r   ÚutilsÚ_crypt)r   r‹   rŒ   r�   rŽ   r�   Ú	supportedÚschemer›   Ús1Úh1ÚresultÚh1xÚs2Úh2ÚmodÚorigrš   r    s                    @@r   r�   zMiscTest.test_crypt©   sy  ù€ çCÑCßVñ 3Ó4ˆ	ÙØ×Ñ˜Y¨Ô+Ø×Ñ™Z¨°Ó5°tÔ<Ø×Ñ™Z¨°Ó@ÔAØ—-‘-Ð =Ó>Ð>ñ ð
 —)‘)ÐNÓOÐOó 4ˆFØ˜Ò"Ùð 4ð ˜r‘]ˆFÙ" 6Ó*ˆÜ�6˜<¨Ô.Ø—\‘\¨×):Ñ):�\Ó;ˆFô	ô ˆv‹YˆÙ�b‹\ˆÙ˜B Ó#ˆØ×Ñ˜f¤gÔ.Ø×Ñ˜ Ô$Ø×Ñ™¤H¨R£L´(¸2³,Ó?ÀÔDð ��"ˆg˜‰nˆØ×Ñ™ B¨Ó,¨bÔ1ô ˆ|‹_ˆÙ�b‹\ˆØ×Ñ™ B¨Ó+¨RÔ0Ø×Ñ™¤H¨R£L´(¸2³,Ó?ÀÔDð 	×Ñœ* j°&¸"Ô=ð 	�‰™
 6¨2Ó.Ô/Ø×Ñ™ F¨CÓ0Ô1õ
 	$Ø�z‰zˆð	ØˆFÛ4ˆCŒJã5�Ø× Ñ ¡¨F°BÓ!7¸Ô>Ø× Ñ ¡¨F°BÓ!7Õ8ð 6ð ˆFØ×Ñ™Z¨°Ó3°UÔ;Ø×Ñ™Z¨°Ó3Ô4ð ˆC�Jø˜ˆC�Jús   ÈA7J Ê	Jc                 óÔ  ‡‡— ddl mŠmŠ | j                  t        ‰t        d«      d«       | j                  t        ‰t        d«      d«       | j                  t        ‰t        d«      d«       | j                  t        ‰dt        d«      «       | j                  t        ‰dd«       | j                  t        ‰dd«       | j                  t        ‰dt        d«      «       | j                  t        ‰dd«       | j                  t        ‰dt        d«      «       | j                  t        ‰dd«       ˆˆfd„}t        d«      t        d	«      t        d
«      dz  fD ]‹  } ||«      r| j                   ‰||«      d|›d�«       n| j                  t        ‰||«       | j                   ‰||«      d|›d�«       |j                  d«      }| j                   ‰||«      d|›d�«       Œ� t        d«      t        d«      ft        d«      t        d«      ft        d«      t        d«      ft        d«      t        d«      ft        d
«      dz  dd t        d«      z   t        d
«      dz  ft        d«      t        d«      ft        d	«      t        d«      ft        d	«      t        d«      ft        d«      t        d	«      ff	D �])  \  }} ||«      rI ||«      rA| j                   ‰||«      d|›d|›d�«       | j                   ‰||«      d|›d|›d�«       n0| j                  t        ‰||«       | j                  t        ‰||«       | j                   ‰||«      d|›d|›d�«       | j                   ‰||«      d|›d|›d�«       |j                  d«      }|j                  d«      }| j                   ‰||«      d|›d|›d�«       | j                   ‰||«      d|›d|›d�«       �Œ, y)ztest consteq()r   )ÚconsteqÚstr_consteqrd   r   r$   Nc                 ó6   •— ‰‰u xs t         xs t        | «      S r&   )r   r   )rN   r¶   r·   s    €€r   Úconsteq_supports_stringz6MiscTest.test_consteq.<locals>.consteq_supports_string  s   ø€ ð ˜{Ð*ÒI¬cÒI´]À5Ó5IÐJr   r[   rc   u   Ã¿Â¢ rT   zvalue r¢   úlatin-1ri   ÚabcabcÚzbaabcÚabzabcÚabcabzre   ÚÚabcdefÚdefabcÚqwertyuiopasdfghjklzxcvbnmzvalues Ú )	r   r¶   r·   rl   Ú	TypeErrorr
   r   Úencoder€   )r   r¹   rN   ÚlÚrr¶   r·   s        @@r   Útest_consteqzMiscTest.test_consteqÿ   sO  ù€ ÷ 	7ð 	×Ñœ) W¬a°«e°SÔ9Ø×Ñœ) W¬a°«e°QÔ7Ø×Ñœ) W¬a°«e°TÔ:à×Ñœ) W¨c´1°R³5Ô9Ø×Ñœ) W¨c°1Ô5Ø×Ñœ) W¨c°4Ô8à×Ñœ) W¨d´A°b³EÔ:Ø×Ñœ) W¨d°CÔ8Ø×Ñœ) W¨a´°2³Ô7Ø×Ñœ) W¨a°Ô5õ	Kô �#“Ü�%“ÜÐ$Ó% bÑ(óˆEñ
 ' uÔ-Ø—‘¡¨¨uÔ 5ÂeÐ7MÕNà×!Ñ!¤)¨W°e¸UÔCØ�O‰O™K¨¨uÔ5ÂeÐ7MÔNà—L‘L Ó+ˆEØ�O‰O™G E¨5Ô1Â%Ð3IÕJðô" �3“¤ 3£Ð(Ü�8“¤ 8£Ð-Ü�8“¤ 8£Ð-Ü�8“¤ 8£Ð-ÜÐ&Ó'¨Ñ*¨C¨RÐ0´1°V³9Ñ<ÜÐ(Ó)¨"Ñ,ð.ô �2“œa ›fÐ%Ü�5“œa ›kÐ*Ü�5“œa ›kÐ*ÜÐ/Ó0´!°E³(Ð;ô‰CˆAˆañ ' qÔ)Ñ.EÀaÔ.HØ× Ñ ¡¨¨A¤Â1ÂQÐ0GÔHØ× Ñ ¡¨¨A¤Â1ÂQÐ0GÕHà×!Ñ!¤)¨W°a¸Ô;Ø×!Ñ!¤)¨W°a¸Ô;Ø×Ñ™[¨¨AÔ.Â1ÂQÐ0GÔHØ×Ñ™[¨¨AÔ.Â1ÂQÐ0GÔHà—‘˜Ó#ˆAØ—‘˜Ó#ˆAØ×Ñ™W Q¨œ]ºqÂÐ,CÔDØ×Ñ™W Q¨œ]ºqÂÐ,CÖDñ7r   c                 óú
  — | j                  «        ddlm} | j                  t        |d«       | j                  t        |d«       | j                  t        |d«       | j                   |t        d«      «      t        d«      «       | j                   |t        d«      «      t        d«      «       | j                   |t        d«      «      t        d	«      «       | j                   |t        d
«      «      t        d«      «       | j                   |t        d«      «      t        d«      «       | j                   |t        d«      «      t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                   |t        d«      «      t        d«      «       | j                   |t        d«      «      t        d«      «       | j                   |t        d«      «      t        d«      «       | j                  t        |t        d «      «       | j                  t        |t        d!«      «       | j                   |t        d"«      «      t        d"«      «       | j                   |t        d#«      «      t        d$«      «       | j                   |t        d%«      «      t        d%«      «       | j                   |t        d&«      «      t        d&«      «       | j                   |t        d'«      «      t        d(«      «       | j                   |t        d)«      «      t        d$«      «       | j                  t        |t        d*«      «       | j                  t        |t        d«      «       | j                  t        |t        d«      «       | j                   |t        d«      «      t        d«      «       y)+z"test saslprep() unicode normalizerr   )ÚsaslprepNr$   r   rd   ô   Â­u   $Â­$â€�$z$$$u
   $ $Â $ã€€$z$ $ $ $u   aÌ€ô   Ã rž   Úu   á Žu   ï¿¹u   î€€u   ï·�u   í €u   ï¿½u   â¿°u   â€Žu   â�¯u   à¤€u   ï¿¸u   ó €�u   Ø§1u   Ø§u   Ø§Ø¨u   Ø§1Ø¨u   Ø§AØ¨u   xØ§zÚxAzu   IÂ­XÚIXÚuserÚUSERô   Âªr[   u   â…¨Ú)Úrequire_stringprepr   rÊ   rl   rÄ   r0   r
   rm   )r   Úsps     r   Útest_saslprepzMiscTest.test_saslprepe  sì  € à×ÑÔ!Ý0ð 	×Ñœ) R¨Ô.Ø×Ñœ) R¨Ô+Ø×Ñœ) R¨Ô-ð 	×Ñ™œA˜b›E›¤A b£EÔ*Ø×Ñ™œA˜h›K›¬!¨B«%Ô0ð 	×Ñ™œAÐ/Ó0Ó1´1°U³8Ô<ð 	×Ñ™œAÐ1Ó2Ó3´Q°y³\ÔBð 	×Ñ™œA˜i›LÓ)¬1¨X«;Ô7Ø×Ñ™œA˜h›K›¬!¨H«+Ô6ð 	×Ñœ* b¬!¨H«+Ô6Ø×Ñœ* b¬!¨H«+Ô6Ø×Ñœ* b¬!¨H«+Ô6Ø×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6Ø×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨H«+Ô6Ø×Ñœ* b¬!¨H«+Ô6à×Ñœ* b¬!¨L«/Ô:ð 	×Ñœ* b¬!¨NÓ*;Ô<Ø×Ñ™œA˜h›K›¬!¨H«+Ô6Ø×Ñ™œA˜nÓ-Ó.´°.Ó0AÔBØ×Ñ™œAÐ2Ó3Ó4´aÐ8LÓ6MÔNà×Ñœ* b¬!Ð,@Ó*AÔBà×Ñœ* b¬!¨J«-Ô8Ø×Ñ™œA˜j›MÓ*¬A¨j«MÔ:ð 	×Ñ™œA˜j›MÓ*¬A¨d«GÔ4Ø×Ñ™œA˜f›I›¬¨&«	Ô2Ø×Ñ™œA˜f›I›¬¨&«	Ô2Ø×Ñ™œA˜h›K›¬!¨C«&Ô1Ø×Ñ™œA˜h›K›¬!¨D«'Ô2Ø×Ñœ* b¬!¨H«+Ô6Ø×Ñœ* b¬!¨NÓ*;Ô<ð 	×Ñœ* b¬!¨NÓ*;Ô<Ø×Ñ™œAÐ2Ó3Ó4´aÐ8LÓ6MÕNr   c                 ó<  — ddl m} | j                   |d«      g «       | j                   |d«      g «       | j                   |d«      dg«       | j                   |d«      dg«       | j                   |d«      ddg«       | j                   |d	«      ddg«       y )
Nr   )Ú
splitcommard   Ú,r[   z a , z a , br\   z a, b, )r   rØ   r0   )r   rØ   s     r   Útest_splitcommazMiscTest.test_splitcomma´  sŒ   € Ý,Ø×Ñ™ B›¨Ô,Ø×Ñ™ C›¨"Ô-Ø×Ñ™ C›¨3¨%Ô0Ø×Ñ™ GÓ,¨s¨eÔ4Ø×Ñ™ HÓ-°°S¨zÔ:Ø×Ñ™ IÓ.°°c°
Õ;r   c           
      ó~  — ddl m} dD ]å  }|j                  d«       t        |«      }t	        |dz   «      D ]¶  }d|›d|›d�} |||«      }|j                  d«       | j                  t        |«      ||¬	«       | j                  t        |«      t        ||«      |¬	«       | j                  t        |«      t        |d
z   |dz   «      |¬	«       | j                  ||dt        |«       |¬	«       Œ¸ Œç dD ]I  }t        |«      }t	        |dz   «      D ]+  }d|›d|›d�} |||«      }| j                  ||d| |¬	«       Œ- ŒK dD ]L  }t        |«      }t	        |dz   «      D ].  }d|›d|›d�} |||«      }| j                  ||d|dz    |¬	«       Œ0 ŒN d}| j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d
«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       | j                   ||d«      d«       y)z!
        utf8_truncate()
        r   )Úutf8_truncate)	r   ó   1s   123ó   s
   ó   s
   s   aÂ Ã¾Ã¾s&   abcdefghjusdfaoiuÂ Ã¾Ã¾dsfioauweoiruerr–   é   zsource=z index=z: )Úmsgé   r$   N)ó   Ês
   ÊÊÊÊÊÊÊÊÊÊó    s
             )ó   ªs
   ªªªªªªªªªªé   s
   MNÿ ¡¢ªOP«r   ó   MrA   s   MNs   MNÿ ¡¢s   MNÿ ¡¢ªrf   é   é   é   s   MNÿ ¡¢ªOé	   rT   é   )
r   rÜ   rp   rV   ÚrangeÚassertLessEqualÚassertGreaterEqualÚminÚ
assertLessr0   )r   rÜ   ÚsourceÚendÚidxÚprefixr¯   s          r   Útest_utf8_truncatezMiscTest.test_utf8_truncate½  sâ  € õ 	0ó
ˆFð �M‰M˜'Ô"ä�f“+ˆCÜ˜S 2™X–‘Ú39º3Ð?�á& v¨sÓ3�ð —‘˜gÔ&ð ×$Ñ$¤S¨£[°#¸6Ð$ÔBð ×'Ñ'¬¨F«´S¸¸c³]ÈÐ'ÔOØ—‘¤ F£¬S°°q±¸#À¹'Ó-BÈ�ÔOð × Ñ  ¨°´°V³Ð)=À6Ð ÕJñ! 'ð#
óN
ˆFô �f“+ˆCÜ˜S 2™X–‘Ú39º3Ð?�Ù& v¨sÓ3�Ø× Ñ  ¨°°¨¸6Ð ÕBñ 'ð
ó"
ˆFô �f“+ˆCÜ˜S 2™X–‘Ú39º3Ð?�Ù& v¨sÓ3�Ø× Ñ  ¨°°°Q±¨¸VÐ ÕDñ 'ð
ð" 1ˆà×Ñ™ v¨qÓ1°3Ô7à×Ñ™ v¨qÓ1°4Ô8à×Ñ™ v¨qÓ1°5Ô9à×Ñ™ v¨qÓ1Ø.ô	0ð 	×Ñ™ v¨qÓ1Ø2ô	4ð 	×Ñ™ v¨qÓ1Ø2ô	4ð 	×Ñ™ v¨qÓ1Ø2ô	4ð 	×Ñ™ v¨qÓ1Ø2ô	4ð 	×Ñ™ v¨qÓ1Ø3ô	5ð 	×Ñ™ v¨qÓ1Ø8ô	:ð 	×Ñ™ v¨rÓ2Ø8ô	:ð 	×Ñ™ v¨rÓ2Ø8õ	:r   N)r*   r+   r,   rB   r   r6   rF   rQ   r]   r   rs   rz   r‚   r‰   r�   rÈ   rÖ   rÚ   rö   r<   r   r   r   r      sk   „ Ù-ò
1ò3ò4ò$7ò*
"ñ  Ô%ñ&Qó &ð&QòP9ò3òòTòlEEòLMOò^<ót:r   r   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú	CodecTestz,tests bytes/unicode helpers in passlib.utilsc                 ón  — t         r%ddl}| j                  t        |j                  «       n$ddl}| j                  t        |j
                  «       | j                  dt        «       | j                  dt        «       t         r"| j                  dj                  d«      d«       y| j                  dd«       y)z*test b() helper, bytes and native str typer   Nr   ó    ÿrº   õ    Ã¿)	r	   Úbuiltinsr2   rX   Ú__builtin__ÚstrrW   r0   rp   )r   rü   s     r   Ú
test_byteszCodecTest.test_bytes:  s}   € åÛØ�M‰Mœ% §¡Õ0ã*Ø�M‰Mœ% §¡Ô.à×Ñ˜c¤5Ô)Ø×Ñ˜k¬5Ô1ÝØ×Ñ˜[×/Ñ/°	Ó:¸JÕGà×Ñ˜[¨*Õ5r   c                 óp  — ddl m} | j                   |t        d«      «      d«       | j                   |t        d«      «      d«       | j                   |t        d«      d«      d«       | j	                  t
        |t        d«      d	«       | j                   |d«      d«       | j                   |d«      d«       | j                   |d«      d«       | j                   |dd«      d«       | j                   |ddd
d«      d«       | j	                  t        |dd«       | j	                  t        |d«       y)ztest to_bytes()r   )r   rc   rj   rû   ó    Ã¿rº   rú   rk   rd   r–   N)r   r   r0   r
   rl   rm   ÚAssertionErrorrÄ   )r   r   s     r   Útest_to_byteszCodecTest.test_to_bytesJ  s  € å*ð 	×Ñ™¤! E£(Ó+¸fÔEØ×Ñ™¤! J£-Ó0¸oÔNð 	×Ñ™¤! J£-°Ó;¸kÔJØ×Ñœ* h´°*³¸wÔGð 	×Ñ™ &Ó)¸&ÔAØ×Ñ™ +Ó.¸+ÔFØ×Ñ™ /Ó2¸/ÔJð 	×Ñ™ /°9Ó=Ø<Kô	Mð 	×Ñ™ /°9¸bÀ'ÓJØ<Gô	Ið 	×Ñœ.¨(°E¸4Ô@Ø×Ñœ) X¨tÕ4r   c                 ób  — ddl m} | j                   |t        d«      «      t        d«      «       | j                   |t        d«      «      t        d«      «       | j                   |t        d«      d«      t        d«      «       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       | j                   |dd	«      t        d«      «       | j	                  t
        |d«       | j	                  t        |dd
«       | j	                  t        |d
«       y
)ztest to_unicode()r   )Ú
to_unicoderc   rû   rk   rj   r  rú   rº   N)r   r  r0   r
   rl   rm   r  rÄ   )r   r  s     r   Útest_to_unicodezCodecTest.test_to_unicodeg  sï   € å,ð 	×Ñ™¤A e£HÓ-¼aÀ»hÔGØ×Ñ™¤A j£MÓ2¼aÀ
»mÔLð 	×Ñ™¤A j£M°7Ó;¼aÀ
»mÔLð 	×Ñ™ FÓ+¼!¸E»(ÔCØ×Ñ™ OÓ4¼!¸J»-ÔHØ×Ñ™ K°Ó;Ü<=¸j»Mô	Kà×Ñœ* j°+Ô>ð 	×Ñœ.¨*°e¸TÔBØ×Ñœ) Z°Õ6r   c                 ó¸  — ddl m} | j                   |t        d«      d«      d«       | j                   |dd«      d«       t        r;| j                   |t        d«      d«      d«       | j                  t        |dd«       n:| j                  t        |t        d«      d«       | j                   |dd«      d«       | j                   |t        d«      d	«      d«       | j                   |d
d	«      d«       | j                   |t        d«      d«      t        rdnd«       | j                   |dd«      t        rdnd«       | j                  t        |dd«       y)ztest to_native_str()r   )Úto_native_strrc   rk   rj   rÌ   s   Ã u   ÃƒÂ rº   ó   àr–   N)	r   r  r0   r
   r	   rl   ÚUnicodeDecodeErrorÚUnicodeEncodeErrorrÄ   )r   r  s     r   Útest_to_native_strzCodecTest.test_to_native_str}  s2  € å/ð 	×Ñ™¤q¨£x°Ó9¸5ÔAØ×Ñ™ v¨wÓ7¸Ô?õ Ø×Ñ™]¬1¨V«9°gÓ>ÀÔGØ×ÑÔ0°-ÀØ%õ'ð ×ÑÔ0°-ÄÀ6ÃØ%ô'à×Ñ™]¨;¸Ó@À*ÔMð 	×Ñ™¤q¨£y°)Ó<¸fÔEØ×Ñ™ w°	Ó:¸FÔCð 	×Ñ™¤q¨£y°'Ó:Ý#&™¨Jô	8à×Ñ™ {°GÓ<Ý#&™¨Jô	8ð 	×Ñœ) ]°D¸'ÕBr   c                 óì   — ddl m} | j                   |d«      «       | j                   |t        d«      «      «       | j	                   |d«      «       | j	                   |t        d«      «      «       y)ztest is_ascii_safe()r   )r   s    abcz abcs    abc€u    abcÂ€N)r   r   r   r
   r€   )r   r   s     r   Útest_is_ascii_safezCodecTest.test_is_ascii_safeœ  sW   € å/Ø�‰™ nÓ5Ô6Ø�‰™¤a¨Ó&6Ó7Ô8Ø×Ñ™ ~Ó6Ô7Ø×Ñ™¤q¨Ó'7Ó8Õ9r   c                 ó�  — ddl m} | j                   |dd«      «       | j                   |dd«      «       | j                   |dd«      «       | j                   |dd«      «       | j                   |dd«      «       | j                   |dd«      «       | j                   |dd«      «       | j                   |dd«      «       y)	ztest is_same_codec()r   )Úis_same_codecNrk   ÚASCIIr–   Úutf8ÚUTF_8)r   r  r   r€   )r   r  s     r   Útest_is_same_codeczCodecTest.test_is_same_codec¤  s¡   € å/à�‰™ d¨DÓ1Ô2Ø×Ñ™ t¨WÓ5Ô6à�‰™ g¨wÓ7Ô8Ø�‰™ g¨wÓ7Ô8à�‰™ g¨wÓ7Ô8Ø�‰™ g¨vÓ6Ô7Ø�‰™ g¨wÓ7Ô8à×Ñ™ w°Ó8Õ9r   N)
r*   r+   r,   rB   rÿ   r  r  r  r  r  r<   r   r   rø   rø   7  s$   „ Ù6ò6ò 5ò:7ò,Cò>:ó:r   rø   c                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚBase64EngineTestz%test standalone parts of Base64Enginec                 ó°   — ddl m}m} | j                  t        |d«       | j                  t
        ||d d «       | j                  t
        ||d d dz   «       y )Nr   )ÚBase64EngineÚ
AB64_CHARSr$   re   ÚA)Úpasslib.utils.binaryr  r  rl   rÄ   rm   )r   r  r  s      r   Útest_constructorz!Base64EngineTest.test_constructor»  sR   € ßAð 	×Ñœ) \°1Ô5ð 	×Ñœ* l°J¸sÀ°OÔDð 	×Ñœ* l°J¸sÀ°OÀcÑ4IÕJr   c                 ó<  — ddl m} | j                   |d«      t        d«      «       | j                   |t	        d«      «      t        d«      «       | j                  t        |t	        d«      «       | j                  t        |d«       | j                  t        |d«       | j                  t        |t	        d	«      «       | j                   |d
«      t        d«      «       | j                  t        |d«       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       y)zab64_decode()r   )Úab64_decoderj   Ú69b7rc   õ   abÃ¿ó   abÿó   ab!úab!ó   abcdÚ69b71dó   abcdeó   abcdefÚ69b71d79ó   abcdeQó   abcdefgÚ
69b71d79f8ó   ab+/Ú69bfbfó   ab./N)r  r  r0   r   r
   rl   rm   rÄ   )r   r  s     r   Útest_ab64_decodez!Base64EngineTest.test_ab64_decodeÇ  s>  € å4ð 	×Ñ™ VÓ,¬b°«jÔ9Ø×Ñ™¤Q u£XÓ.´°6³
Ô;ð 	×Ñœ* k´1°X³;Ô?ð 	×Ñœ) [°)Ô<Ø×Ñœ) [°&Ô9Ø×Ñœ) [´!°E³(Ô;ð 	×Ñ™ WÓ-¬r°(«|Ô<Ø×Ñœ* k°8Ô<Ø×Ñ™ YÓ/´°J³Ô@Ø×Ñ™ YÓ/´°J³Ô@Ø×Ñ™ ZÓ0´"°\Ó2BÔCð 	×Ñ™ WÓ-¬r°(«|Ô<Ø×Ñ™ WÓ-¬r°(«|Õ<r   c                 óÐ  — ddl m} | j                   |t        d«      «      d«       | j	                  t
        rt        nt        |t        d«      j                  d«      «       | j                   |t        d«      «      d«       | j                   |t        d«      «      d	«       | j                   |t        d
«      «      d«       | j                   |t        d«      «      d«       y)zab64_encode()r   )Úab64_encoder  rj   rº   r%  r$  r(  r)  r+  r*  r-  r.  N)	r  r1  r0   r   rl   r	   rÄ   r  rp   )r   r1  s     r   Útest_ab64_encodez!Base64EngineTest.test_ab64_encodeã  óµ   € å4ð 	×Ñ™¤R¨£ZÓ0°&Ô9ð 	×Ñ¥s�)Ô0BØ%¤r¨&£z×'8Ñ'8¸Ó'Cô	Eð 	×Ñ™¤R¨£\Ó2°GÔ<Ø×Ñ™¤R¨
£^Ó4°iÔ@Ø×Ñ™¤R¨Ó%5Ó6¸
ÔCð 	×Ñ™¤R¨£\Ó2°GÕ<r   c                 ó¸  — ddl m} | j                   |d«      t        d«      «       | j                   |t	        d«      «      t        d«      «       | j                  t        |t	        d«      «       | j                  t        |d«       | j                  t        |d«       | j                  t        |t	        d	«      «       | j                   |d
«      t        d«      «       | j                  t        |d«       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       | j                   |d«      t        d«      «       y)zb64s_decode()r   )Úb64s_decoderj   r  rc   r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  N)r  r5  r0   r   r
   rl   rm   rÄ   )r   r5  s     r   Útest_b64s_decodez!Base64EngineTest.test_b64s_decodeö  s
  € å4ð 	×Ñ™ VÓ,¬b°«jÔ9Ø×Ñ™¤Q u£XÓ.´°6³
Ô;ð 	×Ñœ* k´1°X³;Ô?ð 	×Ñœ) [°)Ô<Ø×Ñœ) [°&Ô9Ø×Ñœ) [´!°E³(Ô;ð 	×Ñ™ WÓ-¬r°(«|Ô<Ø×Ñœ* k°8Ô<Ø×Ñ™ YÓ/´°J³Ô@Ø×Ñ™ YÓ/´°J³Ô@Ø×Ñ™ ZÓ0´"°\Ó2BÕCr   c                 óÐ  — ddl m} | j                   |t        d«      «      d«       | j	                  t
        rt        nt        |t        d«      j                  d«      «       | j                   |t        d«      «      d«       | j                   |t        d«      «      d	«       | j                   |t        d
«      «      d«       | j                   |t        d«      «      d«       y)zb64s_encode()r   )Úb64s_encoder  rj   rº   r%  r$  r(  r)  r+  r*  r-  r,  N)	r  r8  r0   r   rl   r	   rÄ   r  rp   )r   r8  s     r   Útest_b64s_encodez!Base64EngineTest.test_b64s_encode  r3  r   N)	r*   r+   r,   rB   r  r/  r2  r6  r9  r<   r   r   r  r  ·  s    „ Ù/ò
Kò=ò8=ò&Dó.=r   r  c                   ó²   — e 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dg d¢fddg d¢fgZddg d¢fgZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_Base64Testz+common tests for all Base64Engine instancesNó   ?c                 ó,   ‡ — t        ˆ fd„|D «       «      S )z!generate byte string from offsetsc              3   óV   •K  — | ]   }‰j                   j                  ||d z    –— Œ" y­w)r$   N)ÚengineÚbytemap)Ú.0Úor   s     €r   Ú	<genexpr>z _Base64Test.m.<locals>.<genexpr>5  s'   øè ø€ ÐF¹g¸˜$Ÿ+™+×-Ñ-¨a°°!±Ô4¹gùs   ƒ&))r   )r   Úoffsetss   ` r   Úmz_Base64Test.m3  s   ø€ äÓF¹gÓFÓFÐFr   c                 óš   — | j                   }|j                  }| j                  D ]$  \  }} ||«      }| j                  ||d|›d�«       Œ& y)z,test encode_bytes() against reference inputszencode r¢   N)r?  Úencode_bytesÚencoded_datar0   )r   r?  rÅ   ÚrawÚencodedr¯   s         r   Útest_encode_bytesz_Base64Test.test_encode_bytes:  sH   € à—‘ˆØ×$Ñ$ˆØ ×-Ô-‰LˆC�Ù˜C“[ˆFØ×Ñ˜V¡WºcÐ.CÕDñ .r   c                 ó¢   — | j                   }|j                  }| j                  t        |t	        d«      «       | j                  t        |d«       y)z"test encode_bytes() with bad inputrž   N)r?  rG  rl   rÄ   r
   )r   r?  rÅ   s      r   Útest_encode_bytes_badz!_Base64Test.test_encode_bytes_badB  s>   € à—‘ˆØ×$Ñ$ˆØ×Ñœ) V¬Q¨v«YÔ7Ø×Ñœ) V¨TÕ2r   c                 óš   — | j                   }|j                  }| j                  D ]$  \  }} ||«      }| j                  ||d|›d�«       Œ& y)z,test decode_bytes() against reference inputszdecode r¢   N)r?  Údecode_bytesrH  r0   )r   r?  rp   rI  rJ  r¯   s         r   Útest_decode_bytesz_Base64Test.test_decode_bytesL  sH   € à—‘ˆØ×$Ñ$ˆØ ×-Ô-‰LˆC�Ù˜G“_ˆFØ×Ñ˜V¡Sº'Ð*CÕDñ .r   c                 ó²  — t         rd„ nt        }| j                  }| j                  }|j                  }d}| j                   | |dd«      «      |«       t        dd«      D ]_  }|j                  r|dk  r|n |d|dz
  z  «      }n|dk  r |d|dz   z  «      n|}| j                   | |dd|z  «      «      |d|z  «       Œa | j                   | |ddd«      «      |dz  «       t        dd«      D ]c  }|j                  r|dk  r|n |d|dz
  z  «      }n|dk  r |d|dz   z  «      n|}| j                   | |ddd|z  «      «      ||z   d	|z  «       Œe y
)z(test decode_bytes() ignores padding bitsc                 ó   — t        | g«      S r&   )rX   )Úvs    r   r¡   z7_Base64Test.test_decode_bytes_padding.<locals>.<lambda>V  s
   € œ%  œ*r   rä   r   rè   râ   r$   rA   z
%d/4 bits:z
%d/2 bits:N)r	   Úchrr?  rE  rO  r0   rí   Úbig)r   Úbchrr?  rE  rp   ÚBNULLÚiÚcorrects           r   Útest_decode_bytes_paddingz%_Base64Test.test_decode_bytes_paddingT  sT  € å),Ò$´#ˆØ—‘ˆØ�F‰FˆØ×$Ñ$ˆØˆð 	×Ñ™¡ ! A£›¨Ô/Ü�q˜–ˆAØ�zŠzØ#$ q¢5™%©d°1°q¸±s±8«n‘à,-°ªE™$˜q 1 Q¡3™xœ.°u�Ø×Ñ™V¡A a¨¨1©£IÓ.°¸ÈÑ9IÕJð ð 	×Ñ™¡ ! A a£Ó)¨5°©7Ô3Ü�q˜–ˆAØ�zŠzØ#$ q¢5™%©d°1°q¸±s±8«n‘à,-°ªE™$˜q 1 Q¡3™xœ.°u�Ø×Ñ™V¡A a¨¨!¨Q©$£KÓ0°%¸'±/Ø)¨AÑ-õ/ñ r   c                 óˆ  — | j                   }|j                  }| j                  t        ||j                  dd «       | j                  | j                  |j                  v«       | j                  t        || j                  dz  «       | j                  t        ||j                  dd «       | j                  t        |d«       y)z"test decode_bytes() with bad inputNrf   râ   )	r?  rO  rl   rm   r@  r   Úbad_byterÄ   Úcharmap)r   r?  rp   s      r   Útest_decode_bytes_badz!_Base64Test.test_decode_bytes_bado  s›   € à—‘ˆØ×$Ñ$ˆð 	×Ñœ* f¨f¯n©n¸R¸aÐ.@ÔAð 	�‰˜Ÿ™¨V¯^©^Ð;Ô<Ø×Ñœ* f¨d¯m©m¸A©oÔ>ð 	×Ñœ) V¨V¯^©^¸B¸QÐ-?Ô@Ø×Ñœ) V¨TÕ2r   c                 óÆ  — | j                   }ddlm}m} | j	                  «       }d}t        d«      D �],  }|j                  |rdndd«      }|sd}d|z  d	z   d
z  } |||«      }	|j                  |	«      }
| j                  t        |
«      |«       |j                  |
«      }| j                  ||	«       |dz  dk(  r||j                  g d¢«      z  }d
|z  dz  } |||j                  |«      }
|j                  |
«      }	| j                  t        |	«      |d|z  «       |j                  |	«      }|dz  r| j                  |dd |
dd «       �Œ| j                  ||
«       �Œ/ y)z2test encode_bytes/decode_bytes against random datar   )rS   ra   Fiô  r$   é   Trâ   rA   ræ   )re   r$   rA   zencoded %d:Nre   )r?  r   rS   ra   rU   r   r‡   rG  r0   rV   rO  Úchoicer@  )r   r?  rS   ra   rˆ   Úsaw_zerorX  ÚsizeÚenc_sizerI  rJ  r¯   Úraw_sizes                r   Ú
test_codecz_Base64Test.test_codec‚  sb  € à—‘ˆß:Ø�n‰nÓˆØˆÜ˜—ˆAð —;‘;¡H™q°!°RÓ8ˆDÙØ�Ø˜$™˜q™ 1‘}ˆHÙ˜s DÓ)ˆCð ×)Ñ)¨#Ó.ˆGØ×ÑœS ›\¨8Ô4ð ×(Ñ(¨Ó1ˆFØ×Ñ˜V SÔ)ð �a‰x˜1Š}Ø˜Ÿ
™
¢8Ó,Ñ,�Ø˜‘v˜q‘yˆHÙ   f§n¡n°dÓ;ˆGð ×%Ñ% gÓ.ˆCØ×ÑœS ›X x°ÀÑ1EÔFð ×(Ñ(¨Ó-ˆFØ�aŠxØ× Ñ  ¨¨ ¨g°c°r¨lÖ;à× Ñ  ¨Ö1ñO r   c                 óà  — ddl m} | j                  «       }| j                  }| j                  j                  }d}|dk  �r.|j                  dd«      } |||j                  |«      j                  d«      }|dz  dk(  r| j                  t        ||«       Œ[|j                  |j                  |«      «      }|j                  «       dk  r"|j                  d«      }|j                  d«      }||k(  r/ ||«      \  }	}
| j                  |	«       | j                  |
|«       nC| j!                  |d	z  d«        ||«      \  }	}
| j#                  |	«       | j                  |
|«       |dz  }|dk  r�Œ-y
y
)ztest repair_unused()r   r`   i,  é   rk   ræ   r$   g      à?râ   N)r   ra   rU   r?  Úcheck_repair_unusedr‡   r]  rÅ   rl   rm   rG  rO  r…   rp   r€   r0   rY   r   )r   ra   rˆ   r?  ri  rX  rc  ÚcdataÚrdataÚokr¯   s              r   Útest_repair_unusedz_Base64Test.test_repair_unused±  sP  € õ 	-Ø�n‰nÓˆØ—‘ˆØ"Ÿk™k×=Ñ=ÐØˆØ�#‹gØ—;‘;˜q Ó$ˆDÙ˜s F§N¡N°DÓ9×@Ñ@ÀÓIˆEØ�a‰x˜1Š}à×!Ñ!¤*Ð.AÀ5ÔIØØ×'Ñ'¨×(;Ñ(;¸EÓ(BÓCˆEØ�z‰z‹|˜bÒ ØŸ™ WÓ-�ØŸ™ WÓ-�Ø˜Š~á0°Ó7‘
��FØ× Ñ  Ô$Ø× Ñ  ¨Õ/ð ×#Ñ# D¨1¡H¨aÔ0Ù0°Ó7‘
��FØ—‘ Ô#Ø× Ñ  ¨Ô/Ø�‰FˆAð- �#Žgr   s   3"s   "3)rA   r$   r   s   "3)r$   rA   r   s   ")r   r   r$   c                 ó   — | j                   }| j                  | j                  z   D ];  \  }}}|j                  ||«      }|j	                  |«      }| j                  ||«       Œ= | j                  t        |j                  t        d«      g «       y)ztest encode_transposed_bytes()r[   N)	r?  Ú
transposedÚtransposed_dupsÚencode_transposed_bytesrO  r0   rl   rÄ   r
   )r   r?  r¯   ÚinputrD  ÚtmpÚouts          r   Útest_encode_transposed_bytesz(_Base64Test.test_encode_transposed_bytesâ  s~   € à—‘ˆØ&*§o¡o¸×8LÑ8LÔ&LÑ"ˆF�E˜7Ø×0Ñ0°¸Ó@ˆCØ×%Ñ% cÓ*ˆCØ×Ñ˜S &Õ)ð 'Mð
 	×Ñœ) V×%CÑ%CÄQÀsÃVÈRÕPr   c                 ó°   — | j                   }| j                  D ];  \  }}}|j                  |«      }|j                  ||«      }| j	                  ||«       Œ= y)ztest decode_transposed_bytes()N)r?  ro  rG  Údecode_transposed_bytesr0   )r   r?  rr  r¯   rD  rs  rt  s          r   Útest_decode_transposed_bytesz(_Base64Test.test_decode_transposed_bytesì  sR   € à—‘ˆØ&*§o¤oÑ"ˆE�6˜7Ø×%Ñ% eÓ,ˆCØ×0Ñ0°°gÓ>ˆCØ×Ñ˜S &Õ)ñ '6r   c                 ó¬   — | j                   }| j                  D ]9  \  }}}|j                  |«      }| j                  t        |j
                  ||«       Œ; y)z8test decode_transposed_bytes() fails if map is a one-wayN)r?  rp  rG  rl   rÄ   rw  )r   r?  rr  Ú_rD  rs  s         r   Ú test_decode_transposed_bytes_badz,_Base64Test.test_decode_transposed_bytes_badô  sO   € à—‘ˆØ!%×!5Ô!5ÑˆE�1�gØ×%Ñ% eÓ,ˆCØ×Ñœi¨×)GÑ)GÈØ%õ'ñ "6r   c                 óä  — | j                  «       }| j                  }t        |d|z  «      }t        |d|z  «      }| dz  }||z   dz  }d|z  }	|D ]5  \  }
} ||
«      }| j                  |t        «       | j                  ||«       Œ7 | j                  t        |d«       | j                  t        ||	«       |D ]"  \  }
}| j                   ||«      |
d|›d�«       Œ$ | j                  }| j                  t        | |d«      |dz   z  «       | j                  t        | |d«      |dz
  z  «       | j                  t        || j                  |z  «       | j                  t        ||j                  d   «       | j                  t        |d	«       dd
lm} t        d«      D ]Ï  }|j                  d|	dz
  «      }
 ||
«      }| j                  t!        |«      |«       | j                   ||«      |
«        |||j"                  |«      } ||«      }
| j%                  |
dd|z  «       | j'                  |
|	d|z  «        ||
«      }|r| j                  |d	d |d	d «       Œ¾| j                  ||«       ŒÑ y	)z5helper to check encode_intXX & decode_intXX functionszencode_int%szdecode_int%srè   r$   re   zencoded r¢   r   Nr`   éd   zdecode %r out of bounds:rœ   )rU   r?  r§   rW   rX   r0   rl   rm   rE  r\  rÄ   r]  r   ra   r   r‡   rV   r@  rï   rñ   )r   ÚbitsÚencoded_pairsrˆ   r?  rÅ   rp   ÚpadÚcharsÚupperrN   rJ  r¯   rE  ra   rX  s                   r   Úcheck_int_pairz_Base64Test.check_int_pairÿ  sJ  € à�n‰nÓˆØ—‘ˆÜ˜ °$Ñ!6Ó7ˆÜ˜ °$Ñ!6Ó7ˆØˆe�a‰iˆØ�c‘˜A‘ˆØ�4‘ˆó ,‰NˆE�7Ù˜E“]ˆFØ×!Ñ! &¬%Ô0Ø×Ñ˜V WÕ-ð ,ð 	×Ñœ* f¨bÔ1Ø×Ñœ* f¨eÔ4ó ,‰NˆE�7Ø×Ñ™V G›_©eÂgÐ5OÕPð ,à�F‰FˆØ×Ñœ* f©a°«d°E¸!±G©nÔ=Ø×Ñœ* f©a°«d°E¸!±G©nÔ=Ø×Ñœ* f¨d¯m©m¸EÑ.AÔBØ×Ñœ) V¨V¯^©^¸AÑ->Ô?Ø×Ñœ) V¨TÔ2õ 	-Ü˜–ˆAà—K‘K  5¨¡7Ó+ˆEÙ˜U“mˆGØ×ÑœS ›\¨5Ô1Ø×Ñ™V G›_¨eÔ4ñ !  f§n¡n°eÓ<ˆGÙ˜7“OˆEØ×#Ñ# E¨1Ð.HÈ7Ñ.RÔSØ�O‰O˜E 5Ð*DÀwÑ*NÔOÙ˜E“]ˆFÙØ× Ñ  ¨¨ ¨g°c°r¨lÕ;à× Ñ  ¨Õ1ñ! r   c                 ó|   — | j                   }| j                  }| j                  dd |d«      fd |d«      fg«       y )Nrè   r   é?   )r?  rE  rƒ  ©r   r?  rE  s      r   Ú	test_int6z_Base64Test.test_int6/  s9   € Ø—‘ˆØ�F‰FˆØ×Ñ˜A ¡A a£D 	¨B±°"³¨;Ð7Õ8r   c           
      ó¾   — | j                   }| j                  }| j                  dd |dd«      fd|j                  r	 |dd«      n |dd«      fd |dd«      fg«       y )Nr`  r   r…  iÿ  ©r?  rE  rƒ  rU  r†  s      r   Ú
test_int12z_Base64Test.test_int124  s`   € Ø—‘ˆØ�F‰FˆØ×Ñ˜B ¡A a¨£F Ø˜FŸJšJ‘�1�R”©A¨b°«GÐ4°u¹aÀÀ2»hÐ6Gð Iõ 	Jr   c                 óÎ   — | j                   }| j                  }| j                  dd |dddd«      fd|j                  r |dddd«      n
 |dddd«      fd |dddd«      fg«       y )Né   r   r…  iÿÿÿ r‰  r†  s      r   Ú
test_int24z_Base64Test.test_int24:  so   € Ø—‘ˆØ�F‰FˆØ×Ñ˜B ¡A a¨¨!¨A£J Ø §
¢
‘�1�Q�q˜”±°"°Q°q¸³Ð<Ø‘q˜˜B˜r "“~Ð&ð (õ 	)r   c                 óB  — | j                   }| j                  }| j                  dd |ddddddddddd«      fd|j                  r |ddddddddddd«      n |ddddddddddd«      fd|j                  r |ddddddddddd«      n |ddddddddddd«      fg«       y )Né@   r   r…  ræ   é<   l   ÿÿÿÿ rw   r‰  r†  s      r   Ú
test_int64z_Base64Test.test_int64A  sØ   € ð —‘ˆØ�F‰FˆØ×Ñ˜B !¡Q q¨¨1¨Q°°!°A°a¸¸1¸QÓ%?Ð!@Ø°F·J²J‘Q�q˜˜1˜Q  ! A a¨¨1¨RÔ0Ù�r˜!˜A˜a  1 Q q¨!¨A¨aÓ0ð2àÀVÇZÂZ™A˜b  B r¨2¨b°°B¸¸2¸bÔAÙ˜2˜b  B¨¨2¨b°°R¸¸2Ó>ð@ð!Aõ 	Br   c                 ó  — | j                   s| j                  d«      ‚| j                  }| j                   D ]T  \  }}}t        |d|z  «      }t        |d|z  «      }| j	                   ||«      |«       | j	                   ||«      |«       ŒV y)z(test against reference integer encodingsznone defined for classzencode_int%dzdecode_int%dN)Úencoded_intsÚ	skipTestsr?  r§   r0   )r   r?  ÚdatarN   r~  rÅ   rp   s          r   Útest_encoded_intsz_Base64Test.test_encoded_intsL  s…   € à× Ò Ø—.‘.Ð!9Ó:Ð:Ø—‘ˆØ!%×!2Ô!2ÑˆD�%˜Ü˜V ^°dÑ%:Ó;ˆFÜ˜V ^°dÑ%:Ó;ˆFØ×Ñ™V E›]¨DÔ1Ø×Ñ™V D›\¨5Õ1ñ	 "3r   )r*   r+   r,   rB   r?  rH  r“  r\  rE  rK  rM  rP  rZ  r^  rf  rm  ro  rp  ru  rx  r{  rƒ  r‡  rŠ  r�  r‘  r–  r<   r   r   r;  r;     s¯   „ Ù5ð €Fð €Lð €Lð €HòGòEò3òEò/ò63ò&-2ò^ðP 
˜/ª'Ð2Ø	˜/ª'Ð2ð€Jð 
˜/ª'Ð2ð€Oò
Qò*ò'ò.2ò`9ò
Jò)ò	Bó	2r   r;  )Úh64Úh64bigc                   ó(   — e Zd ZdZeZdZg d¢ZddgZy)ÚH64_Testztest H64 codec functionsz	h64 codec)	©r   r   )ó   Us   J/)ó   Uªs   Jd8)ó   UªUs   JdOJ)ó   UªUªs   JdOJe0)ó   UªUªUs   JdOJeK3)ó   UªUªUªs   JdOJeKZe)ó   UªU¯s   JdOJj0)ó   UªUª_s   JdOJey3)ó   z.r…  r`  )ó   .zéÀ  r`  N)	r*   r+   r,   rB   r—  r?  ÚdescriptionPrefixrH  r“  r<   r   r   rš  rš  _  s&   „ Ù"Ø€FØ#Ðò€Lð  	Øð�Lr   rš  c                   ó(   — e Zd ZdZeZdZg d¢ZddgZy)ÚH64Big_Testztest H64Big codec functionszh64big codec)	r›  )rœ  s   JE)r�  s   JOc)rž  s   JOdJ)rŸ  s   JOdJeU)r   s   JOdJeZI)r¡  s   JOdJeZKe)r¢  s   JOdJfk)r£  s   JOdJeZw)r¥  r…  r`  )r¤  r¦  r`  N)	r*   r+   r,   rB   r˜  r?  r§  rH  r“  r<   r   r   r©  r©  x  s&   „ Ù%Ø€FØ&Ðò€Lð  	Øð�Lr   r©  )rB   Ú
__future__r   Ú	functoolsr   rx   r   r   r   Úpasslib.utils.compatr   r   r	   r
   r   r   r   Úpasslib.tests.utilsr   r   r   r   rø   r  r;  r  r—  r˜  rš  r©  r<   r   r   Ú<module>r®     s€   ðÙ õ &å Û ÷ 2ß O× OÑ Oß BÑ Bô
^:ˆxô ^:ôH{:�ô {:ô@g=�xô g=ôRu2�(ô u2÷z	 -ôˆ{ô ô2�+õ r   