From: Michael P. McLaughlin, mpmcl@mitre.org Subject: RandomNumberLib UltraLibU -- A pseudo-random-number library for Macintosh platforms This library is a new C/Assembly implementation of the Ultra PRNG developed by Marsaglia, et al. (see leading reference in source). It is designed primarily for Macintosh platforms and replaces an earlier (non-PPC) library, by this author, that is currently available in a number of public archives. UltraLibU contains one low-level assembly routine, in a conditional-compilation block, for MC68020 (and higher) or PowerPC processors. (Note: Pure C source for this routine is already available in the usual Internet archives.) The assembly syntax is that of Metrowerks' CodeWarrior but adaptation to other compilers should be trivial. The library contains 14 functions returning random numbers in various formats, from Booleans to Gaussians, as well as ancillary functions to initialize the PRNG and to save/restore its context (to reproduce a sequence exactly). This PRNG is HIGHLY RANDOM, even at the bit level, VERY FAST and has an extremely long period (> 10^356). (This file must be converted with BinHex 4.0) :%e*KEQ4[E8jeE@*PFNaTBLjcDA3!8dP84&0*9#%"!!!!,3!!!!!!e196593K!!% !!#d!FNaKG3,%!!!!&NP1)#!*9@adFQ&-D@*9!!!!!!!!!!!!!!!!!!!!!!!!!!! !!1E-!!!!k3'8!@d$@!!!!!8!!!!!!!!!!!!!!!!!!!#'!!!#)2rrrrm"!+e)j9f YBG"e!!!!!!!!D1S!!!!!!!!XHJ!!!!!!!!!!!!$mKJd0$P*&384045"'59*69#% K!!!!!!!!!!!!!!!!!!!!!!"#k3!!!!!!!!!!!!!!!!!!!!!!&J!!"c!!!!!@!!! "Y&4&@&4dG(Kd%3#Y50SMV9RLKJ!!!8`!!!X4!!!!r3!!"6eNX2b%!!!!!!!!FG% 4!!JFc(F)SY,`BRDGKpr4YaE18kpXQC`c"[8YfU)k`Ji@&+jC(FAQljU8N!$S6m* YfRF0KXU@a4l`3#LTCdM+)E+3!&2!8XPC$NNm8Z$8Np[G9aiJVf-RRI`SQ0Dl'Ri FU3Ff4lPblbC(RR(%p#ea('V9GRLSMNFpQjkR5(-I&$bF1GUQ`SlR1iMR,P[a*8q V0J9pIT4DH2Lq'("4e"JZ3+f5KQI913+PjaqHK5'Q+4bDe,G#haj(G%,+-hcIeqT N)HBib4LfEfcAPNhKJD3@ZBUeb1PXNQG1!#!1mN#X`mACBb8[Jq3Ie,03SU03U!f 3!#Q(TTZX)D9-9YE3b4B!#k)!6j!!!8a'HcebkdRaA6RJ%NiBi5XcHmQa0Ejb1ZL 5--+2(-$U!DqHA)#m1-"A&N%rHS%!VZ[V0SY`F[c*F6,J4mDF))4,q%TZe3-k,i" EjDei*CHh41-adB`DafeKaPES`Y4MhGC,YU6NdJTl6bYMD5jbUEea&69+H*bSAC, F90,YEX%R3CV[k1aJjKcA5i8cGD1iCZf&PdD6@C'[Q'*k@PaG[U##eka-``8Ylj( 41P%U+8E%RS4+DH#B5E%ST#l*mSSYkja*DR+QY6N28k),(k)Al'5TND1aXKC@)[` IY4%k4KCmccPm*"C@5G3pd%D2&iZciEE585M&Kij&kbYM4rJSBYUmY@M#)k4B#kR %8X95d(p($STZfU@513QE9h,0,Nf52A5j!4&51c)DpCUlX3SBN!$BBQ00kkAQ8CF *Ya8bm#281$GeJlb4TU8bqIY49r2Cm@Nfc@J3ZUeN@E%G%XiYc"hEa4QJ-#ME'HX !c1$5H(j-LpBbRI8Ja45akMjla&PCS2Hji`"`keUKk%*lYMU3!,VYH%KdJq1l(Yd pHYk%+"%F8$&REd-Rlphrk-`8r%CB+ihpqQEqK*BYSK5Lk@AK$4Q%YHJrG-l@NDY -Uk!+*QrP@X)35A,&2lI54XQiadPb,Z1G`(V("*VG)V(M)-!""If#4jV-J-3f-0d K6)M5&iS6(5Em%+4eA+#'4BIlUY9jD#p8FE,r#YrieZTJX6ANC&SANX"&3+,9-Rb $"h4jJ)DYMhF)cbkCl#,33i5RaX#*HRr0p,HNJj8b`JrTGT!!M5E$U,hpNI%NR2N l3@&3+rmr`[l-j`brPl@0I)Q1K4V8l3LLVXAqARV('j(l%@N$rKZ3!,@"`6hrm&H Jmdd$I@S2$5$93jir!he-",e)$Dd+*6r!*f#kYriR&R#,%fXS,@i'j`fF'HjbN!! 8)1i(6C`blh!ACS8e43ZI#R)38e`VX3eeMrMA$HF)6#['lBJ$5EcHYLD3!1cPaBZ AVpl5eHcbfEGcQ$VZUaJ1PJRc+TM*Y1LLC-e@S)lB6"rDpI1Mefe)e!dk`Vb!aA` XDbNp*KAf"J,1dDGC-jD08'TlfJA0XmLV,9)256USIQTGPk8fq!#Hj8VQ3[Yi1f4 i[Z%F+`+8SErAjeG[kIRXqJDV,Lh68G,V#k#1adq)+%Z2Mf+0@6SpT&VQeMJ1SmG e,5#'S1pD8@!dRQCC[#UD'q11[MV+XS2*0"X&2*Xdk65$E&fikD-dShMM0$ejp'q iGi%ra5$#bcUi5%Rd[eZM)$c-Rhqm'mR#Z$6`%`K5B62K,aC&A&,58JfXT(-LV,% lFHqSLMS+#!YNRajea)E"D5%A&k$6"YGkM$1Uc"djm0#ah6N8i9@,X8CdbGeBkXi jqX$@J0l3BF0B+8ARYl"hIr81Eh*Q8$6*IM`m1XDeibmJr2S(KdENldA*qa8GZPd CK5%GQ&aKZJ@c$Q*ciHY`2lh6('ESIMLrFhjr`feDlBk('m,M!+CIh"K8B3Z("EJ 2G(Z$4E"20""iKDLa'R!db1m!J2[JjY++qY19Q0LTX@AI!@m`#cbH,R#X`3EZ4mA (fdIG&(h`9#HJiCF5X&X%f6!9f0Qj$c+)DcZD$4[(5SM-FLPXI+EC2h0iNb4cQ9F #EaZ,P1Ej+p'@PC)kQ9rFA*hM!F!fTQ-PQ9r6Qm2$Nf4bLXRq$$"cH!mUT)22RUS e*MDZafSBdHXCY$kGC02N0Ve1Cd&BFF[3i#3l(0,TkH(ij2MS0(Nqqcj5Z6XeQ4j 0N[-DEaP%G92RkTYDHXZ"a13r!!d0#e9XG(*K6'PL95jM9#%K!!!!!!!!!!!!!!! !!!!!!!!S#`!!!!!!!!!!!!!!!!!!!!!!KJ!!(F)!!!!@!!!!!&4&@&4$9dP&%3# Y-m"JV@'mj`!!!CS!!$Xh!!!!k3!!&6QRFT85!!!!!!!!XE-4!!JFe"b#'-M%M0) `lNGaeCTaj52pFCMfMc!DVYbR9HHZR4+5mhC,Pi*dL[6VjN[aJ!G#56e$VAZd6bV NK10,1qchJ6S6q`)dDH#d[S@&dbRZaf9+QY1jBdJ+MFS)CjQBI$G$IGeD96#Z@49 (I05()aR4G*T"QFbF9i)Pbq@cFq8ql4+#IC*kYNi+K0Th6JlLq,MbP)8MrH1F396 )jqH-T2"2"m2RJ"MB!R*lA[&F2)YrJ&ci&%#GcE,4[#1@3l4Jh43m1@KDiGk13Kf 0q!2"VSiQqAZdDZ9`Am`8T@E9j+FD,DLe53!!!!e19r*iJJ`!IT,EC,h#GfQ$l,U mj@Kq%8SfcGadX&Qh52K*m$h!qV,`JcK!6qhDZK$dFB,q19$A0FJD01Q+hIBLbi! -&R,,53DF,13AmJYKC&N*2Ea!1HR@ehlq#5(1$Nk2Y`qmi9Npp-kPLPfrJ9I[i#c VG1E&!RpFmF3GH@%5aE2e*e%5UFKhK4I-I4R)-(%6,`T&0"(*6)Sc2e'ZQ-Fb(8G 0jBEM+,$#0"K+*DBbP-S&ZQJf"B2&`*E0D0,%akDV%Z('0)IMV'pe@TCe,#G5bA! NBb"D9Qe(5B+r9cY5dD3P[T54QNT3!aUR[ZF+6#YfSZBL8Yq"@UZ'hkkF*bfDkB4 SLK0[T0mppL2PM9eq"Y+d',cNNKpMdQJXaI$bAQeAYF36Ec4cT5q1m'Pdi+E6QHq &$24Nrr4i$b1VH34LS3,pkN3mkhB(r-hCl,6&EZ6lmK*%MEdB5RRNRipE'QPd)0h 3&RrF&U,6FGSG-cjqHmh!pIal)TJ()rmI!bp4XJ@k$F#4,peB#RIdA4JYI$Q'$%K 2a$b4(H'MLN'J!-kj&dla'M+H5AF-(8,)lLJ"!pCIV1,[2``$BTUVRi"%5I+q1*D "Ulk,"A4Fr3J8,L2&L!5hJ2`AbNX5'B)NFKfCU'JKJIbMN!$KZDHLN!!-Ki812NG 4-)IXKMkJ[@4Qe56q!m%EQlmApBh00U4(5$0[LPF0!H-jSQQ1GTE$a#eV1ijP-25 K&MHFTLl%4%bNX4b,#8#M%2b!&Qm%*[eSdI6P1HaJNSBMdRb,E$+FaL+*J*Z-CL* +%`Ef`T'IJPH5jJ3H%#f!F`p'&RX[C65TMk-8h$8b+MeIUQBdCcFGblN-abAAB&# +0)cRFZ402%N'FK$4e24qiNGZJNq!k%(eL35TYC0CT-bM6[l)UMdfY-9#b549)EN $[bCp$$f$1&Hb1A,MK%L0D4$'2TC6H#KC5aJP)RE2jIJH+aq+JeHfQlXG@fbhQpX 15+iG(HhFUkPZ8cPY!RQfIAbiIrMPCd)mJ[1R'"+c'GkC4C@'1MkFR8T-$JHiM&) &+F5HJK4,cB+-lAJN9H)#**QjL8D#lZD3!"jP&T)1ka8cmNb8H@LX&N$)5'e3-*r l8**9)r23$MQ(Sd,r,8YS&liaY&-[B+hI'"QlQ,b3!+18pCYi!44&*X$Lcc@A$Fd LLk0!,SLpFeGj,YNBC'$45cJ(XJiC%$am!VH1S,NiKEI!Q%EZ#$0&5#c3rB+P-eI 49,Q"L18d6f6N5p#B)@`S'3Zc3E@+21lFp92$N8Y*,"blDP`%2I'(e"dMbQfffcp D0+1Vh4-!BU[IEUmlRID2,5L#h9Zl&rYQBGTLjpRQMfc08)$[@q4YJIG5jd@D'fj '8X"`3d3@PJSdLh3e&8%d6Sd[j2SP5q$Bk!E5-P5$!6KpVbdq2m4Fje)JfH%$*ML +316RKC8EF!S(F$C*e%8@Y1Aj(SG!6K1+%PTX9e53!0)S1SNkc-39jj%(ac@+eZb 'N39SX%,Hf"!cM$b8#$&a1J4eS`66Nqd)m6AC9#E*`,d8Bfq#M)ZX#l-4)[0QXKl 1Kpj)4E%F4H%BhJ4plB!5$C9"d!q8iMrB,D)m6m++HHiM(h3l'BM6kZ1rGU[$`E4 %F24l6&4"&#MXrmj'"L1!dpBi[@X3`Vm'kCD8--TQ2R#l04KS%1FD)c@d#3)K%Pq $%,DC&L#'1k,cHZ+FBJ,D-%",AY,3bqHYp9UDP(kTP2-9!&')56MQ')4a0F0'UmF 3@b9RifU)(+&G$K&'+XJ%LdUJaaVUY!DPd16&2#SK0PY%EUI9"jfI%%MckjCe*`Z [A`4Z-Q[0(PT@R+KdP)JrmqMVDa5Y&")9p6DkpCQS+)""8LF4`J#RAXMT%Z28DKa 4#IKXkUCaI"p2N!"Q[@N)Eb3EUTdp2MRq8hI`MAefmZb4rM"8#rXX4N4`p,mG3Q8 `QS1b+MeJKHXAP`P![B4HSE*4p'MYE*iS2(LP1AU1*J*CAkVla'#hBq)bF@6T1*i ,V40ZG1hX8aF8Q%q$qeC"*Vr4M,)Q&)S1MeN["+hM(4)'KVcLR$%biRQ!L4FLYHV L61MLM0PKd@Qm6"q-Pd@-*J@4jM"5b&jC%&l"NTUdF%e0SX&3P2bHZj&r0Yq4)aT Ad&U$HPjm3XBl1cQ&`T'T8)Zi2ZU-X8j#YlJG,3cm61"m+0S%NqYBNd0LeZc3*dk (5`-Ra%,S'K*UeiKhM)Kp1H(DS*,9Y3TJ$cNU6ES#j5G!,1b$Rj'(D&58&#c[1D9 ,L#MV&hKF(YCDAc1cSVrdI,r1"3m(bJMa'r@FGXXke(&9A[k6'e!Gk'aY1EC9qha E(-U&f2(GQ'[4Bfd+KlT0eG8D&31ISh-*i4S-XQhk"95N3hG)fIB5Sja(INXip@l $&Vh14V1hf@kda(i#Zb+'BN1K-4Ca6R5mG4BdMmH(Aa+C&'k45&%#)k"53abNIZ* KpT'1iFLX8j95#`-ldk!4e46MG#5YPI'*a3`0DeD0B"EIVpTN8b1A(CEZ(+!re(H jS)`#UH,Bq`Upl*1pJkq0NGS#M4d+4G4C3)E'SAT8H"!'U@lli-!8Ar1jG&R5X,B -QCUZ&bNeBB!1)R`J"dF(0h,4cK%Z+#!d4JMiaCaUp+-9i4HdY,dEXRNllffj rSfA-BNdF)AGi)j*X%L@AFiSM[f8fXP5M"Chpkihl0imFHU5pY(,B$AThqkcr$Ql c,GTQq[ECi2h)r)bcP(Q'#%e[PNq3!*NC4SFcmiLb0VeD2FUJP[#8[qVk3C!!f[S $p"Zi9f05UXjaD)K(8B6Z2)X&qmJj2"ZA2mBY8D4KI8$a`r,GXD6L+(qT&DkmFdU !ZF6r4q(9Q$TFk!Nr+C!!qbGM14(2RampIEChI,6cr,Pe"`qm80CiGq64mE0Dqq+ aq9PZM(Kl5iVeCdVULjFep,mQ1#0qkS!VU5+IqSJR[R$(Be3)&##i1cKpZU2MQSE H-0$)*IQERYfZUfl$9"!QXaT3&ir8`1jYeY8')3$JGd@bF6SQ#q)2XJfJqMEr-E1 -S(Gi0"),%J3f+FBD,D!FU$B0$J2"eLRkkD'TdX%Be22%bJA(S)MqC'0448+jlkZ piapfYR-'01kQc4eDN!#-%SbT0R-@HhDc4baDCmI12D)HICMDX[&Qd-Lei,6T3Bm HJ0!*UJY!d#ZeC@EI%Xd(!Lrdf('bb-GJe1%iI(NAbILBf00%$fbPQlj+2%ZZ0ff RqjDc3F&Cjj-)R(@S0rYJ#Zk8eJ0i#[K-3+0QZZ4"qq+"i'+K9JXPZJJ@VKljCUB 33E`dQjcc$F1j%3cj60-a2U1j'4J63cV0hr60'p3+*BGPej+c-#!@qKN,m"+*d(j E3@#iP3F5+`2$#[AA2VVQfdKZ9"eVAHU@P-D%q"k)MDhfaPBZ(dLI9BUrhAkA$## M%J6e-S*+#PH@`HY3K@@F(AGA$X%+SJPbXd'Ii*-#Y%Nl9)4H$eKaG"(4D2!5r1P I'3FVJ9`h0`mL8#YX45$YY&4$8K%9bJ[%Ifad[0%e@SPP$1KaZie*HQ[G39%ZdV5 cE&T0"qZj+0!dbY"AeL[VM[4Mq5ChYFh[Bqi+X"p#Z,`"49Eej1NIpeS(YHf1hDb I(1@@4LXm)c36L'-mqm(HGPNafYYShA2&NE'eMDma6Vp6hqidl'dbM3V&k4SBQ[S 2YGUGYVe,iUh#%!5&p5CZBKMVj1`4##U,bPfX$186G,Vf,ZmaB!)dYVSE`[SES$N H'AlVfdlMES(-,d$4,VNT"[`+$hDGk[eZfbD)ZhLaqqJBV'*r5BHKDbh3Qi`1Te2 3iA5[k%$bq@mk-QfmEA*c*Ih-&Zd-,U9@iI'`flZlA`&X1HX8-F*-Q'Z`3&d&G[b S*@0Rc,$Hb+0mJcJ#qkLF*`mmYmChR@H@E#cljb@hGpMj`Hqr4ja-(pf03VP`jj9 bN8JUjC,@#2[Xi+adMVfRaq48ll4)UH*D4XaGN5e-mI%k9K!`Z8Y[XdJ@edQ#bqU P2XM2ll*99rl+%-HR*j`P3L`CPDed9JfDr6rUELGB5fV5K,3E+UG5fH,X6mf1da[ d0VXE)#6r02L'Hf1X,U%mKAl3KDKBfP5BCZZ#eBU$,MPI&j189*4C*f3NI)e4)@0 9`kTj%e(205#q%,h'6HPPi*!!8pIUGCj[,31"b4"!rP(FI5"kpmeM'JMp3SmR)2l VHK!J[VS@#3V+AdA5ANRM$GQBiY-6C)[ILIE&`(4i9mcREA"*IE+)EZfKfaPX)0M M[icjYk9ba6frqN"qjaIbpBJIfHpFX8pE3aqNR[IF[a#1iZ-MejMJ8a4FjdTr3cT +r&p&lR43ph@)G,*pa%C#-Q[p08DME%M@MkAEFPZBpN+a""&K+8+[HqV%VrGJ+"p 3lX6La!kf,HAhP0Mm5jZfH(NVm[$TUBN60%5qDlN-&ccQ1RXK,p*N`XMh%26'+pC FhUS9e2qA@*d2BY95aGC8X5ed*96R5UM1[jN5drLV+AAkID01E0ISr4+XRp+"JLZ P$l%4aKfh&L&YaA1U""BNJ29@a$QY8Rd`S06TH`f"RNp0L)MGlThAB3IPEe,54[H @Dm"rNS$UHX'e-HSEKrr01&E"p6hChpM#DmQ@$B4XfF8X+X+AB5HdaC*YKZ@G!Hr TQmR-,K9F(JF5X$L$59&Qr"52rP0!#"*I2"$YKJ"JZ4m)i9`[0jA2mET,mHI9VFk +Z@)SXph)9[QBapcPZ$3TN5#qe@kL4SeR(MSB,Q+`Qdr89lM0jLm#jG@PYl8#Vap "R(@)%iYk[%rj%*QZEe3fSDX-)bqQhAkGVkaDrS,2Y+$ha9iE(`fJp6J[6+(K5i( QL$IL5E$31IXl6BcDaXiflE"iL2XSX8[DRiLKH!!"`L$iQS+5FpmGC5ZH,Lp$P$Y jE!Sd`aKF"#LhZ-J$UMZQa6Qq9F&TN!!$bTJZ2m3HV3ZkSBc5'!6*N!$Z3C!!Ska @`6!TLVeF,#qPLV5ph#b09GjL&RQafjpE"Qh`XM#A*8c0TAqAcmb++@+3!(,CP4K KC6bmYXCfT4p$SLMQ(9h-CmUZkf@b4KdNV$&1Je#TpU[cG!rDpcr6Bm,QFR0C)#T `-Bmq$AlXK9J!m+!`2iVQZY5ML)EPdBb4BVm16iP`,%@8LmVNKTUP(q#'ZMYUm!3 0m38DL*k1*ApKE1PF[&rh9qGU1S9eCCFDX2(P!T)@1f&BZ1D"@bT$1[X`4'YE,[U bMPRHYGX0`2r9YqhMhJ+PJ8+P(b92bME5[JiF$4)lMd20m%HPd`D(S&'DZ8[m"r" lLrK0qLZ6dP2mc3lq5NpZ+!q%CKC[rZi`cCmY4Lpf&PFrc&*R&Y@dm*Y&k1%JDr# dq9!9JZk$liR3Q3rFmU$B)2C2U,L5335l`XTbl1RGD(h!"&)Y6V6Sqb[8JqMl2eB YQ@((@83Mc--)#ejrjTALj5l`a*YUQm-!j1%bM(!VLJLCF,-9STa"%[VkD-m3LIb &6SDJp(GX,1cYl*rX2chN!b6`IijI!GepQD!1dlYH1'D5j8fYPYa"Y9Db3SkZE0' 0,QrNS9`M&#bjQUmk4EhHUG8qbfTG44l69*!!ciUl%(V9mQGG4qk61GT'9b[mpDE ZZe'"rRqMjQE#ZlmI!mYK(8["HKdBSB92,!@ThRDK4kaN#0'U"G51m,[X6XjBBNZ H$-2'J2%F0BS*dMJ%3fHEjY%mp4R!h-JK0T!!M8h&JL5NH6'RJ13&0RrdXMQfd&9 dJ5#0)JB(fjC83[TC)k1e(NFd-aN@R@4#(9!i'r&"MXG9#)p(3IYl0!*N)N'+f3l *$$Pc9k`(Y1f1F`+d"Smm3P+"LaBf&GpQm0@DYCDARQD9h2JK"6GEaGrEjijpMXV '4+jc*imfI&#M)6j$D'P4E1&X[-q0%lLQcSAkPhr3LEL%T*!!ek*dPaN,8l#'bHl UY@k+,q1)Fe!jVPNFaj[1l4X3K8IRMTlL[,0'P1'F#)i@`0$Up"cK#YGZ1,aa*)f raqThXp0UVrR4P"!Dkr42AZePA&%-`M4Cq+H&FRdZbP03i#(h3-aaa5DMCS`Dk++ @dl'E6`Da6*H'b%[Z(`ea$`LKATq#09+BiXX'f@dMQp90[90qVqPIR2'$)p)1%GN -p4c'Bm58c[Y4aTPKT(GGcfT0[d`3c5"PXC@jk$TEP[[kCF#XY[AeLTB@%bp5DA1 A5)Bi&i%&"3i$CS8V1pT9A+#J'e8`2pTNA`SpQ5N+JX8D4ai*+9TkiAH8mfMY!@) )*DiGaUj#D8IAGBJE1XA"+a)M2KjbG4V'1,XY(ZmIRjaD08Dm)Cb2AG%mY#KR,-+ -"%Q5X%[F5K+k$k6iZ["`&!bX!!lhUi#Ua@dZMfN,S2UUQT,kRa9Mf"ZMD9Mp,$I #FC8#rkX,2EMP`IHf8*pRQX55!U3ba*%fNF+SX[0$i1JaiLdm$j(F)eE449h2JS5 %IY+(&r%T-(jreZ+$DZ4J6!$NPB90L`m039q8mP%!N!#!H4Z&NaDhQebYmTd`ZLC fGCkK&0mb!G8mbMXVFPVk*0)UrH4KS8#T1R"crHJD3bmYCb$mp6e+%A@bddShmkT &-DjD[%(!6N+1F%NprQ[1PT5p4U!pK`a"lha`!qDKrI+qk!lZHhI[,KF"#Q!kpq* pNf2Vcm9+3!&%@mNPN!$qc&N3mH#R`adrLABPe5X*jr4@8PdT1-GB5I9+`K9+)G8 V#4IcPP+Y"&`JP&+Y",cNl"ePe8V+,F+rL[C+UYFD,N4l*G9V$@HLc61G[X[#YhC 5fSp&@X"ZJJPSb!-85UQm+,D0NGEdF95qQdR(Me!rk04X3!UE-+NJME2P#I3[UTQ IF05RX26a)K0QV9SBK8dZ(+[@#T8*4Gim1[&YeZbqi'dmj9V(a9f"E#&ZQDN@-bc VI)L%0k0TP5"iVATjjXmdM5[!93,ND22Q(JjjC%8c#!lQC(*fkN1VHJQ)cY4jpJY mKfl&k3,5B#`Y(lS'PPd6bj8&"NPUZRlJGXX@qiHRHiHRk%CaVZPVUU-3jbBZbLf p-X!98Q@Xh(Mrm%1f9@5-P&lP5aS6Y&b5HKRFqha[B"QM9#f46c(-L`GB0AVaX(h r4E1TB5T2c`j6%&jPipqL)PpqIrK31(eZQ6l#S%Gh"KSQp9IK6Ral&H)UaZVj0jS 8DK$epJ81H[)2'fHTce1K&,[fh`aB9fCP)BZKkQLfeMIkrHj'`rbE*`4UBEQ%kjF PE[QT""S!"kdCcSKZhK4MZX5l$5ikST4[GH`apc(-@KHF`C`fZ-59Jf)jUlVAP29 '1'P)"[$+qRm!$3d)9@adFQ&9,QK9,Q08)5%!!!!!!!!!!!!!!!!!!!!!!0J2!!! !!!!!!!!!!!!!!!!!!!F`!!!L%!!!!"B!!!8F9%9B9%0A5884!+FYDB1YBEec!!! "f!!!"jB!!!#p!!!$)6#m)`X!!!!!!!$Z%K%!#"bma#')hCdFqAF1+RIJCpcG,9d +dXfAeXd$(JJPp3belY%qUC!!%qdXTBZFm#3H+A$Um68Lf`(NfYm4(rfLjqN1q)+ @!,A+*2G1cR)fF8!Z"`(b3,kFIXj)#Mr889A)Pbf1,jKi$ZGE$l'HkClKXrJ(b%8 M(+Ff%f-j4*qCG@R`j+"TKAXl#R8d2LQ8d-V4#T,D*1[F%RmJf0AKPIiHVE3[%$0 CU9Peq1H-jMEDXdE,-pTaSfh@fL3!!!!+6LPj2%%'-#1Mp5,iT)Hr4Z3B18D1AS4 HK**MAZ6@6X)))j433JP!$l`Q!$Q![*8"$0C14Y$+MU$rJ1Zbm03q1@&R6aK"!#0 SSB6MbH'"`qSkV*eYQ!LVf55D3DF$Cc0ZB)BX4`e6,K"Sc#5J-5JYC`)b9Fb9T#' S+GJC9[6h2*f!i+PQHKN&!@cl$clZM8q16YkpUXDhhlq(P156FR!m16f$M!P4KEd mNYbffT!!iP4T"'Hi[,UYi4A!RM!UK'900Qiq&mX!&N`i0%$393k$Q-G8Epl-%fL PbXlJ$HbfBIrJm-2iS)a1'B00r1Lq$*5jJA4CXeD26pN#6bh6*@pl*i!!EbaU#8i DIL8a"k(@X,+1X+RL0I(fP4*)'hJApR83e'Yl1FB#Lj5fP4C9)i9I!J1TC+F-CUa fQA@d*E5YhD4($9Nd%F#4*@!!!$P1ZHpKKJ5a#UBXii*ECK%-@rJQk4'VES(I&)h '+ZhI#@,SXY@rTGEpR)rLLl+h&`)qbVa+!SG1CTBV59hqrVE'5%XJU`[3(*fGkRN 30)Aj86HK*G[bRpqcmdi5piDp8AI3'iAVdI$#9rm)MMIJh8GFB'C+fhVIr5`Hh%I Y*X2"+24r&I%*f(q)H-YkJSdD9UYmdIBKif38aXPc`*(l!D8ZqrfIa1%cX)liAiQ rL"9[+K5VH8lb'PBfhL*+'kijhHK[N!$d1bQh8$#5%f1BKpqa&irX6ZcKUE1!0jP `ZEpMAe#V-R@ZA%TAVN,R6Hl9SY@a[m+Jqchf2E`*hZ6q3pqd*T8Z@Y@$`SA9J!j V`5J4T6QKjdbd#V+#d0JmSK1qL#TIHDJIEqCU(D5UJrJ(p-S,(0PF'@+0IQ(J1*0 *)UQ@%1VD,pPdGDA**XNcjPSYH%kL`#8Sl9h65iCRPGC'3ih%b&f'!31$Rah+V(3 B63kL#T!!cMZ'MUbJXP5jhFm%cCReD"XG+NX'mC9SSfTh#NDa3HK)9PPQa*!( Db&[KM#@G,1@0@PPT(p+k8M@9jaUbSf[5SlV(5R`@LYIbf+MHH[%CL@JGLYa`NjR `$Af-(P2cJrm"!!!0$3a9E(4bB998CA0d,Q-K)3!!!!!!!!!!!!!!!!!!!!!!hd% !!!!!!!!!!!!!!!!!!!!!(F)!!#RD!!!!&J!!!!"849K83eG*44%!TdN[3keK[U! !!!)F!!!3+`!!!@%!!!Ajk6#[dJ!!!!!!!!69%3!)(2bJ3a#lkeH'bZdZ6mehahC RM)0B'PZZ-X3Q2!dYBdFjlZVqGq6VPLi&k4DLQG+A-X%$(JJPp3belY%qUC!!%`$ [kqRhr[Be@`-8V1CNdGSPDTA`Y"bTRYUjpDXPF,j)mK[J55e4Y`V%pXeIZe#lD%' SI9RYkFP[P(Zibc9U+Qi-HA$,rKk5-rN@hD5dkGL,MQj6,RHYTZ111,l0'D06FbD m#GAliR`0)4E9T&SYk&[B8EQCkSbqX3lcYAj6A9CZG(,@f)Z5Xj`DZ3$Hib%YHah 2Fc"`jP"9%$2EqrXEj`2)N8%*`h-mG,VMkBZNCT!!ZCjR(%mrPb6GDD"#2MpR*)9 rHJVi(%l,p4$VQHiC2SYrJ&bb%d"qTa1LHD%XKfM"ZPCiFY#d`VdGK6SDhkTM)14 S"BQKlYdFAZ)2",Xk[0,ISe8VK`F+RDV8V0U"$B`f3f[m&+1e'1fidGkRY8N!!!a 1mH4AJJaJCS4Zeaj26H[XZ5Zcb2%h`L6(HU-$`XQcNc!#X*l@!DaR!,F5J)c+E"0 'd)pBS,VeHbp1#AY#)jafNQH5#5I(Md`jQA-m1E`k)aZVdA(ZV$JqNS@VGBM@eiQ H[T'fS`T*)Xr*C14kNV*5Gj`bZL#PrB'(IDlDaj5VYKAfV%DV'jA+3k8lHCP+HPb i&*HehT2&M6+,Nk&`[F@&8d-j[eJ+%Y9k5e%8EDc5MdDlEaaPaRDP)fFJ53"b299 3TR,j`'Z4QV+GbmJC*r*@*6Hk'd8[40%4qB%C*r@A5A,5U[bdrr`T4G&U0M+PDe8 Ui2I#'Q#HM@6"0%k05ZPA,3r9F*4,pNPeT4@ZTNDT+Zh)PRTk0a4+-mM'k[b$*2$ E%E[*j,NC+pfPN68GQCC@%U36'P)kDF%4Yc(mejE+d9L+38`19a-h9L)VG'U'@KE &e+"+TqT8TDA)UDeF`F65%Y5SI4Cm-E-T232$'+`Sbp@S%L9ekKJ&Cq0KU2)F,LI fB-(@+U5NF8q#S@A%$L5bFX,0mhC5ZajC-iB3PBQp[LRSb#UKZlQN+M1ib"LiV!E MaKjbLdd-pYE+MS2ma9MDP9V&H`5iD8&Y#D039jdLM@JNEFC!-%LC1rJMJeP)'cX 8ZASV1*mJlli'9#'YNN8PBRG)k-Q[-He6ei$R&4')80SJH3La$jEhbA0e3di-B"2 4KUM8U$9K(eh#T`3(#IUY&+N9Y&Z[HeErVd563%UP0X0@*3U*T2"5p)ae8G52"dL JL$e49A[ePRUFe-2A8QYV+`3+iELr0m"j(qHY2Jja&JeSE5ril,9RNb#!@,*R8X" '!$d5+LqqBb8@+6Ji@9Z$"1mQ[2ZHf0ijXfaN%8TCe3GN[%6,HES8Aa,SR`5Q9Sa Kj9)MI*MN&HiVr8S[)41$qV4(p9TcYAV*Shj#Dc62jcUBIC3Pp)#Tm4%01N@HP2K $C'NT1%&pP(D4$pH+pdp![mVZ@jN,d$rC#1+XX6Jhe2pfa%`J9QI-qATVM(H6h,N Z&9lVfG8LG,B31SAX'-dHra)kNaB8CEN4L*UK&$SZ9(FScS-SKS"jm6,C4LfD4K) #+DS%F1rCqY39(%#$amPfDa"-%E!(E+dC4XL`jP@#$3"a%93lN!$dIj3d!6SMi4- T+XE+GAUJ'R"aM8jDIm42%d83HG@JldTJa%TZ0VKl-8MESMRj*`qGI)AQe2`!hEL %A[m(H[-,kj!!eGXhf&[hf-dEl1BAbHk`YlrbhVf"hVQ(,Qq`GlpL)bdq3Rpllj4 2XA!A+D9@Ri$[!ZAd6q"jR&`$TlH8lp)N[H8mb4)1rPN!Am$j,M!l[&$JKLThQqT jLlJK23qKD`lbcFK8,`Kl%LLLh%8A*HNJ&293q&'+k1&b#V'@*ET6M2IB-r59E3( -MB+%YH)-dpD653Ap@'#Z@pdfelTT)hP2lBrL&PBIVP`&+YpV&qPbU!a`1lRT$2" H1'&Gl&4R8-3SE391HAhbia-Vcq[3$eB"3132L(kAp22ai4%9j@L8Bm3C'bUjD8b @N5GSBd4B5[af&2ZkUhN#J@*R-ESR9qe-`$D!#5EEeiTA#mqU(HDE6&P8jFNf0&[ jX22NZ8apK3`$i@XQRF"b5@0cUlQpXpZDGMMF0A#hZl2Gh0TX*"$bNQaBe(iaBcm imAc8PPf&Q5BdBHk`HpKI4P*A*c2IG#9DLTI'`Dd,fr'pAbE[*mRCk($&)B`ia&3 Hc6!Bj8U-)cNFe9)aeF)hF4l&"1DSFlE`Y5[$k1%Y$K,HmMj"VjI$b!I!13DY-`' ,lI&@*3`Vr1B`GIJ)A-j,$&EJ%531SF,NJ[F1*"[iN!"Tm3cN2dJhX[*8QE*!QV# %IKZF*`12AejMRbSXU-m`GX8B`55V9CpdUj2m2T!!3cPX5iX+m&DDE",PdkZ91(N HCb11J#L$f"J[r1YlNmc@MH3IJdaK+IR,(jmYERd-c"4(P8Rr&AbZYhF8,e4Yd4Q 3!1LL*PcNkX+U!,Ye4q0pP-dmd2MXJ3X(h,TV+KU)-G,K@I'pP#0[bRH9r`!0$4* 9E(4bB998CA0d,QpeG#j[FQF!!!!!!!!!!!!!!!!!MIX!!!!!!!!!!!!!!!!!!!! !)K!!!#b3!!!!!"B!!!0S9%9B9%0A5884!+e(XFkY5-QI!!!"QJ!!!Qd!!!%T!!! "(F392R`!!!!!!!$a'a%!#"c8())Bb!RAl6VpK&f[ZhDhQ1klA6[Ma1NR*&'D&01 p66J-i)%6#hG,Pi*d#p&-kH0C$Qj2pANFSjE8-p5k4rZN1FS8T`kIPUqJ3dFI+A$ Ub@e2[mQTXXd4EbQ*kY5Zh`c9V9J0RHJjFEGVVpeYaJNRYU'dcBPk"fEiIVHBESi D#1[ZN@kaMJq+3&PSel,QK2cAjVqRl00PBbYl'XEeL)R*P6Y2!8qCDVNpKHZ8U&B !jBCL"6DU@#KIZI,&+XD@,9qZjJf[[9h`YDC[0bh8#&SdR6+PaC3YiQYYZB@cL3V jr*b4&2l18YCc3!cdJ$cSqCKcC[%2N!",KVicVCP$Y'$G&$`jD&VKhSj#(Bhi!m' ZMLEjHl4UjA"Ic"5PCRAJTaSYU,9*!!"4,PmB!hF`#$+iN!!(qf%S$2`KJ"NIk"$ %b'haThF!3AmkFU2XC+%`cCr&"Rf!Kqi+K8$6Z+'5[&3DTB!'$9*58aU"e06'UP5 P%LK6'UDN0QJ!P!dDTDSD0mbjVkP8I(j0SfN-'UJd$G8mqfl$KZ4YZ`'aUB"8iV% *8T8T3%P195*(lh5R'&iZ'`!2j'q*$lJcX!m"GDUQ%F"q6b"-QZVi`Pb3!$3VNM% A!V9536-J9bBhEU"Ue&MYUjqD+[6`[9X)ZE1"A0jF#!#TVU,NAbYU&IqkSG6`Vf[ UR0I0P*a3058PjbT*eFDTZDrE18!C@NYTQ"2DE*!!)e2*c@+GS%V4j&T8e+6-rAi qj2'(ID6kkbkVM64EUUcZdk,+kTBUP`!K)3P9E(4bB8aTBP8!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!$T!C3"E30B!!!!!3!!+GS!!!!!!!!!&J!!!)B!!!)Jrrr rr`%!V8MPADeKd(8!!!!!!!"SkJ!!!!!!!#`+!!!!!!!!!!!!!2iZPh-!!!: