
    ;e]!                     2   	 d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ g dZ	 ej
         e j        d          j        d           Zd Z G d d	e          Z e            Zd
e ed          <   d Zd Zd Zd Zd ZeedZd ZeedZeedZddZdS )    N)ascii_lettersdigits)errors)decode_qencode_qdecode_bencode_blen_qlen_bdecodeencodes   =([a-fA-F0-9]{2})c                     t                               |                     d                                                    S )N   )bytesfromhexgroupr   )ms    +/usr/lib/python3.11/email/_encoded_words.py<lambda>r   A   s(    %--

 1 1 3 344     c                 P    |                      dd          } t          |           g fS )N   _    )replace_q_byte_subber)encodeds    r   r   r   C   s(    oodD))G'""B&&r   c                   \    e Zd Zd ej        d          z    ej        d          z   Zd ZdS )	_QByteMaps   -!*+/asciic                 z    || j         v rt          |          | |<   nd                    |          | |<   | |         S )Nz={:02X})safechrformat)selfkeys     r   __missing__z_QByteMap.__missing__M   sA    $)CDII!((--DICyr   N)__name__
__module____qualname__r   r   r   r!   r&    r   r   r   r   I   sL        *m*7333mfmG6L6LLD    r   r   _ c                 @    d                     d | D                       S )N c              3   0   K   | ]}t           |         V  d S N)_q_byte_map.0xs     r   	<genexpr>zencode_q.<locals>.<genexpr>Z   s&      33a;q>333333r   )joinbstrings    r   r   r   Y   s#    77337333333r   c                 4    t          d | D                       S )Nc              3   J   K   | ]}t          t          |                   V  d S r0   )lenr1   r2   s     r   r5   zlen_q.<locals>.<genexpr>]   s.      44qs;q>""444444r   )sumr7   s    r   r
   r
   \   s    44G444444r   c                 8   t          |           dz  }|rdd d|z
           nd}	 t          j        | |z   d          |rt          j                    gng fS # t
          j        $ r 	 t          j        | d          t          j                    gfcY S # t
          j        $ rt 	 t          j        | dz   d          t          j                    t          j                    gfcY cY S # t
          j        $ r | t          j                    gfcY cY cY S w xY ww xY ww xY w)N   s   ===r   T)validateFs   ==)	r;   base64	b64decoder   InvalidBase64PaddingDefectbinasciiErrorInvalidBase64CharactersDefectInvalidBase64LengthDefect)r   pad_errmissing_paddings      r   r   r   d   s    'llQG,3<fZaiZ((OEW6FFF5<DV.0011"
 	
 > E E E	E 59995778    ~ 	E 	E 	EE$Wu_uEEE9;;688:     
 > E E E !A!C!C DDDDDDDDDE	EEsS   0A D&)BDD">C% D!D%%D
DDDDDc                 P    t          j        |                               d          S )Nr   )r@   	b64encoder   r7   s    r   r	   r	      s!    G$$++G444r   c                 Z    t          t          |           d          \  }}|dz  |rdndz   S )N   r>   r   )divmodr;   )r8   groups_of_3leftovers      r   r   r      s4    "3w<<33K?82aa33r   )qbc                    	 |                      d          \  }}}}}|                    d          \  }}}|                                }|                    dd          }t	          |         |          \  }}	 |                    |          }n# t          $ rD |                    t          j	        d|d                     |                    |d          }Y not          t          f$ r\ |                    dd          }|                                dk    r+|                    t          j        d|d	                     Y nw xY w||||fS )
N?*r   surrogateescapez0Encoded word contains bytes not decodable using z charsetunknown-8bitzUnknown charset z* in encoded word; decoded as unknown bytes)split	partitionlowerr   _cte_decodersr   UnicodeDecodeErrorappendr   UndecodableBytesDefectLookupErrorUnicodeEncodeErrorCharsetError)	ewr+   charsetcte
cte_stringlangr8   defectsstrings	            r   r   r      s   ( &(XXc]]"AwZ((--GQ
))++C):;;G$S)'22GW
?(( < < <v4 6F296F 6F 6F G G 	H 	H 	H):;;+, ? ? ?):;;==??n,,NN6. 0=' 0= 0= 0= > > ? ? ??
 7D'))s   9B AEA)EEutf-8r.   c                 B   	 |dk    r|                      dd          }n|                      |          }|7t          d         |          }t          d         |          }||z
  dk     rdnd}t          |         |          }|rd|z   }d                    ||||          S )	NrV   r   rU   rP   rQ      rT   z=?{}{}?{}?{}?=)r   _cte_encode_length_cte_encodersr#   )rg   rb   encodingre   r8   qlenblenr   s           r   r   r      s      .  --):;;--((!#&w//!#&w//+//33sH%g..G Tz""7D(GDDDr   )rh   Nr.   )rer@   rC   	functoolsrg   r   r   emailr   __all__partialcompilesubr   r   dictr   r1   ordr   r
   r   r	   r   rZ   r   rl   rk   r   r*   r   r   <module>ry      s  R 
			       ( ( ( ( ( ( ( (         #":2:.C#D#D#H446 6' ' '	 	 	 	 	 	 	 	 ikk CCHH 4 4 45 5 5$E $E $EL5 5 54 4 4 
	 
'* '* '*V 
	  
	  
E E E E E Er   