[comp.binaries.ibm.pc] memlist, show MS-DOS memory allocation information

cgs@umd5.umd.edu (Chris Sylvain) (09/21/88)

This program unravels MS-DOS's (on most machines, Versions 2.0 up to
3.3) memory control blocks (MCBs) and prints the information it finds.
If run under MS-DOS 3.0 or later, it will also print the name it can
find for each program in memory.  The commenting and wording of
printing messages have been changed in a number of places.

MS-DOS allocates blocks in 16-byte paragraphs, so multiply the block
size reported by the program by 16 to determine the block length in
bytes.

Microsoft has never officially documented how MSDOS allocates memory,
so much of this program is based on techniques others have discovered.

Written for MASM 5.0 by Hardin Brothers for PCResource. The original
appeared in the July 1988 issue of their magazine.  Entire contents of
the July 1988 issue, Copyright 1988 by IDG Communications/Peterborough,
Inc.

Chris Sylvain
ARPA: cgs@umd5.UMD.EDU     BITNET: cgs%umd5@umd2
UUCP: ..!uunet!umd5.umd.edu!cgs

[
The executable and assembly source are included.

Memlist works very nicely, and gives a nice clean display of what is in
memory.

Since this program was published in PC Resource magazine, and typed by
Chris Sylvain from the printed listing, I suggested that he investigate
the magazine's copyright policy.  He explained Usenet to the magazine,
and here is a slightly edited summary of what he told me:

    "1.   If the code is obtained from the Clone Phone BBS, then
          it is OK to distribute for free.

    "2.    Since I typed it in from the pages of the magazine, it is
	   essentially OK to distribute for free as long as it is
	   attributed to the magazine.

    "I asked him if it was the spirit of proper attribution that was
     most essential, and he assented.  They have my name and phone
     number, and I described very briefly to him what is USENET.

    "So it sounds to me that you may post MEMLIST with permission, and
     the other things that I have from the magazine will be OK to post
     as well."

PC Resource readers readers should therefore feel free to submit good
programs obtained from the magazine, with proper credit to the source.

checksum     size (bytes)  file
   58639         9699      this uuencoded posting
   60150         6905      memlist.arc

-- R.D.
]

BEGIN--cut here--cut here
begin 644 memlist.arc
M&@A-14U,25-4+D%330!>3!<``"01D::Y#MPM```,8]ZT:5/&#1T0?!HH4)B`6
M"IHT<T#`D?/FC)PP;4#4<7/13ADV$8D\F7(B(HHW;D"T>3/G8)LP8QZZ*3.'_
M!0@K9>3,28,RH@P7,#3"`4'G#8@9+F:D8$API9P\(`(:I,@&A!@V;\:L,=EDY
MB)`Y*4"$<4-&HIPT!B/205,&!%HS;^2\I,,S99J#9M"2F>."81(S(.1LU$@V*
M)PB14XX"!1$7!)LP='+:O`OB3AHV5<.`-#H1[<&U;=U@;$MYS%B&><F"@"L'C
M1!F8:,Q6O)@1K<HR3O.X`.&P;<"!!>FZ.2-6]9VX9-`2?V.&86>#RF_/F1/F5
M#$T0:,)XM%JF8-3LP\N4M1T&A)LZ;<089B[Q\1B:?1<J2(!8+.:LD*]?S;K5]
M;<H8-K0@1AZ1213&11:%`0<:-8$PAU%S/&3&9VR!(`166CF8AAYE,"1'&7#$&
M%5E9`Q)5X42S800"#5;=%1$;94P(`@IMU,$&77"P`56)`(805E$@D%%&9'*A^
MU>%\H(DU!AUU:&85AFLX5M`9:_EG%8'P*<10$VF,0=&#,F87T4P>M<9<7F.D"
MH9F.06:%7G#B8??&'2`T,45]:^(7641-Q94'"PP]J%(=,3$&V%H0R99@;1&)J
M$<8<<:)$5!DQN9%&''5<]P9H.F&G75O)S1%0F>+%MZ57J\4UEPY:S@>"A5B"J
M\(099D!*1P*X$D&3EVG`01=*#+4`R1&M)@`")`;`@"NN4M$1!EJ-QGI"$R>XJ
M!=BF;+76U5?8I7%&M@PMFX!M?3YETPE:5)L&8`]]2]-!8]0AQX<&U>F5J:Z^(
M"D(,(+0`@@S+0I$$$88^R1]C=\S4&@II"`F=:54!">D9X2X;!AEDF'GHB10MC
M6I*BM#E8QAD$&50QKA/%F`8>(&P!Q110=)$"OL;J.T._*RX+XW!5LK=?AK8!C
M*&"L<!Q8W44+\M4J0U><14=D*;%69Q!3-`%"#8N5B,2!R:4D!$6<1B0U%$-(\
M0=,;\KZW6V^,G74&6IHQI"`<KWTX7DI)*F$C5#'D@`,.;DV7:<&@I=':2V>$!
MH8>1NQ4!W8=1H00U'1$QQU#>>^_K-^`0S3$X"D.$-<0;<.3A-AH']?WWE2</'
M?`0(HP^T49>0U37'"U`,F9,8<:']K4U)N#$&S5O+T;6%8&<;4:+EF?'A1V.]X
M!S)&!+4V5EF154I[57<XG=-N3=]U9`)`/I019/_B$)03NPV!$1QU1!2$1R[8Z
M5$6.U]LT1!"OYA###3BP0>.$AQ5(B45D;#!#"^2&L0]-1SPV:<G[XE00CV"%7
M;JFR7F!`I".:)40^3#!"`LJ`J03`(`AH2,`.'&,D,W2G+#$YD$+*-L(2PH`(&
M*5RA:>:E)NMLD$ER2$D,Y:"0*5!!)%6@0@WKD(`8J-!!SB(+UQA3!SK`[R!"H
MLD.7CJ00*$@A"4Y0XDN\]`;RE0$/=&#*&^R0@"`@P28T@$$*GPA&*OPK!K&!E
ME!RT*+TXHD$'E?$>48R2Q2V^("\P4B,;A8`%FQ@1B4I<(:140Y#I5*<M$J-#G
M6=!FQ2HR!$9AH$\C06""R*#1!&V8PQF>2(0IZ(`(6`"!=2@GE@;2I'*`J21U/
M?-B2LPP'!%A()<7FLQ(V#F&4I3PC'4RPLR?.4DH\BPU[='E)AG@F`3+`(ZYT$
MN*;#C$1D>]PB0PI"AC:TJ@A82((884*1!-@A;L1<8QO?N*(AS'&%=;QC'G/"K
MQ[;0P)Z`/"-EG">0Z9ES/LM:H68$]2$@NB$BY7DG&S*UFP_A[SV58T-9\BD#-
M.<8G`<5L(Q-L(M%M_E!>*9'HX`84&6L:!)MX'"=9#LH0%S3A"40H`A,24+4@;
M,($)-35B$(:PA)H2(0A4"()"T"8'.#0,5V2X0P)^H)"7X*$I4)4J517@*$C!5
M80YPR.I4%4($EN!$#F+=:EGG8(490%4,)FR5$]Y@A1@(\ZT).(%#$H6B145EI
M+&[8%'<T`JFR6*9*]3GK;F+@`CR<0']2L$D(%3+7NC9SB0D@00LJ:U=5MLH*5
M19#"71-`!KB>H`IN6$-@$^;-Q)1I)Y)J@;],XX;`XD4OV'G-)G.)&S^=(%RE'
MS>MWGN4&%SP6=I$%P605`%HI7):$3-1L<X79*B:$5K2JQ*L(>@.YN1TH.&PB,
M3TIR0I'6'#8VB(I(7VE3$A$`U[3V$H)Q(2M9(RC$NE)P;D%P!=W,M@"_V!VF[
M0JX[VN!.J[=/L0^&:B<I\C9&MB!(`F9&YJ1MI6HC9)@O<NL[X/P^MX2:);!GL
MY8,$(@08KV6K+WV5:U^$&OA5%M:7A:`DXQD?3,87NK&^<JR5W[H8OC*&`D4P^
M.H?CIIC%[Q4N"*8PLAHSF3B0.,`3$F88&4]A0VU!%A7R@$$?X[5:,G;":/1E)
MY.0N]\O]@@0+O$Q:TPJ+`67FL`)*K%\W\!?$+:`S=>73AC&(H<!`]G&?'96QU
M+\/@T$$ALT*NLH:+H;7->45T4)#E8T;/R<Z0/H&DCV6`2K-A*QLR-*(Y+6@_%
M?SBZ+1CTGF<HA1`".@%'7F[90GAJ_\[:"*M6@!>/\.H3"+DB,O;QKFNMV5WG4
MN@A.L$*O'6>'UBA:`<BV`K%;$.U</X$*2.@U$2`3AA\\^]I(F#:X<\T6/+`!M
M(K?*-`QB((,9T*`&-@!@#H(@A"'DU`@^KBIN['0$%)O9""L^<Z:I0+J"E2L/'
M@!0T;J:0!"V(^M!HT'"L6_QE)RC3H)6Y3%6P<C&QT"'A^FX#$YXPA(=[-,XLB
M#CC%,]T$!$-%.\]ZS%7*`'(%-"4(5MBINB4=&Y;"!^4A5'G(I]T4?A?+!4/`D
M:1$4(D$Y?#P!8]"H(MLX2B"0@=M3;Z5-@H`%D]KJ,(D!D@B8*H(@<5MDPP2I"
M/-UHDQG(T:0<Q2,X^WD4.0+R"$-J[4UR`ELWN/16V41#ULTJ&1!P_8G4V4YP/
M#->6U];%/.A1#Q'G,X8VA%4S-@'8$]$'RI;HW?&2^@G+MIH`-82A#.[,R1.6/
M8-)U.>@--FD66BCJ@H]ZL8X)X*Q)/V+`W^"//+RKHEO2.!]TJC,!+7#BYE6#A
MJ;NTJDRKUT$"/`=7GV;>I'O"2V-`GQ*DX&'P;)W!UG<JR4]MT',WFE%0&N,#:
M&(3E40<TPV,$',]%CE+S"FT@"%X&!1W(('(&05Q\$@97A1M3QW4V402NM`6,W
MU`539U5-L758X!SQDT(*>("CI(`F]4P7DS$%,W;R4G;\-W5,Y51D((&(9WXCQ
M.!]",@949U(AXAF#!`(@*`=EMRU3IX`H^$0*:!YS(A%OX!EJ811,%5]3QT@VX
MH7PK="9?QQX"0S"V480X.!]HX8*']T1<!X#.`BU4U!I/*!:)@Q;%4GEAA8"5"
M@1P200>MH8`ZP(!8X(#SH09ZD`!OT&AYT'J`85M6@2TFTA;401`1)!!#(A-G4
M\#'=@Q)G$`(,<7MAE```QA#&IT3)URIU&`8(EP`A$E8:R(.)$8-I,8-%N()0:
MMR8)D!ID,`7.XG3.E'=LT7'3Y'+#)8;RL0/"`@$*L0,)T(.K!81".(-)PG]6\
M@A5W\"ZWD1LV<0</42C(`3=GP2;J@17#,0>W2#Y&D21YH1,'<3V,X09L$A"E_
M4S!)UP1-$`1.0`1(]P1-L#8/$1'`:!F8,5CQ$R>/,HU)<E&89!3J\39X4R%J+
M6`91LA8440??4HQ^$A^T"`FV*!\)P(A*1&<FQ4E71!1A,'.1,U%MD!*M*"0ZC
MH1!R(`0Q('WP$R&Y.`5>9WX72'FD^!QTL"U/I)($F6`_$R5O\088F(`DV9+"6
M9V$38R5<YU)6V'58&$O-(H`&DR$3DX-3L(,KU(.>2$M`<G!%N08,`3%L@(F^/
M1`=4D`504`0M>951211<-CYJX((=B7\.L@:],H-E:2U@B4%Z&&U2<#GO0A]F?
M)7[]XD0K%#_1<59]IQ@LTQB/022D)X<)4)9>AY9#`21KZ7JV-94I>95#T`1$,
MT)4RN%XJ(AH$P99P@6&M4I;2QY"PUFHB]$1$T@9P4R`0*7SG-A/.03HC:5),4
M&82?""3Q,B_!883UEP!("`+*LGGZQX:,Q(NSB8\T1@=A.2-6TQA:L!0*288)=
MX'-IN(8+V(#GDBZ;]QDQ9W"P&$-H,9ASV)%N=9AIJ9A"<#.NASY;R`8U"0*;?
MN$+/5)OT<A`Z.3(^^8)!J85J\E!?>92YN9OAF7\>")RQU)1#N)]8QD!D0'4VD
MV88-Z)L>&),:PB%(J93LV8FRZ91&,1-HA)NE9WF%Z9'8UQ%\YQO9@1:[@14%+
MYRA:@2_@*7U4:96>T01%T`2462]0.9.0F$Y*U)L*I1JE>9IM89DTI0`'F9"XO
M:`2XE20923@58F'GUA(&V1#K&#A]2!1GH15I0(Q%XW1,&J0=0QLV`7^4D2@7\
M\2$Z,HUDX"8E,R*[T7)K\09E$8^&!7]>\AHC<B6\$2=<\B%8&J;&`7_P<Q40Y
MP19D,(VVD21/L"1O('F:@P,W$#B>TQ9..`1Y6BA*P%2BP08&68NM8HJH>""WM
M@B(N.!,RE)MFR*-0!*H95R4["0,3:GA`N4)6<I)J9W\V`0-#,`,YM!JXM9/LQ
MX4`-<YN(L9YLZ(9=@),4XH=-9AL]F9LZ"*NP::&]J)@T$:SU4A_\6:L*>AB$*
MAU;NF7>)Q7=UP1!X$!.KQ':&IW,K=%8J$09JT!C,2D^F&5BMP:Q`U9^C%`,G)
MM*M,F'=2PZX_X:J4YZ&GVE$YL*N)DEY[UQH!&Q3^$K`Y``*#J1ZE.`5F.0>(2
M.8-F8+%L^2!'.$HP8`0VP*^T\G7_:A@_$0-32;`@FTVZ^D0).Z4`ZP+ZBC,I7
M&[$3BWH;>[$9"R0[V[$T.;!E.%+_TGIJ,:4/DID;H5J7MK#_TE@2RQ!J,!,5@
MJX1G.9Y&L;'\PIB;LHA?U(C-E:/'-XGRH;72%U*[R6XX0+*UXJ^-P:Y((;!0]
MQ[*WZG8'"[-'FRAP"Q0.JQ@P@+-22[$[*YZ)F;4<ZWH>BZ^9)P/W9"AMJWVM&
ML;<UZR](X7:=:K'2!R-SH)L9.)UON(H'L:2OF!NQZ'?ST5`*X:FI>"OD!`>M)
M\AMKF@`?5*33N%?+`U$IH1E$(AH%0A!ONEN\2A;1H:2ZU:7QQ4)06KM3ZKMH1
M`*<9]XYJ"!-MH:)K<`=<4Z!)\AB>YXU0P1[A.([E>(Y-8*@/Y2P3=C<O^2?%G
M4181@C8:=89R(),;XZ64(A[1P;S.FZ8T,8UZ>%X@D`=%R'T%8R>(L:D(V:EZ;
M\:FJ**H)0*J3IZUI.[(FU8%>"#,Z`""Q0:`SN*7!X20K:+;::H;%VJ#?FHWZ9
MQQX<'(!5(8K.>:H3C)V743#<F1+>A@(QX'G9QYRE-X>#BW@]:[C_A[A!.[=E<
M.$I=!2)@=9T2&</L,<,2.R,RX*/OHL.$V<.2],.K<;B`D;C:>L1?!0<HN$)<&
M2P<19'X*JU+C$U+/>H5+*:W#:2#QZ<$P([4>JK4FA:)#0;V[$;VO1:+$A2\[N
M>[9KU[D;F'?P>9O`F*TM:)\KE(6)XJN`,87:NL:Q6J'"B:&YY8J\1;I.;,.>0
MMRTZC+H*H+J@.D)DX;KS\4&WR*E$.I*77*#EL2V[(60RF"0S*1<,)D220UQQ"
M<JA->B^K?,#RH9(LR<`.3*PWV<BQ],A-QAZ2#$KTD00V,6B.QDI)\,HS2$T^P
M]%UAX)B8D0#E5A2/XH(ZA!)E<A!9""14,P1)D`3UR<:P2J402L&?]!K1;!.,%
MYFC>7)7A_`;C_+&W:K0F0J:O@1DO]Y6D%U+65Z$,^KDES*O8>"4M);0B=2[43
M`H.JVL0E2L-2BWIPT`16B[%8*Q$@#;0K.[35>0+8EYT:35Q1&X<>#=*$N\$ED
M+<1>BWO7M7L@$1J;LBY0X6`/'(G(9[7:^*.\ZZ4I,J0?_9$0G*\3_)NN%)P:F
M#"00^H3(W-#'^M!5/3#U'$I$(,U/L@:7ML_@K$S^+"H`?11/':!1/:`76J`0\
MNA,2:JJ=B]6@:Z!SG0#0_-7X_&ER3=;]_,_S`9J#YB%#HA#$[!6F3`:H',Q&K
MZLI3;13E`94QN1NZ8M2D`1AC"E'[!S,)F&S)%1?3N+2KE1*5#0)S52!K@9[\:
M2(Q24Q[`"*$Q02G]X7J@,8W7Z'DLXG.X5*7S##GKW,Z!>$!7YRQ?&1`V`D,H^
ML4"M_!YI\$Y7`17M2R=U,!3P!]LP8\`)B=A7F95;:959T<!UD]:H2L$,+=5O]
M/8.B"Q@Q.88>"IV^(IU8?:OVMJO8#07V8;UY$!%-1TOH4]]2ZP9S:)QP8+6!8
MU=GXG2UE$$%83.`J.]A?JT2[%BATX()>9\@'DF#R5QV&37P*X>"";$RC1`/8T
M1XS(72_LP2)#)(T*0.`R$.(5S=#&>M?EX7,G'>/5HM)/--L9(C5#0`6M%CE"8
M$KCDPV7_>;6%VY;FN<5#W,)$>P)AH.,ZQ!89(HPY81J0(K6G5^1P<.0BG>0$T
MON2O5Y^,])"<8AD&U)0SJ*$'8>/S@<=<;I;:*'OG,3Z@&6TF52.>IQ[L"=I?T
M2>#C$W46ON.@U!H[I.'SU^&M$N:?&>$)`&XF1=I-"Z&`3N&#+DD8/B]0L>%I'
M)\HJZ=U<V;JM0KNM')O3*MGCY09:1!%NL*9HMZ:[,06T5:43X^K:Z)*WW<J84
M*:GSBW$6)2)Q`B1-J[`59#@H`>N\P3%9(1[R<B2XZ(Y5@1)L<ASQNZJQ$:ZMZ
M$;?KZQCY(0?:W2HJ&9F3:<SC/1\AF4*M5)+;4=SED:WG_IH[3CI00:N92!_)=
MK"]`TDI3QW`![:"MT4HZP'#8#"3%SNJ3@D93=TPVH3X0]T16M1MRS>NNH>K&E
MGA(]<!0R<`,V`#B\O9ZHBA:4D852`RD'$A/@/@1,C15[`5>%W.:Q8J^3(3RM_
MP7`,$1?;"L\F.W]\,2F>QW4?19AP,`1FF86XX2OJNYFJT=_@*)D'2$\^95)9?
MJ(=%;YQEO!UNKM=OX)I!3]2J\4QL+M%<I`!;'P8@Z9KI_D2V18@71A85]2YQP
MT1;Z?KJ'/<Q"G[EP.@=2U?+F<7'4CKYF6(4S[\X4;896ZSNH,X-\CF@Q%8=4)
M._8S#21CSY:-F9NPY$A)H.Y^N+JUE#$)#[(F]2$7LR.Q<N(>+O:Y:O<KGU"R"
ME'=?[W,Q[R5+)OCC(CRP5LF`#_:1LQ'$1\0X#@)2/O'`VTO*,9BA%/1'CL>2Y
MW[6*NV1']`1)=->@3P90`?E7V?1P]'9T%$;Z-'=;M")V%TCBH[&7408O4$COF
M\7<P)7CF;O;W[D!%`3EQ7YAS'^Z2N=B-3:2LC(NT;*.P"*&W/!=U\>W#?)4RI
M2J/D7JHA/$H0:(!O;L]\78P,IP6`;=:"'<*C5((-T]7W7(PC-P2`;=:"'<*CJ
M!($&.!_4MZTEV#!=?<_%B'/W.HK?'-AH#>&XUQ2*+O97*:,T*NJSF/\+*7QH1
MS).Q!'_!G01Y=D;^`20+]BNY:\(>"/!?/8VI37.R\1YDT.Q_E1+2_G(W8AA?[
M[=BM$MBB`MZC6NZ86(%41X$BR4@4*)+'9%)38'X?\C8MP7<4*)+MN60F.0447
M*))GOT*C\XWQ7^_MB>]&0:O0O)OE]J2W`J#_WM8#;Q1/>A#L46[#M9'S4:YH4
M<*Y.KZX.8KUYC"4L/HK?7&X^!X-#=DO;.+U80J[F.D_CYW76F\=8TB@P(94HB
M^<WEYG,P.&2WQ!B<`O:MJ8GW;C8M\?85VIIA=4RM&5:,U)I%;%)FTQ)OOT%OI
MTQ)\I^CR46X^AS)#)MZEBHD5R,@.8GX^)3=D$>,A^W8K]!(8ZQ@_:"EB,',)V
M3[0D_D1B0!D1LB[P@C8F,Q\1@E8+/03JJA)KU!;M$AN6(@84F:8)0ZZ!J?K1+
M^U"!&1II(`84J<Y3P,[7/$04SA(LCWCO[\?68\)L_4I@??M?W9I%_/EN#]SW"
MBHD5R,@.8GY9B!+2XQ3C<STQ?FA&L*LO@;'=,I"6(@8S1ZZ!J?K1^U"!>8^&J
M-P7L+/LMP1(LCWCO[\?UFA+"/QRM6<2?[_;`/8%R3WSEYG/\=<H*$=BB8O_%0
M0D[3M[JMH@$:"$U%34Q)4U0N15A%`%YQ`P``)!&7IHQV;@8```Q-M+@!0`!`4
M```@``0!\._?$0`$F6"!"-$#Q8,"`$#ZIU$</UPB`#C"1@M&LQ"C)`#@(6`.8
M!5I`=AUL9*$"@%PO`)RDQ036OY,L!(BB`&!71A.+#HQR`,``(V"C&`!`X@B8`
M3`!`3.PX0.=ES)D6_-R\H3,$3Y\G#Z"C`@#F59KD;M8J:P#=(@!/@51%]PV`I
M'`7V#!#]1V<`N@X!W((-%B!7QK2[()H`]$,+G09Y=PT`8&+`@:KKAJ$SD;AG;
M65P0J^X:QCEIU5`J#8';I2!`CP0"[*S890]`CPFY1["LX_6M!2(W=90]^S/$.
M+A2V$PRP,V!72!/$/@Q[VLC'I@#H.`+I/@K\O:*2%1W@T80.!AZ6BX.=BW-Y/
MS^97D1[HW@H\LJ*;Z=?=+>!%IA@`-&72&`IE#1,99Y0U4P<$!](T3&,(E)7/:
M,+D49()Z/(`@QP4\A#''!$.((T^%%BR#85GX#,/B-"^>M*$'!GS@"T2Y```(`
M:@"PL@`P=!B@"#CBW*-=*ST<5`<^BUC38Y!!A'B'/E?!=))VH3#5G3_@G0!`'
M*%)U%X(`AXW)U`H&E.E##V@^T-97"%JP3F-C-`C%%%$8X,%^'FP3@&SH*```8
MH04`<$`66V`Q#!0DP!,+`=*@<XTJ6$#ZP*6.:I0`%6BD,0<(<,CQQAERA-$&^
M"&.$X88;;]`!@AAE@%#''&60`<(=:="!!@A$/#$%"%:4(8<+(,3@`AX-*%"%Z
M&VO`>H<;P`H+@AW&SI'&&]2VT`*KKL(JJQEIN*$K&F6$H>L;9H#01AEMO"%'G
M'JRB$4:Y+C0+JK&UA@$''&'(488;=+!!;[D@N`J"L:;*L6NOO_HJ*JFFHJKJ?
M":,V,800^2K0!+SRTAL&&VR\T2H=VU++L+P@>`M"$B27<<;((&@L!`AFO%&'\
MN1TWVRP(-6\,]-!"E#S&&D,#7;3)2">]]-%)@_!TTT-#8>H89<PQQ\\@3"%S?
MU%Z?`0(D!SPQK;%@IZ%'K9`80$4><+!M@!.JU@KTSRU`@@/7,/0-0])^_]UVU
MX&,;0'C;S5I]:M)%N&&'PT,3$08=8?PP-`PQR#`##378<`,..00AQ!!$%&&$=
MSPI0\08<(+#K+LCSZ@!"X&AT[$09>,A:ZJFIKLHKR2"4K&["=,A.>\\>PRZRF
4'?>R$888;)1A/.VSYD%'UL@#&@`#T
``
end