a
���e�N � @ s� g d �Z ddlZddlZddlZddlZddlmZ ddlmZm Z ddl
mZ dZdZ
e�d�Ze�d ej�ZG d
d� d�ZG dd
� d
e�ZdZG dd� de�Zeeejd ��Zde ZejZdS ))� Generator�DecodedGenerator�BytesGenerator� N)�deepcopy)�StringIO�BytesIO)�_has_surrogates�_�
z
\r\n|\r|\nz^From c @ s� e Zd Zd&dd�dd�Zdd� Zd'dd �Zd
d� Zdd
� Zdd� Zdd� Z dd� Z
dd� Zdd� Zdd� Z
e
Zdd� Zdd� Zdd� Zd d!� Zed(d"d#��Zed$d%� �ZdS ))r N��policyc C s6 |d u r|d u rdn|j }|| _|| _|| _|| _d S )NT)�mangle_from_�_fp�
_mangle_from_�maxheaderlenr )�self�outfpr
r r � r �4/opt/alt/python39/lib64/python3.9/email/generator.py�__init__$ s zGenerator.__init__c C s | j �|� d S �N)r �write�r �sr r r r D s zGenerator.writeFc C s� | j d u r|j n| j }|d ur*|j|d�}| jd urB|j| jd�}|j| _| �| j�| _d| _| �| j�| _| j }|j }zX|| _ ||_ |r�|� � }|s�dt
�t
�
� � }| �|| j � | �
|� W || _ ||_ n|| _ ||_ 0 d S )N)�linesep�Zmax_line_length� zFrom nobody )r �cloner r �_NL�_encode�_encoded_NLZ_EMPTY�_encoded_EMPTYZget_unixfrom�time�ctimer �_write)r �msg�unixfromr r Zold_gen_policyZold_msg_policyZufromr r r �flattenH s0
�zGenerator.flattenc C s | j || jd | jd�S �Nr )� __class__r r )r �fpr r r r y s
�zGenerator.clonec C s t � S r )r �r r r r �_new_buffer� s zGenerator._new_bufferc C s |S r r r r r r r � s zGenerator._encodec C sT |sd S t �|�}|d d� D ]}| �|� | �| j� q|d rP| �|d � d S )N���)�NLCRE�splitr r )r �lines�liner r r �_write_lines� s
zGenerator._write_linesc C s� | j }z2d | _| �� | _ }| �|� W || _ | j}| `n|| _ | j}| `0 |r�t|�}|�d�d u rt|d |d< |