ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3

  \H                 @   s   d Z ddlZddlZddlmZ ddlmZ	 ej
ej d Ze ZG dd de	ddZdd	d
ZdddZeddddZeddddZeddddZeddddZg Zx:eeeefD ]*ZedeZereeejkreje qW [[dS )zEWrapper to the POSIX crypt library call and associated functionality.    N)SystemRandom)
namedtuplez./c               @   s   e Zd ZdZdd ZdS )_MethodziClass representing a salt method per the Modular Crypt Format or the
    legacy 2-character crypt method.c             C   s   dj | jS )Nz<crypt.METHOD_{}>)formatname)self r   /usr/lib64/python3.6/crypt.py__repr__   s    z_Method.__repr__N)__name__
__module____qualname____doc__r
   r   r   r   r	   r      s   r   z name ident salt_chars total_sizec             C   sH   | dkrt d } | jr"dj| jnd}|djdd t| jD 7 }|S )zsGenerate a salt for the specified method.

    If not specified, the strongest available method will be used.

    Nr   z${}$ c             s   s   | ]}t jtV  qd S )N)_srZchoice
_saltchars).0charr   r   r	   	<genexpr>   s    zmksalt.<locals>.<genexpr>)methodsZidentr   joinrangeZ
salt_chars)methodsr   r   r	   mksalt   s
    r   c             C   s&   |dkst |trt|}tj| |S )aR  Return a string representing the one-way hash of a password, with a salt
    prepended.

    If ``salt`` is not specified or is ``None``, the strongest
    available method will be selected and a salt generated.  Otherwise,
    ``salt`` may be one of the ``crypt.METHOD_*`` values, or a string as
    returned by ``crypt.mksalt()``.

    N)
isinstancer   r   _cryptcrypt)ZwordZsaltr   r   r	   r   #   s    
r   ZCRYPT      ZMD51   "   ZSHA2565   ?   ZSHA5126j   r   )N)N)r   r   stringZ_stringZrandomr   Z_SystemRandomcollectionsr   Z_namedtupleZascii_lettersZdigitsr   r   r   r   r   ZMETHOD_CRYPTZ
METHOD_MD5ZMETHOD_SHA256ZMETHOD_SHA512r   _methodZ_resultlenZ
total_sizeappendr   r   r   r	   <module>   s&   	


