Path: usenet.cis.ufl.edu!usenet.eel.ufl.edu!pacifier!news.alpha.net!news.mathworks.com!gatech!news.sprintlink.net!psgrain!nntp.teleport.com!usenet
From: Pat Martin <[email protected]>
Newsgroups: comp.lang.perl.announce,comp.lang.perl.misc,comp.lang.perl
Subject: Parser Package For Perl 5
Followup-To: comp.lang.perl.misc
Date: 22 Jun 1995 00:40:11 GMT
Organization: Landmark Graphics Corporation
Lines: 283
Approved: [email protected] (comp.lang.perl.announce)
Message-ID: <[email protected]>
NNTP-Posting-Host: linda.teleport.com
X-Disclaimer: The "Approved" header verifies header information for article transmission and does not imply approval of content.
Xref: usenet.cis.ufl.edu comp.lang.perl.announce:47 comp.lang.perl.misc:816 comp.lang.perl:52745

Below is a uuencoded, tarred and compressed file containing a
parsing package for Perl 5.  I got tired of writing parsers
in perl so I came up with a more generic way of doing it.

It should contain:

Text::Parser.pm - A parser parser.
Text::ml.pm     - A package for string matching over multiple lines.

PTest1-4        - A few test cases, not even close to an exhaustive
                 test suite.
PTest[\d].data  - Various test files accompanying the tests.

It's pretty well documented but there is no readme.  I was hoping
that the code examples and the comments would be enough.

PS: Don't send me mail after June 23 because my account is changing
   and I don't yet know what my new login will be.

I hope this proves as useful to you guys as it has to me.

-------------------------- CUT HERE -------------------------------
begin 664 Parser.tar.Z.uue
M'YV0+EY "2-G3ADY+P H7,BPH<.'$"-*G$BQ(HB+-V[4  '@(@@:,6QP]#@C
MAHR1'E->A'&Q1D89,6:4E"&R)0T:,CI6W,FSI\^?0(,*'4JTJ-&C2),F#3BP
MX$&!5,K,H4-#J=6C'C-N['@1I$BN(&:B5!E#(TL0+F_ +*FV)@@;-F#<T'FU
MKMV[>//JW<NW[X@0+^K,0<CFS9@P;%Z(2>/F!9R#;!0H&$&YLN7+F#-KWLRY
ML^<1DR>#" )B3IHV<-B4 3$$Q)@W;=J4<4,'!!R"!N6XV!WZL^_?P(-;EBQX
M=1$W9]BDF8-FAX+B(*+BH:-#1]/<SA6TR8."Q/6#*4#TB%YF>O7O<JJ[*7,G
M>PGTXD$H0*$ 1!(G2:A<[.$#Q!804U 1A!3Z=<&":$FXD08=:2"6AAZKB9&'
M;7(PQB!R((116AF/R1$&'6_H5E^  ^K'GW\*).#1%B=P\0(7*J#@ A]<N)&"
M"C"Z> (+)!+(PA9<F !%A;2QP(4(0SS11!-%.$&%#B"(8*1WN!W4@@][-!$$
M%4,@T0<(7721XD5B@I!"=G/4(08(0UJHP![U761&B&6$,08:() @1QEF@( "
M$%^D$"<(<*KDYYYF=*<GG^&5$4>4 TH11!8BA/?#F&2\0>B<>]J))PD$\>DG
M$'N0L*@9?82W!QQ$UB8"J(C6*,(.?7P)):L61FEJK&[,.F@?"@"K *ZT15EC
MC=<Q=@8(C+GV!FV,U?&&8""T\0899>A08PO<=NOMM^""*ZMS5#HEQY6ON6%&
M&F?4L2<*4 PX11%2B-<?%^]5*0<+(&C))1)!,,&$O2#$P"\4110!!1)/,%$$
MP36<J1UW0*RKVASAC9?<&V*@( )344U%@PMD?!B&"I62B]Z5WZ' 1<5I7"PQ
ML:X>ZT:R&#;KQK,MI'NAM-1:BZVV;H1K]-'ACJM N;FA^^RZ[;X;KQ3SUGLB
MONCQZV^7 0]\HL%L)KQPPP^?6,.!":AX49).WE?%$U5,03 ,$C-MI0\MOVRQ
M5!(7Q92^4$E%QPQ]%<Y05AJ-Y=588H&5D@PSV'!#2R_!4 ,--<APUEMQS<61
MX:"'+OKHI)?N%V""$6888HHQYAADD@DG^^RT8];;:*6=EMIJ;8CQ!AZVZ;N;
M"[W5;OSQOA%G$ C');=<<\\M+QUUUNF;W7;=H9<Q>>95;ZYZ[+D'WWCSU7=?
M?H:>^%^/!1XX@GT*,N@@A"!(2*&%RF:X88<?AD@\@ (BD$K4-R9#_><$.P(!
M$HH0!"+0BU__"5*;B@0"+GBL!R(  ?!ND(/PA*F *3&0:"98&SJ@834G# .V
M1*1 !CJP7AXAH-I4PB(CR $V6_""#KK@ A4DL(4-?*!_*BBD5O&+"W8[%Y:V
MYJ4PH<U0_CD!$3Z4K1XF<(%!E ($B4C"(R;Q2EG:4I?ZX,1!09&&)Z#"&W1@
M17YA\85;E* 1*_C%)8K12V 2X1FAR*(IJ$D-91@#==IH'RI<80IQ+**%O+@R
M._[K2Q^<H4=$^+XDG&%G>P(!@]C !A#< 0T+DLIMQK :.=1!-?_+SR'3UY\M
MF'&/%V$1%^:@ A(D4 A/($(6$MG%"GJL!1G<8 Y8( )9I>"#L RA^]C4*DV>
ML'[7FM ;^C0M.51+*G,(PQG*\#]<ZI*5*)+DBDY@0QSJD(<^=*,+A0@D15+0
M@B+ H 9!P$%^%;-7*4";.),)120V,HR/+",_QTE(;^YRB')<)!W_R41(@NF5
M>Q23Q!20IC61\$V#XE2=[C2J 1U!4!XIE$IHIBL2?,%7'@&61TAZ3U\)JX[I
M@IJ[R@ O>=&+8%C3E];NV+6YU:V1>?M8X*8R Y*9+&62,9U2E\K4IDKD;^8:
M*AURXE2K(&XK'ED<6!H'1<UICG)JL1P-9D #M]C )3:@2U77RM:VNO6M$?E+
M8 ;S@L(<)C&+:4R'(C,9Y/GUK[<CC6E0HYH-T68VI R>N89W$2>\H3;EL1,=
MV# A$ZYF#'6@PX66508R;!,$TQQ-$D"@@Q8("C1_3>WQE&<<Y"B'.<Z!SO3.
M8[W8@8 (@61#J)RY'!"<<$\NN(@0^$2G/#'TCE_J;7'(4!I-F?!#SBR#:!!U
M$,2N1KENP-:ZUD.&X$8'E'-P31C<4+_5K($QS TM'2HTAC545E,RS>2TZ$ \
M["5Q>[/U7F[ UQ[;XG:[JZFF8G-#O'R9*S[ELP]^]#/ 5@*P1'ID7X/#R<<3
M>&$++F!!%W[(/E[.\4A0J((3AD"%*FPI"4]P@I3\J2\P-C2/3S2@A;EPAQ4D
ML,,(=2<=^'61(UWA"5(@@I06VF)'CE&@ XVB%V9I8W[A.((Z/J((KH"$_!1A
M"O$:0A&&S&)SN1BY>03A)!4PT??]ES&KT5!%;YA9-(N7DYVM7V6?>9O%4E1-
MS'232*O%'1)0(0^/X1<)E+.>[0'!H\Y9:3-%< )3$;H,)XB/J?[\&*4)ZWU#
M>!J[9@I:=S'+#5,9;V+52V?A+:V1,=VTU&QJM7L9.#<[_5=/OU9F-E4INB#8
M&P@",D4ZA"$&IRYR4$$F.!D8U==(54!!<WE0*/>RRTTS,AZ[\- D2Q1->+[H
MGC7JJ8Y*X:.#VK.B<_4JDZ+T(BJ]"$LM+1F8:CIJ-)U:U7#ZZH/$FFL"\ZG*
MA%TEEPD5"B$;W+'#D&RX&OS@".<)5'/S@NDE).%!N:KB0L(XDXP%BF=)RUIH
M$CF/V& &-R#<YR!.\I*;_.0[6?A3'(X>%\"A#2AWB,=M0(.)?X4D%G?<168
M QHD#BTOB<D,7!*#B\0 !CS/R<ACSO2F.]VM[VOYR_EEA8.8YED%<P$,)#/*
M-6AS-?E%3W:@T[S70D^VY:%>&]B0'=6ZG79][2N U,3F"ZUF/7= 07A:P)I.
MT2'-(,![E-"308X!4I">7!">QCLA@VA66>&]S1P,PES&R#W)*K&?94%0'!%1
M1NY5R.8VH61?[<4G[/KB+PIX\ 0X,.A9<_"!Q#Y/&?C!(;,ZB'OM6>_Z-,"^
M/WQO_>M!7:TP3$@,=W]6@*UI+?GV:?-SXN0;[J"LW-/^??Q4HVO0 !LX@-::
M.RNAIN[4?69E"P12*(.U[+":]88A9OG#^Z,Q=OED=DE)4)C;]PM6?U@2X0U2
M 0)EP'YRD <FE#_- GTQ@T)AP'Z:I"EM\"%W<BFUQT],-&O]P1(APG\5F$Q4
M\$RF03^DMAJ/P2'<IQK\PA+CL3.V408F^ 8HF'4N0%[CH2$E" <G&&!FT'][
M%(*K470@$GC$TX&PA# *PS .0S \8"$^H'OO\P29=7O4X83&I2_Q01JL\@9[
M=7P70WFV=F"&%TCT185/8%G69"$'X0:($5Y!"!]#H%N39WVH]3XD,@1+,$#?
MM1I384J"Q&D^\WX*@B&;%VKMM7\'B!SA17V'B&LWF(-#^#Y,A(>D01 >,B$H
MD 9]8H1CDX09&!ZA%8%T<"=Q%DIM$%X;J&9W11"V\0;X(XAOP(-GM'F@*(K,
MM8?YLX$598L8<HF9*#9(6#;C03=R1R)4\# I,1X?>%GNLB?%$FI_!UK/]TSR
M1B^/"(M0- 6PH8>/,08-TDG.&("A(H?6:"CGPV#'^%V]U5N(<0?&9XJ>%FIR
M4!NXLH%!F(6D-'GYPWBYMH!S\(@#U21$ $7C<04G1%X'&%[?R"SAA5C3<EA[
M0@;\,HB^]HR]M2>.]X#CB'D7L7GE6!H3"6GAM1[3X9%4%%PHD&GJ(ACY,UIK
ML#-W<%K8ETPBQD1%$)#("%X@8$J%Q8L@H%UH1@;AL4UT$%YWI1K,]4FS(8 $
MV%RRD9$:^7<C.0?* 0=LB 9L=@9XLGEUAAWF!R5F>%TA^8I$J)$C]2%_)P?D
M-8N@E#-C>'T@8 1;$C!?8 1.8 3Q800FTTD'<4-GV"<V>&NZMAQN< *U,2=U
MD%T_4##QD0=2D8+QL3/^: 1)D(1XF(RNL8RS49@+6%[Y8X_8%&>:5VIV5GO3
M"$/[@3M[6 =]F$E_R!CYV)-2,085TGM8%UK<=P>\%7E6N)52X8],<!_&>(Z6
MB5ERP(RU\6B<B2&\V5U.*'=#T(!U,I3B6'LQ$%Q)T"=Y,"T9DDDJB2$:HHF_
M" (9&)%H %W+P2]JV9EFF88(>1MN$(C+TGS2183/15[*!P*/M@,@D)UU4"V"
M41O(ER'LF$G/51LGX *1II;@R$G;1Q"2974"B >DY'K])W]HYEW7N9_:R8[%
MHB'4QP9D<!AR4(ON"9_54ESU"5KK@9]HQB_0<0(R0B,V<@+]URS*40;]&5H'
M>J!R9VSV@9T"5IJP.0>RF0:T25[%496K 6UW U!CM'^/]5N?=I9J&!E$R)O6
M9 <$T2!B<#'>E07:V0;_"9L QH@Z%5T&*8VL-J1%>J3]AWR' 1V;IUUA<$JU
M05W,>(_^.141NAP 2EP$>D(3<ACD%:#+U7^*N):X)J380J2S.7Q?&J9C:EGD
M5915Z&4^D&KP1A]$**17\QZL%AY!>)%::86-VJ;#]X @ *I4<U,;^$E41(#]
MQY^PR8W8HJIJ*!O,TI9S^':^^AN245&!QQX8Y1&8YG> )WAX:EW_<Q&EIR_;
MLP=]D!W&"B!E4!MSD(TY62?9JH9=NAIT:J?]."AUM ?$6 1?,AXB4([G=JG1
MM@?WUP10D*X%DV@74:X7*##T&@/VZJY-"IYD0Z\PT*_E6H=+0*]Z1[#']4CQ
M(0+M6JZ2Z3#TZK *6V1[ )<"P@1S69?[6K&8"J\I1@5N S=3T+'D^D]2H#!
[email protected]$P32AYN=MR&/AXBJ^@8$6"&W*F"=TJUA\*UD6J=L,)3-FFL;V!UI
M$!\#FR=)RP/C00(C@&A,"P(K,!XRH"K^JD2EXE%;0 )IT 7T2@)<Z[4K$ -=
MH)_"4JWI1P?NDJ8!)@:')WZXUGE%^ZV3E[7.<6F_NK>>085^) 9UYV::.E-Z
M!P)\![.%@9N;-[-!N">#&Z@D:&IN&7I?!R7NIBZJ1E.\-WRQ-WMS:'NX1X6;
MZWN@UA_C,04NB&NG^JBD"XT9HJ4Q\[.%I86<:[3@QQYZ5XVU!X5T((73^3Y)
ME'@,&J".^VXSQ5QA  =9B"M41%FZR[?0JQG!BF>/*UU[]JSFLCW,@8ET0*UR
M<K1>J[3Z&;Y.FR=1^VWCF[15"P)7&VX0Q5(H&5_G)[;?UK5?*VECFP9EVP6R
MPBQ]TAU-8@5[X$!"4 5'D"K]ZA'E2K]'8+]@B[_U2[9FJY^_$BRQ$[T8/!QN
M^;>!NZ(MLW=?N#P:HFNX>!!I$("AM3?C.KFB-[] U6\DL#>(XKERER"^2X4Q
MO("(<H7;:@;5Y0:)%82HB!BJ^$EIP%%PP(JTP8::,L*;N8$+(E[DE<1N,I90
M),3D18G&MW_ER1RNJ\+[-X!).5Z@]1CD%;%% #!.0 0.\[P@P+LW[):6J6L?
MVDD!NIP9DET9LKP50D49(DBDFX@Q8\=I)DAQ]BP82@<G$%[E.:)R%X2KFP8!
MNGGS)849$EY1C"UF3 :FZ+8A?!"+S*:LBW7CQ5R$6EYRIP9C^K/SE<<&N)9G
M\+P9G,'3:U%54JS.VF=9DR<RS"CQ 2C]:E][(S$>85]I,%'5"H76!(_8^I$*
MF2%LP(YY$%[KNF B,"B8Z"<%*R#%^"6.$B7L"E(7(6X7D<THX)/<I<W_5)I]
M $;;O"7HV@=;8+8I(,XI 2<J8E]-( 7;4Z[L[,[_=*ZU,L]G*QDJ4DE]$L5=
MK#]K-E]N%@:39Q@-\G='J7B[RB_E$4B9=5UT,"8H@"C=L<^-\BA(DDM;%AXF
M8 (]J2E[  (F4"K[/*W#.AVTDAT'C9ITY] K:JFEW),FPR]340=FX,.51QM-
MG,7%:7S$HR(?+2HDL,\"2-*1,BF5XM(F(&9-G2BFLL];  -=,-)1DB0.5-4I
M+68>D2EF/<XIHC8OO=52T-5@^R=/_=;5Z0)0.]=?G<#)-*T0E;8J\<[=+&GK
MS&KMC"6 '<]PW:]^#0+O@P2E7%C+"L0!*,1)/<VN2Z1$7!!%:\X@G<.J,<-1
M#2E2("F48L_D;+L;]2FZ)M>]; ;V'%)C K&3B:Z2MC?.H2):.!LH@,:"]D]H
MG"H@P =\@-798[$8*Y=T:01?DM(]><)14@3%N8&R+;&6&P+&%-S#+4X#2EXB
M -U\F;5@]-O5;4RW#=X^P)N[/=L2HR)C4!C+@\8VS=CH)Q77BFL)&83E&,HB
MV<Q^?)A=Z$F0EDG-PC8BZP1O$S<GBBU+O=*$\LYVV <]D+#F;:[<3-M/.]BM
M*@6%O0?E*,]>#2R2Y-_8-.$$/K)QP]>&DFX@H.*-_=BEQ"<_K*=!V,4GA+R5
M;8I]@MFZI=F#4@9L8!K_V]FM#=8B #!3@ 25XKZ&PFT<Y=FK@0)K4 :670).
M/L,0A<\3_MNUO8#EG=MND-X.T]O&/=O +=S$#;%QJ;')O=PJ30;.W=W1;4W3
MC:[CC4_8;=;;_=QQGN5D7N=(I2)UA-YHO-ZNX=ZK =\&+=_I1ZH@Z,SXO6#Z
MG78D^8PB?K=W$.#715XE;N DF^#<A"DL/>$&"^$)>]AAB^%5L^$=#M<@GA*5
M'E[ENND'7K)ZO>(57*V.G5V%I6:Z4U@ZKHJ134I%Z^- ?BA\TAU#'MHB, 5#
M$# #DN2P;2AS'K95SB>U[N5@7@1B_K&_'1YFSM3%S>UIOK'*;=7-O1IPSI>6
MZ]MDGB?6;>???A%YGN[2S>[4[>[D+1G2WDB"KM[>FQ+OL^CU+9%^_.CY$>E1
MZ<RO#N G(.":'K(F+C="\^F&DBD-'M "\N#Q(>&F+M@6^\]8LNH?/B8+'^L0
MS^DGKM@NRSP_GF:35P>Z>NDGX(#(EY22YX5D[.5O.=MJS,9%,.PMK^0J08?U
M#0=KL"Q!N'E%&7]A(!MS,$K+%SSM]75%6\Q]9O1GL#U%>1"U/NU;_MG6#E%$
M7T+/M#%BP,0JFF;A]UO\@@)/X :4Y4E;+,3X>$G[6%CEJ>M\ U$J@,;QH0)[
M\"JK<O1]4!TDL >MW0<B@.)#_\F[6C\_FP=5?Z_\WF^#_N]J2]]DKX>.KBGY
M'9*2GI ++_,.SQHG/^N>/OD,WM(.?K ;?R:B7N&G_O&$#48B#[8D#_<C;O)M
M@_*T7L&#TMYO\-ZSG;>QTP*S'+VWP\$Z';E.4;B'2UYHB):(41HYW68K:L0<
M)5EU@!AQSYM*.F ',82B0;FC9][][C ][S"SAR!N$,>B@<;K7S:C89]F?/=E
MD/=D,+O1N!JZ%H1WK$HP)]3RQJ)0Z"* 2: VO(93PEP"%.,Y1,L"HHDR23:*
MR,L'ZPW(+_E!KUHF_G 9?EH=;"#<Y0;M!4K,0/<:%'8%,:" OJ?>XL/V,H'!
MK,\T#")PKHA9+@MI6H1I(3-ULVB&A&' )OG#""P@*-%H[!VZ:A&]PG^I,XN5
MLJ# RD)@^NXB1)T;<H\64K=!3BEL 14M([:3RM5O<@(6#@3P #0F>X0>P+LM
M34R:)1X3HDD\!/S!$!9J/8PK0T%^4,.$^X*TS9S%.H8AKZ"@V ,0V@I;B($Z
M$)^NQ6H@0&* ZKVO18,'UYW%PH-]H'^9,W069TA  -L#)X )$# #=@+\H*%X
M'TO !7D?SX2/,,1AVB2=QIH0)^/$HE94;U$_KD?R012T9BBP'!V"3JEPTGTZ
M0#<#SY7'^U@"+;X%/,V7"^^;<WDFGV^F\3>*Y)=*PS;J1KIP3+R/K<=<NML:
MRR 5*;5U%M5WUD)=Q[MPM"_#J;H%X^'.UK9B6VBIU7D$/8CQX)DW(VD *=G<
MM"907 0A(00!B% 1J@B6<JX<(3"4?9+P?U%"YF()G8  DR)%H( =@4XX46Y:
M@E@0W>A!\ X)A">"7?N!+VMH%^8)J!:,A.&/ G"^!1?:(%&8@_)8>GE'OJ80
M]9;P(X!0 QV0?+Q!1;##C^>+ I9X @'"2$5@N6H%!01#5GHFC,&2/8NDU^CL
MQ!I8<"O%)_Z)4M$.'UP?V';O"A(VQ#,H\(Z3FPF*F04I4KY'")PFEJ\0,^^#
M";P!+?3';LC=$C"W0;.D(1;%ISA%;DI]8H;)?8H=MA3]6>TS;.VPF]4*02%)
M=F+CNP+MIP#9+OW1!EQ3!.HD:LF[?"!JD<TN74AT0&HF):X!UW5TTII\(T5S
M@%\XQG51$$J(8 Q":NG!V"&X1IZ2DL'J:KO!;,68QG<:8<!ND $&8M?L!B>3
M\98 :G0!.8"'7(3%F!D_C6SB5OD#8#D,R_@^?- STQ 12 ULH [!*2*09/,M
M"\*[T,-,,@<B4#PB2F0L0)6'3=99B*.JTATWQ $QQQ#A'!/+;]&(2XY.=)OP
MA0)<HUT; 4S18HVZ5&$9\9G:>!]TP ZJ(Q:E67R=<A@U?<)@K;6+  3RH_<9
M#Z2B]0TT]^BU"MJ E&]3@&T--?LF&=<@GG"" 8*)G( X$]2&&K]P<YAM1+&)
ME$63B,"#+(X2T@PL-;5ASM9.=]@#2.14L#I^42!10SVSC+ M;30^J$;%EIBJ
MDD44,7]DI@*T(O\:1\P3B.*VB1-(1!'+RVMP>GEL.U6B'A;C=J$XP5=@9CR\
M#":B)%GCP"N*A8@HK@8,205*) A096[@*#Y(CY @F^+!0EA @$PR$7V2-B1)
MFY2/M;%6K+4ZF1+L5]G:#5 K/O[#(. 4\]J:O APJ*/I2%NW3\Y@A"2+I- T
MY(P^X1C+DP,R3'H,.5)$K0A%$J42G&OE+<6)F5;7ZMY'$6AYQ;!"OD*7*$VL
M2:7$A2RH$<$@C4CLI(M.!(L@0"R213MA%MV1-4F+5(HM%B9ZA),F'J>4BTA2
M5-1%5$<O-IRIVXMBQB^F!"_8%<6#'P !+^#PQ4A$P>I>@%6SC&BM4=I'*=@O
MFN1^_'4B8E%B28;UM+CDB;16M0$/_K'7,**4A?-ZD-02#)ZZ)Y A[\CX.I*G
MHDOB)XAV ALEXX,E*DY40I1JY5C8!$F<E?SB_SS&BUA\0A&>$&,%" )B*$H)
MKIX%87I\ZFAADDLSD)<$4)SCAN7L?_FSFBBQQ& P,G?K$M\P 38' D+ 7..+
MA$+,N#ET5P7<@((B T0P7QY!I:$B$F;C:YA0X&'&H/\SF&J#I:28H1%COC)E
MX5V(P'(0461 9,JWQ>4S*2*'3)$H4P#]N)GXL80C;2M?+(&YQ4R H:_$P\M,
M:393I(T):6EF-,5A^IE*<" N.*-Y!@'CQ-0?LC(&/4U5%34)T-1$#F'S??C-
MY+7);A9*-(HF$01$.0X! LZ $HME%P$O^1J]M.<:HW39(],P#[2W]F.5I@56
M2I60\S",D@4Q(1)5*].4%C-L$CNR^:[,YI?(0#!S8<E,-A<W^=G<U)EOSFR^
M,0)D!A(7E&@"QB= T:KU$&<TQ([;)M;$;,H*RZ@'X:."O)W@L&RR3'1%Z)(B
M<UB6>))0ODFHV*2D8GGCF]7*;P[.D?B"8E"F:)I_$S0V2:FI,0'A\-":[\,Q
MJA#F(B9)4GNIFE>3(%0>CND:1&=A,2%7"4\(&$*T!A89_A0OJ_,E6LC763'O
M1-6TFUW38L89G11@/!E4&D-[9':JS'6V/6\G3LR=%BM?S4RW>4+AYLW\G9+D
M?5"!7/($<D\,G6^RH7<<!%5EJ>ZFUTPO:2H=]0F]*69>(!T GX/2*>),0U$]
M!>6[FH_B*7O6SA(Z%;TG&D"B3S1//L4[V!4)W6+[A"# "4BZ;,:"TA.&L(AA
M<[]Q'MUWMT!E%(0BBI,!0<8*BB>R%>>! R7C&0F8<Q4VOV&>F&L$#?,U/EWI
M?7#6#DUM?VSX?$A-$<6RV8((97IS;9@T*IFGI,(#W2UFX# !,MAC(0-/$Y,#
M[4(V+#%^,=6R "6U+N%EMZR7Z-0=0><ERS6:M'8EJNT42C/3'#PCR)(]&IOW
M^$+W"-W\B I- JJ9ZV=W+EFVXD94I**QP06!T?" 1J-(BC(E#,0_RM4:I+G+
M:M3TK5G3;U;2QAI*NVJ-TN*UM+8&2!ND3-MO-2W152O!0DP%E_>+G'DT# "U
M%%D!L9B45&HZDT_\I&SJP*[I#G-K_92;EE*R!DZA"#8]? #5G,(U92?63MJW
M7)3B]%"ZM%)1*LKIURJ'Z%,CU46+"K;F&:"TGAR5C, ^=+KB:EU*Z6N>!)1T
MP7]B/BO8I2F740[7* ? 11 F!&-H;RH)Z\B&.S%>ED,;"(G*2Q;R*\G05S3@
M:KDSMLPI>$#L!6MXF0[S90CR"\1 9+> ;""?05H[4+XI,Y(4CW3A<8QF[0B<
M63-L-D+EH\I!" YG[;@<F/-T#@=&2!Q@0:O@G).@<RX"38@!-0?HJ 6A0W2R
[email protected] K6P6HXWD<+4 $M@!X.#8<I!]C.86T!7,<H?AWNH7;8#FMA'J[E
M><26Y5$$\$ 2BT=<3P$ @20P!4C#>$ !G?6SGB6) 02* !9P@@)D/,2!O+-V
M0$"<))%WQ+9&HCC)+\OD'2DS1I5O^:UVNJ)<) @C#6)J:!FIPH*<S.BRZ&"?
MCH55KCSAC*C%>'"1) !8IB$:J<7R $RJ8>_O 'ZN[+J>T-+I*35JT;S*S]@I
M=X! =XTA><BG^9J4>L3PA,QC4.O))1+.)DE>TZM!>@-N#(Z)5[E# JIK>#E-
M18>4T5''A'5([email protected]@LH=%0 %<.N_X!<J8$Z"  K;6R/10!IDSH(V ")<
MPSAO"/-Z1EJ*#=2!WD2%.FO3VQV_2PFB !=Y L) DXD28B#'A@&"8T]V[!@8
M T-&!)"!(>N"RD"E@$DYLU-106SB,FYK$="P6_*.'!'>VB__!9(%%FXI0;S%
MPV 08JR3];!^ L?FV R"9(% )(*O*"!*[-@@NV;-1'N5D[GUM$:)(8LM7!"9
MI4+/B?U\""@Q6DR(Z40#D,6SAHC-LF&MP(#P)-,"1$4HU9HG#&V]D("7#K^&
M%R#@:.M'9LE(C#-4T(:X5Z 4$OQ4>A"-FUR$I"D'RA-5PC5EYWFLU01W2N93
M3&*B#LF'6219%EQ]%0=<.TOUZI57-\!=*YNAD:IOU+[LH>VA'!E#=[@/(88*
M?(&4E22"S!>8%U-C2P"97EN)K&J!72_6$EL>/NV:#E_ O_NRN=4%IH8%<6R=
M0+)=MD6@V1*!9ZLP!H2TS8'>P<)V":MJ9L,M?'UZRN&(D@!D6P64+;,%,NL6
MVKK;&0IOF0B]A;/_0MSFVW)[;O^MLQ6XDH+@]K8.^UO_'0I0#<C!A(2TWVHI
M%!.4&%@63#0@SY@Z4SV$8+RI*O;JD!=3"P>$JG/ C\_$AVK06@0VM:8(78+:
M\PC91+2)0C^6"DU7;],$]$Z<^4LEYF$ZJU(E!A!6MTI/X&I6H3A;)>=T%<Q1
M=/3J6I )F&/FP "ELW2[KM?]ND-!KJ2.N@("6X=>@1U%M=:^G=N!!*I+*"-C
MD86PZ"# :86T'YX ?R0INPC03V/)>AK-4%*B(4W\U-"BC[!B;1A!MNNG\@ W
M /.0CQSH#RM ##)>'?IXO<N0N%82=+#L#G[!*C!O'A -Q:$+\8M!Z#2EG&8L
M3[7!XM&J[2B&$I-]4&2I%#99"_*G=G_5944]YJ+MX [HJJKV)_L*/(W7ZA /
M8?6<V, 8R+7=P5'8B%\&;!48"5"^V?8%+!E:XC+(P I( ;,D1@")%9 C6H"+
M^&K9M_I>W^Q+ KSM&V4I)*#HD("30 )F0,/Z=WKP)'!3E&':%F&N2+\;-D_,
M )7G$6YN=Y"_).T%0#NU9BA00'=POR$@&'W3^U$LTF^VG '>C@\P8%=A->U
M&KA5]H,E>+<0$0*NV4GMOV-390+@*+$"!G#.-!0D!?]&WO;+?R^"_UV_R@Z8
MU%\4W$SP+]]AP;>.!Y(;=B,:A@"R,E-VAJF"A].3=FC+]] !>$?WXA9'10%]
MR_0!PKD!T<J!-3"NL >KJAH9(\%T)(*Q/@)(^Q@17I@+'Y#IBR.L;_;= BM
M!;R %L"_: D7,,.TQ);0QA)Q()()E"F^8X"1I% P$R:NC6V)7YD+"H^_B] $
MQI3%BV)AP 3NT$<:7FH>>8EDR(<Y72[YA0)4Z-PX&&OJ4Y4F?M$$5Y:^X3J+
MQF8<A[/$/#RK15*Y;ZQ/6"8C0![%H)L[ PNB/Z" %< '6@ ?4 %\X 6$!Q[P
MBF,Q,:G#*@%)#,4;P@9:0$#2/IUU01 -I3%";@TS%4!Z#.N@I/4"@XQQL,%4
M+2- $('[(#$<;L!MMQ%WVAH7BFME+2[&/0,:]ZEQ7!"0F(K.QS5^(C<,D%Q)
M9G)M*A!+N:V+Y;I<T< U\6:'5)$V-P3CW"FJ<ULFSU6;NI-MKM >$'2'+@P]
M@T;7#2!=@",XBDH\':PSI^;$5:@[5R^.1] <,8%RD!6R4@-*\N3 "#4@)J@5
ML,N26[)+7@CEY*>FQ>_2GY"G-8$<!4,&Z #(H0-@  XH&#D@!]0 !9!^2$D:
M8#] ,]?<D)^:)M[?LY!\*D1+2387\"3E3/VX(4 ,P$9E4<--JC(*" ))  N$
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
@VIF<YC3MJ/NT03D,",E 9R1C#I.<%5(R8)7JP#[8 P6Z

end