
    -hh@                        / S Qr SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r
  SSKJr  SSKJrJrJr  SrSrSrS	rS
r\R(                  " S5      r\R(                  " S5      rS rS rS%S jrS rS rSrSS.S jrS rS rS r S r!S&S jr"S'S jr#S(S jr$S r%SS.S jr&S r'S r(S(S  jr)\R(                  " S!\RT                  5      r+S" r,  S)S# jr-S(S$ jr.g)*)collapse_rfc2231_valuedecode_paramsdecode_rfc2231encode_rfc2231
formataddr
formatdateformat_datetimegetaddresses
make_msgid	mktime_tz	parseaddr	parsedateparsedate_tzparsedate_to_datetimeunquote    N)quote)AddressList)r   )r   r   _parsedate_tzz,  z
'z[][\\()<>@,:;".]z[\\"]c                 F     U R                  5         g! [         a     gf = f)NFT)encodeUnicodeEncodeError)ss    4/opt/python-3.13.8/usr/lib/python3.13/email/utils.py_has_surrogatesr   /   s%    
	
 s    
  c                 J    U R                  SS5      nUR                  SS5      $ )Nutf-8surrogateescapereplace)r   decode)stringoriginal_bytess     r   	_sanitizer$   <   s(    
 ]]7,=>N  )44    c                    U u  p#UR                  S5        U(       aV   UR                  S5        Sn[        R                  U5      (       a  Sn[        R	                  SU5      nU< U< U< SU< S3$ U$ ! [
         aA    [        U[        5      (       a  SSKJ	n  U" U5      nUR                  U5      nU< SU< S3s $ f = f)	Nasciir   "z\\\g<0>z <>r   )Charset)r   
specialsresearch	escapesresubr   
isinstancestremail.charsetr*   header_encode)paircharsetnameaddressquotesr*   encoded_names          r   r   r   H   s     MDNN7	CKK  F  &&==T2D$*D&'BBN " 	7'3''1!'*"006L ,g66	7s   A5 5AC ?C c              #      #    SnSn[        U 5       H(  u  pU(       a  USU-   4v   SnM  US:X  a  SnM#  X4v   M*     U(       a  US4v   g g 7f)Nr   F\T)	enumerate)addrposescapechs       r   _iter_escaped_charsr@   k   s]     
CFT?r	""F4ZF)O # Dk s   AAc                    SU ;  a  U $ SnS n/ n[        U 5       H3  u  pEUS:X  d  M  Uc  UnM  X:w  a  UR                  XU 5        US-   nS nM5     U[        U 5      :  a  UR                  XS  5        SR                  U5      $ )Nr(   r      r   )r@   appendlenjoin)r<   startopen_posresultr=   r?   s         r   _strip_quoted_realnamesrI   z   s    
$EHF&t,9$MM$X"67a - s4yd6l#776?r%   T)strictc                   U(       d3  [         R                  S U  5       5      n[        U5      nUR                  $ U  Vs/ s H  n[	        U5      PM     n n[        U 5      n [         R                  U 5      n[        U5      n[        UR                  5      nSnU  H%  n[        U5      nUSUR                  S5      -   -  nM'     [        U5      U:w  a  S/$ U$ s  snf )Nc              3   8   #    U  H  n[        U5      v   M     g 7f)Nr0   ).0vs     r   	<genexpr>getaddresses.<locals>.<genexpr>   s     :kc!ffks   r   rB   ,r   r   )

COMMASPACErE   _AddressListaddresslistr0   _pre_parse_validation_post_parse_validationrI   countrD   )fieldvaluesrJ   allarO   r<   rH   ns           r   r	   r	      s    $ oo:k::}}#./;a3q6;K/'4K??;'DTA#AMM2F 	
A $A&	Q  6{azM% 0s   Cc                     [        U 5      n Sn[        U 5       H'  u  p#US:X  a  US-  nM  US:X  d  M  US-  nUS:  d  M'    g   US:H  $ )Nr   (rB   )F)rI   r@   )r<   opensr=   r?   s       r   _check_parenthesisrb      sX    "4(DE&t,9QJE3YQJEqy - QJr%   c                 b    / nU  H&  n[        U5      (       d  SnUR                  U5        M(     U$ )Nz('', ''))rb   rC   )email_header_fieldsaccepted_valuesrO   s      r   rW   rW      s7    O !!$$Aq! !
 r%   c                 T    / nU  H  nSUS   ;   a  SnUR                  U5        M!     U$ )N[rB   rS   )rC   )parsed_email_header_tuplesre   rO   s      r   rX   rX      s9    O (!A$;Aq! (
 r%   c           	      `    S/ SQU S      U S   / SQU S   S-
     U S   U S   U S	   U S
   U4-  $ )Nz"%s, %02d %s %04d %02d:%02d:%02d %s)MonTueWedThuFriSatSun      )JanFebMarAprMayJunJulAugSepOctNovDecrB   r             )	timetuplezones     r   _format_timetuple_and_zoner      sZ    /9)A,G!	33<Q<!3C	E!ilIaL)A,3  r%   c                    U c  [         R                   " 5       n [        R                  R                  U [        R                  R                  5      nU(       a  UR                  5       nSnOU(       d  UR                  S S9n[        X25      $ )NF)tzinfo)timedatetimefromtimestamptimezoneutc
astimezoner    r   )timeval	localtimeusegmtdts       r   r   r      si    $ ))+				(	((2C2C2G2G	HB]]_ZZtZ$2&&r%   c                    U R                  5       nU(       aC  U R                  b(  U R                  [        R                  R                  :w  a  [        S5      eSnO!U R                  c  SnOU R                  S5      n[        X#5      $ )Nz%usegmt option requires a UTC datetimeGMTz-0000z%z)r   r   r   r   r   
ValueErrorstrftimer   )r   r   nowr   s       r   r   r     sl     ,,.C99		X->->-B-B BDEE		{{4 %c00r%   c                     SS K nSS Kn[        [        R                  " 5       S-  5      n[        R
                  " 5       nUR                  S5      nU c  Sn OSU -   n Uc  UR                  5       nSXEX`U4-  nU$ )Nr   d   @   r   .z<%d.%d.%d%s@%s>)randomsocketintr   osgetpidgetrandbitsgetfqdn)idstringdomainr   r   r   pidrandintmsgids           r   r
   r
     st     $))+c/"G
))+C  $G>~!w& IIELr%   c           
         [        U 5      nUc  [        S[        U 5      -  5      eUGt p#Uc  [        R                  " US S 6 $ [        R                  " US S S[        R                  " [        R
                  " US95      06$ )Nz!Invalid date value or format "%s"rq   r   )seconds)r   r   r0   r   r   	timedelta)dataparsed_date_tzdtupletzs       r   r   r   ;  s    "4(N<s4yHII KV	z  &!*--fRaj F$$X%7%7%CDF Fr%   c                F   U(       d"  [        U 5      R                  nU(       d  gUS   $ [        U [        5      (       a  U S   n [        U [        5      (       d  g[        U /5      S   n [        [        U 5      R                  5      nU(       a  [        U5      S:  a  gUS   $ )NrS   r   rB   )rU   rV   r/   listr0   rW   rX   rD   )r<   rJ   addrss      r   r   r   F  s     T"..Qx$AwdC   $(+D"<#5#A#ABECJN8Or%   c                 (   [        U 5      S:  a  U R                  S5      (       a;  U R                  S5      (       a%  U SS R                  SS5      R                  SS5      $ U R                  S5      (       a  U R                  S5      (       a  U SS $ U $ )	NrB   r(   z\\r:   z\"<r)   )rD   
startswithendswithr    rM   s    r   r   r   e  s~    
3x!|>>#3<<#4#4q9$$VT2::5#FF>>#3<<#4#4q9Jr%   c                 Z    U R                  [        S5      n[        U5      S::  a  S S U 4$ U$ )Nrr   )splitTICKrD   )r   partss     r   r   r   q  s.    GGD!E
5zQT1}Lr%   c                     [         R                  R                  U SU=(       d    SS9n Uc  Uc  U $ Uc  SnU< SU< SU < 3$ )Nr   r'   )safeencodingr   )urllibparser   )r   r4   languages      r   r   r   y  sK     	120B7CA8+ (A..r%   z&^(?P<name>\w+)\*((?P<num>[0-9]+)\*?)?$c                    U S   /n0 nU SS   H  u  p4UR                  S5      n[        U5      n[        R                  U5      nU(       aG  UR	                  SS5      u  p7Ub  [        U5      nUR                  U/ 5      R                  XtU45        M  UR                  US[        U5      -  45        M     U(       Ga0  UR                  5        GH  u  p8/ nSn	[        S U 5       5      n
U
(       a  U Vs/ s H  oS   c  M
  UPM     nnO&U Vs/ s H  oS   =(       d    SUS   US	   4PM     nnUR                  S
 S9  U H>  u  p|nU(       a   [        R                  R                  USS9nSn	UR                  U5        M@     [        [        R                  U5      5      nU	(       a)  [!        U5      u  pnUR                  X=USU-  445        GM  UR                  USU-  45        GM     U$ s  snf s  snf )Nr   rB   *r5   numz"%s"Fc              3   0   #    U  H  oS    S :H  v   M     g7f)r   Nr   )rN   xs     r   rP    decode_params.<locals>.<genexpr>  s     <mQ419ms   rr   c                     U S   $ )Nr   r   )r   s    r   <lambda>decode_params.<locals>.<lambda>  s    QqTr%   )keyzlatin-1)r   T)r   r   rfc2231_continuationmatchgroupr   
setdefaultrC   r   itemsanysortr   r   EMPTYSTRINGrE   r   )params
new_paramsrfc2231_paramsr5   valueencodedmor   continuationsextendedhas_zeror   r   r4   r   s                  r   r   r     s   
 )J Nabz--$!''-/ID#h%%dB/66G7LMtVeEl%:;< " #1#7#7#9DEH <m<<H,9 NMqqTM NBO P-QA$)!QqT1Q4!8- P>2 $1 ,,Q,CA#HQ $1 +**512E+9%+@(5!!48Ve^)L"MN!!4%"89; $:< / !O Ps   4	G/G/ G4c                     [        U [        5      (       a  [        U 5      S:w  a  [        U 5      $ U u  p4nUc  Un[	        US5      n [        XcU5      $ ! [         a    [        U5      s $ f = f)Nr   zraw-unicode-escape)r/   tuplerD   r   bytesr0   LookupError)r   errorsfallback_charsetr4   r   textrawbytess          r   r   r     ss    eU##s5zQu~ $Gt #T/0H8f-- t}s   A A+*A+c                     Ub  SS K nUR                  SSSS9  U c  [        R                  R                  5       n U R	                  5       $ )Nr   z$The 'isdst' parameter to 'localtime'z>{name} is deprecated and slated for removal in Python {remove})r      )messageremove)warnings_deprecatedr   r   r   )r   isdstr   s      r   r   r     sP     2T 	 	
 
z""$==?r%   )r   )NFF)F)NN)r    zus-ascii)/__all__r   rer   r   urllib.parser   email._parseaddrr   r   rU   r   r   r   r   rT   r   UEMPTYSTRINGCRLFr   compiler+   r-   r   r$   r   r@   rI   supports_strict_parsingr	   rb   rW   rX   r   r   r   r
   r   r   r   r   r   ASCIIr   r   r   r   r   r%   r   <module>r      s  $ 
 	    " 8 & C C

ZZ+,
JJx 		5 F2  (, )X	':1&8F # >/ zz"KHH 4l *3,64r%   