Your IP : 216.73.216.75
U
e5dT�@s�dZddddgZdZdZdZdZzd d
lmZmZWne k
rPdZdZYnXdd
�Z
dd�Zddd�Zddd�Z
ddd�Zddd�Zdd�Zdd�Zdd�Zedkr�e�dS) zHConversions to/from quoted-printable transport encoding as per RFC 1521.�encode�decode�encodestring�decodestring�=�Ls0123456789ABCDEF��)�a2b_qp�b2a_qpNcCs:|dkr|S|dkr|S|tkp8d|ko2dknS)z�Decide whether a particular byte ordinal needs to be quoted.
The 'quotetabs' flag indicates whether embedded tabs and spaces should be
quoted. Note that line-ending tabs and spaces are always encoded, as per
RFC 1521.
� �_� �~)�ESCAPE)�c� quotetabs�header�r�/usr/lib64/python3.8/quopri.py�needsquotings
rcCs(t|�}ttt|dt|df�S)zQuote a single character.�)�ordr�bytes�HEX�rrrr�quote$srFc
Cs2tdk r,|��}t|||d�}|�|�dS|dfdd�}d}|��}|sN�qg} d}
|dd�dkrv|dd�}d}
|D]D}t|f�}t|||�r�t|�}|r�|dkr�| �d �qz| �|�qz|dk r�||�t� | �}t
|�tk�r||dtd
�dd�|td
d�}q�|}q>|dk �r.|||
d�dS)
avRead 'input', apply quoted-printable encoding, and write to 'output'.
'input' and 'output' are binary file objects. The 'quotetabs' flag
indicates whether embedded tabs and spaces should be quoted. Note that
line-ending tabs and spaces are always encoded, as per RFC 1521.
The 'header' flag indicates whether we are encoding spaces as _ as per RFC
1522.N�rr�
cSsj|r<|dd�dkr<|�|dd�t|dd��|�n*|dkrX|�t|�|�n|�||�dS)N���r�.)�writer)�s�output�lineEndrrrr ;s
(zencode.<locals>.writerrr
r�s=
)r#)r
�readr �readlinerrr�append�EMPTYSTRING�join�len�MAXLINESIZE)
�inputr"rr�data�odatar Zprevline�lineZoutline�strippedrZthislinerrrr,s>
cCsFtdk rt|||d�Sddlm}||�}|�}t||||�|��S)Nrr��BytesIO)r
�ior2r�getvalue)r!rrr2�infp�outfprrrrjscCs�tdk r*|��}t||d�}|�|�dSd}|��}|s>�q�dt|�}}|dkr�||d|�dkr�d} |d}|dkr�||d|�dkr�|d}qtnd} ||k�r�|||d�}
|
dkr�|r�|d }|d}q�|
tkr�||
}|d}q�|d|k�r| �sd} �q�q�|d|k�rJ||d|d
�tk�rJ|t}|d
}q�|d
|k�r�t||d|d
���r�t||d
|d���r�|tt||d|d��f�}|d}q�||
}|d}q�| s.|�|d�d}q.|�r�|�|�dS)z�Read 'input', apply quoted-printable decoding, and write to 'output'.
'input' and 'output' are binary file objects.
If 'header' is true, decode underscore as space (per RFC 1522).N�rrrr$rs
rr
��) r r%r r&r*r�ishexr�unhex)r,r"rr-r.�newr/�i�n�partialrrrrrusP
(
B"
cCsDtdk rt||d�Sddlm}||�}|�}t|||d�|��S)Nr7rr1)r r3r2rr4)r!rr2r5r6rrrr�scCsHd|kodknpFd|ko*dknpFd|koBdkSS)zDReturn true if the byte ordinal 'c' is a hexadecimal digit in ASCII.�0�9�a�f�A�Frrrrrr:�sr:cCs�d}|D]�}t|f�}d|kr*dkr8nn
td�}nLd|krLdkr^nntd�d}n&d |krrd
kr�nntd �d}n|dt|�|}q|S)z.Get the integer value of a hexadecimal number.rr@rA�0rBrC�a�
rDrEr)rr)r!�bitsrr=rrrr;�s
r;cCs�ddl}ddl}z|�|jdd�d�\}}WnV|jk
r�}z6|j|_t|�td�td�td�|�d�W5d}~XYnXd}d}|D] \}}|dkr�d}|d kr�d}q�|r�|r�|j|_td
�|�d�|s�dg}d} |D]�}
|
dkr�|jj }nTzt
|
d�}WnDtk
�rP}z$|j�d
|
|f�d} WY�q�W5d}~XYnXz*|�rjt||jj �nt||jj |�W5|
dk�r�|�
�Xq�| �r�|�| �dS)Nrr$Ztdz"usage: quopri [-t | -d] [file] ...z-t: quote tabsz-d: decode; default encoder8z-tz-dz -t and -d are mutually exclusive�-�rbz%s: can't open (%s)
)�sys�getopt�argv�error�stderr�stdout�print�exit�stdin�buffer�open�OSErrorr �closerr)rLrMZopts�args�msgZdecoZtabs�orG�sts�file�fprrr�main�sT
r_�__main__)F)FF)F)F)�__doc__�__all__rr+rr(Zbinasciir r
�ImportErrorrrrrrrr:r;r_�__name__rrrr�<module>s*
>
+
.
?>