IMD 1.18: 22/01/1996 7:42:30 micro cornucopia kaypro user group disk 34 5 games plus source (mostly turbo)   0P COPYRIGHT (C) 1979, DIGITAL RESEARCH COM$$$ SUB_͌> ͒> Ò> Ò͘~#͌ì DIR LIST]TYPEaUSERDFU GO ERA 5SAVEREN |GET JUMP21wy_H 2*y2\(z>/*/2*: )1wͪAͱF( 8 >1ͱ0ͱj2\:Ґ^H@Oy H H: –ͬ  #H: !  Hù H H $O͐: 2 *CN# x: 2 p&x~+é72 H! >w_: ! 5ͤNkͱ¦ͱxʊ#Nx: ! 2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!ͪ>2!6!~8 =w4!9~ ( ( (  > x (={!5 6>P(ͼʋ>o&M(:2,S()SY|(+! #< 'Delete FileͼY‹=M:!,= (#"Y G!~(p p2͟{_HÎ2|T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎb~#fo: !No Fil> ͱ> _a>(ͱ ͪ~ͱ~#  _2<!*~6z>_ F懇!\2>2a{_:*(Ez(;:=2 /!P!6#5z#(>$ͱ!2:2L>>ͱ [!F#~aw6!"Y ļ>ͪ*[~!8ͱ#2: 8=_.:;<>[Y o$! ~+ H(+!~ (#0 0Wy8 88Oy!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw*| ͔A"F2B2 >( 2_H!篶w6!>8 =Ful>}K"C{2!"E9"1A22!ty)K!G_^#V*C~E ,&-AGMS!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :E B 2>: b# : y! 4 5~yy5 6yì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:Eẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄ ~ (-H()08 80#OzW{_W{_}!9~ɯ2:\>=!\!2,S[( @G:(:\wx2p23. 3T#6SY:(#* 6?Zw?Z#6 :<2!  # ### >!~ -,(A(S SYS(Wx2'̟(g=`O> ͼբ J{ ͪ | xͼ  > ͼ (> ͱx 0 >.ͱ . 6?# AllͼY:ͪGʹ=>2,2("Y*{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-#   OTHELLO DZCOTHELLO FQR6 34-DISK DZC BOARD MQC8CRIBBAGECZM| !"#$%&CRIBBAGEPQ2'()CRIBBAGEPQ3**+,-./CRIBBAGEPQSQ0123456789:DBLICK-VCZMb;<=>?@ABCDEFGDBLICK-VPQS@HIJKLMNODOCTOR EZZPQREL1 PQS,STUVWXEL2 PQSYZ[ELIZA CZMT\]^_`abcdefELIZA DZC"ghijkELIZA PQSlmn:ʑw:2E**E}DQ>2HÙ /HC>|ÀÄÈÌÐØeè  0123456789-, .x2:32:G KAYPRO II 64k CP/M vers 2.2 >!2"!2":Ox Warm Boot 1̀̈́!",͈͐ *"2~ >(̈́!4(:.3ʬ.*ì(:.6ʬ.-ͬ!5O ~:.9ʬ.Eì.6ì.9ì:.9ʬ.?ʬ.E@ʬ.9ì:.Bʬ.<ʬ.0. ,vOTHELLO.DOC[04/07/91]% APA@ T4Nb

G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!Bw!>2*C~=2u:B2~2wE:A*Cw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6,:\3D,ɳT97Ƀ  "B  (اʨ*膄B&R @9iJӮ@v>9\N%at1p$FY󘚎u`P2/$c+`2B(n18th Ekk`Aa!hPR!pj=  v !OTHELLO.FOR;  o !#"$%&')(*+,-/.0124356789:tsh\M/o c0IoDJ/s%B\$t41% M_7ݛ;/ Cot;7d<n쯻7?|!nku&+p yӟ9uA`S6~׺ 0)kQM^ ^`S/xKGxE.O8 OoB&LK7䳃OKgm94c.{q;B|ߧIO8#)h\M8۴rcM8{ϥt{ϥtshMJLXGxqN0_!LOJH¿oM8{ϥt{ϥtshM|v[M漯uA`S6}ߵ.LJvb洞s6-M}O8 OKgm94c.{q;B|ߧIO8#)h\M8۴rcM8{ϥt{ϥtshMJLXGxqN_ZrE}EY} 87!0_!`S+Ik9EO}ӟr߄M.Emv"ўj}}v"啤u|"i\[MJv"Vzv+a@u޻Rfp)rDuދ7nܴdG?esZyӟ 㑡 ?%-w$Mn$OhM>-MJrKYёoӟ]K;QF6)ىE(E쀜_T?PіQQ?%E,ȷOIѮ(cw"R]Xzv@uޗUӟXD2P kNk9ySDuT_VR.MJ]-ʻMJvb)_@+95 :{C5nӟrJOAlmS6u?r=TCdS6uw߃=TCr~6?F=97a_b OG=h94ݦ?ei[V9փ?esߵ|5)ЅD^׃PD.7w{5-~=ڭiy5 M"AYhOY2 mӟ=Pr?e{'t=eoB&zӟr߄<.ovM=h:`o(lhÛnӟ󕐄}_4Ea0ݦ?e4eO~zЄq\ >@w ;.j0ݦ{C=hG=h94ݦ?%4a oSҮMX oS2.ga%;l{_[a$mxd8OwIxӟ# oS2V_32*(E6))ڵetnӟXD2P kZ^ȹ{_M"R]h6)sga2)t lM8{ϥt?cG4 cg?EM؟KtSnLt4t4qMO /AS =hAAva~ӟ{` 7tt$+ qQ(++anaxӟ{( [4Et+ 6))c|Ӄ&@.dG ;Kz||ߑ7);?%Wˢ|}hw"}Aw_ai=; :OhM[іQQ?%EeQFGhv?%;ehִրoSHQvaM˫5 :"R]Xzv@u޻d'^r~QMJ-SQ?%֛E.ERdD5)ɎLCKvdDaKvdLʆH#В7ga2)ى״ր/?%=h82 - "v>,L?%;\k ȹjSϾלֳr󾧚&i|祐Kgm94c.{q;B|ߧIO8#)h\M8۴rcM8{ϥt}/%XzsMM¥?%;隖s_ Tӟr߄<=hJ!SM=h:4o;[zЄqd'^6)AS҃&roS nM ? x#=hA; }CgC8̴TԿOoB87ޔbBk›ȹλ1P߄m}ӟ֛L״ r A}ӟ9s끩OIMG?%ZzЄuON.;7+5usDڭ9J5usDkZ^띛  SH ް嵆 n}vbq]2.9g\E}ӟ2;KC¥ȡ|[]'_7!0_.(?MJvb>{E\݁?ev"6;KC[ȹ/nY^ߺ 0)nY^uA`/ z]B[\Wӟ9gҺ xӟ9HMJvbq] t$iy9yWON,+25-g\]jS6],bahS2V>-MJ&e"Y?eGHQF#d' kZ^k@u~QON,+2!ִZrZMJvbq] 洞sw{ga2)MӃ&$gC@E Edt |}ӟ{ȇ CoSkZ^k@uTӟ93i=0ud'Ң$9zG&ai\a5)ى($9 ':s9ƭ|C"B' ;b1 LX5)UJ0c֭լkB96-)BH8,s%.L" L 1(tDz,Vr-0lHWkp!EQ8 1R<28Ls _T< XXXXX%U8!J{0ȣ]0S@`F( a`!K۝ᣘ꠷P:aZ Uc`1h: {>gv@0nTgU8肦 8HAsImH:5C?WC97ʭ6aAjCz' |;D9q͜ 6LXFk0ЅҨar]Z8 h.2J\U[d ́X&0eKZ4V5UAWꙢ:P lD" BKX6?F=?F=Ρ6)1Fr[?%;1bkZ^#k}ӟ9k}n=dd}̑Ons9ZblӟOϦtsh\MO,L?ev"6;K[V1aqLEOQv6hgˠ)I茇l9]œ".q'QnP_+kn.#w /Uc#őu'[u-{7ؓ}n@ltM96д#SUk);m% eĩ 6+D Au>/ŔFi# C0@\х &cLOn{ 9ENQ WHR>dXXDaTe`e#D0a0Y}^ƨlޣJp+b]D jokČۛ1[/a0?@Sk@Ճ@ 4872! 4)q>YUhPЊ 4J2 # A!'I0`0؋UlBB rĝCK@A!m4B 8Ba ZI i 1  zE5UswDu~Q䋳0!\.E^PQ/dSy9> :XTӟ9p pLJ^nۮd'R^띛vkZ^倜­?%; rXsZȹ/jS6~o=0 _X\yeaM!;KC¥ȡ| >,L?ev"6;K[V1aqLEO۷y :oS)iy~snMkvrjS6e{}끩7_g'ׅwÚ׳Cv"6;KC[M=ga2_'_mˇOٜ_ s끩ONR䰒k ȹ/Mk xn2NBRMBh 4 *E0@E!,'PvzgCfL 8:rT (Ľ@ܺo22!-^ e"ʰy39Xhu tȉC 7@Ȓ94vfjsg,@L6.la4 OӊS:EI7P񘇤 $+\&c\m03@YNb+t5(`2)B &pÉjcCde?: k`3pmhŊ4*5fY$rg^M+N> 1 thd ^r ጿR`6?F=?F=Ρ6)X7=Mӄyqӟr߄<.OJH?g>x@xmS6u y@ͧD麂Bʅ$` ?GK:*9Er.$abvlVHFHz$ Y&0c68!9rцj3@qv]R\ڶsQB0I?05,6ܾ\Y5 @8| A|DxC ? z4A.@L8o:i~_Ͳ s  QμNѵN$΄p,k#  #8DJZ#(26x1TȉbՈz@D̊ء%ʴ@ |n!B p="G9GIA /KHhQ:9TQ\Wƥ X !P- cFAO!" z/GJjIi81) ZRBM>a||>ɤQLBDaaim̃{f#<B7࢖iOHL=)?Ax9u X `  Pq*P"H W2kHRQῘr})KrW̊˔}ȧ#R*-g $  3? ||yr4'WgtCbF9wO艝щ7hF'U3:QDČNtY(gtNy3:sqՌWgtČjQ>UOѩzbgt7S\5S3:UČN!dվ|gt;s7sq4sqՌkH\CȪ}GT !exx≝Oz;:X:/MY T?qW&wGWX}_f חi)FBhN&>K ggnȝz;ژlƙI:F:ұz;:X]bfG;O1?ުG[v̏ēL?gO>(WX?|ގqVϼJ7,I~\ՠSWe`TwSWiy labbU?T}y{bU~*>*ag@P'T}UJ̼ _ȴOWoo/_?AO~iloOO%8|LgͿqOcJ>qR ~R )'(%HJ>s|cS >ުc~\?|ގ^}Re%?="Kg!}ގ>Voz/zގqvtz;ZO>ϞLe'u>z;:Xz *="s^ ;L(ʃ)w*򣓑ڋxW[O9e ~bQ XeprD&'w'Nle ~bQ XU@(KP`5#&#[OceT{1Ozj(7jɑwezb>վQzl2ciOfjz~uSUY@^ 78J9r6Hfߨ4Iު'op#% ń J6_|HgV<}}wҞͣ|jz~u ~*ڋxWG9r6$dҞtVo^ 78.G1!_XFFվgVm+'ob8copf,råӒI>?ʒo4)#[ 2707^#^ǫ&,Ԟ?juJb^Sߟ07^6AO~hӌWS;ɏW?Jɑjcj/J}&q<ī=/J} )!XGWTz1cy#\59jcjX4N}Sߟ^6AO~j5$O՞TS2H'V}^ΠpA:ՆkF)!gMΠpA:jrՆ 鬶~ӌ+w_E):jWoI >7ުc~\?|ގ'S/36}Icvtz;[u*="s^ ;L ^@]e^e.TBR2ƒ )tdzN}6s07^#^l^#2Ԟ?yGWm3V{& ~bQ\HgV雜AQJ^Ac11R59bA^:[X^ |^ ;L ~bQ MK}j"qlUت4 վO,+z uobEo%_2<]ĢmOjվO,O Ø0&>}Xi\w_Ģrћ~ɗ OWsj'pFo{7WsIyOU?(\ߏ7վO,!|to0ć1aL|j'ŕq=W7Eq۞վM$ʉr؉ѳ7ު?,j5^}^feVmNY>Ī&a\m~fՆN[W? 𔾣|EqڋxW^ 7E1 cop+$+L*˔tdz~u >( ׌R2H6\tbՆkF)WkFՆ딴!XӸ78X6(}tVoN>Qe} i)~o ~bQ ho }'8RY êU{E w_Ģp:P":T?(3۞վQXĢho|}~}'XĢho|}~S}7E1H:P":TG)co:iZ]Ģho|}~}̫2 V?(&B[orՆkF)W{36\gAzU{1߷>baob‘!t:TGҞ2V?(.4>ߧaj'pF{Ӿ78J}X4BJDv BOARD.MACZ ! "#$&%(')*+,o-./0132465789;:<>=?@ABCDFEGHIKJLOMNPSQTRXYWUV[v̏ѓR5Kʻ ,RÓ3K>=1}GK5z1?ު??!՟|?=z;I%0t~tcvtz;z_gPmN Xy9juJtV[zގqvtz;:`ONz}N}~cv̏'WV ) װĪ ׌\GWmNѬڋ݅j/`phHbfwڋ6\?By0 ^ Y]u0ƫ6\?B^ .\W{1c@Rڋ݅j/` 6\?JLbfwڋbaoj578ɃIE|D&FDTȃq2՜tVoN>qj/I_Ģ78R@1`DRD*x@HgVm'RY<}}Ãj(cob8=훫}4/XĢmOjz6vsN>q&*'oY<}}%"T@(y RDt YU{1Ozj  Bj(e ~bQ\g=S}X ӰO~sopXړ7E1H!t\:YU{&gPmfAzy9juF)WX}j/&W?(&i8Bj('d ~bQ\h7|O>?վO,}sop2V?(& =<վQXĢho{ڧVW?(4>ߧaj(G>\f,|XĢp$:P.wު=}36\3J A: ҫ @ڋ}XBʍCop2V?(.4>ߧaj'pF{Ӿ78J}X<<վO,i'78|BվO, i'?7EqO >jW'9e >'opܥU@(U> <BDRHDD8aվO,+M?Ʌki9}bo uo0Gć1aLZ|Voxj/&W?(\7Ҟ\'jQNQNվO,+M?Ʌki9}bo uobE{,Ʌki9}bo 8JyGđ'a\Ģr\'j`PWs*qqqq\oYU[^ ;L ~bQ ho=p->-OվGcØ0&>}XW.ڛ~ r\ j'Ő&Xړ r\cø7Eq墽'O?p->-Oվ HU999عjz~VcvR|^O> 9cv̏jV'ļMUa(j5ڟ6T{1tpUkF^ v ׌dGW9cx[578WUOzeQ5szyUSaӉU{MԞ1hj5\:e9XJ%Vm~xV{E<=}bfwzaҿk)26\3J ANS:ePOU[^ ^1w_UdzjO՞p9jO|_'\dΠp(Wm~ĪDor՞U{&Uު}VV{E氪="}՞p9j\AypĪ668VS{krL6hUm6_'×79jO=}ê~V}_Y .2U Tâp}W߷>|P (j}^tp^g@aUa(j5ڟ6T{1tpUkF^ ` `VB@ {pQ"(ˇ&< "PEx`hxF 9:)s@8< 2G(c90ƌ{8C_*!A p@ |ĠdLAHTS R(<@M # puaƈaP>HB } #5G\93v B@+#4T0=Fhz `x>S{O3ABO9="w =2#42J5A4 BXB= p| `O'{:U=Pc6Exg  &2xc`eѣRFc,=j3AX:O2+MkdfD#qS}>dq@|>@TbDFtVo^ 7~u baoj(B ?2 ;X*KR*+P@2՜tVoN>j/&W/M 2TR#R@"~@*`JJR*+P@2՜tVWoުc~\?|ގT|2|L_)P|r>z;:XZ^ ;L ~bQ\ho?grZ|7x9`[bj'Ećqo"DBØ0&>}X!ć1aLPĢ0&t t t ~bQHH$!ćqo"DBB"cB"}X!RbЁsćqo"DBJƔ ~bQH1ćqo"DBʍcʍ}X!$tI|W?(B$tI| ~bQHćqo"DBRcR}X!vCRIBBAGE.COM[04/07/91]% !jo8NF9 "p4"aDM0 1,y8C)t2㑐z2(% l{,D l,R(0TvZКc?-~fNyD h(b\+7Vj~[ E7 5 '10plD `` W~|uzf.6Ih (t @- #z z k@3 BK@! .-B/{hZ,LzE XzA xPt Xy r0AxpBE   j`xO:r0C<TP>o7 'XBM!j@ a\Va,17W7E1䢽 µ>7W%>cØV?(\7'ŧ߿7վ|P%8G}ڋxIվO,!M'ŧ߿7QNO$r( ~bQ\hoO.\Oso0}XC.ڛ`iO.\Oso0ć1 %>j'ŕ?µ>7W7cØ8R0&>}ڋxIվO,!M'ŧ߿7x(aL|4p7Eq墽'O?p->-Oվ ~bQ ho=p->-OվG#Oȓ#%6J4@%0<, 42~#vGHb %2 "4d"8av@d{d͈ u@!@d ``7Cn5 O_ٰsRk|݈^0,Ź[|CQ9Cr,@8D}PtrQ`X T\G&M5aS[TatBR\ =*ZC~a#!+r1ʸ )^TB9 ,P2&ˎh 樆Tp F`Up0?sP' Mm t=Cp(ZGPGM(8@HO#)dfTA1q$!\/k@^xz` @xZ0x*ف|P@H0Ipf@$A໒A_Z@L?O$a\ĢЁ$>j'EyЁ8վO, aL}ph\mN~Y:Brgĕp9juq>0 J/`v ׌j/Lp?2j5\ٽf ׏Xy}1g Pm0j/&W?(dz~Va6\g@? ׌Rևz:Ym^ĪuVQJ חR2Hު]VVC'\dfj{VS7*Xo2SWkFp>H'Väj'ńcF)}ѡz} Fjz~V@j5\:e9X>:sU g S ~bQ g 2[Ǵp(W@ä4\3[5VS{Ơi^m^J/`  e@ }@ Hp'(tp ?<4ji@PaaXb  2tFjbHi6'0c4A9 Ṗ>n>dK!Dv`&gY|GFkJtW[H g ѓadVcU@0&Tuy|02A%@pA&1@ W. 4BD   `a6 ;9&КDh@+x+< /`{i @w>qTI$h3*P `;FK /#,< @W_dd W"ఌQ>x#>* [3B |6]p -` FhDb< 4G~=A@CdfPځ <ބ3A &eicnpy>Pd 8de{/,Սs@X`@Ek#7 l ߵ|p  | w Ǿ ws P~w~wz{' P uP (:{ {0P{z!P̀  w P8`O8po 0} `W}`Q opOp_p u[[s U^  `! ` P&2`4+3C6 `(5 2: ~ CNrRRD L0T0APX@U0Rml $m0~=0>ܽ+)`)W57&&``+HMڂ90=-^`: `1p3P S T`*<$0 C*=/s 0;S.^mj|? ( N5FYK6q4 ܾ\ P>. < x0@co7s<]+  (@>3@G+,ܰ o F #k *+{@|,GL;D=;(MN0 o&Mn 8d r|@S ><p ]_ P {h7ˀE P>  Ipa2@) аq  \3. ۩Ż0"~ #DK+lj{  ` ^3">_U_`  ~ 0J+x0o gM=)q(|<xE5?@xkP>::e@yXGy0ĈP;PbBrp5 i+<sB p`13p- {`S6P p~p՗ i"Р X< N=́&)@s>! P*-0͎5@x MP>& 8M3!dy#O~ 8e~ ` P W XSDl  Aܰ% p#H?5#2Mnr0(ß7R# R"C= N->g0pq宕^ *`++pV^MP@>MN"% S]H*<^??@I ^ )o%޺=sH1!Z?QeL0Kl] SL0O]   [SP B `p =I :@p{ _py   HȎ 0gk k  ຊ |gk v3 м  7{<( tBȁP77 H ( 0wowW gupv>0ugZQ /o `Xf Qѫup}|R0007}ppW{ _l |  8{y[u3Q5X'ox8  uf>`LuQ^G\GZ)7|WW,Q}Pp+ 8@ z~ : v.Ogf{OgWwYBQ f0U>`͕`!{Q)?yяiBu!}gP   :Ў08cI >J<=#9,(p PRO<.\#`1 ìc4=Ѳc@f <.!ѕa @o^`(`Pv  q=[^WM8R"6<%,n50=Fy@&"(3+ ( 28 y ( A̼x`+p,p( `Gn@ewp (#/bB,0F  bB  е"/ Wqq `-@7 k+'޿rHS@ =p~@7(D@@[~7 wya市[2[;50 5(`֐́Cpm`X%̴ R @Gs7EI` `[p&} i7P(`T,$ R ٷ г  p'  p i_3@  ? l<8p O h7i@Oy l Q* `V` p@xdU?! gLާJ:Aw蛪 Z Q P@& 0 P-  S 9+ P{ :'|N%M"z,)2`#$ 2,v y?@J T4WՒ3$հiՃ(EӌA6F׀8Q~]1C%P9BkIvn`+dS `!KtQ|4&0*-pB",?S" @ І,`=+ =b%N$._ _*<`0f1[uZ`P" `hTDEfUJ P-4/\sq` `PZ>zQ<:`o3b_=qSR Jbra QZqq @JD s_r^c0 @* _w@NZ@݋T7<@u$@@ *>e|4_l?5$'V@ <7@ !J!Wc*D#Ȼa=> 6*t @G?4 O&CQ2 !ݲaF`fd}lB]_)4* :Un]`x HrrpofH 92 AlsB-4 $ pLp*{ tdfGB UOi}ybT` 0ٚb P ͙'uPow7v`uDm`p`,t`|w0<z }|P`XPup 1} 5VOdngv`  ~O00`g x6')UA**s pwٽ0p: @^wI , NW|7-_E e`MM.s:3_CBp!,"w@E@fM C6l8T UPFDFr${=@Ն@}brG ` )FQspR NR>CH@Ȱ>AN04C6P >  ;s_6@`( `:]x- 0 0X"RܻR@   T>^%BAq P-% 4jӉ- za3p)+¾ LֆU0e  rPal Oa}IO*RPntm2qM=Cۊ\ [=-0" sӪ 4prma`rd*<2   `ǫ0(c ,G@  mM  a(>ij `Rde>n(VB$ q@b*_ n,q P }v"- N\ Q}  g,Ѱ  `!FrCp -`QP*Eጠ_ьP3E =r.k "* *Is 1P >is b } 0o*@ P! Pڼ"\Y9Y4" Z -`5WPNuP @+\!5, Rfi!0P*5,T:;S$]Qz;Q(R @h@www#[Ag*d >L-IWF>gю P$c 8yB0]Fb}!Nu<'Bؚa% op Їf ,Bu}Bu}{gR1%us Pߒ:(qe`" @Y 9% c -8zۯ>o֟>o:Z@f -,ǁ6ĕĐ(h, Es8s9/j6A-֫YZ1-}WP 0.A Q"r{h@5. Ե HoZs1*0*boi׭~Y zFV-(:205/䛠|Nl@"熀T >*po3ih os* *@zY0).> bޑa.ͮ &=*6Aa!oY1>]WP{`a( T~YVwɃJ b>` VD ͻ}(uKR["EQ?tӬ.0ub0,,@,10pdPsHrV$knBo0lPb0) 7 ak5A23456,,,@,,,MA:P 0 Tl.N8PEklP:8AQto` Oo 9@H!:` V'l >ӻMp'@rpa a4t0ts6` phc 0a d,ZY4  @yLՓ: e 0oocZ)r@! ф07g0+*@ S2ߠkP"Tcd 0 E .P5 5 P"  C慍>` H1Y(X D~YjP* PZݍcp AvQ. ! n E¤ i8 FZOP|LUI A% `! e#Y\ " YN з" r, CQ8t .P5 ҆ =  GP" >f* AWPo ,* B B .ݥ B' YILS7kLP| 4B ؘj *y=($ݩp*|YU .P5  Aމnl-0 Ynskjd 'Q05Ͻ AB@`$X 2f5ME  0% E@`y rd:0E$Zœs(P-oԳ;#T(^DajWPX<`Q P*@֖* mFov0 c`\=" !.:zYupvP epgPdN[=ciPMpon@sF@!@*@ P# *Eɧ!p!AjDI~ ΗZ=z=LV#&n2ZyurQ*@ʺQB 5 d*@ȺG侊ݍ`@ O[Nu^7>aV0!C +`5u . E 0* hM`L xh̗>j5Զ~m&@|C9/ R LX P ?yLI熋$HjwCPZ5kU ȩ|ǭ5 0j*< ~Yb   @ ze`LI0Գ E K9"#1Y7.P5 1 A>kԵ0Y9`uP 1[WP*< # 0a%f:Zh*<ѵRpԡp1`ԼQԵ Y\ xPfO@ *Gk0*2u4 E ;Ff @V Y7=>c Oҩ/ YT~Y8/ Fo% ゆFlD`2֚Zh*<_5. A z#{3e}!0v"3p72#.>.|p(0007b !0Y67 HưDY-|4*?xa.Ϙ\o * Ѩp| 0f2=0̰UHc 7mϨ# lU .05 * 2 ]Eio! uPp* Z\zЦQ Ho*#A* Fo7!P=i=6 UlC zG V eSoХ49=8tN 0u#u0xí &8r4%#~dQ1 oҵ5#:ry C=c꥝(^Jl ubZhse0ig#M0 g2 6# i  QWP?*A" 7 >UQ̀  ,Dz؆Y5 Uu ؘe Y@ 0^foxjsԳh A} C I/j>lԵѭ8 AEd`9L>o *yuP+y,Q" :1>fK@D`9"a*rrDKpu*忠i񴴮[2}>9oж⸷Y2( 0_!ŕP.Y+qX|09 0+|+a V:/l$aa<(o+<_oз>nw|YU oq9Y:N U l(Y1p *.k ŕPyߒu@f CvZ\Ca"*,Ib;"\rQbcѩSdb!`oc A e | K9/H0f _\0X h*%sV7 0WK-% 5O @$ R ;g (ZRr .FU1E` 'sj1: '2'Cې!%x Fm*@0T *-bu>jޘ6|/jsMFGp$e` a[+$ @0A= 0P>% }q5NJP+}[ R%F{}[>@%jl^:l My3H;P /fy3Cp <|y3AY̌?DQy3 0P/Bā3;]|G0DG %/ʨ?9? (= Ѱ _*ɚ! Kqg4| SGKPL$X   ` JL@Qfxac" Գ LS .P53 D" C xB;>`Y\ uPY\ *IMt GY\ FE|5 LѪ F4/ 3 C 3/) AgȊ3/? A*<% B P A (mm1 2I @5Zݍ`h8 A BwUۆngU Ǜ L B ;Yy A1 U $@*-:Yoq#٩ zc@!" B B it(f1 (rk1ҤvC[<%I٪6}oSk*h5  4Ե uP /^9R>`#٤pG((t/j\`  5Ƥ;,(խ); [kN/  0u*˅'uP fKF+ u}t`2! [ZI?0Ԭ LSK+*@V A>`V֟ΐ O Qdzui $R(`QYV;  @p*>fKF+54 5 "By'*L>`QY^2N"d*X](%VYRkY*8(em H2ˁF*TԳͳ| Х"i8pJ=l 3,Z!n4AoIm05KT] !Y#lz _.r OOTLUh=`d.K+0Rc ǔ  ^YUqaqd~Y>ږ.)<Xc QNW`aPlugW)y*1o*I QFOc>.p: G &8?:pWELCOM>KK !"E<  NAGӵ : &81a3 &8ȍA@a:fH1 Cl0bu+gAPEPSӀLAAE7+zJ(~hpHGu0 8r j=j=oPpIT6a0sYuhp313FSbPxz018f 8r j C8r j@U B Pjr0z1 yg p8hyCGeÖb uw z4zף0hlh Wae$LV,J!pe6p*8@ >2fGA z;ypaR5>4E 3e%J`ceۇb E\&]FMP E0SAYKX4@OCN@IUP>p ӁEQNV]c &eю""@2c9* cd3ZpL@lԨ?(^DhG- |P$՝* yIGz0rbQHȬWhpy͎i%3Ѵi CLW-Oŀ,õu)=fMp0u6pwwj0 14Y p!HN 4;  f0Gda3M|F; |]ܓZ5u F|>f]G(yt1 0BYC˝`t1nvfCRIBBAGE.PS2T o "!#$%'&)(*,+-./1023465879:;<=>?@ACBEFDGHIJLNKOMPQRS,g9PX%,arZ\j{a?x`ߕ|9 GG5vrR qy+&ӗRABH(4-}ύ-՟AsHOHXkmSh ?4痊0՟A  CdtY2HAYVO4#NI uEogoHb4r l0t1QR" 0;ZjOQSgL6pf21hpN q c5 Y.Q05P?vK Cdned~YFs㪓sKv@a) 2AYVA O"RPc/(كKP2! (l'\f' u3蘸h` 8 s(nc !bQ*YP6p*ʅ^MpobL Ab6oЎ f2L HSzۛ AcPԹE ._o>InuPɏIPu LY #_(4#YU ٜ$0B6MD "] F; b!!ZK̷p>`uHdNc %BMp6NZMp0 +z/ϰI80lm/78̀ @C# &8?>D>=~yȰlz0kdJ o^ p2Lfrwl -7 :QfMp& E0SN@K BPGN g ޷kK3 0;9?CFzc 3Fe *`* XA_tMp%lZg9.Xn  k\ -;ϰP2:W4 YΗZ=Аo Pg+ g@t^̡`o~-7 *>D s֤ oykTg ڸ6"Dcʃ@H!~ߔZo!!ajKz  3  sFpnu+ʐG iz=kp _.6z sZKC I )W ݑZݍ`/'Uqf TG>pOZCdI~ oaAoh=`d &8zêP*v$o,m+ )PH֕o@oyhocp,q A*j@LOdI~ }cyݲh=kƂY(RUHN.3VٟZݍ`3BuS# {Y1s]LGB#1s]L}ύ} Q?qT~F+SEr-Aw՘UDuv sʢ$>nGY0QUޗ˵׊A>Ayey\~ HXd$=T SV1S7#?/r_Je06oC/'uA ?arR穏仐I&7w1 _Nt7A =ul YpԹE @oM;u L P!KQY:NK*>fK  f ]i%A'仱Ttl NVKBkL,>1Y0*ֵN>e_c Y7d9N0*ŕX|@C 00|,f@C5ghz-ogc,s6zrR35u߸MDT;|@*Kos$kEoglFgsPdQ, Y-D 9 _QŁ 0{Q05(X/_nj >c-Lݥ0D Q ! Ӽ  8~vE ?qg Kq0@E)ZcѠoШ@!( 2= ?ĕ; uP`D]>h-  f Eq:Pn  q1Csؖ5?ߪ,Tkկj(0i -d [X|h[&1bKl7?P>4w&1[]bb:' 7t$n;A ֠Q>4w~]oF%6Mb8?Q>4wzNۆ/Kl qɇ.x( ~>n_h]":u & ~͠LGRc@G<{Giɭ~M}ύA8SDsg۽Ea?h ƑV88R.uQb8}ύ-‰";ܺ(1gnEgWG:ݚsʢ?Tn_v( &׸ǂ1 &w)XyLJA gߕүyqIz#ur %-9ۭ[A ͠ŭV7}bX'.7m |y&%022+]*Ұlc8f3)q+]*Ұ wudn͗C`q~D}ʤZσ%ͮ+|:Y6Ӛ.[|KazU'IF]":G.5u~ҝI.Ұ"u}]T'aKM<8p~t ?eEZA <bvq.A CsZT:OT:iIbĶk ]QV*Vn^CI{G¦F6Ypu<~KD~SD~KVrZ'u-Fgnx(Z|~@ko1v~gpwoހx~&ѯ|.u j=Y"o1v~LJy4b-#tO!I[F.Ұ?XhxI3).i>Ď[F+˧$-#$j=Y"i$oc8Nov,`/? dE cjH|BEݥYT2$ox~ oئk 7S[3J<,]D8 colU4~MhU9e['5tUP"* |S7o^ ; colTpE4J[뇴7|at6o޼@ x~&ѯ|.uM,ri鋨dXQWP&u58M|3e^>͇qe|Ny4b2>Hox.-yMu+_eխ$~e _zD-14AHhi8ۭOHXdUr ՟Aw"Aw. DtkIg[f1ǦnMm7[뒳:q$B[ѭ'CS6Mm,[։v $A A Dq$Z"{nZy {߿E\2~CsZm5?z[GHվj]emҪj}?^,RMbh<#djOV]eZ~U{Tݫ=%2W:,2u-En2~CsۮzĚuSُ~ Zn2~Cs1?4wY2c\׊ރ63hnKz]T zu}Fq$u&gQsuP˷4?aYąڃpuo ͛d&apw_얷oئ`?M)2KyNn2!봮eGQwqkz7ov0ؼIp,5u~,T4nwVĦop3)]q};]S&9oHoN;L"H p\@t~vCRIBBAGE.PS3^ o "!#$%'&()+*,-.0/123456789;:<=?>@ABCDEFGJHKILNMOPRSQVUWTZ\Y][X”}mePn .Q:ȃz??pj+S.tNj{4aR^w= Yu.M1,R|'N!K `a j=_ &73 vEtgRu58U4HJj=7N;y`&Um׷|+W.Ev~I@ە;]$W'iX_ K o 7oB`D6̏m:8w[E} ״i 2ߪy`&˼|t)rLLJy4bǕݫ4ڮO,Ұݼ@ /?Ic  [AA'z/94o~H$.7a67o1v~ ]׷ w7a~<}ܛ#@yg @yg Ǎ@yg-S_  v8iI[7t嶹K4$<ڲBHHX1\mS[Mm,zhjkS[ Ƒ'#fd k #!aapBHHX,Ph {A zk(4ŷb:G. ]mn_pCCABmA 7}$dA[1\P=w?l(;HJ qnb?Hq,H:݊+ y|!a׸1^ܣyIITYIN,( {Ӑ5>u~ /TP4d0$1]JWK`i|9̏;Y.xqv aohRw= 4atmw= YWIX2_w_?M)ڪ43_ixcM/vH{_Z3EM/?cE54dEͮoL!}ӐN> 8mX̗.ĎƁL:&̏7o:͇RD,XN^|2_i.e['߼y4at//?k Xhx$klU'UyVPM߼C rblvtw*C7u~7/?XPpwo(C˕qZϏ7ofReHy24׷\W\oAVş?Lr9&U) Sʔ!]8p\2x~f&U.i7N;y@pWƁLoP2_0~&7lc8恙S%b+A47Eȟx~4b+C`Ď[Fޕ!]|%-#inBE,T4L:r,:͇x~i>pC,x~Z, *:97 gpx~ 3@L&? 3t)l]‰q:$Bi5=;~JD}dK4?@@ (u+A yL%[gp"]\iEwkD $g=*MEԨEN r3 0W47\+qf_99=풍-BM3j=\=~\1t}Zo;~1Ρ3t>*ƁJ|cyWROT6F>fi74dpWܙ/fһ ׻HoN;6^z24d͗s<6^Y(m70~MoI.緉~pm0&1t6oAp:4˧c<2Mo:Nk2CD,Bi^߼p7rRܕwt7ߐT&߼ m_' `xeyD,XN^߼p7rRܕwt7ߐT&߼ zs+w] d>Vp]ipoᕅm_'ܥ]Xl:v)CRIBBAGE.PASk o !"#$%&(')*+,-.0/132546879;:=<>?@BADCEFHGJIKLMNPOQRSTUVWXYZ[\]^_`abdcefghji5%ҤQRg<~\ Q4L%YR7i9!u5Gjf>?N?Ǧb:y,T4<]]c5~}XS7)D濍/Ϥʐ.i>Ď[F ʐ.i>Β,4f7`*^&|9C wi<4bO!voa~-?-qڥWJODi1Ǐ$xwM% MsHZT*dEBaIM4q]7%`AҴ^n|\T7M4Ics(C@?^`g"Hzď餣WLRses|vG}b}8G<~&IǻnCJו&E֊]ihDRS":zFM- .VhK}\3 WIO i xR JS4W:HT?]\% *K?AcyeuwG+FEl?7c.8k W8=]~n*wG+0Rǎ]sIqe Ǐ_R:u558Ki4y\ꎓ%@sTY:Vk YRf] :K%iʕZ^Dͯ 'A>rYIE_">hYocʴ@ .:^ǥ8iuG/Rw|OWR\^Xy\NQ/Ǐk>˒{4=rfn-BM3L>,/+W9]~"YWsN?~\ׯD?3P 0E+[K N>zvy'`6W`ݭ}]J&iQ~`#.z5JtiIEs}z}%[DKtvIf1O ۻrdzݭ}}i!iQ~?-#e@Zr89tG-8!vyw&Gs1lu  ϻ7QRljmpࣿ=6jV:$?uRjR+D~i1D~ q{j<+v|% Y V,$1OJ4~v9̓v(uqڥ:V .W\V,ELNX_Qi7fQ8q;+R@.k[~::> IhKՖo^7"ukES]Ԗo.B4,R:)f\=N릤,E5)Mu$\=6$VWs(|mX%#BiA3tN?K0МƸ#yo h|08q2M6]Ӂ'yvُ)k|ǿ3fjPT'YBZ"4|v KNX\Xdq+Z!{e9_،s8zeߎ1w(R/q8-Oՙod"TC\=N>^DXL?ZEOȷweˎ@]59)vb]ʣ˕㶯M\debG9iH!)yv9m@]58Yٷ˕ 8F%/Ck#mfٕqڥ²+فըehmqz%.1m Kܕ?"*Oi+v|F%+ہ qJv#XL{0_ɷw9}m"!_yoqtN:n$};>NǜqZ[iS/44Lw`H8na|ehmqz4fVzAiG-XPcZF%/@ExFweߎ$Q}́ը>FIׇ5qF5*yY^[iXJiTX=Nj8s{n> q;Z Ad)PZi|}[":Əq! Ӯo/jl;{DѕjL|{򘕥r8S̾kNBiytbQ/CGNy 5CGytܢxvi'v {voiJ1́Pc?n8ZJ-B>̾ԗ'l߯jLȣzA]:8pJ%Ԙzpqqڥ! ~̡#> IhKՖo^7"ukES]Ԗo.B4,R:)f\=N릤Dr;j:4jXS]q~<:nQoebg$qW&ˣqw8M!x|߹ص_=NοXKtF'jT˷w+q;DJV- qڮyƇٷXKyt9M]ƾyiNCUB 0K6v|q8f4uJ^^iox4ȣ垿QPAi[yޏ92Hz٧aCiv Kw<.ӯ-Nq{?<ㆥEi8Ͽor`qʾiK4ߖҀ8MʾUyw> $K 8am^ή(? Lw`({DKt0Iǜq-NѼ^٧a9OPqqJ=k 8MBwm2q~WHz٧aq|徶8=Ғi1eWT]^@٧47q}ڮy@ٷcN}"՘}zH/RMoq߁hi4qۻ?NcCo+ƟGǝ㘹Q~E ֩oxuzqr( jin8Á8m yʾQ>-;]z~m KOi5oi=]%Dk)ufVK;>s3;Oq:mӀyN<:nQ- 8 y9x!x\(/q[yjToaq^lip_90D?n>Ns7qڥ! QTP|{n-`<:nQҴ^=N~a{.4I.QwsTʹq WtI?N9Z,E5)Mu$\=6$yt 7쫕b͏?~,ϡ Ӳ}E$ _y B D}ǟ_9[tFҮ/v1GiW߁Dw͌c@dZ5>˻}㶯Mʾ'1h,˕};>N_},> >ϨQU[8Gۋ#4};>NcuwG+%S%YZinhe(,-4VywrA $K 8m~ JZ(-4Vyw J XJh=JZ(-8Z(,-J9!3O,G/ȳqq(?C#%0>_}Z0"qP~+OViׇٷz֢qڵ_9׶Vn8Z;Zƿ5>_iׇ'pJ`ݭ}pRuq^ELFuq^Exvoi9Oi+v|Ƈs84||{y^O}>NӺoim~\y0Rmo2 4sNoicmWIOO-Xio+Ɵ)yt܂#[y&Ə; GiֲOin<̾s3:Ə $xqr(ytܢ 8M췥k]P0]ٷ4 _y\k|>FIׇ5q<.uq-N,%4uq;WqVC8i;sdW8p=#Ӹ;|{y^O}>NӺoim~)OZio+o^i9OPQ}   iĿrq&:M>Љs E1Es7'?/IEJ|'zvN'}[}>-6 %W};>N&ߏӮcmW Q‚̾\ǿqڵmp=#Ӯo,a Ӯ?M6(5qu?F `ד>Nsߧ4^ٷ4ٷI^ ]qw*! ZXiٷXۄ>mo:rE;}E5s7?Y5N_Qzq8Kj-P[L5YZG5 8}% P,4wukC@yfvc;N|T" 4S /Jk-PKV0d){1Zߺ Kjա 89̾RwzA'ٷH'ٷXKNeTh;=YGO6#W"[ا9ty|ڮr=)EO_amyjJYRcmBfh@SO/dVJ '8QjFyTր)Z8QM|089XJ'J1́q"UN`T%}K q)$~jLw 5=Nܧaoԣ;k4j=YپGC쳋|}eK0K=G鵍?}2 ٧+=3;o@Q^w*GAyfVF\DZO> i+@ 9̾RycԙYQi4|voi߱Q‚  [G <:nQiG-ʣQjdܢ X6 8𞿑iqڵqڮyƇٷR]dRc*WN@/4VMoq{qoaG- 8m~(҂_Ŀoݭs_Ŀr@#s |zYMo7 'XBM!j@ a\Va,1̾Գ,G/48(?AFU ,4>̾Գqcm@i8M{TqmJ-(]8ՙ٧E;|\$fih Y!I8zA'ٷXꎓVqo/N*)Az .&VMZp!FqHi6'0c4A9 Ṗ>n>dK!Dv`&gY|GFkJtW[H g ѓadVcU@0&Tuy|02A%@pA&1@ W. 4BDMt2t X6 8𞿑iFU t``v6ևiv {澲oiFU t``vҲFU'-8ZJh=JZ(-Jih:K$J 8ZU5 Ӯ<:nBi\iק<:nBiW 8Z͕[8PcZf_qڵ?pNs_ٷ4Vyw> $K 8o+h~Tb4-V>ϲ 8f~aʁ.Z8A <.&ZAamd9zA8A J5j`Aam5 XRJ J 0R׬hZRc|hrHB } #5G\93v B@+#4T0=Fhz `x>S{O3ABO9="w =2#42J5A4 BXB= p| `O'{:U=Pc6Exg  &2xc`eѣRFc,=j3AX:O2+MkdfD#qS}>dq@|>@T-Vo|%v&W}@ Cj~ ӁWzxi N@> *+{@|,GL;D=;(MN0 o&Mn 8d r|@S ><p ]_ P {h7ˀE P>  Ipa2@) аq  \3. ۩Ż0"~ #DK+lj{  ` ^3">_U_`  ~ 0J+x0o gM=)q(|<xE5?@xkP>::e@yXGy0ĈP;PbBrp5 i+<sB p`13p- {`S6P :@p{ _py   HȎ 0gk k  ຊ |gk v3 м  7{<( tBȁP77 H ( 0wowW gupv>0ugZQ /o `Xf Qѫup}|R0007}ppW{ _l |  8{y[u3Q5X'ox8  uf>`LuQ^G\GZ)7|WW,Q}Pp+ 8@ z~ : v.Ogf{OgWwYBQ f0U>`͕`!{Q)?yяiBu!}gP   :Ў08cI >J<=#9,(p PRO<.\#`1 ìc4=Ѳc@f <.!ѕa @o^`(`Pv  q=[^WM8R"6<%,n50=Fy@&"(3+ ( 28 y ( A̼x`+p,p( `Gn@ewp (#/bB,0F  bB  е"/ Wqq `-@7 k+'޿rHS@ =p~@7(D@@[~7 wya市[2[;50 5(`֐́Cpm`X%̴ R @Gs7EI` `[p&} #%6J4@%0<, 42~#vGHb %2 "4d"8av@d{d͈ u@!@d ``7Cn5 O_ٰsRk|݈^0,Ź[|CQ9Cr,@8D}PtrQ`X T\G&M5aS[TatBR\ =*ZC~a#!+r1ʸ )^TB9 ,P2&ˎh 樆Tp F`Up0?sP' Mm t=Cp(ZGPGM(8@HO#)dfTA1q$!\/k@^xz` @xZ0x*ف|P@H0Ipf@$A໒A_Z@Li7P(`T,$ R ٷ г  p'  p i_3@  ? l<8p O h7i@Oy l Q* `V` p@xdU?! gLާJ:Aw蛪 Z Q P@& 0 P-  S 9+ P{ :'|N%M"z,)2`#$ 2,v y?@J T4WՒ3$հiՃ(EӌA6F׀8Q~]1C%P9BkIvn`+dS `!KtQ|4&0*-pB",?S" @ І,`=+ =b%N$. $ pLp*{ tdfGB UOi}ybT` 0ٚb P ͙'uPow7v`uDm`p`,t`|w0<z }|P`XPup 1} 5VOdngv`  ~O00`g x6')UA**s pwٽ0p: @^wI , NW|7-_E e`MM.s:3_CBp!,"w@E@fM C6l8T UPFDFr${=@Ն@}brG ` )FQspR NR>CH@Ȱ>AN04C6P >  ;s_6@`( `:]x- 0 0X"RܻR@  `a6 ;9&КDh@+x+< /`{i @w>qTI$h3*P `;FK /#,< @W_dd W"ఌQ>x#>* [3B |6]p -` FhDb< 4G~=A@CdfPځ <ބ3A &eicnpy>Pd 8de{/,Սs@X`@Ek#7 l ߵ|p  | w Ǿ ws P~w~wz{' P uP (:{ {0P{z!P̀  w P8`O8po 0} `W}`Q opOp_p u[[s U^  `! ` P&2`4+3C6 `(5 2: ~ CNrRRD L0T0APX@U0Rml $m0~=0>ܽ+)`)W57&&``+HMڂ90=-^`: `1p3P S T`*<$0 C*=/s 0;S.^mj|? ( N5FYK6q4 ܾ\ P>. < x0@co7s<]+  (@>3@G+,ܰ o F #k! P*-0͎5@x MP>& 8M3!dy#O~ 8e~ ` P W XSDl  Aܰ% p#H?5#2Mnr0(ß7R# R"C= N->g0pq宕^ *`++pV^MP@>MN"% S]H*<^??@I ^ )o%޺=sH1!Z?QeL0Kl] SL0O]   [SP B `p =I k! K" ܝ-P \!.̀͟ " # u " D o g%MH:F$? sݒ9v F &ؽop*URz_1` Զ>k, Lؤ'7b}7-[ LևYۏ!YY C r->k- t* ,WP35Q-)e !lX(B\ ukY;lz SN5ǹ^ݰL`=`!\ckXMAz2ټk \/" 0)|)Ŷ}@GC@͞A(SXvD2I*  V/<="=X(SC˻E^꺃 c sdF V  Q U wd_*@b ۝_CW-'< mђ w? bG g+T}hP nY=Nq06&4! RQϰ+{q;-ˆp棐T pU~YT^p }/`S0o:NP aJ(^!)TDGvPs40* h҂iT zs:DSil40! !fPɰ{p2NIJ(^ga13-sӠ * `=Ǩ* &oE0!DKeI?m:lzgi/)~c ݀ ] _rm$., fr uBҠ@R0a zp4hcMXN)$!q˂e锸gSb HWK$9)\TGtB_MOg-h9"9)ke&g؅nАs@i܈s:Mf+Z]Dh9"79)/Meƽ)gΚECIUzrYI|MpbC)s+4i<ɊLrKp6s+T[@J[]GtBr*Kp6s+=P|_ Chp6s+'x埫Mf+ZYh9"@k$N)i<'HzQ<:`o3b_=qSR Jbra QZqq @JD s_r^c0 @* _w@NZ@݋T7<@u$@@ *>e|4_l?5$'V@ <7@ !J!Wc*D#Ȼa=> 6*t @G?4 O&CQ2 !ݲaF`fd}lB]_)4* :Un]`x HrrpofH 92 AlsB-4\] H ^q0Kf V V `* q:ZM>k po5` " ]c"L2汧o7 ۖ0`) Ѣ!c]A_&>#xQPfWcjf*r W FT1" k]@ & * kM Cz13_T= - ;`$"E .$ +[WP = G#QB kjo^*.;oq! a `QxPY=~KW6oЀW0c` fnr_cpMpD: - 7"=fMv@ q"0B0lk)fʂԪ7 Nגk;I=fMp$9gBʚ 0c1- "ά"$aP 6%F3 ͻ}%!}aq06/V] 9WPO@!s " 8 8 "DbY0K x\'oЁÁQ/1W0Y9xP<=axP,=4=F~>=>f, e 8WP@*jZop"LP*b zF0* Zgt1@!~,KSpKRK^aJ>iv QC9n-vLRK i iY8+q06&%OҤ ?]F kq0u+} W,-"lCZ-.0Y 꺃Yuluz0bPb6k][C#HMp[ y0ssa: at n`nPe7q陋sfz u~u*WK A ݃&A0HuP&Q" `02lG, n4hp6s+x(Xi?``ctBKp6;NGtBꄕKph)s+$>]GtBdKphA)_ՙKph|9"@h4c^%BAq P-% 4jӉ- za3p)+¾ LֆU0e  rPal Oa}IO*RPntm2qM=Cۊ\ [=-0" sӪ 4prma`rd*<2  0 ǫ0![PMh 1m>"W*Wiia"5q>gr  `Pz420 03*M(c (0 >`p } 0o c* 5`z >v"0! 5 h,Uݐ>a)s LƉU!8:'ED~Ye;QQ*JOѴ@ј:ݍ`VD-"& [P.iGrKK- kW Nf!Ð*ؤ;I `Re qP#9_qCGkxz"9)o }Rpwg!}fMp%-A  lq-i0c4zq׊`!P̆ +zCz֋g>@)h9M`Q-30B))TP`(ɧΪ|z p6-"h9"e%3`ʚw:7-M/()gSg-X"`0%9E%GD IU c"-Kts+yߋ9TP}4r-tBB,IZhp6rAgL9ERު7D*\I]p6rN"Z%W5'~w4O*4-hMpbrݡN3>s:@cRpwtBW-锸gSc"X)s+/̓A"_唻D*Kp6L) {ZLKp6L& !]锸gSn'  lZ3 s!~^p FT" k]iyۄ !K ffzb?m:P +z-Cfq `ft-nA- wZsoz' #b =fMp1SG 9;f181Ez14PgI9Ipsb)4;` dKp!p֝9|M#c!+up=!rHq5ic" =t¶a!.FP= 0z! = mvJ\A k]WPACBYj@z0*a%YVlq0 @`u=^Q"eB 3I(9SK{lr=`dmhpi (fQ%-Ě?u 4 lZ?p2kgx2IYgtUzՏ2*:^2\E~e_*/~Usި*UYTV+t*;G}GQ QAM?tޯ:U ܲT%wUa1zq}]~P=a$֯cFm"?S}>t_W?Sd(P9E]>tz ՏՏte}cb?WHU{q,εٍթL|/ )x+I?(ިŸBzt_W?(O?:\sj_5P$:U?Y(Lo)T$Hoo\ї5ȩ7)HoobcB'Uy]Hg]z$#ޯWMɞ7?UЫ,WKAw7W^~ȻN`GNVSo z)j]ş^~ȻN`?Tv3S 7WѢ$/y!uȫÙ=}ҷ)/#^Bf#{ڱo RsGNyU f-7ЧSpW?"M<8/7\sy!ρ=\,fdq\ =1|G0skW) HoAv CSnaBթ'XkcᚹH/,~d*nv CN=)Ls =L:9i]UܹvI/%^,ѵʹSD_j^,ѵsw(~4W;3Hҋ8V0UTڕ^,ѵ/%Õ*: W+(|x7Gɶ幊G}IzG:*|UܞI1c4#c! 0>!rH"u?O `*oKWKPY=߾>EUu > 0!+*~mv3ldw~J=s=4P?*~8Fjd(Jod  0Y Ԭ*B;D D^f80  PdA89RIsPcP- as@oqX _;vEw k!!{ dKp iӖ:&2 0j$쵞 bZP߇~Y= H@A?nl`vY97~AK] p?7KM#ߞu]WPtk G¶?0_g_;뭄b obfrta*]s˽1s>*LE Btc K$cGpB`*[WP  * bHq: ``* bHq0ͫb,xDjdOe|/ Wk~T// MA0}`Qe.E\,j p]w& 8}R\~Pʋq^HsRC:++WeKeިGT;;R:UϋG?AH_${__?2{?A@BCDFEHGJIKLMNPOQRTSUVWXYZ][\^_a`cbdegjhkfi^Hު{YgMg흵lK~=W/g`oYվx7z$ +\'U'9f<+\M>@y?R h8@l*nϤӘ3+\M҃E;}CAQop@l*nϤӘeW$PPI{!>I f W`N]Gd۲=NcNƙɦp5I0l*nRDz^1WL:9i'=\E+\M>ʔx+W$P"ʞJ\gl*_jQLWɶe3Wq#\$k./9PC`B+*n/C~$^,ƑY}6~}Ύqҋ88k6v?ٕ\ts7MP'W?HTs׮tsG)T9$-uxR\fl*]XBoȝ\E+#3u AfQ), #jǀ =꺃Ɵd6Il gnr)E\ϑjm]J¤o 47`vF6S~@@Y=K]>>soL͊@c"i1 d0䦱a߰ Ւa~ Ԑo&`c ,Z@*c =+6u1@o*fP!t  䦱a߰ Ւfq0ͻ, \E $-eߑ Bӓh|c~1cQo\Eˋ8^Eedgo5s-"X`evd Ho)/*)EbUC f*PF{ щUb kW3U?HIy1 {,~T ӎ8/7Wr*uNbR.T3_y? %*Z,\E˃E;v6WѢ+lEWɶ$dC?xf8M~qbRRĄv =ؿOʋq^Ho? zVs}=5doVu>`oZl9fwv/ MO fz^1WpW79:YMtz`iǾ/L K^'o9fC^ՅEYZR#G'k  d +8YλU.7Vu#W?HTsw{{S=%o dS {74%\E+#* T@Vdg]mv\ QWUcPh@6CM7oiJk|uDz^Q;p&ӏ}CdJk=vAǍTI$]8/ '\$k./9Pt#嬘c`Ts7;p&3Wq{&Ɯ$]GLW$΍飬YQ)\tslI6sW$oBuꑄLU^jxl;Gɶe3Wq  Ġ*0;dӳ7V:rP 7JGe3WqvW?HT(7Nvd!L$4st<[#hBxh M5+4=)*bCyHg%=M57 rfb\ *:WhEŭh9m3A%됃q+:|EKEܢT=nvbrPuqS+n[3WqJ;rNC"WbQ5u \ *$;9[νEˁ[Uܠx됃|_O,:v\3WqJ;XT]ԭ[,:[3WqJ;7;9hո->_q+nn\ *hXTCKE 0s7{݌:.}-Us`*nPpGuAMŢjnT=IcrPuqS|EK,:ܢuUܠx2됃7_q[܀A%xC.}E?pQtpUܠxCFKq󡥸E܊ŭn\s#fƋq^HO:㼐\8/i߽~UBأWtN@ `5s#f Wt×l"\sy!ρ )z A RB@=}7v<*bts>˦p5Ij7Z[@6s-ϤӘvٮl W.nW|-nq@6s-ϤӘvl W.nW|-Ohy&ƜNdW$PuqS>-pn[fts>M_j@MŢ-ZU[q-nۺ@6s$iK5\ *hCZ5nE 0s7{lorPu+E;n\ *1[T]ԭ[,-UܠNuAMRĢѺ]l*D!UAwfgo+:Ȁ8d9UGsB+]/POGLqJ9ʋq^HRWLW幊~Q!}~\E?!}|{`*yh'G{`*Q>]`*Qn!}~ \E?9|I #;fdC$\ōGsz^1W>rLOƎ~Q!U`r\E?dCGWCGWɶ3Wq_C8/`*:fv5Wq s/hoc}@sf"NwwSw/ZA3zsիU)nuIa8!{W6}IGIUVS׶~LW oe_LU$u[`*nPpG<:n}Wb T=ܑlorPtP-nGя3WqJ;7[T[íh-h9nUܠٮuAU>_q[3WqJ;vC.nW|ŝşA%9f!UXTm3WqJ;:vC.nև%--G-ZA%d!Eu+ns\3WqJ;ZT]ԭ[,:vܺ-0s7{]됃U7ŭ=nUܠuAꪋW_q[3WqJ;C.nW|-~[3WqJ;rC.nW|Et \ *$s9(|EX[GqsUܠx2G됃7_qE[܎[3WqJ;9ZT]ԭ[,En  X$1ƞCTc=|o*_jsmf"?GLUܱ#{Gf΋88됿X#{;xwM=nwM7NfN ;0sw> \<rŏ\ŝ@1=W;!W~0- d*Ha1;goU(7?\ŝϽ1? }c? lo*#>NcNڟxdW$d3Wq&? emUyIUr:Ջ+{+*sٟ W`N]Gd۲srP`*鹊\.q^#X @ JC6s߹C~\ŝ7V:zEGTp +prStU}e3Wq;s^U_BzKfvJG)T:r l*nG \$\=\fl*b|_oaB+*L:9iw#?$A% h*n׮~X QWUCnCUq\E> h*n׮~{\\EB+*(ܐkT;ϤӘ8S8UyIRxW6swI1'l*IŏʥsL)gEB:G Ts7򽓙Anf⦌<0ӛ{Zv7s@1=WCMr\,㟩d"\sy!ρ -; MO =]- g2sWd۲}G 4N?~qy\͎9:Uy\EkG~B+*|q\ŝ}CQU dfGcGrŏ\U俥?RXY{ J8E>MtPRwUdS=%o d3Wo;Ͻ1^.q^#X @ JC6s+:{Ͻ1]Gd۲&Ɯ+\M7FXi!߼}W$ȿC7s./y!>~c ʵ> Ġ*0;d3WQ;3 Sz^1WgiIU& *Ze3W'UTu7v<C7s< }c^.UGsB+v@=}* )tO|:/!3w a'^DN{c jmi4ԪkIJyY^cZdu=*S.o_G\DAWR"n"0xYAkE0U 4kFS 4i>4Ij*"/(92k\ͳB52v;D:l4H@" pN*-Q|b'Fpƒ*0[4>?cPh@ ˴{ MlJ9Nڶr? 8(l03&C\42l\(&(" 6;)8˃0c>7 㜛/x̰R "@;d $C!, 7,G IAT٪hP R/T&EnBr]%l}Aȃ;aGZ${`|  KA>y5sP8<'{A8K.\[)9"EpMw_81 ,ᾁS6TqjVkk=I}}C?fA/RjL7\Y!.}}JEr_# MHֻuYͲ2k\ce?d꽨$~2רƾyA1yAxY_#$h C$,k/Eu̠5!;ᒫEu̠"b:sħke; \Fȭ~|nн_#,H|E]6&;OOSխ3_}\݋l>xe;}DO`. :-o%ܵlR+e/[gFŅ0}Feؠx|%#^Bňb e3S:m2LNvF#~2l4^K&Yҹ0p7 CzKу=3"H}2MȮ$ 1e-ZV].Q{+̐DK<(3T~0c87CKdD3 HTMsp4vtʆ mz-$וގLzij 5v}'l7s"/DҲ !pξB9>++Œ2H6S!UdBlcYRl! [1B4367$m|^z}Sth:aҒj  K̼{tܢbh@#H#~/Rc):m^ =5)pI0đmۯ\?b[l&0,*W*0܃ѡg)Pǰ{h6}%L X&#˝egBO&$Nc96Rh4!1{p Mm6124Ճd\Hql^+8]0f c \cpèp!帶CI=܁Hہ%d@C'5hQ. vOEL1.PASb  !"o#$%'&()*+,-./012435768:9;=<>?@BACDEFGHJIKLMNOQPRSTUVXWYZ[\]a_^`Zq F1F 0EL7_`Gz2݋ړ"}񼄻Mv$$5Յ0v9>cjoPHSc4gvzpbǁs$˔  5tJBQF)(6K|ND (e szxfgY4ZL /\۪W~ K\#\ӆ (X 0źfPQ lu=uCI19I>FV.V숅2ph;I u 'pjBF.!;N^C)(p7lk cTZ9x&1/iW}_b|ׄ KfNuY5aNS{Q֙Au,\:n΁ŤﻯQ1K-|]:=pGS+$逜uC=t/[g&}_NvF.SS$ciNWZ!}P81g1,NB8+hNS俯" F8wyzpdciNWZ!}䁗N3$~Ⱥ"!]<8\y7~m=K-|tx1yAxi꽨$~Ⱥ"!]<8OX/qjզVHr_#NvY%˰5nY7O-{-ke0n(ډ-3_#D}<+f@E<"XQB~Vqղbb(E6l?S&.S}A]P%DGIN(dh6:s&XʉJf]҆/&EJ P F]q;'@)" WDn;23^")E90 J)M"\j/dՇIn%S9.AkMHa'X!DB_)9 Jk49p*΀PLH`'3Y+ )GP ^20@S:rtxJy =`*im̐Xs %A&, ;J{J)-ILB % C̠E2#*8g0;BWO8(i`fR.Ch}'B2Ob*1(UZhA 3l՜xM̝B&AyLk0O 3̼d|ݙzg npc$5*F2b'0,Nu_#Oku_#O_ĺ3ź'0,~]u_#O|ذkUu_#O+X5 k`}r5F|XX]F`}u_#Ou_#OذƙHkM2/@o{m›2I'z")򨦺DOY,KNsA K#Ԙ< Y5q|կMw_BF DOio#D!/mɂ7h8"a}dHkT[S LNł7dHר^_&zJ}Ok/mɂ7pj2Yx:jkTzoK4t`e(œ=5eרLE>SQ^ے# LE>SQA o'2kˢ j$)C57a7(Q   qH0kɎ8 6R$c[E )8խ3ӠzT_Xfңe8MגF$ 9뜾Q! E )8խ3F.Fe IkTɎ_dً֙A r~e/[gTeFHԭ~|vY.F(IL`<=ZaY+}k|ɲTP_gO2"a88,YSm41B}sɲjkHFj%}}]fًZibZ!}sًgoԭ~|"!q%Y6pyl>5Bsً[w_#d|%YbO# Ik goԭ~|"!q%YN:Fz.H|n}]L^^T>SL⇬VHr_[7 g_#DBR㻘 b[c\ErN=kT`Ftd'KA ufTO,!-=} qCIMi25*wC$ID-|&s_Z!}3GMl&j4~H{zX:>5*$!5Μ7 ~802kT/z IkTɎԂI7ԉb\jk8c'z=e=ł ,HG?SjkTHﻯQyुS8@רlY7O-5*bIi;,!} "MR;Sj.]̤G˘ר#b0n(NR F.qvW?MnHϥ{j}V^T} qHb8= =-kGvhkT-ڝGGݒ_emhѮ+ 3kT-uӣnz5*[V1-Yz5*[Vӣ{Xu4wF$䤮ph1!85*[V~hat.0\[VvEL2.PAST  "!$#o%&(')+*,-/.0123456789:;<=>?@ABCDEFGIHJMKLOQPSRN7HpfDc'?K9yίѱ׹O)2 jV_jk(KKCK!H7kKI~>t"[PuÏ[ИB:\>qYvsݮs'H 0;:nsu+G^ԩ{QI Iku_6]|ѹS.F8Ye%n:8N@}[u7pʋqR i|Z߁tN-Rj;5*$P >pխ3o%ܵlR0KTkT\ciIv8K ~Eu̠} j$)C;8xmT~5B1/YSm,۩.}#Qyु,۩.!F%!5u8%v55*1/YSu7pFŭ~|n%Yo<{jS_dً֙A;,iTKmF%}Z[\}P81g8_l')g-/oMv/Y 25e `,۩{~VHr_KT]| ǼdNYKdNᘗ,۩5z@%v Ǽd`FG?SK-|!pkHC:ȲjY0KTp"CjvgD2|Vz]ϒ0S=K7}}JB`k[\_yl>Y8e `} KEmԭ~|oPXY8{Q'=Zb}VKm=Kn=ﻯQ1=.q \{Q I:HA'nYo+Q ';Fr_#$hNBQ K3O\ƯM_#dŽEu5Bij T'zJO0ܣ223T{d&YGꥣe$#,㿯 dN>NSGYq/{Q:3} I}$,QḆ18רlY[=Zmӣs9kT-1CcFrN=-kGvahnjz5*[Vcejk }_emhGG}ʖգE| 3T=kT-]QU_emh 3jFeѢՙ~4pztkT-]u壁c㿯QٲzhwՏNEz5*[V1Cq|}ʖգEh"=-kGv~4pz0kT-[hq}ʖգE|| 3T=G}ʖգE|>8=8kT-[cq}ʖգE|3h\z5*[VQU=-kGv\hq㿯QٲzhN<{5*[Vӣ<{5*[Vb18רlY[=Zmӣs9kT-1CcFrN=-kGvahnjz5*[V̎:G:]=?4O{dEl7q,fGǎ?7:\ %={U%9DvTU.:z9ĀǃeJH0"リw^B|=杆RxzqO,s}_BBr_NvFmHMg;SFM¸N  {+c""^5rgg7>m*a52|S/X&R6Wf&Y =˥>CeJR$;x03=f{JXب?z˥>e*|vM}1u.;1sݮs'H}3mB%5 x< G([<,ftJX̎׹y؀n2p4~ м ':Wf_0ArmQJX\c f'ż^sU k$Γi9Xu*k$6 ] casU >ݚe8lsU >N<\U](uk6\,f0+0_\U!; aMY; dPOwsuϱ],杆pnNCXO:WՀ e@ }@ Hp'(tp ?<4ji@PaaXb  2tFjbHi6'0c4A9 Ṗ>n>dK!Dv`&gY|GFkJtW[H g ѓadVcU@0&Tuy|02A%@pA&1@ W. 4BD`5W5ɊlsU IpsUsbiuRg~zze*kz6m*c Q6\UB8YIVQ|}14(J؈#y192KuWZ14wnɦ47sU-; [lmn>?ż^皫J$K!'}14&f؃t%,fOtw\U$>Mw^t%K|bw;x/wRMy2M pD\UX}6WJ+AgNCKTUy!IB|Obi{暫J:45JwzNCXZ;kl8`|x ^i׹>q=]uQtИsUsI^l}akx0۽lsU߅Rg&=z 6W|v #p*D_߅Rgzk+>]a6 ;9&КDh@+x+< /`{i @w>qTI$h3*P `;FK /#,< @W_dd W"ఌQ>x#>* [3B |6]p -` FhDb< 4G~=A@CdfPځ <ބ3A &eicnpy>Pd 8de{/,Սs@X`@Ek#7 l ߵ|p  | w Ǿ ws P~w~wz{' P uP (:{ {0P{z!P̀  w P8`O8po 0} `W}`Q opOp_p u[[s U^  :9_֨9\=]a\U!Jkx0۽lsU5 x] `VB@ {pQ"(ˇ&< "PEx`hxF 9:)s@8< 2G(c90ƌ{8C_*!A p@ |ĠdLAHTS R(<@M # puaƈaP>HB } #5G\93v B@+#4T0=Fhz `x>S{O3ABO9="w =2#42J5A4 BXB= p| `O'{:U=Pc6Exg  &2xc`eѣRFc,=j3AX:O2+MkdfD#qS}>dq@|>@TvELIZA.COM[04/07/91]% !jo8NF9 "p4"aDM0 1,y8C)t2㑐z2(% l{,D l,R(0TvZКc?-~fNyD h(b\+7Vj~[ E7 5 '10plD `` W~|uzf.6Ih (t @- #z z k@3 BK@! .-B/{hZ,LzE XzA xPt Xy r0AxpBE   j`xO:r0C<TP>o7 'XBM!j@ a\Va,10ugZQ /o `Xf Qѫup}|R0007}ppW{ _l |  8{y[u3Q5X'ox8  uf>`LuQ^G\GZ)7|WW,Q}Pp+ 8@ z~ : v.Ogf{OgWwYBQ f0U>`͕`!{Q)?yяiBu!}gP   :Ў08cI $c1}S?W@k}')6\U$a﹪5ɞ'Zl'`klz08^B`='`kl?}暫*J'`klz08T7!̣[oZ:W`56柮IV$aR:}voee.{:\U!K|gtk 暫*JTo*bM-sU[;[Op3ƆEmq!I'8]c\UWZ-}56(ObľmP(K\Up|shְ861;:V;Qt1[1ۍ_M5WJ+z nԙU%˟*cMYoj 6WU:杆&Y =y!6W|6Wy!I6T=y!FYkdsd:bnbvt#%6J4@%0<, 42~#vGHb %2 "4d"8av@d{d͈ u@!@d ``7Cn5 O_ٰsRk|݈^0,Ź[|CQ9Cr,@8D}PtrQ`X T\G&M5aS[TatBR\ =*ZC~a#!+r1ʸ )^TB9 ,P2&ˎh 樆Tp F`Up0?sP' Mm t=Cp(ZGPGM(8@HO#)dfTA1q$!\/k@^xz` @xZ0x*ف|P@H0Ipf@$A໒A_Z@L `   pLp*{ tdfGB UOi}ybT` 0ٚb P ͙'uPow7v`uDm`p`,t`|w0<z }|P`XPup 1} 5VOdngv`  ~O00`g x6')UA**s pwٽ0p: @^wI , NW|7-_E e`MM.s:3_CBp!,"w@E@fM C6l8T UPFDFr${=@Ն@}brG ` )FQspR NR>CH@Ȱ>AN04C6P >  ;s_6@`( `:]x- 0 0X"RܻR@ ` P&2`4+3C6 `(5 2: ~ CNrRRD L0T0APX@U0Rml $m0~=0>ܽ+)`)W57&&``+HMڂ90=-^`: `1p3P S T`*<$0 C*=/s 0;S.^mj|? ( N5FYK6q4 ܾ\ P>. < x0@co7s<]+  (@>3@G+,ܰ o F #k^%BAq P-% 4jӉ- za3p)+¾ LֆU0e  rPal Oa}IO*RPntm2qM=Cۊ\ [=-0" sӪ 4prma`rd*<2  F 0ǫ0! & 1& 0FBpʔ}Ozp9Pz{@ #0FO~P N`} *P * } bsU ! 0*_ !枵oVB tQƫű D*@1 b>c; 6 г ;R*CQ" A % Q  @p  nY2k3boP.PNO$X |Soq *+{@|,GL;D=;(MN0 o&Mn 8d r|@S ><p ]_ P {h7ˀE P>  Ipa2@) аq  \3. ۩Ż0"~ #DK+lj{  ` ^3">_U_`  ~ 0J+x0o gM=)q(|<xE5?@xkP>::e@yXGy0ĈP;PbBrp5 i+<sB p`13p- {`S6P ip~p՗ i"Р X< N=́&)@s>! P*-0͎5@x MP>& 8M3!dy#O~ 8e~ ` P W XSDl  Aܰ% p#H?5#2Mnr0(ß7R# R"C= N->g0pq宕^ *`++pV^MP@>MN"% S]H*<^??@I ^ )o%޺=sH1!Z?QeL0Kl] SL0O]   [SP B `p =I _>J<=#9,(p PRO<.\#`1 ìc4=Ѳc@f <.!ѕa @o^`(`Pv  q=[^WM8R"6<%,n50=Fy@&"(3+ ( 28 y ( A̼x`+p,p( `Gn@ewp (#/bB,0F  bB  е"/ Wqq `-@7 k+'޿rHS@ =p~@7(D@@[~7 wya市[2[;50 5(`֐́Cpm`X%̴ R @Gs7EI` `[p&} IO$X ~[O щWPFqP:sCOEFUEx U vq[RM"Ex`uP W¨ `8!n _?p.DUkopnse0ilkPypo d:;P $X Qt*t*_WP%0*_VT=* ` QeH*Z;?'=1Th$|1?.S۔ `lJ fc `` D 0U `+|* NQѠoШ/6 —1 e/! U 1-. 0K%FFD5cs1IJ c5dΔ0P $\1CPn r[! N=f *=P" jGP @" ?\?>lr@6Dr?lJ f `7P(`T,$ R ٷ г  p'  p i_3@  ? l<8p O h7i@Oy l Q* `V` p@xdU?! gLާJ:Aw蛪 Z Q P@& 0 P-  S 9+ P{ :'|N%M"z,)2`#$ 2,v y?@J T4WՒ3$հiՃ(EӌA6F׀8Q~]1C%P9BkIvn`+dS `!KtQ|4&0*-pB",?S" @ І,`=+ =b%N$.`!  _*<`0f1[uZ`P" `hTDEfUJ P-4/\sq` `PZ>zQ<:`o3b_=qSR Jbra QZqq @JD s_r^c0 @* _w@NZ@݋T7<@u$@@ *>e|4_l?5$'V@ <7@ !J!Wc*D#Ȼa=> 6*t @G?4 O&CQ2 !ݲaF`fd}lB]_)4* :Un]`x HrrpofH 92 AlsB-4T  @ <"eXy4E*9 3 >DLh\@~1eZAP-}-EjAlqFwX-#]h`sػCwG7ou-4Ew ? ҇Ev0Ӽ " >as* 4 )LfEC xR>bf9Mm)8F-"<ݹ*)m>a 8׶R9 xPM= lӄ` 2yp*QX 8F^-rĬpEǷyE. $XP isNj+И0  Ս&QxP09=kxQ+@Zׅs~f9 *Jʲ$~YK* ` ۄr@3 ` U iO-kQ" n/_s@! jT@-Y :Kϔi |"* *MkkX@_Ծ% U ddOĩ"Jj_ThU  fqZR@$ I5 a9$ڙb$2ےębb݉L@PofUZ? l4<cYHIC !lHKNHG.""Oǂȃ1?ϼKZ+A7i/ _H o 4p6Rh2,dKdH%CtI|v6GP2(4,(:TALKBR!!Y .v)*%B=to,nq3&TĆFjF΀&i 8 M)OYA9=GFtLc$5ĻNLç.Ȉ*# Az6@#~IT04q00*bH9@ !YIsuB .{䰗R8WP`O [6Xxں~ _̩!1OI1"EhRe뮂\ k`Ӏ~pahvq;?OVz.rg k\\mGa1뮂 kW8yu@ M9$ss+F>'a1뮂 kPy@ nlT=(2Bf0m 1*rfźm"y 1N2a7IpvV)fŘ@y' 14lPi  1a7`' 1foD뮆% klX(6> 1v\yBkC!*x8Blo0AT k>¶=Hl 1fuz[o0@\ͻf6[Rhsa1뮀mufo0D klP yf 1IfŔye 1KrfŘ@mgZ5bA8WlC>°lX cdgocihvELIZA.DOC[04/07/91]% M3c:MQp4-H" o6 &IEbؐ"! Qo3&s4by@t4⁄c03ycS E&KDq@S @a7~iI+Q1JT) !GS=7вE@C(EpSMeo7'LVc}oG<$A1:Dr! i1^FBܢSt/q8px;G{s~[ X0i2F"C(0x@" 6à…4"۵! !IJFC7<H4N+J5-Z{C6MB?Pܚ0*0[ p@дj܆R`AA@&2xA)MIǻG Ѳ(螶Ò!4JIj:nM sM*JkBd=Gаf/J`ђz`b *]"Ysì {迒i U01N 0 yd $X %Y-SE.jElǙE.?]>l k\6e}uC^{\T HoЀ"E `i~哦*oK~G!-EϓdP $T$X ^~y ]煘 xP?= ڣQ_@^ 0AyEoг$Wy $R $X Y/bH iUǼr*0ӜDuTӠO;[>Y" @2xeTA , 0bbɋ*K< IK/̫ U0t4EN_Ђ^LuJBgCx c n vy#QƈjXIE/.bjC=UwtE a x`A ,^[zA^ @+ĂlT2D/tp P)YLjp"3[Hr 4 %pxVp\̡A9B/r2SE*a'g9%#"sq 5)\\HorxԴd)/cwQ)z]&SHHdAN#,πSAE$ ɳ* ܠQ2|UeE B!"1 F6,U"5 W<%R Wj ά̈́HFՈ4!FU0a/YD p&>R(np4.3XH.+&I5V :$ѮtjKFvpe6ٟTRw: "hHʏ+4~&<(xRc+lW¡ "||u0so?zzE@1p_$X af p*P QxPy=axPY=t=* `f2 0(Q*HypȁFJk^p ` z|$Pz2.K4hY氝h* QAWP Ӂո8^^̱# uP 0aY: U Ԑ` $X 0->Ӽa U JW $\ޫ<`# 0<` 6z nK`* `` #\ O AVi  f ,e `NK/PNKEBzPS0Rlc@e`aPleeh "pdqPi PnDq0tyEe`E$[K?FX%@ :"QCp $X 0af ,xe`-Ec% Ҫ6@T2:** k|'ʔ=L.9j,Pu$ncZ{TCl;Teh'[*Rp92,-(c500A:34\<2EHv"ڞbv2fXB vt@&}^Lxhz?"C (@$2pA1? $X.,6pʈ\;]C#`dCalʤYѷ A47ҊAV͹*1b}`y9ƤPPa=cI@>  8s,]Dò6U<9-Ǡ=Udž=ӈp.3@35) D}%nmNoBF;CjX3["P2|dP#Nf)+Hz tr!#:wA,]BO$`cB 'bpyqMIpZM+a1#M9"V~g2ȧWcE`%<< g= /{JsFw ?LaG.P`'iB0O 8"nnjb%g^=9wɁ4Bx*7ɒ(7;X󒈨!<.37iA>?'## j$+j;;:}#AX+a (<+Q542D..9H;c! >8)$iȦDۼ`M;R3~ǃb;4؁j 1˅A7؉&u3XmM4KI=:0V19[T,j;Ԉ %[@S"6%@;(4CEJnH Dq I^Ц#i\exٙgEAxV#=r P1A59R`F9EGHU hdB0#,;̾󤨝(7`A as$^S VeĒ "mnʼnܬRR(!)d"@6\f&10kL79(`ѭ`5ǘ&c=!=L&9ܷ=}nДUxEuEn.-۪lǘ&c=1:2,'K!W@Cys=}n3qv6[V}=5ݴ.՞EWcs̈55 5gy j4Qq&9y hפk?g-z1Og7 \9ƌ8?[xbx+LSjW)K{BcFo[xbgw,Ї@ヿc̈s'RߢTuJ͎1nj8_s\y=AґgM mZ%txo7o[qC1feU0\s\^55,3TK}\s\PsK1(F/355E3z1,߯9Ic1# $Ԝ-@k4ˊ\s\V(-c$:B.$%[ D‚9!҉Kx2)X=!C, #Jr8'# qH A0FA#DX"p1"-  /P`863o(g Jw٧#ߘX $D%;Ѝ'?xs85z *s߁˛]6 / kaD'9(@3 t<#<3sA@*{<ʙJX>U%)2+!zc(0⭀Q6 k0.DP5\7 D yc h2A_GȧA9LyʒR;9h? (9 9@ v)ELIZA.PASY ! o"#$&%'()+*,-.0/124356789:;<>=?@BADFCEGHJIKMLNQOSPRVWUTX{u$p dy,96qUp9&1pi;L cos7A6yAdSM AtVh[ڍ*m;/I sY/Ȕc=yx:#tR%F]kxQ'R$;4"^Tp\ )spd % Y\FDA%DSZё5ٰ3L7fs=}nÂqV۲L"YN? *1#A9[ED0ܮsK1f/uE3z1 =޿̈ˊ*)LK/ $Ϯ0-J4]E~1#X>iqv,^`: L*'a:!mz1gw[͡DŤz1gw[_LzQ&,q>QSYz~ :)I6a(אZ؉_-@ώ$)LХrJ[%H|(%('HJ8'07!Ԥo2왴iH'Ptp{H~㍨35Rn )[ldǩ1QI˃! OXH ЬRb Hd#h Aa L zӎ(Q@';Qzy="ItBkj;Q0ؐzw 8#w+2Ѭ5/yg"k@K,ѥQ8@7D09&?sԒhB.tN)U0ʡb5':7찠Ys5+vob;1澉sOMǥu1m4vb];Ene}ǘ%e7ZIbC15K2.c+Nn ۝/#HѻC!Ak0h'踧jZC%AUIc<;bƹJ6W s*LZB$\ /7oяИ(" /uοL қ7_Tb; V&V*/pkUMx"a`SOxfC,Mꅊ#:4 g#F&id׫69 dq;'+!/zH8qv/T5N&L6@($rL' 7.P' X,|"!L`0xun<7UGR{L{$ ͼJ[29<ѾϘ4̇Ou/[\0C(@*\ wJDUz, (O*( *#" *"&#t7'$'#8ж CzLIS غʂώL02 #{YH:jd&!2[T99^b!){¥ɀN.1' 䧎0;TK'(L ⤄jhKj~a-WPMdcxࢽcBHpK-Р4$ Pc["4^΍x2YA>6>hҧu x)[x bm 4(&6iU7_`8""0*';mDDH2p#(NVY3B  q@Ք[IC1{"Ĭ@85 ҩ[Dիp@6M@7 m2ԇ `VB@ {pQ"(ˇ&< "PEx`hxF 9:)s@8< 2G(c90ƌ{8C_*!A p@ |ĠdLAHTS R(<@M # puaƈaP>HB } #5G\93v B@+#4T0=Fhz `x>S{O3ABO9="w =2#42J5A4 BXB= p| `O'{:U=Pc6Exg  &2xc`eѣRFc,=j3AX:O2+MkdfD#qS}>dq@|>@TvGERMS.COM[04/07/91]% !jo8NF9 "p4"aDM0 1,y8C)t2㑐z2(% l{,D l,R(0TvZКc?-~fNyD h(b\+7Vj~[ E7 5 '10plD `` W~|uzf.6Ih (t @- #z z k@3 BK@! .-B/{hZ,LzE XzA xPt Xy r0AxpBE   j`xO:r0C<TP>o7 'XBM!j@ a\Va,1hZ)B(> ?.RTѢюƓ#%6J4@%0<, 42~#vGHb %2 "4d"8av@d{d͈ u@!@d ``7Cn5 O_ٰsRk|݈^0,Ź[|CQ9Cr,@8D}PtrQ`X T\G&M5aS[TatBR\ =*ZC~a#!+r1ʸ )^TB9 ,P2&ˎh 樆Tp F`Up0?sP' Mm t=Cp(ZGPGM(8@HO#)dfTA1q$!\/k@^xz` @xZ0x*ف|P@H0Ipf@$A໒A_Z@L `vFAKECPM.ELZ[04/07/91]% Ǣ\ +NFo:Ba"q@O& }"JPq<@F$ɼrF@i9a5O3|8& `tBde!TY(KaF O;9&Ӆa7D@*vae6pf4 8QdoGK $M1xy8NSeG[^2;׎84$K\`ăy<\RHi6'0c4A9 Ṗ>n>dK!Dv`&gY|GFkJtW[H g ѓadVcU@0&Tuy|02A%@pA&1@ W. 4BD`  a6 ;9&КDh@+x+< /`{i @w>qTI$h3*P `;FK /#,< @W_dd W"ఌQ>x#>* [3B |6]p -` FhDb< 4G~=A@CdfPځ <ބ3A &eicnpy>Pd 8de{/,Սs@X`@Ek#7 l ߵ|p  | w Ǿ ws P~w~wz{' P uP (:{ {0P{z!P̀  w P8`O8po 0} `W}`Q opOp_p u[[s U^  :` P&2`4+3C6 `(5 2: ~ CNrRRD L0T0APX@U0Rml $m0~=0>ܽ+)`)W57&&``+HMڂ90=-^`: `1p3P S T`*<$0 C*=/s 0;S.^mj|? ( N5FYK6q4 ܾ\ P>. < x0@co7s<]+  (@>3@G+,ܰ o F #k *+{@|,GL;D=;(MN0 o&Mn 8d r|@S ><p ]_ P {h7ˀE P>  Ipa2@) аq  \3. ۩Ż0"~ #DK+lj{  ` ^3">_U_`  ~ 0J+x0o gM=)q(|<xE5?@xkP>::e@yXGy0ĈP;PbBrp5 i+<sB p`13p- {`S6P ip~p՗ i"Р X< N=́&)@s>! P*-0͎5@x MP>& 8M3!dy#O~ 8e~ ` P W XSDl  Aܰ% p#H?5#2Mnr0(ß7R# R"C= N->g0pq宕^ *`++pV^MP@>MN"% S]H*<^??@I ^ )o%޺=sH1!Z?QeL0Kl] SL0O]   [SP B `p =I _@p{ _py   HȎ 0gk k  ຊ |gk v3 м  7{<( tBȁP77 H ( 0wowW gupv>0ugZQ /o `Xf Qѫup}|R0007}ppW{ _l |  8{y[u3Q5X'ox8  uf>`LuQ^G\GZ)7|WW,Q}Pp+ 8@ z~ : v.Ogf{OgWwYBQ f0U>`͕`!{Q)?yяiBu!}gP   :Ў08cI $>J<=#9,(p PRO<.\#`1 ìc4=Ѳc@f <.!ѕa @o^`(`Pv  q=[^WM8R"6<%,n50=Fy@&"(3+ ( 28 y ( A̼x`+p,p( `Gn@ewp (#/bB,0F  bB  е"/ Wqq `-@7 k+'޿rHS@ =p~@7(D@@[~7 wya市[2[;50 5(`֐́Cpm`X%̴ R @Gs7EI` `[p&} 7P(`T,$ R ٷ г  p'  p i_3@  ? l<8p O h7i@Oy l Q* `V` p@xdU?! gLާJ:Aw蛪 Z Q P@& 0 P-  S 9+ P{ :'|N%M"z,)2`#$ 2,v y?@J T4WՒ3$հiՃ(EӌA6F׀8Q~]1C%P9BkIvn`+dS `!KtQ|4&0*-pB",?S" @ І,`=+ =b%N$.`!  _*<`0f1[uZ`P" `hTDEfUJ P-4/\sq` `PZ>zQ<:`o3b_=qSR Jbra QZqq @JD s_r^c0 @* _w@NZ@݋T7<@u$@@ *>e|4_l?5$'V@ <7@ !J!Wc*D#Ȼa=> 6*t @G?4 O&CQ2 !ݲaF`fd}lB]_)4* :Un]`x HrrpofH 92 AlsB-4T pLp*{ tdfGB UOi}ybT` 0ٚb P ͙'uPow7v`uDm`p`,t`|w0<z }|P`XPup 1} 5VOdngv`  ~O00`g x6')UA**s pwٽ0p: @^wI , NW|7-_E e`MM.s:3_CBp!,"w@E@fM C6l8T UPFDFr${=@Ն@}brG ` )FQspR NR>CH@Ȱ>AN04C6P >  ;s_6@`( `:]x- 0 0X"RܻR@   >^%BAq P-% 4jӉ- za3p)+¾ LֆU0e  rPal Oa}IO*RPntm2qM=Cۊ\ [=-0" sӪ 4prma`rd*<2  Cǫ09 cb@(P P" ,.D#f b*Ǵ~:~F% hOǰTk=!T 3(^ ~Y"=5 .h^ڃѲdF= Yq:ZNJP.`!tMrd)Pf2sP)@)w+`Blnioi0hPd1Z[4IMp1*NP ˯FVtdh>Ӽ-Mp3A|u*˱ ڇ&:S0-QRP@sF`Q2 ɩ 6P! b%X qoo,o 6iP(g0P/կLC/ʔ| 0l*Lo 72G xr.q@qO,oŁsHA q@ - qo< 0!a,Ҷ6D "223Pk+ߠQ|p'Amڃ "1I!bhH );F`L=@F0Nf" P K]K֕mK Pa\u RsZChu Qut蠉 /`"V!() P"0y(j s>mBcxp ! ? o*7> !+] !F`uN2 (?@ {ҷQ30"389ĜYBYx/"Yf]Ȕ~Yj~YSx@nYm8ec1>d\W{w-YE%*tI3{xܨ0ecswµ]5k`|kTO,<ok&\[9X đ^1yvYZ?)Gہk1Mnilu`N׊x^+-8Enb4Z Z^Z%1PײՁ9^+ki("j@ݨU-^x|dN<> /;pSxR+bg+4"nPlA}%wk wY1 eag~jO~zuo\J[u(|)j]rtkٟ5qE qzkٿT ykߨ>W%或bAA ETܮJ] t꺃)]!F/A .L8AJy :J=X1A …q2 )#^2YQ9- AqjW1ύvf,S=qV:Ϟ!q !s=q70o @ogGm3fT pV*ăsm^s0Z)i:@c`o!5@ R^5@w@hocy@i`fGe80 i14o g 5ǣJ)~zd`e+rxR Ϗ m`CP""z0"&{"V{ٚ= DhkPyhptmv\7ucPr?ζ{p+=?@ABCDEFHGIJKMLNPOQRSUTVWXYZ[\]^_`abcedgihfW38ͷ|p4ۃ'd( eOp`iBY*Ŧҷ.*bA"cNN}3 ! )Gˑd~Y 4 !8`u/`- >"` ;/B⇼ @R)R44Z[ۤk=@ 6P,{N6X-#  |@+CFͺO+H ,ʷBP|hvCA!j-!jK\ee[[| Ĺ 4gY*+=NG1TL+  ,5Xs+o`bR߫,R/N>^v_ 4"{ۤqgce+R"QZCNY*2: aXU"[[|amCNY*448G ? )`"=^0O@H pAEM4 䎚 n5 53Ha8 ]Fq5 ܈bXgW Cx`aaa~qYe=ݟoł,Nj[-d~ ʛ6^w-˭eqE ߵ~ט~טGtL'*h-4FY52keֲ ]c>L'*h-@fe֘eYf0FY#̬13|)L)6OTZf0aff3kI3k1gH2|)Mz) ω)j΄ـ*`i:q0pa] na}yiigz;0pshp"fGPgΫJ<P E0S  E@T ߐN@IUP 9K=.p 0ZZݍ`P `D `" >h)g#P) # g"QH*7kź)Au&IGrKYaP*~YMy v@" {;T ` z>o ޷0KL+$ -`*`ގ `P_2Vs 0pp]>b, ߰ Яa SkB] $_1d$/fM #4oШ\1@> &_ ]Ɏa. *yhr?_(^*y"L68*5pߵdµy焐z{;|M76YW~גE J`V Z-=X :NK~ג|B. ''\{m|/P 7Z2%c2u~l. eµ)~ג9\^7t,[NNP@DS}ߵd<yv(_AaP>!Cq%}>+Swxw-Ƃ#K*d(ػl<9{p!MNiB2E>w8)]K~ V]VqPiqJ(b;Isw ZĊɳ C ą)6*y8>%Yckevr9+ eڻo, $N;S× pO<pmiqex08bM:mZ2>n~AZAg %ٵ2ԄI  L)6OTZf-if0v3kI3k3kZҌ1A S MeYKYfeֲ5Z̙5ff ]c"GN$~ט aڳ)i8D>nWsB8w+OGN6Y ʾjx01A T!@`H4"v)'"KO653HaJ1A T #=:#=FFz_Ag\e;|'NM6 ]c>LKx!1A T}#iUwl(C^)v68;`µix0`Zz7&\1A TUñSa8NTpm)ʎ51A S ז =V4!Cy|tW PijtV?NyF{RʳS^)d(ƒ w~H7ec~]ynl*$AU|%/ đ^1yvY]AN{b-f~8WӗR.pexWwq[5OoսGx |ػZ89j[2Plx}5y?ߪL Nj[-dT fex}R):'"VOPVw糲Fȏ+;[1 ei8aZkJ~e9ߵZW ~<xsDTG1~xsD#]#~JHA8yuFX {JH?!CG,pFXwx>N_=ޥWΆ]#zD58M76G /wT= <ߪc)_Zk RwxUGz~H05O[u8HA8WƦR@䵘;:O"R0+v=ݟoqYU>+;:OV >!CYEZ9"X&'~ײ aӽzETnϷbAA`VV~zuoprC,RP*~T<vOTHELLO.COM[04/07/91]% ǀP@^–"t z,xn:-٥P[+YR4 b !Ь /cK'`ED?BvE2H:ve^ twP5[4xb #݅G=|2J <!<3A(lf~0"uZӜ !<_f!Ff`F?ƁH;NFzaDi#%Lz`f8xnj a Y9(ali|e`Z{lRad?W53Ha=Z\Gto4E 9/@oxߵ,GYKʏ+yn]Ƃ,NoZUI*9ߪsW #&R+`7ZkY_#be^wƬۇbOPz]c7{ ~H'5&?w\rsq{2V9#v dEA}wS 嵍 qzkY_#b ]>(_̓+9y zh`:W*Jߵ/rDM~ ]>ߵl>{ҫ 5NwT>{xa_Z -VŴn=B]x}QqNߪ{@>Qw~׮nñ^UvA9 ¸'0a?ڪ35|'Yl^{Ŋɳ ߨz`*>G4a?w?NyJЫ6~b$O7yvYXM]V80Vc#]b~bO7yvYXM]V80QoեX{X5RϷq[ߵS"R@EHnñ^<p,DFX놣1{`KñCWwytgE*ecO&*HA8y߻btUSj]wR) q8}H .u-G)^$ ?梇"1P|yͨmad"<WAzWNfmX̳d@Andn=r>X K@wu|^wAuFzuwlAnbxty!P! -GZ!K&7h#?1.r%$ ite~89Ĝ!bB]i CX_"P4bF+(6 {`Tl`7F=N7p/Ij[f! DB0fA 脚BhA|vf@uҟt8Bt=iՀ}wa h!!z^o>_z^{Cy^gz(|~Bc! +="@Op&p  Q7Y#D3 Z`0#B8ekhumɏJCUDUw| 4T ʧs="v| jhPU?O&5N; @$M]#s𪟇5FOdx>N_Scu9+I3.+=8W%};: 0% ~ au ߵx?wD{Tx>N_Scu9+2.+=8W~~) #yk$ځw8}MՁ[W{ڱKX5ucS) q2]#0쯮w-&w|]c"Gߵ,]\jykHAxnl*ߵ/rDMNk1{mi8NVw- Rv|2_ߵ/rD1r%Iߵ3HaauɆq+gFP(ӋƦR0+"R0+x4j4"*G]Vwx?ߪb]L N/JЋJyk14j4"*G]#Vwz?ߪ~t]#(,bR)z F *E J`V|BBO76Y~טϷqOx8?!CBܪc0鋭GzUSS*1yT>!Cy|tW PijtV?NyF{RʳS^)d(ƒ w~H7ec~]ynl*$AU|%/ đ^1  (2!QŠ"| 0\: C2 `PU L+@2b!$Cbȗ@$O%h#fHL!D*8#(J'QrHI))%X0&?tP1JH$?,3AAR(Tn]p4cC@U3ș3CO IclB#`3B`A@BA#y6>)+Ĩ p@5y4UX?SPW3x`}``X< U#9RH% ܏ "`2`i{= C\oPNB aM(0:C@vp0>mHax"iWW(89C;hhAÿM`%8dj\XaB\\0+H"8c,H{F {z8@(*rhH"p"hPH8'@`*@>  ;!x''`"${킐'*H'()#x)x*@"`&x` )^HP8p1wH@a [F߅_hCꚸ x&x,x2y-(' B>xDx  Qx8^xJx1-0).9{ U↸GG8hf 8(!( CB\P: (Fa /b "@x?D@R@L?@ fx{ {A&8 p4@aNXx  怈  < ?E@*xd,K(?O4d! fx$mP'xI; iae eyX 8jF e3b`0H;T[* (/?8'XTjj ]lIĝIW|5x8:9*.J:|Ap;ʘ!Z:b0&P0f`qh@j~& &YZ(oQkp H$ph OjP4l`6PCh*@l`0` U0,!X1p T ~h@YlP@+YlJ0 HQ -8*} #"NPmHP|i|x}xfO.hϼP1]b М ͨ!` iҷf340=6PkU8<~-7 i ~}`' ѪـҋPdRU,8 `hMm6PQ ÀQ R IS}S !SQ%Q+@P!aѻQHH%rTHN `eY D`L_ox f_ n\!Iw=e8 XrA§P>dhsB†PeNr` H#p `!c jV@b(#0/0as a- b'eE/a0ÈL2ʀe-7LHp<a$I0$'dŸ[KjB$Ha)2!vŸ&(ha)F(Ha%,P (a%X~ߔZhrkiC4GEi#4*Phd(j 7j#P=QVa% @*T"0<X (e%aNHa ׇ FH ]CpP?c4;C@hG]W#(7F8EHp%@oxЖ%0h@ A0 pa%dS@Sˆ X#HxXz*x@[L# @fx`?E<9è4br"Z xap%b>?h ד (?Xrp݈0p8} Pf%Be#A2t5x` z(MmmҀq!4~`g_n yx@@~Gb{~oDc̵4\ns9V偿p. Qx@f,mx<սOWٽ=)]K`<7iضlZ"o>wg QB?r $([3ia'xϕBHC%Yټ0b]x0dώ 5>tye=aa%zU`uN }zNbP' ~ |JX-Bl 1D @ ChB3r (rP +(b |`h:phF80 ~<aA @hiXaY: (@[wfka4@ahX1Xhx 'hwQ `+3P\@rHq_ 0` 1 `3PH=P(O`n@=f'0_*!ߵe`$p#0V.p]H /ߏ !I` pp @O X)8!Hk_f)Mpq &7 p8h $ p+rqgq*q`/'q'rr9;rpOf*s E]$#!x6h0p229x904`27x:I! 2p:tR2LWD4E f0#suUu`]0fa#߀&6r # 0 -8#8'Qvp_=]88`c s$V:K;xh *?@PvP}&S%f(&p zkN byȫd( &s: Fk}( & .JG}jpq>`iY|`yvwO|5cVy2D1wY|!|>Ď~}~9|yOWTOWT\|W<,g@vn1v v5~p p p A%\\,BAPøBB(4W5*K?2&SgPDlnHimD.ggCS9p?QSvx"@~h>%ahGh0yB`a݄6`9fbU(AK h fme1Lp Vo V94f4;?|\w_@:>'] FݥgF0ݡ`uey8Hhܞ|X6X2h8P-PT[Wcri9_[0сVyd*+nePW\zHta\\bJZkh V( i+k)*{PTQP0权$`fxP#fh$0s71NapL&P?n<7<4lih$V'q16~$]7jPrB a!?6<-=RG zR"ePHh )"Cx7Ԁchhы/-Fܣ^1>jF~fh)l7炁 ), {8BI/x,cePr#84 ¥d-@ьBt !@@@[f{&9afpaf ֈg$"n) tgL4nu!b*^A` wHAA  obZt=`|dc[%zb@0 ao bI  x  8 =U/ ƈ#&<8%Zh& 0$a`'|ki'0|kP[pq''gP_\RuGpGnӜOpeX'|xVZ&wOtCe!xh&wlTmǁ ~W-z0(x^whhx& x:N*(TxhB))?8c,(yR1, @ T#V{(h!w#~$R;8T3h8T+-+dB hm%Uoyhض -'|2z-{ x LXaHd>p;aUaZ*8ݳ:OXe% Z3r!yk1)LXe|" ^ ( 62J7GX{Leɪ (@zds?{Hr #P+8Pl1j9`B'|\ u#<;$= K  -@(f p@0,@>Р@X!aYg /jyɇPCX A Hf)ˁF`N8Ly&qPC_x==@dw X/  8h(^HHH H+€H`X````xxx x(X 8 i x X  8 h ( X #,@'zFaK |$z5ff^փq􁇀`\6aCSfX Ѡxկ R8ƠXN.7炆 9-5xBA}אz i)bkS#NDAƃW=DhD,+`ƮUS}D,+` yzP{e]0xڍjTQ+q]".ڞ+KĄjh]ZT6\nw9-B9N{"Fo/G6 HeP(kLhLQUkTPHMٽ$ר/HSFU%ڞ+"s7+6([Bm>ab@!g!@ #hu#4@̀GX ut$310 A\j~:H!@ d,E5t2 H>+Wz4F?bdЂ2H:eP0p?ҡ$!⯄`A"˱;~x ?PHO@L 0h2AQR|M&(~!R g#i~AԻ |'.@o-䐠PP xPPܠ-91Xean[x؁g7>ՇdA)k6`P@NSXת@_#X[+Sgd:{3*ES&xx ePP8) ќ#`?ɌP?Q{ej)ā-KTcضْ nXox}!xXp.4-Y)]:cɀ]L(X 8'`iཡ`, }95;QÀܠ0PXX%0lׁWULf.{WE<:|P}B|@.}yQSeP7I2^'8AQDoTkjۖ5ɲQJs7}wa\%=O+[Sn4PZ3`dˁh_|ϕtj ^oK$x;L&Ȁo9#P1#G#j0zGְw dRAD&fG`<U Р i*5ޑ?fGR@W$JQf4Î <΢ :\LU YvK4$= sAgΧ!v2ť@I8A&Hi+H*cr8MYC4KCPS 4N(FU AL.[%ܥTR'B&hm< `p0 @$ci,h :&8[- Hcdj0@C\ 0pea،=V:gC^5L} _@\+.Hg eD% BH"jaw?rTFd`3uZ`d6`q8FHxB~_P4t (0` eck second letter cpi 'O' jnz not$right lda fcb+11 cpi 'M' ;last letter jz is$com ;if it is a COM, then cont. not$right: call end$mes ;it's not a com file, so tell ; db cr,lf,'Must be a command (.COM) file' db cr,lf,eos ; end$mes: pop d ;get address of message mvi c,mesout ;PRINT STRING command call bdos ;print error message ; finish: lhld old$stack-offset ;get old stack sphl ;put it in HL ret ;return to CP/M ; no$type mvi a,'C' ;if there was space, change staLLԒ`n call bdos ;print it lxi d,defbuf ;point to default buffer mvi a,8 ;tell CP/M max chars stax d ;put it there mvi c,incon ;READ LINE command call bdos ;do it lxi h,defbuf+1 ;point to length lxi d,password-offset ;point to storage lda defbuf+1 ;get length ana a ;set flags jz gpasag ;if 0 then ask again inr a ;plus 1 for length byte mov b,a ;put length in B mploop mov a,m ;get char stax d ;save it inx h ;increment pointer inx d ; " " dcr b ;decrement KJ90È#hVЂ[y._c2L|2^Va8CHBu8hMb8 `x-> #1=5JᣯF:X#$B"sD A7QCHuЯ!da=A׌ya z2Ńx>x"@4xDCDip+ 932Q^#(L4?`?~A,!D('A\H?hg@!{@iۆ@HphF< p!(r@MAQ(fۇ02`8gx!`#& )0+ ""x&`"&8)$*`'"(.p)'h"!H)0#10* $1j|@ fcb+9 ;to COM mvi a,'O' sta fcb+10 mvi a,'M' sta fcb+11 ; is$com mvi a,0 ;zero record count sta fcb+32 mvi c,open ;OPEN file command lxi d,fcb ;load address of FCB in DE call bdos ;Open file inr a ;successful? jnz open$ok ;if so, then continue call end$mes ;if not, then tell ; db cr,lf,'Cannot open file',cr,lf,eos ; open$ok lxi d,buffer-offset ;point to where program goes r$loop: mvi c,setdma ;SET DMA command push d ;save it call bdos ;and tell CP/M lxi d,fcb M; bdos equ boot+5 fcb equ boot+5ch defbuf equ boot+80h tpa equ boot+100h stack equ tpa ; org tpa ; ; start: lxi h,0 ;save stack pointer dad sp ;put stack in hl shld old$stack-offset ;save it lxi sp,stack ;get new stack ; ; stack saved so program can return to CCP without ; intervening warm start. ; lda fcb+9 ;get first char of extension cpi ' ' ;if ' ' then change to .COM jz no$type cpi 'C' ;If there is an extension, jnz not$right ;make sure it's .COM lda fcb+10 ;chlength jnz mploop ;if not zero, then next char xra a ;zero a sta fcb+12 ;zero bytes in FCB sta fcb+14 sta fcb+32 mvi c,open ;OPEN file command lxi d,fcb ;point to FCB call bdos ;open the file lxi d,n$start ;point to new program start ; push d w$loop1 pop d ;get DMA push d ;put it back on stack mvi c,setdma ;SET DMA command call bdos ;tell CP/M lxi d,fcb ;point to FCB mvi c,write ;WRITE SECTOR command call bdos ;do it pop h ;get DMA address from stack lxi d, !Q>X| !kOz@:@!H18t(T0B h D@X`$ F!EDHH0$0Ts`B@D@80$@C(RF4@hp4lH (EDMdFIh EDLk@PEoT\KkFW <[@hxP,/LU0Hf8pTH@!8zp!Z080!PftIyP!!X XU.Z#8D^@!"!I!)  xıK x =LK>$HX,P6Ic?$ĺ5HLp@$:hA$:McI3̲KLLL$LDLd<̌L;point to FCB mvi c,read ;READ sector command call bdos ;do it pop d ;get DMA address back ana a ;EOF? jnz done$read ;if so, then ask for password lxi h,80h ;length of sector dad d ;bump DMA xchg ;put new address in DE jmp r$loop ;and read some more ; done$read: xchg ;dma ==> hl shld end$prog-offset ;save last address gpasag call get$pas ;print password message ; pas$mes db 'Password: ',eos ; get$pas pop d ;get address of message mvi c,mesout ;PRINT STRING functio  80h ;length of sector dad d ;HL has new DMA push h ;put it on stack mov a,h ;this is to get 2's complement cma ;of address. We are subtracting mov d,a ;the current address from the mov a,l ;high address. If the high byte cma ;<1 , we are done mov e,a ; inx d ;Now 2's comp. of address in DE lhld end$prog-offset ;get ending address dad d ;Subtract (add 2's comp) mov a,h ;get high byte inr a ;is it FF (-1)? ana a ;set flags jnz w$loop1 ;if not, write another secth ; move equ $+offset mov a,m ;get byte stax d ;save it inx d ;point to next addresses inx h ; " " " " dcr b ;decrement length jnz move ;if not done, loop jmp defbuf+20h ;go to segment ; n$mv equ $+offset ;segment that gets moved lhld old$stack ;get stack pointer push h ;save it on stack lxi h,buffer ;get start of actual program mov a,h ;We have to compute the length cma ;and because X-Y equals mov d,a ;X + Two's complent(Y), we have mov a,l ;to find trd is correct, the program is moved ;to the TPA and executed. ; lxi h,0 ;save stack pointer dad sp ;stack is in HL shld old$stack ;save it lxi sp,stack ;get new stack call ot$pw ;print password message ; db cr,lf,'Password :' db eos ; ot$pw equ $+offset pop d ;get address of message mvi c,mesout ;PRINT STRING command call bdos ;print it lxi d,newbuf ;point to input buffer mvi c,incon ;READ LINE command call bdos ;read it ; lxi h,password ;point to actual password l!9"1:e WC':fO':gMfL Must be a command (.COM) file $ *>C2e>O2f>M2g>2|\<L Cannot open file $\ѧ­!Ò"ͿPassword: $ > !:ʱ*.#".ɯ22)! ",". <  NO FILECRC FILE$!   >. @ Checking wi match - : ̓ : J M @ Quantity of lines failed parse test - : ̓ : ~ M @ Quantity of file(s) not found - : ̓ * d͔  ͔ 0T  Җ Wyʩ 0T 0ztiilh2|2   ~$#~# x  : F} *}= ">͇1 ]2 s : ~# ++FILE NOT FOUND++$: F*}’">͇†]<  CANNOT CLOSE CRCFILE$CRCKLISTCRCSK FULL: CRCFILE$  w# !]͐ DONE$!e S!]Q !eZ @ --> FILE: XXXXXXXX.XXX CRC = oS) \<‘@ ++OPEN FAILED++ !" !" * | ʹ) \!~2 #" Ý: ) > T : ) @ ++FILE READ E---------------------------------------- Contributed by Randal Dickinson, US ARMY ENGIN DIV EUR ATTEN: EUDDP-S APO NY 09757 FIND.*------- This routine searches the disk for a string of uppercase characters. (Sorry, all you characters have to be uppercase or you'll be ignored.) Anyone with a few hours to kill might futz this one so it doesn't look down its nose at lower case etc. -------------------------------------------------th file - ! ~T #M M 2 2 2 2 ! >2 3o: : @ ***No CRC Files found***$> ʉ ʉw#: <2 P6: .6@ Can not parse string ! ~ʽT #ñM ! > 6 #6^#6! ~T #! 4M #x] #e w~ T #>2 @ - s M@ File not found ! 4 >2 o: G: „: G: „@ *Match* 2 ! 4@ <-- is, was --> : ) > T : ) M 2 ! 4<2 ~# @ Not a space between CRC values<2 G-CATALOG???; ; EX 1.4 INSTALLATION .SUB FILE 11-20-82 ; ; 1. ERASE ANY FILES FROM PREVIOUS .SUB EXECUTIONS ; ERA EX14?.HEX Y ERA EX14?.SYM Y ERA EX14?.PRN Y ; ; 2. USE CPM 2.2 XSUB (not required if using previous version of EX) ; XSUB ; ; 3. CREATE EX14.LIB FOR ASSEMBLY OF ORG 0 RELOCATED CODE SEGMENT ; ED EX14.LIB #A #K IBASE EQU FALSE ;SUPPRESS EX14 INITIATOR CODE (ENABLE RELOCATED CODE) IREL EQU 0 ;SET RELOCATED CODE SEGMENT TO ORG 0 E ; ; 4. ASSEMBLE ONLY ORG 0 RELOCATED CODE SEGMENT ; RROR++ <* |): o% |g}o" 2  ; 0T ~T #~A > T > _h : F{͇2h2|: ʲ !\   :\2 ! \  \ ! \  \! \  \<7=Ɓo&   ]  2h2|2   ~$#~# x  : F} *}= ">͇1 ].”#””͡”››tK››͸›* =: =͔="  ʳ ª~#.  ¿~  #~  .+~#0:0~#!A.O.Gy~#0M0 K MMɷ:m2 FSÄCRCKLIST$$$››tK›, › **}|!"*{z*~]*"Ü  DISK FULL: CRCFILE$!"*~ MAC EX14 ; ; 5. RENAME STEP 4 FILES ; REN EX140.HEX=EX14.HEX REN EX140.SYM=EX14.SYM REN EX140.PRN=EX14.PRN ; ; 6. CHANGE EX14.LIB FOR ASSEMBLY OF ORG 100H RELOCATED CODE SEGMENT ; ED EX14.LIB #A #K IBASE EQU FALSE ;SUPPRESS EX14 INITIATOR CODE (ENABLE RELOCATED CODE) IREL EQU 0100H ;SET RELOCATED CODE SEGMENT TO ORG 0+100H E ; ; 7. ASSEMBLE ONLY ORG 100H RELOCATED CODE SEGMENT ; MAC EX14 $$PZ SZ ; ; 8. RENAME STEP 7 FILE ; REN EX141.HEX=EX14.HEX ; ; 9. CHANGE EX14.LIB FOR ASSEMBLY   it. Especially exciting on 5MHz modified KayPros. ----------------------------------------------------------------------------- Contributed by Jeff Richards TREK -------- You finally get a chance to command the Starship Enterprise. Phasors, photon torpedoes, warp drive, in fact, just about every thing but Jim Shatner. ----------------------------------------------------------------------------- From Micro Cornucopia et al ZCPR -------- Once you modify your system disk with this, you'll nevs file.] ; ; EX14.HEX contains EX Initiator Code ; EX14.SYM contains symbols for SID for EX Initiator Code ; ; EX140.HEX contains EX ORG 0 Relocated Code Segment ; EX140.SYM contains symbols for SID for EX ORG 0 Relocated Code ; ; EX141.HEX contains EX ORG 100H Relocated Code Segment ; ; BEGREL is the symbol for the start of the Relocated Code ; Segment in EX14.COM ; ; DRVERL is the symbol for the length of the Relocated Code ; Segment ; ; DRVL8 ------ From Micro Cornucopia et al ZCPR -------- Once you modify your system disk with this, you'll never go back to "straight" CP/M. This Z80 CCP replacement will look on drive A for a COM file when you are logged in on drive B and page during TYPE etc. Install by typing DIF2 SSED DIF/SSED.DOC ----- With these you can update someone elses copy of a program by simply creating a file of the updates (using DIF2) and sending only the differences. He would then incorporate the di --> FILE: EX14 .COM CRC = 02 E3 --> FILE: D .COM CRC = 66 48 --> FILE: TREK .COM CRC = DB 75 --> FILE: INSTALL .SUB CRC = 5F B1 --> FILE: 9-DISK .DOC CRC = EA 5E --> FILE: ALIENS .COM CRC = 40 35 --> FILE: ALIENS .DOC CRC = E6 FA --> FILE: FIX .DOC CRC = 0C C9 --> FILE: FIX .COM CRC = DE 4A --> FILE: FIND .ASM CRC = 8B 50 --> FILE: FIND .COM CRC = 93 41 --> FILE: FIND .DOC CRC = 64 2F --> FILE: DIF/SSED.DOC CRC = D7 AF --> FILE: DIF2 er go back to "straight" CP/M. This Z80 CCP replacement will look on drive A for a COM file when you are logged in on drive B and page during TYPE etc. Installation instructions in ZCPR.DOC DIF2 SSED DIF/SSED.DOC ----- With these you can update someone elses copy of a program by simply creating a file of the updates (using DIF2) and sending only the differences. He would then incorporate the differences (using SSED2) into his file. Saves on modem time. ----------------------- is the symbol for the length of the storage required ; for the relocation table bit map to be created by ; RELS.UTL ; ; RELOCL is the symbol for the DW in EX14.COM that will contain ; the length of the Relocated Code Segment ; ; ; A. SID is invoked and the .SYM files for the ORG 0 Relocated Code ; Segment and the Initiator Code Segment are loaded. ; ; B. The DW at symbol RELOCL is updated with the value of DRVERL ; from the ORG 0 Relocated Code Segment. ; ; C. OF EX INITIATOR CODE ONLY ; ED EX14.LIB #A #K IBASE EQU TRUE ;ENABLE EX14 INITIATOR CODE GENERATION (SUPPRESS RELOCATED CODE) IREL EQU 0 ;RESET RELOCATED CODE SEGMENT TO ORG 0 E ; ; 10. ASSEMBLE EX INITIATOR CODE ONLY ; MAC EX14 ; ; 11. USE SID AND RELS.UTL TO CREATE EX14.COM ; ; [note: If only REL.UTL is available, comment out the lines ; starting with IEX14.COM below and change the line ; SID RELS.UTL to SID REL.UTL and a SAVE 10 EX14.COM ; must be added at the end of thi .COM CRC = 6D 0D --> FILE: SSED2 .COM CRC = D8 D7 --> FILE: SNOOPY .TXT CRC = 15 BF --> FILE: PASSWORD.ASM CRC = E3 4B --> FILE: PASSWORD.COM CRC = 5A 48 --> FILE: CRC .COM CRC = B2 07 --> FILE: EX14 .DOC CRC = 9B 8F --> FILE: EX14 .SUB CRC = 14 EF --> FILE: EX14 .TST CRC = A3 A9 --> FILE: EX14 .ASM CRC = 3D 9A --> FILE: ZCPR .DOC CRC = BD F6 --> FILE: ZCPR .HEX CRC = 33 17------------------------------------------------------ To verify all the files on this disk, type CRC ----------------------------------------------------------------------------- can update someone elses copy of a program by simply creating a file of the updates (using DIF2) and sending only the differences. He would then incorporate the differences (using SSED2) into his file. Saves on modem time. -----------------------Memory for the two copies of the Relocated Code Segment ; (ORG 0 and ORG 100H) and the relocation table bit map is zeroed. ; ; D. The ORG 0 Relocated Code Segment is loaded starting at ; location BEGREL. ; ; E. The ORG 100H Relocated Code Segment is loaded after the ; segment loaded in step C plus the length of the relocation ; table bit map. ; ; F. RELS.UTL routine SETADRS sets the starting addresses of ; the two Relocated Code Segments for creation of the relocation ; !   table bit map. ; ; G. RELS.UTL routine SETLEN sets the length of the Relocated ; Code Segment and builds the relocation table bit map. ; ; *H. RELS.UTL routine SAVE saves the EX Initiator Code Segment, ; the ORG 0 Relocated Code Segment, and the relocation table ; bit map created by RELS.UTL. ; ; * [note: not used if only REL.UTL is available] ; ; I. CP/M is returned to by G0. ; ; **J. SAVE 10 EX14.COM saves the EX Initiator Code Segment, ; the ORG 0 RelocatedT SUPPRESS ; DIR ^.XXX^. ; ; TEST PRINT SUPPRESS WITH EX COMMENT ; DIR ^.YYY ;; EX COMMENT^. ; ; TEST PRINT SUPPRESS WITH IMMEDIATE PRINT MODE ; DIR ^.ZZZ ^^. ; ; ; TEST CARRIAGE RETURN(3) ; ||| ; ; TEST $$ ; $^$|$$ ; ; TEST $^$$ DEFAULT PARAMETERS ; ^$ DF1 DF2 DF3 DF4 DF5 DF6 DF7 DF8 DF9 ; PARAMETERS=$9 $8 $7 $6 $5 $4 $3 $2 $1 ; ; TEST LOOP TEST ; ^: LT PARAMETERS ; ^$ DF1 DF2 DF3 DF4 DF5 DF6 DF7 DF8 DF9 ; PARAMETERS=$9 $8 $7 $6 $5 $4 $3 $2 $1 ; ;  '^<...^>' immediate display support, ; '^#' EX message suppression function, ; '^$' default parameter support, ; and '^|' cr,lf generation function [Larry Steeger] ; ; 1.0 08-03-82 corrected $^ error and ^ error [Larry Steeger] ; ; ? 06-19-82 added missing TRUE and FALSE equates [Ron Fowler] ; ; ? 05-17-82 corrected last cold boot no active message ; DATE EQU 1122H ;SET UP DATE YEAR EQU 82H ;SET UP YEAR MARK EQU 1 ;SET MARK VERS EQU 4 ;SET V Code Segment, and the relocation table ; bit map created by REL.UTL. ; ; ** [note: used ONLY if REL.UTL is used] ; SID RELS.UTL IEX14.HEX EX140.SYM R I* EX14.SYM R SW.RELOCL .DRVERL . F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0 IEX140.HEX R.BEGREL IEX141.HEX R.BEGREL+.DRVERL+.DRVL8-100 C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8 C.SETLEN .DRVERL .BEGREL+.DRVERL IEX14.COM C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for ex; ; EX14.ASM - An enhanced version of EXEC and EX. ; ; START 05-09-82 ; ; DATE 11-20-82 *LAST MAJOR CHANGE ; ; HISTORY: ; ; 1.4 11-20-82 fix for 1.3 modification to put CP/M serial # on ; a page boundary and refresh it on warm starts. ; (Some programs are not subtracting 6 from the ; BDOS+1 location when calculating high memory, ; MBASIC is one of these) ; ; 1.3 11-07-82 fix for software that expects CP/M serial # below ; BDOS ; ; EX14.TST - TEST EX FUNCTIONS ; ; ; TEST RECURSION PREVENTION ; EX14 ; ; TEST XSUB PRESENT ; XSUB ; ; TEST IMMEDIATE MODE ; ^ ; ; TEST $^? WAIT FOR CARRIAGE RETURN ; ^ ; ; SET EX MESSAGE SUPPRESS ; ^# ; ; TEST EX MESSAGE SUPPRESS BY WARMSTART ; ^C ; ; RESET EX MESSAGE SUPPRESS ; ^# ; ; TEST RESET EX MESSAGE SUPPRESS BY WARMSTART ; ^C ; ; TEST EX COMMENT ; DIR X.X ;; EX COMMENT ; ; TEST PRINERSION ; ; EX14.COM IS AN ENHANCEMENT OF EXEC.COM AND EX.COM ; ; OPTIONS: ; ; EX cr ; ; EX cr ; ; ^ WILL GIVE CONTROL CHARACTER ; ; | WILL BE CR ; ; ^| WILL BE CR,LF ; ; ^: WILL CAUSE EX TO RE-EXECUTE THE .SUB FILE FROM THE BEGINNING ; ; ^? WILL CAUSE EX TO WAIT FOR A CARRIAGE RETURN ; (^C WILL ABORT EX AT THIS POINT ALSO) ; ; ^$ WILL CAUSE THE REST OF THE LINE TO BE TREATED AS A ; SET OF DEFAULT PARAMETERS SEPARATED BY BLANKS TO BE ; USecution. ; .SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for exID RELS.UTL IEX14.HEX EX140.SYM R I* EX14.SYM R SW.RELOCL .DRVERL . F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0 IEX140.HEX R.BEGREL IEX141.HEX R.BEGREL+.DRVERL+.DRVL8-100 C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8 C.SETLEN .DRVERL .BEGREL+.DRVERL IEX14.COM C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 G0 ;SAVE 10 EX14.COM (only if using REL.UTL) ; ; EX14.COM is now ready for exJMP address. ; ; 1.2.1 09-16-82 fix for MBASIC execution under EX 1.2 . ; ; 1.2 08-11-82 added '^:' EX runtime re-execute logic function, ; '^?' EX runtime wait for carriage return, ; logic to prevent input/EX buffer overlap, ; logic to insure (Xsub Already Present), ; logic to prevent EX runtime recursion loop, ; and prompt character logic [Larry Steeger] ; ; 1.1 08-06-82 added ';;' EX comment's support, ; '^.' print suppression function, ;"  ED IF THE USER HAS NOT PROVIDED ONE ON EX'S COMMAND LINE. ; ; ^# WILL TOGGLE PRINT SUPPRESSION OF EX MESSAGES ; ; ^. WILL START PRINT SUPPRESSION OF ALL CHARACTERS ; FROM .SUB FILE UNTIL A SUBSEQUENT ^. IS ENCOUNTERED ; ; ;; WILL INDICATE THAT THE ;; AND ALL CHARACTERS FOLLOWING IT ; UNTIL A LF IS ENCOUNTERED ARE NOT INCLUDED IN EX'S ; TEXT BUFFER ; (I.E. AN EX ONLY COMMENT) ; ; ^< WILL START IMMEDIATE DISPLAY OF CHARACTERS FROM ; THE .SUB FILE UNTIL ^> IS ENCOUNTERED OFFBIT ;NO XTHL ;YES, GET BIT MAP MOV A,M ;GET NEXT BYTE INX H ;INCREMENT BIT MAP POINTER XTHL ;SAVE FOR LATER STA BITMAP ;KEEP BIT OFFSET OFFBIT: LDA BITMAP RAL ;TEST FOR OFFSET STA BITMAP ;SAVE NEW BYTE JNC NOFSET ;NO DCX D ;GET BACK TO LSB LDAX D ADD L STAX D INX D ;MSB LDAX D ;YES ADC H ;ADD IN OFFSET STAX D ;PUT IN MOVED PLACE NOFSET: INX D ;INCREMENT MOVED POINTER JMP OFFLUP ;CONTINUE WITH RELOCATE ; GOTO: POP D ;RESTORE STACK DCX H ;RELOCATE PROGRAM-1 PUSH MACLIB EX14 ; $-PRINT IF BASE $+PRINT ; ; START OF EX INITIATOR CODE SEGMENT ; ORG 100H ; START: LXI H,0 DAD SP SHLD CCPSTK ;CCP STACK PTR LXI SP,BEGREL ;USER STACK AREA MVI A,0C9H ; (8080 RET) STA START ;PREVENT RE-ENTRANCE BY ZCPR LXI D,SIGNON;LOGO CALL PRINT CALL EXACTV ;CHECK FOR RECURSION LHLD RELOCL ;GET RELOC PROGRAM LENGTH PUSH H POP B PUSH B ;SAVE LENGTH FOR FUTURE USE LHLD BDOS+1 ;GET BASE LXI D,-806H ;GET BEFORE CCP DAD D MOV A,L ;SUBTRACT RELOC LENGKS XCHG CALL MOVE ;MOVE TO INPUT BUFFER XCHG MVI M,CR INX H MVI M,LF INX H SHLD INBUF JMP GETLIN ; OPENSB: LXI D,DFCB+9 LXI H,SUBNAM;MOVE 'SUB' TO DFCB FILE TYPE MVI B,3 CALL MOVE XRA A STA DFCB+32 LXI D,DFCB MVI C,15 ;OPEN FILE CALL BDOS INR A JNZ READTX LXI H,NOSBF2 LXI D,DFCB+1 MVI B,8 ;NAME LENGTH CALL MOVEFN ;MOVE FILE NAME MVI B,3 ;TYPE LENGTH MVI M,'.' INX H LXI D,DFCB+9;FILE TYPE POINTER CALL MOVEFN ;MOVE FILE TYPE MVI M,'$' ;END TERMINATER; (I.E. DISPLAY ONLY .SUB INPUT) ; ; $<1-9> WILL REPLACE PARAMETER<1-9> IN TEXT FROM THE COMMAND LINE ; ; $$ WILL GIVE $ ; ; $^ WILL GIVE ^ ; ; $| WILL GIVE | ; ; |,cr,lf,1ah will eat last from | to end of buffer ; ; ^C FROM CONSOLE WILL ABORT EX ; FALSE EQU 0 TRUE EQU NOT FALSE ; DAY0 SET (DATE AND 0FH)+'0' DAY1 SET ((LOW DATE) SHR 4)+'0' MONTH0 SET ((HIGH DATE)AND 0FH)+'0' MONTH1 SET (DATE SHR 12)+'0' ; YEAR0 SET (YEAR AND 0FH)+'0' YEAR1 SET (YEAR SHR 4)+'0' ; MARK0 SET  H ;SAVE TO USE IN RELOCATED PROGRAM SHLD OUTBUF INX H ;GET TO BEGINNING OF RELOCATED PROGRAM PUSH H LXI D,DBUFF+1 ;TERMINATE COMMAND LINE WITH CR PUSH D LDA DBUFF MOV L,A MVI H,0 DAD D MVI M,CR LXI H,PRMDMY;START AT DUMMY PARAMETER FOR .SUB FILE SPEC PUSH H LXI B,PRMPNL+2 XRA A CALL FILL ;CLEAR PTR AREA POP H POP D MVI A,(PRMPNL/2)+1 STA PRMMAX ;HIGHEST PARAMETER # + 1 for .SUB SPEC CALL PARMS ;BUILD POINTERS FOR COMMAND LINE PARMS LDA DBUFF ;SEE IF .SUB FILE PRESETH SUB C MOV E,A MOV A,H SBB B MOV D,A PUSH D ;SAVE NEW TOP/START TO MOVE TO LXI H,BEGREL;START OF MOVE OMOVE: MOV A,B ORA C JZ MOVEND DCX B MOV A,M STAX D INX D INX H JMP OMOVE ; MOVEND: POP D ;GET START OF MOVED PROGRAM POP B ;LENGTH OF MOVE PROGRAM PUSH H ;START OF BIT MAP MOV H,D ;MSB OFFSET MOV L,E ;LSB OFFSET OFFLUP: MOV A,B ;TEST LENGTH ORA C ;IF 0 JZ GOTO ;JUMP TO RELOCATED PROGRAM DCX B ;DECREMENT COUNT LDA COUNT INR A STA COUNT ANI 07H JNZ  JMP NOSUB ; READTX: LHLD INBUF XCHG LXI H,80H ;GET SECTOR OFFSET DAD D SHLD INBUF MVI C,26 ;SET DMA ADDRESS CALL BDOS LXI D,DFCB MVI C,20 ;READ SEQUENTIAL CALL BDOS ORA A JZ READTX ;READ COMPLETE .SUB FILE LHLD INBUF ;MAKE SURE BUFFER'S TERMINATED LXI D,-80H ;GET BACK TO END DAD D ENDSTR: MVI M,1AH ;EOF CHARACTER SHLD ENDBUF ;EOB ADDRESS MOV A,L SUI LOW BEGREL+1;SEE IF BUFFER'S EMPTY MOV A,H SBI HIGH BEGREL JC BUFLOW XRA A STA IMFLG1 STA IMFLG2 STA PRTFLMARK+'0' VERS0 SET VERS+'0' ; BELL EQU 7 CR EQU 0DH LF EQU 0AH ; PSUP EQU 80H ;^. PRINT SUPPRESS FLAG IMON EQU 81H ;^< IMMEDIATE MODE START IMOFF EQU 82H ;^> IMMEDIATE MODE STOP MSUP EQU 83H ;^# EX MESSAGE SUPPRESS FLAG CRWAIT EQU 84H ;^? EX RUNTIME WAIT FOR CR FLAG REXEC EQU 85H ;^: EX RUNTIME RE-EXECUTE FLAG ;JMPMON EQU 0FEH ;^; EX JMP TO SYSTEM MONITOR ; WARM EQU 0 BDISK EQU 4 BDOS EQU 5 DFCB EQU 5CH DBUFF EQU 80H ; ; NOTE: EX14.LIB IS CREATED BY THE EX14.SUB GENERATION PROCESS ;NT ORA A JNZ OPENSB ;OPEN SUB FILE LXI H,0 SHLD LINES ;START LINE COUNTER MVI A,7FH ;GET BUFFER LENGTH STA DBUFF-1 LXI H,BEGREL;SET UP OUTPUT BUFFER SHLD INBUF GETLIN: CALL CRLF LHLD LINES INX H SHLD LINES CALL DECOUT ;PRINT LINE # MVI E,':' ;GET PROMPT CALL OUTCHR MVI E,' ' CALL OUTCHR LXI D,DBUFF-1 MVI C,10 ;READ CONSOLE BUFFER CALL BDOS LXI D,DBUFF LDAX D ;GET LENGTH MOV B,A INX D LHLD INBUF ;GET INPUT POINTER ORA A ;SEE IF END JZ ENDSTR ;THATS ALL FOL#  G STA OUTCNT LXI H,1 SHLD LINES LHLD OUTBUF SHLD OUTLNE SHLD BUFSTR LXI D,BEGREL MOVSTR: LDAX D INX D ANI 7FH ;MAKE SURE NO PARITY CPI LF JNZ MOVST0 MOVSTX: CALL INCR JMP MOVSTR ; MOVST0: CPI 1AH JZ SETUP CPI '|' ;CARRIAGE RETURN JNZ MOVST1 ;NOPE PUSH D ;SAVE OLD POINTER INX D INX D LDAX D ;GET PRESENT LOCATION+3 POP D ;GET OLD POINTER CPI 1AH ;END OF BUFFER JZ SETUP ;THATS ALL SHE WROTE MVI A,CR CALL INCR ;INCREMENT LINES FOR ERRORS JMP MOVST4 ; MOVSTM,A LDA OUTCNT ORA A ;ANY CHAR. ON THIS LINE? JZ EXCOM2 ;NO...SKIP CR EXCOM1: POP H ;YES..FORCE CR MVI A,CR CALL CHRSTR MVI A,LF JMP MOVSTX ;CONTINUE ; EXCOM2: POP H MVI A,LF JMP MOVSTX ;CONTINUE ; EXCOMX: POP H JMP SETUP ; MSGSUP: MVI A,MSUP ;CONVERT '^#' TO MESSAGE SUPPRESS FLAG JMP MOVST3 ; PRTSUP: MVI A,PSUP ;CONVERT '^.' TO PRINT SUPPRESS FLAG PUSH H LXI H,PRTFLG CMP M ;ALREADY ON? JNZ PRTSST ;NO...SET FLAG XRA A ;YES..CLEAR FLAG PRTSST: MOV M,A ;SET/RESET FLAGI A,REXEC ;CONVERT '^:' TO RE-EXECUTE FLAG JMP MOVST3 ; ;JMPMN: MVI A,JMPMON ;CONVERT '^;' TO JMP TO MONITOR FLAG ; JMP MOVST3 ; GCRW: MVI A,CRWAIT;CONVERT '^?' TO CRWAIT FLAG JMP MOVST3 ; GCRLF: MVI A,CR ;GENERATE CR & LF CALL CHRSTR MVI A,LF CALL CHRSTR STA LCHR JMP MOVSTR ; PRMDEF: PUSH H LXI H,PRMDFP PUSH H LXI B,PRMDFL XRA A CALL FILL ;CLEAR PTR TABLE POP H MVI A,PRMDFL/2 STA PRMMAX ;HIGHEST PARAMETER # CALL PARMS ;BUILD DEFAULT PARAMETERS PTRS POP H INXUP: MVI M,0FFH ;SETUP END OF DATA DCX H MVI M,0FFH MOV A,L ;SETUP EX RECURSION ID, XSUB PRESENT, AND CP/M S/N CPI 11 ;12 BYTES ON THIS PAGE? JNC SETUP1 ;YES..OK DCR H ;NO...DROP DOWN 1 PAGE SETUP1: MVI L,11 ;FORCE PAGE BOUNDARY FOR CP/M S/N MVI M,0FFH ;SETUP EX RESURSION ID DCX H MVI M,'X' DCX H MVI M,'E' DCX H LDA BDOS+2 ;SET UP BDOS JUMP TO PROTECT DATA MOV M,A DCX H LDA BDOS+1 MOV M,A DCX H MVI M,JMP PUSH H LXI D,-6 DAD D ;PTR TO PSEUDO CP/M SERIAL # PUSH H 1: MOV C,A LDA IMFLG1 CPI IMON ;IMMEDIATE MODE ON ? MOV A,C JZ MOVST2 ;YES..SKIP EX COMMENT PROCESSING CPI ';' JZ EXCOMM ;PROCESS POSSIBLE EX COMMENT MOVST2: CPI '^' JZ MOVST5 ;CONVERT CONTROL CHARACTERS CPI '$' CZ GTPARM ;SUBSTITUTE COMMAND PARAMETER OR CONTROL CHAR. MOVST3: STA LCHR CPI CR ;=CR? JNZ MOVST4 MOV C,A LDA OUTCNT ORA A ;ANY CHAR? MOV A,C JZ MOVSTR ;NO..USE INPUT CR ONLY IF OTHER NON-CONTROL ; CHARACTERS IN CURRENT LINE MOVST4: CALL CHRSTR ;ADD TO BUFF POP H MVI A,PSUP JMP MOVST3 ; IMPRTY: MVI A,IMON ;CONVERT '^<' TO IMMEDIATE MODE START STA LCHR PUSH H LXI H,IMFLG1 CMP M ;ALREADY ON? POP H JZ MOVSTR ;YES.. STA IMFLG1 STA IMFLG2 JMP MOVST3 ;NO... ; IMPRTN: MVI A,IMOFF ;CONVERT '^>' TO IMMEDIATE MODE STOP STA LCHR PUSH H LXI H,IMFLG2 CMP M ;ALREADY OFF? POP H JZ MOVSTR ;YES.. STA IMFLG2 STA IMFLG1 JMP MOVST3 ;NO... ; CHRSTR: PUSH PSW ;CHECK FOR INPUT/EX BUFFER OVERLAP PUSH D PUSH H LHLD ENDBUF XCHG  D ;SKIP CR MVI A,LF JMP MOVSTX ;CONTINUE AT EOL ; EXCOMM: PUSH H LXI H,LCHR CMP M ; DOUBLE ;? MOV M,A POP H JNZ MOVST3 ;NO...CONTINUE MOV C,A LDA PRTFLG CPI PSUP MOV A,C JZ MOVST3 ;PRINT SUPPRESS LDA IMFLG1 CPI IMON MOV A,C JZ MOVST3 ;IMMEDIATE MODE INX H ;YES..IGNORE PREVIOUS ; PUSH H LXI H,LCHR LDA OUTCNT DCR A ;DROP 1 CHAR. STA OUTCNT EXCOML: LDAX D ;IGNORE CHARACTERS UNTIL EOF OR LF INX D CPI 1AH ;EOF JZ EXCOMX CPI LF ;LINE FEED JNZ EXCOML MOV  LHLD BDOS+1 DAD D ;PTR TO REAL CP/M SERIAL # POP D MVI B,6 CALL MOVE ;SETUP CP/M SERIAL # POP H XTHL ;GET JUMP ADDRESS/SAVE TOP OF MEMORY ; ; (SP) TOP OF MEMORY ADDRESS ; (SP+2) START OF BUFFER ADDRESS ; PCHL ;GOTO IT ; ; ERROR EXITS ; GETERR: LXI D,CMDER ;CONTROL CHARACTER INVALID CALL PRINT JMP LINE ;PRINT LINE # AND LINE AND EXIT ; NODEFP: LXI D,NOPRM ;UNKNOWN PARAMETER CALL PRINT JMP LINE ;PRINT LINE # AND LINE AND EXIT ; PRMERR: LXI D,PMERR CALL PRINT JMP LINE ER CALL CNTINC ;INCREMENT COUNT JMP MOVSTR ; MOVST5: CALL GETCMD ;VALIDATE CONTROL CHARACTERS CPI ':' JZ REXC ;RE-EXECUTE ; CPI ';' ; JZ JMPMN ;JMP TO MONITOR CPI '?' JZ GCRW ;CR WAIT CPI '|' JZ GCRLF ;CR,LF GENERATION CPI '$' JZ PRMDEF ;DEFAULT PARAMETERS' LINE CPI '.' JZ PRTSUP ;PRINT SUPPRESS TOGGLE CPI '#' JZ MSGSUP ;MESSAGE SUPPRESS TOGGLE CPI '<' JZ IMPRTY ;IMMEDIATE MODE START CPI '>' JZ IMPRTN ;IMMEDIATE MODE STOP JMP MOVST3 ;OTHER CONTROL CODES ; REXC: MV POP H MOV A,L CMP E JNZ CHRSTX ;LSB<> MOV A,H CMP D JZ OVERL ;MSB=, OVERLAP WILL OCCUR/ABORT EX ; CHRSTX: POP D ;ADD CHAR. TO EX'S BUFFER POP PSW MOV M,A DCX H RET ; EXACTV: LHLD BDOS+1 ;CHECK FOR EX RECURSION INX H INX H INX H ;SKIP 1ST JUMP MVI A,'E' CMP M RNZ ;NOT 'E' INX H MVI A,'X' CMP M RNZ ;NOT 'X' INX H MVI A,0FFH CMP M RNZ ;NOT 0FFH LXI D,EXACT CALL PRINT ;EX ALREADY PRESENT CCPRET: LHLD CCPSTK SPHL LDA 4 RET ;RETURN TO CCP ; SET$  ;PRINT LINE # AND LINE AND EXIT ; PRMTOO: LXI D,TOOARG;TOO MANY PARAMETER ARGUMENTS CALL PRINT LHLD ERRLNE CALL EPRT ;PRINT PARAMETER LINE JMP CCPRET ; BUFLOW: LXI D,BUFMTY;TEXT BUFFER EMPTY CALL PRINT JMP CCPRET ; NOSUB: LXI D,NOSBF1;.SUB FILE NOT FOUND CALL PRINT LXI D,NOTHER CALL PRINT JMP CCPRET ; OVERL: LXI D,OVERLP;INPUT/EX BUFFER OVERLAP CALL PRINT JMP LINE ; ; SUBROUTINES ; ; CONTROL CODES 0-1FH ; WITH SUPPORT FOR $ . # < > ; GETCMD: LDAX D ;GET NEXT CHARACTER DE? RZ ;YES.. LDA OUTCNT INR A STA OUTCNT RET ; PARMS: MVI B,0 ;CLEAR PARAMETER COUNTER XCHG SHLD ERRLNE ;SAVE IN CASE OF ERROR XCHG ; PARMSL: LDAX D ;IGNORE LEADING SPACES INX D CPI CR JZ ENDLNE CPI ' ' JZ PARMSL DCX D MOV M,E INX H MOV M,D INX H INX D INR B ;COUNT+1 LDA PRMMAX CMP B JC PRMTOO ;TOO MANY ARGUMENTS ; ENDPRM: LDAX D ;GET TO END OF PARAMETER INX D CPI CR JZ ENDLNE CPI ' ' JNZ ENDPRM XRA A DCX D STAX D ;TERMINATE PARAMETER I MOVPRM: LDAX D ;MOVE PARAMETER TO BUFFER INX D ORA A JZ ENDPAR MOV M,A DCX H JMP MOVPRM ; ENDPAR: POP D INX H MOV A,M RET ; NOPARM: PUSH H LXI H,PRMDFP;TRY DEFAULT PARAMETERS LDA PRMNUM CPI PRMDFL-1 JNC NODEFP ;> HIGHEST # MOV E,A MVI D,0 DAD D MOV E,M ;GET PARAMETER POINTER INX H MOV D,M POP H MOV A,E ORA D JZ NODEFP ;NO PARAMETER PRESENT JMP MOVPRM ;MOVE PARAMETER TO BUFFER ; MOVEFN: LDAX D CPI ' ' ;SEE IF SPACE RZ MOV M,A INX D ;INCREMENT PODECIMAL LINE NUMBER PUSH D PUSH B LXI B,-10 ;RADIX FOR CONVERSION LXI D,-1 ;THIS BECOMES NO DIVIDED BY RADIX DX: DAD B ;SUBTRACT 10 INX D JC DX LXI B,10 DAD B ;ADD RADIX BACK IN ONCE XCHG MOV A,H ORA L ;TEST FOR ZERO CNZ DECOUT ;RECURSIVE CALL MOV A,E ADI '0' ;CONVERT FROM BCD TO HEX MOV E,A ;TO E FOR OUTPUT MVI C,2 CALL BDOS POP B ;RESTORE REGISTERS POP D POP H RET ; MOVE: MOV A,M ;MOVE STRING AT (HL) TO (DE) FOR LENGTH IN B INX H STAX D INX D DCR B JN INX D ;INCREMENT POINTER CPI '|' RZ ;CR,LF GENERATION CPI 'a'-1 ;LOWERCASE? JC GETUPR ;NOPE CPI 'z'+1 ;a-z? JNC GETERR ;NOPE sui 'a'-'A' ;GET TO UPPERCASE GETUPR: CPI '@' ;0-1FH CONTROL CODE? JNC GETCC ; CPI ';' ; RZ ;JMP TO MONITOR CPI ':' RZ ;RE-EXECUTE CPI '?' RZ ;CR WAIT CPI '$' RZ ;DEFAULT PARAMETERS' LINE CPI '.' RZ ;PRINT SUPPRESS TOGGLE CPI '#' RZ ;MESSAGE SUPPRESS TOGGLE CPI '<' RZ ;IMMEDIATE MODE START CPI '>' RZ ;IMMEDIATE MODE STOP JMP NX D JMP PARMSL ;IGNORE SPACES BETWEEN PARAMETERS ENDLNE: XRA A DCX D STAX D ;TERMINATE LAST PARAMETER INX D MVI A,CR STAX D RET ; PRINT: MVI C,9 ;PRINT STRING AT (DE) CALL BDOS RET ; EPRT: MOV A,M ;PRINT PARAMETER LINE AT (HL) CPI CR RZ CPI 0 JNZ EPRT1 MVI A,' ' EPRT1: INX H PUSH H MOV E,A MVI C,2 CALL BDOS POP H JMP EPRT ; CRLF: LXI D,CRLFS ;PRINT CR/LF CALL PRINT RET ; LINE: LXI D,LINEM ;PRINT LINE # AND LINE IN ERROR AND EXIT CALL PRINT LHLD LINEINTERS INX H DCR B JNZ MOVEFN RET ; INCR: PUSH H ;SAVE OUTPUT POINTER LHLD LINES INX H ;INCREMENT LINE COUNTER SHLD LINES LXI H,LCHR ;CLEAR LAST CHARACTER MVI M,0 LXI H,OUTCNT;CLEAR CHARACTER COUNT MVI M,0 MOV L,E ;DE=HL MOV H,D SHLD BEGLIN POP H SHLD OUTLNE ;SAVE NEW OUTPUT LINE RET ; CNTINC: CPI ' ' ;CONTROL CHARACTER? RC ;YES.. ANI 80H ;SPECIAL CONTROL? RNZ ;YES.. LDA PRTFLG CPI PSUP ;PRINT SUPPRESS FLAG? RZ ;YES.. LDA IMFLG1 CPI IMON ;IMMEDIATE MOZ MOVE RET ; FILL: PUSH D ; FILL STORAGE AT (HL) WITH CHARACTER IN A MOV E,A ; FOR LENGTH IN BC MOV A,B ORA C MOV A,E POP D RZ DCX B MOV M,A INX H JMP FILL ; ; WORKING STORAGE AREA ; SUBNAM: DB 'SUB' LINEM: DB ' error line # $' EXACT: DB CR,LF,'(Ex Already Present)$' BUFMTY DB CR,LF,'Text buffer empty$' OVERLP: DB CR,LF,'Input/EX Buffer Overlap$' NOPRM: DB CR,LF,'No parameter or default parameter$' PMERR: DB CR,LF,'Parameter$' NOSBF1: DB CR,LF,'File ' NOSBF2: DB 'filenameGETERR GETCC: SUI 40H ;GET CONTROL CODE RNC JMP GETERR ; GTPARM: LDAX D INX D CPI '$' RZ CPI '^' ;UP ARROW RZ CPI '|' ;CARRIAGE RETURN RZ CPI '1' JC PRMERR CPI '9'+1 JNC PRMERR SUI '1' ;GET ACTUAL # (ZERO RELATIVE) ADD A ;DOUBLE FOR OFFSET STA PRMNUM PUSH D PUSH H LXI H,PRMPNT CPI PRMPNL-1 JNC NOPARM ;> HIGHEST # MOV E,A MVI D,0 DAD D MOV E,M ;GET PARAMETER POINTER INX H MOV D,M POP H MOV A,E ORA D JZ NOPARM ;NO PARAMETER PRESENT, TRY DEFAULTSS CALL DECOUT ;PRINT LINE # CALL CRLF LHLD BEGLIN PUSH H ;SAVE BEGGING POINTER FINDCR: MOV A,M INX H CPI 1AH ;END OF BUFFER JZ FOUND CPI CR JNZ FINDCR FOUND: MVI M,0 ;END OF STRING POP H ;START OF STRING CALL PRNTHL ;PRINT BAD LINE JMP CCPRET ;THATS ALL FOLKS ; PRNTHL: MOV A,M ;PRINT LINE AT (HL) INX H ORA A RZ MOV E,A PUSH H ;SAVE POINTER CALL OUTCHR POP H ;GET POINTER BACK JMP PRNTHL ; OUTCHR: MVI C,2 ;PRINT CHARACTER IN E JMP BDOS ; DECOUT: PUSH H ;PRINT %  .typ$' NOTHER: DB ' not there$' CMDER: DB CR,LF,'Control character$' TOOARG: DB CR,LF,'Too many arguments - $' SIGNON: DB 'EX ',MARK0,'.',VERS0 DB ' ',MONTH1,MONTH0,'-',DAY1,DAY0,'-',YEAR1,YEAR0,'$' CRLFS: DB CR,LF,'$' ; CCPSTK: DW 0 ;CCP STACK PTR IMFLG1: DB 0 ;=IMON ENCOUNTERED IMFLG2: DB 0 ;=IMOFF ENCOUNTERED PRTFLG: DB 0 ;=PSUP ON LCHR: DB 0 ;LAST CHARACTER READ PRMMAX: DB 0 ;HIGHEST PARAMETER # PRMNUM: DB 0 ;CURRENT $<1-9> NUMBER * 2 (ZERO RELATIVE) ERRLNE: DW 0 BITMAP: DB 0 ;PRESENT CALL BDOS LXI H,STARTM;TELL USER WE'RE STILL HERE CALL PMSG LDA BDISK MOV C,A LHLD CCPJMP PCHL ;GOTO CONSOLE PROCESSOR ; ; JMP TABLE TO OVERLAY BIOS ; LOCJMP: JMP NWARM ;WARM JMP BCONST ;CONST JMP NCONIN ;CONIN JMP NCONOT ;CONOT ; ; CONSOLE INPUT INTERCEPT ROUTINE ; NCONIN: LXI H,0 DAD SP ;SAVE RETURN STACK LEVEL SHLD CONSTK LXI H,MEMTOP;SET USER STACK NCONNL: CALL BCONST ;GET CONSOLE STATUS ORA A JZ GETBUF ;GET CHARACTER FROM BUFFER CALL BCONIN ;GET CHARACTER HLD REVBUF SHLD SAVBUF MOV A,M CPI MSUP ;1ST CHAR=MESSAGE SUPPRESS? JNZ EX1 ;NO... DCX H ;YES..SKIP CHARACTER SHLD REVBUF STA MSUPFL ;SET INITIAL FLAG EX1: LXI SP,MEMTOP LHLD BDOS+1 ;GET WARM JUMP FOR STANDARD CCP MOV A,H SUI 8 MOV H,A MVI L,3 ;SET UP FOR WARM CCP JUMP SHLD CCPJMP LHLD WARM+1 SHLD WARMPT LXI D,BSWARM MVI B,12 CALL MOVE ;MOVE BIOS JUMPS LHLD WARMPT XCHG LXI H,LOCJMP MVI B,12 CALL MOVE ;MOVE NEW BIOS JUMPS TO BIOS AREA ; ; EX RUNTIME BIOS INTERECHO TO CONSOLE JMP NCONNL ;...LOOP UNTIL IMOFF ; REXECR: LHLD SAVBUF ;START AT TOP OF BUFFER AGAIN SHLD REVBUF XRA A STA IMFLG ;RESET ALL FLAGS STA PSUPFL STA MSUPFL JMP NCONNL ;...LOOP UNTIL ^C ; CRWRTN: CALL BCONST ;WAIT FOR CHAR. JZ CRWRTN CALL BCONIN CPI 'C'-40H JZ EXABRT ;=^C CPI CR JZ CRWRTX ;=CR MVI C,BELL CALL BCONOT ;<>CR JMP CRWRTN ; CRWRTX: MOV C,A ;ECHO CR/LF CALL NCONOT MVI C,LF CALL NCONOT JMP GETBUF ; PSUPCK: LXI H,PSUPFL CMP M JNZ PSUPST ; OFFSET BIT'S COUNT: DB 0FFH ;PRESENT OFFSET BIT COUNT BEGLIN: DW BEGREL ;BEGINNING OF OLD LINE POINTER LINES: DW 1 INBUF: DW BEGREL ENDBUF: DW 0 ;END OF INPUT BUFFER OUTCNT: DB 0 OUTLNE: DW 0 OUTBUF: DW 0 BUFSTR: DW 0 RELOCL: DW 0 ;LENGTH OF RELOC PROGRAM(FILLED IN BY SID) PRMDFP: ;DEFAULT PARAMETER PTRS REPT 9 DW 0 ENDM PRMDFL EQU $-PRMDFP PRMDMY: DW 0 ;DUMMY PARAMETER FOR .SUB FILE SPEC. PRMPNT: ;COMMAND LINE PARAMETER PTRS REPT 9 DW 0 ENDM PRMPNL EQU $-PRMPNT PATCH: ;PACPI 'C'-40H ;SEE IF TERMINATE CHARACTER JZ EXABRT CPI 'S'-40H ;13H JNZ NCONEX CALL BCONIN ;WAIT FOR NEXT CHARACTER ANI 7FH LHLD REVBUF INX H MOV M,A SHLD REVBUF MVI A,'S'-40H;13H NCONEX: LHLD CONSTK ;RESTORE CALLER'S STACK SPHL RET ; GETBUF: LDA PSUPFL ;SET PRINT SUPPRESS FLAG FOR NCONOT STA OUTFLG CALL GETCHR ;GET NEXT CHARACTER ; CPI JMPMON ;JMP TO MONITOR? ; JZ JPMON ;YES..DO IT CPI REXEC ;RE-EXECUTE? JZ REXECR ;YES..RESET BUFFER PTR CPI CRWAIT ;CR WAIT? JZ CRWRTNCEPT ROUTINES ; NWARM: LXI SP,MEMTOP LHLD REVBUF ;SEE IF WE'RE AT BUFFERS END MOV A,M CPI 0FFH ;TEST IT JZ WARMR ;REAL WARM START RETURN LHLD WARMPT SHLD WARM+1 LHLD MEMTOP SHLD BDOS+1 PUSH H ;RESTORE CP/M S/N LXI D,-6 ; DAD D ;HL=BDOS+0 XTHL ;(SP)=PSEUDO BDOS+0/HL=PSEUDO BDOS+6 INX H ;+1 MOV E,M ;GET BDOS+6 INX H ; MOV D,M ; XCHG ;HL=BDOS+6 LXI D,-6 ; DAD D ;HL=BDOS+0 POP D ;DE=PSEUDO BDOS+0 MVI B,6 ;LENGTH OF S/N CALL MOVE ; LXI D,DBUFF MVI C,26 ;SET DMASET FLAGS IF NOT EQUAL XRA A ;ELSE RESET FLAGS PSUPST: MOV M,A ;SET/RESET SAVED FLAG JMP GETBUF ;AND GET NEXT CHARACTER(SETS EXEC FLAG) ; MSUPCK: LXI H,MSUPFL CMP M JNZ MSUPST ;SET FLAGS IF NOT EQUAL XRA A ;ELSE RESET FLAG MSUPST: MOV M,A ;SET/RESET FLAG JMP GETBUF ;AND GET NEXT CHARACTER ; IMFLGS: STA IMFLG ;SET/RESET IMMEDIATE MODE FLAG JMP GETBUF ;GET NEXT CHARACTER ; ;JPMON: DI ;DISABLE INTERRUPTS ; LHLD BDOS+1 ;SAVE BDOS JMP LOCATION ; SHLD BDOSVE ; ; XRA A ;STOP H3TCH AREA REPT 32 DB 'p' ENDM REPT 30 DW 0 ENDM ; ; INSURE 8 BYTE BOUNDARY FOR REL.UTL(RELS.UTL) ; ?PLOC SET $ IF (?PLOC MOD 8) GT 0 ?PLOC SET (?PLOC AND 0FFF8H)+8 ;GET NEXT 8 BYTE BOUNDARY ORG ?PLOC ENDIF ; BEGREL: DS 0 ;RELOC PROGRAM STARTS HERE (ALSO USED AS BUFFER) ; ENDIF ; ; END OF EX INITIATOR CODE SEGMENT ; $-PRINT IF NOT BASE $+PRINT ; ; START OF EX RELOCATED CODE SEGMENT ; ORG REL ; EX: POP H ;GET TOP OF MEMORY SHLD MEMTOP POP H ;GET START OF BUFFER S ;YES..WAIT FOR CR CPI MSUP ;MESSAGE SUPPRESS FLAG? JZ MSUPCK ;YES..TOGGLE FLAG CPI PSUP ;PRINT SUPPRESS ? JZ PSUPCK ;YES..TOGGLE FLAG CPI IMON ;IMMEDIATE MODE START ? JZ IMFLGS ;YES..SET FLAG CPI IMOFF ;IMMEDIATE MODE STOP? JZ IMFLGS ;YES..RESET FLAG CPI CR ;CR? JNZ GETEXT ;NO...EXIT XRA A STA OUTFLG ;YES..RESET PRINT SUPPRESSION MVI A,CR GETEXT: MOV C,A LDA IMFLG CPI IMON ;IMMEDIATE MODE ? MOV A,C JNZ NCONEX ;NO...RETURN TO CALLER WITH CHAR CALL BCONOT ;YES..IMMEDIATE &  7 DRIVES ; OUT 078H ; ; LDA 0DH ;GET H88.CTL PORT VALUE ; ANI 0CCH ;MASK 4MHZ, ORG-0, 2MS CLOCK, AND SINGLE-STEP OFF ; OUT 0F2H ; JMP 0 ;JMP TO MTR90 ; ; CONSOLE OUTPUT INTERCEPT ROUTINE ; NCONOT: LDA OUTFLG ;PRINT SUPPRESSION? ORA A RNZ ;YES...IGNORE ECHO MOV A,C STA PMCHR JMP BCONOT ; GETCHR: LHLD REVBUF MOV A,M DCX H SHLD REVBUF CPI 0FFH ;EOB? RNZ ;NO...RETURN LHLD REVBUF INX H ;POINT TO EOB SHLD REVBUF CALL MOVBAK ;MOVE JUMPS BACK LHLD MEMTOP ;SEE$ ; PMCHR: DB 0 PSUPFL: DB 0 OUTFLG: DB 0 IMFLG: DB 0 MSUPFL: DB 0 CONSTK: DW 0 ; DB 'BDOS>' ;BDOSVE: DW 0 ; ?PLEN SET $ IF (?PLEN MOD 8) GT 0 ?PLEN SET (?PLEN AND 0FFF8H)+8;GET NEXT BOUNDARY ENDIF ; DRVERL EQU ?PLEN ; DRVL8 EQU DRVERL/8 ;LENGTH OF RELOCATION BIT MAP ORG DRVERL ; ENDIF ; ; END OF EX RELOCATED CODE SEGMENT ; END  ; DRVL8 EQU DRVEUF: DW 0 CCPJMP: DW 0 WARMPT: DW 0 ; ; ORIGINAL BIOS JMP TABLE ; BSWARM: JMP $ BCONST: JMP $ BCONIN: JMP $ BCONOT: JMP X: STA DONEC RET ; PMSG: LDA MSUPFL ;PRINT MESSAGE AT (HL) CPI MSUP ;MESSAGES SUPPRESSED? RZ ;YES..EXIT PUSH H PMSGL: POP H MOV A,M CPI '$' ;EOM? RZ ;YES..EXIT INX H PUSH H MOV C,A CALL BCONOT JMP PMSGL ; F121: LXI H,BSWARM ; INSURE ONLY BIOS 1.1.2 LXI D,NWARM ; CALLS FROM NOW ON 1.1.2 MVI B,3 ; FOR PROGRAMS 1.1.2 CALL MOVE ; THAT MAY HAVE 1.1.2 LXI H,BCONIN ; COPIED OUR 1.1.2 LXI D,NCONIN ; ADDRESSES AS 1.1.2 MVI B,3 ; IF THEY WERE 1.1.2 CALL :10E40000C305E5C301E55000202020202020202066 :08E41000202020202020200024 :04E4590008E417E4D8 :10E47700434F4D01242424202020202053554200BF :01E487000094 :10E4BC001600004449522084E84C4953545DE954F9 :10E4CC0059504561E955534552C0EA44465520CA56 :10E4DC00EA474F2020D7EA4552412035E9534156AF :10E4EC0045FAE952454E207CEA4745542081EB4AD7 :10E4FC00554D50D2EAAF3207E43177E4C5791F1F8E :10E50C001F1FE60F5FCD48E6CD0BE6322AE5C17939 :10E51C00E60F325CE62803CD10E6117AE43E00B734 :10E52C002FC42AE62F322AE53A07E4B7202931779 IF BDOS+1=MEMTOP XCHG LHLD BDOS+1 MOV A,E SUB L MOV A,D SBB H JNZ EXEND ;DON'T REPLACE BDOS JUMP INX D ;GET TO BDOS JUMP LDAX D MOV L,A ;LSB INX D LDAX D MOV H,A SHLD BDOS+1 EXEND: CALL PMCHRS LXI H,DONEM ;TELL USER WE'RE DONE CALL PMSG LHLD CONSTK ;GET OLD STACK SPHL JMP BCONIN ; ; ^C ABORT EXIT ; EXABRT: LXI SP,MEMTOP ;^C ABORTS EX LXI H,ABORTD CALL PMSG JMP WARMX ; WARMR: CALL PMCHRS LXI H,DONEM ;END MESSAGE CALL PMSG ; WARMX: CALL MOVBAK ;MOVE JUZCPR manual on disk write to: Micro Cornucopia P.O. Box 223 Bend, OR 97709 and we will send it to you for the regular price of our user disks ($12.00). ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: active. Do not enter anything from the keyboard until EX14 says that it is finished. You may then hit the reset button and enjoy ZCPR. Once installed, ZCPR may be moved to other disks using SYSGEN. If you are interested in the source code and the full MOVE ; IN THE BIOS. 1.1.2 LXI H,BCONOT ; (MBASIC DOES THIS) 1.1.2 LXI D,NCONOT ; 1.1.2 MVI B,3 ; 1.1.2 CALL MOVE ; 1.1.2 RET ; 1.1.2 ; ; WORKING STORAGE AREA ; ABORTD: DB CR,LF,'>>>Ex Aborted<<<',CR,LF,'$' STARTM: DB CR,LF,'(Ex Active)$' DONEM: DB CR,LF,'(Ex Completed)',CR,LF DONEC: DB '>$' ; REPT 10 DW 0 ENDM MEMTOP: DW 0 REVBUF: DW 0 SAVBUF: DW 0 CCPJMP: DW 0 WARMPT: DW 0 ; ; ORIGINAL BIOS JMP TABLE ; BSWARM: JMP $ BCONST: JMP $ BCONIN: JMP $ BCONOT: JMP F :10E53C00E4CDAAE5CD00E6C641CDB1E5CD46E6B7C2 :10E54C002812FE0A3809D60AF53E31CDB1E5F1C6DE :10E55C0030CDB1E5CD6AE6CDCBE6CD04E6CD00E617 :10E56C00325CE6CDE3E7C4F2E6118BE5D53ADAE7A7 :10E57C00B7C2DCEACD62E8C2DCEA7E23666FE9CD85 :10E58C00CFE7CDE3E73A9CE4D62021DAE7B6C2F236 :10E59C00E6189BCDE8E54E6F2046696CE5C93E0D4B :10E5AC00CDB1E53E0AC50E025FE5CD0500E1C1C95E :10E5BC000E01CDE1E5C361E6F53E00B72806F1C5D5 :10E5CC000E0518E4F1F5CDB1E5F1FE0ACAE1E9C991 :10E5DC00119BE40E14C5CD0500C1B7C9F5CDAAE554 :10E5EC00F1E3FMPS BACK JMP WARM ; ; SUBROUTINES ; MOVBAK: LHLD WARMPT ;MOVE OLD JUMP TABLE BACK TO BIOS XCHG LXI H,BSWARM MVI B,12 CALL MOVE CALL F121 ;CALL 1.2.1 FIX FOR MBASIC 1.1.2 RET ; MOVE: MOV A,M ;MOVE STRING FROM (HL) TO (DE) FOR LENGTH IN B INX H STAX D INX D DCR B JNZ MOVE RET ; PMCHRS: LDA PMCHR ;SET PROMPT CHAR ONLY IF SPECIAL CHARACTER CPI ' '+1 RC CPI '0' JC PMCHRX CPI '9'+1 RC CPI 'A' JC PMCHRX CPI 'Z'+1 RC CPI 'a' JC PMCHRX CPI 'z'+1 RC PMCHR'  5CDF5E5F1E3C97ECDB1E57E23B7D9 :10E5FC00C8F818F50E1918091180000E1A18020E19 :10E60C000DC305005F0E0E18F8AF32BBE4119BE48E :10E61C000E0FCD05003CC90E1018F7119BE40E111E :10E62C0018F00E1218EC212AE57EB7C83600117AC4 :10E63C00E40E1318CC3E005F18021EFF0E2018C10A :10E64C00CD46E687878787215CE6B6320400C93E53 :10E65C0000320400C9FE61D8FE7BD0E65FC93A2ABD :10E66C00E5B72845117AE4D5CD1CE6D1283B3A898B :10E67C00E43D329AE4CDDFE5202F1107E421800040 :10E68C00015000EDB02188E436002335117AE4CD39 :10E69C0023E628153E24CDB1E5210815E6CADEE9CDAAE53E1732BCE421BDE4BA :10E98C0036FF060021BDE47EFE803809E5CDDCE5CE :10E99C00E1203DAF7734218000CD39E77EE67FFE64 :10E9AC001AC8FE0D280EFE0A280AFE09280DCDC431 :10E9BC00E5041812CDC4E50600180B3E20CDC4E5C5 :10E9CC000478E60720F5CDE1E628B9FE03C818B4B3 :10E9DC003DC8C37BEBE521BCE435201036163E0068 :10E9EC00FE502808CDBCE5FE03CA8BE5E1C9CD3E3F :10E9FC00E76F2600E5CD4DEA0E16CD1EE6E1283A6E :10EA0C00AF32BBE4CD2CE713FE5328021B29ED5388 :10EA1C0059E41100017CB528182BE521800019E57B :10EA2C00CD07E6119BE40E15CD33E80603FE2E200613CDF7 :10E81C0033E81803CD54E8060423360010FBED53FF :10E82C0059E43ABEE4B7C9CD0FE7281C23FE2A20D1 :10E83C0007363FCD5AE818077713FE3FCC5AE8103D :10E84C00E6CD0FE7C81318F923362010FBC93ABEE2 :10E85C00E43C32BEE4C921BFE40E0B119CE4060477 :10E86C001ABE200A132310F81AFE202004C9231004 :10E87C00FD23230D20E50CC93E80F5CDE3E7CDC586 :10E88C00E7219CE47EFE20CC2DE9CD2CE706002868 :10E89C0016FE412806FE53200E068013ED5359E454 :10E8AC00FE532803F1AFF5F1571E00D57832D4E8AA :10E8BC00CD27E6CC9FE528673D0F0F0FE660EBCDC5E7CD15E6201B3E00FE0003 :10EBAC00280932ABEB5FCD48E618E921DAE7AFB6BE :10EBBC00C277EB360118DD2100013EE3BC3816E5C7 :10EBCC00EBCD07E6119BE4CDDFE5E12006118000DB :10EBDC001918E73DC8CDE8E546756CEC3E01B7C9A0 :0000000000 2028032318F542 :10EB4C0006001181007E12B7280504231318F678ED :10EB5C00328000CDAAE5CD04E6CD4CE6CD0001CD4A :10EB6C0004E6CD5BE6CD10E6C33AE5E1CD41E6CD5A :10EB7C00CFE7C3F2E6CD7CE7E5CDE3E7E120F3CDCB :10EB8C0094EBF5CD41E6F1C922C4EBCD46E6324219 :10EB9C00E632ABE4CDF5E5CDE2 :10E6AC00E1E6C8CD32E6C33AE5CD32E6CD4CE63EE6 :10E6BC003ECDB1E50E0A1106E4CD0500C35BE621A3 :10E6CC0007E44604237ECD61E67710F83600210876 :10E6DC00E42259E4C9D50E0BCDE1E5C4BCE5D1C9A2 :10E6EC00CD3EE7FE10D8CDAAE52A5BE47EFE2138AC :10E6FC0008E5CDB1E5E12318F3CDEDE5BFCD32E66C :10E70C00C33AE51AB7C8FE2038DCC8FE3DC8FE5F28 :10E71C00C8FE2EC8FE3AC8FE3BC8FE3CC8FE3EC929 :10E72C00ED5B59E41AB7C8FE20C01318F7856FD0FB :10E73C0024C9CDE3E721A6E4060B7E2BFE202004A2 :10E74C0010F81804FE48282B219CE40100117EFED1 :10DE1E5D1E1200B18E5 :10EA3C00E4119BE4CD23E63C2003CDE1EBCD04E6D1 :10EA4C00C9CDE3E7C2F2E6CDC5E7CD27E6119BE4DD :10EA5C00C8D5CDE8E544656C6574652046696C6580 :10EA6C00BFCDBCE5D1FE59C28BE5D5CD3DE6D1C9B4 :10EA7C00CD4DEA3ADAE7F5219BE411ABE401100045 :10EA8C00EDB0CD2CE7FE3D2028EB232259E4CDE35D :10EA9C00E7201EF14721DAE77EB72804B870201171 :10EAAC0070AF329BE4119BE40E17CD1EE6C0CD9FD8 :10EABC00E5C37BEBCDECE65FCD48E6C38EE5CDEC54 :10EACC00E632A9EB18F5CD7CE7183C21000118378C :10EADC003A9CE4FE2020143ADAE7B7CA8EE53D32C04F3E56 :10E8CC000ACDBCE7D1D5A2FE00204AD17B1CD5E6EF :10E8DC0003F52005CDAAE51808CDEDE520207C2018 :10E8EC00A0060178CDBCE7E67FFE202013F1F5FEF3 :10E8FC0003200B3E09CDBCE7E67FFE2028163E2008 :10E90C00CDB1E50478FE0C300BFE0920D63E2ECDA1 :10E91C00B1E518CFF1CDE1E62005CD2EE61897D163 :10E92C00C9060B363F2310FBC9CDE3E7FE0B2012C3 :10E93C00CDE8E5416C6CBFCDBCE5FE59C23AE5CDE6 :10E94C00AAE5CDC5E7AF47CDB4E8119BE4CD3DE6D4 :10E95C00C93EFF1801AF32C6E5CDE3E7C2F2E6CD02 :10E96C002CE732EBE9280513EB2259E4CDC5E7CDB2 :10E97C00E75C0020281823D630FE0A301357790707078173 :10E76C00380B8138088238054F10E379C9C3F2E6BB :10E77C00CDE3E7219CE4110000060B7EFE20282D42 :10E78C00FE482829D63038E5FE0A3806D607FE1092 :10E79C0030DB234F7A07070707E6F0577B0707079D :10E7AC00075FE60FB2577BE6F0B15F10CEEB7DC989 :10E7BC0021800081CD39E77EC9AF329BE4CDD9E70A :10E7CC00C81807CDD9E7C83A5CE6C310E63E00B7D7 :10E7DC00C83D215CE6BEC9219BE4AF32DAE7CD2C03 :10E7EC00E7ED535BE41AB7280ADE4047131AFE3AEA :10E7FC0028071B3A5CE67718067832DAE77013AF15 :10E80C0032BEE40608C :10EAEC005CE6CD5BE6CD10E6C38EE53AA4E4FE20F1 :10EAFC00C2F2E62177E411A4E4010300EDB0210099 :10EB0C0001E5CD8BEBE1C02269EBCDCFE7CDE3E79F :10EB1C0021DAE7E57E329BE421ABE4CDE6E7E17E4A :10EB2C0032ABE4AF32BBE4115C00219BE401210069 :10EB3C00EDB02108E47EB72807FE2028032318F542 :10EB4C0006001181007E12B7280504231318F678ED :10EB5C00328000CDAAE5CD04E6CD4CE6CD0001CD4A :10EB6C0004E6CD5BE6CD10E6C33AE5E1CD41E6CD5A :10EB7C00CFE7C3F2E6CD7CE7E5CDE3E7E120F3CDCB :10EB8C0094EBF5CD41E6F1C922C4EBCD46E6324219 :10EB9C00E632AB