/* This file is inspired from source code of kudzu from Red Hat, Inc. * It has been modified to keep only "what is needed" in C, the prom_walk * has been rewritten in perl for convenience :-) * * Copyright notice from original version. * sbus.c: Probe for Sun SBUS and UPA framebuffers using OpenPROM, * SBUS SCSI and Ethernet cards and SBUS or EBUS audio chips. * * Copyright (C) 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz) * (C) 1999 Red Hat, Inc. * * This software may be freely redistributed under the terms of the GNU * public license. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * */ #ifdef __sparc__ #include #include #include #include #include #include static char *promdev = "/dev/openprom"; static int promfd = -1; static int prom_current_node; #define MAX_PROP 128 #define MAX_VAL (4096-128-4) static char buf[4096]; #define DECL_OP(size) struct openpromio *op = (struct openpromio *)buf; op->oprom_size = (size) int prom_open() { int prom_root_node; if (promfd == -1) { promfd = open(promdev, O_RDONLY); if (promfd == -1) return 0; } prom_root_node = prom_getsibling(0); if (!prom_root_node) { close(promfd); promfd = -1; return 0; } return prom_root_node; } void prom_close() { if (promfd != -1) { close(promfd); promfd = -1; } } int prom_getsibling(int node) { DECL_OP(sizeof(int)); if (node == -1) return 0; *(int *)op->oprom_array = node; if (ioctl (promfd, OPROMNEXT, op) < 0) return 0; prom_current_node = *(int *)op->oprom_array; return *(int *)op->oprom_array; } int prom_getchild(int node) { DECL_OP(sizeof(int)); if (!node || node == -1) return 0; *(int *)op->oprom_array = node; if (ioctl (promfd, OPROMCHILD, op) < 0) return 0; prom_current_node = *(int *)op->oprom_array; return *(int *)op->oprom_array; } char *prom_getopt(char *var, int *lenp) { DECL_OP(MAX_VAL); strcpy (op->oprom_array, var); if (ioctl (promfd, OPROMGETOPT, op) < 0) return 0; if (lenp) *lenp = op->oprom_size; return op->oprom_array; } void prom_setopt(char *var, char *value) { DECL_OP(MAX_VAL); strcpy (op->oprom_array, var); strcpy (op->oprom_array + strlen (var) + 1, value); ioctl (promfd, OPROMSETOPT, op); } char *prom_getproperty(char *prop, int *lenp) { DECL_OP(MAX_VAL); strcpy (op->oprom_array, prop); if (ioctl (promfd, OPROMGETPROP, op) < 0) return 0; if (lenp) *lenp = op->oprom_size; return op->oprom_array; } int prom_getbool(char *prop) { DECL_OP(0); *(int *)op->oprom_array = 0; for (;;) { op->oprom_size = MAX_PROP; if (ioctl(promfd, OPROMNXTPROP, op) < 0) return 0; if (!op->oprom_size) return 0; if (!strcmp (op->oprom_array, prop)) return 1; } } int prom_pci2node(int bus, int devfn) { DECL_OP(2*sizeof(int)); ((int *)op->oprom_array)[0] = bus; ((int *)op->oprom_array)[1] = devfn; if (ioctl (promfd, OPROMPCI2NODE, op) < 0) return 0; prom_current_node = *(int *)op->oprom_array; return *(int *)op->oprom_array; } #else int prom_open() { return 0; } void prom_close() {} int prom_getsibling(int node) { return 0; } int prom_getchild(int node) { return 0; } char *prom_getopt(char *var, int *lenp) { return 0; /* NULL */ } void prom_setopt(char *var, char *value) {} char *prom_getproperty(char *prop, int *lenp) { return 0; /* NULL */ } int prom_getbool(char *prop) { return 0; } int prom_pci2node(int bus, int devfn) { return 0; } #endif /* __sparc__ */ lh06c6 @4lh``cA m`0l` PFl`0 ` 50c` P l 6`!F`lh@1A@0h PAcF1lh`4` 0l l511  `@ l` 0h56` 6 H `0@4l  hd05 66  Q@ 2P Pjh lm`уPjh d`0 56l@`6 A@ 1 F A@ 4lh5HC`Հ F FԀ@`5` F FԀ@` `00j Rm`Հ60 55 T@d6 X`4`mH V`00j Rm`Հ60h 4h5H`5`  4h5H V`4`Ѡ 66  l T@cPjl`0h 5hƃTm5l 0j Rm`Հ61T@`5` F A@ 0llF A@ 0lm`60 56`4`VmF A@ #&Հ``4``4`2 V Rm`Հ`4`h01 6 X cC`Հ0` MA`4 V4j6 X@l ?__^~wx/??=4^qj:<9wΘsA[r)q-3$3,&\eDZZTߋ6vx=߯njx_am͎^JzF3,c+%2iS4լV4bFmFmT[j$ Id(i0l%e$Fګ?wÏvۯlʦޮz{oߟ\1d ;. E;ۙfVqIiRFݛ5~g6J fk}8iEg~ZΟ>[ׇ/O8~zm1imeooIo rەYz<$oe!%r\60zbXA⥊#(;[zeR[^U_Z%G{ΊB]abzސ/MY b'9"; " " /9Yyޣk{[VG]mk gѭz ը@f;xb{VX"d)W̤ftLUXbQʒIO1Ihdxwg1IZ( ny'hMa'(_7s(41k-W.tE59pfMjuc"8qcP*+,7Ʋ(YM(P!7r@L8Q2Kx@U0KhsNBKP">D3L4ky|rz T /g8ԸJ&IZDS#XHP:s(;m+FuL^fK/ zkL[E{+uK>S%|XΛw|:M56{x#:"T sIu9֯lM4zLGZ6]^-!0fgYBgYtPִi=%si2@ (YF kk7{URk=oZ8޶T͊WWJM+NSh}ZȤM|>s"xe A')cc"Akskl͋99 U0s{<Ҕpp ˬ㙵r-3:JYWL2@kEp,w\616b3L--ƧSL җPⱫ FTGxAz;QpR\҃xUdV׊B={„ "|aa@^Ԡյ}(41vnQ@h` p@c uXܷn\Ǝm.br79`04ss@` (7.Qcs ˔XrAr\F4.Qcs XApE, rܢAG.+(ѹ˔s\@ArG.4ܹEX4Q\1r` ˚nW4rh@` h \r`W14csQ\ 1@Ab(\0rh` `,nrAkb W1G9 s 90`("ܮXF44,Q W119\.4hh94cElccskb `0nT(,QPF(` .T(\(#` `0nT(,QPF((#` `0*8 0@b0`b0G.EAXh QPF9(#` `0*8 0@bʂ0Fh nr` ` # 1ʂ0A,Q4(#` \` *8` ` "0 s4(" 86 1rAX479PF(` .T0 08*1rAXPEAXs( QPF(` .T0  @csa @cs` `ʂ (` .T6h 8EA*hnܸEA54snPF$dIg mw-׀5G]}}Ɉ\t8 dFjhđD@UDj)kFjZkYDET@UII[3,.EffDD@@PUSAhIjek.L5 ""* ZZIcua˗HDD@U@pWZhuU5@78wwpUtPuUT8;*֖-8[TP5UUJ9WjMjIi*j.DD@ET@DkUV\ئΜ˻E@D%R*" UUT ndQԏM.{ce,cTJdHj-kv9fl[;9vst\Dv]]:cVեY0ihԡLXe2`W٥f [*]xfc(g[6fWݒi&i+'Yuҷ\mҢ]ۑ0eqUqc`l0F V]ɩ]YLZIZQ֚cMvPɑgZk(vA&Eӳ'ww\&N;qjFqiFbY Q"]W)is\*YJrHu8ꨲ]jDa,]ZJ,VhNRڰ̫5iW4M6 Ek-]k[YckV2.IdBk]IVXʴDaɪnRN⪪P[b@) U7VIUU@ ܊UVeqUT*$(J:( ( ( ( ( ( ( (  *ĕURtEں EPUUU@UUUR -UUT UUU@w@vUUUT-UUhH*[gsuhUVܪUUPH o-fk멩wnƩ66@>ysk^s-v46) uuSMͫ{%lKZZRo/5m[iLѨж[fkL_cun;ӭVj:kej´:Wm8UVj\)dIˮ@'U\SKDֺTKZ,PHJ,Q`k3L*4Mkkbt]ejYbj&Z5n왙5v!]jBkZ3⪪ XUkSp[@L⪪ `b*;UUPUUU;UUU;`-UUS ]UUT9UTwUUPwUUPwUUPwUUPb.⪪F( `(( 1@bUUSUU@ (P ymK-,%B Ta=$rk]jѕwjPV4Ih3@fVc4+SjP,T!P@PT,T  ` ` `@ B,T @ 3@)P5kZֵڤ?.1INuS$-Ai 쥸4ڰP7(P;mĶ8СB (PB (PB q-%1^zh@%!kM-8(Bv(CqBP7! Ķ[BJ-ݭ-K_}8ЁKh@% w;mŴ M[B-jn;hKh;mŴ -0B^%1Ķ8[CKhcmĶ[Bq-ЁKh@mĶ8ww;mn(CqBq-ЁAyyg""#t M[@;mĶ7(PB (PB (PB (P@RAfgj-Ve̵Y@ LY3mYLY2fZ@5AUV*UXUb̵Y2ԡBem6mimMm6mimMm6mimMm6mimMfZUj-Veƫ3Uj-VeUjUj-Ve̵Y2fZUj-VeUje̵UUUY2fZUbmUj-Vf5Y`@ @ʨ`mnUmZ^ZmKV4 RU–31ūVJ(chMhMm q-B (PB (PB [CKhczЁKhCpKhcm qm ;R7! n(CqBP57imĶ                          7! MZyޯUUUU=MmKh@% w;mĶ!Kh@% w;mĶ Kh-BCqB;m q-%][uݥwлmŴ M[Bq-ЁKh@mĶ8wwYmĶ7!ЁKh@% wMl"">}}{ޯzkԡB (PB (PB (PB[KtoUp$F5UUUUUUY2fZ  @hJ%-ҫ2@  2fZUbUV*UX-VeL(PEjmmmmmmmmmmmmmmmmdj-Ve̵Y2fZUj-Ve̵P  2fZUj-Ve̵Y2fZU 2dBPZ BA]eUW-VeU@ @}Ul0 `UT6 AW `ENb+"IZ@Aॻ2MkA @^ 1Ķ[Bq-%(PB (PB (PCKhcm qׯ^;h(CqB%NԠvn(CqBP7!ЁKhBBBBBBBBBBBBBBBBBBBBBBBBBBCqBݰ}}>}}mSvЁKh@% w57imCЁKh@% w;hKh-B^% w  [CKhcm q-%1Ķ8ЁKh@% w;mĶ6Khch\wwuЁKhCqB;mĶ[Bqm/7DD}-Ķ[B(PB (PB (PB (P^ozOZ8CYۋqq*2fZUj @Uj6kUjUj-VekIUbUV*UX-VeL(PEjMm6mimMm6mimMm6mimMm6mim5Y2fZUj-Ve̵YsUj2fZ 2fZUj-Ve̵Y2fZUj2fZjjZZUVwwE]eUX̵\\X@ 3ޒBI'fWmo?_[_{k\6UUHeTUUUt@PmڕWmsQUYUUUU@UUwUP * wvnv;1Udwjp wwppww@+( *-ۻ۽WMj=>-z2c¨'FmT<75PќUϚo>j{Ϛo>jtU <ϚgѪlm@[vP|T*Uʨ>U@yU T=T3MywN{Fhƫo>jϚo>jmx@6ۼ{mm3W*C m|Ϛo>jʮ@|@=T` T75P|@FsW o>j歵m[kϕPm*o>j]|նmmvyVTgʨϕPm*o>ww}μo=Rhh` `  SZj0[ 06YjUI a6[` 0mKSU&6l0Ul֕Rhh` `  SZj@@V l0ڷֶyo[kZڤ05 ` 5MV٭L6j l l` jUm05 ` 5KkWUd1!#% VlJ,)dUa`00keM0[0UH``mP 505aR R9v]%l2-ECo?v7 KH!'4_\lTCAx9l7ž oK (vs[o}|y< O1_PS T1ǥ{ݭ]5m j JZ\sE<֮WQ}kk\zb}]}1l{۽v}j1hkczwxƸ nǦ',޹qfǦ',޹q`ͬR6či9ZfטzǦ'Xz/F'Xz/F'Xz/LdkZk[|i<[;c,>x4: Y,tzH~18 imb"FyFRĽfS󱯽;}amKanckƯ\zb}b뜼e1ekLOͬYnƾ}@[%Uiwy+\v?mT[ugO7>Vܬ9py T[15kBy}ׅ%t1a^MfO_anР0WiZgLW٪qokW鱫A=Z+l)O__`n+anW\ x;'|㔙O_WN6'-89d9mc7g>[S_VB_Yl:[-K1>[t( !,ì /\|i!*ݜ[@5~b=tn2^|nkHB>}*!X.y}]_G02^Ku>HC-ObB1Ewݕs%SN !T#'ObB1Ewݕs%SN !T>ݤ*!X.y}spdSsXBg'P! _p;{9r^ XBg'P! _p;{9r^ XBg'P! _p;{9r^~yT@{o|a $R4*! 9/j|i!*}ITCW(\`0d\|i!*}ITCW(\`0d\럞n/1CI(G8ԍ u1E>`0dzKڟua !vq>{,쮯 /}W%ﺟua !vq>{,쮯 /}W%盹K1h4 gJ'#BB_Q`, /ޫ}R| 4zq`!OY- U]ݜ{N=n=;<`0dw\^W?~n1h4 gJ?ذqh/|`0d%s})~c@{o|a $بqh/| /uu\_1CI(G8~&6*!|. ~k,Kr]4N}}Rh=76IB=Y@:&>>Y]_ uu\_򣤔#՜?1@a)3u:vps%.}۟_T IB:Qw)||뺥<\ ~㿙ߡ>OMͰZωu>M|>Y]_ uu\_1CI(G8~&6*!|. ~k,Kr]~W?~n1h4 gJ?w&+9w\M?<ӟ_Tx4OMͰPVq1P!ɢϖWWs%r]4N}}Rh=76IB=Y@:&>s`~\M?<ӟ_Tx4OMͰPVq1P!ɢϖWWs%r]4N}}RҁsuJ?~6*!y4\_C,Ki#"znm4zߩuM}| /s؏@鹶J?~6*!y4\_C,Ki#"znm4zߩuM}| /s؏@鹶J?~6*!y4\_y`0d{K-.3a Џrb`B-A}ݕs%.4N}}Rh=76IB0yregk9i@u'>ڣ+kl\lwe@Kڣⶶ[5̗̆{X9;+kl\lwe@Kڣwkf:lwe@Kڣwkf:lwe@KڣvA`_)XN?/ۄ3@a rSgs.N2"{8à09u)N9'=pL7+13#13#1ZR:kTVSjJuQ̌ffdf33#5FffFj3323_mlfs-r"z;MuQ̌Zk=K{܈Mu:֨FffFm5ٞDOV&{3ԷDmm7/=K{ބO6&{3ԷDmm7Nfv'ttww;:;ٝ-j*9՝#/Sro01%+2 Hrֵb#؝ҵdjNg;oSr YqYfPB!bUkTjUww;:;313;ٝZ+Z]/3|bÖ0J̠0&Vf%+2YN)f~QZM6 !It)f &իcnM`oqZM6 !It)f &իcnM`oqZM6 !It)f &իcnM`oqZM6 !It)f &իcnM`oq|K[L'i:S^x;Nm1@a M{K0n 7n]two{߾wSj]a;NaB;,wF7ViRn7YpIcuj6۠0&x7F;RD s׾)f7ڗvB'6NӘt.NK0wիcnM`oq|K[L'i:S^x;N߾wSj]a;{0=<,I<#{9y繺S/SRd"9׿*|K[L'{0=<,I<#{9y繺S(uz2X$}s}TҗVNm=u`Q {-s rI2LV!.I33Y)J$%&fp%3ZD$dq+H$,ʀz`מr^nwv9݋EzR.(|}z[H|)t'OQ;@Ts=b=K'ReC6)=J.d`+ď:^{UQGp{;={Ob)Nr4U{9j=z:xrh_e_WU_л"^" &տ*3Yh¨W ib OD"ִ~/ _7Y={yU^KZ{׼'jy޺yzޯ1=Q[׽Jگx{KyKyNSԻ.im_^}jׯ7zz{uu+FU=k{:SgV^ݶ(M [^V{ͼ,W=^o7kׯG4xVW/z0ڵWWXQ8/-j#rlcUF0@ּ~?th5JAUR*r܊Z5jDA/vHmQ-% "4${ U hD *璆-$mJ vj8 B}5s>Ύ\O4f[fz2MkW2iS67{Uo?˵w޷IЗv|wKtN㦶t-R>еW4 wۭͧKnozMwwIos]JYmIK+4A֫[2U6pQ,[UqމJ xq=ܔUΡ?N#lj8UUgq.F'J)֐l:.nhUlu FefBĕ1Fe >TVmZdV-I$+-F-VThҩikѥZ,iThVQJ* * *ՀThVQMXjQ6fY4֖+`4ThVQMYFf+35F-F-F-F-F-F-F-ThmThҭ@[L@*4im5JSmʩՙS*eL2TʙS*eL2TʙS*eL2TʙS*eL2T`lFThmThmThmliThUآlTbfIThZ,iP4kjQMXF5`4"kѥYhQMQmP m m mcK[Ѧ@6(آңE-Fm )6(آl)[*4RQJ*k,c[-@UTP@UTP@UTP@UTԟ_5F0@jiU-jw=Xf1-wR׶zǮ״w^罷ŧwTRKK$$k2d%6l6ƈdIMo%mM4٦JL4MJfdM) aVUKY"QDDDDDDDTEDL""""m&DV"*"؈"""""DȢ" 6kMk&DV"*"؈"""""(DD@DZZ:vjffffffTfffffffffffHI&ffffda&ffdfffjfffVJ"/1Q E2,`J0 Se0IXY&*L*H*H*,,P,A  DXF, `CČ ,$1+$LʬVD2#"%, 1" D*E8X2Pʬ0PddYH`2P1P2R`2P1P2R`2P1P2RbT+* C* IdDH+H d2R`2`2b2"LC&)&)&* T"HR*Amm6i-kڴDh?9sxD9OCy9#} mP((}XhVnFZaSX32J U 6ٖh-fZ+dI&Jk%Y*ɵ&kd֓ZMi5֓ZM-d0X"X,YeY5jM5F%-lٕfU-DVhdkfVjm3TUi6*Eb*ՌF0(~ c^_]vߺe#;Wzo|y.y|Q5۔jEމbV" "(F &""""""h"k66`mb"""""0Q""Dmmeͪ !A"#Q%FbkRZm$H"DӱU ;UԪAjL#%N[ēH䧖$ѵ$Vm\kom2ŋ2̲i42L-L4X,,Xbŋ,2cm%dY,K%̳,XřfYeiefZ,Y,,XY2dZmWm6kjƴ-fi6̾u%{y231,i̛W q][E[ckt֥ٚ-7J'$[7g]SM4iak;)Hw?N9T_r2w˭ؕbf3c{}ek>KLhЉ@I)c&,] t &7̧nbp;]JR XS޻9/fsd9+;x2fwiU7nڪߝU6@U`4mʹR @*h @6 `ՕI֠='H5)vMEx]P-xQk@AUkWߧK(PѢ6KI Er.wwDą$H]vϧ}=3dbdO{x+κ oJIΰ.oDwyyfiiM f$$Ik˗Mu۷]t&i%ml!d Hh1A?"k^bW;̓ v f0f1ىf(Duװ`9͇;)={Kb4{9 ^jMJS1fEiTٙݻnvj#-# &IHQ%$Ԥ!d)4IL&d3K%3*i2v~VЪϯI9i_}uUm)1IV$7&e$hj|yy|wx\m}{yUo;8eٹiun\2iHf+UcFL5x|[4hUQ)^W8 beLZa$d馂66XGt'N}xϝ|6)Ifi%Iffdjy-v]ujsmͳf͎jJʦhd˺eضNY)۵]] #xH˱p%;L ߏ+zxc/wnGˎ^9$Oo5yAz!BJw\//1|%#b@ڂBfd/v.`ξuznE\W/|﷋ѾA˽|=JNuxoy g_g=/.>ݍinr)ϏoP[JXmo{=f~Y~}7wtVzt'~](rnך1aktN8ƖA^z'Ou^-37^W&IYwvq?.MmB~wx#wn_~_uvw>:[ɯV.}z*N\g?C췬#:w{B;yGug_[ꯟ^پMfX~dɍ6m {?{?z֘;ߚ?WW }Q>rGtѷ_W'x3P0?᭓9H  OVo4 ;=3sm<kҌyJDGU 覕c3Fe6H5{_~SA E>(*Th|l *!Thm-kW? ,K] @UA(k@U** z?O7(}~[~_@@DDDD@DJ㽻mCg]9tp˫9uutwwn31;ޝN}.B(S xO)ݲOOU_nJ `N(sGEN~ZCB? -`e?ekT[}[k8iNz)cy\^tN񉖌O CEEC>c ނywV~ۿ#l?^'ETL(aSL` =^JX*'xf=Q< wyuc]Kl?WŹ$Udhc`4"m{Q~m/^5zܜ=?ؔSxR??s_GΛTq{+{|{ UT-:Ҙa]>JWTLɲ zu_*zzcu$- =z) g"? y~ =绕~#'VdρSZIJ$-)*J@@*ꭵ $  @Dnn`U U jun[v۶mmm{{{ݺ۽]\M4 )R^/K6צ? aq`ߦٮ*\-?P) g¢y?*V$3330Uj;S_j F9>FDKxAwٱ8 W:ˢT=c3MD{$@^s!eqM[ޖB }  `o{Ǟw<y?Jn{]|gJGdt`^ / E^onCݲ"?RG >޾ASvgM,HBʣ)mkm_>}U/ܨn@I"jA:w~>YU}:Z*"!ɝT!>QW5* u|ϞyxZhVh 2N;t)VGtӕX=;tӕXUbUV*UX.V*Uk+V*rU\r.ZXP\r.ZXk-b\rU(;tZP EUwwwrʪUʪUʪUUʪ\\\\\(QrrrrrrrrrՎZUU@33333 U^>?C sORg"`?MzYǝ.xZ_~>dLx5Wnxg]ہSPl332!>\gE1*KdDVMjŶ؂"HkŵDa$ "xtګmI$M"ԉ(@`0mV^~}u'WgMOQ~ [QSOBBFI  @fۋ>7'wlg׳\quUqɘ˻`"I iZ*-cl FQ0f33BJ:UmUjc1Db#" DDD`UW_l6 al0pÇ8pÇ8pUVUxUUUUUvm^ss&F12d2̳&S&L2dɓ&L2dɓ)c+331effc&1c1cLk{mj׻VڤtJ7U]B?g_m-y~pUP@PUUN٨v}_E(hJ^aTf ͎Prh)֩@%<>Ea$I'W}78io$S[_~hY)E<-ݻxWgտW_&. Jw.5@}i>z.O(^oO`0wڋ|9vەsefY2kDQ(D@Q >[U_B){{mmmmmmmmmmmmݶmmmmmmmmmmj)ړUF0T5x \\6 ت/L `YTrJBrRX* >x2bvTӟel jg|W(kLK4hJOaN!`#B2*uAhצ+g|\T@.snJ2PvTOW܂`NCY.D Mo2UCjMz;}muVO(mo|kZր{=vMߗ_[_w_60lc EEkKշ뼯4eQUχ|?K H1޿ ,rtI<7u#oO7]jNjm_T/p@@ڌ۟6HN?OiRGQ𨥫x+\=kYρû80t#d}ޮ& k$@ .P0B<8pqI`EDwCx$TL`A``B*4UOҟF@h46Jb 6RRQS&RIiz4z""&LJoQzh @$@M himLєЛQ$DWo_ǯ[l9?l/+ܟIl֐lG>gvㆼxw}wR?ۉ8A??+{ @g(ss?{N}<ٯR䊕+g鴝?G{k 鶻_W-Ze?q:@C^abk[ )΁Wzgo/Ϳۯ?Xz*ϯnky=֢5<=׏÷ǎqǃb#aA*0= QJϧ9v巟]o]좕<$P׮mj7O>t%x}ۯ.\t׳qyGc9=vk6٭3H뒓_giׇmfp}ѿneCw}=x|6ể;mpzmok>xoΝ8c+j(E Wk?͐]{P,P3owmKJS-C吕I洵ޒI3%):%+d*d3VeL+b<9h+JNP .IFU$$R[d6y1VuJy/*b烴)ǚ7\I*RV:VtaW3Q)VʷZƶZ6F566ض[V62P2\XRI6")1G*}39dG ־mWΉ|onm㞿rY:ӆӫgzpӥQ=_{2ݱl|Q5ГLqܩN̟٘9RӶq\y63Ǘ>\5ϞM;odW7?}6؅f߭zI*yg*IU$_~]N[˶=ޚVpyռvx Ͻ=j>^V9WWuuwŝ|̽vno]sDRA66]٠n{lٿ:d&[ 웻$nZısٿ-[ըb=q,yL3C/~^w;7 rɆ-XqVնo^FնߦKϳ'qǍv~_Gw@}oI:?W=Cݷͻ-,%پVӵ;=go||䗾_+՟q$*л6+nύt{ ioHX781wxf+[,weٝ=gqϖۗkն:m];ƭ6nײes|i-F4]*M7[vje}|;;.2}|fg=={ak'1a|}11Xsُ6^z^F;1y3 eC?@Yi}vg=;zǧ\-׷>d"ϾMflke羙/s=x轑_Om_5/4>;sm˗U*?fR5qw]ݻٻn=\g.\,^Zt_E&jD֥G]=v`%1zJUbSb"Ţjf囈YE)~vI^dc~}gewlt47l|,!6=8ϴ^B2ҵyvbX+Vj/.V3н1rRj-OSEWW&/ܐbiJմVNBW>H_dIԊtB馗4I*{/%岾[9O)_V)۵X"VS\~C.uvRki䯏/>1n)FDԩicn^틕.E]z-FЗIUYHQ^-{Z|}ETC +ZXofmX)Vm=rn1 M=6v3n %ɹC26zvlA^-B(uVUݫLaޒa%zy d.qφ\s3vt3o>7ƽ{e޺l_-mʘ'UiB|4閪5䏝7xWvN|$+ˏ:}o7>/Or7vOZE>|+3#mLl8amjl2|*Ӻ%;J뮾=i՜0ukbTɜc\.Pd_F20#+/n*kR/,W:2)Ո+Zб^jiU4 mm`06m 4 lZ 6j`ƃlml Xm`5` 46 6` `Vc@6c@6 Xm` ` 4`ƀ `Vc@` `@Հ66 6 0`0jl ` `5`  `0jl0Հ0j3 0V[0jk`j V[ Q`Հ`mL5lm`5`5 V[05L5l-`j6ck0lTX lՃ[ QՀ V[jkcjkcƃT V[jh66l`  h`jk` X l l60lQjk`j @  V[-Hj5`5h5 F VE6 AjM@5`60 PZA5`61m`Հcj R`6 X 0-L ll j 1` ll jX05@A5`6clT VmA` 05HA6 X lT Vmc5H@d Vm5h01` 2@a6 A@jmcMPj6ډh ƃ j R`ՀcA` 0 j6 2j Qq[5mZܪ UJI2sPQj0XjR)rʡ6)(2*Y 5霹&y~ݾ^?VigNOǯWO pwVn_vM{h @AP@( 0nkkPk`.ZA@Ankksn 5\s\ ȫ06  @ s\ r4 0\0mE ,0mn\` h ,0rn8h-p0W@Pch srPch s` sPch 05h A\\4l(ܮ5j` W6` ˀh @r7PE0.n nk0.sp0 Fr#F` j` \sp n@p m7K\ @0p (19p (1\ہ0.09k0.sp0 ch 8p ( h 9Ps`0( @E˛00.k071@` l9Pr`  P.pG1@` l(sp1̀P76` 1@`  9Pr` @#s006`nQ@`  (.\ (( srE(` @#0P.p (0nlW_'.O+kG3]EVmXvƢ6Y`$UsJhThRSY%::ZEh [eH05Z f&֑q-ڵv[UͶdKIjuAj,j+fT +(fll+\Jֺ]jN ;8rUZֵõlr59r܄'M.ڴmbљh*HbAMTCc2Zu]Uk;r-`*eD1N(1:cKv2k L:ӫ-fb@I$I$I$I$I$I$I  PBjZŁZGY;@*oj~5ۻW-sM66MIlVYXT6٨+uUmmnGrX;M&&KܝvvM#ThMVժ>*MQVGUqƯ$nDmi4sj˕z36lԍ&,(ɶnkƯ=i4Q4$jBRRۧ]cY(ŠRc5LZ̴Κ1TffY8ҵ+.[Z2ԶV53t\w DNw'7@Ztb3R0sUu %#Vu+w'EpMXY2fj֚jֵi P ( @P( @P(P@P(  *P ``lklv;}ݺ XM&YcQ5FiLf%zY^޷ƶG:k3S4g$ZijQhSqЭNVUT.@f1  0amkMkGG}%KWI[fT0;Pde,aYX6@[nlI$&gzf`Y-66:<Y@ GUww=UUo:<[]MM@ f,ř@h A4 @h A4 @h ԓ#R@h A4 ƀ @h A4 Zvh A4 @h Affff4 @h A4  Ƴ/4 fffc@ @  ۶e@h.@ @ @h A4  A4 @h Awj @h A4dj(^ @ @&93)& 0;` ׽||vfʦT2,c- Ho[no[Lfgfӡ6Nl lTu^x @ l{gr*wouUW-ݺŦH @9lبTv*;GbQبTv*;GbQبZl lv*;Gb^x h A4 @h Wa @h A4  fffc@h A4 @h Al3@h C3331ah&Ff^4!Z̍d4 @h A4 @h A4ݫ@h A4  ؼ@ @ Ldؤ I0$+_~G/ғ%B$}w}5kZֵkYؔK$VY2Zk0``Hjվ- U\AomUW, @꣪;܊mGU vwi)@!31ff, @h A4 @h A4 @h&F @h Affff4 @h A4ݫ@h A4 @h C33314 @h A4 ^5x`A4 3333jf^5xax fcAjdjG25 @h A4 @h A4  Wv A4 @h l@ @ ;$o[K@ 0  @~ݭ?~^zm  P 0`~mmd0 @ 0` Hm0 @ 0$TwZ=߷VBz$y679Dd݌c9m=7p1 W*i#޿z.KSU=K :IӤ5]mzٳ;ٝvl;6gwp3͙fsfww9ٳ;ܓsr'MWmݓ kgwdj6ݥvvmLL~{Ϟ{0, ~`Xnniٝvl;6gwp3͙fsfww9ٳ;)fܗ%`mu5]lݼے &m5Y7w&iɻ60=[MVMɶjnM0, VUwrm``zl մdܛ``X&m5Y7w&iɻ60=[MVMɶjnM0, VUwrm``zl մdܛ``X&m5Y7w&iɻ60=[MVMɶjnM0, VUwrm``zl մdܛ``X&m5Y7w&immwvN.Kkgwd06wvN0, mݓ k}Ӏ68k}Ӏ68k}Ӏ68kN$}Ӏ68k}Ӏ68k}Ӏ68k}Ӏ68k}Ӏ68k}Ӏ68kmm8k}Ӏ68k}Ӏ68k}Ӏ68k}Ӏ68k}Ӏ68k}Ӏ6_r\iOzKmݓ j6:.Mmݓ j6:.Mmm: mݓjy.OVU=^rzS޼`X \0:o=dr\]MWF;'X%ɵ'Ntd{ǕUWٳ={ʪٟNftmvoj6:06wvN0, mr\tmvnK06wvN.Kj6:.Kkfrmu:Km|%ɵtmvnK06nmr_SUѶ͹.Kj6ٻy%|]MWF;'XSUѶtmvnK06nmr_SUѶ͹/ej6ٻy%̹=[MT޵^f}U^fϔV}3f|ww{|M ϙ6ٻy%|]MWF7o6/kfܗ%`mu5]lݼے mr\tmvnK06_kV^f}UVgfww9ٳ;ٝvl;6gwp3͙fsfww9ٳ;ٝvl;6gwp3͙fsf{dž 7CRZĆ$i$5$܈`RҒUAQQJ:?r8S*n/D)k^!nhMqjR*r){9jt@!Ե>=TʑV}>_ 5&s.(!2.;T.]@4M-WzP2|e Mzl׽{6 % *s\&l "e~"@@*!NՂH ʜ6I?w_2'`9A t㖫Bٽ(RRw>_2&| pߖBٽ"eM6I?w_2'uʈlӇ{6 %B{2{Ό -9^X.T dx()v7N9j-҅-o'y)m7 j-҅-o'y)ozl׽{6 % *s\&l "e~"@@PCD8E + *n1LDD;TCe=~ZFfa?-0Z2Q? @6Z{׳\a 7'~2֋mhLO!'9A o &uZ=+d PCe{5~jB~I+h֏|kD2{k^q(ߚawZ-0Z2Q? @6Z{׳\a 7'~2֋mhLO!'9A  *LD.T7VPYy+'|{DyFRiSNLd.|ɻ2sѐ: A\xŢNV*Z"Wv2sd7CsbW81hdo(W/l0Sײ]&~gN%񎌤W C)4 bXj&3R1+oQ27+['T|.Zd  Į~N ~Ew;=(1>l{uC (!^m@!U,A[eu` 2~WѯOg6* J}T-0{H zs9^ !Vh^ȲSg2my.@d4k;h! B>~Ew;=(1>l{uRڊ5Qx4Yz?"OʟE_W_P!~WѯOg6* Ⱥgg2my.@d4k;h! B>~Ew;=(1>l{uC (!^m@!U,A[eu` 2~WѯOg6* Ⱥgg2my.@AQ^TCF?/B4/CY)s҃SQ d2ڊ5Qx4Yz>ZLT-0{H zs9^ !Vh^ϾEֿS;=(1>l{uC (!^m@!UuJ eO/]D?j+hק3}EB*D/C"_4eO/]De Q^TCF?/B4/C"_ʟE_W_P)EyQ soBн|~vzPc*}}]~=B$ AQ^PCF?/B4/C"_ʟE_W_P!~WѯOg6!@ʩ?%jtS9Xz=[ߢ?.U}>k KKŕ!O-2U\*!.fy/Wx>g/P^#WpUZư#ʮ(t&i33eGW򮶵'yql9Uu;̮e(t&i33e̪IewE,yC3LE,nneUu]mjN+.es d,ec d,ecsps*kRw]wv+U]W[Z{Y\< Z+{#e)yBָy^exP5>^y2>6Y|?<+kL_< Z+{#e)yBָy^eʪZU &@C+""kmRw=7]EK{n؊r|'ᕹFTɗ-n'vF%ئkz;̞q|[*!.bf1n=|[*!.bf1n=|[*!.bf1n=|[*!.bf1n[ ٻ^aQ >(̫0 }1ow6$7\L* rpzح*I!mR&\"d>O+ss.Z[O%ئkz;̞q|[*!.bf1n=|[*!.bf1n=q-PzU> nƶ- "6LkpEn>N&b12{YVyo0U> ndVyo0U> ndVyo0U> ndVyo0U> n}>"d> I@eYpSqǾл{'ٺaQ >iﲅ8NuBkN&뉅D$Dez!N!xPD쓉aQ >i(Y^SD^,o(6$nTBODJWB9׋ /M8&8NuBkN&뉅D$Dez!N!xPD쓉aQ >i(Y^SD^,o(6$nTBODJWB9׋ /M8&8NuBkN&뉅D$Dez!N!xPD쓉aQ >i(Y^SD^,o(6$nTBODJWB9׋ /M8&8NuBkN&뉅D$Dez!N!xPD쓉aQ >i(Y^SD^,o(6$nTBODJWB9׋ /M8&8NuBkN&뉅D$Dez!N!xPD쓉aQ >i(Y^SD^,o(6$nTBODJWB9׋ /M8&8NuBkp]oJU'V<|$;nCm'edT=Ү^5Qtw(iCzzǛH*_wDQ~QU-P4*$e*K1m{<pr^je^=Y-^Xulx-U^c+2\燷{x޽Zk/yg5*iZEo7 ^z5ͪw֞;аҖ4J] vMu+e]JimڱlB7w6mY7n]G73UfJU̪Sb;ѕU]7EEǟ*uѺluꀀ@-f5+NZNF&e%!f@` 6Ywv6nķM۳Dٻ-^{$WmJɤ*FՈe"{9”T?+*"Qe(1)XX,dȱ*ȱ SL ,JU Ć) Ć) L `"V)bQ(XaY*2VA1LRbIĘ,RR 2R+**`U XVJFRģ)bQdY° a &R&L+KV2V( KU&L 1V(L%a%abMn~awwwww j݁<˿32U& ۪7\7[=M9[on-M/VeK)nM$b-Rl5hЕljK&bZJS&2d0ʯ_/!#-$DQVPEDQEDQEDQEDQEDQEDQEh ("("EDQEDQEDZ"("("( "(DhDEDQ"(`( ( "( ( (( ( ko?+~Mm}??_ޙ&ۻ:iYXsS+4ڦI)2)Y2&ӛĒ~c٭Vkj8)ppB6C]t:~Z,&J+2[)Kli(F1c*`iK46$l[Ko~*hv(y*xïO3{֮};U֩$mj[@B}޽{JdhRRFLєx{vF*u`nk(v)3ڻbMݧ^:a C)TRaD#` S^ۣ˗M:8f^qΝm:3 ɌLdf3WZ*=ѝ D;MH)9%2-j][jꢗTnm:o~_ UUVe*hדc80c0]yk}YXNyL]q~^zk߉弑&0S%.]jS)f&lԥ6ZS)Y,2jɥ){$ߋm?Y!RˬPn%^G!ynzr@alٛq*TmlI*m)] 3 mzZ]kZKZGhPRj֭Rӿu_UVE4hѣhմTj-Fhڶ6o^Ks׈ @D!}̂J@ERX@fgZM.'7sl-Fnn[<5'M6)wa-eBɽoԷqM5wc5-R4uV_=z/^wfBrI|޽Uu sb{xz\_S-J0y7~"$3])MN*ۻDӻJF)γ3Y>kr2R]VEy/)]J~f-yyywv>Xr X.鼵m6i<+g/#bz!8Iz|r4o]뺈]v7N/{wKd8hv1#zٲtv^,YY88լv۴ww {V[U#D^𼗗vxc7wo]nzr[^MMޘ'<#.6]y_/>{m޹3z]v:w$ct7HNllIu.ϱswk.iawfnضĦllj>ƶYl;63mvvoՇ6ge͇z.╞W?Lhu(ּɍX6Q޳Xm˷n˥mv \.v7swMr27"|{.ӾyM5|$Sas.˹}6,aˋM i4N7;l3Zmn%|/?=vͿO:wq~5˓lf?[>x޻{['aqϋ#V3-:Dqj3f-:g TO㌾x?JE&gԓyhM?!R_I`CE`CvINEq㵶Vo` P$;D!?%BeZR/fDAOmrfdϼ׳ZVۖܪ㹪ەWͷ**⫊*⫊-LUqUƭq\jƭqw\Uq\jƭq\j.*Vծ5kZVծ5kZVծ5kZVծ5kZVծ5kZVծ5kZVծ7ffL`[ln[m{{[emmmmeU6nҪ2Ucƽ㧉CI¥ ^95pJ"b7TUIa˸Rǿ^];Rxze&efYF1bьc1c1c1b#mDDDlDDF"""""""""""""Prw$|>O7NI߷]dy';<9ILVI1lI[|}}?m h0P33HȯaC}~O [V}6։%{>dKJ˧Yl|J?fzzWutOx `/)7=sUdJ1'Rb l4ᯫqGÏR`Jیyzl~}oƿ=O71F#1ccc1c1bbQEQE """"1c1c#1c1c1cƶKY*hڄlT"Tr*+J׿$fl??LHG&IO=T@v{ڤuUw*1X=XPc\*D~eKWC˥>WqTQ<-kreelv~:qɷ 7C|ϟ vCgE_,)Y7m;NCԢ*A 9JTCP6kZ,)C<1uF蓡WM{wnN Rk=_C0ͺ迡U^_OoݿWnaaaaaaaaaaaXa,0 2a[,0 0 0 0 0 1:Gp\Ors'1sjҨ *wp"" jіh 0 ȉ#"""[?}s[/;z <;{ŞvHQJkV8tUg{?$ߕ~K5@@[ $[QF g0HRoN?/ j~^xu.T[c9G?OT9bRAvq]JOW_=k8Q m~iQGHRώ:V}gT鲢Jr1uw[`>>DpfEo]8) Sppgl*U6~N mZw kZ֪$ b?Zrg4߮y_~JKIwn;wvqSknd +&c5[5{/Q&`;gC3>=KgN< %[e9iV1@LI2NKz}wwwp@ zO߿/<7w@7@7@7w@ۻmmm@=UUUUUUUTUPUTvݶV۶se{2 zuUnӢ6 ϩ͞;{tT6-$IЮ1 ؞Oc^]D:k]M 7C'p܍w~JKN )_aP:l-f>R^|p|(xJ^ޯ]zw]"""""im6K6]ڳ 0,A"Zwj `Xq0,A"+WvYb `X 0,Ab `X 0,Ab `X 0,Ab `7d.K.6mmmm0, 0]ݘ]ݘ``X``X``X``X``X``Xت_RUI*%IRoOwfe f¨ʪ⑺+?'%q9`~'C+rcEr; [3330X-msIQG$Cow cĹ UU13,ĪfUhQmQk%Eml Z$$ _kkUV}o{mFhFZl9V*UUbUK$I@;@XV*Yes1LY  @$$$ I"H I"H=^]wujխjՆa֬0 0ֵj 0 0 0 0 0 0 7wnj8Pq6|J%WUҡ直*j;2w5L~~Wa xG fsGLN%E*%6mR߮\ܝ=I<K nidb