???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \j                 @   s   d Z ddlZddlZddlZddlZddlZdddgZG dd deZddd	Z	dd
dZ
dddZdddZdd ZyddlZejejf W nB eefk
r   yddlZW n ek
r   eZY nX e
ZY nX e	ZdS )a  Utilities to get a password and/or the current user name.

getpass(prompt[, stream]) - Prompt for a password, with echo turned off.
getuser() - Get the user name from the environment or password database.

GetPassWarning - This UserWarning is issued when getpass() cannot prevent
                 echoing of the password contents while reading.

On Windows, the msvcrt module will be used.

    NgetpassgetuserGetPassWarningc               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   /usr/lib64/python3.6/getpass.pyr      s    
Password: c          .   C   s  d}t j }yJtjdtjtjB }tj|d}|j| tj	|}|j| |sX|}W np t
k
r } zT|j  ytjj }W n& ttfk
r   d}t| |}Y nX tj}|stj}W Y dd}~X nX |dk	rytj|}|dd }	|	d  tj M  < tj}
ttdr|
tjO }
z tj||
|	 t| ||d}W dtj||
| |j  X W n@ tjk
r   |dk	rz ||k	r|j  t| |}Y nX |jd |S Q R X dS )a  Prompt for a password, with echo turned off.

    Args:
      prompt: Written on stream to ask for the input.  Default: 'Password: '
      stream: A writable file object to display the prompt.  Defaults to
              the tty.  If no tty is available defaults to sys.stderr.
    Returns:
      The seKr3t input.
    Raises:
      EOFError: If our input tty or stdin was closed.
      GetPassWarning: When we were unable to turn echo off on the input.

    Always restores terminal settings before returning.
    Nz/dev/ttyzw+   TCSASOFT)input
)
contextlib	ExitStackosopenO_RDWRO_NOCTTYioFileIOenter_contextTextIOWrapperOSErrorclosesysstdinfilenoAttributeError
ValueErrorfallback_getpassstderrtermios	tcgetattrZECHOZ	TCSAFLUSHhasattrr   	tcsetattr
_raw_inputflusherrorwrite)promptstreamZpasswdstackfdZttyr   eoldnewZtcsetattr_flagsr   r   r	   unix_getpass   sR    








r1   c             C   s   t jt jk	rt| |S x| D ]}tj| qW d}xHtj }|dksL|dkrNP |dkrZt|dkrp|dd }q4|| }q4W tjd tjd |S )	z9Prompt for password with echo off, using Windows getch(). r   N   )r   r   	__stdin__r    msvcrtZputwchZgetwchKeyboardInterrupt)r*   r+   cZpwr   r   r	   win_getpassa   s"    



r<   c             C   s0   t jdtdd |stj}td|d t| |S )Nz%Can not control echo on the terminal.   )
stacklevelz&Warning: Password input may be echoed.)file)warningswarnr   r   r!   printr&   )r*   r+   r   r   r	   r    x   s    r    r2   c             C   s   |s
t j}|st j}t| } | rpy|j|  W n8 tk
rf   | j|jd} | j|j} |j|  Y nX |j	  |j
 }|st|d dkr|d d }|S )Nreplacer6   r   r7   r7   )r   r!   r   strr)   UnicodeEncodeErrorencodeencodingdecoder'   readlineEOFError)r*   r+   r   liner   r   r	   r&      s&    r&   c              C   s<   x dD ]} t jj| }|r|S qW ddl}|jt j d S )zGet the username from the environment or password database.

    First try various environment variables, then the password
    database.  This works on Windows as long as USERNAME is set.

    LOGNAMEUSERLNAMEUSERNAMEr   N)rL   rM   rN   rO   )r   environgetpwdgetpwuidgetuid)nameuserrR   r   r   r	   r      s    
)r
   N)r
   N)r
   N)r2   NN)__doc__r   r   r   r   r@   __all__UserWarningr   r1   r<   r    r&   r   r"   r#   r%   ImportErrorr   r9   r   r   r   r   r	   <module>   s,   

D

	


