Path: utzoo!mnetor!uunet!husc6!tut.cis.ohio-state.edu!uwmcsd1!ig!agate!ucbvax!hplabs!felix!dhw68k!macintosh From: earleh@eleazar.Dartmouth.EDU (Earle R. Horton) Newsgroups: comp.binaries.mac Subject: Daisy v1.1 Message-ID: <5685@dhw68k.cts.com> Date: 7 Mar 88 23:53:50 GMT Sender: macintosh@dhw68k.cts.com Organization: Dartmouth College, Hanover, NH Lines: 373 Approved: bytebug@dhw68k.cts.com (Roger L. Long) [Daisy v1.1] This the documentation for Daisy v1.1, a User/Chooser configurable printer driver for the Mac and man daisy wheel and dot-matrix printers. The printer driver is designed to be obvious to use, and most users will hopefully have no problems with it. This file covers some of the subtle points of operation, which some users will not find obvious. If you decide to distribute Daisy, (which you have my permission to do) please include this file. This is version 1.1 of Daisy, the User/Chooser configurable printer driver for Daisy wheel and Dot matrix serial printers. This is basically the same printer driver documented in the November and December, 1987 issues of MacTutor Magazine, with the following additions: a) Converted to MPW C. b) Memory management routines extensively optimized by hand before compiling. Storage requirements trimmed. c) Error checking improved. The driver open routine checks for Resource Manager, Memory Manager, and Serial Driver errors, and returns the appropriate error code to PrOpen(). d) Print dialog code overhauled. E.g. the "sideways" item in the Job Dialog actually works, and is saved in the current Print Record. e) If possible, uses the PrGlue trap instead of referencing low memory globals when accessing the printer driver's device control entry and when setting the error code for the print abort condition. If the PrGlue trap is not present, then the old method is used. f) Compiled and tested on a Mac II, compatible with the following: i) MultiFinder. ii) Machines from 512KE, System 2.0, to Mac II, system 4.2. iii) 64 ROMs, I think so. (Let me know, please?) iv) Many, many, many applications and printers. g) Low-level printer calls now do the correct things in almost all cases. Applications which use them should produce correct results. h) Strings are stored in resources so that the driver can be localized as necessary. Daisy requires Chooser 3.0 or newer (or a resource editor) to configure it properly. Before using Daisy for the first time, you should select the Daisy icon in the Chooser box, then press the "Setup..." button which appears. A dialog box will then appear which will allow you to set the baud rate, flow control, and several printer control strings. "Top of Page" and "Left Margin" are meant for the low-level routines. "Top of Page" should advance the paper to the point where you desire printing to start on the page. "Left Margin" should contain enough spaces or tabs to provide the correct left margin. A "Line Terminator" string is required; you should obtain the correct string to use from your printer manual since not all printers use the same string. A caret ('^') in front of a character means use the control character. Example: Most printers will use CR-LF for "Line Terminator". If this is the case with your printer, enter "^M^L" for this parameter. The default settings in this version of Daisy are correct for a Tandy DMP-110 connected to the modem port at 1200 baud, using CTS flow control. The driver reads in the information set in the Chooser configuration box once, at open time. For this reason, you are not usually able to reconfigure Daisy from within a running application. Recommended procedure for changing Daisy's parameters is to configure Daisy, using the Chooser, when in the Finder. The next time you run an application which prints with Daisy, the new settings will be used. IF YOU USE DAISY WITH THE PRINTER PORT, IT IS UP TO YOU TO MAKE SURE APPLETALK IS OFF. You can do this within the Chooser, if you have version 3.0 or newer. Daisy will just quit if AppleTalk is on and its settings say to use the printer port. Depending on what kind of error-checking is done by your application, you may get some kind of error message. If you have an older System, which Chooser 3.0 will not run with, or if you simply do not have the Chooser 3.0 desk accessory, then it is very simple to configure Daisy using ResEdit or REdit. The printer control strings are in 'STR#' -4080. They are, by number: 1) Line Terminator. 2) Initialize printer 3) Top of paper (low-level routines only). 4) End of page (usually "^L"). 5) Left margin (low-level routines only). (A bunch of spaces is good here. ) The information for the serial port is in 'HEXA' -8192. ResEdit and REdit will edit this type resource as hex data. Daisy interprets it as three integers. An integer takes up four characters of hex data. None of these integers exceeds 000A. Invalid values will produce undefined results, since Daisy is naive and expects the 'HEXA' resource to contain only valid data. data 'HEXA' (-8192, "Printer Settings") { $"0000 0002 0000 " }; ^ third integer ^second integer ^first integer The first integer tells Daisy what port to use. Allowable values are 0000 for the modem port, and 0001 for the printer port. Make sure you turn off AppleTalk if you use the printer port. The second integer determines the baud rate: 0000 300 0001 600 0002 1200 0003 1800 0004 2400 0005 3600 0006 4800 0007 7200 0008 9600 0009 19200 000A 57600 The third integer specifies which type of flow control to use. Use 0000 for CTS, 0001 for Xon/Xoff. Refer to your printer manual to determine which is appropriate. If either can be used, then best results are usually obtained with Xon/Xoff. Recommended font/style: Monaco 9, plain, 11 pixels per line. Custom 'PREC's (hackers only): Go ahead, enjoy yourself. Daisy will reject any 'PREC' it cannot handle. Attempts to produce more than 66 lines per page are doomed to failure, since that is all I allocate for storage. The maximum number of columns is 164. Other uses: Daisy can be used to "print" from your word processor to and serial device, like maybe a modem or mainframe terminal connection. Draft copies of documents could be uploaded to a mainframe or other microcomputer, for possible use or even printing by the host computer. Support: This is FREEWARE. I do not support it. LightSpeedC sources are available from MacTutor Magazine on the December, 1987 source disk. Full instructions are provided in the November and December issues for 1987. Building Daisy with LightSpeedC is a royal pain, but it can be done. The current (MPW) sources are available from me for $20.00 American to cover handling. I have made no attempt to maintain compatibility between the LightSpeedC sources and the MPW sources, no attempt at all. I will not distribute copies of the LightSpeedC sources, since I do not feel that would be fair to MacTutor, neither will I supply copies of the article on disk. (MacTutor supplies back issues through mail order at a fair price.) The MPW sources come with all source files necessary to build Daisy, including a Makefile. I do not send them out by E-Mail. For $35.00, I will send you an MPW source disk via U.S. Post Office overnight mail. Bear with me, people ask these kinds of things. I will answer questions about Daisy on the phone, but the amount of time I will give you depends on how interesting you are to talk to. I do not have the time to supply customized versions of Daisy, but there are lots and lots of hungry high school kids around who can program in C, or would be willing to try for a few bucks, an occasional loan of your car, or a chance to play games on your Mac or with your daughter. -- ********************************************************************* *Earle R. Horton, H.B. 8000, Dartmouth College, Hanover, NH 03755 * ********************************************************************* --- (This file must be converted with BinHex 4.0) :"@4KDA0j!&"549*%BA0C)!#3"bKFf%F!N!3"!*!$*EJ!!#5i!!!#T!#3)!9NB@P cH3)!N!038N954'&c@5%!!"3!B!#3""UD!*!%8&*&8N4KFeNK!!!8!'!!!%&G!*! 1RMBccJ#3"LKF!*#%"(4J$J!!8%&$5r!!!!%%!1!!6[S!!L![!!`J,`!))#m!"!a [!"-!&QB%6VS!H%*!2d!!'#"Ihr`!N!-86Y"19[r`51Fm!#BZ!!Ji,J!1-#i!%NT !C`!!4$S!8d9J+#m$2`9)E[rk5'lrr%KZrr+TMET%CJS[,[rm2c`!!@!',blrr%* RU@-`,J!@5-!b"8M"8N9)`C!!J@B!rmC-lJ!mrq"1ANje6PEqd%MR2$KCMbmm5%9 B36mmi!#TS#!I*%#dr!!!C`!$)PQ2,ca69&)M2cc`%+QJ)"mQ3,Em!!"R!!-))&* +D!!#E3!!$#"5$'J!#J!#E`BJ8N*S!!*CMcmmm""#Tbmmrj!%UA`J(bS!C`!#eLm &2c`!#%KZrqj)E[rd5'lri+Q0,`8r2!!"5'lrmNKZrrK)E[rBUBe)E[l32cc`%5" 5-#J!!P*!2`"1ZJ,N,blrp%KZrY#TAb"63HJ!!LJ)GJTJ*#m&2`0)E[r`5'lrr%K Zrp#TM5mZrr`["+Q2F!!S4"!88S$BJ(!2-J0)`9*$5-'3!)&Q!2r15'lrk+Kd,`@ SFbm&U48r2!!%2c`!"+LE5(J!cDKL5'lrf$mmrrXr22rlU+P)E[rB2c`!%$mm!"# SX%Ki!#'SBMmm!!)r2!!#U*Y)E[rJ2ccrr6mmrrfSU8KZrq!r2!!-2c`!$+L`5(J !"NKi!!8J8M!35-"DJ#m!,`91Z[iS5(J!&%Ki!"-J8M!S!!4)`()6d)%[!#m&6VV q$%*Zrqa2l`!JB!!!f%+R5'lrl+Q4-#lrl!a!!"0Y"QiLB!!!KJa!!!9Y!!#iEJ* J+Ja!!!CQ!Q!L$%!!#'B!!+4J,Ja!!"4Y!!#DEJ*J@Ja!!"9Q!!#1B!!!I#"5-#l rl%M!@i!`J%Ki!!C)H!!&B&!J8P*S!!)`+!!#$%!!#fB')&*#D!!#5'lqd$mmm"% J8M!S!!*53$m!6VS"C#mZrr4)E[l3U9pJ1L"5-#lrl%M!FK13!)%a3!!%5(J!&%K i!"-`,[rX5-![!#m&6VVp2Nr[!""J$Lm&UB-[,[rSU(0J!!$5$'i!!IrXCJ$r)RJ DGJTJ*#m&2`0)E[r`5'lrr%KZrp#TM5mZrra)E[l3UC!!F!!3,[l3f)"`$c)$5-& 53dM"N!#"CJ$rcLm,6VS!bLm%,`Y1ZJ#U,`Y1ZJ#1X)42l`!3C`i["DQ$,blrk+K cF!"JBLm,6VS!PL"63HJ!!LJ)GJTBMf!N,`8r!dKZrr")E[rm5'lrd+Q0,blrr#m %UC!!F!!S4"!88S$BJ(!2-J0)`9*$5-'3!)&Q!2r1,`@TJbmZrqLSFbm+UDS[#kQ U,`UTX#m,UE"-lK`mrV41ANjeF!!a`!)J)!K1G5"[!!5J*8U!DJD3!-K1q[rU)%" 1q[rL)#m!##"[!!5J*%lkrpBJE`!%S#P1q[r-)'m!"+!U6[Vr`Nj@!!"C6bmm8e4 5)cmZ!!UTS#*Z!!a#%5!ICb!J3#"3-"Jb,J!)XN"Z%R!!8d&R"K!BdF"JpK!38N# J,NjH)&p3Mdl3!!!'i'!!!!jJ!!'SB!!"cQ!!!J*)jaJi*Qm!)#3[!"`J,`!B5(J Uc%kk"SSS!&L2CK)[22q3!j41ZJAXGJ"BMf!!!9j+JQB`5(J!XNkk"QBQ!&L2CKJ ["%kk"Q3[22q3!j41ZJA#GJ"3Mf!!!63J3a&m!!%!X'!)*J)J3d)S!,"1ZJ4J*%! L8d(U!'C`(5$C8FMrr#K$+83!V%)U!+S[!kK[+%0)E!"XU1T"qJ+#+%-T5!"X3IS $0LK$+8J!P#K$3H`!E#K$+8J!D#K$1+S!D%(U!'iS3d2X!"!Lf#,B3N!S3cP!!!i S3cP!!!`S3cP!!!SS3cP!!!J[!kKc2bS!G$mU!(+SGM!U!(K)`%5!2`!`+J"f5-" %J$m!U(Fr+J"SU()["%kk!eSJDJ"3F!!3%#m!)#S!8&+!,`![#Nkk"-JeI!!"!0j +UJ#X6qm!%'B)3IS$dL9)!+aCMbmm8&*&3cmm!!'TS#!I*N!S#fFH,`ZTSNKi!(J [%dKU!'C1ZJ9+,`ZTULm,UD02l`!--#S!HT!!DJ"f5-#"r!!,5-!e3!"N,d-!*%c I("JJAprm!*!$$%l3,`SNE`!),bS!V%kk"3![#UKp5LS!X&L2C`J[#Nkk"1jBMb4 I)&pBMdl351F!-#C[!"!NE`!-6VS#q#"!*!TR#N(S!'iL5L,B)YJ[#kKc,bX!V%k k!RTBMdcI$!!JAe#26Y")jaJ`*Qm!&%kk!X3N3$!U!+5`DJ$HE`K5DJ$HB!!!mM! U!+Bb+J$H8QS!hV""E!4J!!$85LS!K@B!!!a1ZJ-N5S"R!!$#+#X!V%*$B!!!TL" U!+a1N!"1ZJ2d$%!!J'F!!,!`!dM!`I`!TY#%)%!-8!!"CN)b2!#N-!0)`-(m!+E 3K&0"0!&)`L*!$$%!)#J#C`$rjP*"5-%[!6!$5-$"r!#Q)%$4a%(S!!)[##m+6VS $3Nr[!!`b!dM"-#S!C%M!8i#bJ'`3)'S!9(!!%"![!#"U!&4J$L"U!&a`!"!3,`! JDJ"F8SJ[##m+6VS$"Nr[!!a53c)U!'4)`6!$5-#5J'F1B!$r6%Ki!)"1ZJ-'@)p -h``B)&pBMdl36PErq%MR(J!f,J!8+#i!%%KZrrbSG#"Zrr``%%M!$)!!!2d"CJ4 k"f!@)'lrr$!35-!-J!!!r30Q"(S&B!*k"L"Zrr`X+!#X5'lrq+LD5'lrq+K`-#l rqNM!JF8b!$!ZrrK)`)(m!!Xd!$!$5-![!$!#5-$"r!#Q)%$4aM!"5-""k!!#5(! )!#m%6VS$$M!#5-$"r!#Q)%$4aM#m!!%`!m(&2`"#CkL86qm!$%cZ!(Mrk%jH)&r Ir!#3!`j1d%j@rra)ja!`*Li!%#CZ!!`NEJ!)5'lrr+Kd)'lrr$!35-!-J!!!r3& Q#$9m!!F!"'!H)'lrr$!35-!-J!!!r30Q#$9m!!8!"'!'0A`!"J!%0,`!#69m!!) !!N*U!!C`!6D!)%-`J$Gm!!B!!L"$-@S!"!!#-#S!"%M!`Hi!'$e!!"T-lJ`)rr" 1AL"Ihr`!N!-56Y")jb!J*'m!$$5m!!Q!--!*)`"@m!#!)!P*#)M`!N!1N-!* )`*+!CJ$rjN*#B"a)H!#Q-!*)`-(m!+BJ30(+5&")8Nkk!J*2l`!-FN*53M!#5-" )`*+!CJ$reNcI"!41G5m#,c`!!+LI6VS"lL3!,c`!!+Mp6VS"iV5!8)pR%&Q2,cb 8!*!$U2dJ(b"!B!JJH!%F8)JJ8#"3)'J!&#!3*"p1G8j@rr![!P@22c`!#%KZrr# TF(!!%"m3!'F`9BmJ,[rb!S!!N!2r,`#SDc!I$%!!,QBB-#lrrNM!!S!!!!%!C`T )H!#!6VS![&L2*#lrl%jH6R919[rX51F`!&Q22ccIrd+R,ccrN!5TI#!I*J"Q"(! !B'5S8#m$2c`!!8KZrrT)E[rm5'lrl+Q05'lrp+Kd,`1SFcmm!!-r2!!$U*Y)E[r X2ccrr$mmrrbSU8KZrq`r2!!32c`!%+L`3UG)E[riUC%[!kQ$,blrp+Kc$'i!![r iCJ*JQR!"61i!$2rN6Pj1G5"[!!3J,`!))Lm!$#&!!#!K33!N3UG)8%kk!(C3Mdj e51F`!#3[!!`[2!!!U*p1ZJ#N*J![2!!!U2e1ZJ#BYS"3MfF-2`)[2-!!!J#Sr@! %-F)*4%cI!!a1G5m#,c`!!+LI6VS!F#3!,c`!!+Mp6VS!C,5!8)pR$P@2,cbk!*! $U2d`(f!%-$J*4%M!*"p1G5"[!!3J,`!)CJ5J!f!#T!0)`%jeF!!a`!)J)!K1G5! [!!5K(Nlkrr!JE`!%S"p1q[rQ)#m!$#*[!!JJE`!%S#j1q[r8-#m!"U&')!K1G3! !#8TJ!!!iB!!!CQ!!!)4J!!#LB!!"D'!!!TCJ!!0HB!!$SL"I)Pm[#%l4)PmJAb! 35%!J`#!35%!JJ%l451F!-#4[!!aCMbmm8&*&3d*RUD!J(bC!,`ZTSL*5)&0`(5, B8FMrr%cI$!!JAeL26Y![#L![!!K9Mbm!4IS!1#m+6VS#,K!I(d!!$#4I)&pBMdl 3,`SJ,`!)9Bm[!%Ak!1![#Nkk!J`3(ap!!!`NAb"I@)p1d%MR!$!NE`!-5(J!i%k k#&)Q3&Q22ccJ!#m,,ccrN!5TI#!I)&)-D2d"!!*BMfB15(J!"NKi!!4)H!!%B#i J8JaSr3)!!QB15(J!"NKi!!4)H!!&B"BJ8JaSr3-!!QB@5(J!"NKi!!4)H!!',`Y 1ZJE-6qm!%#"5-#J!&L"5X'J!&'`15(J!#%Ki!!G)H!!(B!a)H!!)5(J!"dKi!!J [#dkk"TT2l`!33IS#jLG)!+T"qJ-B*dJ!VLG+!,)[5`!360m-!#"I@)p1d%j@rma )j`!`*'i!#%Ki!1"1ZJH%*N"CMcmmi!%[#bmmrj!%UA`J(dKi!!C)H!!&5(J!"5m ,6VS'1L"55LJ!(dr[!"4Q$NKi!!j)H!!05(J!$Q!-5(J!$NKi!!e)H!!0,`Y1ZJB 16qm!%#m,2c`!"dKZrrT)E[rm5'lrmUQ0)&)pD!!qrrS`,[rk5-![!%KZrmj1ZJF U,blrr%KZrmkTMbm,2c`!#8KZrrT)E[rm5'lrmUQ0)&)pD!"!rrS`,[rk5-![!%K Zrmj1ZJEd,blrr%KZrmkTMbm,2c`!#dKZrrT)E[rm5'lrmUQ0)&)pD!"#rrS`,[r k5-![!%KZrmj1ZJDq,blrr%KZrmkTMd(k!EJR5!#U3IS$L#G)!+iR5J#b,8X!$%c Z$!$ra%jH)&pBMdl36PErl%MR'#!Q,J!-)#i!#&Q2,`-[!%kkr9`J(b4!+#S!VN) U!,G#+J#f5'lrp+Kd,`USFbm+U48[#Mmm!!&)E[ri5'lrr%KZrqbTM6mm!!-r2!! $U*Y)E[rX2ccrr$mmrrbSU8KZrq`r2!!32c`!%+L`B"B[+J#U5'lrqUQ4,`Sr,[r k,`3JAdk3!%SU!,GR!2rN,blrp+Kc,`UTJLm+6VS&cNSU!,CBMfF-9Bm[!dkk!"a `!"!I%#S!YKe!!""-lJ3Brq"1AL"I8)p1d%MR!$!NE`!-,`T1ZJ6)%!"BMfF%3J" J)PQ2,ca38N9$3QHTS#!I*N![#kQL)P)J8h!G)YK4b2rmF!%I3!!360m-!#"I@)p 1d%MR!$!QE`!3*'m!$#"5)P-aD3!#!!)J8L*63qN!2N(S!$j`"#$C8FMrr#"5)P0 $k3!Z3HJ!,L$C)0NJf5$C)&)L8d2T!"""k!!3)0NJf5"5)P0$k3!#3HJ!!R!'-0P 4b2rm)&)L8d2T!#""k!!JF!B`f9()rra-h``!)&p3Mdl3)#m!$#"[!!JLE`!%$&! !!fBB)LJ!!J+"!*!$rh!0X)&Q#$+m!!&`!@!#3J!I3!!3)&rIr!#3!`a1d%j@rr! [#L4Z!!Sb,J!)$%%!"'d3$%%!"Qi+5(J!"NKi!!4J&!a"!!GY)!a"!!KZ'NKi!!K )H!!(5-%[!5m+6VS$-Nr[!""J!!&+$%%!!@B!!6)[#Mmm!!4)E[rk5'lrr%KZrr+ TM9@2,blrr+PJ-"p63'B-)'S!XL"3-Acp!3!#,`Sr2!!&5'lrqNKZrra)E[rbUBe 9MbmZrrbTB$!I8d"Q$#"U!,)J8$&mr3)!!Lm+2c`!"NKZrrT)E[rm5'lrmUQ09Bm [,[rmU@!`(e0!CJ`JDJ#b)&!aI2d$!!)[#Mmm!!K)E[rk5'lrr%KZrr+TM9@2,bl rr+PJ-"p)`#)!F!!JDJ#b)&!d+!!@)'S!XL"3Y'J!&&l!4!#aJ@GB)'S!XL"35'J !#%kkqSBJDJ#b)&")D!!36VVkH#"U!,)J8%KS!#C1Z[TU)'S!XL"32@J!'[rk)'S !XL"3)QS!XL*4-@N!(!!D)'S!XL"3-@lrqJ!F6qm!$"9m!!%!Ya9m!!%!YQ!3$%% !!QB+&A`!!3#h3LS!YL4Zrqa1AL"IA)p1d%j@rmJ[#L4Z!!S`,J!)$%!!!@B!!5` 9I!!"!,F9I!!"!,B[#Mmm!!9)E[rf5'lrr%KZrqkTM9@2,blrr+PJ-"p63'BD)'S !XL"3-A`!!3!q)'S!XL"3-A`R$`"!B'`[#Mmm!!G)E[rf5'lrr%KZrqkTM5mZrra )E[r+UC!!5'lrbNKZrrK1ZJ+')'S!XL"3-@lrqJ!q,`Sr2!!*5'lrpNKZrra)E[r ZUBd[,[rm5'lrbUQ3!%KZrmT)E[ri6VS#8#"U!,)J8$&ZrrS!3#m+2c`!#dKZrrC )E[rm5'lrlUQ0,blrr%KZrmUTN!")E[r+5'lrq%kk!KSJDJ#b)&!aE[rk!%)[#Mm m!!j)E[rf5'lrr%KZrqkTM9@2,blrr+PJ-"p63'B1)'S!XL"33LJ!(f!!!*SJDJ# b)&!4I!!"!"pJ!!#+$%!!!QB+&A`!!3#hB!!!HJa!!!jQ(NKi!!j)H!!05(J!$Lm +6VS!EL"U!,)J8%)S!"pJ8!a!!!eQ)%Ki!!j)H!!05(J!$5m+6VS!5L"U!,)J8"& m!!%!(f!U$%!!"@B15(J!"NKi!!9)H!!&B""G3'B@5(J!"NKi!!9)H!!',`T1ZJ! 56qm!%#4Zrm41AL"IA)p1d%j@rr")jc`!*Li!##JZ!!`J,J!35S"R!!!q+J"6K@! S,`-r"8KZrrK)E[rm5'lrm+Q0ZS4Q#LmZrr`r2!!"B!B[,[rm3QHTBb!Z!"3L"9+ &N!#"CJ$rc%cZ!$cri%jH6R8JE`!%)P!-83!$CJ!!SL*3$'Rp!J!#CaBL8!aTr3% !!QF-)P!-DId$!!*Q!!##)P!-D3"#!!4Q!!"f)P!-D3")!!CQ!!"U)P"+D3!)CJ! !B#*35QN!#QB!!&BL8$!T!"C)`#*3-LN!%NM"N!#"$)!!!!-BEJ!!1L*3-#N!&%M !)P!b+3!35-'3!)%-J!!!!YCZ!!!H)P"++3!IC``L8!`T!!%!(fB!!!SL8%ST!%4 R"%)"B!*b!A!!%!&1GA!!-F!#)#!)6R8J,`!%S4j1q[r`)'m!"+!I6[VrjL"[!!J r2!!"UHiJE`!%))"1qJ!1)'m!"#![!!K#CkRZ)&p36dl3!*!$'Q!!!!)J,`!-)#m !##![!!3JAprm!*!$&%l3!!!)2J`!N!JF!#)!+!!Z!$3(,PK3FQPZG!!!5(S!@Q! @5(S!9'!35(S"6Q!+5(S#)Q!%5(S#F#m*,`JJE`!)6T!!)&mLAeK2##J!!3!'CJ3 [1!Mm6R8&,N&2GA3&,N*2GA3"I!#p!&i!2J!Z!"i!&J!1!!S!"!!!6PErm%MR1$J J,J!)*'i!$%*$5'lrm%kk"4if!&L2CJ!!TPQ2,ca69&)M2cc`%+QJ)"mS!#m%UD) ["%kk"IS["%kk"H"CMbm%UD8J(bB!G2qdJe#2CJT9MkQ[-"mf!'"Q*!-'JJ#3!qB [!Nkk"D`P3!!8@)pQ"(D8B%`[+J!86VS&SL"U!"3Q8#m,6VS&*#m$5'X!j5K%,a4 1ZJ@Q,`Y1ZJ,S5'lrm#m,6VS"UMB!6qm!)'F1,bS!&%kk"A*#UJ!8@)m["+QM,c` !!+LI6VS&K#3!,c`!!+Mp6VS&H,5!8)pR$$m$,cc!!!)!U2eJ"$($#83`!dM!61i F(2rB6Pj1G8MR!$!NE`!-*Qm!%#mV!"41ZJ83)'X!&#"3-#S!'PL2$%!!"'d!!+S -3!!)EJ!!SY"!-$X!rNll!!)!PJ!+!*B!*!!`)@S!(!!J)@S!)!!N3UG)8%kk"+4 3Mf!!!(3[+J!F,`K1ZJ0'B1iNDJ!F0,`!"%)U!!4#+J!&3HS!#%2U!!`J2!!"!!% LJ##!-#S!"NM!$)!!!2d"CJieI!!+!!)eI!!(!!TJ'M!U!!C)`!b!!!$p!fB80A` !"`!#0A`!"3!+0A`!"J!1B!BeI!!*!!*#3%M!60m-!%je51FJ-#4[!"!J,`!8@Bm [2%CdB@)r21!!UD!J(bC!Y[`!!'B)9BqTVc!IB#![#kQL$'S!#!!DCK)LDJ!F)&0 `"L,B8FMrr'!!!!*#3%M!60m-"%je,`SJ,`!)*'m!$%UU!"4R$LmU!"41ZJ2S3US !&&L23N")`#4I6R9)jcJi*Qm!(#B[!#"#3&Q2,ca)49K"2ccJ!+QJ)"mS!#m%UD) ["%kk!lSN5d(V!1!P5!!5+%3J9$!3@)p+3'dXEJ*J"P0!CL4J$NKi!!B[+J!55(V p0Q!-5(J!"LmU!"*)H[dZ6VS$KNr[!!a#Tbm+6VS$)%TU!""3MfF%B!!!QM9m!!J !'L)mrrr-!#C%)&-`+!!#5-$3J%(kr2``-!J!5-$5J$9"!"a#Tbm+6VS#d%TU!"" 3MfF#B&j#+J!J3LS!)8)U!#0#+J!L)N3J88TS!!4R)L"$5QJ!!QdD3HS!("#m!!& #+J!G&A`!%3!H&A`!%`!IB!a"kJ!F3K!9I!!"!"deI!!+!"T#Tbm+6VS#F%TU!"" 3MfF'-#S!%'!13QS!,%+U!#i["+QM3N")`%cI("a1G5m+*'m!#%(U!1FP5!"8)'S !9(!!%"$3UJ"88S!P3!"3)'S!8(!!%"$3UJ"38S!P3!"B)'S!@(!!%"$3UJ"B8S! P3!"F)'S!A(!!%"$3UJ"F8S!P3!"J,bS!9%kk!#S[+J"36VS!)LmU!&K1ZJ!D,bS !A%kk!")[+J"J6VS!#Nr[!"3NAdje51Fi)#"[!"4i!8)$B%C`!"!$d)JL3!`4!&j Q*(!!%!63L&)$FJ!5!a3"FJ!5!Y+)G!!L3434FKr%J5*!%S*J%R!!%!63L(3!&!2 8L#*#*%!8N9)%F!!3%(3!&!05!h)!%J+3!)&Q!2qSF!!3"&1!%)"-h`3F6R8[#L" [!!JLE`!-*%P5LL&+!#"`!"!4)8!!*%+R5&"1ZJ&@8)mNAdje,`SNE`!))#m!$!b !!!2rrQd%EL4J9!b!!!%!!'d!!'KZ!Q!U$)!!!J!!CJ*J*Jb!!!-!!'C3B$)-J!! $rrpY4Qi#B#B-J!!%!!"Q1Q!@)'S!8'!%)'S!A%K3,`T1Z[pk8)pJ)L"U!&KJ"#" U!&4)8#m+6VVrC#"U!'")8#m+6VVr@%r[!"!NAdje51F`-#4[!"4CMbmm8e45)$m mi!#TS#!I*N![#kQL,`Y1ZJ$H,`Y1ZJ$%9Bmr2!!",`T1ZJ$b-"p)`%TU!!*3Mfd 19Bm[%cmU!!j#*kR%B!C9Mbm6UCF`(dM!*J![#kQMF2q`JfB+9BqTVc!I5-"J!R! !5-"-h``-6R8[!L)[!!JN2!#3!qCJ"L"#dF&#%#!#8i*+J'B!rr)N(dje)'m!"#! [!!KQ"+!%B!+N"%M!6R8JE`!%)#m!#'B%S!"J!U3!5-"1G5"[!!3J,`!)CJ5J!f! #T!0)`%jeF!!a`!)J)!K1G5![!!5K)Nlkrr!JE`!%S#P1q[rQ)'m!"+"*6[Vrh#" [!!5J5Nlkrp)J,`!-)Qm!##"[!!5J,Nlkrm!`,`!'S8BJ#%je5RJ#MQXL-$`!N!# M4L*)-$`!RkG'XmKR%#*I)&m`(bm*S*!!2d!!"%je)'m!"$!m!!%L5'!'!a-,!J% !-$`!%1*!8d"#@&()rr`b[!!")(J#VM0mrri!!J`S!2m!#@G#5LJ!#'iJ-hcrr`! #5RJ#MQX`-h`!!3!#5RJ,)QSN-h`!!J!#B"a#D3!#$#J!!J!)EK"R#$0m!!3!!Q! '-h`!!`!#3QN!"!`i!!)",fi+%$J",e*!%d!!"dTi!SjV$JJi!!3,)QF'%h`!!3! )$(Jrr`+1BJB6I!!"!!N31!)H3IVr@c)m!!5`)&I*rra5360"!!T+1!+4DaJ51!( l!J%!$``"!!&Q#L"i!Y`6D!!(!!dcH!)3!!j+H!2fE84#D3!1-M`!2%*R8FRrr#" 2-AJ+@!!BF!LLB'BN-@J!0!!@SJGQ'L&S!&S!-#&m49**5`!FF!'LB'B'-fJ!&J! 1h[`!HL"*)PpF6ckmkS41d3!!!3#3"Arrrrj!!!!#3!!!!N!!1!*!!%@#3!('3N! #4%*!"#K#3!)IJN!$rN*!"$e#3!*FJN!"P%*!!**#3!#6JN!iFJ*!2%`#3"b!!N! $J!*!!F!#3!,`!N!%F!*!#(!#3!J!!N2r`!*#!%!#3Iq!!N#"!!*!3J!#IrrrrJ# 3#(rrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrr rrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrr rrRrrrrjrrrrqIrrrrRrrrrjrrrrqIrrrrJ#3"`G38N95!*!'#`T%B@PcH5"f-5i a!*!$(%4KFeN!N!-"5801)`#3"B"'8N9'!*!&J!#3!b8!"3*H634H@ej8#Pj0ANe H69j0ANd#AN`-)*!-!*!$13!,!c-`-!-f-$!%-6)`-!3a1$!`"$)d-$!%-cB`-!3 d1$!`"$Fb-$!%16B`-!8a16)`-!8e0cB`-!#3!`B!N!-#!*!&"`C6CA4eF-N!N!- @&90PFQPKE#"3FQPZG'9b)%4bDACPFJ#3!`X+8(*TER3J4QPXC3!!!4B!$3#3"3J "33!F!Ad%!Np,!*!',!"d"a`3'3f&ZBf9X!*!&"J!'!"F!9iJ+4'&TFhNJGM% Z-3#3"4i!"3!Z!&Q)#e"KCf8J8Q&ZCf8k!*!'(J"G!#d!LJB$3@aX!*!'(J#-!#i !b!B&4R*[E6S!N!BH!-d!,J$YN!!!N!BH!2)!,J%1L!08EcS!N!BH!4!!,J%`N!! !N!Bh!!8!4`"CL!G$Eh"TCA-k!*!'0`"I!%F!Ij!!!6%!N!Bh!*%!4`$)L!9'C@9 N1J#3"MF!c3"'!5m'#N0[ER4TER9[GA-!N!8h!6%!4`'T"JT6D'9PG#"'C@9N!!! "i!!9!*!&i!"R!2!!V33%8f&fC3#3"C8!"`#P!(J)$N*[G(4[E5"[CL"`B@GP!*! &"J"$!"F!P)J+4'&TFhNJGM%Z-3#3"4i!"J!Z!$1)"9"[FR3k!*!'(J!j!#i!R3B +6@pNC@dJ8'pbG!#3"4i!T3!Z!3N'$&"bD@jdCA)J8'pbG!#3"6N!"J"*!&')#N* KG@3J8Q&dC6S!N!8j!&S!53#0"!#3"MS!Q3"+!5b)%LK)DA3JE@8JCQpb)'e[FQA *+3#3"9-!"3"M!(U)$daTEQ8J9'9bE@PZBA4[FJ#3"P-!J!"M!8!3!*!'D3#!!(N "3"!!N!Cr!)!!M`&!%!#3"T8!J!#P!8!3!*!'U`#!!,X"3"!!N!CT!!B!H3"lL!T *EQPdD@&XDATP!*!&I`!(!)m!I)J,9'p`)'pQ)("KCf8!N!DV!!J!Z`"j#!Y-C@C d)'eKFQGTEJ#3"X8!#!$9!(N'!d088`#3"X8!T3$9!3N'#&K2ELpB6fCQ!*!&i!# h!2!!r33'3f&ZBf9X!*!&"J#E!"F"()J58(*TER4PFL"3Eh*d)&0PG(9`!*!$a!! )!*!&#J%r!"i"H`3#6dX!N!8+!BB!(J(#"!C$B@jMC@`!N!8+!!3!(J"HL!T%B@P cH5"f-5ia!*!&4J!&!&S!C!B'-6!JBh"T!*!&4J"i!&S!Y!B'-6)JBh"T!*!&4J$ )!&S""!B'-68JBh"T!*!&+!!&!$`!PJB,8h4bB@PRD(3JGA!!N!BS!*X!2!%X"JK 6D@4PGf&jF`#3"3S!E!!H!-D)#cJZ05)JBRNJ-6%L!*!%AJ!$!*!&(J!m!#i!M!3 %4'pZC3#3"4i!S!!Z!2!%"&0dEh!!N!8)!!J!'!"C#!T%B@PcH5"f-5ia!*!&#!" G!"J!k`J45@jcCA*d)%jPH(3J8fKPCA3!N!3B!$)!&!#)!Hd!!3#3"`(J!30+Ef) !N!-Z!#J!8!%S!DJ!!3#3#2!3'90PFQPKE#"3Eh*d)%0[EQCTCh9bBA4TEfi!N!- B!"m!&!"i!HJ!!3#3"`(J!!06G'`!N!-H!$!!-`"N!5`!!Im!N!IIr`P1CAKd)&" KCf8!N!0i!!2p!J"#!%J!N!3#eJ*N!*!%!YB#C!)!"5J$r!!"r3)!3J")!*!%!YB #C!#3$J)!!!%R$`!"!!%!N$9i!!2p!J"#!%J!N!3#eJ*N!*!%!YB#C!)!"5J$r!! "r3)!3J")!*!%!YB#C!#3$J)!!!%R$`!"!!%!N$8F!%)!5!!#!J%)!J#3!`8"!J8 #"!!!rJ!!!J%$!J!!!3#3!b@i!!!NZ!!!!U3!!KmJ!AS!N!-F!FB!$9""3dX!N!0 b8%4&4J!#!(j%8PC5!*!$SNP$6L-!N!1Z4P*&4J#3!lT%BA0C!*!$aN*14%`!N!2 58e45)`!"!0j)49K"!*!$pP088L!!!J%#4%P86!!$!5C%6%p(!!-"9P"548-!!3' '4R4KBJ!!!Cl`!*!$)!#3"!+3!"3!N!2")!!%H!!#Mq!!"!$()!!,A!!#MqJ!"3$ 2)!!8UJ!#Mq6J!!#S)!!8b!!#N!")!)!!"3!!(3S!!Sq`!)$rr`!!(Ji!!Sr)!!$ rr`!!(KN!!Sr%!)$rr`!!(LJ!N!6`%!!+!!!H5!!#N!"%m"%!)J!!(R%!!T!!"1! !!$-!!"kZ!*!%m!3!4!!!(VJ!!T!!!2!&!&%!!"l$!!+2r1!"rrm!!"lG!!+2q1! "rrm!!"lX!!+3!"c`%!"F!!!J"J!#N!!Bi!$rr`!!)HS!!T!!*0rr!(3!!#+b!!+ 3!#MJ!Irr!!!M&!#3"2!3!)F!!#-`!*!%i!$rr`!!)f)!N!6Ir`#D!!!MIJ#3"l! !!#1J!!+2l!!"rrm!!#3F!!+2e1!!rrm!!#5B!!+3!#!%6@&TEJ4*3diM&e"bD@j dCA)JBfpZG(*[E#"cG(*TEQGc%%*KG@3JFQ&dC5"ZB@ePFbi38(*TER4PFL"6CA4 dD@jRF`a5D@GSG#"#GA4dEfi+6'PcG#"XB@*PE"G3FQPZG'9b)%4TB@a[Cb"8C@e `E'&dC4*1CAKd)&"KCf8J9'9YF'aKG'858(*TER4PFL"$EfjQD@FJ3Qpi$8jPH(3 J8'&RC5"#EhJ(,PK3FQPZG"")B@jNFb"[CQBX)%*[HQmK"84bB@Cd"d4TB@a[Ch- 18(*3D@0'D@aP)&0dG@,)N!!: ---