Path: utzoo!attcan!uunet!cs.utexas.edu!tut.cis.ohio-state.edu!ucbvax!hplabs!felix!dhw68k!macintosh From: bytebug@dhw68k.cts.com (Roger L. Long) Newsgroups: comp.binaries.mac Subject: Macintosh Technical Notes - 221 NuBus Interrupt Latency Message-ID: <27215@dhw68k.cts.com> Date: 22 Oct 89 02:00:22 GMT Sender: macintosh@dhw68k.cts.com Organization: Wolfskill & Dowling residence; Anaheim, CA (USA) Lines: 190 Approved: bytebug@dhw68k.cts.com (Roger L. Long) [10/89 Macintosh Technical Notes - 221 NuBus Interrupt Latency] Revised by: Cameron Birse October 1989 Written by: Cameron Birse, Mark Baumwell, Rich Collyer December 1988 This Technical Note discusses NuBus interrupt latency, and why, contrary to popular belief, the Macintosh is not a real-time machine. Changes since December 1988: Changed sample code to defer cursor rendering to a deferred task rather than a `pseudo-VBL' task. --- (This file must be converted with BinHex 4.0) :#941-M)a,R0TG!"6593K8dP8)3#3"#"Z!*!%K+e6593K!!%!!#"ZFNaKG3%!N!J #(P41,M)b-5j1G8*eFb"*ER4PFR*eF(3J6'&dC@jMH3!!2XlX!!%!4$I#!%&Hh!" %S@i$EJ%-!#3!!3#3!d3hh&G28N40380"!3#JjYa[S99#l`#3"M2f!*!'(qJ!!1' +!*!'RMF!$!"S"#!!!!)!%[jEq)pI`B3cR!"!06'K$(B!B'9-'!-*!$3!"L3%i0( M5!(D"+$i&qkI1!(j""JCF+3!LJ%1"B`X14)!5T82%j)CD6#!8D)R(M`d@%B*&3" 0`3%D-9)"J!`")28%!'4V6i0H`jiFqc8K#&"FcI)!3!%!KJ#lrXN$3%pZ!'(rZLP NZ$#SA`"p!A3!"J"#`J#UI-S&B'*aAAPhmilNq`q!L*'Ab`*3i3F"Y)3Ra!cJX,M ah-GhHeEQQe!!K`&&'aJ8#)""`VB"'L5NECYY3GN"%eVeA5#"($TcG!F(N!!JS38 !3H6pN!!ald@-HD!H1,Rh4FJp,!q5b+$`T)ki"dc%6(L@j`%+HT!!kYN""+CHN!! *Emj!S2HN#EhpVp6a`aTab20*!J9!-`m-b`hA9P@h!8#%2PmN3%m3KpJcaacf`%' 2$8N!-JBNp"$aKad8!&)0%#[XCmda-Q!"#cfI*'&!$Jmd`FBF*5cb`"6dI+&FElf e*3!$1V89!i8@6R*)*$RZf+-m`0464S$f421!&96@Xm4q3Gac4M!jMT%I"I"m"S! %#4AT%j+q5H!Q%Nc58di)9+*K!!aSj2%"#`,B!X)pHqJ"`AFFHQJ0-[5m8)FpIl" ``(MPL3-)'4"FBSJp+Q3Jcc[+m4BK%LU8DZUTU+DUkUUXYZSUUVV4eK`!cj(kkUf ijUTVV!R0qPaZ1SRUQ`V`I0,'&hCmi-)V#45V"Mdd%&+2%BqX)Fmc+,`"Ji(0IV+ $!eH-Yi!@N6`4DUr1r6BEZV65QN!EEpK44KXZX*&!!LM-!8F++l!3"J`[N!!"!kr -TC[EEQe'Q"X#blRTeF%04jK!!0f!eDX!*Q#XFFBFEq`aa`#F)%8CGU3a4aPNJ#" '(MSN-%3BEC3KaaYZJ#"%'R+FR-!6Bp$aKKJbJa"$$MMNd!!G%IXQ6Tdre)%%&3r 8NBiBLFVM#!A920&'"JRF3d@LLNLaCD0-#2"('aqNB(BE%"Ma`aNB0&#%2G#3!2& &(6MH--m$-$a35cda!#12JTr!-!m!qh`a"3F08&&!$2*m)iBF!N"aJ6el[0##25H !%)Ni[lJ!3$dhm!$"#RJF!%JP-4J!3YKM[e$ffAmH!%)YU3$5"64UJ#*&,%#%25P jjJ&bca3RJ#+(kYIFX)LRS#*F@i3h*2#&%fAF!38GFYc,`K4C6-(#%%`8%B38pql 34KKVP!&#'#UcmFBBDi#3!%E0G+$KrKajc%(([#$3AaMJF+k#YFX#liVA[1TeVhm &$!BXD%'qpN8`Ac(RAN3BJJZBN!#!J8R2JS#a"J"U-!"I!+!"63M#%C)`"#L`-!) "U!`!@N#a!FaUKL3"!"X!S"9D!!!E!1"(!%!3!#)%!!d#1%!5-DE$!14#*#1Ki6J #-)k2@E&M)*X!2Gj3"b%!VaiKL%B3H2!"(D4*HJ``#!AFG)4kF#m%-,$(#r)`$fC p+%Y&J!%p6S#%2q@)$2DBN3QidiCla%%99**(I8k`M!F-33Z[b!1D2N%%$RbJ$IB )!4$QmB%Fc1-41$KMdR$6J'!Pc$F3NjA"#QK"#J6!%963(`LD%)Bah-pRFd#$rHB !!MHmJ3l[!i%FbK!'0V5!$QQ)'3M@0`Bdh+m-,J!"#',T2PVDdJfie#8ChP!'A[S 5Q(1S!acJm)EMJ)!)+BcQ028hc2HeFheZb!-)l"!'1D3K$'*J3cIYKcpC@[1@EmJ P#2)A"Q#ZVhhf!fBbbEQK0166I6i$!4R+m$mjY1&q*N2Q')V*"RQD)3eRU%-lZ3M --Z#KPR6S+!MZS,pqhZm-[+bRqml`KTF1p!d"(#!FbZ!'G4+KQh")`rm'UVq6JF! -+*d$#iJU-rI*P+J"G4p,FGU'1[J2"(#`ULlcjckHbNYq1e@R%FV*9+1D5D4K1%- CZ"K6-XJ,Qb+9Q9*AkMiic+aN%fAU8Gr!"[RG`DEh-d-jeiG-Q[&6VfKi`dk*@Y# %JN"IC8!C,r2!46Q!3!f9G8-CmZ!#hAMJP'f*3"TpXmB)q@#dE3Q#Qe)*fJ$m)3K M-*-Fb'$6L-iVU2EF+"Y!3,)d6030BjKT3GQ*-TA*-`MMe#G[hA#'CmVXT8ZP3ak #UPX31+',9VhT,'X*8)&b,`aZQ!0+df"BC-D-PdMYkf'j#J)F`!!'[34[9-hNKT4 &0!E,6--BCRBbqUC-$Z"9UcU$`)EmFI%-@jAPGB@3!&h)f[+M'beXcFKj5ej'&+R q#eSYJlZKELk9XR9iE',V`)D8dAF1[JdD9ieUhRd1XjJCeHpMlaGFTVE6C1pM`ah #d,r([N'C#T5$!-QJcLRN!EKSQ*NEdU#(fLSBZc'YlhD[Q8d3M%&qp*ZVB#eV8TM "3Cp,h@M0c(49q#diZf2)`j@K@F$9Y[Nf!D$"%c3ld$)dFmPaU!0%dG"B-3H`$'b !!`J8DeiQZqr-&JC`H-dJeehDV`eIRKG2NFPFP@8AbfYiU6UTD@PHqKPS)-"dFEF Fc$QX6ldR!qBEc$"34BZhCq30,`K3F!Ih$G0-EBLCP1'h2M`NX`jY'$5V"5[59S0 h$Sc1@3ULfe)3e-%0SNiCU9mX"c%)&F!59QF5DPE1L9SfSKap`af1'JDFDAC$5a@ USaGD6MU!&jJ4aE4HaC!!A9+(JCHjE(F`@r`qAM)8a3rYl#KrJdBi*i,!ZlAVr,S j"l,H8QCb%#GbhLIP1FK2SGL%Z-4jZ6jjJPTr*4EfX-P+6hZbpAh`H[E%9ch3C,T [C4*0JaQ52@QXeR2PV'B[rc,FKU8f(!3JAUC9JDPCH9RfV0JFG-hZjlphml1L%BF $-)HT,jUGE0-i"EQJ*eV-P3Se`Gedhd6C`11j"MhI*$Dae90X@4"EPJ`&K4qfR5T P'V1K$RReXR,T2I2R9YU`EVGb2D90eX$$hGfEPU9JqbTZQcj9$8-2*U2(cA,f`P1 H1rpIX%YqciIbNUAke@8BqYkcTfYFkU%Z+%r6V)-hSp,eEIP"$AZ5J#8U%BYAr&J !2&#+""J"V(#3!#GYje#r$60mRh33+EGRERSj4(hLT*B'LXq`C!LrHaUcIR(+,YT ANpQCCQ5B3`T3cN9XmV,b,KHV`m2VEZ#@`HFr&V[*LKrEir-5"@P`!65AQXrje8r liLGi060mq+4F$qGm'lGAPR9[3YG-r5Bd0C!!AphAAq!h"pS@AM*$D@F362N%A[9 M"X!RI2-h8-ThIXahJ-q(AQ3P6YSP!a()I@cJIIjPJ36M*Nc3Hf0P83@PJC)AJM& (I#3S"l+fDUb'JJP)DL`B862`AK)BJa4BAc3iF%I3Hd``2m9%"F9%Iaaf-Ti'AMp BJ1jMK&+RJTD9K$JP!c,3K$*BJ3)hF2[3Hd'`)F"Q8i%RKX$%Cr@P6jD&Bc49@cL eBdN(E[@h)8"A@B)h@im@-l5PHKh&E%hPD-AdFqa96pEfA4+QJ-YdEa@95fNJD*8 R5r3f9k$RJ'F9FU"f2mjQ9)h&ALff91#9-UM)ARG36PHe85Hc92,'AU'i91e6"N& 9D8&R"M-6E-EA8-"SL"Xe@fdS,+id#A#)DKIAI#QBEX"eGl49D4Eh5b"J"8,!"0+ iF8Z9@#&(K)2'9CD9M4J(G4ZAH$J@-mG'FEr%6SG)"YA!5hBS6#6e6,2'G1l@9m9 9-[#M10Y'"p[@G(deIQ3&2qLiMGhiMDJh-h9!DHk$Iqc(8Ipi6b#J1"GR"3ACMf` `IK%RDa'&Dj&fLAq92`k*FhUeN!$kp&88Pc*!ieGIq&"%*NhFk)hZ4R`Faf-Uici X9h*jB&2ka&cjih-djP6*T9m&&@YcaB#eTPi-5!EfC(4cj@H[+&&[3)d'Z9Xh19$ hYJC4#!#I06fq)3Qpm4bHi#E2F*B!`!eZ!JMdX!0MB!pa!!L(B$SA%Jcf)$N8m!$ Am3Nim%Nk3"Gb5CH3!,!ThK!+$*!!"4"3!JR3!@[N0B8!"%'3!!-8N!!S*@!!MdN "33!**P!Y"#!'`,-#Bf!!$b!0k2!"G9!*N@-&C0-2-2#CeK)p4+*'!-!"ER))AS) ($d!&($!,I+!'fL%&QF))ha%)F2N1GG!SGI!)UM!mPD)!kX%H9$)LK()2Rm!#$$! &*%!'p`!**H!!AR!2@N!'$b!''K!(h`!SX4!P2,))UK1"B"!%DL!2dR!f%'!2eV! -Fk!XSX3QC0N@ES"D!"!(EZ)"aI)Hm6%IpA%IqE%IrI%Ip"!J!e)JRe"!%Q#E(M! #D"J$,B0S)$#3!+F(6%bJHX#9"`56SEk4![5JR-`*#(KJ!$)4#IVj"'Z3!#$fF3q '!*H6)!MPN58b!!J$&`8eC$%6``LfPd4LXD36d`e3G$&+G(ZjKhXJ3d02e"-E3%9 D@N981U8cj%42#J"C1N9N1U9A4($,!8)18c"83$%"S"-(!!"aZJ8"N!!1-)3@JS! @M"!+!'!*!9%!*`%$I+S*!)!!rd!2)k%"#B%@Q'!39K'RFeUR)N%"ZJ%$+!!!0K! !XK!!m)!@QB!@Pk#RI1UR"J#SV5'S!%#S$%-E!"!&L`S!Q+!E'(#T(!!!$U!!ri4 0!B8'$H#TJeUSrq!1)q'U!-#S+S!"[@PRD,"NeH8%[p40RJUUSrURJIUVKZS3#E& $a3UVZL%"+a!2(l!"2r99LK8d9+#Xc0Te8b"1j(3Fd3S!Pa#R1L%!)!!!2P!`2K! !fB!@MF#[D$%)P9%#2d-&,j!!!%,`#0f5X20J#iM%QhHJ!D#`!Q)3!$R`#-NJ5UT %+aq$TKRl(-94"%j!"+bd5JAhHZX5S"c,,VmbXV5b3Lhd3M(NTeBDTQ0+4@EDT5E !(,-h%K06TMMVTEP4'Fci'kD%XM1,T9YkXfHD!+BL68l,XXp4!8hVY1G8"XN'!N- J8JdR"e!,!%B`Y8iE5cLQF'F!B-%f8FPQBE)d"PUlJR"`H%l@@,kNJhdP6h`f6Mb 9('QD,N3!YY*%"L*P8`[CP5d@690`P(V&YMRMYR"EDAlQEJKeEaA%YhiEDM5cJ3b B!qp9#e0JCkiSCH)BIL*AM[+iN!"f1&IUCM+6fbj*8,Pi5!Eb&&'J"SEDKEBU*N[ Le,JE#'l,9%lZBdXP%i0k8&b&fl9(8,PLkfmc8lB`)dbq5(BFTPGcHfUA033j)`G B#)3R+AVi'*(k5&"dd,9!8,Rmb&&UDf[%Y&YUB,ecJ,eIfEd5qB$`Bl[14laI+A! Gbab9fl8B8,N-PJBKKf[`&(kYYlIY3J#QXVV2m3+9Hfr"pP2*aVjbi!,`d`,b8l8 4I,d8A#pACF&GL`+9'i0Z8$m3,$-5[-%ie3)i9F*b)-%+I"!*E-$2dD4K@RY4UV4 8UV2m!"Xm'`$QX+4!6(Y&fX2#X$&","C"1h#(dE84F#p12!98)!9*i!4(N!!!36! &56!&AIX!6R`[8#$&6N!&1f-%4Y#e&p$$&j&-&4&!%)(!#9!"JF'#"BA!#r)[ 'DX`%E1c'*f"NFe!%H8E"GLc$YSV'Acc&B[`%6[$#V'9!ch'mZT)V)&!%f#3(mK6 *Z0+eM@a"#d$*h*-(#C!!3P1Xb9ZF!*-6"Li`"rILbCBX!k6m3HN#bCMF+V18"a# F[I8cbkhbbS5X!,JX"'A3A'l``VKUbeD,bicFY5#!34V%36#3!!!l%!G-F$reJ`+ [Udm`+8p2-!8Tm-)YN`!Cj!*Ad%(3(!G8-&d6@3Cj"J)hX&3I*@AjJf2dG(GK@$0 0!!9A!!*"X'eAKRIGe-f%,!2-,-lN[!0N3!HrPeEh4h8b)bpNX&6Ej!BRB&!-jh8 SH3,c!Y$jf`-$lFc3I0""3!C51@X8PR(IKP-S93GG"j(a+lYe*60ETSJ!6FK$d0% &IG"38%r"PLe5&fYG"`Ie"$-8*62-KQ0G"QR+Y8hG*0(!C&9K5!FcREp"B022E0" d-$)R)`F12@YSCiVZ-l`cXe6Kl)h`"ERlP)`qQA0m"Y@mR,rEf6m5M-b%R!#XR!F #R3"GD`*emL)a-L0QB!rA%%N2J!4Nm!PhJ#PJ*%CN0#5Jp5C*XK8J-!$SN!#b!IS 2ILV,ZT`UYEbqei[,)*!!fDV5eLTE'df3!!HFhEjblGE@)`5BeJ3+T-"GQ`-*S%p KF#qPIFYIk5r2R$iP$@miCBMd1dcfpEk!*QRBe,8lN!"!mX*!#H$(FChE)#h5FS! #rj)#d*aUcLCS[DeL1-A5cp5e,U$Fd(3(pc)#"ad&jla6,($3k9d'e!d$eRhG&!8 #H9B'HMC3k2c#)Q!p4%!&(FP4D,`$jDYHV2L9,ia!m,,Fj*d!)i$,KcZmkqe"qGX 6C4!%q%!9&d!1PM%5#)$,P%`'b3c,lB,CS+hCGCf'*4lD)Vkb+`i!dr59$ei'G"d &9A![(PjI,I$,`A`r,b`"D!c00Y2DVbh$&P66#3j0pX,J$QjS%Ciq5ckm)0!$'!a apJZ%aDeVG,"8-r0M#YLe"4[J`E6GPS8#%991)(8rAAIDlNYmbrD5A9X"2li$KUM QFNh)+L$Hc2d[,%$RAjNqfMARcdem#Na-"%6)XLd'QTA+pa)%BY"Z6V`$[S52A,k +XV4YEK#1a%4ihbC,m+4@A0[L!RhNH3j"BA$Ad%a6`!3r028'+52Q["KCJJBrCK* m,d`$H*lNHKi'-I$Sra,P2LC5`H@+q#AP%q8rD(k*@rE#Km%!YK%!c&i3cqi9qHX $Xde-YQh,4@!%Z+cEk62VX5Y,1EN'5d94Ba"0!,@5rD0jIcC!bMi5C8!%6%!9'#! 3Q8'@8%&JpDVA(b%+"Q%EYP(Ke&#[!H!4$-$[di-"8!%%@,!#"6%84Q$`cc(9Y(d [jed%E"$Me#d$brB[d(cNJfC2`TcQJ9irB[jd[be5A8[K3X!-'+lKQE(YlfhG1i" 90@A5!F4AhYDe06ha#9$a&fpS+d!$'Era96e-AeC,lX2R3&Mbfa[Q09p4AIX%Ac$ e9&re9Rre@*re@VreA0re$5!3c,KEi,YFiCF-$5#dSlh*kE)$GH)N8+)MlpNP9r) S@X)P9I)Pp4!'3K#F$b!&%Q!%C0)%CR)'D2)C!1SQ4r,BFR)Erq1+8GC[[J8!8Yr eP&rjPRrj@2reSi3!X0$b'ekbVL3'frCB`,BqP[aKA#5!hb44[XK6+@0B,fC-r,C 6FK$6i&9M,-96aVCS%'G6K`Fr3%-(YDEl)(U9l*@VfD4Y#Q@2N!$@ENiA83U(9rY 6"c1RAfP3FhbAE$C9AQXlH0S9EZ0'DZc&HEGIcbQCH[pcSMieP8'M@cXLJ$fCLX5 ,8a0984G&Cj1BFNR(FVrr2[3%`,6,THdqC%2P(YT,'S"T#rk"Q[@49``,r+"pj)@ fM!'9F@p-"[jUE)fX5!5!&$!bBNBE!"SR,5[0'2HM9bB0cYJIk3k!i*LI)d##Pcb a3be!+U@"Yj*ZPYmmN4Rbj0N)SqZAKca+3SSR0!1Ld$q63EY1e`%dDi2'k1J9CZ* -k!bTN4q9"J+b1K28FQ+'6kPj'qMR&"0i8@Cd60PaAZ'N`0LMQU'3!1l1'@JZ!X@ Tl5'6KP5#RBq*'I'XdS`LAB*MV)T+UeZp4"XpTGebDmV!$#`Z-)HpU-&Pe&V%3,' J!V'J!@L"8R!2lX$E@%`3)"5JJ!H3!!IZaQB5!,'!!8JQ)(!2[)!P1!&[J`$FM4- 3!ml6Gl)&BZ*Yf)lb`#Fd%f6U6,**(S#$hR3,!-%bQ%Yai!'d!3Z!!`)&#'J4E-" 4U!&05!8Q8f@k6"d#$cJ!V+%e-X!$Z!0b!"E-J4"!"$SK#JJ!0S"6H!TJ3#Mi!#a 3!i`3$f$#!X!-[-BBJ3"GS!#X!!S!RFc$)a!Gp%!5))"D3*iJ35BC!&)J!rM#G3J "BK3#1!@B3`9m*c'4)93!"0!'I-!Ha))Mm$B54)Yi"Nk$#KJ!qK!%(N%G%!8*!P& d#06K'QE"(iJ$pb!+I!VBNkVN`a$J%(r!M(`#4,J-XdBE'!2"S!(mJ62J06!!!j! !!aRJ!-!!e$'F)!#QX!FQ)""!JLP!$)1!$("228)ACJ%0m!Kf!#Em6TJL!N%+[$- '3S!qK!*"3$r0!8b)!(i-"%J1pd!+H)hmY*rQ!!BBLDH%3#%!0q%&-*pEI)Y`m5d 5$!Ha&CaGEbJ)%f!#i%@pD"H*`V2VLhfa06!!3I!Q##0JI(C(SK"!1pZ3!"JAijX J")la5%$'`2JB(@0I2"+$!!!8!!E3!!6"B'5-$#!c,M[3Q"NTBf1NM!&J!5b!JU! D@H0U6)f[X6A#4YG)'fHMEC50Z$%fkXEDQ"YjifkmMEqa0`*(hdJFKk0a&)l)-6J Uaq+B(*RMFMb1cl%j3NIR5"fRSh@8MUea0$T'l5JC)b-$Q)ar-6`fZfKR'FAMGLb 2Gr')UFIeb"lEShYmMr!a2XV(q8JIkq0m,!0#!!b%J*!!`!SqhcrSM`QK`L%#-,! Qc%%!'!l6ibRJ4aL`(`H!)kJ0Sm"L%-J+K`hf)`-`!TDK$1J%[6JKK`!!S!S43"m !!"43#MBN!*J$8'%)-!#'&`'N`BJXNG2$%+4)"%!9"J"DB!!4FL4)!UJJ"#lFQQ! #Rfpkl%Mmb2*#JM-!!$)J4pS'6m!MB3($+`#B!!!`!58*!"*$'3!#T)!U")#eJ#- YKLe)H-aJ2dS!0f!CaS""3(KIXJ`-!86!)Vd!!+!$Sb!K),`MqHi!!-2E$`"!$F6 *kI($+K`kU&FK3#0S!5Sj&r!M!DL4K,&,!S#ei!p5*#LJ#JC!!33!@,!RdmKJZT+ BJ#SF!&d!)3d#$`J!'2,GJ3&0D3`#J#*3NJ'!-+T*F%!9%J!8k*3!!!Dm%UK3"0" !Uq3#!F!(S%S6SLC*!&93!)4+8FT+C3!9EX#("!!+`"3%!%U!+N9N'5J#()!U-)$ "T#KpJN$!MkL!+NJ!V9$[B)!!Z*C#J"9)5c33!&#!NK3!0J!UD$ZUd!#dJK8iPd+ !4i)!G[R$T%#1*!%#3#*81&T!&4`!$JJ!"L"(qJ!")!G5*$@J#JmJApN#(SB[08+ &S`F-$b&8b4bC%%K!!(L@m'!r&J!X8#El(3#`Q-pbAQT'$DFS58#X[*K#!"F`2"- !'He!T33!E8T08S%DLI!B`"13!*!!+*-)D%YCB"Pbj&S!!aFc#)!"KPF#r*3lS*+ F!'9LJhT&!EJNaC`)&h-)J!#0Q5j&3!J`#+X4&9a-)"$[I))a!!"5)!GJ63!`#k) Q"U!+&!"483#a#3"@SbqiQ$3!'P#&#X!`3!$EA)h*)'L5JlPjUD$!h33!e'"V(XX +J!F!J"2iQpm!CF+"ZINe$qIB9!FAm`B`!+TJ!GS#&ILEp3"P8J$+#4,#*YBX#[J 4$e"16UN%lQCU$*Sc%`"F!)5`0MqR"GLDE!$$)6`4B$U[CS@,PUTc-$N!dmN#YLB Z`(!H33HBcKY`-BX!'F"`K&%'Q%iK%$3lRqVd)E[cFcD"S2NSI3,5m*aY-`"JJBY T"!K![F)!kC)"Q%icL4m$RPZ)Pac!G,U"V3N0[UHEe!#Q-`p`6`E`23XRlIbFK1" L%J%Xm$d*eIh-RSp!Iq+!lmN,h),Te!4"%jLi"@T3'daR+8#C31"lJJ1`D6TKJIl %!28U!mL!"[SjGd(aK!!Cp&jC!00C+Y8N2-LJ6d&mIXjSX$8j3!BPN!$`mh0b!j3 *#M+S(Z#JfI-FS%`%N!""C56fA!!"!$+S5AU3!%'"L!V0R[dJD$+#$+VK@QIE&!! )!'AZPUZ!$pM#h43!%b"UiS&kT3(mh4Ae!&Y6d!!!$B$`9-!963&4dhZ1dAK*"+i S$H#HBP3$b%JHF%9PMjS%"Pa8'*!!K#ZU"23R&DKA'm!U1-iR@J@L*LF!T"b6#9a 4S2RZ5!!J*38iG!%)J$@`0D%!)08))a4V#J!lX$ArU'Dd$Dhc(b`$!4!)8#Epe)c e+T1fcGDJ*QP![4S!9L#52P%e536U&3Ii,$p8Bq((TA+Ei)!X$3%#!$m5dG[%"fM &h`38&3i5e#X#J"(XjYLm!F&d#%63fm3cfqMB&!,"e!KBdYYN$lc@hf`#dC3Ce+X 1X"D+aYM%!Y%8"Ba6T-%#rZBBL+B8i*@+!4Ih0pe!-"8#b%$J238)m$Ic3$!0!S4 JR"Uq[dN)XZN!C3XTp'mqJQ"D",M!1"9@Z9364&2qb4EUe4&GM5AbhDP6X33NcHM BK!A4e)@Z#3Ck83(!,VLRKe4-I8dRZKU036!&!X5JARN!2c9)9f-dL+Cr8LaT11% j0VR"5`fS!1!$I"CRZNV2`6f0U3FK-3L"[bN2lLNLU&FI`!p)L,rC$qiT0i#UHT5 1INi%%%b*!!J0USh5"jM1#I"2!B&-Y31hbA4kJ(Zk4&dFad3#TP0YU%PP+KM3!P% &SM6JRJ*9$V!M95N3r3%[eD&U4SG`831!%[LRI+"HJ3"a)#90Ca@)TXMJ8Jd!NkN m2bFBH+Q8!&$1djSD!0E!288#829Hd3$6D3IqU@!Y!2!JNJD!3("2Ca8!Q!#TeD0 Q6b6e,0N"db53!)Ae%[c6%mS@@%"KB*X&344%8eL`(bN!@K8"CV)f"!$KqLc2*PX JH+M5&Ec8SHN6D!"AS*J"3"IF8`K3A+-NFZehf6@BdJ"NJ$DrTV!-!#le5R)$UL! #)#FE3*Afi*pQbYYN')5P!,L[cj*'IXb*4321T3ciTj4!hPdU4BNN"QD&mj9XJ9- 5@!&`@2%M#AL50e3$M!+GJ#5X3&FpT5*!UJj+X#!!a-!ra3A&e89qepV3BHmT1f" i!3"4!B&++3$XDB8M!`a2"2K@)X"LpF!pj3!-E`0S!`$J!PLX)ELR8!$&mN`KX#G pJL6iTkKJ2ei!26TLNF54VA!L-`!`L!AV#IiT0'"i%Z!bU!$XUJ*'!Qd)!!"b13` !3L8p#J!P'!N5d`!`M0D3!"!N`!59(K4!@b&,1@PGfHaYUP9fPJ03"1'3!"!k!'- p*4kJ+`$D(CN3*1B(+*LR"!5mbS5`CN(!Qr8*#5%%L)k%8'G&!),-$#)!L,6CLKP ,6mN-L+q6c33!CVF!!!: ---