www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Dxml parser - announce v-0.20

I have done some major changes to my xml parser.
According to my benchmarks this version is much faster than the older ones.

But it has got some drawbacks:
    - the stream must not contain additional data. if it contains additional 
data some bytes will be lost.
    - a tag must not contain any '<' '>' characters. for example: they are 
allowed in comments, but my parser will get confused.

Regards,
Miguel Ferreira Simoes 


begin 666 DXml-v0.20.rar



M[K:AY\$W%865*[I?!;F<DN_;P.$]5L'IX^K2`IR;RC_L/NU\)C . 4Z"LJZ]
M,?M(PIL4S-GQ*(1T() \`)P```!S`0```I-\?=Z$LXHQ'3,7`" ```!$6&UL
M+78P+C(P7$18;6PN9&ED97!R: #PH

M_(7/)K#HU4T)X+N[NYS;1L ?85PO,&$F^A"4*]\WG2J30*>WBZP<T*D,5S?1
MOT"ZR9E+_5F5_K9 NS$N9.P\2_&;9GTVM 9B.^#AK7C"FC2;YE6>U>D^8ZW-
MU;9T() V`,P!```G! ```K4N8SC:LXHQ'3,1`" ```!$6&UL+78P+C(P7&UA
M:6XN9 #P


MIZ$)N?)W1Q/\WZ]A9&LYB!2JZO:O[ C]_P(31%2!C"]NKO/5Z/^B0O])+K7A
M#P4J
M85N9P1GE\HRY(=/NUG:GBQ&6Q..:*(8:YE)SB[5OC*V?K\!ZVE*V=)R%?Z),
M.=2^UB&WGOK.\P,;3Z1(`;6ME;05R.5AASXK#RM267?U1'F*T&ZU[%R!:FC-
MJ0)Y5I"3-)W5"S4^7TU=1G55=-9=_3Q7?.Q725J\S!,F3:-MQ4.A!FL.? 4[
MFIUG>.%4WC2+X4,4CSOUM]!Q3 SQYUW'=D6VJ5K=JL7$GV 2;KLY+<IOB?+_
M-QECA?-"UU>U8PC ]D'EYZ <_!^5#ML49C1ZB_Y2ZKR7\/C;Z,PS;HIC,$S=
MXA1UHE H]_'?1V6ST(2WE5QODOM"=""030#A`P``- D```(EUUUU&;.*,1TS
M* ` ````1%AM;"UV,"XR,%QS;W5R8V5<9'5T:6QI=&EE<UQ4<F5E7%1R964N




MNA7*^N?^.L6:4ZWU)ZU:BL"('G12G2>0R^> M7X;?Z/234<+6S!AL^LANVSV
M0+*SQ:YJ$',\\A5L]G5KA)[)V9,M,TK;0IT6MKVQ9YM77/M4O 8TN]J3?"=8

M#G8=H$L`CE)$<LHP^(AG`$N)8WQP/1730E8F]VA1HKD$CQVCS,0CMY:D6 %Q


M/ ,_:P4XNR53HNJFPP9&X>*CA>6#G9[TBH&D"!73&M%W*ZIXP%_T`)SM?V]=


M0?B(96TT,* S&(.BQ+M:OBS<I.X84&-FGP%]XQ8(,ZRN&8 _:-VM'*W_J^)/
MXG+,:+  YO!U/BA&VAGTC(9XKQ?W!/$Z8[6JAQZ><PYL9PY=7B!$\3B5`'*I
M31Y]]E[[B,^O:4GD?.X*FZH=1DZ"?/P(?KN*.$BX!4$$2\[^8,'ZR8L3AP\^
M]169T;!9JT(Y1E+SP.A%\C(J-A ;J?J$)^.\QCBQA3VXD9 XJR7D3!6AJ0O;
M%LW]=#I2
MGTFBXAC/ PG;!XS-<C]XH ZLC%M;Q87!%A:_W7,)=3,-Q;H<3H0NZ^,]QX,X
M"79%`/IWX."'R+FV_[H/_T1[=*OE(B8)\1TEQJ%RO<:BPJ/Z7[*G'<YI0'KV
MV?*F3BY>UBEKR:Z8\N)GTT*-GH5+PX._JE-C%GX!S>-YPBDE+5[OJ927"9.1
M[I<.S5]7?R-_T*V$$^L!\>3UP9YV4.3_-O6'&+8A_G /HACV&7= XL;,/8OO

M+78P+C(P7'-O=7)C95QD=71I;&ET:65S7%1R965<5')E94%T=')I8G5T92YD



MJ_.'IZ8>K+E_(6I">XK*RIIKCX'T5&03]V8:>>DI/Z/,DRB9-*<Z42$9PDYE
MQEVPDB=KH7ROGG_SJ>ZY3L>I/<OO*T( ?>BE.H\AF<]A5?AM_LYR=YPI;<&F
MSZR&\*_;`PK?&+FH0<SS )MOLZ]<)/XG;DVTUI6VA,(L;9MJSS:RN?:I?(UI
ME[$D;7W "VP3%T-1\M8*ZB:3S <4M[\_0P=ATS 2I6S""7OFZ'=9K +XFIF_



M=ZGOW!$`PMK!3BJ"K<][Z:S!%,!XJ,:S0=3?<PW(:0'%5,;$797*>,A5: $Y

ME=A >T\.A -;R><G1KK'<(>M7O31K"LRM2'6LG'U=&!T>9L=LDJ1 "R /(/L


M:>SM)_>II=1HN(Z['_ 09;SNJ)Y0`[\AEB9H[?%#X
M&I*ZJ9]ZI>.*3U)/)=);\Y=-OE2>TGE (,%6^P3<+2PL[A*,=T>/E=TQ<PG+



M[>6)T./2SXIZ^P9PHFF*`>'CO=]/A,:/[/P,OPK^5,GHQ3J&SV%3= ]?$R%!
MI]"Y<0Y^J4UJ6?$/;AW.#TDI5?+UM3UPH3D>GUPQP3N;[>=/$!_7!?3GM<)>
MIGCD_[[MOSC/L0_+I2L?HKN]$MWGC'Z9CZ".PJ /_ZC<?G3 D$8`````````
M```"`````.ZRBC$4,"$`$ ```$18;6PM=C N,C!<<V]U<F-E7&1U=&EL:71I
M97-<5')E90"PT/TA4&9TX)!!````````````` ````#OLHHQ
M6&UL+78P+C(P7'-O=7)C95QD=71I;&ET:65S`/!0''*ICW0 D$(`- (``$H$


M*-N_#WL0EJMDQQYC=+I34 WP"I5*1YQ_\YG&YX[C?,^O&U^_>'^GT8\6+B&Q

M]$ZG(4;Y!BU";3F[4U+0R267Z(?NUI89B]+=IP.8?.RU>Q-**3=1V>J[]76;
M:D3QZICU[S(W7^\4"OA!=5BDHDWX[U\5;=\YOG6:M8&PONH[E6 `;>M)H"NB
MY:_ ]H+GT0A-I$- 6H^J38FP%C8=Z:P$]!_?'U /`ZJ(#F<,4C?Y=^?QP]$)
M]H65> HI+" H`=#SM1-H</M61-](+Q('H%Q9I7,1-CK;% *'> 5"G4DR:,!Z

MAI;ANLKXI2]I6:U!+U$3?N\<3('+.;N%%[B=0+\D&FJ H]&M;2F<8'O$N*T%
MGF<T-W2KQ$S$F P=)2W >-7;;>8PCF?G5TS/-F?[[RR"*1H.MH!'+LJR1H;M
M8)[7!^[A3O%.<6ZZC7*+O]7/D<"1O0H!_A ]<\NV CB:/T??^\T`-2\#WBER

M;T)A2_4-HS__3]N!J#U
M```",I7<BKBQBC$=,R0`( ```$18;6PM=C N,C!<<V]U<F-E7&1X;6Q<6&UL
M16YT:71I97,N9 #PT
M!/" 0"7PT!QC0GF)MYMSIW.ARRT6_]M%QSIS%F$HK.A]%F[1OK!;'F)$\/3P

M1%&Y`^QHXV<'$6DV>0$SB_5GCP!I\7E'5,;TGEDSP13Q[G,TJ'3?_HQ$AR(Y
MN=QZ!)Y(I?B ?WYW(S1P99.D]!S!YPQ0:'&T-FWCQ^/O^]P&Z7 $TJF._U&1
M\9_2+05,-"WH7:82=X%\F*G+J9-ROF? H-3?WT%EVD"C:5B=%%<G>L_6R6J+



M/Y0U(*Q)G%N.NP=(L:) I]I0W^UL.D&\;)O>":EQS-0O8D>,]4HE%^"09SA(
M><1I6 8\PFJWE+?4$L"C5,'<&;=0ZMWIBG,)(L'CNZLYV,"??4,00V&Q+$U0
MA9E8R& :T("C]3_?Z*? $<X.^E:SE*36;NP\!39T&0/ <'D9(V0`;C7V/U5Q

M.;F XU2>A3<GU+C;(L*GI6ZN\\;TA.(+*NLU:RG^+:#PCEA$M*BAM4NR!+X'

M*6_4L."2Z,M&0 '!J9,E&]#BCJ



M:0%P,4NRT_4&;GJ%PR8<:F(N-O61DA+,!$/$]X^0:PA22)MKAFML^H*C0D,C


M[XQM3&^6LB]<E-ZXI&KFFQMIJ D;^NY>W>^1(O<>%=;HXX&AOIT(6] <MJ/B

M,^?P8*0_- ;1,IM$W\K]8]+]G,->)^%IA6QCU"-?$^YR`7$"[ ^6FB>#NN?)

M[2VE[%J;J9ZT^A^:S:)NNN=)71T,7%UALTV4EQYU;2TC;ZM=A0"LD'.KB[^5
MY<$7]ID2V9Y>UZ&3JU-<N;(/\<T8!SJ28'RXB-O0*[/JXTS<TN0.QJ;W**9]



MI0G3Q>(/0%0WT)5<REOWR]F%Q\ID$WB25ZXM)EVJG-)GK,]9$5JC3.27+E1%
MA)$Z<X?73O7E(IN2Y(T)4\&OG"OWQ>X-E;,KB!"9OJK;Q<1F62:V/#K;URY4


M5G=M%[47%M0A;(0[&C76MJG]L5C!^(57M5?J4..F0/M^+P>:F%QL![<I2AXU

M7F[E2P-% ST4XR7KO\91>/-8?OI/Y*WI5PPVBFLN*T;KBM=6R D+_: -6G0 
MD$H`DP0``$D+```"L/EU![BQBC$=,R4`( ```$18;6PM=C N,C!<<V]U<F-E

M<GYFLT'LWH!ANP9&PD!C(5=W3S+UW=U9?1F/"$WW:$'CZ,JJM)5=7EX\QO0 
M3]L,TNJ2I+B7.4JWQI==+IY2/ON  7$O!?O^[%O;W &WGN/JCD0\]_$LGP[(

M(;XJQ0B. YN:.5**6NS?XH1SY(Z34IZJLQU','W/0G+'$B(WJ/3^'C_5A-FC

MQ630+:5<\%E)NH(/8+*?&T/GF"E)>N.90EH+[\/&H;#I2 M=/? Y57Q<_JH^
M4"Y;+)= -J1HI5%! 6=C$-!1U21B--('Y& UH60-&8*$SUT3I4*SM 4,E<0 
MF% \JT(6<V)'G"NH3B3U.$.,V.2+D"RU0Z\2:&P\M=6Z:K"H*]."SL-0B3.J

M`L1I$2K0-><1K-ZVMRA+PN]C!XQNW8.37-1I,+*W1X\FO>A[A7[[1J5$0,*Z

MYW5DH,J<H0<3'M$Y([$U+B% 6M 96\1;1XHV/[%X'>K&BKDN91=DLC]_LEQ"
MZLTCRG$TY9UWK^6[$^,C9V36WN?-QA>,.E>BBWRH-K,/BFN<4UDD4>JE X].
MQ" [%$B9#N
M,$6P/9\84LN4LT3$3^8&5,['8^H,` R]5<#G[KE[-?&]=X(_K1'L2_OA-6S7

MVX:N?8JQO*;/)ZX`[QJ&,Z^=.,16\]$F&L2=_1 ]?_L-OX1W:YNN9.:;G6"6
MJA*:OU.HQ:.TRG6/%Y=?MJ:H_K;GND! [H.[;3*,RO[7O8(-B]%<O),!/5E 


MQQ3NQ+"5 ^8= *YE3?W,/EX5IA"U($[1T$UC3'E+%K*Q)A**=H\6D<UZ#Q.[



M_P(+`' C,/ D3]KY&<P>RBH6!!V)W1\'[21 U5WYE5835AXV%+WHUL;ZFW%L
M$ >'];WJ._9ES%\$TP"_L&XZTCVUOD5N_\2,S70 D$4`(PP``*(K```"VU.[
MQKBQBC$=,R `( ```$18;6PM=C N,C!<<V]U<F-E7&1X;6Q<6&UL3F]D92YD

M%DE-G&42 B2^C,$S_MHB3DC1)5=%FST(IM-S,WRF/&T;NJJZ[K*_+5\$'#SG
M*JQ0JO"A8L^?V_9K>;S?01YEO7?<=;66_W =]S[3:[1ZG0WB <?>6Z+B^QKG
MI-,0 #Z_W+W- -/7] ZJ$>MB*'F?Q98WG.6)MU'XQXQ-N8F$>]S ^W 8(?^(
MC</,Y B!^_#TL1G0


MCI&'DD.Y1-D$/A?$NY:;'XB3:1*(S!YTB1ABQ87XQ9NY0F78FA,AF4?!( S+
MSF28P G++$(</!; 4,MNR2 I2$?/6?Q&1Y%X]P0YBN2++ [>8UMMWKCG!%R?
MJVS"(O#S#S;KK_2/"XFQ#F2+6U.CIDVXNCA -D<<Y8UYRC$8,RDB+S\(KF!0
MV4194V*=W49MXCWR)"P N9AAP5M9ARW>G%E,%)J+[#M-<RVQ)[MBD;;0;$6)


MNZ.]+>YT,"TS!ADJDYD8:7 N-L8+NAVP1+)C3+WOT)"I WL>S!?-; [\(ZNV
M812[1A(*-=(F+\(/*%^MN$U3&E*92"/6#E 1X]D%I?E,S;*S" Y)#PRJAC[O
ML"^J+(G("7$$DXGZ< .,H(DG%IMD)HYF!(3V;MM+DK'6&GT98"6[E>S+P[$W

M^]:7H$3]1>DDW (<M AL$)&LWVCK$J.Y!B>),<.0248ET*<WI*E1M(I+0\EE


MX-_A^(,3;$ <.7A"A4*LMFRYWG^EZV/S*:](OV)I]D03(FS:)O]N>H^>XZ,Y
MX= .`9"DB!F^UX(;8B6*&Q\)D6X%&"*-J6HI&-SF8Q,,C.\&F)UT4>8==4D1
MAC..8#F
MC_5'`^UU^*-L!>[IZO.GFDR; PY=;2X F&- Z\ &!EQL9V(2J,#G[%5.19Z<

M!E (2/V; H,61Y9U#A
MS[PE>CNM!4#A,&U5]H GX4T!X#Y

M.5?6F=,'!+6[E^L=Z<4SGL"0=5>9/-VYH7 '`19%1%[9:Z4<.'-'Y!O(WB ;
MSY8X[ PNP=ZB1F+J1KE?"IFF: =L^57HK1EC!1<T*J^TW5(%"LL.!)5&0IE9
M>:.]H7G"ZI%*EU  ;L+,"T=;TA(MCQ;HHJ96G=(Z'Y1T$MRM=-G8.41D[*.I



M3E `Y*X]1HQ(B"=FEUH5IQTOH<H"X<9K[1N2MA;58E:H8YD9`=UJQW\D`3_D

MS?37-C(WYS$6U=H\',9P&>95H\I_C+K=FQZ?4*MDX]E[_MBXOK_0"W.9?&ZE

MC/-1I$JF5G=S%(>SSN3Q,B4Q4' 0-\?*AB>KD?3:<%P0, *3T)P$RE/(&$MN
M!"NU(V\%<'R^5 Z/^A#P.
M5072S+SJ<YMS?&9?Q()0/$M//,;.8E.4^/N%9 4%<1\M!MFUIVSCYS)_\*E]
M0-^2,K=,GS/MLD ;<!5<I(05_ .,J4=UA/3S34TGPC9$'^HKE1TD7ABQ/**>
M0 :OJK9K:-JKJEA25^(8D)0G"]]DY&LTK!452":-X9(CF%T9[G%<%;L<9;(>

M9O<FXX$8(UYB4H_CICA;5S7.RQ3'7W6 ,M%XFCF:IP<\DBH=0[SN8>D;_.S5

M!QJBLR9K2K5[0- 6H)U6*LXM?C[#J7M3Q9I*Z&O2>+N8W8Q^(B"?!A^^+8H0
M-3;JJNW5=G-8O,!2^'P^1MD9Y6U>K<_DE!D0U,6LTF06Z4UQIO&A/]4SCJXP
MJ(5$<,\_.BY322G-&\3,H9%ZGZR935EPE:#TY;Q0(:&6_6,]-E2:&ODJ/IFR



M'K K7_XZ9-:ME/BA?>],P*[9D]A3_;U;;<)JTJLS$69 [/SC"E$6J'0:UO0:


MG9T TV-!/I->&<L!.K5^QN:3U3QJ_DPQ=*VQQ*V5-RVUH;$C^[G0>**<7YW=
M4$T!/BXD44\5OVCD3N7Y6&E%9%?VI"6(4G[,Z*R>!H+FE.F;3]36U-K3+[$P
M_R8Y&*)5E#Z.-
M%ZY[ QBF[]WF'Y6.+S3ZRHNE.AG]2:C_.$/I3L$[FUDO?/BX((*KZ.J+-5T?
MR&<_W C7G'5NKTNC*N8X\A]+SSG7)JS18&\_IU2F3ABB4L$#ZC'6J86867:L

M"0)[DH/V/_#VG(.,PIMLRK"R8-L\^V%M5B%24"NL,'H.$KV8+=LCHKIP$!A&
M'S3U)5$!FEZ3`1.8>4.FZ2%U0^?&EL,7+% 7'QN]R&[&.N3Y+/Z(?/UQ`A1=

M*"E>TQG21:9/.SH4>E(:[H<V<;%YLG$#TKNDB?1,CQ:9/5Z8,UKVX[N3ASLZ
M,)\_JRQTK-"$$/RA!Y6P;UD%=NI!16006Z<#JRC.
MIAM85]CXUQ ;/RQ%G*TY [,RDZK'YM[LO28).#Z)"-G'2FVXU!Z'8V/CLXU5
MFLB$)?*_"*_?QAMK\1PJ0^TYS,)H[$KG"$ZM<*G((J.AO >*^_FI]T:)^9/T
M3Q$,M0OBN74J6=#QNQCW^T\J^B^(1%ILV(IJ-(0!7I-4_7H0_C05T]$I 111


ME0+\',?A6G==4Z:-W1'QWEFWH H&RVCDG-YH%Y?!1(N-6)I/6DI+-WDGW;17

M5KTX((3M-?YQ0^^-\[CZ-3D/DD CB:Y-ES8_HC2?=E GV/YN;.TYM;&QYQU3

MY(*.'S6W9/-V^W=-RP`D:%3.Q<QC_7-]`LY:(9UXL<,!T,^!Y1%%+S.&]T1H
MHYS9[^V <0YP)]T+(9.>O#VK#U





M&<F>PH"+07NDT8EN9! /N&#VW
MK$,"0=G2XY)H?_K]AUM S\T*]I_ZXH7$U%WAWL]\'(Z,3,6.BJCFAA]QZ7FQ
MGO66T"W.[BU6V#VV24KKO?U*$KDWLBI?ZT\G?E'U[9C$"]64 %4)(QS ";$O

M)L8D2BM'=(S-A=%!14]G3*$[S!I\F: M]9G;S\0S'N!M*9DK2PG,BXI4;2F1
M)>$Q6,:TRJL&UV?$5J/;>-ZXWIB\/ BI7>!!9]F_7\-ZXXPA/H,X-&\A'ET'

MPE\`IQAC=*T>*8:="Z3)J4:X00&+WO=\6+$6H3[R6- 26 `7U!75FF;.3'2T


M6Q'_P4V-HU' ]GRXUK]\)&X9*0A(&I_Y(^6F _7LT]-L^#F^5 IS]$H&Z+-L
M)7^^;#MW+EY2T783J)^H4HD;*64(S$RKI!NY>4WE6Q)QP8_UB*;I_V(H=DG1
M__N;[8\E`;_<N64A*]XM/GKQ7^*;3S,7PLDA??' ;_60,#HV

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
M6V\]#T

M$"T I?[_/3F!': /YF\R2DTFY<$!3-""0/J ']V4S9 HW6_DUU5/E.%^'G!3

M$BQ':&G&6Y>J(^+5;4E7)U>V#W9VVVWO]/?(A'9-U5BHWH"'P5$]DEJ$3].P
M'PDFB&<8IG>B-J(S1DI83KH[: 6?\$7SP&!H(4'"JMR0J(U6 #KW]=6R7+%)
M`P%RE(N71K>=;,T"? $$-M32%/L`/9*$  K8S1G(`3A,-F:H9;*C\ RHH&'+

M`8:'4TJ,844\SL1NC-.Z=L2/CR6M=!N XQ+ \_7P:J$!B]W-\K `^^ SD)1P
M4[07,P48VK/U`GT<Q ]7*=D*<?2A?-[]$,!_ME&G`J/?J[AHN(.O5(E-/R6G
MNE6 ^);5M$FOL*7_EKEUTE2G7_3J!]L5MDBM./DG#CFR9#QW>4G7I?</T]GU

M$=?_GDJ854F\FZ2(PQA6"6Z%AMX "1-OEMJ >2%.&C!3884IGZ7 3&SOQE*^
M&R1C%!#DN*5+D134'NMU"(;V+^N4 3% :-O&HSEE."^^)M;EUL5F\*[7W7 N
M-2I1\+.Z25UVRNNE3[ K\DU5?NF8XRUT S/TN1EW\FVM0YXG`I5IE03I58+/
M*2EHSVDN,J:E6A6BIY(:MDUC"\T=>RS(`:OZZ9+S"ICS+R$LLN8$7\=O\MS$
MMLE-*&O;220ZOUW(:_)9;;*Q-O3QR-/2'UQ0F)X1P]!J1>W7O!7U_HSZY,JK


M,CI*"5*O'_YNS!(]V/FG;0Q4%V.5:,>_T 0M0FP::_8K'/VY \.JE&Z]4_?&
MN[FQL< D/>_B"\D<E0IH54X*H3:CE<FHK.X#GY DFE-X$5ASVPZZQZXC6^ZL
M,/"4,.X9P,_TL2P42S-82]WB)/M*16(`_SQXQV/82;(L!_J3J+;-VTD75**'
MI H=/5-JU3PG&)3;NT)E=#Q
MOD,Q6:ADI#E?B*6 ^(Q*!TJ* _[S$F]YV-AU,J 2S?'>5'/$L^RE*3XU0![4
M+NO)Q66]6W Q'P8OY4I_R(D;M-1,<9]F-GM*SCYPZ6'*^Q?P25_X&W?M H4T
MV\MF4,RPJ+M?(/V5$!BTT66=J>"S(P-1[#M^+OLBJ,"9/A8]A(SU#N:P*/TB

MS8HM,=3J-UK"=?)=7%Y(6\()K>S*O/=39ROU0,^P->"[9.N#K2BT;SUZ)MVX
M0%.&Q]4[!X)"QX"Z-+/\M3:XW923/:KP0WU(MLZPQ?*JV2F;U3R#T1>:]4CL
M2!9];S&OU075K,-M!Y1KWGO;K J; U/AOWRZQ*OS&"CYL5KF>3Y^52PU,/;V
MM:*W+7/B+"1)QZV'#K
M5OJI-F%7<0>4_=6%OM_6JYF 1\W#E "Y6YQ-95JP:11,*T7#Y*-GI=VJ6P8=
MJ3%=]2UV-6D3Y*3BR-J\!GKN>=FYC_PF%X2ENSBO2IWNBJWY5>>$+G%H\UKC

M43<_-N+!EZ&[0IJL[W&./\;BSVLEXLU3WU-;5-?P*'+"ZL+<.V._B-:!_$DL



MB D1Z'0 D#H




M7J"Q?<!?&ZW<Y=]]LYD!'31:S*S19&D9W]V]%G0 D#H`DP```/4````"&VJD
M.^BSBC$=,Q4`( ```$18;6PM=C N,C!<5&5S=&5"+GAM; "PP':0"94,S/V8
M$3?0O!V/1=<CJ<V1RSBR(X481MP;A2]\H6:;^"ML;H^$+4EF>6"7(O+!&9  
M6CVS[W!D8]UZ$[9N>IK,"A;S*3-F34J9U]87Y*47'IQX(<UNQ!#V<[/AA/3 
MY8 2%(?]$ND;.RC']RS>`U2LB)'89P&BA5'G-5 &_#RRWJ&2YL9?(5ZW_DDP
M\1HJ0?\(63YTX) O````````````` ````#NLXHQ
/+C(P`+#P[ '$/7L`0 <`
`
end
Dec 10 2004