ҽ;t * ddlZddlZddlZddlmZddlmZddlmZ ddlm Z ddlm Z e dZ e e dzZe d Zee zZee d z Zee d z Zee d ze d z Zee zZee d zZee zZee dz ZddhZeezZdZdZdZejdejejzZ Gdde!Z"Gdde"Z#Gdde"Z$Gdde"Z%Gdde"Z&Gdd e#Z'Gd!d"e"Z(Gd#d$e"Z)Gd%d&e"Z*Gd'd(e"Z+Gd)d*e+Z,Gd+d,e#Z-Gd-d.e"Z.Gd/d0e"Z/Gd1d2e"Z0Gd3d4e"Z1Gd5d6e"Z2Gd7d8e"Z3Gd9d:e"Z4Gd;de"Z6Gd?d@e"Z7GdAdBe"Z8GdCdDe"Z9GdEdFe"Z:GdGdHe"Z;GdIdJe"Z<GdKdLe"Z=GdMdNe%Z>GdOdPe"Z?GdQdRe"Z@GdSdTe"ZAGdUdVe"ZBGdWdXeBZCGdYdZe"ZDGd[d\e"ZEGd]d^e"ZFGd_d`e"ZGGdadbe"ZHGdcddeHZIGdedfeHZJGdgdhe"ZKGdidje"ZLGdkdle"ZMGdmdneMZNGdodpeNZOGdqdre"ZPGdsdteQZRGdudveRZSGdwdxeRZTGdydzeSZUGd{d|e jVZWeTd d}ZXeTd~dZYdeY_ZdeY_[eTddZ\ejd]d^e j_Z`ejd]ejad^ejbZcejdjdZeejd]ejad^ejbZfejd]ejad^ejbZgejd]ejad^ejbZhdZidZjdZkddZldZmdZndZodZpdZqdZrdZsdZtdZudZvdZwdZxdZydZzdZ{dZ|dZ}dZ~dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS)N) hexdigits) itemgetter)_encoded_words)errors)utilsz (z ()<>@,:;.\"[].z."(z/?=z*'%%  cr t|ddddS)N\\\"z\"strreplacevalues A/opt/alt/python311/lib64/python3.11/email/_header_value_parser.pymake_quoted_pairsrcs1E u::  dF + + 3 3C ? ??c t|ddddddS)Nrrr\()\)rrs rmake_parenthesis_pairsrhs@D u::  dF + + e  WWS%001rc,t|}d|dS)Nr)r)rescapeds r quote_stringr ns&&G w>>>rz =\? # literal =? [^?]* # charset \? # literal ? [qQbB] # literal 'q' or 'b', case insensitive \? # literal ? .*? # encoded word \?= # literal ?= ceZdZdZdZdZfdZdZfdZe dZ e dZ dZ e d Z e d Zd Zdd ZddZddZxZS) TokenListNTcHtj|i|g|_dSN)super__init__defects)selfargskw __class__s rr&zTokenList.__init__s*$%"%%% rc@dd|DS)Nc34K|]}t|VdSr$r.0xs r z$TokenList.__str__..(,,!s1vv,,,,,,rjoinr(s r__str__zTokenList.__str__s#ww,,t,,,,,,rcd|jjtSNz{}({})formatr+__name__r%__repr__r(r+s rr>zTokenList.__repr__s3t~6"WW--//11 1rc@dd|DS)Nr-c32K|]}|j |jVdSr$rr0s rr3z"TokenList.value..s+8818qw888888rr5r7s rrzTokenList.values#ww88888888rc@td|D|jS)Nc3$K|] }|jV dSr$) all_defectsr0s rr3z(TokenList.all_defects..s$00aAM000000r)sumr'r7s rrDzTokenList.all_defectss#004000$,???rc6|dSNr)startswith_fwsr7s rrHzTokenList.startswith_fwssAw%%'''rc6 td|DS)Nc3$K|] }|jV dSr$) as_ew_allowed)r1parts rr3z*TokenList.as_ew_allowed..s%77$4%777777r)allr7s rrKzTokenList.as_ew_alloweds"O77$777777rcHg}|D]}||j|Sr$)extendcomments)r(rPtokens rrPzTokenList.commentss2 , ,E OOEN + + + +rc$t||S)Npolicy)_refold_parse_treer(rTs rfoldzTokenList.folds!$v6666rr-cLt||dS)Nindent)printppstrr(rZs rpprintzTokenList.pprints$ djjj''(((((rcTd||S)Nr rY)r6_ppr]s rr\zTokenList.ppstrs"yy00111rc#nKd||jj|jV|D]K}t |ds|d|zV-||dzEd{VL|jrd|j}nd}d||VdS)Nz{}{}/{}(r`z* !! invalid element in token list: {!r}z z Defects: {}r-z{}){})r<r+r= token_typehasattrr`r')r(rZrQextras rr`z TokenList._pps  N # O    4 4E5%(( 4!55;VE]]CDDDD!99VF]3333333333 < "))$,77EEEnnVU+++++++rr-)r= __module__ __qualname__rbsyntactic_breakew_combine_allowedr&r8r>propertyrrDrHrKrPrWr^r\r` __classcell__r+s@rr"r"s9JO---1111199X9@@X@(((88X8X 777))))2222,,,,,,,,rr"c:eZdZedZedZdS)WhiteSpaceTokenListcdSN r7s rrzWhiteSpaceTokenList.valuesrcd|DS)Nc2g|]}|jdk |jS)comment)rbcontentr0s r z0WhiteSpaceTokenList.comments..s&CCCa1<+B+B +B+B+Brrrr7s rrPzWhiteSpaceTokenList.commentssCC4CCCCrN)r=rfrgrjrrPrrrrrnrnsM XDDXDDDrrnceZdZdZdS)UnstructuredTokenList unstructuredNr=rfrgrbrrrrrzrzsJJJrrzceZdZdZdS)PhrasephraseNr|rrrrr~r~JJJrr~ceZdZdZdS)WordwordNr|rrrrrrJJJrrceZdZdZdS)CFWSListcfwsNr|rrrrrrrrrceZdZdZdS)AtomatomNr|rrrrrrrrrceZdZdZdZdS)TokenrQFN)r=rfrgrb encode_as_ewrrrrrrsJLLLrrceZdZdZdZdZdZdS) EncodedWord encoded-wordN)r=rfrgrbctecharsetlangrrrrrrs"J CG DDDrrcTeZdZdZedZedZedZdS) QuotedString quoted-stringc8|D]}|jdkr |jcSdSNbare-quoted-stringrbrr(r2s rrwzQuotedString.contents9  A|333w4  rcg}|D]J}|jdkr#|t|0||jKd|S)Nrr-)rbappendrrr6)r(resr2s r quoted_valuezQuotedString.quoted_valuesf $ $A|333 3q66"""" 17####wws||rc8|D]}|jdkr |jcSdSrrr(rQs rstripped_valuezQuotedString.stripped_values= # #E#777{"""8 # #rN)r=rfrgrbrjrwrrrrrrrrsh J X X##X###rrc.eZdZdZdZedZdS)BareQuotedStringrcZtdd|DS)Nr-c34K|]}t|VdSr$r/r0s rr3z+BareQuotedString.__str__..s(#9#9qCFF#9#9#9#9#9#9r)r r6r7s rr8zBareQuotedString.__str__s+BGG#9#9D#9#9#999:::rc@dd|DS)Nr-c34K|]}t|VdSr$r/r0s rr3z)BareQuotedString.value..r4rr5r7s rrzBareQuotedString.value#ww,,t,,,,,,rN)r=rfrgrbr8rjrrrrrrr sC%J;;;--X---rrcJeZdZdZdZdZedZedZdS)CommentrvcldtdgfdDdgggS)Nr-rc:g|]}|Srr)quote)r1r2r(s rrxz#Comment.__str__..s#999qTZZ]]999rr)r6rEr7s`rr8zComment.__str__sPwws E9999D999 E " ##$$ $rc|jdkrt|St|ddddddS)Nrvrrrrrr)rbrr)r(rs rrz Comment.quote"sc  y ( (u:: 5zz!!$//77"%u...5g"%u/./. .rc@dd|DS)Nr-c34K|]}t|VdSr$r/r0s rr3z"Comment.content..+r4rr5r7s rrwzComment.content)rrc|jgSr$)rwr7s rrPzComment.comments-s  ~rN) r=rfrgrbr8rrjrwrPrrrrrrsmJ$$$...--X-XrrcTeZdZdZedZedZedZdS) AddressListz address-listcd|DS)Nc(g|]}|jdk |S)addressrbr0s rrxz)AddressList.addresses..7$;;;a1<#:#:#:#:#:rrrr7s r addresseszAddressList.addresses5;;4;;;;rc6td|DgS)Nc3:K|]}|jdk |jVdSrNrb mailboxesr0s rr3z(AddressList.mailboxes..;s<>>Q\9%<%<K%<%<%<%<>>rrEr7s rrzAddressList.mailboxes96>>!>>>?ACC Crc6td|DgS)Nc3:K|]}|jdk |jVdSrrb all_mailboxesr0s rr3z,AddressList.all_mailboxes..@s<>>Q\9%<%<O%<%<%<%<>>rrr7s rrzAddressList.all_mailboxes>rrN)r=rfrgrbrjrrrrrrrrr1spJ <<X<CCXCCCXCCCrrcTeZdZdZedZedZedZdS)AddressrcB|djdkr |djSdS)Nrgrouprb display_namer7s rrzAddress.display_nameHs) 7  ( (7' ' ) (rcv|djdkr |dgS|djdkrgS|djSNrmailboxinvalid-mailboxrr7s rrzAddress.mailboxesMsE 7  * *G9  !W #4 4 4IAw  rc|djdkr |dgS|djdkr |dgS|djSrrr7s rrzAddress.all_mailboxesUsL 7  * *G9  !W #4 4 4G9 Aw$$rN)r=rfrgrbrjrrrrrrrrrDshJ ((X(!!X!%%X%%%rrc>eZdZdZedZedZdS) MailboxList mailbox-listcd|DS)Nc(g|]}|jdk |S)rrr0s rrxz)MailboxList.mailboxes..crrrrr7s rrzMailboxList.mailboxesarrcd|DS)Nc$g|] }|jdv |S))rrrr0s rrxz-MailboxList.all_mailboxes..gs/???a|======rrrr7s rrzMailboxList.all_mailboxeses"??4??? ?rNr=rfrgrbrjrrrrrrrr]sMJ <<X<??X???rrc>eZdZdZedZedZdS) GroupList group-listcF|r|djdkrgS|djSNrrrr7s rrzGroupList.mailboxesos- tAw)^;;IAw  rcF|r|djdkrgS|djSrrr7s rrzGroupList.all_mailboxesus- tAw)^;;IAw$$rNrrrrrrrksMJ !!X! %%X%%%rrcTeZdZdZedZedZedZdS)GrouprcB|djdkrgS|djSNrrr7s rrzGroup.mailboxess& 7  - -IAw  rcB|djdkrgS|djSrrr7s rrzGroup.all_mailboxess& 7  - -IAw$$rc|djSrG)rr7s rrzGroup.display_namesAw##rN)r=rfrgrbrjrrrrrrrrr|shJ !!X! %%X% $$X$$$rrceZdZdZedZedZedZedZedZ dS)NameAddr name-addrcFt|dkrdS|djSNr)lenrr7s rrzNameAddr.display_names# t99>>4Aw##rc|djSN local_partr7s rrzNameAddr.local_partsBx""rc|djSrdomainr7s rrzNameAddr.domainsBxrc|djSr)router7s rrzNameAddr.routesBx~rc|djSr addr_specr7s rrzNameAddr.addr_specsBx!!rN r=rfrgrbrjrrrrrrrrrrrsJ $$X$ ##X#XX""X"""rrcjeZdZdZedZedZedZedZdS) AngleAddrz angle-addrc8|D]}|jdkr |jcSdSN addr-spec)rbrrs rrzAngleAddr.local_parts; $ $A|{**|###+ $ $rc8|D]}|jdkr |jcSdSrrbrrs rrzAngleAddr.domains8  A|{**x+  rc8|D]}|jdkr |jcSdS)N obs-route)rbdomainsrs rrzAngleAddr.routes; ! !A|{**y   + ! !rc|D];}|jdkr.|jr |jcSt|j|jzcS)rbrrr rs rrzAngleAddr.addr_specs`  A|{**<D;&&&' 55 CCCC + 4rN) r=rfrgrbrjrrrrrrrrrrsJ $$X$   X !!X! Xrrc(eZdZdZedZdS)ObsRoutercd|DS)Nc2g|]}|jdk |jSrrr0s rrxz$ObsRoute.domains..s&CCCQ!,(*B*B*B*B*Brrrr7s rrzObsRoute.domainssCC$CCCCrN)r=rfrgrbrjrrrrrrrs7J DDXDDDrrceZdZdZedZedZedZedZedZ dS)MailboxrcB|djdkr |djSdSNrrrr7s rrzMailbox.display_names) 7  , ,7' ' - ,rc|djSrGrr7s rrzMailbox.local_partAw!!rc|djSrGrr7s rrzMailbox.domainsAw~rcB|djdkr |djSdSr)rbrr7s rrz Mailbox.routes( 7  , ,7=  - ,rc|djSrGrr7s rrzMailbox.addr_specsAw  rNrrrrrr r sJ ((X(""X"X!!X!!!X!!!rr c8eZdZdZedZexZxZxZZ dS)InvalidMailboxrcdSr$rrr7s rrzInvalidMailbox.display_nametrNrrrrrrrsB"J X/;:J::%)))rrc6eZdZdZdZefdZxZS)DomainrFctdtjSNr-r6r%rsplitr?s rrz Domain.domain'wwuww}**,,---r)r=rfrgrbrKrjrrkrls@rrrsLJM ....X.....rrceZdZdZdS)DotAtomdot-atomNr|rrrrr r sJJJrr ceZdZdZdZdS) DotAtomTextz dot-atom-textTNr=rfrgrbrKrrrrr#r# s JMMMrr#ceZdZdZdZdS) NoFoldLiteralzno-fold-literalFNr$rrrrr&r&s"JMMMrr&cneZdZdZdZedZedZedZedZ dS)AddrSpecrFc|djSrGrr7s rrzAddrSpec.local_partrrcFt|dkrdS|djS)Nr)rrr7s rrzAddrSpec.domains" t99q==4Bxrct|dkr |djS|dj|djz|djzS)Nr+rrr)rrrstriplstripr7s rrzAddrSpec.value$sW t99q==7= Aw}##%%d1gm3DGM4H4H4J4JJJrct|j}t|t|tz krt |j}n|j}|j |dz|jzS|S)N@)setrr DOT_ATOM_ENDSr r)r(namesetlps rrzAddrSpec.addr_spec*sedo&& w<<#gm344 4 4do..BBB ; "8dk) ) rN) r=rfrgrbrKrjrrrrrrrrr(r(sJM ""X"X KKXK Xrr(ceZdZdZdZdS) ObsLocalPartzobs-local-partFNr$rrrrr6r66s!JMMMrr6cLeZdZdZdZedZefdZxZS) DisplayNamez display-nameFct|}t|dkr|jS|djdkr|dn7|ddjdkr t|ddd|d<|djdkr|n7|ddjdkr t|ddd|d<|jS)Nrrrr)r"rrrbpop)r(rs rrzDisplayName.display_nameAsoo s88q==9  q6  & & GGAJJJJ1vay#v--"3q6!"":..A r7  ' ' GGIIII2wr{%//#CGCRCL11Byrctd}|jrd}n|D]}|jdkrd}t|dkrt|rrdx}}|djdks|ddjdkrd}|djdks|ddjdkrd}|t|jz|zSt jS) NFTrrr-rrqr)r'rbrr rr%r)r(rr2prepostr+s rrzDisplayName.valueRs < !EE ! !>e>OC$Aw!6))T!WQZ-BF-J-JBx"F**d2hrl.Ev.M.M|D$5666t; ;77= r) r=rfrgrbrirjrrrkrls@rr8r8<shJ X !!!!X!!!!!rr8cBeZdZdZdZedZedZdS) LocalPartz local-partFcX|djdkr |djS|djS)Nrr)rbrrr7s rrzLocalPart.valueks- 7  0 07' '7= rc tg}t}d}|dtgzD]}|jdkr|r6|jdkr+|djdkrt|dd|d<t|t}|rG|jdkr<|djdkr+|t|ddn|||d}|}t|dd}|jS)NFrrdotrr)DOTrbr" isinstancerr)r(rlast last_is_tltokis_tls rrzLocalPart.local_partrse 7cU?  C~'' /s~66H'611#D"I..BsI..E $/U22F%// 9SW--.... 3r7DJJAbD ""yrN)r=rfrgrbrKrjrrrrrrr?r?fsRJM !!X! Xrr?cLeZdZdZdZefdZedZxZS) DomainLiteralzdomain-literalFctdtjSrrr?s rrzDomainLiteral.domainrrc8|D]}|jdkr |jcSdS)Nptextrrs ripzDomainLiteral.ips8  A|w&&w'  r) r=rfrgrbrKrjrrNrkrls@rrJrJsg!JM ....X.XrrJceZdZdZdZdZdS) MIMEVersionz mime-versionN)r=rfrgrbmajorminorrrrrrPrPsJ E EEErrPcJeZdZdZdZdZdZedZedZ dS) Parameter parameterFus-asciic.|jr |djndSr) sectionednumberr7s rsection_numberzParameter.section_numbers"&6tAw~~Q6rc|D]N}|jdkr |jcS|jdkr-|D]*}|jdkr|D]}|jdkr |jcccS+OdS)Nrrrr-)rbrrs r param_valuezParameter.param_values < ''))D6!!!t 4L  !5u = > > > >!<<>>3 3 KD%5jmm444E(1+K!)G' &CJJNN8A;!##!HQK'..v/IH0J0JKKK!"1"IEKA).! *! *%!Q&&!>I ,,V-GI.K.KLLL  ,,V-GF.H.HIIIQ)>RR & = =e D DP$)LL:K$L$LEE +-?@PPP %*LL=N$O$OEEE P !077R!M001N1P1PQQQ.PPP!' 4 4UY 4 O O P ""5))))GGK((E+    g3 3 s$I&"G99'H#"H#&+JJc g}|jD]S\}}|r7|d|t|>||Td|}|rd|zndS)N{}={}z; rqr-)rrr<r r6)r(rrrs rr8zMimeParameters.__str__,s; $ $KD% $ gnnT<3F3FGGHHHH d####6""%-sV||2-rN)r=rfrgrbrhrjrr8rrrrrorosJ"JO CCXCJ.....rroc(eZdZdZedZdS)ParameterizedHeaderValueFcRt|D]}|jdkr |jcSiS)Nrp)reversedrbrrs rrzParameterizedHeaderValue.params=s>d^^ $ $E#444|###5 rN)r=rfrgrhrjrrrrrrr7s4O XrrceZdZdZdZdZdZdS) ContentTypez content-typeFtextplainN)r=rfrgrbrKmaintypesubtyperrrrrrEs"JMHGGGrrceZdZdZdZdZdS)ContentDispositionzcontent-dispositionFN)r=rfrgrbrKcontent_dispositionrrrrrrLs &JMrrceZdZdZdZdZdS)ContentTransferEncodingzcontent-transfer-encodingF7bitN)r=rfrgrbrKrrrrrrrRs,JM CCCrrceZdZdZdZdS) HeaderLabelz header-labelFNr$rrrrrrXsJMMMrrceZdZdZdZdZdS)MsgIDzmsg-idFc0t||jzSr$)rlineseprVs rrWz MsgID.foldas4yy6>))rN)r=rfrgrbrKrWrrrrrr]s-JM*****rrceZdZdZdS) MessageIDz message-idNr|rrrrrrfsJJJrrceZdZdZdS)InvalidMessageIDzinvalid-message-idNr|rrrrrrjs%JJJrrceZdZdZdS)HeaderheaderNr|rrrrrrnrrrc~eZdZdZdZdZfdZfdZdZe dZ d fd Z dZ e d Z d ZxZS) TerminalTcht||}||_g|_|Sr$)r%__new__rbr')clsrrbr(r+s rrzTerminal.__new__|s-wwsE**$  rcd|jjtSr:r;r?s rr>zTerminal.__repr__s,t~68H8H8J8JKKKrcNt|jjdz|jzdS)N/)r[r+r=rbr7s rr^zTerminal.pprints' dn%+do=>>>>>rc*t|jSr$)listr'r7s rrDzTerminal.all_defectssDL!!!rr-c d||jj|jt |jsdnd|jgS)Nz {}{}/{}({}){}r-z {})r<r+r=rbr%r>r')r(rZr+s rr`z Terminal._pps_&&  N # O GG    l BBB T\(B(B  rcdSr$rrr7s rpop_trailing_wszTerminal.pop_trailing_wsrrcgSr$rrr7s rrPzTerminal.commentss rc.t||jfSr$)rrbr7s r__getnewargs__zTerminal.__getnewargs__s4yy$/**rre)r=rfrgrKrirhrr>r^rjrDr`rrPrrkrls@rrrvsMO LLLLL???""X"X+++++++rrc*eZdZedZdZdS)WhiteSpaceTerminalcdSrprrr7s rrzWhiteSpaceTerminal.valuersrc$|o|dtvSrGWSPr7s rrHz!WhiteSpaceTerminal.startswith_fwss&Q3&rNr=rfrgrjrrHrrrrrrs< X'''''rrc*eZdZedZdZdS) ValueTerminalc|Sr$rrr7s rrzValueTerminal.values rcdS)NFrrr7s rrHzValueTerminal.startswith_fwssurNrrrrrrrs< Xrrc*eZdZedZdZdS)EWWhiteSpaceTerminalcdSrrrr7s rrzEWWhiteSpaceTerminal.valuesrrcdSrrrr7s rr8zEWWhiteSpaceTerminal.__str__srrN)r=rfrgrjrr8rrrrrrs< XrrceZdZdS)_InvalidEwErrorN)r=rfrgrrrrrrs;;rrrB,zlist-separatorFr0zroute-component-markerz([{}]+)r-z[^{}]+z[\x00-\x20\x7F]c t|}|r,|jtj|t j|r.|jtjddSdS)Nz*Non-ASCII characters found in header token)_non_printable_finderr'rrNonPrintableDefectrrr)xtextnon_printabless r_validate_xtextrsJ*511NH V6~FFGGG U##; V: 8:: ; ; ; ; ;;;rcn t|d^}}g}d}d}tt|D]D}||dkr |rd}d}nd}|rd}n |||vrn!|||E|dz}d|d||dg|z|fS)NrFrTr-) _wsp_splitterrangerrr6)rendcharsfragment remaindervcharsescapehad_qpposs r_get_ptext_to_endcharsrs)22Hy F F FS]]## C=D    FF c]h & & E hsm$$$$Ag 776??BGGXcdd^$4y$@AA6 IIrc |}t|dt|t|z d}||fS)Nfws)r.rr)rnewvaluers rget_fwsrsK||~~H U# >@@ @ABBioodA..OC) eABBi% 0 7 7 > >@@ @ WWY  F F aq Yq Y #!<<a00yDj4 399;;! &4 ,.. / / / BF GGI  E@'*z$*t2C'D'D$gtWW  !@@@ / 6 6rv > >@@ @@BJBGJg  " 7c>>!$--KE4 IIe    )$22 e]33 %wwy!!  " ?q$$ &4 <>> ? ? ? u9s F..9G'c t}|r|dtvr(t|\}}||:d}|dr t |d\}}d}t |dkr?|djdkr.|jtj dd}|r=t |d kr*|d jd krt|dd|d<||#t$rd}Yntj $rYnwxYwt|d ^}}|r1t|r|d^}}t%|d}t'|||d |}||S) NrTrutextrrz&missing whitespace before encoded wordFrrr-)rzrrrrrrrbr'rrxrrrrrfc2047_matchersearch partitionrrr6)rr{rQvalid_ewhave_wsrGrrs rget_unstructuredrQs),)**L (# 8s??"5>>LE5    & & &    D ! !  /w?? u|$$q((#B'2e;;$,33F4ND5F5FGGG"'5s<00144#B'2nDD+?(,e,5,5 R(##E***%# ! ! ! *    "(q11i  4..s33 4#ood33OC)c7++E""" ""Q (#R s"D D>-D>=D>cr t|d\}}}t|d}t|||fS)Nz()rM)rrrrrM_s r get_qp_ctextrsE -UD99OE5! ug . .EE %<rcr t|d\}}}t|d}t|||fS)NrrM)rrrrs r get_qcontentrsE-UC88OE5! % ) )EE %<rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nzexpected atext but found '{}'atext)_non_atom_end_matcherrrr<rrrr)rmrs r get_atextrs e$$A ;% + 2 25 9 9;; ; GGIIE #e**++ E % ) )EE %<rc |ddkr'tjd|t}|dd}|r3|ddkr't |\}}|||r/|ddkr"|dt vrt|\}}n|dddkrd} t|\}}|j tj dd }n'#tj$rt |\}}YnwxYw|rNt|dkr;|d j d kr*|d j d krt|d d |d <nt |\}}|||r |ddk"|s0|j tj d||fS||ddfS)Nrrzexpected '"' but found '{}'rrrFz!encoded word inside quoted stringTrrrrz"end of header inside quoted string)rrr<rrrrrrr'rxrrbr)rbare_quoted_stringrQrs rget_bare_quoted_stringrsJ  Qx3% * 1 1% 8 8:: :)++ !""IE )qS#E** u!!%((( )E!HOO 8s??"5>>LE55 2A2Y$  H 3/66 u"*11&2L73939:::* 3 3 3+E22 uuu 3 7C 233a77&r*5>>*2.9^KK-A*2..7.7&r*(..LE5!!%(((+ )E!HOO, )"))&*D 0+2+2 3 3 3!5(( uQRRy ((sAD!D*)D*c" |r3|ddkr'tjd|t}|dd}|r|ddkrv|dtvrt |\}}n1|ddkrt |\}}nt|\}}|||r |ddkv|s0|j tj d||fS||ddfS)Nrrzexpected '(' but found '{}'rrzend of header inside comment) rrr<rrr get_commentrrr'rx)rrvrQs rrrs7  9qS% ) 0 0 7 799 9iiG !""IE E!HOO 8s??"5>>LE55 1X__&u--LE55'..LE5u E!HOO v9 * , , - - -~ E!""I rc t}|ri|dtvrZ|dtvrt|\}}nt |\}}|||r|dtvZ||fSrG)r CFWS_LEADERrrrr)rrrQs rget_cfwsr s ::D E!H ++ 8s??"5>>LE55&u--LE5 E E!H ++ ;rcV t}|r6|dtvr't|\}}||t |\}}|||r6|dtvr't|\}}||||fSrG)rr r rr)r quoted_stringrQs rget_quoted_stringr s !NNM $q[(( uU###)%00LE5 $q[(( uU### % rcf t}|r6|dtvr't|\}}|||r6|dtvr't jd||dr; t|\}}n9#t j$rt|\}}YnwxYwt|\}}|||r6|dtvr't|\}}||||fS)Nrzexpected atom but found '{}'r) rr r r ATOM_ENDSrrr<rrr)rrrQs rget_atomr'sN 66D q[(( u E :qY&&% * 1 1% 8 8:: : ( ,+E22LE55& , , ,%U++LE555 , !'' uKK q[(( u E ;sB))!C  C c t}|r|dtvr'tjd||ry|dtvrjt |\}}|||r0|ddkr$|t|dd}|r|dtvj|dtur*tjdd|z||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'r rrz4expected atom at end of dot-atom-text but found '{}')r#rrrr<rrrC)r dot_atom_textrQs rget_dot_atom_textrBs MMM :E!H ))%'++16%==:: : E!HI-- '' uU###  U1X__   % % %!""IE E!HI-- RC%'#VCI..00 0 % rc t}|dtvr't|\}}|||dr; t |\}}n9#t j$rt|\}}YnwxYwt|\}}|||r6|dtvr't|\}}||||fS)Nrr) r r r rrrrrr)rdot_atomrQs r get_dot_atomrUs  yyH Qx; u 0 4+E22LE55& 4 4 4-U33LE555 4 )// u OOE q[(( u U?sA//!BBcb |dtvrt|\}}nd}|stjd|ddkrt |\}}nH|dt vr'tjd|t|\}}||g|dd<||fS)Nrz5Expected 'atom' or 'quoted-string' but found nothing.rz1Expected 'atom' or 'quoted-string' but found '{}')r r rrr SPECIALSr<r)rleaderrQs rget_wordrns Qx;   E% CEE E Qx}}(// uu qX  %'77=ve}}FF F  u Hbqb %<rc t} t|\}}||nA#tj$r/|jtjdYnwxYw|r |dtvr|ddkrQ|t|jtj d|dd}n t|\}}nd#tj$rR|dtvr?t|\}}|jtj dnYnwxYw|||r|dtv||fS)Nzphrase does not start with wordrr zperiod in 'phrase'rzcomment found without atom) r~rrrrr'rx PHRASE_ENDSrCObsoleteHeaderDefectr r )rrrQs r get_phrasers XXF0 u e  "000f8 -// 0 0 0 0 00 !E!HK// 8S== MM#    N ! !&"=$#&#& ' ' '!""IEE ' uu*   8{**#+E??LE5N))&*E4+6+6777777  MM% ! !E!HK//" 5=s"'9;A76A7*C==AEEc t}d}|dtvrt|\}}|s'tjd| t |\}}nh#tj$rV t|\}}n?#tj$r-|ddkr|dtvrt}YnwxYwYnwxYw||g|dd<| ||r|ddks|dtvrtt||z\}}|j dkr-|j tjdn,|j tjd||d< |jdn<#t&$r/|j tjdYnwxYw||fS) Nrz"expected local-part but found '{}'rinvalid-obs-local-partz >@@ @ #E** uu  "    #E??LE55&   Qx4E!H $;$;KKEEE  Hbqb e '%(D..E!HK$?$? 23z??U3J K K  $(@ @ @   % %f&@N'P'P Q Q Q Q   % %f&A>'@'@ A A A& 1 >(((( >>>!!&"@;#=#= > > > > >> u sHA00CBC9C CCCC F;;6G43G4c  t}d}|r|ddks|dtvr|ddkrU|r,|jt jd|t d}|dd}|ddkrb|t|dd|dd}|jt jd d}|r=|d jd kr,|jt jd  t|\}}d}n7#tj $r%|dtvrt|\}}YnwxYw|||r|ddk|dtv|djd ks"|djd kr=|djd kr,|jt jd|d jd ks"|d jd kr=|djd kr,|jt jd|jrd|_||fS)NFrrr zinvalid repeated '.'Trmisplaced-specialz/'\' character outside of quoted-string/ccontentrrBzmissing '.' between wordsrz!Invalid leading '.' in local partrz"Invalid trailing '.' in local partr ) r6rr'rrrxrCrrbrrr r )rr%last_non_ws_was_dotrQs rr"r"s!^^N %U1Xt^^uQx{'B'B 8s??" -&--f.H*/,/,---  ! !# & & &"& !""IE  1Xt^^  ! !-a0C#E#E F F F!""IE  " ) )&*DB+D+D E E E"'    .nR0;uDD  " ) )&*D++-+- . . . +#E??LE5"'  & + + +Qx{**#E??LE555 + e$$$7 %U1Xt^^uQx{'B'B8 q$-- 1  (& 0 0 1  (% / /%%f&@ /'1'1 2 2 2r%.. 2  )6 1 1 2  )5 0 0%%f&@ 0'2'2 3 3 3=$<! 5  sE1F F c t|d\}}}t|d}|r,|jt jdt |||fS)Nz[]rMz(quoted printable found in domain-literal)rrr'rrrr)rrMrs r get_dtextr+ sz 2%>>E5& % ) )E 9 V8 688 9 9 9E %<rc|rdS|tjd|tdddS)NFz"end of input inside domain-literal]domain-literal-endT)rrrxr)rdomain_literals r_check_for_early_dl_endr0 s] u&4,..///--ABBCCC 4rcN t}|dtvr't|\}}|||st jd|ddkr't jd||dd}t||r||fS|tdd|dtvr't|\}}||t|\}}||t||r||fS|dtvr't|\}}||t||r||fS|ddkr't jd||tdd |dd}|r6|dtvr't|\}}||||fS) Nrzexpected domain-literal[z6expected '[' at start of domain-literal but found '{}'rzdomain-literal-startr-z4expected ']' at end of domain-literal but found '{}'r.) rJr r rrrr<r0rrrr+)rr/rQs rget_domain_literalr3(s;#__N Qx; ue$$$ A%&?@@@ Qx3%'!!'00 0 !""IEun55%u$$--CDDEEE Qx3u~~ ue$$$U##LE5%   un55%u$$ Qx3u~~ ue$$$un55%u$$ Qx3%'!!'00 0--ABBCCC !""IE %q[(( ue$$$ 5  rc t}d}|dtvrt|\}}|s'tjd||ddkr5t |\}}||g|dd<||||fS t|\}}n'#tj$rt|\}}YnwxYw|r |ddkrtjd||g|dd<|||r|ddkr|j tj d|dj dkr |d|dd<|rc|ddkrW|tt|d d\}}|||r |ddkW||fS) Nrzexpected domain but found '{}'r2r0zInvalid Domainr z(domain is not a dot-atom (contains CFWS)r!r)rr r rrr<r3rrrr'rrbrC)rrrrQs r get_domainr5OsXXF F Qx;   <% , 3 3E : :<< < Qx3)%00 u  E"1"I eu}'#E** uu  "''' uuu' 8qS%&6777 Hbqb  MM% !qSf9 688 9 9 9 !9 : - -q F111I !aC MM#   #E!""I..LE5 MM%  !aC 5=sB11!CCc t}t|\}}|||r |ddkr0|jt jd||fS|t ddt|dd\}}||||fS)Nrr0z#addr-spec local part with no domainaddress-at-symbolr)r(r&rr'rrxrr5)rrrQs r get_addr_specr8us I!%((LE5 U  E!HOO  !; 1"3"3 4 4 4% ]3(;<<===eABBi((LE5 U e rc t}|r|ddks|dtvr|dtvr(t|\}}||n0|ddkr$|t|dd}|r|ddku|dtv|r |ddkr't jd||tt|dd\}}|||r|ddkr|t|dd}|sn|dtvr't|\}}|||ddkrI|tt|dd\}}|||r |ddk|st jd|ddkr't jd||tdd ||ddfS) Nrrrr0z(expected obs-route domain but found '{}'z%end of header while parsing obs-route:z4expected ':' marking end of obs-route but found '{}'zend-of-obs-route-marker) rr r r ListSeparatorrrr<RouteComponentMarkerr5r)r obs_routerQs r get_obs_router>s  I U1Xs]]eAh+&=&= 8{ " "#E??LE5   U # # # # 1X__   ] + + +!""IE U1Xs]]eAh+&=&= FE!HOO% 6 = =e D DFF F )***eABBi((LE5 U  $E!HcMM'''abb    8{ " "#E??LE5   U # # # 8s??   1 2 2 2%eABBi00LE5   U # # #  $E!HcMM O%&MNNN Qx3%(''-ve}}66 6 ]3(ABBCCC eABBi rc( t}|dtvr't|\}}|||r |ddkr't jd||tdd|dd}|ddkr]|tdd|jt j d|dd}||fS t|\}}n#tj$r t|\}}|jt j d n:#tj$r(t jd |wxYw||t|\}}YnwxYw|||r|ddkr |dd}n,|jt j d |tdd|r6|dtvr't|\}}||||fS) Nrzangle-addr-endznull addr-spec in angle-addrz*obsolete route specification in angle-addrz.expected addr-spec or obs-route but found '{}'z"missing trailing '>' on angle-addr) rr r rrrr<rr'rxr8r>r)r angle_addrrQs rget_angle_addrrCsJ Qx; u%   @E!HOO% 0 7 7 > >@@ @mC);<<=== !""IE Qx3--=>>???!!&"< *#,#, - - -abb 5   ,$U++ uu  " , , , P(//LE5   % %f&A<'>'> ? ? ? ?& P P P)@GGNNPP P P %   $U++ uuu ,e 3qSabb !!&"< 0#2#2 3 3 3mC)9::;;; !q[(( u%   u s*D%%G5>E43G47F++*GGc t}t|\}}||dd|jdd|_||fSr$)r8rrOr')rrrQs rget_display_namerEs]==Le$$LE5aaa!!! =+L  rcj t}d}|dtvr;t|\}}|s'tjd||ddkr|dt vr'tjd|t|\}}|s'tjd|||g|ddd<d}||t|\}}||g|dd<||||fS)Nrz!expected name-addr but found '{}'r@) rr r rrr<rrErrC)r name_addrrrQs r get_name_addrrHsf I F Qx;   D)3::6BBDD D Qx3 8{ " ")3::5AACC C'.. u C)3::5AACC C  "8E!HRaRLF!%((LE5 Hbqb  U e rc t} t|\}}nc#tj$rQ t |\}}n:#tj$r(tjd|wxYwYnwxYwt d|jDrd|_| |||fS)Nzexpected mailbox but found '{}'c3JK|]}t|tjVdSr$)rDrrxr0s rr3zget_mailbox..sC 3 3 a3 4 4 3 3 3 3 3 3rr) r rHrrr8r<anyrDrbr)rrrQs r get_mailboxrL s iiGA$U++ uu  "AAA A(//LE55& A A A)188??AA A A5A   3 3 % 1 3 3 333/. NN5 E>&$BAB7A>>BBc, t}|r|d|vrv|dtvr4|t|dd|dd}n't |\}}|||r |d|vv||fS)Nrr(r)rrrrr)rrinvalid_mailboxrQs rget_invalid_mailboxrPs %&&O *E!HH,, 8{ " "  " "=q1D$F$F G G G!""IEE%e,,LE5  " "5 ) ) ) *E!HH,, E !!rc t}|rd|ddkrW t|\}}||n}#tj$rjd}|dt vrt |\}}|r |ddvrB|||jtjdnt|d\}}||g|dd<|||jtj dn|ddkr-|jtjdn^t|d\}}||g|dd<|||jtj dYnwxYw|rm|ddvrc|d}d|_ t|d\}}| ||jtj d|r0|ddkr$|t|d d}|r |ddkW||fS) Nr;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listrrrr)rrLrrrr r r'rrPrxrbrOr;)r mailbox_listrQrrs rget_mailbox_listrT0s ==L (E!HOO 8&u--LE5    & & & && 8 8 8FQx;&& (  <aD 0 0 ''/// (//0K71919::::$7ud#C#CLE5)%+Hbqb  ''... (//0J91;1;<<<<qS$++F,G3-5-56666 35$?? u%!'E"1"I##E***$++F,F5-7-7888/ 82  4U1XT))#2&G!2G .ud;;LE5 NN5 ! ! !  ' '(B1)3)3 4 4 4  U1X__    . . .!""IEQ (E!HOOR  s'A E7GGc t}|s0|jtjd||fSd}|r|dt vr~t |\}}|sE|jtjd||||fS|ddkr||||fSt|\}}t|j dkr\|||| ||jtj d||fS||g|dd<||||fS)Nzend of header before group-listrzend of header in group-listrRzgroup-list with empty entries) rr'rrrxr r rTrrrOr)r group_listrrQs rget_group_listrWisJ !!!&"< -#/#/ 0 0 05  F %q[((   %   % %f&@-'/'/ 0 0 0   f % % %u$ $ 8s??   f % % %u$ $#E**LE5 5 ""     f % % %%   !!&"= +#-#- . . .5   Hbqb e u rc t}t|\}}|r |ddkr'tjd||||t dd|dd}|r;|ddkr/|t dd||ddfSt|\}}|||s-|jtj dn3|ddkr'tjd ||t dd|dd}|r6|dtvr't|\}}||||fS) Nrr:z8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorrrRzgroup-terminatorzend of header in groupz)expected ';' at end of group but found {}) rrErrr<rrrWr'rxr r )rrrQs r get_grouprYs GGE#E**LE5 9E!HOO%'**0&--99 9 LL LLs$CDDEEE !""IE  qS ]3(:;;<<<eABBi!%((LE5 LL G V7 $&& ' ' ' ' qS% 7 > >u E EGG G LLs$677888 !""IE q[(( u U %<rc@ t} t|\}}nc#tj$rQ t |\}}n:#tj$r(tjd|wxYwYnwxYw||||fS)Nzexpected address but found '{}')rrYrrrLr<r)rrrQs r get_addressr[s iiGA '' uu  "AAA A&u--LE55& A A A)188??AA A A5A  NN5 E>rMc t}|rm t|\}}||n#tj$r}d}|dt vrt |\}}|r |ddkrC|||jtjdnt|d\}}||g|dd<|t|g|jtj dn|ddkr-|jtjdnlt|d\}}||g|dd<|t|g|jtj dYd}~nd}~wwxYw|ru|ddkri|dd}d|_ t|d\}}| ||jtj d|r$|t|dd}|m||fS) Nrrz"address-list entry with no contentzinvalid address in address-listzempty element in address-listrrr)rr[rrrr r r'rrPrrxrbrOr;)r address_listrQerrrrs rget_address_listr_s==L ( 8&u--LE5    & & & && 8 8 8FQx;&& (  <aC ''/// (//0K<1>1>????$7uc#B#BLE5)%+Hbqb  ''(8(8999 (//0J91;1;<<<<qS$++F,G3-5-56666 35#>> u%!'E"1"I##GUG$4$4555$++F,F5-7-7888/ 82  4U1X__#2&q)G!2G .uc::LE5 NN5 ! ! !  ' '(B1)3)3 4 4 4      . . .!""IEQ (R  s'=G FGGcH t}|s'tjd||ddkr'tjd||t dd|dd}t |\}}|||r |ddkr'tjd||t dd ||ddfS) Nz'expected no-fold-literal but found '{}'rr2z;expected '[' at the start of no-fold-literal but found '{}'zno-fold-literal-startrr-z9expected ']' at the end of no-fold-literal but found '{}'zno-fold-literal-end)r&rrr<rrr+)rno_fold_literalrQs rget_no_fold_literalrbs4#ooO E% 5 < ' on msg-id)rr r rrrr<rrr"r'rrxrbr5)rmsg_idrQes r get_msg_idrfs WWF q[(( u e >E >D  E  7EE  E  HK,H?>K?K>J K 7KK K KKKc t} t|\}}|||r?|jt jd|ny#tj$rg}t|}t|}|jt jd|Yd}~nd}~wwxYw|S)NzUnexpected {!r}zInvalid msg-id: {!r}) rrfrr'rrxr<rrr)r message_idrQexs rparse_message_idrj[s#J 2!%(( u%     2   % %f&@!((//'1'1 2 2 2  "KKK ''%e,, !!  &'='D'DR'H'H I I K K K K K K K KK s'A::C0 AC++C0c t}|s.|jtjd|S|dt vrUt |\}}|||s,|jtjdd}|rM|ddkrA|dt vr2||dz }|dd}|r|ddkr|dt v2|sc|jtjd ||t|dn7t||_ |t|d |r6|dt vr't |\}}|||r |ddkrZ|j ,|jtjd |r#|t|d|S|tdd |dd}|r6|dt vr't |\}}|||s5|j ,|jtjd |Sd}|r5|dt vr&||dz }|dd}|r|dt v&|sc|jtjd ||t|dn7t||_ |t|d |r6|dt vr't |\}}|||rO|jtjd |t|d|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSr-r rz1Expected MIME major version number but found {!r}rdigitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)rPr'rrHeaderMissingRequiredValuer r isdigitrxr<rintrQrR)r mime_versionrQrls rparse_mime_versionrqws ==L ##F$E 3%5%5 6 6 6 Qx; uE""" E  ' '(IB)D)D E E E F E!HOOa (C(C%(abb  E!HOOa (C(C >>  =##F$> ? F Fv N N%P%P Q Q QM&'::;;;; [[ M&(;;<<< #q[(( uE""" E!HOO   )  ' '(BB)D)D E E E  ?    eW = = > > > c+>??@@@ !""IE #q[(( uE"""    )  ' '(BB)D)D E E E F E!HK//%(abb  E!HK// >>  =##F$> ? F Fv N N%P%P Q Q QM&'::;;;; [[ M&(;;<<< #q[(( uE""" ;##F$> 5%7%7 8 8 8M%99::: rc4 t}|r|ddkrx|dtvr4|t|dd|dd}n't |\}}|||r |ddkx||fS)NrrRr(r)r_rrrr)rinvalid_parameterrQs rget_invalid_parameterrts )** ,E!HOO 8{ " "  $ $]583F&H&H I I I!""IEE%e,,LE5  $ $U + + + ,E!HOO e ##rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nzexpected ttext but found '{}'ttext)_non_token_end_matcherrrr<rrrr)rrrvs r get_ttextrxs u%%A ;% + 2 25 9 9;; ; GGIIE #e**++ E % ) )EE %<rc t}|r6|dtvr't|\}}|||r6|dtvr't jd|t|\}}|||r6|dtvr't|\}}||||fSNrzexpected token but found '{}') rr r r TOKEN_ENDSrrr<rx)rmtokenrQs r get_tokenr}sWWF q[(( u e ;qZ''% + 2 25 9 9;; ;U##LE5 MM% q[(( u e 5=rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nz expected attrtext but found {!r}re)_non_attribute_end_matcherrrr<rrrrrrres r get_attrtextrs #5))A >% . 5 5e < <>> >wwyyH #h--.. !EXz22HH U?rc t}|r6|dtvr't|\}}|||r6|dtvr't jd|t|\}}|||r6|dtvr't|\}}||||fSrz) rbr r rATTRIBUTE_ENDSrrr<rrrcrQs r get_attributer s I  q[(( u ;q^++% + 2 25 9 9;; ;&&LE5 U  q[(( u e rc t|}|s'tjd||}|t |d}t |d}t|||fS)Nz)expected extended attrtext but found {!r}extended-attrtext)#_non_extended_attribute_end_matcherrrr<rrrrrs rget_extended_attrtextr! s ,E22A G% 7 > >u E EGG GwwyyH #h--.. !EX':;;HH U?rc t}|r6|dtvr't|\}}|||r6|dtvr't jd|t|\}}|||r6|dtvr't|\}}||||fSrz) rbr r rEXTENDED_ATTRIBUTE_ENDSrrr<rrs rget_extended_attributer3 s I  q[(( u ;q444% + 2 25 9 9;; ;(//LE5 U  q[(( u e rc t}|r |ddkr'tjd||t dd|dd}|r|ds'tjd|d}|rK|dr1||dz }|dd}|r|d1|ddkr2|dkr,|jtjd t||_ |t |d ||fS) Nr*zExpected section but found {}zsection-markerrz$Expected section number but found {}r-0z'section number has an invalid leading 0rl) rirrr<rrrnr'rxrorY)rrjrls r get_sectionrI siiG 0E!HOO%&E&L&L(-'/'/00 0 NN=&677888 !""IE @a((**@%'117@@ @ F E!H$$&&%(abb  E!H$$&&ayCFcMMv99 ; ; < < <[[GN NN=22333 E>rc t}|stjdd}|dtvrt |\}}|s'tjd||ddkrt |\}}nt|\}}||g|dd<||||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r) rlrrr r r<r rr)rvrrQs r get_valuerg s A P%&NOOO F Qx;   @%'006v@@ @ Qx3(// uu-e44 u Hbqb HHUOOO e8OrcT t}t|\}}|||r |ddkrC|jt jd|||fS|ddkr t|\}}d|_||n#tj $rYnwxYw|st j d|ddkr4|tdd|dd}d|_ |dd krt j d |td d |dd}d}|r6|dtvr't|\}}||d}|}|j r|r|dd krt|\}}|j}d }|jdkr4|r|ddkrd}nBt#|\}} | r| ddkrd}n t%|\}} | sd}n#YnxYw|r_|jt jd|||D]} | jdkr g| dd<| }n|}n.d}|jt jd|r|ddkrd}nt)|\}}|j r |jdkrW|r |ddkr||||}||fS|jt jd|sI|jt jd|||||fSnC|>|D]} | jdkrn| jdk|| | j|_|ddkr't j d||tdd|dd}|rt|ddkrht#|\}}|||j|_|r |ddkr't j d||tdd|dd}|t1} |rr|dt2vrt5|\}}n9|dd krtd d}|dd}nt7|\}}| ||r| }nt)|\}}||||}||fS)NrrRz)Parameter contains name ({}) but no valuerTzIncomplete parameterzextended-parameter-markerr=zParameter not followed by '='parameter-separatorrF'z5Quoted string value for extended parameter is invalidrzZParameter marked as extended but appears to have a quoted string value that is non-encodedzcApparent initial-extended-value but attribute was not marked as extended or was not initial sectionz(Missing required charset/lang delimitersrrez=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231-delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}DQUOTE)rTrrr'rrxr<rrXrrr]r r r rrZrrrbrrrrrlrrr) rrrQrrappendtoqstring inner_value semi_validrtrs r get_parameterr} s KKE ''LE5 LL E!HOO V79%%+VE]]44 5 5 5e| Qx3 &u--LE5"EO LL    &    D  B)*@AA A 8s?? LLs,GHH I I I!""IE!EN Qx3%&EFFF LLs$9::;;; !""IE F q[(( u UIH ~$<%$ FU1A55 aC OOE " " "$!%<  V7 DEE F F F  V7 688 9 9 9  %<      <#666E7 LJ & & OOA   GEM 8s??)+FFLfUmmUU U c+>??@@@abb   KU1X__'..LE5 OOE " " "EJ KE!HOO-/<??@@@abb  GG Qx3&u~~ uuqS%c844abb +E22 u HHUOOO  '' u OOE %<s.CCC-IIc$ t}|r t|\}}||n#tj$r }d}|dt vrt |\}}|s|||cYd}~S|ddkrD||||jtjdnpt|\}}|r|g|dd<|||jtjd |Yd}~nd}~wwxYw|r|ddkru|d}d|_ t|\}}| ||jtjd ||r-|tdd|d d}||S) NrrRzparameter entry with no contentzinvalid parameter {!r}rr`z)parameter with invalid trailing text {!r}rr)rorrrrr r r'rxrtr<rbrOr)rmime_parametersrQr^rrs rparse_mime_parametersr sl %&&O # =(//LE5  " "5 ) ) ) )& = = =FQx;&& (  '&&v...&&&&&&&Qx3%#**6222'..v/I507078888 5U;; u)!'E"1"I&&u---'..v/I,33E::0<0<===# =&  LU1X__$B'E2E 077LE5 LL     # * *6+E;BB5II,K,K L L L    " "=6K#L#L M M M!""IEG #H s"'=E ;EECEEc |r|ddkrx|dtvr4|t|dd|dd}n't|\}}|||r |ddkx|sdS|tdd|t |dddS)NrrRr(rr)rrrrr) tokenlistrrQs r_find_mime_parametersr? s $E!HOO 8{ " "   ]585HII J J J!""IEE%e,,LE5   U # # # $E!HOO  ]3(=>>??? *595566666rc t}d}|s.|jtjd|S t |\}}nf#tj$rT|jtjd|t|||cYSwxYw|||r |ddkr@|jtjd|rt|||S|j |_ |tdd|dd} t |\}}nf#tj$rT|jtjd |t|||cYSwxYw|||j |_|s|S|dd krU|jtjd ||` |`t|||S|td d |t!|dd|S) NFz"Missing content type specificationz(Expected content maintype but found {!r}rrzInvalid content typezcontent-type-separatorrz'Expected content subtype but found {!r}rRz 022 3 3 3  '' uu  " V7 6 = =e D DFF G G GeU+++   LL E!HOO V7 "$$ % % %  0 !% / / / [&&((..00EN LLs$<==>>> !""IE '' uu  " V7 5 < |dr6|ddtvr!|dd}|ddd|d<|S)Nr-rr)lineswsps r_steal_trailing_WSP_if_existsr sS C #r#uRy}33Bim"IcrcNb Jrcd |jp tj}|jrdnd}dg}d}d}d}d}t dd} t |} | r| d} | | ur|dz}"t| } |s@| jdvrt |  }nt |  } | ||} n5#t$r(td | jDrd } nd} d }YnwxYw| jd krt!| ||||r|s| jsd}d}| jr| | dt)|j }|j|vr_t)||t)|dz kr$t-|}|||dxx|z cc<t1| dst | | z} d}| jr;|| |kr|d ks |dkr| dkrd}t3| |||| j| }| }d}d}d}t)| |t)|dz kr|dxx| z cc<7| jrWt)| dz|krAt-|}|s| r||| zd}t1| dst | }| jdkr0t9ddgd|Dzt9ddgz}| jdkr0t9ddgd|Dzt9ddgz}| js|dz }|| || z} R| jr|s| d| d }ut-|}|s| r||| zn|dxx| z cc<| |j||jzS)Nutf-8rVr-rFwrap_as_ew_blockedr)rMrc3JK|]}t|tjVdSr$)rDrrr0s rr3z%_refold_parse_tree.. sC..a!>??......r unknown-8bitTrprSrr#rrrMcHg|]}tt|d SrM)rrr1ps rrxz&_refold_parse_tree..I s;(((##4Q#7#7AA(((rrvrcbg|],}|jdkrtt|dn|-Sr)rbrrrs rrxz&_refold_parse_tree..O sP((( //##9!#<#Q>Q=Q  u % % 66s>C/DDcz |B|r@tt|d|d|z}|dd||d<|dtvr]|d}|dd}t|d|kr"|t ||dxx|z cc<d}|dtvr|d}|dd}|t|dn|}|dkrdn|} t| dz} | dz|krt jd|r|t|dz } | | z } | dkr|d ;|d| } tj | | }t|| z }|dkr8| dd} tj | | }t|| z }|dk8|dxx|z cc<|t| d}|r*|d t|d}||dxx|z cc<|r|ndS) Nrrrr-rVrz3max_line_length is too small to fit an encoded wordrq)r) rrrrrrrrrr#) to_encoderrrrir leading_wsp trailing_wsp new_last_ew encode_as chrome_lenremaining_space text_spaceto_encode_word encoded_wordexcesss rrrg s 1 U2Ywxx09< = =?? "Ihwh'b |s l abbM b NNf $ $ LL6u== > > > b [ L} } crcN $+O#eBi...K"j00gIY!#JQ6!!% ACC C ) 3uRy>>1$z1 ?? LL    ";J;/z.)DDD \""_4qjj,CRC0N:niHHHL&&8F qjj b \! c.11223  ) LL   eBi..K+ ), "IIIIII, 6;;$6rc  |jD]O\}}|dds|dxxdz cc<|}d} ||d}n-#t$r d}t j|rd}d}nd}YnwxYw|r:tj |d | } d ||| } n#d |t|} t|dt| zd z|kr|ddz| z|d<+t| dz|kr| d| z[d} |dz} |rt|tt| zdzt| z} || dzkrd}|| z dz x}} |d|}tj |d | } t| |krn|d z}F| d || | | d } | d z } ||d}|r|dxxdz cc<|QdS)NrrRstrictFTrrsrr-)saferz {}*={}''{}rrrqrrz''r+Nz {}*{}*={}{})rr-rfr#r~rrryrzrr<r rrr)rLrrrtrrr error_handlerencoding_required encoded_valuerrj extra_chromer splitpointmaxcharspartials rrr s{:!:! e Ry!!**3//  "III III  " LL " " " %  ! " " " $ $U++ "( 1 !  "  ="L..B}/66M&&tWmDDDD>>$ U(;(;<>CII % )F 2 2b C$.E"I  YY]f $ $ LLt $ $ $ ~  !TSW%6%66:S=N=NNJa'' $*Z$7!$; ;J   , & 2 2"]!3!<!< }%%11a   LL..g|]<< = = =L qLG*++&E !b S - !I:!:!sA))'BB)r)rerrystringroperatorremailrrrrr1rr rrr2r TSPECIALSr{ ASPECIALSrrrrrrr compileVERBOSE MULTILINErrr"rnrzr~rrrrrrrrrrrrrrrrr rrr r#r&r(r6r8r?rJrPrTr_rbrirlrorrrrrrrrrrrrrrrrrCr;rKrhr<r<r6rrrmatchrfindallrrwrrrrrrrrrrrrr r rrrrrr&r"r+r0r3r5r8r>rCrErHrLrPrTrWrYr[r_rbrfrjrqrtrxr}rrrrrrrrrrrrrrUrrrrrrrsCJ ''''''  c%jjCCHHn 3  sN CCHH$ U# E "cc#hh . _ E " S(33s883 t    @@@ 111  "*Z",  @,@,@,@,@,@,@,@,FDDDDD)DDD     I   Y9"9I )#####9###6 - - - - -| - - -!4CCCCC)CCC&%%%%%i%%%2 ? ? ? ? ?) ? ? ?%%%%% %%%"$$$$$I$$$*"""""y"""6 DDDDDDyDDD!!!!!i!!!6;;;;;Y;;;.....Y...i) I yB9 '!'!'!'!'!&'!'!'!T!!!!! !!!H     I    ) 8%%%%%y%%% ##### ###i     I   S.S.S.S.S.YS.S.S.l     y   *1 i ) *****I***&&&&&y&&&Y(+(+(+(+(+s(+(+(+V''''''''H-<<<<#I$4$4 BIbggj!!""%$%$%%%*'RZ (8(8 BIbggn%%&&)()())).&0bj1A1A BIbgg-..//2121'2'227$;;;JJJ<   ////bAAAF"    ))))))V2      $6   &2   D$$$L%%%N-!-!-!^(%!%!%!N$$$L ' ' ' R,,,\   <*"""$666r###J<:444n&&&,BBBJ8BBBH$$$$&.&.$,<,LLL\222h777 777r<^I7I7I7V?7?7?7BI!I!I!I!I!r