ó
    F\hçE  ã                   óž   • S r / SQrSSKrSrSrSr/ SQr/ SQrSSSSS	S
SS	SSSSSSS.rS r	S r
S rS rS r " S S5      r " S S\5      rg)zcEmail address parsing code.

Lifted directly from rfc822.py.  This should eventually be rewritten.
)Ú	mktime_tzÚ	parsedateÚparsedate_tzÚquoteé    NÚ Ú z, )ÚjanÚfebÚmarÚaprÚmayÚjunÚjulÚaugÚsepÚoctÚnovÚdecÚjanuaryÚfebruaryÚmarchÚaprilr   ÚjuneÚjulyÚaugustÚ	septemberÚoctoberÚnovemberÚdecember)ÚmonÚtueÚwedÚthuÚfriÚsatÚsunipþÿÿiÔþÿÿiþÿÿi¨ýÿÿiDýÿÿiàüÿÿ)ÚUTÚUTCÚGMTÚZÚASTÚADTÚESTÚEDTÚCSTÚCDTÚMSTÚMDTÚPSTÚPDTc                 óT   • [        U 5      nU(       d  gUS   c  SUS'   [        U5      $ )zIConvert a date string to a time tuple.

Accounts for military timezones.
Né	   r   )Ú_parsedate_tzÚtuple)ÚdataÚress     Ú'/usr/lib/python3.13/email/_parseaddr.pyr   r   -   s0   € ô
 ˜Ó
€CÞØØ
ˆ1�v�~ØˆˆA‰Ü�‹:Ðó    c           
      ó  • U (       d  gU R                  5       n U (       d  gU S   R                  S5      (       d  U S   R                  5       [        ;   a  U S	 O(U S   R	                  S5      nUS:¼  a  U S   US-   S U S'   [        U 5      S:X  a*  U S   R                  S5      n[        U5      S:X  a  X SS -   n [        U 5      S:X  aQ  U S   nUR                  S5      nUS	:X  a  UR                  S5      nUS:”  a  USU X1S /U SS& OU R                  S
5        [        U 5      S:  a  gU SS n U u  pEpgnU(       a  U(       a  U(       d  gUR                  5       nU[        ;  a  XTR                  5       pTU[        ;  a  g[        R                  U5      S-   nUS:”  a  US-  nUS	   S:X  a  USS	 nUR                  S5      nUS:”  a  XvpvUS	   S:X  a  USS	 nU(       d  gUS   R                  5       (       d  X†p†US	   S:X  a  USS	 nUR                  S5      n[        U5      S:X  a  Uu  pšSnOn[        U5      S:X  a  Uu  pšnOY[        U5      S:X  aI  SUS   ;   a@  US   R                  S5      n[        U5      S:X  a  Uu  pšSnO[        U5      S:X  a  Uu  pšnOgg [        U5      n[        U5      n[        U	5      n	[        U
5      n
[        U5      nUS:  a  US:”  a  US-  nOUS-  nSnUR                  5       nU[        ;   a
  [        U   nO* [        U5      nUS:X  a  UR                  S5      (       a  SnU(       a!  US:  a  S	nU* nOSnXÜS-  S-  US-  S-  -   -  nXeXIX«SSS	U/
$ ! [         a     gf = f! [         a     Nkf = f)an  Convert date to extended time tuple.

The last (additional) element is the time zone offset in seconds, except if
the timezone was specified as -0000.  In that case the last element is
None.  This indicates a UTC timestamp that explicitly declaims knowledge of
the source timezone, as opposed to a +0000 timestamp that indicates the
source timezone really was UTC.

Nr   Ú,é   é   Ú-é   Ú+éÿÿÿÿr   é   é   Ú:é   Ú0Ú.éd   éD   il  iÐ  i  é<   )ÚsplitÚendswithÚlowerÚ	_daynamesÚrfindÚlenÚfindÚappendÚ_monthnamesÚindexÚisdigitÚintÚ
ValueErrorÚupperÚ
_timezonesÚ
startswith)r9   ÚiÚstuffÚsÚddÚmmÚyyÚtmÚtzÚthhÚtmmÚtssÚtzoffsetÚtzsigns                 r;   r7   r7   9   sª  € ö ØØ�:‰:‹<€DÞØð ˆA�w×Ñ˜×Ñ  Q¡§¡£´9Ó <à�‰Gà�‰G�M‰M˜#ÓˆØ�‹6Ø˜1‘g˜a ™c˜d�mˆD�‰GÜ
ˆ4ƒy�Aƒ~Ø�Q‘—‘˜cÓ"ˆÜˆu‹:˜‹?Ø  ˜8Ñ#ˆDÜ
ˆ4ƒy�Aƒ~Ø�‰GˆØ�F‰F�3‹KˆØ�‹7Ø—‘�s“ˆAØˆq‹5Ø˜"˜1˜˜q ˜u�~ˆD��‰Hà�K‰K˜ŒOÜ
ˆ4ƒy�1ƒ}ØØ��ˆ8€DØÑ€RˆR�RÞ–2ž"ØØ	�‰‹€BØ	”ÓØ—X‘X“ZˆBØ”[Ó ØÜ	×	Ñ	˜2Ó	 Ñ	"€BØ	ˆBƒwØ
ˆb‰ˆØ	ˆ"�v�ƒ}Ø��ˆWˆØ
�‰�‹€AØˆ1ƒuØˆBØ	ˆ"�v�ƒ}Ø��ˆWˆÞØØˆa‰5�=‰=�?‰?ØˆBØ	ˆ"�v�ƒ}Ø��ˆWˆØ	�‰�#‹€BÜ
ˆ2ƒw�!ƒ|Ø‰
ˆØ‰Ü	ˆR‹�A‹Ø‰ˆ‘3Ü	ˆR‹�A‹˜#  A¡›,à�‰U�[‰[˜ÓˆÜˆr‹7�a‹<Ø‰JˆSØ‰CÜ�‹W˜‹\Ø ‰OˆS‘sààðÜ�‹WˆÜ�‹WˆÜ�#‹hˆÜ�#‹hˆÜ�#‹hˆð 
ˆCƒxà�‹7Ø�$‰J‰Bð �$‰JˆBØ€HØ	�‰‹€BØ	ŒZÓÜ˜b‘>‰ð	Ü˜2“wˆHð �Q‹;˜2Ÿ=™=¨×-Ñ-ØˆHæØ�a‹<ØˆFØ �y‰HàˆFØ¨™}¨dÑ2°hÀ±nÀbÑ5HÑHÑIˆà�B˜S q¨!¨R°Ð:Ð:øôE ó Ùðûô* ó 	Ùð	ús$   Ê7M- ÌM= Í-
M:Í9M:Í=
N
Î	N
c                 óP   • [        U 5      n[        U[        5      (       a  USS $ U$ )z&Convert a time string to a time tuple.Nr6   )r   Ú
isinstancer8   )r9   Úts     r;   r   r   ¶   s)   € ä�TÓ€AÜ�!”U×ÑØ��!ˆuˆàˆr<   c                 ó~   • U S   c  [         R                  " U SS S-   5      $ SSKnUR                  U 5      nX S   -
  $ )zETurn a 10-tuple as returned by parsedate_tz() into a POSIX timestamp.r6   Né   )rD   r   )ÚtimeÚmktimeÚcalendarÚtimegm)r9   rr   rm   s      r;   r   r   ¿   sD   € àˆA�w�ä�{Š{˜4  ˜8 eÑ+Ó,Ð,ó 	à�O‰O˜DÓ!ˆØ˜‘7‰{Ðr<   c                 óF   • U R                  SS5      R                  SS5      $ )zèPrepare string to be used in a quoted string.

Turns backslash and double quote characters into quoted pairs.  These
are the only characters that need to be quoted inside a quoted string.
Does not add the surrounding double quotes.
Ú\z\\Ú"z\")Úreplace)Ústrs    r;   r   r   Ì   s"   € ð �;‰;�t˜VÓ$×,Ñ,¨S°%Ó8Ð8r<   c                   ón   • \ rS rSrSrS rS rS rS rS r	S r
S	 rSS
 jrS rS rS rSS jrS rSrg)ÚAddrlistClasséÖ   zïAddress parser class by Ben Escoto.

To understand what this class does, it helps to have a copy of RFC 2822 in
front of you.

Note: this class interface is deprecated and may be removed in the future.
Use email.utils.AddressList instead.
c                 ó*  • SU l         SU l        SU l        SU l        U R                  U R                  -   U l        U R                   U R                  -   U R                  -   U l        U R
                  R                  SS5      U l        Xl        / U l	        g)zkInitialize a new instance.

`field' is an unparsed address header field, containing
one or more addresses.
z()<>@,:;."[]r   z 	z
rJ   r   N)
ÚspecialsÚposÚLWSÚCRÚFWSÚatomendsrw   Ú
phraseendsÚfieldÚcommentlist©Úselfr„   s     r;   Ú__init__ÚAddrlistClass.__init__à   sx   € ð (ˆŒØˆŒØˆŒØˆŒØ—8‘8˜dŸg™gÑ%ˆŒØŸ™¨¯©Ñ0°4·7±7Ñ:ˆŒð Ÿ-™-×/Ñ/°°RÓ8ˆŒØŒ
ØˆÕr<   c                 óZ  • / nU R                   [        U R                  5      :  aò  U R                  U R                      U R                  S-   ;   a[  U R                  U R                      S;  a(  UR	                  U R                  U R                      5        U =R                   S-  sl         OHU R                  U R                      S:X  a*  U R
                  R	                  U R                  5       5        OO%U R                   [        U R                  5      :  a  Mò  [        R                  U5      $ )z&Skip white space and extract comments.z
r?   Ú()	r~   rS   r„   r   rU   r…   Ú
getcommentÚEMPTYSTRINGÚjoin)r‡   Úwslists     r;   ÚgotonextÚAddrlistClass.gotonextó   sÐ   € àˆØ�h‰hœ˜TŸZ™Z›Ó(Ø�z‰z˜$Ÿ(™(Ñ# t§x¡x°&Ñ'8Ó8Ø—:‘:˜dŸh™hÑ'¨vÓ5Ø—M‘M $§*¡*¨T¯X©XÑ"6Ô7Ø—’˜A‘–Ø—‘˜DŸH™HÑ%¨Ó,Ø× Ñ ×'Ñ'¨¯©Ó(9Õ:àð �h‰hœ˜TŸZ™Z›Õ(ô ×Ñ Ó'Ð'r<   c                 óô   • / nU R                   [        U R                  5      :  aR  U R                  5       nU(       a  X-  nOUR	                  S5        U R                   [        U R                  5      :  a  MR  U$ )zFParse all addresses.

Returns a list containing all of the addresses.
)r   r   )r~   rS   r„   Ú
getaddressrU   )r‡   ÚresultÚads      r;   ÚgetaddrlistÚAddrlistClass.getaddrlist  s\   € ð
 ˆØ�h‰hœ˜TŸZ™Z›Ó(Ø—‘Ó"ˆBÞØ‘‘à—‘˜hÔ'ð �h‰hœ˜TŸZ™Z›Õ(ð ˆr<   c                 ó´  • / U l         U R                  5         U R                  nU R                   nU R                  5       nU R                  5         / nU R                  [	        U R
                  5      :¼  a.  U(       a%  [        R                  U R                   5      US   4/nGOPU R
                  U R                     S;   a@  Xl        X l         U R                  5       n[        R                  U R                   5      U4/nGOóU R
                  U R                     S:X  aÛ  / n[	        U R
                  5      nU =R                  S-  sl        U R                  [	        U R
                  5      :  a‹  U R                  5         U R                  U:  a4  U R
                  U R                     S:X  a  U =R                  S-  sl        GO3X@R                  5       -   nU R                  [	        U R
                  5      :  a  M‹  OûU R
                  U R                     S:X  au  U R                  5       nU R                   (       a;  [        R                  U5      S-   SR                  U R                   5      -   S	-   U4/nO‚[        R                  U5      U4/nOiU(       a&  [        R                  U R                   5      US   4/nO<U R
                  U R                     U R                  ;   a  U =R                  S-  sl        U R                  5         U R                  [	        U R
                  5      :  a2  U R
                  U R                     S
:X  a  U =R                  S-  sl        U$ )zParse the next address.r   z.@rG   r?   Ú;Ú<z (r   Ú)r>   )r…   r�   r~   ÚgetphraselistrS   r„   ÚSPACErŽ   Úgetaddrspecr“   Úgetrouteaddrr}   )r‡   ÚoldposÚoldclÚplistÚ
returnlistÚaddrspecÚfieldlenÚ	routeaddrs           r;   r“   ÚAddrlistClass.getaddress  s…  € àˆÔØ�‰Œà—‘ˆØ× Ñ ˆØ×"Ñ"Ó$ˆà�‰ŒØˆ
à�8‰8”s˜4Ÿ:™:“Ó&æÜ$Ÿz™z¨$×*:Ñ*:Ó;¸UÀ1¹XÐFÐG�
ùà�Z‰Z˜Ÿ™Ñ! TÓ)ð ŒHØ$ÔØ×'Ñ'Ó)ˆHÜ Ÿ:™: d×&6Ñ&6Ó7¸ÐBÐCŠJà�Z‰Z˜Ÿ™Ñ! SÓ(àˆJä˜4Ÿ:™:“ˆHØ�HŠH˜‰M�HØ—(‘(œS §¡›_Ó,Ø—‘”Ø—8‘8˜hÓ&¨4¯:©:°d·h±hÑ+?À3Ó+FØ—H’H ‘M•HÙØ'¯/©/Ó*;Ñ;�
ð —(‘(œS §¡›_Õ,øð �Z‰Z˜Ÿ™Ñ! SÓ(à×)Ñ)Ó+ˆIà××Ü$Ÿz™z¨%Ó0°4Ñ7Ø"Ÿx™x¨×(8Ñ(8Ó9ñ :Ø<?ñ @ØAJðLð M‘
ô  %Ÿz™z¨%Ó0°)Ð<Ð=‘
ö Ü$Ÿz™z¨$×*:Ñ*:Ó;¸UÀ1¹XÐFÐG‘
Ø—‘˜DŸH™HÑ%¨¯©Ó6Ø—’˜A‘•à�‰ŒØ�8‰8”c˜$Ÿ*™*“oÓ%¨$¯*©*°T·X±XÑ*>À#Ó*EØ�HŠH˜‰M�HØÐr<   c                 ó  • U R                   U R                     S:w  a  gSnU =R                  S-  sl        U R                  5         SnU R                  [        U R                   5      :  Ga  U(       a  U R	                  5         SnOÅU R                   U R                     S:X  a  U =R                  S-  sl         U$ U R                   U R                     S:X  a  U =R                  S-  sl        SnO[U R                   U R                     S	:X  a  U =R                  S-  sl        O(U R                  5       nU =R                  S-  sl         U$ U R                  5         U R                  [        U R                   5      :  a  GM  U$ )
zqParse a route address (Return-path value).

This method just skips all the route stuff and returns the addrspec.
rš   NFr?   r   Ú>Ú@TrG   )r„   r~   r�   rS   Ú	getdomainrž   )r‡   ÚexpectrouteÚadlists      r;   rŸ   ÚAddrlistClass.getrouteaddrJ  s&  € ð
 �:‰:�d—h‘hÑ 3Ó&ØàˆØ�Š�A‰�Ø�‰ŒØˆØ�h‰hœ˜TŸZ™Z›Ô(ÞØ—‘Ô Ø#‘Ø—‘˜DŸH™HÑ%¨Ó,Ø—’˜A‘•Øð ˆð —‘˜DŸH™HÑ%¨Ó,Ø—’˜A‘•Ø"‘Ø—‘˜DŸH™HÑ%¨Ó,Ø—’˜A‘–à×)Ñ)Ó+�Ø—’˜A‘•Øð ˆð �M‰MŒOð! �h‰hœ˜TŸZ™Z›Ö(ð$ ˆr<   c                 ó  • / nU R                  5         U R                  [        U R                  5      :  Ga‹  SnU R                  U R                     S:X  aX  U(       a(  US   R	                  5       (       d  UR                  5         UR                  S5        U =R                  S-  sl        SnO¿U R                  U R                     S:X  a,  UR                  S[        U R                  5       5      -  5        OvU R                  U R                     U R                  ;   a0  U(       a(  US   R	                  5       (       d  UR                  5         OtUR                  U R                  5       5        U R                  5       nU(       a  U(       a  UR                  U5        U R                  [        U R                  5      :  a  GM‹  U R                  [        U R                  5      :¼  d  U R                  U R                     S:w  a  [        R                  U5      $ UR                  S5        U =R                  S-  sl        U R                  5         U R                  5       nU(       d  [        $ [        R                  U5      U-   $ )	zParse an RFC 2822 addr-spec.TrJ   rD   r?   Frv   z"%s"rª   )r�   r~   rS   r„   ÚstripÚpoprU   r   Úgetquoter‚   Úgetatomr�   rŽ   r«   )r‡   ÚaslistÚpreserve_wsÚwsÚdomains        r;   rž   ÚAddrlistClass.getaddrspecj  s³  € àˆà�‰ŒØ�h‰hœ˜TŸZ™Z›Ô(ØˆKØ�z‰z˜$Ÿ(™(Ñ# sÓ*Þ &¨¡*×"2Ñ"2×"4Ñ"4Ø—J‘J”LØ—‘˜cÔ"Ø—’˜A‘•Ø#‘Ø—‘˜DŸH™HÑ%¨Ó,Ø—‘˜f¤u¨T¯]©]«_Ó'=Ñ=Õ>Ø—‘˜DŸH™HÑ%¨¯©Ó6Þ &¨¡*×"2Ñ"2×"4Ñ"4Ø—J‘J”LØà—‘˜dŸl™l›nÔ-Ø—‘“ˆBÞžrØ—‘˜bÔ!ð% �h‰hœ˜TŸZ™Z›Ö(ð( �8‰8”s˜4Ÿ:™:“Ó&¨$¯*©*°T·X±XÑ*>À#Ó*EÜ×#Ñ# FÓ+Ð+à�‰�cÔØ�Š�A‰�Ø�‰ŒØ—‘Ó!ˆÞô ÐÜ×Ñ Ó'¨&Ñ0Ð0r<   c                 ó¤  • / nU R                   [        U R                  5      :  Ga–  U R                  U R                      U R                  ;   a  U =R                   S-  sl         GO2U R                  U R                      S:X  a*  U R                  R                  U R                  5       5        OëU R                  U R                      S:X  a   UR                  U R                  5       5        O®U R                  U R                      S:X  a'  U =R                   S-  sl         UR                  S5        OjU R                  U R                      S:X  a  [        $ U R                  U R                      U R                  ;   a  OEUR                  U R                  5       5        U R                   [        U R                  5      :  a  GM–  [        R                  U5      $ )z-Get the complete domain name from an address.r?   r‹   Ú[rJ   rª   )r~   rS   r„   r   r…   rU   rŒ   Úgetdomainliteralr�   r‚   r³   rŽ   )r‡   Úsdlists     r;   r«   ÚAddrlistClass.getdomain�  s=  € àˆØ�h‰hœ˜TŸZ™Z›Ô(Ø�z‰z˜$Ÿ(™(Ñ# t§x¡xÓ/Ø—’˜A‘—Ø—‘˜DŸH™HÑ%¨Ó,Ø× Ñ ×'Ñ'¨¯©Ó(9Õ:Ø—‘˜DŸH™HÑ%¨Ó,Ø—‘˜d×3Ñ3Ó5Õ6Ø—‘˜DŸH™HÑ%¨Ó,Ø—’˜A‘•Ø—‘˜cÕ"Ø—‘˜DŸH™HÑ%¨Ó,ô #Ð"Ø—‘˜DŸH™HÑ%¨¯©Ó6Øà—‘˜dŸl™l›nÔ-ð# �h‰hœ˜TŸZ™Z›Ö(ô$ ×Ñ Ó'Ð'r<   c                 ó>  • U R                   U R                     U:w  a  gS/nSnU =R                  S-  sl        U R                  [        U R                   5      :  Ga-  U(       a+  UR                  U R                   U R                     5        SnOÀU R                   U R                     U;   a  U =R                  S-  sl        OÈU(       a>  U R                   U R                     S:X  a!  UR                  U R	                  5       5        MÎ  U R                   U R                     S:X  a  SnO(UR                  U R                   U R                     5        U =R                  S-  sl        U R                  [        U R                   5      :  a  GM-  [
        R                  U5      $ )a¦  Parse a header fragment delimited by special characters.

`beginchar' is the start character for the fragment.
If self is not looking at an instance of `beginchar' then
getdelimited returns the empty string.

`endchars' is a sequence of allowable end-delimiting characters.
Parsing stops when one of these is encountered.

If `allowcomments' is non-zero, embedded RFC 2822 comments are allowed
within the parsed fragment.
r   Fr?   r‹   ru   T)r„   r~   rS   rU   rŒ   r�   rŽ   )r‡   Ú	begincharÚendcharsÚallowcommentsÚslistr   s         r;   ÚgetdelimitedÚAddrlistClass.getdelimited§  s%  € ð �:‰:�d—h‘hÑ 9Ó,Øà�ˆØˆØ�Š�A‰�Ø�h‰hœ˜TŸZ™Z›Ô(ÞØ—‘˜TŸZ™Z¨¯©Ñ1Ô2Ø‘Ø—‘˜DŸH™HÑ%¨Ó1Ø—’˜A‘•ØÞ 4§:¡:¨d¯h©hÑ#7¸3Ó#>Ø—‘˜TŸ_™_Ó.Ô/ÙØ—‘˜DŸH™HÑ%¨Ó-Ø‘à—‘˜TŸZ™Z¨¯©Ñ1Ô2Ø�HŠH˜‰M�Hð �h‰hœ˜TŸZ™Z›Ö(ô  ×Ñ Ó&Ð&r<   c                 ó(   • U R                  SSS5      $ )z1Get a quote-delimited fragment from self's field.rv   z"F©rÃ   ©r‡   s    r;   r²   ÚAddrlistClass.getquoteÌ  s   € à× Ñ   e¨UÓ3Ð3r<   c                 ó(   • U R                  SSS5      $ )z7Get a parenthesis-delimited fragment from self's field.r‹   z)TrÆ   rÇ   s    r;   rŒ   ÚAddrlistClass.getcommentÐ  s   € à× Ñ   e¨TÓ2Ð2r<   c                 ó.   • SU R                  SSS5      -  $ )z!Parse an RFC 2822 domain-literal.z[%s]rº   z]FrÆ   rÇ   s    r;   r»   ÚAddrlistClass.getdomainliteralÔ  s   € à˜×)Ñ)¨#¨u°eÓ<Ñ<Ð<r<   Nc                 ó–  • S/nUc  U R                   nU R                  [        U R                  5      :  a€  U R                  U R                     U;   a  ObUR	                  U R                  U R                     5        U =R                  S-  sl        U R                  [        U R                  5      :  a  M€  [
        R                  U5      $ )zôParse an RFC 2822 atom.

Optional atomends specifies a different set of end token delimiters
(the default is to use self.atomends).  This is used e.g. in
getphraselist() since phrase endings must not include the `.' (which
is legal in phrases).r   r?   )r‚   r~   rS   r„   rU   r�   rŽ   )r‡   r‚   Úatomlists      r;   r³   ÚAddrlistClass.getatomØ  s•   € ð �4ˆØÑØ—}‘}ˆHà�h‰hœ˜TŸZ™Z›Ó(Ø�z‰z˜$Ÿ(™(Ñ# xÓ/Øà—‘ §
¡
¨4¯8©8Ñ 4Ô5Ø�HŠH˜‰M�Hð �h‰hœ˜TŸZ™Z›Õ(ô ×Ñ Ó)Ð)r<   c                 óÈ  • / nU R                   [        U R                  5      :  Ga;  U R                  U R                      U R                  ;   a  U =R                   S-  sl         OØU R                  U R                      S:X  a   UR	                  U R                  5       5        O›U R                  U R                      S:X  a*  U R                  R	                  U R                  5       5        OTU R                  U R                      U R                  ;   a   U$ UR	                  U R                  U R                  5      5        U R                   [        U R                  5      :  a  GM;  U$ )zÝParse a sequence of RFC 2822 phrases.

A phrase is a sequence of words, which are in turn either RFC 2822
atoms or quoted-strings.  Phrases are canonicalized by squeezing all
runs of continuous whitespace into one space.
r?   rv   r‹   )
r~   rS   r„   r�   rU   r²   r…   rŒ   rƒ   r³   )r‡   r¢   s     r;   rœ   ÚAddrlistClass.getphraselistì  sõ   € ð ˆà�h‰hœ˜TŸZ™Z›Ô(Ø�z‰z˜$Ÿ(™(Ñ# t§x¡xÓ/Ø—’˜A‘–Ø—‘˜DŸH™HÑ%¨Ó,Ø—‘˜TŸ]™]›_Õ-Ø—‘˜DŸH™HÑ%¨Ó,Ø× Ñ ×'Ñ'¨¯©Ó(9Õ:Ø—‘˜DŸH™HÑ%¨¯©Ó8Øð ˆð —‘˜TŸ\™\¨$¯/©/Ó:Ô;ð �h‰hœ˜TŸZ™Z›Ö(ð ˆr<   )	r€   r�   r   r‚   r…   r„   rƒ   r~   r}   )T©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rˆ   r�   r–   r“   rŸ   rž   r«   rÃ   r²   rŒ   r»   r³   rœ   Ú__static_attributes__© r<   r;   rz   rz   Ö   sL   † ñòò&(òò9òvò@$1òL(ô.#'òJ4ò3ò=ô*õ(r<   rz   c                   óB   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ÚAddressListi  z@An AddressList encapsulates a list of parsed RFC 2822 addresses.c                 óv   • [         R                  X5        U(       a  U R                  5       U l        g / U l        g rÒ   )rz   rˆ   r–   Úaddresslistr†   s     r;   rˆ   ÚAddressList.__init__  s,   € Ü×Ñ˜tÔ+ÞØ#×/Ñ/Ó1ˆDÕà!ˆDÕr<   c                 ó,   • [        U R                  5      $ rÒ   )rS   rÝ   rÇ   s    r;   Ú__len__ÚAddressList.__len__  s   € Ü�4×#Ñ#Ó$Ð$r<   c                 óÂ   • [        S 5      nU R                  S S  Ul        UR                   H/  nX0R                  ;  d  M  UR                  R                  U5        M1     U$ rÒ   ©rÛ   rÝ   rU   ©r‡   ÚotherÚnewaddrÚxs       r;   Ú__add__ÚAddressList.__add__  sV   € ä˜dÓ#ˆØ"×.Ñ.©qÐ1ˆÔØ×"Ô"ˆAØ×(Ñ(Õ(Ø×#Ñ#×*Ñ*¨1Ö-ñ #ð ˆr<   c                 ó„   • UR                    H/  nX R                   ;  d  M  U R                   R                  U5        M1     U $ rÒ   )rÝ   rU   ©r‡   rå   rç   s      r;   Ú__iadd__ÚAddressList.__iadd__  s9   € à×"Ô"ˆAØ×(Ñ(Õ(Ø× Ñ ×'Ñ'¨Ö*ñ #ð ˆr<   c                 óš   • [        S 5      nU R                   H/  nX1R                  ;  d  M  UR                  R                  U5        M1     U$ rÒ   rã   rä   s       r;   Ú__sub__ÚAddressList.__sub__  sC   € ä˜dÓ#ˆØ×!Ô!ˆAØ×)Ñ)Õ)Ø×#Ñ#×*Ñ*¨1Ö-ñ "ð ˆr<   c                 ó„   • UR                    H/  nX R                   ;   d  M  U R                   R                  U5        M1     U $ rÒ   )rÝ   Úremoverë   s      r;   Ú__isub__ÚAddressList.__isub__'  s9   € à×"Ô"ˆAØ×$Ñ$Õ$Ø× Ñ ×'Ñ'¨Ö*ñ #ð ˆr<   c                 ó    • U R                   U   $ rÒ   ©rÝ   )r‡   rW   s     r;   Ú__getitem__ÚAddressList.__getitem__.  s   € à×Ñ Ñ&Ð&r<   rö   N)rÓ   rÔ   rÕ   rÖ   r×   rˆ   rà   rè   rì   rï   ró   r÷   rØ   rÙ   r<   r;   rÛ   rÛ     s(   † ÙJò"ò%òòòòõ'r<   rÛ   )r×   Ú__all__rp   r�   r�   Ú
COMMASPACErV   rQ   r\   r   r7   r   r   r   rz   rÛ   rÙ   r<   r;   Ú<module>rû      s“   ðñò
€ó à€Ø€Ø€
òI€ò
 >€	ð ˜A Q¨AØ $Ø $Ø $Ø $Ø $ñ€
ò
òz;òzò
ò9÷kñ kôZ	-'�-õ -'r<   