PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/share/perl5/vendor_perl/Mail/IMAPClient/BodyStructure
Viewing File: /usr/share/perl5/vendor_perl/Mail/IMAPClient/BodyStructure/Parse.pm
package Mail::IMAPClient::BodyStructure::Parse; use Parse::RecDescent; { my $ERRORS; package Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse; use strict; use vars qw($skip $AUTOLOAD ); @Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ISA = (); $skip = '\s*'; my $mibs = "Mail::IMAPClient::BodyStructure"; my $subpartCount = 0; my $partCount = 0; sub take_optional_items($$@) { my ($r, $items) = (shift, shift); foreach (@_) { my $opt = $_ .'(?)'; exists $items->{$opt} or next; $r->{$_} = UNIVERSAL::isa($items->{$opt}, 'ARRAY') ? $items->{$opt}[0] : $items->{$opt}; } } sub merge_hash($$) { my $to = shift; my $from = shift or return; while( my($k,$v) = each %$from) { $to->{$k} = $v } } ; { local $SIG{__WARN__} = sub {0}; # PRETEND TO BE IN Parse::RecDescent NAMESPACE *Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::AUTOLOAD = sub { no strict 'refs'; ${"AUTOLOAD"} =~ s/^Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse/Parse::RecDescent/; goto &{${"AUTOLOAD"}}; } } push @Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ISA, 'Parse::RecDescent'; # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelopestruct { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"envelopestruct"}; Parse::RecDescent::_trace(q{Trying rule: [envelopestruct]}, Parse::RecDescent::_tracefirst($_[1]), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' date subject from sender replyto to cc bcc inreplyto messageid ')']}, Parse::RecDescent::_tracefirst($_[1]), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{envelopestruct}); %item = (__RULE__ => q{envelopestruct}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [date]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{date})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::date($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [date]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [date]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{date}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [subject]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{subject})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subject($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [subject]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [subject]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{subject}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [from]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{from})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::from($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [from]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [from]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{from}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [sender]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{sender})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sender($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [sender]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [sender]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{sender}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [replyto]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{replyto})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::replyto($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [replyto]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [replyto]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{replyto}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [to]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{to})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::to($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [to]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [to]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{to}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [cc]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{cc})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::cc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [cc]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [cc]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{cc}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [bcc]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bcc})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bcc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bcc]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bcc]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{bcc}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [inreplyto]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{inreplyto})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::inreplyto($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [inreplyto]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [inreplyto]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{inreplyto}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [messageid]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{messageid})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::messageid($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [messageid]>>}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [messageid]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $item{q{messageid}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = bless {}, "Mail::IMAPClient::BodyStructure::Envelope"; $return->{$_} = $item{$_} for qw/date subject from sender replyto to cc/ , qw/bcc inreplyto messageid/; 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' date subject from sender replyto to cc bcc inreplyto messageid ')']<<}, Parse::RecDescent::_tracefirst($text), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{envelopestruct}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{envelopestruct}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{envelopestruct}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subpart { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"subpart"}; Parse::RecDescent::_trace(q{Trying rule: [subpart]}, Parse::RecDescent::_tracefirst($_[1]), q{subpart}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' part ')' <defer:{ ++$subpartCount; }>]}, Parse::RecDescent::_tracefirst($_[1]), q{subpart}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{subpart}); %item = (__RULE__ => q{subpart}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [part]}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{part})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [part]>>}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [part]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; $item{q{part}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do {$return = $item{part}}; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{Trying directive: [<defer:{ ++$subpartCount; }>]}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; $_tok = do { push @{$thisparser->{deferred}}, sub { ++$subpartCount; }; }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<<Didn't match directive>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' part ')' <defer:{ ++$subpartCount; }>]<<}, Parse::RecDescent::_tracefirst($text), q{subpart}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{subpart}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{subpart}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{subpart}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{subpart}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"NIL"}; Parse::RecDescent::_trace(q{Trying rule: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{NIL}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^NIL/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^NIL/i]}, Parse::RecDescent::_tracefirst($_[1]), q{NIL}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{NIL}); %item = (__RULE__ => q{NIL}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^NIL/i]}, Parse::RecDescent::_tracefirst($text), q{NIL}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^NIL)/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{NIL}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "NIL" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^NIL/i]<<}, Parse::RecDescent::_tracefirst($text), q{NIL}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{NIL}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{NIL}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{NIL}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{NIL}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::PLAIN { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"PLAIN"}; Parse::RecDescent::_trace(q{Trying rule: [PLAIN]}, Parse::RecDescent::_tracefirst($_[1]), q{PLAIN}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^"PLAIN"|^PLAIN/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^"PLAIN"|^PLAIN/i]}, Parse::RecDescent::_tracefirst($_[1]), q{PLAIN}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{PLAIN}); %item = (__RULE__ => q{PLAIN}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^"PLAIN"|^PLAIN/i]}, Parse::RecDescent::_tracefirst($text), q{PLAIN}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"PLAIN"|^PLAIN)/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{PLAIN}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "PLAIN" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^"PLAIN"|^PLAIN/i]<<}, Parse::RecDescent::_tracefirst($text), q{PLAIN}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{PLAIN}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{PLAIN}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{PLAIN}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{PLAIN}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFC822 { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"RFC822"}; Parse::RecDescent::_trace(q{Trying rule: [RFC822]}, Parse::RecDescent::_tracefirst($_[1]), q{RFC822}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^"RFC822"|^RFC822/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^"RFC822"|^RFC822/i]}, Parse::RecDescent::_tracefirst($_[1]), q{RFC822}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{RFC822}); %item = (__RULE__ => q{RFC822}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^"RFC822"|^RFC822/i]}, Parse::RecDescent::_tracefirst($text), q{RFC822}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"RFC822"|^RFC822)/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{RFC822}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "RFC822" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^"RFC822"|^RFC822/i]<<}, Parse::RecDescent::_tracefirst($text), q{RFC822}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{RFC822}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{RFC822}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{RFC822}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{RFC822}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysubtype { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodysubtype"}; Parse::RecDescent::_trace(q{Trying rule: [bodysubtype]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{PLAIN, or HTML, or NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [PLAIN]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodysubtype}); %item = (__RULE__ => q{bodysubtype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [PLAIN]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::PLAIN($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [PLAIN]>>}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [PLAIN]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $item{q{PLAIN}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [PLAIN]<<}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [HTML]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodysubtype}); %item = (__RULE__ => q{bodysubtype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [HTML]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::HTML($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [HTML]>>}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [HTML]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $item{q{HTML}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [HTML]<<}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{bodysubtype}); %item = (__RULE__ => q{bodysubtype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{bodysubtype}); %item = (__RULE__ => q{bodysubtype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodysubtype}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodysubtype}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodysubtype}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::from { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"from"}; Parse::RecDescent::_trace(q{Trying rule: [from]}, Parse::RecDescent::_tracefirst($_[1]), q{from}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{from}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{from}); %item = (__RULE__ => q{from}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($text), q{from}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [ADDRESSES]>>}, Parse::RecDescent::_tracefirst($text), q{from}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{from}, $tracelevel) if defined $::RD_TRACE; $item{q{ADDRESSES}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<}, Parse::RecDescent::_tracefirst($text), q{from}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{from}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{from}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{from}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{from}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::multipart { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"multipart"}; Parse::RecDescent::_trace(q{Trying rule: [multipart]}, Parse::RecDescent::_tracefirst($_[1]), q{multipart}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{subpart}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [subpart <commit> bodysubtype bodyparms bodydisp bodylang bodyloc bodyextra <defer:{ $subpartCount = 0 }>]}, Parse::RecDescent::_tracefirst($_[1]), q{multipart}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{multipart}); %item = (__RULE__ => q{multipart}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying repeated subrule: [subpart]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subpart, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [subpart]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [subpart]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{subpart(s)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying directive: [<commit>]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $_tok = do { $commit = 1 }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<<Didn't match directive>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [bodysubtype]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bodysubtype})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysubtype($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodysubtype]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodysubtype]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{bodysubtype}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyparms]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyparms})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyparms]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyparms]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyparms(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodydisp})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodydisp]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{bodydisp(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodylang})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodylang]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{bodylang(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyloc]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyloc})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyloc, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyloc]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyloc]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyloc(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyextra})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyextra]>>}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyextra(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying directive: [<defer:{ $subpartCount = 0 }>]}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $_tok = do { push @{$thisparser->{deferred}}, sub { $subpartCount = 0 }; }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<<Didn't match directive>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { bodysubtype => $item{bodysubtype} , bodytype => 'MULTIPART' , bodystructure => $item{'subpart(s)'} }; take_optional_items($return, \%item , qw/bodyparms bodydisp bodylang bodyloc bodyextra/); 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [subpart <commit> bodysubtype bodyparms bodydisp bodylang bodyloc bodyextra <defer:{ $subpartCount = 0 }>]<<}, Parse::RecDescent::_tracefirst($text), q{multipart}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{multipart}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{multipart}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{multipart}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{multipart}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyid { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodyid"}; Parse::RecDescent::_trace(q{Trying rule: [bodyid]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyid}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/[()]/, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/[()]/ NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyid}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodyid}); %item = (__RULE__ => q{bodyid}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/[()]/]}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); $_savetext = $text; if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[()])/) { $text = $_savetext; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; $text = $_savetext; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{NIL})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [/[()]/ NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyid}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodyid}); %item = (__RULE__ => q{bodyid}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodyid}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodyid}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodyid}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodyid}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodyid}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodylang"}; Parse::RecDescent::_trace(q{Trying rule: [bodylang]}, Parse::RecDescent::_tracefirst($_[1]), q{bodylang}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING, or STRINGS}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodylang}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodylang}); %item = (__RULE__ => q{bodylang}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodylang}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodylang}); %item = (__RULE__ => q{bodylang}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRINGS]}, Parse::RecDescent::_tracefirst($_[1]), q{bodylang}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{bodylang}); %item = (__RULE__ => q{bodylang}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRINGS]}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRINGS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRINGS]>>}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRINGS]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $item{q{STRINGS}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRINGS]<<}, Parse::RecDescent::_tracefirst($text), q{bodylang}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodylang}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodylang}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodylang}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodylang}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyloc { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodyloc"}; Parse::RecDescent::_trace(q{Trying rule: [bodyloc]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodyloc}); %item = (__RULE__ => q{bodyloc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodyloc}); %item = (__RULE__ => q{bodyloc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodyloc}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodyloc}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodyloc}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodyloc}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::inreplyto { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"inreplyto"}; Parse::RecDescent::_trace(q{Trying rule: [inreplyto]}, Parse::RecDescent::_tracefirst($_[1]), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{inreplyto}); %item = (__RULE__ => q{inreplyto}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{inreplyto}); %item = (__RULE__ => q{inreplyto}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{inreplyto}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{inreplyto}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{inreplyto}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{inreplyto}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"ADDRESSES"}; Parse::RecDescent::_trace(q{Trying rule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or RFCNONCOMPLY, or '('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{ADDRESSES}); %item = (__RULE__ => q{ADDRESSES}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [RFCNONCOMPLY]}, Parse::RecDescent::_tracefirst($_[1]), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{ADDRESSES}); %item = (__RULE__ => q{ADDRESSES}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [RFCNONCOMPLY]}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFCNONCOMPLY($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [RFCNONCOMPLY]>>}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [RFCNONCOMPLY]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $item{q{RFCNONCOMPLY}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [RFCNONCOMPLY]<<}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' addressstruct ')']}, Parse::RecDescent::_tracefirst($_[1]), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{ADDRESSES}); %item = (__RULE__ => q{ADDRESSES}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [addressstruct]}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{addressstruct})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::addressstruct, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [addressstruct]>>}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [addressstruct]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $item{q{addressstruct(s)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{'addressstruct(s)'} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' addressstruct ')']<<}, Parse::RecDescent::_tracefirst($text), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{ADDRESSES}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{ADDRESSES}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{ADDRESSES}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::key { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"key"}; Parse::RecDescent::_trace(q{Trying rule: [key]}, Parse::RecDescent::_tracefirst($_[1]), q{key}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{key}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{key}); %item = (__RULE__ => q{key}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{key}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{key}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{key}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{key}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{key}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{key}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{key}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{key}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::rfc822message { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"rfc822message"}; Parse::RecDescent::_trace(q{Trying rule: [rfc822message]}, Parse::RecDescent::_tracefirst($_[1]), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{MESSAGE}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [MESSAGE RFC822]}, Parse::RecDescent::_tracefirst($_[1]), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{rfc822message}); %item = (__RULE__ => q{rfc822message}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [MESSAGE]}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::MESSAGE($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [MESSAGE]>>}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [MESSAGE]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $item{q{MESSAGE}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [RFC822]}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{RFC822})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFC822($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [RFC822]>>}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [RFC822]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $item{q{RFC822}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "MESSAGE RFC822" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [MESSAGE RFC822]<<}, Parse::RecDescent::_tracefirst($text), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{rfc822message}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{rfc822message}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{rfc822message}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{rfc822message}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bcc { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bcc"}; Parse::RecDescent::_trace(q{Trying rule: [bcc]}, Parse::RecDescent::_tracefirst($_[1]), q{bcc}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{bcc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bcc}); %item = (__RULE__ => q{bcc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($text), q{bcc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [ADDRESSES]>>}, Parse::RecDescent::_tracefirst($text), q{bcc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bcc}, $tracelevel) if defined $::RD_TRACE; $item{q{ADDRESSES}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<}, Parse::RecDescent::_tracefirst($text), q{bcc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bcc}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bcc}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bcc}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bcc}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodydisp"}; Parse::RecDescent::_trace(q{Trying rule: [bodydisp]}, Parse::RecDescent::_tracefirst($_[1]), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or KVPAIRS}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodydisp}); %item = (__RULE__ => q{bodydisp}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]}, Parse::RecDescent::_tracefirst($_[1]), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodydisp}); %item = (__RULE__ => q{bodydisp}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [KVPAIRS]>>}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $item{q{KVPAIRS}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<}, Parse::RecDescent::_tracefirst($text), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodydisp}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodydisp}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodydisp}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodydisp}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"KVPAIRS"}; Parse::RecDescent::_trace(q{Trying rule: [KVPAIRS]}, Parse::RecDescent::_tracefirst($_[1]), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' kvpair ')']}, Parse::RecDescent::_tracefirst($_[1]), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{KVPAIRS}); %item = (__RULE__ => q{KVPAIRS}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [kvpair]}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{kvpair})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::kvpair, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [kvpair]>>}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [kvpair]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; $item{q{kvpair(s)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { map { (%$_) } @{$item{'kvpair(s)'}} } }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' kvpair ')']<<}, Parse::RecDescent::_tracefirst($text), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{KVPAIRS}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{KVPAIRS}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{KVPAIRS}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5 { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodyMD5"}; Parse::RecDescent::_trace(q{Trying rule: [bodyMD5]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodyMD5}); %item = (__RULE__ => q{bodyMD5}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodyMD5}); %item = (__RULE__ => q{bodyMD5}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodyMD5}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodyMD5}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodyMD5}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"part"}; Parse::RecDescent::_trace(q{Trying rule: [part]}, Parse::RecDescent::_tracefirst($_[1]), q{part}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{multipart, or textmessage, or nestedmessage, or othertypemessage}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [multipart]}, Parse::RecDescent::_tracefirst($_[1]), q{part}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{part}); %item = (__RULE__ => q{part}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [multipart]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::multipart($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [multipart]>>}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [multipart]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $item{q{multipart}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = bless $item{multipart}, $mibs }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [multipart]<<}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [textmessage]}, Parse::RecDescent::_tracefirst($_[1]), q{part}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{part}); %item = (__RULE__ => q{part}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [textmessage]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textmessage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [textmessage]>>}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [textmessage]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $item{q{textmessage}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = bless $item{textmessage}, $mibs }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [textmessage]<<}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [nestedmessage]}, Parse::RecDescent::_tracefirst($_[1]), q{part}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{part}); %item = (__RULE__ => q{part}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [nestedmessage]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::nestedmessage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [nestedmessage]>>}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [nestedmessage]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $item{q{nestedmessage}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = bless $item{nestedmessage}, $mibs }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [nestedmessage]<<}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [othertypemessage]}, Parse::RecDescent::_tracefirst($_[1]), q{part}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{part}); %item = (__RULE__ => q{part}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [othertypemessage]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::othertypemessage($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [othertypemessage]>>}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [othertypemessage]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $item{q{othertypemessage}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = bless $item{othertypemessage}, $mibs }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [othertypemessage]<<}, Parse::RecDescent::_tracefirst($text), q{part}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{part}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{part}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{part}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{part}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::TEXT { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"TEXT"}; Parse::RecDescent::_trace(q{Trying rule: [TEXT]}, Parse::RecDescent::_tracefirst($_[1]), q{TEXT}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^"TEXT"|^TEXT/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^"TEXT"|^TEXT/i]}, Parse::RecDescent::_tracefirst($_[1]), q{TEXT}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{TEXT}); %item = (__RULE__ => q{TEXT}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^"TEXT"|^TEXT/i]}, Parse::RecDescent::_tracefirst($text), q{TEXT}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"TEXT"|^TEXT)/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{TEXT}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "TEXT" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^"TEXT"|^TEXT/i]<<}, Parse::RecDescent::_tracefirst($text), q{TEXT}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{TEXT}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{TEXT}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{TEXT}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{TEXT}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::MESSAGE { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"MESSAGE"}; Parse::RecDescent::_trace(q{Trying rule: [MESSAGE]}, Parse::RecDescent::_tracefirst($_[1]), q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^"MESSAGE"|^MESSAGE/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^"MESSAGE"|^MESSAGE/i]}, Parse::RecDescent::_tracefirst($_[1]), q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{MESSAGE}); %item = (__RULE__ => q{MESSAGE}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^"MESSAGE"|^MESSAGE/i]}, Parse::RecDescent::_tracefirst($text), q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^"MESSAGE"|^MESSAGE)/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "MESSAGE"}; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^"MESSAGE"|^MESSAGE/i]<<}, Parse::RecDescent::_tracefirst($text), q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{MESSAGE}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{MESSAGE}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{MESSAGE}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::start { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"start"}; Parse::RecDescent::_trace(q{Trying rule: [start]}, Parse::RecDescent::_tracefirst($_[1]), q{start}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/.*?\\(.*?BODYSTRUCTURE \\(/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/.*?\\(.*?BODYSTRUCTURE \\(/i part /\\).*\\)\\r?\\n?/]}, Parse::RecDescent::_tracefirst($_[1]), q{start}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{start}); %item = (__RULE__ => q{start}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/.*?\\(.*?BODYSTRUCTURE \\(/i]}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*?\(.*?BODYSTRUCTURE \()/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying repeated subrule: [part]}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{part})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part, 1, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [part]>>}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [part]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; $item{q{part(1)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: [/\\).*\\)\\r?\\n?/]}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{/\\).*\\)\\r?\\n?/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\).*\)\r?\n?)/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{'part(1)'}[0] }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/.*?\\(.*?BODYSTRUCTURE \\(/i part /\\).*\\)\\r?\\n?/]<<}, Parse::RecDescent::_tracefirst($text), q{start}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{start}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{start}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{start}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{start}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::addressstruct { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"addressstruct"}; Parse::RecDescent::_trace(q{Trying rule: [addressstruct]}, Parse::RecDescent::_tracefirst($_[1]), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' personalname sourceroute mailboxname hostname ')']}, Parse::RecDescent::_tracefirst($_[1]), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{addressstruct}); %item = (__RULE__ => q{addressstruct}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [personalname]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{personalname})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::personalname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [personalname]>>}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [personalname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $item{q{personalname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [sourceroute]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{sourceroute})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sourceroute($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [sourceroute]>>}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [sourceroute]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $item{q{sourceroute}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [mailboxname]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{mailboxname})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::mailboxname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [mailboxname]>>}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [mailboxname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $item{q{mailboxname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [hostname]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{hostname})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::hostname($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [hostname]>>}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [hostname]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $item{q{hostname}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { bless { personalname => $item{personalname} , sourceroute => $item{sourceroute} , mailboxname => $item{mailboxname} , hostname => $item{hostname} }, 'Mail::IMAPClient::BodyStructure::Address'; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' personalname sourceroute mailboxname hostname ')']<<}, Parse::RecDescent::_tracefirst($text), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{addressstruct}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{addressstruct}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{addressstruct}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{addressstruct}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::date { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"date"}; Parse::RecDescent::_trace(q{Trying rule: [date]}, Parse::RecDescent::_tracefirst($_[1]), q{date}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{date}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{date}); %item = (__RULE__ => q{date}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{date}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{date}); %item = (__RULE__ => q{date}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{date}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{date}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{date}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{date}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{date}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::hostname { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"hostname"}; Parse::RecDescent::_trace(q{Trying rule: [hostname]}, Parse::RecDescent::_tracefirst($_[1]), q{hostname}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{hostname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{hostname}); %item = (__RULE__ => q{hostname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{hostname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{hostname}); %item = (__RULE__ => q{hostname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{hostname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{hostname}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{hostname}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{hostname}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{hostname}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::HTML { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"HTML"}; Parse::RecDescent::_trace(q{Trying rule: [HTML]}, Parse::RecDescent::_tracefirst($_[1]), q{HTML}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/"HTML"|HTML/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/"HTML"|HTML/i]}, Parse::RecDescent::_tracefirst($_[1]), q{HTML}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{HTML}); %item = (__RULE__ => q{HTML}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/"HTML"|HTML/i]}, Parse::RecDescent::_tracefirst($text), q{HTML}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:"HTML"|HTML)/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{HTML}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "HTML" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/"HTML"|HTML/i]<<}, Parse::RecDescent::_tracefirst($text), q{HTML}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{HTML}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{HTML}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{HTML}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{HTML}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::kvpair { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"kvpair"}; Parse::RecDescent::_trace(q{Trying rule: [kvpair]}, Parse::RecDescent::_tracefirst($_[1]), q{kvpair}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{')'}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [')' key value]}, Parse::RecDescent::_tracefirst($_[1]), q{kvpair}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{kvpair}); %item = (__RULE__ => q{kvpair}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); $_savetext = $text; if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $_savetext; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; $text = $_savetext; Parse::RecDescent::_trace(q{Trying subrule: [key]}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{key})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::key($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [key]>>}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [key]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; $item{q{key}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [value]}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{value})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::value($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [value]>>}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [value]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; $item{q{value}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { $item{key} => $item{value} } }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [')' key value]<<}, Parse::RecDescent::_tracefirst($text), q{kvpair}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{kvpair}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{kvpair}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{kvpair}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{kvpair}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::replyto { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"replyto"}; Parse::RecDescent::_trace(q{Trying rule: [replyto]}, Parse::RecDescent::_tracefirst($_[1]), q{replyto}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{replyto}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{replyto}); %item = (__RULE__ => q{replyto}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($text), q{replyto}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [ADDRESSES]>>}, Parse::RecDescent::_tracefirst($text), q{replyto}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{replyto}, $tracelevel) if defined $::RD_TRACE; $item{q{ADDRESSES}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<}, Parse::RecDescent::_tracefirst($text), q{replyto}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{replyto}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{replyto}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{replyto}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{replyto}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::mailboxname { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"mailboxname"}; Parse::RecDescent::_trace(q{Trying rule: [mailboxname]}, Parse::RecDescent::_tracefirst($_[1]), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{mailboxname}); %item = (__RULE__ => q{mailboxname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{mailboxname}); %item = (__RULE__ => q{mailboxname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{mailboxname}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{mailboxname}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{mailboxname}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{mailboxname}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::basicfields { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"basicfields"}; Parse::RecDescent::_trace(q{Trying rule: [basicfields]}, Parse::RecDescent::_tracefirst($_[1]), q{basicfields}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{bodysubtype}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [bodysubtype bodyparms bodyid bodydesc bodyenc bodysize]}, Parse::RecDescent::_tracefirst($_[1]), q{basicfields}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{basicfields}); %item = (__RULE__ => q{basicfields}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [bodysubtype]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysubtype($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodysubtype]>>}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodysubtype]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $item{q{bodysubtype}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyparms]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyparms})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyparms]>>}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyparms]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyparms(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyid]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyid})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyid, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyid]>>}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyid]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyid(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydesc]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodydesc})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydesc, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodydesc]>>}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydesc]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $item{q{bodydesc(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyenc]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyenc})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyenc, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyenc]>>}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyenc]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyenc(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodysize]}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodysize})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysize, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodysize]>>}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodysize]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $item{q{bodysize(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { bodysubtype => $item{bodysubtype} }; take_optional_items($return, \%item, qw/bodyparms bodyid bodydesc bodyenc bodysize/); 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [bodysubtype bodyparms bodyid bodydesc bodyenc bodysize]<<}, Parse::RecDescent::_tracefirst($text), q{basicfields}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{basicfields}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{basicfields}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{basicfields}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{basicfields}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysize { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodysize"}; Parse::RecDescent::_trace(q{Trying rule: [bodysize]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysize}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/[()]/, or NUMBER}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/[()]/ NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysize}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodysize}); %item = (__RULE__ => q{bodysize}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/[()]/]}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); $_savetext = $text; if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[()])/) { $text = $_savetext; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; $text = $_savetext; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{NIL})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [/[()]/ NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NUMBER]}, Parse::RecDescent::_tracefirst($_[1]), q{bodysize}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodysize}); %item = (__RULE__ => q{bodysize}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NUMBER]}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NUMBER]>>}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NUMBER]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; $item{q{NUMBER}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NUMBER]<<}, Parse::RecDescent::_tracefirst($text), q{bodysize}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodysize}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodysize}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodysize}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodysize}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::othertypemessage { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"othertypemessage"}; Parse::RecDescent::_trace(q{Trying rule: [othertypemessage]}, Parse::RecDescent::_tracefirst($_[1]), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{bodytype}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [bodytype basicfields bodyMD5 bodydisp bodylang bodyextra]}, Parse::RecDescent::_tracefirst($_[1]), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{othertypemessage}); %item = (__RULE__ => q{othertypemessage}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [bodytype]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodytype($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodytype]>>}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodytype]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodytype}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [basicfields]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{basicfields})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::basicfields($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [basicfields]>>}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [basicfields]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $item{q{basicfields}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyMD5]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyMD5})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyMD5]>>}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyMD5]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyMD5(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodydisp})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodydisp]>>}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodydisp(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodylang})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodylang]>>}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodylang(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyextra})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyextra]>>}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyextra(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = { bodytype => $item{bodytype} }; take_optional_items($return, \%item , qw/bodyMD5 bodydisp bodylang bodyextra/ ); merge_hash($return, $item{basicfields}); 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [bodytype basicfields bodyMD5 bodydisp bodylang bodyextra]<<}, Parse::RecDescent::_tracefirst($text), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{othertypemessage}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{othertypemessage}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{othertypemessage}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydesc { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodydesc"}; Parse::RecDescent::_trace(q{Trying rule: [bodydesc]}, Parse::RecDescent::_tracefirst($_[1]), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/[()]/, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/[()]/ NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodydesc}); %item = (__RULE__ => q{bodydesc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/[()]/]}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); $_savetext = $text; if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[()])/) { $text = $_savetext; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; $text = $_savetext; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{NIL})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [/[()]/ NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodydesc}); %item = (__RULE__ => q{bodydesc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodydesc}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodydesc}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodydesc}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodydesc}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyenc { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodyenc"}; Parse::RecDescent::_trace(q{Trying rule: [bodyenc]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING, or KVPAIRS}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodyenc}); %item = (__RULE__ => q{bodyenc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodyenc}); %item = (__RULE__ => q{bodyenc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{bodyenc}); %item = (__RULE__ => q{bodyenc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [KVPAIRS]>>}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $item{q{KVPAIRS}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<}, Parse::RecDescent::_tracefirst($text), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodyenc}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodyenc}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodyenc}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodyenc}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"STRING"}; Parse::RecDescent::_trace(q{Trying rule: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{STRING}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{DOUBLE_QUOTED_STRING, or SINGLE_QUOTED_STRING, or BARESTRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [DOUBLE_QUOTED_STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{STRING}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{STRING}); %item = (__RULE__ => q{STRING}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [DOUBLE_QUOTED_STRING]}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::DOUBLE_QUOTED_STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [DOUBLE_QUOTED_STRING]>>}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [DOUBLE_QUOTED_STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $item{q{DOUBLE_QUOTED_STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [DOUBLE_QUOTED_STRING]<<}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [SINGLE_QUOTED_STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{STRING}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{STRING}); %item = (__RULE__ => q{STRING}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [SINGLE_QUOTED_STRING]}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::SINGLE_QUOTED_STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [SINGLE_QUOTED_STRING]>>}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [SINGLE_QUOTED_STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $item{q{SINGLE_QUOTED_STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [SINGLE_QUOTED_STRING]<<}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [BARESTRING]}, Parse::RecDescent::_tracefirst($_[1]), q{STRING}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{STRING}); %item = (__RULE__ => q{STRING}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [BARESTRING]}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::BARESTRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [BARESTRING]>>}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [BARESTRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $item{q{BARESTRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [BARESTRING]<<}, Parse::RecDescent::_tracefirst($text), q{STRING}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{STRING}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{STRING}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{STRING}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{STRING}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelope { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"envelope"}; Parse::RecDescent::_trace(q{Trying rule: [envelope]}, Parse::RecDescent::_tracefirst($_[1]), q{envelope}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/.*?\\(.*?ENVELOPE/}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/.*?\\(.*?ENVELOPE/ envelopestruct /.*\\)/]}, Parse::RecDescent::_tracefirst($_[1]), q{envelope}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{envelope}); %item = (__RULE__ => q{envelope}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/.*?\\(.*?ENVELOPE/]}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*?\(.*?ENVELOPE)/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying subrule: [envelopestruct]}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{envelopestruct})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelopestruct($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [envelopestruct]>>}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [envelopestruct]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; $item{q{envelopestruct}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying terminal: [/.*\\)/]}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{/.*\\)/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*\))/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{envelopestruct} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/.*?\\(.*?ENVELOPE/ envelopestruct /.*\\)/]<<}, Parse::RecDescent::_tracefirst($text), q{envelope}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{envelope}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{envelope}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{envelope}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{envelope}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::to { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"to"}; Parse::RecDescent::_trace(q{Trying rule: [to]}, Parse::RecDescent::_tracefirst($_[1]), q{to}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{to}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{to}); %item = (__RULE__ => q{to}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($text), q{to}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [ADDRESSES]>>}, Parse::RecDescent::_tracefirst($text), q{to}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{to}, $tracelevel) if defined $::RD_TRACE; $item{q{ADDRESSES}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<}, Parse::RecDescent::_tracefirst($text), q{to}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{to}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{to}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{to}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{to}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textlines { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"textlines"}; Parse::RecDescent::_trace(q{Trying rule: [textlines]}, Parse::RecDescent::_tracefirst($_[1]), q{textlines}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or NUMBER}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{textlines}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{textlines}); %item = (__RULE__ => q{textlines}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NUMBER]}, Parse::RecDescent::_tracefirst($_[1]), q{textlines}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{textlines}); %item = (__RULE__ => q{textlines}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NUMBER]}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NUMBER]>>}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NUMBER]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; $item{q{NUMBER}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NUMBER]<<}, Parse::RecDescent::_tracefirst($text), q{textlines}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{textlines}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{textlines}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{textlines}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{textlines}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::nestedmessage { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"nestedmessage"}; Parse::RecDescent::_trace(q{Trying rule: [nestedmessage]}, Parse::RecDescent::_tracefirst($_[1]), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{rfc822message}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [rfc822message <commit> bodyparms bodyid bodydesc bodyenc bodysize envelopestruct bodystructure textlines bodyMD5 bodydisp bodylang bodyextra]}, Parse::RecDescent::_tracefirst($_[1]), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{nestedmessage}); %item = (__RULE__ => q{nestedmessage}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [rfc822message]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::rfc822message($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [rfc822message]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [rfc822message]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{rfc822message}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: [<commit>]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $_tok = do { $commit = 1 }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<<Didn't match directive>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [bodyparms]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bodyparms})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodyparms]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodyparms]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyparms}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [bodyid]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bodyid})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyid($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodyid]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodyid]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyid}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [bodydesc]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bodydesc})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydesc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodydesc]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodydesc]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodydesc}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [bodyenc]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bodyenc})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyenc($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodyenc]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodyenc]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyenc}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying subrule: [bodysize]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{bodysize})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodysize($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [bodysize]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [bodysize]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodysize}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [envelopestruct]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{envelopestruct})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::envelopestruct, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [envelopestruct]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [envelopestruct]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{envelopestruct(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodystructure]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodystructure})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodystructure, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodystructure]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodystructure]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodystructure(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [textlines]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{textlines})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textlines, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [textlines]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [textlines]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{textlines(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyMD5]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyMD5})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyMD5]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyMD5]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyMD5(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodydisp})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodydisp]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodydisp(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodylang})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodylang]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodylang(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyextra})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyextra]>>}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyextra(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = {}; $return->{$_} = $item{$_} for qw/bodyparms bodyid bodydesc bodyenc bodysize/; # envelopestruct bodystructure textlines/; take_optional_items($return, \%item , qw/envelopestruct bodystructure textlines/ , qw/bodyMD5 bodydisp bodylang bodyextra/); merge_hash($return, $item{bodystructure}[0]); merge_hash($return, $item{basicfields}); $return->{bodytype} = "MESSAGE" ; $return->{bodysubtype} = "RFC822" ; 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [rfc822message <commit> bodyparms bodyid bodydesc bodyenc bodysize envelopestruct bodystructure textlines bodyMD5 bodydisp bodylang bodyextra]<<}, Parse::RecDescent::_tracefirst($text), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{nestedmessage}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{nestedmessage}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{nestedmessage}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sender { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"sender"}; Parse::RecDescent::_trace(q{Trying rule: [sender]}, Parse::RecDescent::_tracefirst($_[1]), q{sender}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{sender}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{sender}); %item = (__RULE__ => q{sender}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($text), q{sender}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [ADDRESSES]>>}, Parse::RecDescent::_tracefirst($text), q{sender}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{sender}, $tracelevel) if defined $::RD_TRACE; $item{q{ADDRESSES}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<}, Parse::RecDescent::_tracefirst($text), q{sender}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{sender}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{sender}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{sender}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{sender}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::SINGLE_QUOTED_STRING { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"SINGLE_QUOTED_STRING"}; Parse::RecDescent::_trace(q{Trying rule: [SINGLE_QUOTED_STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'''}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [''' /(?:\\\\['\\\\]|[^'])*/ ''']}, Parse::RecDescent::_tracefirst($_[1]), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{SINGLE_QUOTED_STRING}); %item = (__RULE__ => q{SINGLE_QUOTED_STRING}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [''']}, Parse::RecDescent::_tracefirst($text), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying terminal: [/(?:\\\\['\\\\]|[^'])*/]}, Parse::RecDescent::_tracefirst($text), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{/(?:\\\\['\\\\]|[^'])*/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:(?:\\['\\]|[^'])*)/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying terminal: [''']}, Parse::RecDescent::_tracefirst($text), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{'''})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "'"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{__PATTERN1__} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [''' /(?:\\\\['\\\\]|[^'])*/ ''']<<}, Parse::RecDescent::_tracefirst($text), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{SINGLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{SINGLE_QUOTED_STRING}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{SINGLE_QUOTED_STRING}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodystructure { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodystructure"}; Parse::RecDescent::_trace(q{Trying rule: [bodystructure]}, Parse::RecDescent::_tracefirst($_[1]), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' part ')']}, Parse::RecDescent::_tracefirst($_[1]), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodystructure}); %item = (__RULE__ => q{bodystructure}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [part]}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{part})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::part, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [part]>>}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [part]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; $item{q{part(s)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{'part(s)'} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' part ')']<<}, Parse::RecDescent::_tracefirst($text), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodystructure}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodystructure}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodystructure}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodystructure}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRINGS { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"STRINGS"}; Parse::RecDescent::_trace(q{Trying rule: [STRINGS]}, Parse::RecDescent::_tracefirst($_[1]), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'('}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['(' STRING ')']}, Parse::RecDescent::_tracefirst($_[1]), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{STRINGS}); %item = (__RULE__ => q{STRINGS}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['(']}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "("; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{STRING})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING, 1, 100000000, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [STRING]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING(s)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying terminal: [')']}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{')'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = ")"; 1 } and substr($text,0,length($_tok)) eq $_tok and do { substr($text,0,length($_tok)) = ""; 1; } ) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{'STRING(s)'} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['(' STRING ')']<<}, Parse::RecDescent::_tracefirst($text), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{STRINGS}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{STRINGS}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{STRINGS}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{STRINGS}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::BARESTRING { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"BARESTRING"}; Parse::RecDescent::_trace(q{Trying rule: [BARESTRING]}, Parse::RecDescent::_tracefirst($_[1]), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^[)('"]/}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^[)('"]/ /^(?!\\(|\\))(?:\\\\ |\\S)+/]}, Parse::RecDescent::_tracefirst($_[1]), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{BARESTRING}); %item = (__RULE__ => q{BARESTRING}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^[)('"]/]}, Parse::RecDescent::_tracefirst($text), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); $_savetext = $text; if ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^[)('"])/) { $text = $_savetext; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; $text = $_savetext; Parse::RecDescent::_trace(q{Trying terminal: [/^(?!\\(|\\))(?:\\\\ |\\S)+/]}, Parse::RecDescent::_tracefirst($text), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{/^(?!\\(|\\))(?:\\\\ |\\S)+/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^(?!\(|\))(?:\\ |\S)+)/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN2__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{__PATTERN1__} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^[)('"]/ /^(?!\\(|\\))(?:\\\\ |\\S)+/]<<}, Parse::RecDescent::_tracefirst($text), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{BARESTRING}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{BARESTRING}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{BARESTRING}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyparms { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodyparms"}; Parse::RecDescent::_trace(q{Trying rule: [bodyparms]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or KVPAIRS}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodyparms}); %item = (__RULE__ => q{bodyparms}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodyparms}); %item = (__RULE__ => q{bodyparms}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [KVPAIRS]>>}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $item{q{KVPAIRS}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<}, Parse::RecDescent::_tracefirst($text), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodyparms}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodyparms}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodyparms}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodyparms}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::DOUBLE_QUOTED_STRING { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"DOUBLE_QUOTED_STRING"}; Parse::RecDescent::_trace(q{Trying rule: [DOUBLE_QUOTED_STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{'"'}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: ['"' /(?:\\\\["\\\\]|[^"])*/ '"']}, Parse::RecDescent::_tracefirst($_[1]), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{DOUBLE_QUOTED_STRING}); %item = (__RULE__ => q{DOUBLE_QUOTED_STRING}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: ['"']}, Parse::RecDescent::_tracefirst($text), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\"/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING1__}=$current_match; Parse::RecDescent::_trace(q{Trying terminal: [/(?:\\\\["\\\\]|[^"])*/]}, Parse::RecDescent::_tracefirst($text), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{/(?:\\\\["\\\\]|[^"])*/})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:(?:\\["\\]|[^"])*)/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying terminal: ['"']}, Parse::RecDescent::_tracefirst($text), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{'"'})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\"/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(qq{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__STRING2__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{__PATTERN1__} }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: ['"' /(?:\\\\["\\\\]|[^"])*/ '"']<<}, Parse::RecDescent::_tracefirst($text), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{DOUBLE_QUOTED_STRING}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{DOUBLE_QUOTED_STRING}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{DOUBLE_QUOTED_STRING}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::sourceroute { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"sourceroute"}; Parse::RecDescent::_trace(q{Trying rule: [sourceroute]}, Parse::RecDescent::_tracefirst($_[1]), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{sourceroute}); %item = (__RULE__ => q{sourceroute}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{sourceroute}); %item = (__RULE__ => q{sourceroute}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{sourceroute}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{sourceroute}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{sourceroute}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{sourceroute}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodytype { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodytype"}; Parse::RecDescent::_trace(q{Trying rule: [bodytype]}, Parse::RecDescent::_tracefirst($_[1]), q{bodytype}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodytype}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodytype}); %item = (__RULE__ => q{bodytype}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodytype}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodytype}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodytype}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodytype}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodytype}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodytype}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodytype}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodytype}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::messageid { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"messageid"}; Parse::RecDescent::_trace(q{Trying rule: [messageid]}, Parse::RecDescent::_tracefirst($_[1]), q{messageid}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{messageid}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{messageid}); %item = (__RULE__ => q{messageid}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{messageid}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{messageid}); %item = (__RULE__ => q{messageid}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{messageid}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{messageid}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{messageid}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{messageid}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{messageid}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::value { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"value"}; Parse::RecDescent::_trace(q{Trying rule: [value]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or NUMBER, or STRING, or KVPAIRS}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{value}); %item = (__RULE__ => q{value}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NUMBER]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{value}); %item = (__RULE__ => q{value}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NUMBER]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NUMBER]>>}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NUMBER]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $item{q{NUMBER}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NUMBER]<<}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{value}); %item = (__RULE__ => q{value}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [KVPAIRS]}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[3]; $text = $_[1]; my $_savetext; @item = (q{value}); %item = (__RULE__ => q{value}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [KVPAIRS]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::KVPAIRS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [KVPAIRS]>>}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [KVPAIRS]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $item{q{KVPAIRS}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [KVPAIRS]<<}, Parse::RecDescent::_tracefirst($text), q{value}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{value}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{value}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{value}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{value}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::personalname { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"personalname"}; Parse::RecDescent::_trace(q{Trying rule: [personalname]}, Parse::RecDescent::_tracefirst($_[1]), q{personalname}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{personalname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{personalname}); %item = (__RULE__ => q{personalname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{personalname}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{personalname}); %item = (__RULE__ => q{personalname}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{personalname}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{personalname}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{personalname}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{personalname}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{personalname}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::cc { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"cc"}; Parse::RecDescent::_trace(q{Trying rule: [cc]}, Parse::RecDescent::_tracefirst($_[1]), q{cc}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{ADDRESSES}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [ADDRESSES]}, Parse::RecDescent::_tracefirst($_[1]), q{cc}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{cc}); %item = (__RULE__ => q{cc}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [ADDRESSES]}, Parse::RecDescent::_tracefirst($text), q{cc}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::ADDRESSES($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [ADDRESSES]>>}, Parse::RecDescent::_tracefirst($text), q{cc}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [ADDRESSES]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{cc}, $tracelevel) if defined $::RD_TRACE; $item{q{ADDRESSES}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [ADDRESSES]<<}, Parse::RecDescent::_tracefirst($text), q{cc}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{cc}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{cc}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{cc}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{cc}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NUMBER { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"NUMBER"}; Parse::RecDescent::_trace(q{Trying rule: [NUMBER]}, Parse::RecDescent::_tracefirst($_[1]), q{NUMBER}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^(\\d+)/}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^(\\d+)/]}, Parse::RecDescent::_tracefirst($_[1]), q{NUMBER}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{NUMBER}); %item = (__RULE__ => q{NUMBER}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^(\\d+)/]}, Parse::RecDescent::_tracefirst($text), q{NUMBER}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^(\d+))/) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{NUMBER}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item[1] }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^(\\d+)/]<<}, Parse::RecDescent::_tracefirst($text), q{NUMBER}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{NUMBER}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{NUMBER}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{NUMBER}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{NUMBER}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textmessage { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"textmessage"}; Parse::RecDescent::_trace(q{Trying rule: [textmessage]}, Parse::RecDescent::_tracefirst($_[1]), q{textmessage}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{TEXT}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [TEXT <commit> basicfields textlines bodyMD5 bodydisp bodylang bodyextra]}, Parse::RecDescent::_tracefirst($_[1]), q{textmessage}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{textmessage}); %item = (__RULE__ => q{textmessage}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [TEXT]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::TEXT($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [TEXT]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [TEXT]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{TEXT}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying directive: [<commit>]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $_tok = do { $commit = 1 }; if (defined($_tok)) { Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } else { Parse::RecDescent::_trace(q{<<Didn't match directive>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; } last unless defined $_tok; push @item, $item{__DIRECTIVE1__}=$_tok; Parse::RecDescent::_trace(q{Trying subrule: [basicfields]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{basicfields})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::basicfields($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [basicfields]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [basicfields]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{basicfields}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{Trying repeated subrule: [textlines]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{textlines})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::textlines, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [textlines]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [textlines]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{textlines(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyMD5]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyMD5})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyMD5, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyMD5]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyMD5]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyMD5(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodydisp]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodydisp})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodydisp, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodydisp]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodydisp]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodydisp(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodylang]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodylang})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodylang, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodylang]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodylang]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodylang(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying repeated subrule: [bodyextra]}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $expectation->is(q{bodyextra})->at($text); unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra, 0, 1, $_noactions,$expectation,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [bodyextra]>>}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched repeated subrule: [bodyextra]<< (} . @$_tok . q{ times)}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $item{q{bodyextra(?)}} = $_tok; push @item, $_tok; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = $item{basicfields} || {}; $return->{bodytype} = 'TEXT'; take_optional_items($return, \%item , qw/textlines bodyMD5 bodydisp bodylang bodyextra/); 1; }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [TEXT <commit> basicfields textlines bodyMD5 bodydisp bodylang bodyextra]<<}, Parse::RecDescent::_tracefirst($text), q{textmessage}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{textmessage}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{textmessage}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{textmessage}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{textmessage}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::RFCNONCOMPLY { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"RFCNONCOMPLY"}; Parse::RecDescent::_trace(q{Trying rule: [RFCNONCOMPLY]}, Parse::RecDescent::_tracefirst($_[1]), q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{/^\\(\\)/i}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [/^\\(\\)/i]}, Parse::RecDescent::_tracefirst($_[1]), q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{RFCNONCOMPLY}); %item = (__RULE__ => q{RFCNONCOMPLY}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying terminal: [/^\\(\\)/i]}, Parse::RecDescent::_tracefirst($text), q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; undef $lastsep; $expectation->is(q{})->at($text); unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^\(\))/i) { $text = $lastsep . $text if defined $lastsep; $expectation->failed(); Parse::RecDescent::_trace(q{<<Didn't match terminal>>}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; last; } $current_match = substr($text, $-[0], $+[0] - $-[0]); substr($text,0,length($current_match),q{}); Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [} . $current_match . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $item{__PATTERN1__}=$current_match; Parse::RecDescent::_trace(q{Trying action}, Parse::RecDescent::_tracefirst($text), q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; $_tok = ($_noactions) ? 0 : do { $return = "NIL" }; unless (defined $_tok) { Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])}) if defined $::RD_TRACE; last; } Parse::RecDescent::_trace(q{>>Matched action<< (return value: [} . $_tok . q{])}, Parse::RecDescent::_tracefirst($text)) if defined $::RD_TRACE; push @item, $_tok; $item{__ACTION1__}=$_tok; Parse::RecDescent::_trace(q{>>Matched production: [/^\\(\\)/i]<<}, Parse::RecDescent::_tracefirst($text), q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{RFCNONCOMPLY}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{RFCNONCOMPLY}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{RFCNONCOMPLY}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::subject { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"subject"}; Parse::RecDescent::_trace(q{Trying rule: [subject]}, Parse::RecDescent::_tracefirst($_[1]), q{subject}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{subject}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{subject}); %item = (__RULE__ => q{subject}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{subject}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{subject}); %item = (__RULE__ => q{subject}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{subject}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{subject}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{subject}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{subject}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{subject}, $tracelevel) } $_[1] = $text; return $return; } # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos) sub Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::bodyextra { my $thisparser = $_[0]; use vars q{$tracelevel}; local $tracelevel = ($tracelevel||0)+1; $ERRORS = 0; my $thisrule = $thisparser->{"rules"}{"bodyextra"}; Parse::RecDescent::_trace(q{Trying rule: [bodyextra]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; my $def_at = @{$thisparser->{deferred}}; my $err_at = @{$thisparser->{errors}}; my $score; my $score_return; my $_tok; my $return = undef; my $_matched=0; my $commit=0; my @item = (); my %item = (); my $repeating = $_[2]; my $_noactions = $_[3]; my @arg = defined $_[4] ? @{ &{$_[4]} } : (); my $_itempos = $_[5]; my %arg = ($#arg & 01) ? @arg : (@arg, undef); my $text; my $lastsep; my $current_match; my $expectation = new Parse::RecDescent::Expectation(q{NIL, or STRING, or STRINGS}); $expectation->at($_[1]); my $thisline; tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [NIL]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[0]; $text = $_[1]; my $_savetext; @item = (q{bodyextra}); %item = (__RULE__ => q{bodyextra}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [NIL]}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::NIL($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [NIL]>>}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [NIL]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $item{q{NIL}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [NIL]<<}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRING]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[1]; $text = $_[1]; my $_savetext; @item = (q{bodyextra}); %item = (__RULE__ => q{bodyextra}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRING]}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRING($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRING]>>}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRING]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $item{q{STRING}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRING]<<}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; while (!$_matched && !$commit) { Parse::RecDescent::_trace(q{Trying production: [STRINGS]}, Parse::RecDescent::_tracefirst($_[1]), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; my $thisprod = $thisrule->{"prods"}[2]; $text = $_[1]; my $_savetext; @item = (q{bodyextra}); %item = (__RULE__ => q{bodyextra}); my $repcount = 0; Parse::RecDescent::_trace(q{Trying subrule: [STRINGS]}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; if (1) { no strict qw{refs}; $expectation->is(q{})->at($text); unless (defined ($_tok = Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse::STRINGS($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef))) { Parse::RecDescent::_trace(q{<<Didn't match subrule: [STRINGS]>>}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $expectation->failed(); last; } Parse::RecDescent::_trace(q{>>Matched subrule: [STRINGS]<< (return value: [} . $_tok . q{]}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $item{q{STRINGS}} = $_tok; push @item, $_tok; } Parse::RecDescent::_trace(q{>>Matched production: [STRINGS]<<}, Parse::RecDescent::_tracefirst($text), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $_matched = 1; last; } splice @{$thisparser->{deferred}}, $def_at unless $_matched; unless ( $_matched || defined($score) ) { splice @{$thisparser->{deferred}}, $def_at; $_[1] = $text; # NOT SURE THIS IS NEEDED Parse::RecDescent::_trace(q{<<Didn't match rule>>}, Parse::RecDescent::_tracefirst($_[1]), q{bodyextra}, $tracelevel) if defined $::RD_TRACE; return undef; } if (!defined($return) && defined($score)) { Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "", q{bodyextra}, $tracelevel) if defined $::RD_TRACE; $return = $score_return; } splice @{$thisparser->{errors}}, $err_at; $return = $item[$#item] unless defined $return; if (defined $::RD_TRACE) { Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} . $return . q{])}, "", q{bodyextra}, $tracelevel); Parse::RecDescent::_trace(q{(consumed: [} . Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])}, Parse::RecDescent::_tracefirst($text), , q{bodyextra}, $tracelevel) } $_[1] = $text; return $return; } } package Mail::IMAPClient::BodyStructure::Parse; sub new { my $self = bless( { 'localvars' => '', 'startcode' => '', 'rules' => { 'envelopestruct' => bless( { 'calls' => [ 'date', 'subject', 'from', 'sender', 'replyto', 'to', 'cc', 'bcc', 'inreplyto', 'messageid' ], 'prods' => [ bless( { 'error' => undef, 'number' => 0, 'patcount' => 0, 'line' => undef, 'items' => [ bless( { 'lookahead' => 0, 'pattern' => '(', 'line' => 105, 'description' => '\'(\'', 'hashname' => '__STRING1__' }, 'Parse::RecDescent::InterpLit' ), bless( { 'line' => 105, 'implicit' => undef, 'subrule' => 'date', 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'lookahead' => 0, 'line' => 105, 'implicit' => undef, 'subrule' => 'subject', 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'implicit' => undef, 'line' => 105, 'subrule' => 'from', 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'line' => 105, 'subrule' => 'sender', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'lookahead' => 0, 'implicit' => undef, 'line' => 105, 'subrule' => 'replyto', 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'subrule' => 'to', 'implicit' => undef, 'line' => 105, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'argcode' => undef, 'subrule' => 'cc', 'implicit' => undef, 'line' => 105, 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'implicit' => undef, 'subrule' => 'bcc', 'line' => 106, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'lookahead' => 0, 'line' => 106, 'implicit' => undef, 'subrule' => 'inreplyto', 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'line' => 106, 'subrule' => 'messageid', 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'description' => '\')\'', 'hashname' => '__STRING2__', 'lookahead' => 0, 'line' => 106, 'pattern' => ')' }, 'Parse::RecDescent::InterpLit' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = bless {}, "Mail::IMAPClient::BodyStructure::Envelope"; $return->{$_} = $item{$_} for qw/date subject from sender replyto to cc/ , qw/bcc inreplyto messageid/; 1; }', 'line' => 107, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'strcount' => 2, 'uncommit' => undef, 'actcount' => 1 }, 'Parse::RecDescent::Production' ) ], 'line' => 105, 'opcount' => 0, 'name' => 'envelopestruct', 'changed' => 0, 'impcount' => 0, 'vars' => '' }, 'Parse::RecDescent::Rule' ), 'subpart' => bless( { 'name' => 'subpart', 'opcount' => 0, 'changed' => 0, 'impcount' => 0, 'vars' => '', 'line' => 175, 'prods' => [ bless( { 'actcount' => 1, 'uncommit' => undef, 'items' => [ bless( { 'hashname' => '__STRING1__', 'description' => '\'(\'', 'line' => 175, 'pattern' => '(', 'lookahead' => 0 }, 'Parse::RecDescent::InterpLit' ), bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'part', 'line' => 175, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'line' => 175, 'pattern' => ')', 'lookahead' => 0, 'hashname' => '__STRING2__', 'description' => '\')\'' }, 'Parse::RecDescent::InterpLit' ), bless( { 'line' => 175, 'lookahead' => 0, 'hashname' => '__ACTION1__', 'code' => '{$return = $item{part}}' }, 'Parse::RecDescent::Action' ), bless( { 'line' => 175, 'lookahead' => 0, 'code' => 'push @{$thisparser->{deferred}}, sub { ++$subpartCount; };', 'hashname' => '__DIRECTIVE1__', 'name' => '<defer:{ ++$subpartCount; }>' }, 'Parse::RecDescent::Directive' ) ], 'dircount' => 1, 'line' => undef, 'strcount' => 2, 'number' => 0, 'patcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'part' ] }, 'Parse::RecDescent::Rule' ), 'NIL' => bless( { 'opcount' => 0, 'name' => 'NIL', 'changed' => 0, 'impcount' => 0, 'vars' => '', 'prods' => [ bless( { 'actcount' => 1, 'uncommit' => undef, 'strcount' => 0, 'dircount' => 0, 'line' => undef, 'items' => [ bless( { 'description' => '/^NIL/i', 'mod' => 'i', 'ldelim' => '/', 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'lookahead' => 0, 'line' => 34, 'pattern' => '^NIL' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = "NIL" }', 'lookahead' => 0, 'line' => 34 }, 'Parse::RecDescent::Action' ) ], 'patcount' => 1, 'number' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'line' => 34 }, 'Parse::RecDescent::Rule' ), 'PLAIN' => bless( { 'opcount' => 0, 'name' => 'PLAIN', 'impcount' => 0, 'changed' => 0, 'vars' => '', 'line' => 30, 'prods' => [ bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'strcount' => 0, 'line' => undef, 'dircount' => 0, 'items' => [ bless( { 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'pattern' => '^"PLAIN"|^PLAIN', 'line' => 30, 'lookahead' => 0, 'mod' => 'i', 'description' => '/^"PLAIN"|^PLAIN/i', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'lookahead' => 0, 'line' => 30, 'code' => '{ $return = "PLAIN" }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'patcount' => 1, 'number' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [] }, 'Parse::RecDescent::Rule' ), 'RFC822' => bless( { 'prods' => [ bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'strcount' => 0, 'items' => [ bless( { 'line' => 33, 'pattern' => '^"RFC822"|^RFC822', 'lookahead' => 0, 'rdelim' => '/', 'hashname' => '__PATTERN1__', 'ldelim' => '/', 'description' => '/^"RFC822"|^RFC822/i', 'mod' => 'i' }, 'Parse::RecDescent::Token' ), bless( { 'code' => '{ $return = "RFC822" }', 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 33 }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 0, 'patcount' => 1, 'number' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'line' => 33, 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'RFC822' }, 'Parse::RecDescent::Rule' ), 'bodysubtype' => bless( { 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'bodysubtype', 'line' => 54, 'prods' => [ bless( { 'error' => undef, 'line' => undef, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'subrule' => 'PLAIN', 'implicit' => undef, 'line' => 54, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'strcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'line' => 54, 'implicit' => undef, 'subrule' => 'HTML', 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 54, 'dircount' => 0, 'patcount' => 0, 'number' => 1, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 2, 'patcount' => 0, 'line' => 54, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'subrule' => 'NIL', 'implicit' => undef, 'line' => 54, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'strcount' => 0, 'line' => 54, 'items' => [ bless( { 'argcode' => undef, 'line' => 54, 'implicit' => undef, 'subrule' => 'STRING', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'patcount' => 0, 'number' => 3, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'PLAIN', 'HTML', 'NIL', 'STRING' ] }, 'Parse::RecDescent::Rule' ), 'from' => bless( { 'opcount' => 0, 'name' => 'from', 'vars' => '', 'impcount' => 0, 'changed' => 0, 'calls' => [ 'ADDRESSES' ], 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'subrule' => 'ADDRESSES', 'line' => 100, 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0 }, 'Parse::RecDescent::Production' ) ], 'line' => 100 }, 'Parse::RecDescent::Rule' ), 'multipart' => bless( { 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 1, 'number' => 0, 'patcount' => 0, 'line' => undef, 'dircount' => 2, 'items' => [ bless( { 'matchrule' => 0, 'expected' => undef, 'repspec' => 's', 'min' => 1, 'argcode' => undef, 'max' => 100000000, 'subrule' => 'subpart', 'line' => 162, 'lookahead' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'lookahead' => 0, 'line' => 162, 'name' => '<commit>', 'hashname' => '__DIRECTIVE1__', 'code' => '$commit = 1' }, 'Parse::RecDescent::Directive' ), bless( { 'argcode' => undef, 'lookahead' => 0, 'subrule' => 'bodysubtype', 'implicit' => undef, 'line' => 162, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'repspec' => '?', 'expected' => undef, 'matchrule' => 0, 'argcode' => undef, 'min' => 0, 'max' => 1, 'lookahead' => 0, 'line' => 163, 'subrule' => 'bodyparms' }, 'Parse::RecDescent::Repetition' ), bless( { 'min' => 0, 'argcode' => undef, 'matchrule' => 0, 'expected' => undef, 'repspec' => '?', 'line' => 163, 'subrule' => 'bodydisp', 'lookahead' => 0, 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'lookahead' => 0, 'line' => 163, 'subrule' => 'bodylang', 'repspec' => '?', 'expected' => undef, 'matchrule' => 0, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'lookahead' => 0, 'line' => 163, 'subrule' => 'bodyloc', 'expected' => undef, 'matchrule' => 0, 'repspec' => '?', 'min' => 0, 'argcode' => undef }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'subrule' => 'bodyextra', 'line' => 163, 'lookahead' => 0, 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'hashname' => '__DIRECTIVE2__', 'name' => '<defer:{ $subpartCount = 0 }>', 'code' => 'push @{$thisparser->{deferred}}, sub { $subpartCount = 0 };', 'line' => 164, 'lookahead' => 0 }, 'Parse::RecDescent::Directive' ), bless( { 'lookahead' => 0, 'line' => 165, 'hashname' => '__ACTION1__', 'code' => '{ $return = { bodysubtype => $item{bodysubtype} , bodytype => \'MULTIPART\' , bodystructure => $item{\'subpart(s)\'} }; take_optional_items($return, \\%item , qw/bodyparms bodydisp bodylang bodyloc bodyextra/); 1; }' }, 'Parse::RecDescent::Action' ) ], 'strcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'subpart', 'bodysubtype', 'bodyparms', 'bodydisp', 'bodylang', 'bodyloc', 'bodyextra' ], 'line' => 162, 'vars' => '', 'impcount' => 0, 'changed' => 0, 'name' => 'multipart', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'bodyid' => bless( { 'opcount' => 0, 'name' => 'bodyid', 'changed' => 0, 'impcount' => 0, 'vars' => '', 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'number' => 0, 'patcount' => 1, 'line' => undef, 'dircount' => 0, 'items' => [ bless( { 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'lookahead' => -1, 'line' => 68, 'pattern' => '[()]', 'mod' => '', 'description' => '/[()]/', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'matchrule' => 0, 'line' => 68, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'strcount' => 0, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'line' => 68, 'items' => [ bless( { 'argcode' => undef, 'line' => 68, 'implicit' => undef, 'subrule' => 'STRING', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 1, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 68 }, 'Parse::RecDescent::Rule' ), 'bodylang' => bless( { 'line' => 73, 'calls' => [ 'NIL', 'STRING', 'STRINGS' ], 'prods' => [ bless( { 'error' => undef, 'number' => 0, 'patcount' => 0, 'line' => undef, 'items' => [ bless( { 'lookahead' => 0, 'subrule' => 'NIL', 'implicit' => undef, 'line' => 73, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'uncommit' => undef, 'actcount' => 0 }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 1, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'subrule' => 'STRING', 'line' => 73, 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'line' => 73, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 2, 'patcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'implicit' => undef, 'line' => 73, 'subrule' => 'STRINGS', 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'line' => 73, 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'opcount' => 0, 'name' => 'bodylang', 'vars' => '', 'impcount' => 0, 'changed' => 0 }, 'Parse::RecDescent::Rule' ), 'bodyloc' => bless( { 'line' => 75, 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 0, 'number' => 0, 'patcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'line' => 75, 'subrule' => 'NIL', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0 }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'strcount' => 0, 'items' => [ bless( { 'implicit' => undef, 'line' => 75, 'subrule' => 'STRING', 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 75, 'dircount' => 0, 'patcount' => 0, 'number' => 1, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ) ], 'opcount' => 0, 'name' => 'bodyloc', 'vars' => '', 'impcount' => 0, 'changed' => 0 }, 'Parse::RecDescent::Rule' ), 'inreplyto' => bless( { 'opcount' => 0, 'name' => 'inreplyto', 'impcount' => 0, 'changed' => 0, 'vars' => '', 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'line' => undef, 'dircount' => 0, 'items' => [ bless( { 'argcode' => undef, 'subrule' => 'NIL', 'implicit' => undef, 'line' => 91, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'dircount' => 0, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'STRING', 'line' => 91, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 91, 'strcount' => 0, 'number' => 1, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'line' => 91 }, 'Parse::RecDescent::Rule' ), 'ADDRESSES' => bless( { 'line' => 95, 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'line' => 95, 'implicit' => undef, 'subrule' => 'NIL', 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'patcount' => 0, 'number' => 1, 'strcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'implicit' => undef, 'line' => 95, 'subrule' => 'RFCNONCOMPLY', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 95, 'dircount' => 0, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'actcount' => 1, 'uncommit' => undef, 'strcount' => 2, 'line' => 96, 'dircount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'line' => 96, 'pattern' => '(', 'description' => '\'(\'', 'hashname' => '__STRING1__' }, 'Parse::RecDescent::InterpLit' ), bless( { 'argcode' => undef, 'min' => 1, 'repspec' => 's', 'matchrule' => 0, 'expected' => undef, 'subrule' => 'addressstruct', 'line' => 96, 'lookahead' => 0, 'max' => 100000000 }, 'Parse::RecDescent::Repetition' ), bless( { 'lookahead' => 0, 'line' => 96, 'pattern' => ')', 'description' => '\')\'', 'hashname' => '__STRING2__' }, 'Parse::RecDescent::InterpLit' ), bless( { 'lookahead' => 0, 'line' => 96, 'code' => '{ $return = $item{\'addressstruct(s)\'} }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'patcount' => 0, 'number' => 2, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'NIL', 'RFCNONCOMPLY', 'addressstruct' ], 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'ADDRESSES' }, 'Parse::RecDescent::Rule' ), 'key' => bless( { 'calls' => [ 'STRING' ], 'prods' => [ bless( { 'error' => undef, 'number' => 0, 'patcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'implicit' => undef, 'line' => 56, 'subrule' => 'STRING', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'line' => undef, 'strcount' => 0, 'uncommit' => undef, 'actcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'line' => 56, 'impcount' => 0, 'changed' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'key' }, 'Parse::RecDescent::Rule' ), 'rfc822message' => bless( { 'prods' => [ bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'dircount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'subrule' => 'MESSAGE', 'implicit' => undef, 'line' => 52, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'argcode' => undef, 'lookahead' => 0, 'subrule' => 'RFC822', 'implicit' => undef, 'line' => 52, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'lookahead' => 0, 'line' => 52, 'hashname' => '__ACTION1__', 'code' => '{ $return = "MESSAGE RFC822" }' }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'strcount' => 0, 'number' => 0, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'MESSAGE', 'RFC822' ], 'line' => 52, 'changed' => 0, 'impcount' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'rfc822message' }, 'Parse::RecDescent::Rule' ), 'bcc' => bless( { 'opcount' => 0, 'name' => 'bcc', 'vars' => '', 'impcount' => 0, 'changed' => 0, 'calls' => [ 'ADDRESSES' ], 'prods' => [ bless( { 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'subrule' => 'ADDRESSES', 'implicit' => undef, 'line' => 99, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 99 }, 'Parse::RecDescent::Rule' ), 'bodydisp' => bless( { 'opcount' => 0, 'name' => 'bodydisp', 'changed' => 0, 'impcount' => 0, 'vars' => '', 'line' => 67, 'calls' => [ 'NIL', 'KVPAIRS' ], 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'line' => undef, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'line' => 67, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ] }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'strcount' => 0, 'line' => 67, 'dircount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'implicit' => undef, 'line' => 67, 'subrule' => 'KVPAIRS', 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'patcount' => 0, 'number' => 1, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ) ] }, 'Parse::RecDescent::Rule' ), 'KVPAIRS' => bless( { 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'KVPAIRS', 'line' => 62, 'prods' => [ bless( { 'error' => undef, 'dircount' => 0, 'line' => undef, 'items' => [ bless( { 'description' => '\'(\'', 'hashname' => '__STRING1__', 'lookahead' => 0, 'line' => 62, 'pattern' => '(' }, 'Parse::RecDescent::InterpLit' ), bless( { 'lookahead' => 0, 'line' => 62, 'subrule' => 'kvpair', 'max' => 100000000, 'min' => 1, 'argcode' => undef, 'expected' => undef, 'matchrule' => 0, 'repspec' => 's' }, 'Parse::RecDescent::Repetition' ), bless( { 'hashname' => '__STRING2__', 'description' => '\')\'', 'line' => 62, 'pattern' => ')', 'lookahead' => 0 }, 'Parse::RecDescent::InterpLit' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = { map { (%$_) } @{$item{\'kvpair(s)\'}} } }', 'lookahead' => 0, 'line' => 63 }, 'Parse::RecDescent::Action' ) ], 'strcount' => 2, 'number' => 0, 'patcount' => 0, 'actcount' => 1, 'uncommit' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'kvpair' ] }, 'Parse::RecDescent::Rule' ), 'bodyMD5' => bless( { 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 0, 'patcount' => 0, 'line' => undef, 'items' => [ bless( { 'argcode' => undef, 'line' => 72, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'items' => [ bless( { 'matchrule' => 0, 'subrule' => 'STRING', 'implicit' => undef, 'line' => 72, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'line' => 72, 'strcount' => 0, 'number' => 1, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'line' => 72, 'name' => 'bodyMD5', 'opcount' => 0, 'vars' => '', 'changed' => 0, 'impcount' => 0 }, 'Parse::RecDescent::Rule' ), 'part' => bless( { 'name' => 'part', 'opcount' => 0, 'vars' => '', 'impcount' => 0, 'changed' => 0, 'line' => 177, 'prods' => [ bless( { 'error' => undef, 'number' => 0, 'patcount' => 0, 'line' => undef, 'items' => [ bless( { 'implicit' => undef, 'subrule' => 'multipart', 'line' => 177, 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'line' => 177, 'lookahead' => 0, 'code' => '{ $return = bless $item{multipart}, $mibs }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'strcount' => 0, 'uncommit' => undef, 'actcount' => 1 }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 1, 'number' => 1, 'patcount' => 0, 'line' => 178, 'items' => [ bless( { 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'textmessage', 'line' => 178, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = bless $item{textmessage}, $mibs }', 'line' => 178, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'strcount' => 0, 'line' => 179, 'items' => [ bless( { 'matchrule' => 0, 'implicit' => undef, 'subrule' => 'nestedmessage', 'line' => 179, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'line' => 179, 'lookahead' => 0, 'hashname' => '__ACTION1__', 'code' => '{ $return = bless $item{nestedmessage}, $mibs }' }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'patcount' => 0, 'number' => 2 }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'dircount' => 0, 'line' => 180, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'othertypemessage', 'line' => 180, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'lookahead' => 0, 'line' => 180, 'hashname' => '__ACTION1__', 'code' => '{ $return = bless $item{othertypemessage}, $mibs }' }, 'Parse::RecDescent::Action' ) ], 'strcount' => 0, 'number' => 3, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'multipart', 'textmessage', 'nestedmessage', 'othertypemessage' ] }, 'Parse::RecDescent::Rule' ), 'TEXT' => bless( { 'line' => 27, 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 1, 'number' => 0, 'patcount' => 1, 'line' => undef, 'items' => [ bless( { 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'lookahead' => 0, 'pattern' => '^"TEXT"|^TEXT', 'line' => 29, 'mod' => 'i', 'description' => '/^"TEXT"|^TEXT/i', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'line' => 29, 'lookahead' => 0, 'code' => '{ $return = "TEXT" }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'vars' => '', 'impcount' => 0, 'changed' => 0, 'name' => 'TEXT', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'MESSAGE' => bless( { 'name' => 'MESSAGE', 'opcount' => 0, 'impcount' => 0, 'changed' => 0, 'vars' => '', 'line' => 32, 'prods' => [ bless( { 'actcount' => 1, 'uncommit' => undef, 'strcount' => 0, 'line' => undef, 'dircount' => 0, 'items' => [ bless( { 'description' => '/^"MESSAGE"|^MESSAGE/i', 'mod' => 'i', 'ldelim' => '/', 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'lookahead' => 0, 'pattern' => '^"MESSAGE"|^MESSAGE', 'line' => 32 }, 'Parse::RecDescent::Token' ), bless( { 'code' => '{ $return = "MESSAGE"}', 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 32 }, 'Parse::RecDescent::Action' ) ], 'patcount' => 1, 'number' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [] }, 'Parse::RecDescent::Rule' ), 'start' => bless( { 'opcount' => 0, 'name' => 'start', 'vars' => '', 'changed' => 0, 'impcount' => 0, 'calls' => [ 'part' ], 'prods' => [ bless( { 'error' => undef, 'strcount' => 0, 'line' => undef, 'items' => [ bless( { 'hashname' => '__PATTERN1__', 'pattern' => '.*?\\(.*?BODYSTRUCTURE \\(', 'line' => 185, 'lookahead' => 0, 'rdelim' => '/', 'mod' => 'i', 'description' => '/.*?\\\\(.*?BODYSTRUCTURE \\\\(/i', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'lookahead' => 0, 'subrule' => 'part', 'line' => 185, 'max' => 1, 'min' => 1, 'argcode' => undef, 'expected' => undef, 'matchrule' => 0, 'repspec' => '1' }, 'Parse::RecDescent::Repetition' ), bless( { 'mod' => '', 'description' => '/\\\\).*\\\\)\\\\r?\\\\n?/', 'ldelim' => '/', 'hashname' => '__PATTERN2__', 'line' => 185, 'pattern' => '\\).*\\)\\r?\\n?', 'lookahead' => 0, 'rdelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = $item{\'part(1)\'}[0] }', 'line' => 186, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'patcount' => 2, 'number' => 0, 'actcount' => 1, 'uncommit' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 185 }, 'Parse::RecDescent::Rule' ), 'addressstruct' => bless( { 'prods' => [ bless( { 'actcount' => 1, 'uncommit' => undef, 'strcount' => 2, 'items' => [ bless( { 'line' => 82, 'pattern' => '(', 'lookahead' => 0, 'hashname' => '__STRING1__', 'description' => '\'(\'' }, 'Parse::RecDescent::InterpLit' ), bless( { 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'personalname', 'line' => 82, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'implicit' => undef, 'subrule' => 'sourceroute', 'line' => 82, 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'implicit' => undef, 'line' => 82, 'subrule' => 'mailboxname', 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'hostname', 'line' => 82, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'pattern' => ')', 'line' => 82, 'lookahead' => 0, 'hashname' => '__STRING2__', 'description' => '\')\'' }, 'Parse::RecDescent::InterpLit' ), bless( { 'lookahead' => 0, 'line' => 83, 'code' => '{ bless { personalname => $item{personalname} , sourceroute => $item{sourceroute} , mailboxname => $item{mailboxname} , hostname => $item{hostname} }, \'Mail::IMAPClient::BodyStructure::Address\'; }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 0, 'patcount' => 0, 'number' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'personalname', 'sourceroute', 'mailboxname', 'hostname' ], 'line' => 82, 'changed' => 0, 'impcount' => 0, 'vars' => '', 'name' => 'addressstruct', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'date' => bless( { 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'date', 'line' => 93, 'prods' => [ bless( { 'actcount' => 0, 'uncommit' => undef, 'strcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'line' => 93, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'patcount' => 0, 'number' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 1, 'patcount' => 0, 'dircount' => 0, 'line' => 93, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'line' => 93, 'subrule' => 'STRING', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'NIL', 'STRING' ] }, 'Parse::RecDescent::Rule' ), 'hostname' => bless( { 'changed' => 0, 'impcount' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'hostname', 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'implicit' => undef, 'subrule' => 'NIL', 'line' => 80, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0 }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 1, 'strcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'line' => 80, 'implicit' => undef, 'subrule' => 'STRING', 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 80, 'dircount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 80 }, 'Parse::RecDescent::Rule' ), 'HTML' => bless( { 'name' => 'HTML', 'opcount' => 0, 'changed' => 0, 'impcount' => 0, 'vars' => '', 'prods' => [ bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'items' => [ bless( { 'ldelim' => '/', 'description' => '/"HTML"|HTML/i', 'mod' => 'i', 'lookahead' => 0, 'pattern' => '"HTML"|HTML', 'line' => 31, 'rdelim' => '/', 'hashname' => '__PATTERN1__' }, 'Parse::RecDescent::Token' ), bless( { 'lookahead' => 0, 'line' => 31, 'code' => '{ $return = "HTML" }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 1 }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'line' => 31 }, 'Parse::RecDescent::Rule' ), 'kvpair' => bless( { 'line' => 59, 'prods' => [ bless( { 'error' => undef, 'dircount' => 0, 'line' => undef, 'items' => [ bless( { 'hashname' => '__STRING1__', 'description' => '\')\'', 'line' => 59, 'pattern' => ')', 'lookahead' => -1 }, 'Parse::RecDescent::InterpLit' ), bless( { 'matchrule' => 0, 'implicit' => undef, 'subrule' => 'key', 'line' => 59, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'value', 'implicit' => undef, 'line' => 59, 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = { $item{key} => $item{value} } }', 'line' => 60, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'strcount' => 1, 'number' => 0, 'patcount' => 0, 'actcount' => 1, 'uncommit' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'key', 'value' ], 'name' => 'kvpair', 'opcount' => 0, 'vars' => '', 'changed' => 0, 'impcount' => 0 }, 'Parse::RecDescent::Rule' ), 'replyto' => bless( { 'opcount' => 0, 'name' => 'replyto', 'vars' => '', 'changed' => 0, 'impcount' => 0, 'line' => 101, 'calls' => [ 'ADDRESSES' ], 'prods' => [ bless( { 'error' => undef, 'strcount' => 0, 'line' => undef, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'subrule' => 'ADDRESSES', 'implicit' => undef, 'line' => 101, 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'patcount' => 0, 'number' => 0, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ) ] }, 'Parse::RecDescent::Rule' ), 'mailboxname' => bless( { 'impcount' => 0, 'changed' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'mailboxname', 'line' => 79, 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'error' => undef, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'line' => 79, 'subrule' => 'NIL', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'uncommit' => undef, 'actcount' => 0 }, 'Parse::RecDescent::Production' ), bless( { 'number' => 1, 'patcount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'STRING', 'line' => 79, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 79, 'dircount' => 0, 'strcount' => 0, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ] }, 'Parse::RecDescent::Rule' ), 'basicfields' => bless( { 'calls' => [ 'bodysubtype', 'bodyparms', 'bodyid', 'bodydesc', 'bodyenc', 'bodysize' ], 'prods' => [ bless( { 'error' => undef, 'number' => 0, 'patcount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'bodysubtype', 'line' => 114, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'max' => 1, 'subrule' => 'bodyparms', 'line' => 114, 'lookahead' => 0, 'matchrule' => 0, 'expected' => undef, 'repspec' => '?', 'min' => 0, 'argcode' => undef }, 'Parse::RecDescent::Repetition' ), bless( { 'min' => 0, 'argcode' => undef, 'matchrule' => 0, 'expected' => undef, 'repspec' => '?', 'subrule' => 'bodyid', 'line' => 114, 'lookahead' => 0, 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'lookahead' => 0, 'subrule' => 'bodydesc', 'line' => 115, 'max' => 1, 'argcode' => undef, 'min' => 0, 'repspec' => '?', 'expected' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'argcode' => undef, 'min' => 0, 'repspec' => '?', 'expected' => undef, 'matchrule' => 0, 'lookahead' => 0, 'line' => 115, 'subrule' => 'bodyenc', 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'subrule' => 'bodysize', 'line' => 115, 'lookahead' => 0, 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'lookahead' => 0, 'line' => 116, 'code' => '{ $return = { bodysubtype => $item{bodysubtype} }; take_optional_items($return, \\%item, qw/bodyparms bodyid bodydesc bodyenc bodysize/); 1; }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'line' => undef, 'strcount' => 0, 'uncommit' => undef, 'actcount' => 1 }, 'Parse::RecDescent::Production' ) ], 'line' => 114, 'impcount' => 0, 'changed' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'basicfields' }, 'Parse::RecDescent::Rule' ), 'bodysize' => bless( { 'opcount' => 0, 'name' => 'bodysize', 'vars' => '', 'changed' => 0, 'impcount' => 0, 'prods' => [ bless( { 'line' => undef, 'items' => [ bless( { 'hashname' => '__PATTERN1__', 'lookahead' => -1, 'pattern' => '[()]', 'line' => 70, 'rdelim' => '/', 'mod' => '', 'description' => '/[()]/', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'matchrule' => 0, 'argcode' => undef, 'line' => 70, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 1, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'line' => 70, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'line' => 70, 'implicit' => undef, 'subrule' => 'NUMBER', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 1, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'NIL', 'NUMBER' ], 'line' => 70 }, 'Parse::RecDescent::Rule' ), 'othertypemessage' => bless( { 'opcount' => 0, 'name' => 'othertypemessage', 'vars' => '', 'impcount' => 0, 'changed' => 0, 'line' => 132, 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 1, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'line' => undef, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'line' => 132, 'implicit' => undef, 'subrule' => 'bodytype', 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'argcode' => undef, 'subrule' => 'basicfields', 'implicit' => undef, 'line' => 132, 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'min' => 0, 'argcode' => undef, 'expected' => undef, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 132, 'subrule' => 'bodyMD5', 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'lookahead' => 0, 'subrule' => 'bodydisp', 'line' => 132, 'max' => 1, 'argcode' => undef, 'min' => 0, 'repspec' => '?', 'expected' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'argcode' => undef, 'min' => 0, 'max' => 1, 'line' => 133, 'subrule' => 'bodylang', 'lookahead' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'argcode' => undef, 'min' => 0, 'max' => 1, 'subrule' => 'bodyextra', 'line' => 133, 'lookahead' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'code' => '{ $return = { bodytype => $item{bodytype} }; take_optional_items($return, \\%item , qw/bodyMD5 bodydisp bodylang bodyextra/ ); merge_hash($return, $item{basicfields}); 1; }', 'hashname' => '__ACTION1__', 'line' => 134, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'bodytype', 'basicfields', 'bodyMD5', 'bodydisp', 'bodylang', 'bodyextra' ] }, 'Parse::RecDescent::Rule' ), 'bodydesc' => bless( { 'impcount' => 0, 'changed' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'bodydesc', 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 0, 'patcount' => 1, 'dircount' => 0, 'line' => undef, 'items' => [ bless( { 'description' => '/[()]/', 'mod' => '', 'ldelim' => '/', 'hashname' => '__PATTERN1__', 'lookahead' => -1, 'pattern' => '[()]', 'line' => 69, 'rdelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'NIL', 'line' => 69, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'line' => 69, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'STRING', 'line' => 69, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 1, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 69 }, 'Parse::RecDescent::Rule' ), 'bodyenc' => bless( { 'line' => 71, 'calls' => [ 'NIL', 'STRING', 'KVPAIRS' ], 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 0, 'patcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'line' => 71, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'strcount' => 0, 'dircount' => 0, 'line' => 71, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'STRING', 'line' => 71, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'patcount' => 0, 'number' => 1 }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 2, 'patcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'line' => 71, 'implicit' => undef, 'subrule' => 'KVPAIRS' }, 'Parse::RecDescent::Subrule' ) ], 'line' => 71, 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'changed' => 0, 'impcount' => 0, 'vars' => '', 'name' => 'bodyenc', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'STRING' => bless( { 'name' => 'STRING', 'opcount' => 0, 'vars' => '', 'changed' => 0, 'impcount' => 0, 'line' => 46, 'calls' => [ 'DOUBLE_QUOTED_STRING', 'SINGLE_QUOTED_STRING', 'BARESTRING' ], 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 0, 'patcount' => 0, 'line' => undef, 'items' => [ bless( { 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'DOUBLE_QUOTED_STRING', 'line' => 46, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'patcount' => 0, 'number' => 1, 'strcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'line' => 46, 'implicit' => undef, 'subrule' => 'SINGLE_QUOTED_STRING', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 46, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 2, 'patcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'implicit' => undef, 'subrule' => 'BARESTRING', 'line' => 46, 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 46, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ] }, 'Parse::RecDescent::Rule' ), 'envelope' => bless( { 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 1, 'patcount' => 2, 'number' => 0, 'strcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'rdelim' => '/', 'pattern' => '.*?\\(.*?ENVELOPE', 'line' => 188, 'lookahead' => 0, 'hashname' => '__PATTERN1__', 'ldelim' => '/', 'description' => '/.*?\\\\(.*?ENVELOPE/', 'mod' => '' }, 'Parse::RecDescent::Token' ), bless( { 'matchrule' => 0, 'implicit' => undef, 'line' => 188, 'subrule' => 'envelopestruct', 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ), bless( { 'ldelim' => '/', 'description' => '/.*\\\\)/', 'mod' => '', 'line' => 188, 'pattern' => '.*\\)', 'lookahead' => 0, 'rdelim' => '/', 'hashname' => '__PATTERN2__' }, 'Parse::RecDescent::Token' ), bless( { 'lookahead' => 0, 'line' => 189, 'code' => '{ $return = $item{envelopestruct} }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'envelopestruct' ], 'line' => 188, 'impcount' => 0, 'changed' => 0, 'vars' => '', 'name' => 'envelope', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'to' => bless( { 'line' => 103, 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'subrule' => 'ADDRESSES', 'implicit' => undef, 'line' => 103, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'ADDRESSES' ], 'name' => 'to', 'opcount' => 0, 'vars' => '', 'changed' => 0, 'impcount' => 0 }, 'Parse::RecDescent::Rule' ), 'textlines' => bless( { 'vars' => '', 'changed' => 0, 'impcount' => 0, 'opcount' => 0, 'name' => 'textlines', 'calls' => [ 'NIL', 'NUMBER' ], 'prods' => [ bless( { 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'line' => 50, 'subrule' => 'NIL' }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'line' => undef, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'patcount' => 0, 'number' => 1, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'subrule' => 'NUMBER', 'implicit' => undef, 'line' => 50, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'line' => 50, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 50 }, 'Parse::RecDescent::Rule' ), 'nestedmessage' => bless( { 'opcount' => 0, 'name' => 'nestedmessage', 'changed' => 0, 'impcount' => 0, 'vars' => '', 'prods' => [ bless( { 'line' => undef, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'rfc822message', 'line' => 141 }, 'Parse::RecDescent::Subrule' ), bless( { 'line' => 141, 'lookahead' => 0, 'hashname' => '__DIRECTIVE1__', 'name' => '<commit>', 'code' => '$commit = 1' }, 'Parse::RecDescent::Directive' ), bless( { 'argcode' => undef, 'implicit' => undef, 'line' => 141, 'subrule' => 'bodyparms', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'argcode' => undef, 'line' => 141, 'implicit' => undef, 'subrule' => 'bodyid', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'line' => 141, 'subrule' => 'bodydesc' }, 'Parse::RecDescent::Subrule' ), bless( { 'subrule' => 'bodyenc', 'implicit' => undef, 'line' => 141, 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'argcode' => undef, 'implicit' => undef, 'subrule' => 'bodysize', 'line' => 142, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'max' => 1, 'lookahead' => 0, 'subrule' => 'envelopestruct', 'line' => 143, 'repspec' => '?', 'expected' => undef, 'matchrule' => 0, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'lookahead' => 0, 'line' => 143, 'subrule' => 'bodystructure', 'repspec' => '?', 'expected' => undef, 'matchrule' => 0, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'argcode' => undef, 'min' => 0, 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'line' => 143, 'subrule' => 'textlines', 'lookahead' => 0, 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'lookahead' => 0, 'subrule' => 'bodyMD5', 'line' => 144, 'expected' => undef, 'matchrule' => 0, 'repspec' => '?', 'min' => 0, 'argcode' => undef }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'line' => 144, 'subrule' => 'bodydisp', 'lookahead' => 0, 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'line' => 144, 'subrule' => 'bodylang', 'lookahead' => 0, 'max' => 1, 'min' => 0, 'argcode' => undef, 'matchrule' => 0, 'expected' => undef, 'repspec' => '?' }, 'Parse::RecDescent::Repetition' ), bless( { 'expected' => undef, 'matchrule' => 0, 'repspec' => '?', 'min' => 0, 'argcode' => undef, 'max' => 1, 'lookahead' => 0, 'subrule' => 'bodyextra', 'line' => 144 }, 'Parse::RecDescent::Repetition' ), bless( { 'line' => 145, 'lookahead' => 0, 'hashname' => '__ACTION1__', 'code' => '{ $return = {}; $return->{$_} = $item{$_} for qw/bodyparms bodyid bodydesc bodyenc bodysize/; # envelopestruct bodystructure textlines/; take_optional_items($return, \\%item , qw/envelopestruct bodystructure textlines/ , qw/bodyMD5 bodydisp bodylang bodyextra/); merge_hash($return, $item{bodystructure}[0]); merge_hash($return, $item{basicfields}); $return->{bodytype} = "MESSAGE" ; $return->{bodysubtype} = "RFC822" ; 1; }' }, 'Parse::RecDescent::Action' ) ], 'dircount' => 1, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 1, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'rfc822message', 'bodyparms', 'bodyid', 'bodydesc', 'bodyenc', 'bodysize', 'envelopestruct', 'bodystructure', 'textlines', 'bodyMD5', 'bodydisp', 'bodylang', 'bodyextra' ], 'line' => 141 }, 'Parse::RecDescent::Rule' ), 'sender' => bless( { 'line' => 102, 'calls' => [ 'ADDRESSES' ], 'prods' => [ bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'items' => [ bless( { 'argcode' => undef, 'subrule' => 'ADDRESSES', 'implicit' => undef, 'line' => 102, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'sender' }, 'Parse::RecDescent::Rule' ), 'SINGLE_QUOTED_STRING' => bless( { 'calls' => [], 'prods' => [ bless( { 'strcount' => 2, 'line' => undef, 'items' => [ bless( { 'lookahead' => 0, 'line' => 40, 'pattern' => '\'', 'description' => '\'\'\'', 'hashname' => '__STRING1__' }, 'Parse::RecDescent::InterpLit' ), bless( { 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'lookahead' => 0, 'pattern' => '(?:\\\\[\'\\\\]|[^\'])*', 'line' => 40, 'description' => '/(?:\\\\\\\\[\'\\\\\\\\]|[^\'])*/', 'mod' => '', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__STRING2__', 'description' => '\'\'\'', 'line' => 40, 'pattern' => '\'', 'lookahead' => 0 }, 'Parse::RecDescent::InterpLit' ), bless( { 'code' => '{ $return = $item{__PATTERN1__} }', 'hashname' => '__ACTION1__', 'line' => 40, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'patcount' => 1, 'number' => 0, 'actcount' => 1, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 38, 'impcount' => 0, 'changed' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'SINGLE_QUOTED_STRING' }, 'Parse::RecDescent::Rule' ), 'bodystructure' => bless( { 'calls' => [ 'part' ], 'prods' => [ bless( { 'dircount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'line' => 182, 'pattern' => '(', 'description' => '\'(\'', 'hashname' => '__STRING1__' }, 'Parse::RecDescent::InterpLit' ), bless( { 'min' => 1, 'argcode' => undef, 'expected' => undef, 'matchrule' => 0, 'repspec' => 's', 'lookahead' => 0, 'line' => 182, 'subrule' => 'part', 'max' => 100000000 }, 'Parse::RecDescent::Repetition' ), bless( { 'hashname' => '__STRING2__', 'description' => '\')\'', 'pattern' => ')', 'line' => 182, 'lookahead' => 0 }, 'Parse::RecDescent::InterpLit' ), bless( { 'lookahead' => 0, 'line' => 183, 'code' => '{ $return = $item{\'part(s)\'} }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'strcount' => 2, 'number' => 0, 'patcount' => 0, 'actcount' => 1, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 182, 'impcount' => 0, 'changed' => 0, 'vars' => '', 'name' => 'bodystructure', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'STRINGS' => bless( { 'impcount' => 0, 'changed' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'STRINGS', 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 1, 'number' => 0, 'patcount' => 0, 'items' => [ bless( { 'pattern' => '(', 'line' => 48, 'lookahead' => 0, 'hashname' => '__STRING1__', 'description' => '\'(\'' }, 'Parse::RecDescent::InterpLit' ), bless( { 'line' => 48, 'subrule' => 'STRING', 'lookahead' => 0, 'max' => 100000000, 'min' => 1, 'argcode' => undef, 'matchrule' => 0, 'expected' => undef, 'repspec' => 's' }, 'Parse::RecDescent::Repetition' ), bless( { 'hashname' => '__STRING2__', 'description' => '\')\'', 'pattern' => ')', 'line' => 48, 'lookahead' => 0 }, 'Parse::RecDescent::InterpLit' ), bless( { 'hashname' => '__ACTION1__', 'code' => '{ $return = $item{\'STRING(s)\'} }', 'lookahead' => 0, 'line' => 48 }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 2, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'STRING' ], 'line' => 48 }, 'Parse::RecDescent::Rule' ), 'BARESTRING' => bless( { 'vars' => '', 'changed' => 0, 'impcount' => 0, 'opcount' => 0, 'name' => 'BARESTRING', 'prods' => [ bless( { 'error' => undef, 'number' => 0, 'patcount' => 2, 'items' => [ bless( { 'description' => '/^[)(\'"]/', 'mod' => '', 'ldelim' => '/', 'hashname' => '__PATTERN1__', 'line' => 43, 'pattern' => '^[)(\'"]', 'lookahead' => -1, 'rdelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'mod' => '', 'description' => '/^(?!\\\\(|\\\\))(?:\\\\\\\\ |\\\\S)+/', 'ldelim' => '/', 'hashname' => '__PATTERN2__', 'pattern' => '^(?!\\(|\\))(?:\\\\ |\\S)+', 'line' => 43, 'lookahead' => 0, 'rdelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'lookahead' => 0, 'line' => 44, 'code' => '{ $return = $item{__PATTERN1__} }', 'hashname' => '__ACTION1__' }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'uncommit' => undef, 'actcount' => 1 }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'line' => 43 }, 'Parse::RecDescent::Rule' ), 'bodyparms' => bless( { 'line' => 66, 'calls' => [ 'NIL', 'KVPAIRS' ], 'prods' => [ bless( { 'items' => [ bless( { 'argcode' => undef, 'line' => 66, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'number' => 1, 'patcount' => 0, 'line' => 66, 'dircount' => 0, 'items' => [ bless( { 'argcode' => undef, 'subrule' => 'KVPAIRS', 'implicit' => undef, 'line' => 66, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'strcount' => 0, 'uncommit' => undef, 'actcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'opcount' => 0, 'name' => 'bodyparms', 'impcount' => 0, 'changed' => 0, 'vars' => '' }, 'Parse::RecDescent::Rule' ), 'DOUBLE_QUOTED_STRING' => bless( { 'line' => 41, 'prods' => [ bless( { 'items' => [ bless( { 'lookahead' => 0, 'pattern' => '"', 'line' => 41, 'description' => '\'"\'', 'hashname' => '__STRING1__' }, 'Parse::RecDescent::Literal' ), bless( { 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'line' => 41, 'pattern' => '(?:\\\\["\\\\]|[^"])*', 'lookahead' => 0, 'mod' => '', 'description' => '/(?:\\\\\\\\["\\\\\\\\]|[^"])*/', 'ldelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'hashname' => '__STRING2__', 'description' => '\'"\'', 'line' => 41, 'pattern' => '"', 'lookahead' => 0 }, 'Parse::RecDescent::Literal' ), bless( { 'code' => '{ $return = $item{__PATTERN1__} }', 'hashname' => '__ACTION1__', 'line' => 41, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 2, 'number' => 0, 'patcount' => 1, 'actcount' => 1, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'vars' => '', 'impcount' => 0, 'changed' => 0, 'opcount' => 0, 'name' => 'DOUBLE_QUOTED_STRING' }, 'Parse::RecDescent::Rule' ), 'sourceroute' => bless( { 'line' => 78, 'prods' => [ bless( { 'actcount' => 0, 'uncommit' => undef, 'line' => undef, 'items' => [ bless( { 'argcode' => undef, 'subrule' => 'NIL', 'implicit' => undef, 'line' => 78, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'line' => 78, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'line' => 78, 'implicit' => undef, 'subrule' => 'STRING', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 1, 'patcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'NIL', 'STRING' ], 'vars' => '', 'changed' => 0, 'impcount' => 0, 'name' => 'sourceroute', 'opcount' => 0 }, 'Parse::RecDescent::Rule' ), 'bodytype' => bless( { 'changed' => 0, 'impcount' => 0, 'vars' => '', 'name' => 'bodytype', 'opcount' => 0, 'line' => 65, 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 0, 'number' => 0, 'patcount' => 0, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'subrule' => 'STRING', 'implicit' => undef, 'line' => 65, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'STRING' ] }, 'Parse::RecDescent::Rule' ), 'messageid' => bless( { 'line' => 92, 'prods' => [ bless( { 'line' => undef, 'dircount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'subrule' => 'NIL', 'implicit' => undef, 'line' => 92, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'actcount' => 0, 'uncommit' => undef, 'dircount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'line' => 92, 'implicit' => undef, 'subrule' => 'STRING' }, 'Parse::RecDescent::Subrule' ) ], 'line' => 92, 'strcount' => 0, 'number' => 1, 'patcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'NIL', 'STRING' ], 'name' => 'messageid', 'opcount' => 0, 'vars' => '', 'impcount' => 0, 'changed' => 0 }, 'Parse::RecDescent::Rule' ), 'value' => bless( { 'vars' => '', 'changed' => 0, 'impcount' => 0, 'name' => 'value', 'opcount' => 0, 'line' => 57, 'calls' => [ 'NIL', 'NUMBER', 'STRING', 'KVPAIRS' ], 'prods' => [ bless( { 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'line' => 57, 'implicit' => undef, 'subrule' => 'NIL', 'lookahead' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'items' => [ bless( { 'matchrule' => 0, 'line' => 57, 'implicit' => undef, 'subrule' => 'NUMBER', 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'line' => 57, 'dircount' => 0, 'strcount' => 0, 'number' => 1, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'line' => 57, 'items' => [ bless( { 'matchrule' => 0, 'lookahead' => 0, 'subrule' => 'STRING', 'implicit' => undef, 'line' => 57, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 2, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ), bless( { 'patcount' => 0, 'number' => 3, 'strcount' => 0, 'line' => 57, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'KVPAIRS', 'line' => 57 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'uncommit' => undef, 'actcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ] }, 'Parse::RecDescent::Rule' ), 'personalname' => bless( { 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'subrule' => 'NIL', 'line' => 77 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'patcount' => 0, 'number' => 0 }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 0, 'number' => 1, 'patcount' => 0, 'items' => [ bless( { 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'line' => 77, 'subrule' => 'STRING', 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => 77, 'dircount' => 0, 'strcount' => 0 }, 'Parse::RecDescent::Production' ) ], 'line' => 77, 'opcount' => 0, 'name' => 'personalname', 'vars' => '', 'changed' => 0, 'impcount' => 0 }, 'Parse::RecDescent::Rule' ), 'cc' => bless( { 'changed' => 0, 'impcount' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'cc', 'calls' => [ 'ADDRESSES' ], 'prods' => [ bless( { 'strcount' => 0, 'dircount' => 0, 'line' => undef, 'items' => [ bless( { 'matchrule' => 0, 'argcode' => undef, 'lookahead' => 0, 'implicit' => undef, 'line' => 98, 'subrule' => 'ADDRESSES' }, 'Parse::RecDescent::Subrule' ) ], 'patcount' => 0, 'number' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'line' => 98 }, 'Parse::RecDescent::Rule' ), 'NUMBER' => bless( { 'line' => 36, 'prods' => [ bless( { 'uncommit' => undef, 'actcount' => 1, 'number' => 0, 'patcount' => 1, 'line' => undef, 'items' => [ bless( { 'mod' => '', 'description' => '/^(\\\\d+)/', 'ldelim' => '/', 'hashname' => '__PATTERN1__', 'pattern' => '^(\\d+)', 'line' => 36, 'lookahead' => 0, 'rdelim' => '/' }, 'Parse::RecDescent::Token' ), bless( { 'code' => '{ $return = $item[1] }', 'hashname' => '__ACTION1__', 'line' => 36, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'strcount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'calls' => [], 'changed' => 0, 'impcount' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'NUMBER' }, 'Parse::RecDescent::Rule' ), 'textmessage' => bless( { 'changed' => 0, 'impcount' => 0, 'vars' => '', 'opcount' => 0, 'name' => 'textmessage', 'line' => 122, 'prods' => [ bless( { 'error' => undef, 'uncommit' => undef, 'actcount' => 1, 'patcount' => 0, 'number' => 0, 'strcount' => 0, 'items' => [ bless( { 'lookahead' => 0, 'implicit' => undef, 'line' => 122, 'subrule' => 'TEXT', 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'code' => '$commit = 1', 'name' => '<commit>', 'hashname' => '__DIRECTIVE1__', 'lookahead' => 0, 'line' => 122 }, 'Parse::RecDescent::Directive' ), bless( { 'argcode' => undef, 'implicit' => undef, 'subrule' => 'basicfields', 'line' => 122, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ), bless( { 'argcode' => undef, 'min' => 0, 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'subrule' => 'textlines', 'line' => 122, 'lookahead' => 0, 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'min' => 0, 'argcode' => undef, 'expected' => undef, 'matchrule' => 0, 'repspec' => '?', 'lookahead' => 0, 'line' => 122, 'subrule' => 'bodyMD5', 'max' => 1 }, 'Parse::RecDescent::Repetition' ), bless( { 'repspec' => '?', 'matchrule' => 0, 'expected' => undef, 'argcode' => undef, 'min' => 0, 'max' => 1, 'subrule' => 'bodydisp', 'line' => 123, 'lookahead' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'max' => 1, 'lookahead' => 0, 'line' => 123, 'subrule' => 'bodylang', 'repspec' => '?', 'expected' => undef, 'matchrule' => 0, 'argcode' => undef, 'min' => 0 }, 'Parse::RecDescent::Repetition' ), bless( { 'subrule' => 'bodyextra', 'line' => 123, 'lookahead' => 0, 'max' => 1, 'min' => 0, 'argcode' => undef, 'matchrule' => 0, 'expected' => undef, 'repspec' => '?' }, 'Parse::RecDescent::Repetition' ), bless( { 'code' => '{ $return = $item{basicfields} || {}; $return->{bodytype} = \'TEXT\'; take_optional_items($return, \\%item , qw/textlines bodyMD5 bodydisp bodylang bodyextra/); 1; }', 'hashname' => '__ACTION1__', 'line' => 124, 'lookahead' => 0 }, 'Parse::RecDescent::Action' ) ], 'line' => undef, 'dircount' => 1 }, 'Parse::RecDescent::Production' ) ], 'calls' => [ 'TEXT', 'basicfields', 'textlines', 'bodyMD5', 'bodydisp', 'bodylang', 'bodyextra' ] }, 'Parse::RecDescent::Rule' ), 'RFCNONCOMPLY' => bless( { 'calls' => [], 'prods' => [ bless( { 'error' => undef, 'actcount' => 1, 'uncommit' => undef, 'strcount' => 0, 'line' => undef, 'items' => [ bless( { 'mod' => 'i', 'description' => '/^\\\\(\\\\)/i', 'ldelim' => '/', 'hashname' => '__PATTERN1__', 'rdelim' => '/', 'lookahead' => 0, 'line' => 35, 'pattern' => '^\\(\\)' }, 'Parse::RecDescent::Token' ), bless( { 'code' => '{ $return = "NIL" }', 'hashname' => '__ACTION1__', 'lookahead' => 0, 'line' => 35 }, 'Parse::RecDescent::Action' ) ], 'dircount' => 0, 'patcount' => 1, 'number' => 0 }, 'Parse::RecDescent::Production' ) ], 'line' => 35, 'vars' => '', 'changed' => 0, 'impcount' => 0, 'opcount' => 0, 'name' => 'RFCNONCOMPLY' }, 'Parse::RecDescent::Rule' ), 'subject' => bless( { 'line' => 90, 'calls' => [ 'NIL', 'STRING' ], 'prods' => [ bless( { 'items' => [ bless( { 'argcode' => undef, 'implicit' => undef, 'subrule' => 'NIL', 'line' => 90, 'lookahead' => 0, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'line' => undef, 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef, 'error' => undef }, 'Parse::RecDescent::Production' ), bless( { 'uncommit' => undef, 'actcount' => 0, 'patcount' => 0, 'number' => 1, 'strcount' => 0, 'line' => 90, 'items' => [ bless( { 'line' => 90, 'implicit' => undef, 'subrule' => 'STRING', 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'error' => undef }, 'Parse::RecDescent::Production' ) ], 'opcount' => 0, 'name' => 'subject', 'changed' => 0, 'impcount' => 0, 'vars' => '' }, 'Parse::RecDescent::Rule' ), 'bodyextra' => bless( { 'impcount' => 0, 'changed' => 0, 'vars' => '', 'name' => 'bodyextra', 'opcount' => 0, 'calls' => [ 'NIL', 'STRING', 'STRINGS' ], 'prods' => [ bless( { 'error' => undef, 'line' => undef, 'items' => [ bless( { 'subrule' => 'NIL', 'implicit' => undef, 'line' => 74, 'lookahead' => 0, 'argcode' => undef, 'matchrule' => 0 }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'strcount' => 0, 'number' => 0, 'patcount' => 0, 'actcount' => 0, 'uncommit' => undef }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'strcount' => 0, 'dircount' => 0, 'line' => 74, 'items' => [ bless( { 'matchrule' => 0, 'implicit' => undef, 'line' => 74, 'subrule' => 'STRING', 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'patcount' => 0, 'number' => 1 }, 'Parse::RecDescent::Production' ), bless( { 'error' => undef, 'actcount' => 0, 'uncommit' => undef, 'strcount' => 0, 'items' => [ bless( { 'matchrule' => 0, 'subrule' => 'STRINGS', 'implicit' => undef, 'line' => 74, 'lookahead' => 0, 'argcode' => undef }, 'Parse::RecDescent::Subrule' ) ], 'dircount' => 0, 'line' => 74, 'patcount' => 0, 'number' => 2 }, 'Parse::RecDescent::Production' ) ], 'line' => 74 }, 'Parse::RecDescent::Rule' ) }, '_check' => { 'prevoffset' => '', 'thiscolumn' => '', 'itempos' => '', 'prevline' => '', 'prevcolumn' => '', 'thisoffset' => '' }, '_AUTOACTION' => undef, 'deferrable' => 1, 'namespace' => 'Parse::RecDescent::Mail::IMAPClient::BodyStructure::Parse', '_AUTOTREE' => undef }, 'Parse::RecDescent' ); }