
    z%i&                        	 g d Z ddlZddlmZmZmZ dZdZdZ e	d      D  cg c]  } d| z  	 c} Z
e
dd Ze
dd Zd	 ej                  d
      z    ej                  d
      z   D ]  Z ee      ee<    de ed      <   dD ]  Z ee      ee<    d Zd Zd Zd ZddZd Zd ZddZedd ZdD ]  Z ee      ee<    [defdZefdZeZeZd Zd Zyc c} w ))
body_decodebody_encodebody_lengthdecodedecodestringheader_decodeheader_encodeheader_lengthquoteunquote    N)ascii_lettersdigits	hexdigits

    z=%02Xs   -!*+/ascii_ s_    !"#$%&'()*+,-./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	c                 .    	 t        |       t        |    k7  S N)chr_QUOPRI_HEADER_MAPoctets    D/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/email/quoprimime.pyheader_checkr   J   s    Hu:+E222    c                 .    	 t        |       t        |    k7  S r   )r   _QUOPRI_BODY_MAPr   s    r   
body_checkr"   O   s    Fu:)%000r   c                 (    	 t        d | D              S )Nc              3   @   K   | ]  }t        t        |           y wr   )lenr   .0r   s     r   	<genexpr>z header_length.<locals>.<genexpr>^   s     E%s%e,-E   sum	bytearrays    r   r	   r	   T   s     E9EEEr   c                 (    	 t        d | D              S )Nc              3   @   K   | ]  }t        t        |           y wr   )r%   r!   r&   s     r   r(   zbody_length.<locals>.<genexpr>h   s     Cs#E*+Cr)   r*   r,   s    r   r   r   a   s     CCCCr   c                    t        |t              st        |      }| s | j                  |j	                                y t        | d         t        |      z   |k  r| dxx   ||z   z  cc<   y | j                  |j	                                y )N)
isinstancestrr   appendlstripr%   )Lsmaxlenextras       r   _max_appendr:   k   sg    aF		QrUc!f		&	"	r   c                 4    	 t        t        | dd d            S )N         )r   intr7   s    r   r   r   v   s    Ns1Qq62r   c                 &    t         t        |          S r   )_QUOPRI_MAPordcs    r   r
   r
   {   s    s1vr   c                 d    	 | sy| j                  d      j                  t              }d|d|dS )Nr   latin1z=?z?q?z?=)r   	translater   )header_bytescharsetencodeds      r   r   r      s8    	 !!(+556HIG $W--r   s   
L   c                    	 |dk  rt        d      | s| S | j                  t              } d|z   }|dz
  }g }|j                  }| j	                         D ]  }d}t        |      dz
  |z
  }	||	k  rV||z   }
||
dz
     dk(  r ||||
dz
          |
dz
  }n,||
dz
     dk(  r ||||
        |
dz
  }n ||||
 dz          |
}||	k  rV|rN|d   dv rG||	z
  }|d	k\  rt        |d         }n|dk(  r	|d   |z   }n|t        |d         z   } |||d |z           |||d          | d   t        v r |d
       |j                  |      S )N   zmaxlinelen must be at least 4=r<   r      r1   z 	r=   r   )	
ValueErrorrH   _QUOPRI_BODY_ENCODE_MAPr4   
splitlinesr%   r
   CRLFjoin)body
maxlineleneol
soft_breakmaxlinelen1encoded_bodyr4   linestart	laststartstoproomqs                r   r   r      s   $ A~899 >>12DsJq.KL  F! !!IMJ.	y ;&DD1H~$tE$(+,qdQh3&tE$'(qtE$'#-. y  DH%9$Dqy $r(OHz) tBx04b>A%&4< C!!H Bx4r
88L!!r   c                    	 | s| S d}| j                         D ]  }|j                         }|s||z  }d}t        |      }||k  s.||   }|dk7  r||z  }|dz  }nV|dz   |k(  r|dz  })|dz   |k  r6||dz      t        v r(||dz      t        v r|t	        |||dz          z  }|dz  }n
||z  }|dz  }||k(  r||z  }||k  r{ | d   dvr|j                  |      r|d d }|S )	Nr   r   rO   r<   rP   r=   r1   r   )rS   rstripr%   r   r   endswith)rK   rX   decodedr\   inrE   s          r   r   r      s=     G""$ {{}sNGI!eQACx1Q 1Q1qT!A#Y)3QqS	Y8N74!A#;//Q 1QAv3) !e< r{& W%5%5c%:#2,Nr   c                 <    	 | j                  d      }t        |      S )Nr   )groupr   )matchr7   s     r   _unquote_matchrk     s    MAA1:r   c                 ~    	 | j                  dd      } t        j                  dt        | t        j                        S )Nr   r   z=[a-fA-F0-9]{2})flags)replaceresubrk   ASCIIr@   s    r   r   r   $  s3     	
		#sA66$narxxHHr   )r   )z
iso-8859-1) __all__ro   stringr   r   r   rT   NLEMPTYSTRINGrangerB   r   r!   encoderE   r   rC   r   r"   r	   r   r:   r   r
   r   rR   r   r   r   r   rk   r   rD   s   0r   <module>rx      s[  
0 
 3 3	 %*#J/qw{/ ^ q>  
(M((1	1MFMM'4J	J #AFq#  # 3s8 . !A a&Q!3
1

FD 
.* +1- 	 (A!$QA(!# I"^  ,` I[ 0s   C