509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \&^  ã               @   sì   d ddgZ ddlZddlZddlZddlZddlmZ ddlmZ	 e	j
Z
dZdZd	ZdZdZdZdZe
dƒZe
dƒZejdejejB ejB ƒZejdƒZejdƒZejjZdd„ Zddd„ZG dd „ d ƒZG dd„ dƒZ G dd„ de!ƒZ"dS )ÚHeaderÚdecode_headerÚmake_headeré    N)ÚHeaderParseError)ÚcharsetÚ
ú ó    é   Ú éN   z 	zus-asciizutf-8ai  
  =\?                   # literal =?
  (?P<charset>[^?]*?)   # non-greedy up to the next ? is the charset
  \?                    # literal ?
  (?P<encoding>[qb])    # either a "q" or a "b", case insensitive
  \?                    # literal ?
  (?P<encoded>.*?)      # non-greedy up to the next ?= is the encoded string
  \?=                   # literal ?=
  z[\041-\176]+:$z
\n[^ \t]+:c             C   s°  t | dƒrdd„ | jD ƒS tj| ƒs.| d fgS g }x�| jƒ D ]„}tj|ƒ}d}xp|r¾|jdƒ}|rn|jƒ }d}|r‚|j|d d fƒ |rP|jdƒj	ƒ }|jdƒj	ƒ }|jdƒ}|j|||fƒ qPW q<W g }	xVt
|ƒD ]J\}
}|
dkrÒ|d rÒ||
d  d rÒ||
d  d jƒ rÒ|	j|
d ƒ qÒW xt|	ƒD ]}||= �q*W g }xÒ|D ]Ê\}}}|d k�rh|j||fƒ n¤|d	k�rŽtjj|ƒ}|j||fƒ n~|d
k�r t|ƒd }|�r¾|dd d| … 7 }ytjj|ƒ}W n  tjk
�rî   tdƒ‚Y nX |j||fƒ ntd| ƒ‚�qDW g }d  }}x~|D ]v\}}t|tƒ�rBt|dƒ}|d k�rV|}|}nB||k�rx|j||fƒ |}|}n |d k�r�|t| 7 }n||7 }�q$W |j||fƒ |S )NÚ_chunksc             S   s(   g | ] \}}t j|t|ƒƒt|ƒf‘qS © )Ú_charsetZ_encodeÚstr)Ú.0Ústringr   r   r   ú$/usr/lib64/python3.6/email/header.pyú
<listcomp>M   s   z!decode_header.<locals>.<listcomp>Tr   Fé   é   ÚqÚbé   z===zBase64 decoding errorzUnexpected encoding: zraw-unicode-escape)Úhasattrr   ÚecreÚsearchÚ
splitlinesÚsplitÚpopÚlstripÚappendÚlowerÚ	enumerateÚisspaceÚreversedÚemailÚ
quoprimimeZheader_decodeÚlenZ
base64mimeÚdecodeÚbinasciiÚErrorr   ÚAssertionErrorÚ
isinstancer   ÚbytesÚBSPACE)ÚheaderZwordsÚlineÚpartsÚfirstZ	unencodedr   ÚencodingZencodedZdroplistÚnÚwÚdZdecoded_wordsZencoded_stringZwordZpaderrZ	collapsedZ	last_wordÚlast_charsetr   r   r   r   =   sz    






4






c             C   sL   t |||d�}x8| D ]0\}}|d k	r8t|tƒ r8t|ƒ}|j||ƒ qW |S )N)Ú
maxlinelenÚheader_nameÚcontinuation_ws)r   r-   ÚCharsetr!   )Zdecoded_seqr9   r:   r;   ÚhÚsr   r   r   r   r   œ   s    c               @   sJ   e Zd Zddd„Zdd„ Zdd	„ Zdd
d„Zdd„ Zddd„Zdd„ Z	dS )r   Nr   Ústrictc             C   s|   |d krt }nt|tƒs t|ƒ}|| _|| _g | _|d k	rH| j|||ƒ |d krTt}|| _|d krjd| _	nt
|ƒd | _	d S )Nr   r   )ÚUSASCIIr-   r<   r   Ú_continuation_wsr   r!   Ú
MAXLINELENÚ_maxlinelenÚ
_headerlenr(   )Úselfr>   r   r9   r:   r;   Úerrorsr   r   r   Ú__init__´   s    
zHeader.__init__c       	      C   sÌ   | j ƒ  g }d }d }x¬| jD ]¢\}}|}|tjkrJ|jddƒ}|jddƒ}|rž|o^| j|d ƒ}|dkr†|dkrž| rž|jtƒ d }n|d	krž| rž|jtƒ |o®| j|d
 ƒ}|}|j|ƒ qW t	j
|ƒS )NÚasciiÚsurrogateescapeÚreplacer   úus-asciir   )NrK   )NrK   )NrK   éÿÿÿÿ)Ú
_normalizer   r   ÚUNKNOWN8BITÚencoder)   Ú	_nonctextr!   ÚSPACEÚEMPTYSTRINGÚjoin)	rE   ZuchunksÚlastcsÚ	lastspacer   r   ZnextcsZoriginal_bytesÚhasspacer   r   r   Ú__str__ã   s*    


zHeader.__str__c             C   s   |t | ƒkS )N)r   )rE   Úotherr   r   r   Ú__eq__  s    zHeader.__eq__c             C   s¶   |d kr| j }nt|tƒs"t|ƒ}t|tƒsZ|jp4d}|t jkrN|jddƒ}n|j||ƒ}|jpbd}|t jkr¢y|j||ƒ W n" t	k
r    |dkr˜‚ t
}Y nX | jj||fƒ d S )Nzus-asciirI   )r   r-   r<   r   Zinput_codecrN   r)   Zoutput_codecrO   ÚUnicodeEncodeErrorÚUTF8r   r!   )rE   r>   r   rF   Zinput_charsetZoutput_charsetr   r   r   r!   	  s$    






zHeader.appendc             C   s   |j ƒ p|dkS )Nú(ú)ú\)r\   r]   r^   )r$   )rE   r>   r   r   r   rP   4  s    zHeader._nonctextú;, 	r   c             C   s°  | j ƒ  |d kr| j}|dkr"d}t| j|| j|ƒ}d }d  }}�x4| jD �](\}}	|d k	r¤|ol| j|d ƒ}|d	krŽ| s„|	d
kr¤|jƒ  n|	dkr¤| r¤|jƒ  |o´| j|d ƒ}|	}d}|jƒ }
|
rÞ|j	d|
d |	ƒ n|j	dd|	ƒ xr|
dd … D ]b}|j
ƒ  |	jd k	�r,|j	| jd|jƒ  |	ƒ n.|jƒ }|d t|ƒt|ƒ … }|j	|||	ƒ � qúW t|
ƒdkrJ|j
ƒ  qJW | j�rˆ|jƒ  |j|ƒ}tj|ƒ�r¬tdj|ƒƒ‚|S )Nr   i@B úus-asciir   Fr   r   z8header value appears to contain an embedded header: {!r})Nr`   )Nr`   )Nr`   rL   )rM   rC   Ú_ValueFormatterrD   rA   r   rP   Úadd_transitionr   ÚfeedÚnewlineÚheader_encodingr    r(   Ú_strÚ_embedded_headerr   r   Úformat)rE   Ú
splitcharsr9   ÚlinesepZ	formatterrT   rV   rU   r   r   Úlinesr1   ZslineÚfwsÚvaluer   r   r   rO   9  sR    !


zHeader.encodec             C   s|   g }d }g }xL| j D ]B\}}||kr0|j|ƒ q|d k	rL|jtj|ƒ|fƒ |g}|}qW |rr|jtj|ƒ|fƒ || _ d S )N)r   r!   rQ   rS   )rE   Zchunksr8   Z
last_chunkr   r   r   r   r   rM   ‰  s    zHeader._normalize)NNNNr   r?   )Nr?   )r_   Nr   )
Ú__name__Ú
__module__Ú__qualname__rG   rW   rY   r!   rP   rO   rM   r   r   r   r   r   ³   s     
- 
+
Pc               @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ra   c             C   s0   || _ || _t|ƒ| _|| _g | _t|ƒ| _d S )N)Ú_maxlenrA   r(   Ú_continuation_ws_lenÚ_splitcharsÚ_linesÚ_AccumulatorÚ_current_line)rE   Z	headerlenÚmaxlenr;   ri   r   r   r   rG   ž  s    
z_ValueFormatter.__init__c             C   s   | j ƒ  |j| jƒS )N)rd   rS   rt   )rE   rj   r   r   r   rf   ¦  s    z_ValueFormatter._strc             C   s
   | j tƒS )N)rf   ÚNL)rE   r   r   r   rW   ª  s    z_ValueFormatter.__str__c             C   sp   | j jƒ }|dkr| j j|Ž  t| j ƒdkrb| j jƒ rP| jd  t| j ƒ7  < n| jjt| j ƒƒ | j jƒ  d S )Nr   r   r   r   )r   r   rL   )	rv   r   Úpushr(   Ú	is_onlywsrt   r   r!   Úreset)rE   Zend_of_liner   r   r   rd   ­  s    

z_ValueFormatter.newlinec             C   s   | j jddƒ d S )Nr   r   )rv   ry   )rE   r   r   r   rb   ¸  s    z_ValueFormatter.add_transitionc             C   sÄ   |j d kr| j||| jƒ d S |j|| jƒ ƒ}y|jdƒ}W n tk
rP   d S X |d k	rf| j||ƒ y|jƒ }W n tk
r†   d S X | jƒ  | j	j
| j|ƒ x|D ]}| jj| j| ƒ q¦W d S )Nr   )re   Ú_ascii_splitrs   Zheader_encode_linesÚ_maxlengthsr   Ú
IndexErrorÚ_append_chunkrd   rv   ry   rA   rt   r!   )rE   rl   r   r   Zencoded_linesZ
first_lineÚ	last_liner1   r   r   r   rc   »  s$    

z_ValueFormatter.feedc             c   s*   | j t| jƒ V  x| j | j V  qW d S )N)rq   r(   rv   rr   )rE   r   r   r   r}   à  s    z_ValueFormatter._maxlengthsc             C   sj   t jdt d || ƒ}|d r0dg|d d…< n
|jdƒ x*tt|ƒgd Ž D ]\}}| j||ƒ qNW d S )Nz([z]+)r   r   r   )Úrer   ÚFWSr   ÚzipÚiterr   )rE   rl   r   ri   r2   Úpartr   r   r   r|   æ  s    
z_ValueFormatter._ascii_splitc             C   s
  | j j||ƒ t| j ƒ| jk�rxº| jD ]t}xlt| j jƒ d ddƒD ]P}|jƒ rp| j | d }|rp|d |krpP | j |d  d }|rD|d |krDP qDW q(P q(W | j jƒ \}}| j j	dkrÊ| j
ƒ  |sÊd}| j j||ƒ d S | j j|ƒ}| jjt| j ƒƒ | j j|ƒ d S )Nr   r   r   rL   rL   )rv   ry   r(   rq   rs   ÚrangeÚ
part_countr$   r   Ú_initial_sizerd   Úpop_fromrt   r!   r   r{   )rE   rl   r   ZchÚiZprevpartr…   Z	remainderr   r   r   r   ü  s.    z_ValueFormatter._append_chunkN)rn   ro   rp   rG   rf   rW   rd   rb   rc   r}   r|   r   r   r   r   r   ra   �  s   %ra   c                   sj   e Zd Zd‡ fdd„	Zdd„ Zddd„Z‡ fdd	„Zd
d„ Zdd„ Zddd„Z	dd„ Z
‡ fdd„Z‡  ZS )ru   r   c                s   || _ tƒ jƒ  d S )N)rˆ   ÚsuperrG   )rE   Zinitial_size)Ú	__class__r   r   rG     s    z_Accumulator.__init__c             C   s   | j ||fƒ d S )N)r!   )rE   rl   r   r   r   r   ry   #  s    z_Accumulator.pushc             C   s   | |d … }g | |d …< |S )Nr   )rE   rŠ   Zpoppedr   r   r   r‰   &  s    z_Accumulator.pop_fromc                s   | j ƒ dkrdS tƒ jƒ S )Nr   r   )r   r   )r‡   r‹   r   )rE   )rŒ   r   r   r   +  s    z_Accumulator.popc             C   s   t dd„ | D ƒ| jƒS )Nc             s   s"   | ]\}}t |ƒt |ƒ V  qd S )N)r(   )r   rl   r…   r   r   r   ú	<genexpr>1  s    z'_Accumulator.__len__.<locals>.<genexpr>)Úsumrˆ   )rE   r   r   r   Ú__len__0  s    z_Accumulator.__len__c             C   s   t jdd„ | D ƒƒS )Nc             s   s    | ]\}}t j||fƒV  qd S )N)rR   rS   )r   rl   r…   r   r   r   r�   5  s   z'_Accumulator.__str__.<locals>.<genexpr>)rR   rS   )rE   r   r   r   rW   4  s    
z_Accumulator.__str__Nc             C   s"   |d krg }|| d d …< d| _ d S )Nr   )rˆ   )rE   Zstartvalr   r   r   r{   8  s    z_Accumulator.resetc             C   s   | j dko|  pt| ƒjƒ S )Nr   )rˆ   r   r$   )rE   r   r   r   rz   >  s    z_Accumulator.is_onlywsc                s
   t ƒ jƒ S )N)r‹   r�   )rE   )rŒ   r   r   r‡   A  s    z_Accumulator.part_count)r   )r   )N)rn   ro   rp   rG   ry   r‰   r   r�   rW   r{   rz   r‡   Ú__classcell__r   r   )rŒ   r   ru     s   

ru   z        )NNr   )#Ú__all__r�   r*   Zemail.quoprimimer&   Zemail.base64mimeZemail.errorsr   r   r   r<   rx   rQ   r/   ZSPACE8rR   rB   r‚   r@   r[   ÚcompileÚVERBOSEÚ
IGNORECASEÚ	MULTILINEr   Zfcrerg   r'   Z_max_appendr   r   r   ra   Úlistru   r   r   r   r   Ú<module>   s>   

_ 
 k 