???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5düX  ã                   @   s²   d dgZ ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 e 
d¡Ze 
d	¡Ze 
d
¡Ze 
d	¡Ze 
d¡ZdZdZeƒ ZG dd„ deƒZG dd „ d ƒZG dd„ deƒZdS )Ú
FeedParserÚBytesFeedParseré    N)Úerrors)Úcompat32)Údeque)ÚStringIOz
\r\n|\r|\nz(\r\n|\r|\n)z(\r\n|\r|\n)\Zz%^(From |[\041-\071\073-\176]*:|[\t ])Ú Ú
c                   @   s\   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d„ ZdS )ÚBufferedSubFilec                 C   s$   t dd| _tƒ | _g | _d| _d S )Nr   )ÚnewlineF)r   Ú_partialr   Ú_linesÚ	_eofstackÚ_closed©Úself© r   ú(/usr/lib64/python3.8/email/feedparser.pyÚ__init__5   s    zBufferedSubFile.__init__c                 C   s   | j  |¡ d S ©N)r   Úappend)r   Zpredr   r   r   Úpush_eof_matcher@   s    z BufferedSubFile.push_eof_matcherc                 C   s
   | j  ¡ S r   )r   Úpopr   r   r   r   Úpop_eof_matcherC   s    zBufferedSubFile.pop_eof_matcherc                 C   s<   | j  d¡ |  | j  ¡ ¡ | j  d¡ | j  ¡  d| _d S )Nr   T)r   ÚseekÚ	pushlinesÚ	readlinesÚtruncater   r   r   r   r   ÚcloseF   s
    
zBufferedSubFile.closec                 C   sL   | j s| jrdS tS | j  ¡ }t| jƒD ]}||ƒr(| j  |¡  dS q(|S ©Nr   )r   r   ÚNeedMoreDataÚpopleftÚreversedr   Ú
appendleft)r   ÚlineZateofr   r   r   ÚreadlineN   s    
zBufferedSubFile.readlinec                 C   s   | j  |¡ d S r   )r   r#   ©r   r$   r   r   r   Ú
unreadline`   s    zBufferedSubFile.unreadlinec                 C   sx   | j  |¡ d|kr d|kr d S | j  d¡ | j  ¡ }| j  d¡ | j  ¡  |d  d¡sj| j  | ¡ ¡ |  |¡ d S )Nr	   úr   éÿÿÿÿ)r   Úwriter   r   r   Úendswithr   r   )r   ÚdataÚpartsr   r   r   Úpushe   s    

zBufferedSubFile.pushc                 C   s   | j  |¡ d S r   )r   Úextend)r   Úlinesr   r   r   r   z   s    zBufferedSubFile.pushlinesc                 C   s   | S r   r   r   r   r   r   Ú__iter__}   s    zBufferedSubFile.__iter__c                 C   s   |   ¡ }|dkrt‚|S r   )r%   ÚStopIterationr&   r   r   r   Ú__next__€   s    zBufferedSubFile.__next__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r%   r'   r.   r   r1   r3   r   r   r   r   r
   -   s   r
   c                   @   s\   e Zd Zdedœ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 )r   N©Úpolicyc                C   sž   || _ d| _|d kr<|jd kr2ddlm} || _qn|j| _n2|| _z|| j d W n tk
rl   d| _Y nX tƒ | _g | _	|  
¡ j| _d | _d | _d| _d S )NFr   )ÚMessager7   T)r8   Ú_old_style_factoryZmessage_factoryZemail.messager9   Ú_factoryÚ	TypeErrorr
   Ú_inputÚ	_msgstackÚ	_parsegenr3   Ú_parseÚ_curÚ_lastÚ_headersonly)r   r;   r8   r9   r   r   r   r   ‹   s$    

zFeedParser.__init__c                 C   s
   d| _ d S )NT)rC   r   r   r   r   Ú_set_headersonlyª   s    zFeedParser._set_headersonlyc                 C   s   | j  |¡ |  ¡  d S r   )r=   r.   Ú_call_parse©r   r,   r   r   r   Úfeed­   s    zFeedParser.feedc                 C   s&   z|   ¡  W n tk
r    Y nX d S r   )r@   r2   r   r   r   r   rE   ²   s    zFeedParser._call_parsec                 C   sH   | j  ¡  |  ¡  |  ¡ }| ¡ dkrD| ¡ sDt ¡ }| j 	||¡ |S )NÚ	multipart)
r=   r   rE   Ú_pop_messageÚget_content_maintypeZis_multipartr   Z!MultipartInvariantViolationDefectr8   Úhandle_defect)r   ÚrootÚdefectr   r   r   r   ¸   s    
ÿzFeedParser.closec                 C   sn   | j r|  ¡ }n| j| jd}| jr<| j ¡ dkr<| d¡ | jrR| jd  |¡ | j |¡ || _|| _	d S )Nr7   zmultipart/digestzmessage/rfc822r)   )
r:   r;   r8   rA   Úget_content_typeZset_default_typer>   Zattachr   rB   )r   Úmsgr   r   r   Ú_new_messageÅ   s    

zFeedParser._new_messagec                 C   s(   | j  ¡ }| j r| j d | _nd | _|S )Nr)   )r>   r   rA   )r   Úretvalr   r   r   rI   Ò   s
    
zFeedParser._pop_messagec                 c   s  |   ¡  g }| jD ]Z}|tkr&tV  qt |¡sbt |¡s^t ¡ }| j 	| j
|¡ | j |¡  qn| |¡ q|  |¡ | jrÈg }| j ¡ }|tkrœtV  q‚|dkr¦q²| |¡ q‚| j
 t |¡¡ d S | j
 ¡ dkrŠ| j tj¡ |  ¡ D ]}|tkrtV  qî qqî|  ¡ }| j ¡  | j ¡ }|tkrDtV  qqDq| j ¡ }|tkrjtV  qDqjqD|dkrxq†| j |¡ qØd S | j
 ¡ dkrÐ|  ¡ D ] }|tkrºtV  q¢ qÄq¢|  ¡  d S | j
 ¡ dkrÔ| j
 ¡ }|d krRt ¡ }| j 	| j
|¡ g }| jD ]$}|tkr.tV  q| |¡ q| j
 t |¡¡ d S t| j
 dd¡ƒ ¡ dkr†t ¡ }| j 	| j
|¡ d| }t  d	t !|¡ d
 ¡}	d}
g }d}d}| j ¡ }|tkrÔtV  q¶|dkrâqÂ|	 |¡}|r´| "d¡rd}| "d¡}qÂ|
rr|r^|d }t# $|¡}|rP|d t%| "d¡ƒ … |d< t |¡| j
_&d}
| j |¡ q¶| j ¡ }|tkrtV  qr|	 |¡}|sr| j |¡ q´qr| j |	j¡ |  ¡ D ] }|tkrâtV  qÊ qìqÊ| j' ¡ dkrT| j'j(}|dkrd | j'_(n:|d k	r˜t# $|¡}|r˜t%| "d¡ƒ}|d | … | j'_(nD| j'j)}t*|tƒr˜t# $|¡}|r˜|d t%| "d¡ƒ … }|| j'_)| j ¡  |  ¡  | j
| _'n
| |¡ q¶|
r*t +¡ }| j 	| j
|¡ | j
 t |¡¡ g }| jD ]}|tkrütV  qüqüt |¡| j
_(d S |sLt ,¡ }| j 	| j
|¡ d S |rZdg}ng }| jD ]$}|tkr|tV  qd| |¡ qd|rÂ|d }t- |¡}|rÂ|t%| "d¡ƒd … |d< t |¡| j
_(d S g }| jD ]$}|tkrötV  qÞ| |¡ qÞ| j
 t |¡¡ d S )Nr   zmessage/delivery-statusÚmessagerH   zcontent-transfer-encodingÚ8bit)Z7bitrS   Zbinaryz--z(?P<sep>z4)(?P<end>--)?(?P<ws>[ \t]*)(?P<linesep>\r\n|\r|\n)?$TFÚendÚlinesepr)   r   ).rP   r=   r    ÚheaderREÚmatchÚNLCREr   Z MissingHeaderBodySeparatorDefectr8   rK   rA   r'   r   Ú_parse_headersrC   r%   Zset_payloadÚEMPTYSTRINGÚjoinrN   r   r?   rI   r   rJ   Zget_boundaryZNoBoundaryInMultipartDefectÚstrÚgetÚlowerZ-InvalidMultipartContentTransferEncodingDefectÚreÚcompileÚescapeÚgroupÚ	NLCRE_eolÚsearchÚlenÚpreamblerB   ÚepilogueZ_payloadÚ
isinstanceZStartBoundaryNotFoundDefectZCloseBoundaryNotFoundDefectÚ	NLCRE_bol)r   Zheadersr$   rM   r0   rQ   rO   ÚboundaryZ	separatorZ
boundaryreZcapturing_preamblerf   rU   Zclose_boundary_seenÚmoZlastlineZeolmorg   rT   ZpayloadÚ	firstlineZbolmor   r   r   r?   Ú   s`   

















ÿÿÿ
























zFeedParser._parsegenc           	      C   sX  d}g }t |ƒD ]&\}}|d dkrR|sFt |¡}| j | j|¡ q| |¡ q|rt| jj| j |¡Ž  dg  }}| 	d¡rø|dkr¼t
 |¡}|r¬|d t| d¡ƒ … }| j |¡ qn<|t|ƒd krÞ| j |¡  d S t |¡}| jj |¡ q| d¡}|dkr&t d¡}| jj |¡ q|d |… }|g}q|rT| jj| j |¡Ž  d S )Nr   r   z 	zFrom é   ú:zMissing header name.)Ú	enumerater   Z#FirstHeaderLineIsContinuationDefectr8   rK   rA   r   Zset_rawZheader_source_parseÚ
startswithrc   rd   re   rb   Zset_unixfromr=   r'   ZMisplacedEnvelopeHeaderDefectZdefectsÚfindZInvalidHeaderDefect)	r   r0   Z
lastheaderZ	lastvalueÚlinenor$   rM   rk   Úir   r   r   rY   ×  sF    








zFeedParser._parse_headers)N)r4   r5   r6   r   r   rD   rG   rE   r   rP   rI   r?   rY   r   r   r   r   r   ˆ   s    ~c                       s   e Zd Z‡ fdd„Z‡  ZS )r   c                    s   t ƒ  | dd¡¡ d S )NÚasciiÚsurrogateescape)ÚsuperrG   ÚdecoderF   ©Ú	__class__r   r   rG     s    zBytesFeedParser.feed)r4   r5   r6   rG   Ú__classcell__r   r   rx   r   r     s   )Ú__all__r_   Zemailr   Zemail._policybaser   Úcollectionsr   Úior   r`   rX   ri   rc   ZNLCRE_crackrV   rZ   ÚNLÚobjectr    r
   r   r   r   r   r   r   Ú<module>   s&   




[   