bobc@tikal.UUCP (Bob Campbell) (05/15/86)
There are several bug reports which need to be addressed and this are fairly simple. 1] The wrong version of Streams.DEF was sent the changes to it are very easy to do: RCS file: RCS/Streams.DEF,v retrieving revision 1.2 retrieving revision 1.3 diff -r1.2 -r1.3 11c11 < FROM FileTypes IMPORT ParamBlkRec,OSType; --- > FROM FileTypes IMPORT ParamBlockRec,OSType; 31c31 < PB : ParamBlkRec; --- > PB : ParamBlockRec; 36d35 < OSType = ARRAY [0..3] OF CHAR; (This means delete the line which defines OSType). 2] entropy!nunke pointed out a few features about the use of A5 which I had not noted. A5 was being used as the global "PROCESS" pointer which points to parameters to the current Co-Routine. It is set up as follows. Process Stack | | | | SysProc20 | Return to caller? | Frame Pointer 9 | | Frame Pointer 8 | | ... | -8(A5) | Frame Pointer 1 | -4(A5) | Frame Pointer 0 | A5 -----------> | 0 | I am not sure what this is Proc id #? 4(A5) | Stack Limit | | Parameters from | | Parent process | | .... | Because I didn't like the idea of swapping A5 before every trap call I don't set up A5 this way. Instead I use the MacIntosh useage for A5 This will work for every thing except Nested Subroutines: PROCEDURE P1; VAR i:INTEGER; PROCEDURE P2; VAR j:INTEGER; BEGIN j := i END P2; BEGIN P2 END P1; Because of this programs run with the M2Exec program may not work correctly. Programs run with the NewLoader installed in the resource fork should work ok as the 100H bytes allocated for the quick draw globals by the Linker are not being used and set in the area which would be used for frame pointers. In the current version stack checking is not supported and also co-routines are not supported either. This make the A5 set up that I use as follows: | Unused | | ... | | Frame Pointer 9 | | ... | -4(A5)--> | Frame Pointer 0 | A5------> | Address of QDGlobals | | Application Parameters| | ... | | Jump Table | | (Not used) | When I provide support for Co-Routines I intent to place the missing stack limits (etc) below the Frame Pointers, and reinstate the stack checking (as Co-Routines will have to turn off the macs normal stack checking to allow allocation of Co-Routine stacks in the Heap). I have been hearing rumors about the Current version of the MacIntosh 1 (or 2) pass Modula-2 compiler. It is rumored to be done (see article 332@ethx.UUCP in net.lang.mod2) if any one knows anything about this system I would like to hear from them, esp who would I talk to to get a version of this. Also I have spoken to people who claim that TDI (the amaga version of modula-2) claims they will not produce one for the Mac as the version Wirth is producing would leave them no market. This file is a BinHexed Packit I file containing the Source, and Compiled version of the "new loader" To use the new loader use ResEdit to create a Resource Fork on the M2Exec Document. Use the NEW option in the File Menu, and type in the full path to the file ie VOL:FileName as in "MODWork:DecLink.LOD". Then open the NewLoader program and copy its CODE resources, and paste them in the new document. Then convert the File Type and Creator to APPL PROG (or what ever you desire for Creator). You then have a standalone loader. Bob Campbell {dataio,fluke,hplsla,uw-beaver}!tikal!bobc (This file must be converted with BinHex 4.0) :#P"KBfY*G#j`DA3!8%P8)&"*9#!!N!3Qc3#3")Q!8%eKC`P1CAG-Ef&NCA)!"jR #!!S!!!Rk!%$,b!!!m4!!!!R1!!F!3$2d!*!'S#-!!PhF!!%Jj!"!,()!)3!X!!" "8&"-!*!%!3#3#3F!QX-MGCV&E0VXf!!!!3#3!`8!N!-%!*!%2J#3maJ!N!-S!!! "!*!%#!#3!b!!!$mm!!'Tm!!!!TS!N!-"5IS#BN+X!!a$q!N3+8N!%MPm!*!$&KP m!*!$'KPm!!%!'b!m!!!#$+%H)8J!(%2k!L`LL%(k!LkJ!%TX!""R!!!%UI4"qJ) H3rS"pL&*!#!KI!#3!mi!,M&m!!%!,#&m!*!$"!!NS!*"qJ(k3rS"hL&*!#!KI!# 3!pS!,M&m!!%!,#&m!*!$"!!NS!*"qJ(@3rS"XL&*!#!KI!#3!q!!,M&m!!%!,#& m!*!$"!!NS!*"qJ'b3rS"NL&*!#!KI!#3!q3!,M&m!!%!,#&m!*!$"!!NS!*"qJ' 13rS"HL&*!#!KI!#3!qJ!,M&m!!%!,#&m!*!$"!!NS!)J1J&5Saj+3'F!!!5Tp#) )!S%!rj!$3IS"5##"*%(9qJ%X)$S"-*!!ZJ%N3IS"3%25)8N!)#&k!4S!,M&m!!% !,#&!!#5J!LKk!4JU$#ik!3j"qJ%D3rS"%L&*!#!K4`!Z-A`!!3!X)A`!N!-#!#5 J!P5(-$S!p!a!!!PR!!!@3IS!l+!")(S!hU!IfIS![%k8UI4"qJ$B3rS!d#&*!#! K4`!Z-A`!!3!X)A`!N!-#!#5J!P5(1$S!XJ4%!!T"qJ#Z3rS!TL&*!#!K4`!Z-A` !!3!X)A`!N!-%!#5J!PL(,$S!L&5(*M`!N!-#YN4Z!!!b3IS!HN2k!()K53!J)8F !,M&m!!%!,#&m!*!$!J!NS!*8KbC-e[S!8YZcD!"8Jf$+9)G"qJ")3rS!3#&*!#! K4`!Z-A`!!3!X)A`!N!-#!#5J!P5(B!$r,!#3r`#3R`%!N!-&!*!$"!#3"$i!N!N F!$i!!%024%8!!3!+!!$rrb!!N!J"rrmN!!!F!*$r!*$(L,C36@&R$8jPGda[B@4 PFLj"FfeV#J!!#IS!3-[)!!$a%!!!#Fi!"`"!-r3!N!DJ)`!#AG`!!5$N!%!XFJ! K!#`!!&4&@&404848!3#3"4@H!!!"l*QR9*UDlU@l(3ml)&4SDA-JDA-JEANJ6Q9 h)%a[B@4PFL"QEh)J494)@L"0Ef4eE'%Y-L"3FQpRFQ&YFb"TG#"MB@iJBQ801b" TER0dB@aXC@3J5@iJG'KP)(*PFfpeFQ0P)'C[FQXJEfBJB5"PH'9M)%4[Bh9YC@j d)(4[)'eKDf8JDA301b"K)(0dB@jNB@a[EQ8JF(*[Ch*KE5i01`dl)%NJBQ9XD@9 fC5"dD'&d)(4SC5"ZB@eP)'pQ)(4SC5"XBA9ZBfKPC#"QD@aP)'Pc)'PZ)%0eFN& `6Q&YC5`01b"KEQ3JDA-JEfiJG'KP)'4PCQ&eE(3JGQpXG@eP,Jd0)*!+58j$6&9 %45#3!de%8c%k6@&M9(*KF(-Z4!dJN!T*6N0-984&)*!$6846-6T8EfpX4A&e,N3 0)*!+58j$6&9%45#3!de%8c%k8hPc4A&e,N30)*!+58j$6&9%45#3!de%8c%k4P0 &FA8Z4!dJN!T*6N0-984&)*!$6846-6T0B@08FQ&`Fbj%$3dl)&*PB@4-EfjR+%C TE'8X6fCQFf9d,%*eCQCPFLNl$6X0)*!+68&$8NmJN!95C@&N6'pZCb!J4La2CQB X3R9QCQ9b)$d0)*!+6%9")*!(HdCp,%%`$5#3#Na&35#3"hY#G@CQCA*p,%%a$5# 3#Ne29N8Z6##3"%%a,'P[3R9QCQ9b+%%`+3dJN!T06eC&,N`JN!4l6fCQI5aTEe" [FdpQCR0PG#K"-#N0)*!+68p@45jA)*!%)fCc4R*[E90dBA*d,'P[8'pc6@pNC5K "-#N0)*!+68p@45j-)*!%)c3XD@p5CA&$Eh9ZG#K"-#N0)*!+Ae*PB@30)*!+I!d l)&*PB@4AEh*N+%CTE'8X6fCQFf9d,%*eCQCPFLNl$6X0)*!+68&$8NmJN!95C@& N9fpbC#!J4La2CQBX3R9QCQ9b)$d0)*!+6%9")*!(HdCp,%%`$5#3#Na&35#3"hY #G@CQCA*p,%%a$5#3#Ne29N8Z6##3"%%a,'P[3R9QCQ9b+%%`+3dJN!T06eC&,N` JN!4l6fCQI5aTEe"[FdpQCR0PG#K"-#N0)*!+68p@45jA)*!%)fCc4R*[E90dBA* d,'P[8'pc6@pNC5K"-#N0)*!+68p@45j-)*!%)c)XD@p5CA&$Eh9ZG#K"-#N0)*! +Ae*PB@30)*!+I!dl)&*PB@4#G@CQCA)S4La2CQBX3R9QCQ9b,&0THQ8T1`dl$5# 3#Ne"3e*2)*!&8Q9KC%*eCQCPFL#3#NBX6fCQ,%*eCQCPFLa6DATP)$d0)*!+6%9 ")*!(HdCp,%%`$5#3#Na&35#3"hY#G@CQCA*p,%%a$5#3#Ne29N8Z6##3"%%a,'P [3R9QCQ9b+%%`+3dJN!T06eC&,N`JN!4l6fCQI5aTEe"[FdpQCR0PG#K"-#N0)*! +68p@45jA)*!%)fCc4R*[E90dBA*d,'P[8'pc6@pNC5K"-#N0)*!+68p@45j-)*! %He0THQ9p,'P[8Q9a3fpeER3S36!T$5#3#Pp5C@&N$5#3#R`01b"06d496%8J6Q9 h6'pKC'9b1`dl)&C"8Jdl)*!*8h4KFR43EfPZG$T"4%4549061b!S+L"3EfPZG#" dEb"UG@e`)(4[)*!,+LN01b#3#8a[B@43EfPZG$SJ384%8N968cXJ+#SJ8'pTER3 JGfKPFQ8JG'KP)&4PH(3J8f9RE@9ZG#"cG'&bG(-J+LN01b#3#94PH(42CQCcCA3 k384%8N968cXJ+#SJ4QPXC5"2CQCcCA3JG'mJ9'9iG##3%LST$6XJN!P'DA*cG%C bC@8k)%&%4&*&8e-l)#JU)&0THQ8JEfBJ9'9iG#!V)%4KG'%JN")U+3dl)*!*9'9 iG&0THQ8k)#""4%4549061b!S+L"6DATP)'pQ)&4PH(3JN"NU+3dl)*!*6'pKC%p QCR0PG$T"4%4549061b!S+L"2CQCcCA3JEfBJ6'pKC#"8B@*XC5#3"bST$6XJN!P %BA4K8(4b1L#3!d&%4&*&8e-l)#JU)&"[D@jdCA)JG'mJ4'&dB5!V)&4PH(3JN!8 U+3dl)*!*4QPXC6SJN!C3BA*KE8*XDcXJN!SS+L"'D@aP)%4KG'&#E'pMDb#3$5S T$6X0$8jPGda[B@4PFJd01`dl)*!*4QPXC5!k25"2F'9Z+%0eFN&`6Q&YC5a5C@& N6fjXH5Nl$6X01b#3#9p%C@*eCfGPFJdJN!T-48%JN!G'D@aP,%%d$5#3#N0-8Lj -)*!&D@p$Efe`E'9dD@pZ+%%d+3dJN!T-48%JN!G$GA*"F%jKE@8X36%0)*!+68p @45j-)*!%36%XD@p'D@aP6Q&YC5K"0#N0)*!+68p@45jA)*!%)c!XD@p@8Q9Q6R9 Y+%%d+3dJN!T06eC&,N)JN!3M-#aTEdCTE'98HA"P+%%d+3dJN!T06eC&,N)JN!3 MCR05C&"PFQdXD@p3CA*YFh0Z+%%d+3dJN!T06eC&,N`JN!3M06)d,%3`$5#3#Pp 1CAG3G()0)*!+68p@45j-)*!%36!XD@p2Gfj#G@BS36!T$5#3#Na&35#3"dCTE'9 #G@CQCA)X36%0)*!+68p@45j-)*!%36!X+%%a+3dJN!T-48%JN!G'D@aP,%%`$5# 3#Pp2F'9Z$5#3#P469#jA)*!&D@p5CA0eE(3S363T$5#3#N*&85#3"d!a$5#3#Pp &H'Pd9'p6D'9XE!e!-3dJN!T5C@&N6'pZCb!J4QPXC5`M*%0&,&0dBA*d8'pTER3 0)*!+8Q9KC%a[EQFJ)%CTE'8X)b4%35a'DA*cG%CbC@80)*!+8Q9KC%a[EQFJ)%C TE'8X)b4&-#a-Ef&N8'pTER30)*!+8Q9KC%a[EQFJ)%CTE'8X)b4&0#a8CAKd6fC QFf9d$5#3#P*PB@4-EfjR)#"'D@aP,#-N46JX6'pKC%pQCR0PG!dJN!T06eC&,N` JN!4'DA*cG%CbC@8X4$!JN"!l)%&XE'pMBA4P)%ePE@pbH5"QEh)JF(*[Cbi0)*! +AdjPGe"dFL#3!ba$E'9KFJdJN!T88e3Z9b#3"83`$5#3#N*&85#3"d!b$5#3#Pp &H'Pd9'p6D'9XE!e!-L#3#%e29N8Z6##3"%%`,%3a$5#3#N&14%NZ6##3"#-N-$" 'N!BX4$%JN!ml)'0XC@&b)'9iG(*K)'*TG(-0)*!+6%9")*!(4'&dB9"dFLa"-## 3%MXJFf&fC5"KC'4bCA0c$5#3#Ne29N8Z6##3"%3a,#K"-#N0)*!+68p@45j-)*! %4$%X36)0)*!+384%35j-)*!%6'pKC&"[D@jd,%%b)*!%1b"-Ef&N3@4NFQ9cFb! p)%4KG'&3G()J+b"-Ef&N8'pTER30)*!+68p@45j-)*!%4QPbFh4'FQ9P,%3`)*! %1b"6DATP)$dJ4QPbFh3J4R*PC5!Y)%a[B@3J8'pTER30)*!+8e9#,N`JN!9-Ef& N8'pTER3X4$!01b"5C@&N)'PZ)(4SC5"`FQpRFQ&Y$5#3#P*PB@4#G@CQCA)J4QP XC5a8CAKd6fCQFf9d,#K"-LNX4$!01`dl)%4PBfpNC5"-Ef&NCA)J9'&LE'801`d JN!T06eC&,N`JN!4%BA4K8(4b,%%d$5#3#Ne29N8Z6##3"%%d,%3e$5#3#Ne29N8 Z6##3"%a[B@42CQCcCA3X4$F0)*!+8Q9KC&G[FQ3J)%CTE'8X4$FX9'e`9fpbC!d JN!T"4%44,N`JN!3M-La%0`e!0L#3#%e29N8Z9b#3"&4YF&G[FQ3X4$!JN!Sl)%4 [CA-J9'e`9fpbC#!p)%p54#K-Ef&N9'&LE'9'E'&R+3dJN!T$69!Z9b#3"5-N-$N X4$!JN!dl)%P')%j[G#"dD'9Z)'4[EQ8Z$5#3#N*&85#3"d!c$5#3#Na&35#3"dC TE'8X36!JN!dl)%0XEh0P)%CTE'80)*!+Ad0XEh0P$5#3#Ne29N8Z6##3"%CTE'9 #G@CQCA)X36!JN!Fl)%CbC@8J3R9QCQ9b$5#3#Pp%DA0`Eh03G()0)*!+384%35j -)*!%8h4KFR43EfPZG#a"0##3"cXJ3f&XG@aKG'8J8h4KFR3J3@4NFQ9cF`dJN!T +8e)JN!FS363T)*!31b"$B@aX)&"bEfGbB@d0)*!+Ad9iDA48Ee0SC@aX)*!51b" %EfjP)#KPH'Pd+3dU)%9-8d803$-JN!K5C@&N9fpbC#!J4QPXC5a%0ba8EA"AEh* N)*!&1b"5C@&N)&0THQ80)*!+384%85j-)*!%)c)X4$F0)*!+68p@45jA)*!%9'e `9fpbC#a%0!dJN!T698)Z9b#3"5-a-#a%0##3$MXJ6R9YBQ9b)'pQ)'9ZG(*TCA- J+L!b)$dJ4$3J,5!a-!dJN!T5C@&N6'pZCb!J4QPXC5a%0ba8EA"AEh*N)*!&1b" 5C@&N)%*KFf8J3@4NFQ9cF`dJN!T"4%44,N`JN!3M0#a%0`dJN!T06eC&,N`JN!4 8EA"AEh*N,%3f)*!+1b"%0L!k25"#BA0P$5#3#N&%4&%Z6##3"#-b,%3h)*!21b" 6DfP`)&0PCfePER3J6R9YBQ9b$5#3#Ne29N8Z6##3"#-b,%3c)*!21b"'6e)J4$- J1MdJ-L"86b"%0#"%6`e!0##3#%008#jA)*!&4$3X4$-JN!ml$5#3#N*(9##3"d! e)*!51`dJN!T5C@&N9fpbC#!J4QPXC5a%0ba8EA"AEh*N)*!&1b#3"9*PB@3S6fC QFf9d+3dJN!T"4%44,N`JN!3M-La%0`dJN!T06eC&,N`JN!4"0#a"-`dJN!T"4%4 ",PFJN!48EA"AEh*N,%%c)*!+1b#3"8%c)$Sp)%pQCR0PG#!V)%4KG'&3G()J+%% c+3dJN!T"4%3Z6##3"83e,#K"-ba%0Lj-+5#3#$XJN!9"C'TeFh3J6'PZDb"3EfP ZG#"LH5"%BA4K8(4b)#K%05N0)*!+384%85j-)*!%)c)X4$-JN!ml)%914#!S+L" '6e)J+LN0)*!+3P*")*!(3$3JN!J03$8JN!K"4%44,N`JN!3M-La%0b#3$cXJ8fY TF#"$D'9MDh0eE3dJN!T5C@&N9fpbC#!J4QPXC5a%0ba8EA"AEh*N)*!&1b"5C@& N)%jPH(3J5f9j$5#3#N&%4&%Z6##3"#-b,%3h$5#3#N*535#3"d!f$3e6G'&bG&" [D@jd)*!+4%-Z6##3"M!06'pKC&"[D@jd)*!,4%-Z6##3"M!09'9iG%pQCR0PG## 3#N4$,N`JN!B`$8CTFR0d4R*PC5#3#d4$,N`JN!B`$94PH(46DATP)*!-4%-Z6## 3"M!06'pKC%pQCR0PG##3#N4$,N`JN!B`$84KG'&3G()JN!e%3bj-)*!'-!e'D@a P3R9QCQ9b)*!+4%-Z6##3"M!09'e`9fpbC##3$84$,PFJN!B`$94YF$*AEh*N)*! -4%-Z9b#3"M!04QPXC5#3%%4$3Lj#)*!&D@p44@a6DATP,$!JN!N0)*!+48j%!!! "!*!$!C)!N!15!*!$@Np@45jA#50'4N0269!V4Np548dX,5K68#N0#8T68NC3$3N Z48j%63d0#5j038056`P'8N9053d*68p@45jA#50'4NP19#Y'6e*&65`Y+&03+3d *5P054P!0#5j&6N40$3d*,Ne"3e*2#8C548e-$3P06eC&,PF*)dC'6%j(+dC28N9 0,#dS8e!T$3P+8e*'8!d*,N914%d0$6XYN$X01b"-EfGL,Jdl,C!4!*!$H!!$!*! $5!"3!*!%![!#J2rFrq`#p!+8!3)&+!2m!!%!N!0)!&!!N!3#m!+!!&!!)!+!$)! !'!!"N!-!N!-"*`m!!3!"!!)#*!#3-3S!#3C0EfjKBfmf!*!$"!!&!!S!!!%!N!- "NJ#3!j)!N!0D!!$a'!"k!*!$(!"D!!*&8&*5!*!$'N9'6P3!N!-Q494"3J#3!c) $k[rr!*!)!q[rr`#3!h`!!B#N!qcrr`#3!iS!!B#m!AK36@&R$NjPGda[B@4PFLj -D@jV#J!!#IS!3-[)!!$a%!!!#Fi!"`"!-r3!N!DJ)`!#AG`!!5$N!%!XFJ!K!#` !!&4&@&404848!3#3"JX!N!5CTeHDQYl8QE"T6Q9h6'pKC'9b$554#e"0B@F06Q9 h6'pKC'9b,NeKF'X+!!!*qJ"!bmJ!!2%3!!!*cJ!(!%!cp!#3"U!M!!*Gh!!")13 !3#ab!#%!,!!!9%9B9%e&4&3"!*!'$3#3"*V$)h5DhY5'fRJ0$8jPGda[B@4PFJd 0HYe36@&R$8jPGda[B@4PFLj5C@aV#J!!#IS!3-[)!!$a%!!!#Fi!"`"!-r3!N!D J)`!#AG`!!5$N!%!XFJ!K!#`!!&*&6%*"8ddJ!3#3"3Bc!*!%QVGDLjV&E,IJ`!! !"4E$$8jPGda[B@4PFLj"8dh$$de%8c%k6@&M9(*KF(-Z4--06Q9h6'pKC'9b,N& 66F,$$Ne%8c%k9'p[E%9aG5j%``e1CAG-Ef&NCA)Z3900`X-06846-6T6HA0&FA8 Z4--06Q9h6'pKC'9b,N&66F,$$%e%8c%k4P0&FA8Z4--06Q9h6'pKC'9b,N&66F, $$de%8c%k6@&M9(*KF(-Z4--06Q9h6'pKC'9b,N&66F)$!!)!5F$(`N*#V%)!$-* #3rK##4$#3LP*3J!5`N)jI%)!!%)!&X*#'Aa#!!"#!"V#3KPm3J!"3J!E`N)J2%) !!%)#$-*#S4l#3L&)3J!F`J-!!`"$`-I#3L+)`J-!!J""`-I#3U!!`N*+E%)!%-) $!!4"Cd%!F-*#UI6#!`!#!%(!am)$!!8!3m$(`N)K58)!)-*#)Aa#!!"#!-j#!#l #3M&m3J!"3J!X`N)KI%)!!%)!"%)!*-*#S!,#!`!#!%(!am)$!!B!3m$(`N)K58) !)-*#)Aa#!!"#!0T#!#l#3M&m3J!"3J!X`N)KI%)!!%)!"%)!*-*#S!,#!`!#!%( !am)$!!F!3m$(`N)K58)!)-*#)Aa#!!"#!1"#!#l#3M&m3J!"3J!X`N)KI%)!!%) !"%)!*-*#S!,#!`!#!%(!am)$!!J!3m$(`N)K58)!)-*#)Aa#!!"#!14#!#l#3M& m3J!"3J!X`N)KI%)!!%)!"%)!*-*#S!,#!`!#!%(!am)$!!N!3m$(`N)K58)!)-* #)Aa#!!"#!1K#!#l#3M&m3J!"3J!X`N)KI%)!!%)!"%)!*-*#S!,#3L!k!`!'F-* #Sal#3NT!`J-!#N&R33"``N+Tp-*#)JM#3J+"3J$r3[rr`J-!#`""`-I#3L#"`N) N3F*#eIS$!!G``N)J1J-!"R$#3T!!ZJ-!"h$#!`!#!%(!am*#3p,#3L&*3J!J`N) KHJ-!#("#!#l#3M&m3J!"3J!X`N)K3%)!*-*#S!,#3LKk!`!,F-*#+Jc#3Lik!`! *F-)$!!)!3F$(`J-!$!"$`-I#3L&*3J!J`N)K4d)!,X*#-Aa#!!&#!#c#3L&m3J! !3J!#3J!N`N+J!X*#9)I#3M!k!`!-F-*#$%"#!!R#!`!13@G"!($#!`!#!%(!am* #S!(#3L"k!`!$F-*#S"r#3YRk!`!&F-*#6T6#3URd`J-!!J""`-I#!`!-!%2!am* #)8P#!#$#3L&(3J!Z`N)aI%)!!8)!,-*#)Aa#!!"#!!*#!#6#3U!#`N*8Km*#1$S $!!a``N)%4%)!#X)$!!)!3F$(`J-!$!"$`-I#3L&*3J!J`N)K4d)!,X*#-Aa#!!& #!#c#3L&m3J!!3J!%3J!N`N+J!X*#@)I#3L`k!`!-F-*#9)I#3LBm3J!!3J!#`N+ f4-)$!"""EN%!F-)$!!)!3F$(`J-!$!"$`-I#3L&*3J!J`N)K4d)!,X*#-Aa#!!& #!#c#3L&m3J!!3J!#3J!N`N+J!X*#9)I#3LC-`N,@qJ-!$($#3YZc3@K"!-*#9)2 #3@""bX*#9)I#!`!#!%(!am)$!!`!3m$(`N)K58)!)-*#)8G#!#l#3M&m3J!"3J! X`N)KI%)!!%)!!N)!*-*#S!,#3P5(`N&J33"#rbc#3J!!3J!!`N)!!%)!!-*#!!" #!!$#3J!!3J!!`N)!!%)!!-*#!!"#!!$#3J!!3J!!`N)!!%)!!-*#!!$#3J!!`J# 3!f!b`X!!%J!!!TB!N!3+6%p"4%p'4P0&9!!*!!!#9!)&)c%`3$%!"!#3!d3#"5- a-%!b!!S!!!%'!J8M-6"!-`!1!!!"LJ)%4NP-43!#!!!#C!)&)c%`3$3!$`!!!H) ##P4&@&424NC6493!#!!!!NJ#"5-a-%!e!"!!!!)B!JT69%&59&"258j8!!8!!!* !!J8M-6"!0J!0!!!"DJ)*6N9A6%p"4%95!!%!N!3##NC*6%9#98C'49)!!`!!!P` ##&4&@&4659T&!"%!!!*3!JK869!b9dp54!!5!!!#BJ)*6%p"4&"258j8!!F!!!* %!JP'59*69%C5488!"J!!!N`#"e408&G28N3!$!!!!Q!#"d4"9%&39&)!#`!!!PJ #bGK34@jNX))!!!: