Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!snorkelwacker.mit.edu!bloom-beacon!eru!hagbard!sunic!mcsun!ukc!acorn!aglover From: aglover@acorn.co.uk (Alan Glover) Newsgroups: comp.binaries.acorn Subject: v01i040: ptrcopy100, part 1 of 1 Message-ID: <7054@acorn.co.uk> Date: 14 May 91 07:54:10 GMT Sender: aglover@acorn.co.uk Distribution: comp Organization: Acorn Computers Ltd, Cambridge, England Lines: 543 Approved: aglover@acorn.co.uk Posting-number: Volume 01, Issue 40 Submitted-by: rmokady@acorn.co.uk Archive-name: ptrcopy100/part01 Something a bit shorter this time :-) Another of Ran's little utilities, here are the details.... --- This software is (C) 1990 by Ran Mokady. It has been placed in the public domain, and may be copied used and distributed freely, as long as it is distributed complete with this documentation file, and with the copyright message intact. The PtrUtils module provides SWI calls to read the (System font) character at a given position on the screen, and to read the character under the pointer. A task which seemed trivial at first but proved to be quite challenging to implement. It is able to recognize the character from one pixel ! (I.E. it'll recognize the character even if all of it but one pixel is hidden under another window !) This application demonstrates one possible use of this module. It provides the equivalent of cursor copying under the desktop. To use the application: 1. Double click on !PtrCopy. (Nothing happens) 2. You can now move the mouse pointer over any system font character on the screen and press the CTRL and ALT keys to copy the character to the current input focus. To copy a string just move the pointer over the first character, press CTRL-ALT, and then while holding CTRL-ALT down move the pointer over the string you want to copy. For people like me who can't move the pointer in a straight line to save their lives the mouse is bounded to a horizontal line while the CTRL & ALT keys are held down. -------------------------------------------------------------------------- For those of you interested in the SWI calls they are: SWI Pointer_GetCharacter (&424c0) Entry: r0 - Requesting task's handle. r1 - X position on screen (in OS units). r2 - Y position on screen (in OS units). Exit: Registers preserved. The task is later sent a Message_CharacterIs with the character value, or 0 if there is no character at the given position. Errors: Pointer module in use : This call can only be made by one task at a time, it should never be called from the redraw code of the calling task, otherwise you stand a good chance of getting this error ! SWI Pointer_GetCharacterAtPointer (&424c1) This is the same as GetCharacter only the position is implied by the current WIMP pointer position. Entry: r0 - Requesting task's handle. Exit: r0 - Preserved. r1 - Current pointer X position. (As returned from Wimp_GetPointerInfo) r2 - Current pointer Y position. (As returned from Wimp_GetPointerInfo) The task is later sent a Message_CharacterIs with the character value, or 0 if there is no character at that position. Errors: Pointer module in use : This call can only be made by one task at a time, it should never be called from the redraw code of the calling task, otherwise you stand a good chance of getting this error ! Message_CharacterIs (&424c0) +20 : ASCII code (or 0 if no character at the requested position) +24 : X position of the left most pixel in the character on the screen (in OS units). Any bugs found, or suggestions for improvements are gratefully accepted to Me at RMokady@Acorn.co.uk Ran. --- CUT --- table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 .Work.File-Z M'YV07YBDF4,'@,&#"!,J7,BPH<.'$",B!$'1!@P8!BEJQ A (T6.'CW.B"&Cz M8PT8,6;).'/JW,FSIT^)(4/" /&SJ-&C2),JA3BEy M#!TZ>>"4 <'CB9@R>4@022/'AXL04.C(&?(&3IZO2,JP@0/"A)&W"IH^C3JUx MZM6L6[M^#3NV[-D04NJX:6NDB)"X3J%*I6H5JU:N7L&*)6OVZQ0XL%$2u MQ,WJ\.,/#ZJ=J/S[^/,S5 """IJ!(,SQAAETW!&&'%,!B,(0*8 00PXY#"5&t M'B!($<9@3;RQ1AADG 5"$G2 @$88G5U5QF!PL!'&&&60 4(:@]&!QE1PU"$&s M&VF,H0 9;[01!HPL@'"ABSY2>!4(8Y251HL@U#$'DT."0,9 8J4A1AV;N6@&r M@FKE$22)(+#QAAMG"-F99B_.L2.5F5V9)9(]INC45'=HA@8(,@+(XQAUM'$Bq M'6'L-B8(9O!6QI=NN%BGC'C."*=9F9V!!AT*^#G''&&G_H*8II W3L4Nl M@DF>X48:>LCL:,C0>HKOECV",.;'<*2!AUH@A ""DFX4(2_FIVP:[LUWYRSk ML/$>.&^]96@[6!IF"#GU@"^&6/'0W!JME@( _D?&K(,)-FN]%[Y!;KUU)OK&j M'4FG(*I_ (8!1XHY!AKN8+.FZ@9!T&[6&=K=7FIEJTT^*738>7:6ZJJM@OIAi MB)C!*BNM\);!<;:Z_GDYDG5(_$:]29I5LKUS8SWK'&OT"@>H_%'AJY,Z3R4Xh MX6,8/J8.HM(74@S^$O&&C92/@>,8 P_:7&K^HN"$W?^1*>+P)\[A-W_*>R2#g MOUD\G^M@;NR-*JS!OP\\MV_PBR_\=+M!X1S&;I:L&^IP4DA2I6VL+8O3MU/6RAT5,0(d M D(;FE!:0<+, T$@00JV (-44)>P!E,P0XGH#6R8DO>JR(0K9K")(>31'08Cc MQ/@545I"0R+6&#>[/*C/0"UDUPC]9837H7& 4BD+Y7#$0531"0V^*IX;3A!$b M^!&Q?D:L%XRLQ;@?22I$.'+#QVSH$79A:HCDXDJ8LD4Z1Z5J?@ 2P_/NE3%Ka M(3(S>EB6KOY8ODP>THL1G& %3?"O#&ZP@T)"D(C4XB(UNH%W+4BF,I?)S&8Zz M\YG0C*8TIYG,4/4QB=Z:"MGL6 <72HLS;YHDO&R%J^+M"H(STB&"D!.X)0AR.N$%$&!" E''@H!>@4T:14(5r MEUN],Y[TFF<]RTJO(-"!L)%ZCW.p M3O1[%BU##7\:5)]R$L(+A0*"E,I4#]M0#AE=Z! "W,(WXHNCD9OI,9<6A,X@o MB ZMTZ267M4&6H;P"OO5[G>Q*X4[7FTI0TC"%"++]5"MK4\QEIL9PLGV\)U*I#5k M+>YX&U??3@6X!!'NM8I+AN->*+ED6^YN*NQOAKDS^N2Gj M/QN4O*"L0 9#,6@0IC"$))135<-JJY_#-N@X/TS6#04GDQ)]N"1[F[P@,"B,i MO27CU<&K501ZW\2*=K3(BG-G[A[7C+;L$9N2U*0H%8Q*4\ [!01!?Q2KPQDZh M T"YL;5><]"XI@AR.(ZW=;\74QBG.G.@J9RA<64P ZOLNR(6P>%-O5( 5M\Mg MA0QMJ$- "$*2KNR")+F@#FOHM@TM=$SJADH_4(^ZU*ES/;] )S!NF'IR-'(#f M&, D)MP!^T>ZL[SPT& \7K_!#6I0@QC8("8VL$$-VO,>K=M=/P,?e M\$$!?$@:U@GE10"&J.IF 0$2OS4H&+@ !C-86@QP\/@>*380@X$H,/>I#1IPX&]HMKW51HW_+GLS[Wb M%'+\17X?(N:?/O7/CSX(9(!\Y?/ _,-'/_2M-/WJSV@PC&[KQ86FZB&,4@S@a M]S(C-CHM-$G<9%@KTCT?DWS+UWGGIWK1-WTN97T?HGPBP /%AWL'0B&\YWLGx M&'RLH4DMTAG<%UM4]'\!F(5#T59312\*4 6+ WSPYWQ-^(11*$Q@1B^ZP1N=w M(7Z1UW-$&'J?YQ6E@H=/2%0P@B9U* =WV!L*T&5P, =B$B(MT :3]!U+H%$^v M@@<@0(FO)QB,<1=_B!L.>%#"T7>D6(JF>(I*@7AY !V7D1F.@XH^<1TP<'9Bu MYQYD-W:U2!$Q,!/I00,VL';DY1)R%Q-K!QXV 8O(N!1Y9Q_)V(QW%P ' 0$'t M008#8!!44(T $ (W)P ?^" #^> < 4 4$.9 %.0,("0 (.0,.0029r M8! ."0#NX X&,9$'P0P7:1#=0($&9 '405WP),^V9- 60574 ?_6))!>93^^),"p M69(Y.9/WP)-)"91+.9!'J91(N9-5695#6914Z9,P^0\O&9,YR95W< !W\ \!o M^0C_\ !P$) Z:1!E>9)W< ^/@ @MV99O"9#B>))TB0AVR99N>1 !*8[^6)=^n MB0]_$)APZ98":9CJF)AY^8\"V9C_\ CX !X29:,>98/ ^( )B1N9D'89F9m M.96;.96>"9F:R9CIJ)JHN8[M" #P )MK>9+M^ !KF9NXN9NQR8ZWJ9NZ>9*[l MZ9OMF)NP^0#"69O%R9O,F9S(N9S R9R]"9VXV8ZSZ8[JB)S$N1#KR)W=F1"]k M"9[?F8ZW*9XM:9[929[GJ9[I>1#AR9X*\9[NV9FUJ9X.,9[;V1"SJ9VVN9[=XNV6(O;P74("6YH1P.0!QXN08PO07<(NJ$)i M6CYZQZ$@>A_[JJI"@"K.@_JJ '02*5P@ I;D Y/c M0@=?H$IR4S+3^@9X@! 4,*=U&@[_D*=[VJ=_"@"!>@6$BIEV&@".&@X"<*CAb M, !;&@Y0 U-( X< &-( X@$ "?4 X( 60@ [_&@CHP $ D*\H<+#EL*WYa MR@(*BP(@@+#X*@XQ@*L"@ " ( X;4*K;BJJ8>03@@ $0@*KJ:@3@8*Q% *5 z M0 10BJL&T0SE((YV:A"KVI+"8!!@( TM*0TX*PW0"+,&<07C\ ]P< C2< 1Ty M8*<" T*7K _.v MF@ZX4 X&,6*]@B#76JUDA IRHYT:J=XJJ=\ZJ> &@[ZT*7X" 3@, XHu M 23N@"XJJN;VJF?"A.(BK'B< R@*Z[R]FKP6R[R]t M\+P @*H5X*[4FZGH>*G9RZN^&@[*R[G,.PO@2[)@,+W56P[ BKV3J[[Nq MF@T,0*72" 3B$ "-2\, < CE@(Y$G+ O#+6OH(X;$*F' +D 4 FFR[<5R\(Fp MD,)\ZP(&\:H D,1\NP(&H0%RZL6KFK LS /T*@Z2*PZR (WKD+"HR@ 0\,+0o M" 6@:A"Z %S7 YUS*X&H0QZNP$&H0Z,,,4L .H.@"?*@ I0*4! )"( X"n MD !4*@,)'+Q$;!!>G+_(:Z>)L !4^@/4^\,'D+%< +KE\(WKT+A$3 ! <,3Am M6PXI2L0L,+(+.\3EP %%*PX2,,0%"P='( XD\,I\C*NB^ZP&(<50"\8L_(UDl M#+QA/,93O*HEL,4HD,8DT,73C+T H TB^\(4 )T# !2$ Y.V\W8J [A? CBk MX+22@ [F& 7AT*JJ0 "?>A#J8 #W# !1, [:J0#?;+H"$ @AB\M6^L*Z:J69j M:K O+*>+,\& 0ZSD,V'4 L&<=1[W,?$ZZH@4-+E0 +B/,52P+D&H0U]C(U@/\SIH-(LNJJMJ@"]O*H3$,;;JLQ\2]0:H,GE( QN[+1Vf MF@6@6]7J( 3*,,,/T VC,,:D*)ZO:JJ (T;8+!2;,2Y',7E@)P9*XVMC-5Me M/;H^ B,(@@*L5G;'&0-LB3<+VG*]ZJP<:c M?;#B( ()G _J2,C3_&2I@1!$I7K/@A!#LWU:KR?&@PFx MCN*0L.(CZ^)='N-E;J=GGL&Y.PEL;J=N+@YP;J^49&PAVWN(OKN?/BMH!w M8.,:' Z$T.&#+HU,6NCA, QSGK%RH.5[CK:2GKMWT.$8,:G9K:FBBHZ9B@ 3v M2PR=+@YD .J/WJT ,.HXG@:6GL::7@RQC@6TG@Z0CNN!V@6[7J^83NC9^ZG&u M$.M+$.P73NSR&NCA,.B:;MN(+@X^L.AX#N,R7NM\+NU!0.W6ONQVF@RQ_@+AWN]H/NFSD/CU*HZ-(.R?2@VQ+@J0n M#^ZBWO:Y>PJ6+PZ8K_EV6@VQ;@F?[^X6+_HXO@E1#P*0$.0:EMK_?8$.MS4/ALl M/_FYFP>EK^G9$.MH8/S;[^QFL"E&P<5($'D+%:0 '(6 $@ &0L3>?_j M6!6*TP$!,/3EOT#U PS@B/M4T2W;O8 ,*/D&8#B@ =^/WIVL;#<"2*"T0P$Ii M%W]6E^F*]O] W,Dh MT@@8KGH /(!*Q0,<, 1^F P8!$TJ E""<_ *$ P\&<8X L^ [P!8. W8-2g M$( 1H*T(0 C. 33*6-MJ5=4#=:0+S!&?BWS2CAYLJUT0]W:@B\MV7@WE@;X2f MN/("%3K8@PGK ]HI4; /M4WD&[,ZQN8(W6@"]-5+[13YP 89JQL, R/WP8,![!@#\HI/54,>>',c M^E3)D*(Q+T>HHCBA,S2!HX 27CZ/M[Z$5+:3!+@0]-6N9W@)]J 'FV?Q2@"Lb MJV!P\@S +B0 O*H ?*J.IZQ;@VD0X@H[> (MQXKF[Qz MO;5L]P5&HMY;B18P8VF!80@ =N$CNX94:AXH0W$P")IA^2N$X4 +B,.!)]>Vy M6!UC56$, -2I<2"K?!XI- A> "FRL # #*A4J ( ZF $# -/( ZD #+@ J+@x M "@#L#@% ( -PT8:0 !4Q2H%##*5E4*%4TY788#=QP%FX0YL![%N!HQ$U#8 w MI!T.&(K;:@-LL[VD (XB831'JXHP5J/$F!0!P.\B:NI &@G&CK:LJM0@XX@&v M8?&]@UAW 4;B#^@'_T =H+9U: (W@#MT5SPN')"D?H4!A($&F&*, !P G# u M&ETCQP,'L1$/@(':^!H- !B(C5;*$TRQ?M;7BEKN"P!7:AQ$ E0 < !;6MFt MY"M>58"EV/&*7L@@ #+B .]D&R0D>4 !V@HT(@I)*CE7($,8XZ @%8s M8/2 @"G(CMNQ.R8KZA6PJ)(CFK4@,. ]S$"%GP, $Xp M@)&M\34Z -P(#CADD7)2'Q+IB4CY6"+14+B[4D4:@F K:9 X5., !P0!+YG*@$!L9 !B ,BA@P3& 2 E\-5CR!4m MK0/(Q><PL4# !@%0$>l M(HV3=HR@32ZU<>"P)A5'U%51CGA1*3H@*9$C!(Q7UPL.2$H,R>,ZHJB"!!$0k M',@Q\X6KTD"OE%[BX'Z9 4FYK>P4)"@ 0 QD:.J2_# 3 0 812 (" D2D")$$Y^ ,@332^NQO( V3E>C1Gg M6PP>A,Q_"0)$0.W36P5L',2!EZ:WVAV#@WY42A7<-76 #2J!08AV-Q %V,R9f MY;)RVV8S;CI 3HFT3X6I"-TNQ +.K5X62I8)Y.C 75L'/1/(U;R@605>&D?,e M F>SW=6)E$$'8H .* $4!4R$'#-@!N@%E" 4@<)A%!8WX#"<3;U ;"A!Y2 d M-- @HD0; "+/!:B$")3A)Z9$FJ$L!X$;3(",F0;!0;HL>&FR6\$#:5IF'c M"P<(@ P02M\8&_\DE:(&(2QF?:JSA0;.)@D0 (9 =BHM7$4&;"?NU)WO"E>!b M =^9.VE !("1UXL+$$_@>;\,IHJZG;GS 'PJP38.J,#RU%L<,W>B E@"8;Ca M.$ &5VH ;$]#4 "X &\3FRHS-E(!^R8V-:8"*%/KX!!@,3)IJ2: KAK&\ "z M)+"S<]_.9CKXE#!M5?&U!&#!Z2PI"D"MT#0.B&IR E! -&J)'.D$QQD6&63*CY##6!Z:1>:>K;?4H \ ^MYF\+;JO@@.H] @ #w M"(&RRU>4H @02E=&-LM!.>AE:%,$J,VGE1R-PJ'R7&9@@!W /2& (r M LV@'0R *)!-#4 8R*8)( YDTRTI]<8!! 8%"D(= -M&@76J3==I^%TG5;3q M?"6-%-PYG:9;,D6),/,( 0 !.=B2HLO, ?JA$$P;?!@".@I3@H(S"D0"&XG*SRBo M+3VE'=/4/Q@ D0 #- !X0#5YP- : (P _R#04#@-FI'-1H *2*U'1 4MU7n M284 )U4<@(,!H%(' $L%!BYU ' "F4I3]Y9-?:DY-91"@(0H#NP!3T4'&L [m MRDP!"!3M 8O"1\DQ .S":9@.U*HQM%,?P" (0I)X ]7!61=1k M -@V-9;&'$#UPH]<8!SXJ@B0"YB8KPH J4 =5355Z0V[58V[@;O@K#:NBT@ j MH,!%9 #@(+-NUD'7\1H!F*I?# *P$)PX!;-HFB]4A& %)C6*Q4 *(%JG5(#i M )4BUMQE"NXJ)=6.NQ,GLBJ;R*N0$TO5JWJJXZ4K[FJGY)B@DZNM-=S=0$EPh M5^-5ME1:W:H:[=*+B%>KH7?EJ^ U'0R]L26JJB$#X%5W346M/3OU6I]A'[BKg MJ#$>4E+&:J?$T29X:P+QOK)5R&JG'$">U;<:A- Z6JG <@4% 8 (/%=+A8V$EE&#e M7!#@B:6U7#6R@*PA@&)PR]5U B!;"*!8X9)C2_;%50"WAMKN*SS8!GI*2?V[d M)'!6Z^)%I $A=LR16!9@8H-My M*;V[7]Z V8*^ FL"S:D]2HT>#'B9VU:W^UR9^1*NY4"^NMO%-P)P%3-PFWP+x M>H4J*$ ,Q!'!K0"H%!Z(M[$J;/\=,R"W"0N6UCY @%3%@<,BA?_@&XD#=5!;w MJY2SR@ 3^J)([LT87,UBXA/09H@)RBP.@ &^T7U . (!O5:XPN40+5Q$C8O-+" u MY+B!-()IA4L?S$>7!0#$'"JE!Q-4Y88#20!Q*Z&=$@*X:A W%4EC5Q5 3!Nt MH4!2ZKW*6'"[(:Z25;KB0+0!N\F&PD#,P!.^ E@0B3%A-\9$CB@U?D(A>*R\s MQ[=HU/KC9YQ+ LX" 1 !@L$L, A! !R$3CMU#[#L,VP#Y%;JS3-WQ0L@ :%,r M ) .(*!3% .# @X',F;I"YWID%!KKGD*51KPH"=,]O),_P 1WD!%<77>TMq M 1K&&(!Q/9/COG6_2>T-6>10(@"P@JP+*: )OW3DF[%D!N:4$(2)DK,TRZ3*BUP!( n M P "M0\,]+ZWML]P+0 0!,7,3GV!JXLASQ;)O5M5=47*-P" ,M%G!!8 M@X$m MZ%H!0$FKX2@=HJ\*'$Q@ . %_!@+PZTN$QKU8&RD &PP"-C!76T.EDB#T-6Dl M9#] .9H"NPM20#%!@$4DP17D1$4@%B;X- !#Y!&#'=TWD!\@)Q.)R.0 X3Rk M , !X(C3R!=:XUO'S )KMF]DQX2I!@A55N".L3!CIP%%Y6 0!-0:,C+&A][Q+&55O2'/A>=2#'CJ[&- B@,U[B@PF*h MCG!HF-RAHM/SFL!;4(8-*1Q06NMJ +Q>2PH)Z"L).UOH0.X" *&UEXHCU[J*g MQ7%5R2@%P 55U-G"D"NL8K)='ONC $!5([XXUOMN@01 M@"!Z8(#[EA.32]Ef M++!&F=X[6\6@5QJS[RMV(4$99JM&F$H]@Q0&6)^A(?C'>[4:?N*@20P(,NB#e M!]G@!NZ!8@PL 8$390%Q( VOX9,%*-65 0-R<6T%!*D!F4!EJ#5$-("#K5QXC1J[$P:AL.\H#O70>EP#NN@[-Uu MH3NA&'Z&FM<>L5([A0G&P.K\C2?K&(^#%&5[^58*V&(/0$3#W'+ G,A4S!JG3N%CW% !G.1S$KE&$"KV6.+A5]Y&D&8&Zs MO,WF6@70RX.,+P]&HXBK#%;N;(52CA3"9PO-N%)D.5C,H5%FI3808 C:&0!Xr M9_;@0[,!$$7;C!S\A%K?+@,4o MS4$-!:^(:![SK576A,P"'A@=I0&+. &<]&J5=$VC5"9;Vm M<"&C5"K%?'%C]2J2BWOEPR!_B62CI52SL0T*BQ*]I*COU9k M'#0 \AH.;"VM15O=RJVRKUY[W#X5)("?"#&EQ3*9?0,7@,E6?%/L=T4Y.:F]j M*A;_$@<= %POWF>UD#^5U3:JXD!C_^IN=5\+K):==/6 >>>X" %$[/GTE^E394F#<_ /H,#O,L08 #]&M7PKh M)6VR4L1>TTMA?2,(4 YV@8@>852@-ACH<(UC18%W--<5^A/<[G4MKCG![H;#'[>M#>I+f M8+H)K+2C!:H[8(>##H"K(L'L7E7L>A'\[E45+I6UJ((!@]H0%.]PP&Z!XBA(e MWNDJ7O4R*@4(GOJA+;CS7_?KPH7&OUW94P'%NYT/T,^H+;E(;9V5PE 1I?35 5L^19:c M+ 7ML&*JFPP/QEIT,'18D.?#3Q4&<)7[3@>W (>&AVX)?W3X0 4z M5/&/>\6S.*_J! =L4$^" #Z_"P&D'&_/U@!L[R XZ4" ZHY7+(I*^8- C:R#y MMZB" (,Z'VA=AJNJ<]<$4-MOTC]?V'PUX:@4/(#;L:PE-:F"; (- "3G=1%+x M9W^J2CX.Q@$F1U5 @ #TW%7[#/,!.L)'MLYE1=;Y?5]KXLSB5>A(3_UL6S[/w MDF.7HE+O0-UVPN[][P@S/E+><95*"0-"SK?8]2_0NN::?5_O0:T+%KG>LX-@v MNQPL!M("=UZN@N2V+V)1+B8P;V<[.B183Q<$GL.>@V@22 GT^\ S8XFMVt M\IP!9*Q(P,RW=D('BI6 H<_*=\[LR+E$%P>"H**;KG3^[PR!1J=W$+V@SW,Zs M@-#%;AXXZ0Y]!_JZB)ZQS(!(9]K1^J0OOIFNTC\Z%FCI(SMW=0&&GK+7%]JEr MZ>)@"0!ULOKOH, KKXB9%078*1$@U=\5"A $: L!V"D0H-7G&<:J=FDLROW7q M3&6.^(!?WF)*L;BBK\4GYY Z9*QYKBYCD?(3!P$_^@I8ZO-,VL& 5VZC>!@$p M$(S_ ($ '%@H_J9,*UG<)+/00 FE0#,]UP3 & 2LFJQ0T . #L%8Q!-1"$o M R#0U2%CSM9>>HQ)[8- +1E'^CT'BA+@E>N]?X".Q$%@'^R1/(47UYHE):5!n M*J>:#TU.WBHJ=0Y$NJK"7E'6,5:CT>4!YF 8%L;B*@PD:MBFNXC7ZN8$! @\.j M#'PRE-%I&2OZ#E_A(S .H-@X0H) X(L3@#=/@ LQ)--FY!">5G$0T/O1!9-.i M"QJ< XW'(..JJQ(.0FN%Z8+]CJH _&P4\21> ?C9*=;D0_R [PA8/ %<^-I,h MI82AW:WR3_[*A[D2+ZH" #P6!RQ-'6 B@0 J$"F $T?@[8^%[A*\2$]Y@Dg ME@)3Z'@;!*,T*:]2EQ@>C#+!+H45D\"N*"H.@]# ^1(P!FQ\QVD@>-[-T H^f M[YZL[_G&8QQQ"P0 L\6K5L"6KXRU@ ER@0B JCBT!)Q>8" 8G .]-0V(ETA;e M5Y];0RL \%@.@("5$@=^0!T)A^1XW4N]GST'M-[6,\@E$,968ZZ^E]_( Z^Jd M@O )"D"0S,(0T[XY>]>(+=-@@"1XV!( ( )Q@ ELO/82&".%L"Hc MGY"BJ@YX>^]. 4P8@\>*TD;/3X42&C#*1)R?\\4E3(R),A'I<_RD-Q0& 0?@b MQR> )58'07@=MX1R"-[9D>>U"L +B7E6V@7*/5(D8a M24($)RL H(&3->;9LCAP MZ>ZQ(Q.& ECWUL3/;OV!T3@I;O+\$D 8#'? P0z M;'O*;GW# 3F@@X;8($Q:F\;S5Q7N!?1y MS8EP$62CX>]Y@(]4J>$L1U3=ZIRI@XY'!>;9%A-E47$DUV3DV.2 2-H4E1Ox MBD%=M X.HL$4BXISK1K%MNND"_2^)47K;9Z;%4>[#[5:E;+"5?V4P,7:Q(\.w M4-N);K?"X732*O1UM[;\ J#X=HH3! !?;*QJGR'.R@;A&RVJ Y#!P\$RZ."1v M.*Y18JDXBKA6YV[][M823%E#;J?X@7!8!P;W[^-8:'0(), WHKA4=F8^PUX0u M^0G EB< QHT%R-V;*42OHCI@[P8AWCM\;R2J8L%+"_:W7NMZ[F4M,6T_5@36t M0-$41/[-^03$P3VX_=]>B#YBO?4)KC]4%O;B0/M+W=0VJ-6!<% 'MP!9'?<;s M. DBO^AEW=<:VN+=F7F.#'T7 ' "B8 X\"E=7WS-$670I3 JG*@"V*@HMMZ/r MA^R)24)?.+#"''X9"PG /OE+&M,W4O#T,EA1WF WK7BHPH5 (>0-*Q2H0+W@q M1[V8R_>+^2L"P&RTH]%AP9.#U)7--1+0ML?!A48\ ,VG,+%AM0\49@," >X8p M%2 $BDPSH!&8Q4n M$020Y%0C\HP2I@M<)E-@[?.((4>5&00 @MDS.U@_D_AA VJ5)S4 R V( PPm M"10S<\ XH(1)>5/2&*CW &;GPQ8$WE@6 JO*5K_2$/3*"P'%#SH0#OMH_D,=,209!/V,')"O!@*['"?!?(&#Gk M)*?D8FD*+! *UGSWDIQ2,A$#R*",U#F!@1Y3. )^F).4C88=)E ]<"G=,R%j M;^45KA(#H']\B].% 6!,6R $4".9+CB9OX($IC+22XQ#\(PYHTMK=G0%;H\8i M%( ?W6144U=SS@@',(#+5!%=@C-6.."*B3' P"4(C<0V2EAQU-6H8@;!! 8!h MX%J*8(QS_X%_#IE4!!@"5(@N,,FW N##;&$9BQ@PXCE:0$XOT\\$ /' (P )*&?J@ ?0f MW@TR,@U65$IA1?:!.F#DJ0-1H4ZC#EB%-QI65!RI R? (&,"##)I7C:#%?5;e M6%%3:(F--Q1 518,C@//46$$>;6%@*"QY'8Q U& )&,6C0*$G@; @9Q*< L4d MHPK(*.J JN2+_2NU#\4D3-E<0$XX-F)Q974 YV*X30,X3,5$I0P# %2*,J%9c M1@" +O"(&2I4$U;T#JT"Q$ E@@]),?"9 &!R\2T\8'Z$S$QB4PS<@JPT2;4A--(8a MLDJ6S#_P2+%6UEFJ- !48*Z.02BJX$/O60U65;$#XPTE8/S)@&FA(>@'B@-Iz MH3NV)64TOEAXR,<89^5A-L@,?(?08&RTK0!C.=SD\P0L=V91.( #B(/X !5 y M*!4 21X.N.*JP+.26[>31#P#N0K0X\OD/2 DF/)Y#T *-GZCR \Q!X-+Hw MTB!&B(>+LL-TA0/>BB^X8=$NTHX#(!,J;RQ &F,%/ 4S0*0L2 ! !2MDJ;Pv M-1N <;,!%&CI"J[B Z!74$#N!(B) XO9.M %V ,A#1, .Q>GXH'D"0Z1N!=u M*93"U6G!520@'DDO8$HLD\UT-@I+-N/#L&RB"@@P(3(!7.(Z (BE #40Y0Wt MD%]V@_D%0J5?R,(+ GAE#62"_:4W\ V[ 1U .;10\Q>P$$/=7X_(T^1:23N0s MH3V""%@!_V& 6"RI-%#+.=/"F#@*0,:2 (R)8D[=IBHY7>W;Z!(.Q -CFYU2r MRX$K9QNB]MKDA[R G)*27"I6$SKBHP R8V9& "P /F*JW,120 E#O"E 6+q M9 ",F*7T*EP4E:(.3(AM6Y=6/[$#AT10-:T[\"X^R(W)NTLPBLo MB\K;-R+%V"BST;U"O@4 ! TQH#49!*\9O,;"2 #&C27P,!EE5$II%=*@(Y%-n MI#8 R"F$0 '@=-D"^2( T# &<5M !C !&#>(P,08)5(I1YPJ,-ZL#'6 W51^m M?5#HEPAE*-)[,*/DT2! BFX _34II@SXUT$ ,P**'M3Y%4*I7S=C6Y$SH@ Rl MP,XH?_6,DJ+]!316BI8BC\C$ 8SD8&JCV81ET$]N*#)VC>4 Q54PXBJ!0 A@k M T( >@V0 P9H31@C80;CU(O^"MK(QX !OLM_)<5D 0LCH!09ZD/Z6SB@""0Pj MKHXAR %$ $4;)% !Z#.! 0@QQ1@?]*B\HT .0-7.' <*@,/47E(9UV!.%L_i M50Z, 2Y 9Z,YMF;NF!:WOED [MA_91Z>B_6A"70!8(U/G.X7#JP#"4P))JH h M [$C5(8<^3!Z2QD <9<7Y"5XH[QB\3& &% [_BJ?RA'W"8PW+!*$1:4 A.P*."#Df M*46D$ W&#)P#,-CY:%SA7KB@+MC5<(F^X.:"/A)FS "+M10Y1J00G>(,F"[ e M "G4\>2/!H&:!@, RR6 '#+N4(?6#G@L)2"I-"V H(5D+(,#' %3DE]#)H2d M"BPK/1OJ& Y<63?0,2".G$X H/%8E=EZ_0RL$@#\ .$3/+ &; )@*?FN4$Cc M2!x MP(XRR/@!D)0TMGIN5(AYZ4KYC-IC.= 3&)#(9CTUYv MGEDS2100*:Z8<' <00"1C![CCLDT1 HSDQ8I7R! -(#GQ&,@ *)"-(PFN,Xu M^4X>DQW!.;E,;E7>TUPCT_0S]&-?7I0&)9?S35Z.V: \R;AYA@.Es M.1DW'I3-Y%I(A)&4K!\? 'EU;GW-\_A/AI/M80+&Q^4N_H#3I;-)E<">.D,]B<#8DTA0.)0.W(p MFX4Z$-D-% THE:(7!C @A0-7 *@S) @+X+GI+-G!:EH,6(H.4S!A@4E* U62Am M(ZB*.<(@R2F5@ 'V $T 9,&F!]XUVB.ULB.H$V82F(I:?QFJG$X!8)KYb MPQAG>HL(,#'FAIKC^J*WG (PFRTC AXW$E(Y<.FM ] E]).Q_#XQ6ST8;T6&a M-0_V^ #4FX(CX3A+5@!Z6VK73QE@U>8F-)!(CG00AE3SA +?$BJUHVU)Q8 [z M$!HA!+78%HB+98-80,H5U.$XFL"YR](G@y M30 1[BJG9NIT;RB9MHI/U\%9U6R=W9-&(,%I#'NR%IW3)6)^%"^LK[ [B*x M%I";B32(3#G 412+WHT"L.5E2BH*AN30B /# *26K!V=?EJW9:?T I)2NX,Ww M+4X(02'@<3YK-U 8H'+&*TQ [.0OJ6&MT[MHPO !B9W9I[1\*K9 G._*('!'@-C7H0XH@1;BJJ+]:0".)+HWu MO2QC@8 TUI:M*L51<52XP(J>V]L5W$0!A-S7DP^)*G, _'06/G\/!&8@,P:*t M-./16"CJ'NR"F! L)%.NR+SG1=Q[\=>."4-)C8U(I>CJV"E%G(JROO@UFP!Zs M!0BD*3C,*/+"9 %RUV#6:#(#NIX]L^V=+5$ _(0,,&8TW'TVS$D[#,"Y"0NDr M,39*ON(BV6+^%Q2@)AHK+"(V1Y)D*EE@OB(/Q#KT0):(K!5[4$"3-['4/( q M=L.K< "24OLI#J@ U1G+\F:**AB I/1\@DH=W%R#2H$!^!'%%2'B*H! >#/>p M:'Z%8#;X#U0X@(^=HL50*=+ 8L;(23O8P#=2;M4K*M/*IK L2_!@X?E!?FIBo MUS+@@AI;F9G"HM"H.D#GI[86EG,20#4B",0N@D !L"6Y@U@*HYD<.2V 0#I@n M.GJ#OB8^YX*F1H..]C)M62SN"ICBVCF2TLm MMHPCG!8F"k M=8+HS5;A%:+A0"@ .":BHHH@P(D2EM).%W"%6FOQR@#@KF2A\YM/P[E0:^7Ej M*E.K3#&)H<(R8F4J"G" JZXH$L(<"d M5^LH'/"01J37J*@2S(4T06D]>@,I ]5(46JM=9H:8#^ZK1$ )ZE *HG*BI'+c M[H,/O#0*:1&SCNZB&,!-:I+:H-5 @!:/6BDF3=.W%AH$@X 2>J1TI!# ("#Eb MN$Q:4230%9&&8A%9=!<2H0* 1$>C&*85(>]CF"9@?2B.XPF$I(!PNFY).U. <1J)^F>ZJ9W2UXBF+-I+x M>BG9*6= G3FYD*v M!&"5OJ?H]9P=_R@1\J WIB%J7u MAJ@YZ=ER 9BH_)CH!*V90/* .?+R6*B,RYE% &QK&:K_UK[(HG8*#3"5FB^[t M*$<4\M2D.RJ)ZC!QI>:GSIF[,$.AD(SJOV$$W6DX\ 'DH>_ MU029IHXCC)@s MI.:9QVE^^K4- .N* S"ERJ59J9W"#7Q+V^@'"1.^J4BJ)86ABJGS6TG G^H#r M<"EP19>.J&?+,? MG:B-'(XC"ABIFMR@,P,L1;H*#>H.RD)NT9]5\]P"#Q,AI@FJG*(5EZD<#G-HIF0"K2J ^p M0W3 FQJGRJIF*JX"I88#N<#U!Z"J1AGG?/H,C0&^ZGF*GP*K3"5SZIT:JQ"Jo MG7(')*N[J@DD!32K]RER.J-^*BV L.JN7 +4*HEJ!F"KY^<-% 1PJZ7J('J"n M2JOA@"%0KIXM50"ZZJ7B.# J4JH#J*E5)EJ!ZBJX8 1H*MV0K5IH!("Z*NQm MZK=JIS!X96I\>JN& S? P!I@_CL2 +NZKQ*DH2F\>@6XF:+*"? MJ:;Z#FL*l MX[BF<2-LVH;.IJSH#:0/0"-':HMZ\UU$[2I!>J/QISU HDJE5JOAP +P1:TJk M:!')RI?*,JPI$7.B=J/_3LO2LB*E8\N@FK#Z;RJ N&JGC V:XE57($S(.(+j MDZ+@K.T _#2T2CO( ,MJQKUN+VN0<['J/6 ,?[H 1*T,P"YZMF0#!INIU0D4i MHWUIROH,Q0)>:Z :ML:L>L\#":_2 VJJHCJUWC(X*S"@M88Z#X"TLPFPK(..h MP8+9*2PIBF"DJP1&O$^(.DP19C;H*W"L(://D"+@M9*E>.NG$@2.C^N*,_"Qg MXEN 6"?0ME9C6TZC\^6@H7'C:^K/R:8P3I_*I@8J;L#FVJ)VKG;*YRJ@K2NRf MP.B:IX8#@<#IFA39,JJKR-JZEJROJS\7N[:J0)$4P+)BH6G,%]:$ND7)$< Ye MY=0\:(#PNH<1KWG.ZFJ9D:%KZ!GJACHZZ>HSE -XK;^JPAH.3(G\J1_P+9TMd M3D#;"F7)HQXC\_KOF LJ^@UZ+"O92)'1"<&*_+K=-HQEH0%:SC 7+Z@SZKZc M^G:4J5O MZ2WK #PTYHJ[1@ +.NP2K; K.965Z,#U"D#0 Y0ISQR^>GY@K2&b M T> [QKC[*)Z2P4 /_6IF6F@ G4&F['H+#JV?BKB 952 WQ1A8L=%&"I2K]/a M7(H!X%LUSS\@HG6B)M#C]?+$L,ZJM^J_U;#CP > PWHUH, ..P"\09Z6+UJ_z M_+ V*#HPQ,JM)A"G$VR2I20-;:6T)K#^F\9#T3RQ.BQTUG&x ME8XNTHA"]8FA 1& ?P,#,&4DC+'RNT@ #D!P,_F%EP: O .7$5J0#7"M4@]w MH4 3 -R( K;<*! %& 2JP-FAR5Z$Y( .T %X4@) !5 7_@$00!@@!0 X0@ Sv M\PY @Z C1*&, G^1_01@,0@^AZ'T"*<0L$L ##,N@C%K!6B>P (ST.(0#:0u M 6F&0;"";7?A0# 65XW6(KA9ADU6A36 , + &?0 5 "QA=#"<,4 0HCC# t M(" !4$]*(48%"/0"Z-W*Y.+ (( .?!0S2S "?@SZ9!'YZNA0N" X@ #-"Os M4)::K DC"'2R[X SH(Z$LIW6Z><+4@" 0)(#" 0 F ZL-$R F]-O(($ #!r MS53F&JM7$M73O7NK5V;5Z+U^ZU=2U?>]?VM8#M7RO8ZK6!+6$[V/JUAFUBB]@Nn MMH4M8WO8-K:0[6,KV2JVD2UE.]DZMI9M9HO9;K:5+6=[V7:VH.U?:\9(24JMm MX6808 !T4D>0VB($.*V$-O!@ @,/)S#P0 2CDSI2V_HG"T&K BPN!"2)09 (l MN"?R28@BW ZWQ&UQ:]R:(BN,3H %1% ,@6Z+$#BW24$ -E%0-1M=6O="@ #k M 4KW2H "8!V6P!@2]B(1%"<%"<, 0& D>RV0PIFX#&(4DGM<>O>OK?P;7PKj MW\ZW]&U]:]_>M_AM?JO?[K?\;7_KW_ZW &Z *^ .N 1N@6O@'K@(;H*KX"ZXi M#&Z#Z^ ^N!!NA"OA3K@4KD-0H 0BO0%\JZ!\'4(!@_*@: 0S $O D,@$%P&%h M@I"8N,2(13#BUAT5+G&PC+2XS0@\@(V@ JT*(D"CD$H& 2UR31T$*$"K @R,g M (]CCX<3'"*)B"A%Y)H*#&OX 9. @0@GF!$% !X\82<(@ /"%f M?+$U8+G;A;7170P9A<5!$-"2 ^;(%C .+ !%(0SPB(&"6-$7P*8 .#^,/. )e M8(8#B1O@P.P-@\&1BX<(#5)!XW X' 0KV)CK&!FT ( ?$"'A6';0 $ ,0 8d M7SW[ 'PCP0UD]P7@2 H.0E %6 XJ !' &>0.9<&A&&S( 2%">O-\K#?DC+LPc MZAX(",'UHQ!, JU*$:#;EAFBKGS1))@*F@&%T"KP%$+"X# ]& ^#@>!59[@;b M<@.^ "^X&'* "] " ?% J<0!N !!H4*$.N2N@;! ["" 0 "+=3" /4"& #Ua M- +X %1*/ #5"G_;C6"&Q4 INS2%SY)297NQ4OHx M&KJYE,?+"/Q^"LX(TP]Q7>WNE/0// ']4,$;6E4F3YA!D/$"AU\-$L .;B2;w ME+YUK^R[O I1H%#];)N+MXOSH@.* '"KCAP 4(">$E>UE9R KV.L# ,' "30v M#V #ZT\32J7\ YS*N391;484I=:+ 02!Y=^]\O95+ K5O:)K*3)?$#:G!8R]u ME='_87D%#'@L9*+=^PY(([J64\3Q&"M:8V:(6PF0B.]At MMZWH6@@ .,#XVC%#5!XC^1Z^=LQ7&=4LF4VM_]K4<@ 8[U4)#C@"X@ &$/ >s M - @4/E3@%+P+.+ZBX$=M(TID*Y#RV>5E$O(+-2Q)H! KP @)>O $8XD@>!r M+^OROC74;CFP/L%(0.\[\-**1[ 0"O0_@(/0/DW8XT#S,PO%/J.4LS,*U!-q MO7T" #>0KRP!1.(XP AH@8P ""#]L@"13$(K_?( 55") TRE0:W7E3(&E(%6p M 0" _HH!OY !\ :0J:S* [2^$;1,U-N726U22I@:,,F6?W%0E9+F5KQ68<7Ko M %=5#W"%!0%/P!)P!=Q!6L"/U-A' 5_ X8 A)O95O$VO0; (.+W_P!LD)?T#n M?P *#([82## .) 54KPFEWSSC>R\;>4/5OQ"+2DEKE+O\C[KKO19\MHNQ2]1m M ].@+STPO=OY#KP?@'Q3G+U]VPHH)5<6/,L@85;P1*LC)V79KT@C!8_!HFNEl M* 5/BJ)K&2P%3R W#E $NE8RM$DM:&* !W#/H@$?P,"KQ\!2NE;RBQDUM3+*k M.[#Z+@$_[C>2!.MRUR\/-@Z@ B1MQ1H ? $3 !JL!N.S\RX?LPO=H;,2A30.j MP 0*U0P@#O Y >^LQ#<^PF,O#3 )+ UJ,*-P)B ,F+!N!#3U$G1@Z,, J.-3#>W+L"4_CVh M\E(IP+ $5.D>!%FNN\$G !9_@GU!:3P)6@R,*PU/P]1P-6P-7\/8<#:L#6_#g f end