summaryrefslogtreecommitdiff
path: root/Documentation/sgi-ioc4.txt
blob: 876c96ae38dba1402e79c11a10ff1c64eb5741fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
The SGI IOC4 PCI device is a bit of a strange beast, so some notes on
it are in order.

First, even though the IOC4 performs multiple functions, such as an
IDE controller, a serial controller, a PS/2 keyboard/mouse controller,
and an external interrupt mechanism, it's not implemented as a
multifunction device.  The consequence of this from a software
standpoint is that all these functions share a single IRQ, and
they can't all register to own the same PCI device ID.  To make
matters a bit worse, some of the register blocks (and even registers
themselves) present in IOC4 are mixed-purpose between these several
functions, meaning that there's no clear "owning" device driver.

The solution is to organize the IOC4 driver into several independent
drivers, "ioc4", "sgiioc4", and "ioc4_serial".  Note that there is no
PS/2 controller driver as this functionality has never been wired up
on a shipping IO card.

ioc4
====
This is the core (or shim) driver for IOC4.  It is responsible for
initializing the basic functionality of the chip, and allocating
the PCI resources that are shared between the IOC4 functions.

This driver also provides registration functions that the other
IOC4 drivers can call to make their presence known.  Each driver
needs to provide a probe and remove function, which are invoked
by the core driver at appropriate times.  The interface of these
IOC4 function probe and remove operations isn't precisely the same
as PCI device probe and remove operations, but is logically the
same operation.

sgiioc4
=======
This is the IDE driver for IOC4.  Its name isn't very descriptive
simply for historical reasons (it used to be the only IOC4 driver
component).  There's not much to say about it other than it hooks
up to the ioc4 driver via the appropriate registration, probe, and
remove functions.

ioc4_serial
===========
This is the serial driver for IOC4.  There's not much to say about it
other than it hooks up to the ioc4 driver via the appropriate registration,
probe, and remove functions.
2&Mf͝Z^vyBX!3a?.x\> ##P *Q ꤐ3ʈ>̨n>_pGW9$۷Ҡ8J9? P x|`8-&L0QENKZG|?:dRLw@8VB[ָX|6yF2KI :0ͦvjs|r"Df70RG๐wGhSjGק= `OD F\FT[qX-#xp nZ?[7k'Lsy}lIւ0au}s7Y`(8j>t6ɆrY9ƒج2[pu2i÷5υ$*IOrQ8V˚-awjr9=ϼ`>/qTse*~\V>!#,KMEϪk3O;'ЮJh ъUfwϏr5Ԁ,͜;jTMVT[l_O [m1W&vE?MhgK]73N3d!u'aGXD/QD?*sD TH+N)G#cqZxJ%%z-ofY!{tAz4S31^B uO;CHq4 yߨpƒ1TN?3HZ2Ivv2!.zt{팶ۨ!ѴIDiI[II:KR}]j*"Ta rjsDL[yy_EoO Z*&"gm]pxfXϣ}_M-i~~|6`1unsɐWۚOUGzn/m[.d >Ӵiy1z ׌׫EzF5?|rbWk۵}αļDp.Қp0&RNw ! +v:HUaRq'S zLU<_k~3%Cb ?,osҧrox S_4Hp`c@4`5N't'{E&5K(6툒Ȃk1O7VS,Ѕ1QLԑ5PUEACu4<2 w|hfO@rxq@ bH@7HK8 JpfnYT\ta3OT tƙQlz $|[?? 5I@=E~E9c$xMJR/AEZ|0p^T;k)E@ճoxxtKjmdߞ2a"AA`%(@d" `l튶dH? ;giއT $3$ a<5>tƥC 6vS Mh&/"*?j⋍/ᗎ㮯!Q7:>!-.ƅ/8" Bw-clˠetoF WͶg\<70I8IVu]3uL"gڶpފdPr-D&쨖aV: @!ũ;N{u`CuAJpt|-l$ 95#F6l"'&cC1 i*I(+zX-5ó y;P Iމ4sOl"N%i ulon.(.۞ yO:HLpqdjr(rv Hv0ѯYg6i5괺n"% A݈0lctP1Ɉs,[p2'k!ON C;ų*]L;i[ *PIB%4 y][k!"?.: О"0Uwa vW3B 1e$0|Usb feڪQWR%~?ϨOG_˘mmMbXvݕHN]C(LCK5\U9j{ՉЍ1BHX-8(ʜ%Ts9Vq^Qt׷ݞwGpٟ4Qh$,V>!k/t"/7~ܮYE[+|3sFt{ 3ޚ3ezjwS!ƃH6'I$O bu[ru^o~Uhj:ѥlZxEHJQA]s"H_L, ͦOк$DJ,ak:kC!`"! c;8fAA?VCv<$KzFksݼ'b" ?4hhR[3i9#1:.((~/kA?u;VKZXMu)M "pJFlMkKE.H?ScAITbq$%!A .iԃJULLL"(*ξn^nvvt-*cuv]N?nb7Hx]Gs YY_=Ytg)rp2oi:JSsÖ?nxQo~*=c _X1|_t/ss*  ((n.k>?6C3ᦆ9NIQN"h.9"Hljխj`8mZJ]PUUUQ[b/mIT;(߶a5*6! GɊ 4 ڎs:N!LD ,UX6je>Ϋ1OXgTSa9IgCyeXYQ:sW3sfEX7\Oǣ.?7'WoͅI;œ¶+_v+/3JnQ 7Q\*wyyNUpN Gm~}WN{wrԧ$>~'aQ}ntә>S guu ڟaīj,pSX/|ڱ=F;j5Q)(1}r/*jb* at"zu$" 3Hj&XIAT(Hri i~GbOgqlZ31lm u`A!Q @TR FQ: DhpxMw0@H6g;(%_obE|~} }Y]^H,& ̊ꮚoόj S@MJET<`Dc ܐ̾,zWYlҾDG;kg4Zl4#/EԬXv(E]P?Gv-k_bZcOkUC~^fC,PkkJ.x5guj G]^It2-{BӜÄ9~kL.yl/tj3$`=pùE;~[\ /5JOẔp`=뇷u罟|b066;Fl{ۥ nxzz_[Yfb\a#}( ͝߷*!%PQb41b9_939ǚٺԙ W-#AAj QG Z hB=Hz]mh`~'~GdGexhÃv7\Jbid#HPT=۾"? |0U bIq@3`DZT:}z RG{XtPE$z~ ʭE?{|%e>NάWG-EgrT*lx2.#Y@[GL}|Յj0Im?vٺ="w~Volmϗ}-_s|ۅkx3+DGyH%~z~Z݁Uo/MS:h8?ٶ5᭗~gυ]ex~:_)B pj0ɲvZ+p431{ [vZfa忴iVc8ecX{Z~- رd8WoDGw0ˁѺjW~ b7?Z6>x:[+ukW%fYu۷?ӵuju[Od/s?Ϧ47L2n6i8=޾/<Ģ]D( Y0~h2;.2L{ $YCvI٪vcq;V?YU]a9aWbEcote>=͖ٸsЋ{i-<ڸ̚SͮT|cja'Wn=QySrנ(6<.蔻,?:Ρ,"?:UD]Z-sJ(XXQlFD]^a)=~YTk.v;<^zY :$_vZc}x^XB B*X>/QQ B)BTTc@Q_yyUkTӉ'V!TL#P&}UI']i6{UXnQJ/ x,c1X8.o绸ЏH;VcFLEIMEG{`$<'VV )˜a[lZ-rtA"/R`Q&] k>.E{mq >%߈oe94lІwl1u$c Br9K` exCi*Gq9n\ m߅[884X:L"w8VxĉU@\l-ćCy{g{Ms<4g< `)s>R9ц殛޵%q89@)(}egB#q7x080fm -8d" ŧO1G' $N=|~:MJ2"6Wj. }_mQb)"x֐uM)T T*R>[ɠ*Jt$3?d& B&Z&a+ii(XOPr㩊~*iDc R!B}3~|xxsB*&a4x迟w/ϧ2O?;cb#?u!0_Eղđ%`H)V H$VT@b {0MRLTHIEK|fDID?LDQ!M 3$DTLGC!HEyΦ $Z[< A,p6J\P2KOyoAI/GVS5}wFf{,WB"@0AaW 4"Q4!L(D1 2CS@JQ)ZhjD@zA:\R1 hS9' )Ji RR&IP M,PDA 4PS0PSTU4=] z?8v0ɂ+>h`JeD+ILT=x;3HzsmEhy&Lq:΄2M5&"smL%x$7v&< Wk04>s#_Jizmt_<ʁoIHQԧ`k_.a{&@h͓A}*^N%4(P4:VIд2Pҝ_$8 G%Qә+ZVvd h)fidDW='rFsg f|ED슟O1.+ AK3Sl0}<.&~p%_PaLm؉y "H?yqr1_ӿ|\NX9aOUʄo~Np(??AF<"i$DSo4||_7*&~5U6_:b=Ёg1;1EGߥ<8qVt{έ':M] ۹9p:R9>~MijYt!/2vG*rk1t6o% )+l{ u$b;|lHND#n˳.)y|glsI((^uo=Zy43˜<ŶVi*xh@I{hu SB֘ߧ 5~'!O3l| Q-&7ѻuk(ߓZT q&%`Tb&e&6q]&נj6z|/Kϻ;ƀ|{^N i6 NQt,o;?.Q_fX0Yb\?eơ׬g4' Ox.X0ME Ô[.4~_vϩۉFvLRU芥țDM{nXrnGDFV͝8Ybۯ$~(2u+a4s ##wӷ[QKk7cٟT'kPlY7~Ͷ1[m j3Myb;jsecu8,ZdX.Wqwu]կk HGxx>1Ýn֘\֣/->>ncI`5 ,=M"DG*O墹D~)ʆ ,;F~xo}/n\g[HF:{4q*J2Z׫x!.&9# oY3$HLv;g_vVΒ Vv\'"N)%q1a P~OtEE`MĄn fOE1vSc5B.[PR|.|">[/w>흮o1:{-Ca}4zog{·I?`ooEo1ݰٍ)T&Ӻ~<ґwyC__>n"+\a[@p#ΗQjk7ִg6'?X~hi |7m{6oyNkͽB, ҜY1@!1ᐘ;g4׆2\?! рcv:||}r^BՋފhE 6ڊ eV79n}6 sj&;?sHTlDvuL6Ҭ=t@ E̵Z jN~Qؠ|!]_ZJ\H!>ھwN_G>D<{ uBPJ0#͠bv;Ǐۼr{!_{b%3{r`&U"u@$sw#翍Իρn1`k+ՆCyY<߯j`sxnӥ!Io:54.tHtvw>=X-b]_ky3ޖ6]j^O' VNЀGCkkOn;v'>EU YJ =Vo?*NMG|XrVw @]$è G DFn#ј?(z)~@^JZ ϪI5)!h@0*a,ߓM_N?«W ;K ꎛд+ѱc0y~K 2φ*؛pP/P~WGnMlnWV۵ϸ ۽D L~u_uaC)Cyz/Ӥ}\`Ë_?=O>$=\zPJafePxۺa!|p}~(i5D e^{>ފ%ɶ&]¾c9moi:۷>z\}:f(tCA=>\߅UΫXA﯅uRåGn{:{mN;(+i컌uk;=mhwllZr^z\Wmm7v<6]Nh~S mٲu>}m' Fve?9u\,"#}r۷`ݫ%9>羷f5xyS;;jsߺC{+^_E]t|i]VNavGz͕;ߛ@]6Uiwi#{e'^-e[#zA:xكğ9LGG@|%۷~+,sеӒ"EȌHo<|1>l>`t[z:gNvvmyS_;ew}]Y_ fFVpur 1s \9$}#&{1 .ѝ${, Cw ccqn:Q~=}qg^zzoXtr_ARAAjTE(GID A_بQStwxzUpaw,P?`X]@2rW\xuM\z5a FAdjH J<ѰpR3 0j&qW aA/Jwzگ[aP_L02%O븙aK]y}sZnwŮtC4h1j4pI㥃` (&ƐE] Cmggj7cDIl1\KW8Wbn@`&.A#LQFU٪t.]{1Z"f@ IB 4/ UM?0xx\.s ݩAVrHt~ 6=k0a냼HteW'2/"=Hm$@$1HcY{cr:w' vʙp=Q"!b ;zB.׿CV dq˾tq;asphd6lg"3m> zU,7h|b-CѷI+ +t88skW5SlFXDM1fgDc'b/Dq m.~]~CЮ?y$|3?wkbՎ"vE0dO|rG!_Ŧ*}]Sej6{x~YdkqnOtj9i}]uJ/oLq |~B-Ъ.?@t9 R=ҧ4#xb1  ys=Wo/;wS=T3REĜ(NH `T1p 2_IM%m]޾s֘/GS b$ {Fz~cA ұB ͟j9+AtW1 АEN8ze&n".9C0>w54-; vB.l;ݶbb;Ǎ޾2% L޳j8Q[(s῏Etfq`>L+ -nGq9kphL,J֋ep&S,攑~ o7QѤԞҚ#|]JZЫq_l}S~/\u# =8S }3j|?fHw修/go](<<+P#}L'Pv:/ p Z_ٱeg=H]T9ev \{C1u|>OsnC{7;FY?{H.eI3vo[!wm I>c$/Al~J;\߽$<_ڢS^b;wlyK!F@b~;5IlѨ0YTbh.w'MLF}ɇ;YqQKZn8~q_er#2> x{v6rǶ.c6@-|gW'E|;3s^ٛK7/`ZrŸE_{4 58 P |(0\rw7|1k;Vѻ~10`_uWcCx_Iڞcf-};Ϻ<(~p/۰ '7agɽ{x=[޾"w{#+[Oѝ}+ߡ|va[`n \=Zh|A}yZxqK (,E/Wt>L{:T}_M|53I;qh;}{۾\ O"{xҚq8÷u*`_CnE]8y\8[])P=H$.ٙNo< & t;~(@jn g}]qGB ,=zoWXCHkAoц㳵a[.P 0C9<7f-}~)nXVx{l?7iOoKۯϞwc33Ȍ ɟr1Ͼ@ NWwuq;mD ٨x܆Av2upsp oo./N+yL^ьd:p @8l,99l-13Xv}RvLU.*#űMtx\^F`% J4HC~!=VO*55s14DTNbP-{扟0PU 0Qs_u$Q=b1w%`Y tR;Lpې7|z<͌mj+8FvW)*.d(%SUMR4U!3 :2>8hxќX_Un Ťg`V{j̒sՁy ˫e*y%9|mJ*>`EK?A =50\ ‡j*eYz:c"$WCm'.Y'4"9ZY/iw]qZB-uysILbHm5wEop.vgB}ߐ_Ǭ;j}G>pw+̣`QCeV\z]߇LGo^DA?߀ q(_Kt~oqNtCx@,_!g)@H:(A8 Yz~1}j" DiNC 8aW cl`lK#XoDڸ~q~YepX{GWpH[6@"~du3ڸG.c-dK.Ro5'C> 2cYxрЗZ~xCp@N\;dz&@f1[a2[1n:6e&L`JL-ȦC$>b_;[V}i$F/nUC8=}~h|BjBn!9];+ID~enEh(N;7R-6F?KPĊqc%%\DTq;d+ 01l963QA~Q+q; L*C"U H*N 8gronͮg 'S0t+5z?n>a2ߜ7i9!5IPD rm|è 2(lwH~~Ȑ~4_/[ X$E A2l^KGX,7^7ރOj7)M,Abw=v9A [7B ݧpc_?/7ApdG;ш6h>0".D}OTB3 <) *3|qtZ".vqqĕ^NY ^i8XӨ'?%qߔmguMzk12w5n!D1}H,'j=ǽV?CKg^||l{w h@xuvF}x4rvƣ٧]_4hN Xj"b^ZE$vQscr. <" <+4'y/$蟰Gj WyY+#D1 NO |h2UXq#F/ro)O&{M}̟9Ȇ]mK&9U;}IKUieSձi ݝF2ߴɀ+l!2mo mv-ߚjTlL.םEe/XcڠO` ٶS|ńsmIU`c'[2"|U~k]Mw}x~dj: Ne8}]:d:OZɊ#@\G2'D A9SrWGxPq MH82kM߅~=zvK[`_K1\BB.k!ngN.ArL# @(rZPJ(r{x-m4fnܤv='fo w6_oH+otG H$)Ӹa8Mr1gUW,>~Knq qaB!d6o7'kH$(=kW'3#‚VXsy,%!r|ۯ_Wuf3/s`GgfF¯xёchPͯ S ZЩ}Uq(/G>p=U eF6a#ֽy9 zb6xvp'{cO\K!r,6VUEX+ߒM͝CW CQ[})oG|s *tqs߃ںԸ/ N+xQcD@T 5~>48ow}~?LXst}ku_z E6ot73=xˏgF&%e??G.sϲIDmCw12 @TXdwhwJu}'شP5C*@%JA^ lJz-V_u_ ꋙ~;t[G'Kgq<[T]w&GBl< ֐aO&/^Zu~an]hnAZ)| fN(b g<<_xZ93ȝuMbfpPW|/8r:dE>2g۝Mq]b_ZcHs,dw4x&\\<,%rpT^]G6Zƪk!v&1!M 2!7xLV|ºu!{/NɌYPe*\UhdaѦhjHrdxp80{ҌpAs85);ne)*w+[5Y2 Ԝ8CBx%:&Bÿ˨ %.8&5; c%*:a4&ox/O3tq|375ʬfȝe4dFwX8s J{[4qyZkǏbypS.Qac}X4?Ip u*J-,Ke eŜG(dm+8ü # ĀB+$h+bs0"=)r3`4r8/2 dzˢ^H024%tOqquvU[U*>$CG(Fnܩnk?tþo>L%ZZ&.j"U8.ttiݖc|Eíh05fL5!YH &zvr n ڪYq/YⳝN<ZU5v:8#r(%¾GCj\w0}= !]la&@oJ|ջgb'yhuϝ0EX!%9#s (D:Q`U/f=Etp_%テ*/nɞDpXd@roH#elHX{o@DԿf#G;A}(t6vqriv =Ό$Bצ:÷zlP3LษJ4ךd!L1K_O')ڱFɈyPzόϑ h:Uz]#\3 ɖɺiܖup@8=;X!;`Xm9?fBBB}9}To 7C%F١VpJJ{Z#s*B@  \!raW888fUga $#EC`ׇ 2\I1Uƴw;M)t>;rD@8q`%z i:J4d %=ÈQ4zUU>=C0b!uHvupx_^?G6b p5 д22r2y.D27|) v.HM#V|!nVpv:|ZQv?21U\RU ߵr49m?/o?tv^g޸&gύFD)%Ay9K}%7 e8yr*/JC'Kqg!J&&^8W m#15n =s%ў3j zNG蜞Ag''t!c &pQ5lvX 8+:E,`)SX Jpu*C2/S ԓ R^iEeGTN(xaE/`#EJT pcV +8Lo1 AٯH8rZ2}d|XM4 ][`TWUfRQ_/NABЮocJ,!l/aخF7ƾ8mS~U=3x` 8ΕO?<3ˆW[=Ԗj coOX oNŒB0v5}OR_˪pm)b@Id1jݙ7=up˛`=Vcj.޴fI`'d^oe(YPLl҃rX{s5 ƅL}3:T{sr}@"!̯y Qk[mω3\zv8s?{y:s=fB%XDF耾۟Bwe뮌oežsd&l6fKqmiH۸NmzQV-},XKImY+J59}e1".ytH1_l]My?nJȈ2KUZpv6Jvk07,Xu-e% \}dz1χ})Us ܪ $0ENjzI['(P8Kr^Ip5V 0G5jv(CZ66zeVJ#f LgY};1\"׏k۱G?hot~1DOf趢g7>WUZ;Bt{,xo>l9]= 7it+710`QWaLtF@cn-?$G9rqf3_]9q_b*L:h~5sb}XJihBNOpL0X= SYyp7?iV\wKcs|Nb sR:V!YBo6xDK\v6)`LpYuOXcYc PO3Eg ECTvE{{cPt9χo {~NzEXi*9;lwË,\qNݎn$jDH/Ĺ0]''7¥IA*Y 1NvV#filQ lüy: /vb3jKcct8gu-_ŘnƘ7;Y;Z/mQvk*NԤ݋ ź[j8#6onϸNwlǯcU1(v]r!5*vM@&-Ÿaq GWV:o7ޭۼ{ꤲNcni`BDDUETS%R54*?rO"Pt!"@׮n橯^y5Ir~{&wbl۰XluPC$ IД>-I&Ǽq,pN6j8 WUE8M?n{"9 ytvJӈrNM)×w~YNSpۺn0)2421f@55B%糛Bx#9a}N㋛7هS{jFs7avivۜ.`sUBc1(*%g\Y(Yg ^$duF+96p,T'C%29"$3d_&w7 sLx1.`~g|ʼna @(({8KK?*5?Ѳwڻ8LP+]e n҉  _5mhT%P\|!\"&7ClWAQQiK' ׳Z ;g]rcc_j,nǟgC~%s5wOstߞv7OU߫3^aL{(hUV>vS9 Dh>g_x2FV- _2іN[+= [%9ڹ/DbTzH^_|Lkr4qګ t}mk.i5^֫ ;yƓt8AYc P8f&Ib_l9W pwӮ?o<+wqdk T *T8wuACH19;[6\me;՚gsLd8!WSWRys uo3^F? i}ϵ5 2cf=co E]D%1~iG͔86B.v@ 8mngMin@IΆKChD/%HR^ 4~tPB' ԭkj9)ǍYmU5&NL Ʌ>-"ª`f쪺]VZt!ل]/N>Y#$Y䆳 )fS"g+1g#rv&e|KꠦOLjҩ Pt6n iCD&HIln6Q{gkEHyA ~ 9ך_ul%(encsaŰƝEn? W5ǍM:Myd2~FAJv\ ǡ$Q]m)!O⢏ C &D\?zXd u0grT>TRA3k:RxDJsJ wcl:Sj^32h] K>xL5F'*`ݝ_hlI 94Fns8a(e ?C# K*s})0ظX3Qr1A}flllAyeՇub]SvMҦzmb̰C~YOnb6`cXۈpV9q1KeKI=a| )\ Qw#i?SGWRi>*$\z.X@\qu'" 72Dj83f pd>0tX(Yi7ȈIg%q0)@|OD;]o2=_U<(eQcm^ͺV\TȽ;وKNnX$Ɩu@PvnP.9ɥyPN5phϫ+A?=ĎtUus/TUWv=:pHR~!Zk.$#>51G-^0N6׸`"pgqg"\v/E6ÄPS{lY@Wfn=àJs?YwÊ]8Bj?!~KH]|1N?IP9c)z2GF&y(q(2Ԃ~ pCjk3 EweOVYzhhB6hW ب)ӏ%Z׶ sh_FmM%0!U|TYffn4Q^Y.?Sߴ N͈ ;#"4uU.TQig` `bPd ,8 ݤT^cQ( Psm[9,gmW\/^ˢtzs = ܠl iZW|ْ$"@]5!\3^ۨ\Sz`o vEc(s;ԹB4h rUL ƱH}>xH Cr,\,2wAx?[(q#5=ÆX컔8 `r_=υ+dpHq /ѷ)%6 8n|ὑ@"#@<pNh7,V6dV.^(eH$AË]Vv s§ؤHtwm9Șu ?7hp%T~;K5\/@D /{>,sx[@)g0&cI:ڦ)1X뮫8c[An~jKs~^)yn/aEtٲ\z .j8j:ETc%{(Dwy&"aieیvze7MsBڹ{זq!Xr:~T@Xܢ ۻvWVknyswm,媽hM׻AgC9;Y1NъvSJ:]ZBzǤӑa4R%˸x_  2UrbX*<썛v6`sNRNt/T@B_DDjļ_>3sX}qq]#o+Ex*&q{̽h)\o\iqGhɗZ^صF ҿK_?nۣ]cĻRar5H:/5g;|#s1uQqb>>hopmst__u3¯15n12yɀv1 R]C,@= eyĥ{S-":#: R 'z?]+N~K>8HȴV"}& px0h^.Z cC&̅/Σ>4dV 0 4#W#=0hj0/M3Y0eIɖl/n\XɄ.O뾙H WޢzH`JO_rS+#Yo;,KPGԞ\t Dgm}g:!DDU6AIAky_DAh7WAͬ Q=∙#&υW)aSIqsN^kv`(-`j'{ݪ1;?7~9Sq¿O NC*!JtMAs"\R'/d%c[KC_6v+rq5ins/t SƽP( 'mu{?=M6jcEi;bw>"P!:8r0U'(+hl WHiL1U=sO٬|c8v$Jg?֒ܙϳir2N:lȸ! r\EL{Sgk] ?5ט6*σ/Jy_j^kSvxKˏjU?65W8pӝR @6!0v}Q2SeCc_ ,FstF,p=S H>-R$t|U] eRr6JaH>)3G-~o >/[ukHKymɦ5 RQ}\@'splO׿f^/_dJ&Re%P^jn9vD3p\;X wa7߮j>qG0+7>DOs/Tu[8^1Exei"xL_y1kwFwn?d/6׋*P_(OE>z88wd-:K=O < nZ.^W\LaҶ&**+:]L S+ ,FWp;&]8_*^1\xv_NC[)|75o4+ m%X̯WǎXS.Z/L, ;Rwt}$_utp2^sswrU-f= ƆTSsG,XUn-A!ǷZpU0wu]X>z"f*zHhc9Oro`j27GQ(9 P A%ԣ4\,Fp{`MpFY,a TC5(_Cz|RC<;;\ |ukvm/!yqZA gK9KsYt> 2C):rg3rnܝ7>[T%;fB+j\R'vn :Exmsix#!ƣc[TR*r;^(<bOWgm_{.J*bJX8{+3$P9Q.X 澧9#=9ť:6.?U^|gG菠c:CdzVpvi`YT֊"U56$8b~l%9 lA}!ЀأƗU(? ľQ225mA-tgAO2\L f7V7W@V%F!x} VALf J Lme]*O?y"MSyŁ*`,fEeɘ֔ч'g#~.;nh{Mp۲aR E|Ninr}D'5MV W&X걦AibFPp̈́Y霿lp : Fj = oSb0f![7҂XQ :j*cO`lNy%^ Pf>#z/1@ iD$-ۜ޵^rks܍\\9&Obyi׉}%*B iÊ %'BntMFtE]:AFyCXO €bA"Rɑ)/Dm.V\vXg4so… T8)D<6B;]ӌ ŠK+/Y;8LS &n@-,,v @䬙ߚ1<~NKo1jw@F((ux%Hr34%1"0!zӆy.GTVCi{{SoޱQ}\;>vϦH: ^h-U|!P:[h I^ %:{1ۊ GI7]b[]-6O$\1В`C~3"Wࣟ"2rӣeeӜ}N#K.Ewњs Cg|Q!SuB+Mf6l1uMʇ0;=*Blg';#Aģ}s/l{޹YHu^rz3Z^xcd!AaֲsϏ汈aȯ>~ӨD% 0dsF1vP'~(0<~K~WEH%ȗB[EJJ+U+U: j?X'H,یSLbv h9V9^l=vF%pz45KgyV8x7i?BaLεmVk3ru>_*9}ß]+>1w..hV[jC_ԏX_к9.W\_I+Fhza8ovs#rO7d}2#&zHY0 wbFnujD t[/^Ԉ޷ zEN>AJ/LLGAm՜ٶE@]1Kv1D!Nĉ1 ǢL}gWo{pMyڨC#˙Pe`iwF.kv;Q9o{b;\z6s:0SM2\CFPW\FnhtJLhK1ytպSMb 4o d[z:$4U!Vx}HjE(O萈1+_͹^K h#IJA΅chۼ(Ȩ#I!iVWsQAr֒ɶUsÙ:4cqCw9t;eG+ aF(2Έ"9. F kt0=?Mq%:^D\q>ƾ|ⶏ^,qp/>%8Nt"7 ;Ds-`*&+NQ0t98wtχl97-nsy^(uPz\r5iGw:]9L,>atkE]RS{øQB01>;v}G}g2W9UOrBz7`݋>eDBNzʣ1Bީ8dEVHr ֟y-ΡKZ m |#]u~;\͟z*;@O{Y5_N51 *x\-rax\{(rœ@OB0)gl߃ax>^8HB c'1էVwڋhΏO~1K8:GOL=mCXnׯ6sEUuWW8KACb8$(BOL|pq=yNʩU7so/rNYGj2~\Xn܄H@W} hlα_݆tua`fS]sتj AI=] -zwr9vLת %n]+=[ʪ ˡ   ޝ?G#ŁSxHWJ8 }#3 PA4jh*VCb" ̜:X0nnm.6p0/=_x g ]鎧PO.tRg}ӼS4KpM% ݳnfp<4)X=` ,yAuZI'%+,asafP|Qs>UeX:XpBͷ +|:Չ`3<);BUB4 dl1|08mftw0yE|"/rP_p|@`ر}^^@ "Xe+]wX,q)#_{/_ƨ5 I\hr/U|N[k8ebCYI=μ_I\:ruuKW)0J /m]|Z[^mb*#Vy)ʫ^uٹCt^Ibȕ)QDtL=$@֣#~&|ٵ @uŅ v.CGCLKc<Ǭyvm>9%$!=9[IW''H6w$:*) }X+D?{mBedDnEb!%h^3Eа0(3m9vW/Exl|Lc0n-!m5ڴ#ȋRs_hsBs=;GhpOT"w# 娪]48 ?Ƅ \q2ĄUN2c>b>qVj>l`phuĮܢ%RohD__%;>$r:a ^0V|mQyAhl%=dzfS5XZ LxaJYI`b5lQ8Vo) )b'UaB~1Kҍ Cwܢf{.Ӓ:D#"._׈͡MW:"H9ُCln  릖BZK' O Լrk:50Vc;ǀJ7駝W $PqxB.{U'ٝ+*?\~]"k0P P^n0<\`_CǮT5" .{r5-}=ؽ;"[CTubB@ %hi3OVw?EoFM0o7Tcqvd JOcŅitߡ q|t(Z 4 [”pS0ͺ_yC#uV*q_Ы_tqpxQu\aߌ 3C=ô&Yvk%vÞFLLK6T xHf< Úr^ (e7Ra-zNq Bp(\⠐O /tbwV;s=l ’iNjGFQ5*<9:hߐJμI־}jΔ+X0%9~dOs=8hk!_'8k#+I[4_bmC Y$A4 u54:kO* %{8h(xzTp~t vxL✕snA Ҏ8DvEw5l3!Zp!؉Dfn#1[H)[)(oS8̼5Fm]M'Y2G}xw|?t !E%-jOCEѯKhU򫛥ˮ=UAJcpQ#07,Cbjo|=-ۄt}lz/~ߛ{J8Xt;`.P8sʑX2=[T}R] >ޔgʐR]d,@]&ߏcL˜l6ubڪ Hq"=S w "(h~O&zCO%DD#螓:i7_YV{HO_\<|@yln% "!HF'Ƴɟ=&hkl{P zb 224DFLt'ǵ״sqt>v\ z5u"L8x]2b󨣊9 mm8y2f`7*Z;k%yC$e g"t~tŚHfYac1/s6VpȽDZ|>k5!҉'51}H}C-z*{] HOղ-&!l2u&c.VzƢ]d3BP2OXzϖ0{2Ar^Twx^l^D[\,ݒLz$/C}!=sD'4phxE^)/%KS($\sIjNQDARS$8?lX8vW&t+S[KͤmUK;w8{2ŒmdO#My󙝶+}X600` 8Vtg0 eM7]^$By:z$h3ФCC|̊ҏKk+Dzo"fHa̜wiSZ2TCqoငxp;9?J"_M`OsB DP+?q)}==$;;oMI'9M]Нk$lEvΌjS{ROw7yo{צEt?kx$4Ag[mGBoy8됑Ts} )Yfig$)ƤvRP"RGD?5zVtKs-*XDxGz8FJ=x/Onß6-5.EGe.a?WŚ;'0XEgȁf=>+ U3q~ %J>46`e蛧({KX="T&hNZA ){ 玣S:I8#N* U^/_n'lO$lrXC-*(eer/\|^x}0Txɥ7 2E\rduc+"efA Og z-ˍaCQג] 'Wܠ&"3<6J(/w"ż~1CI3MW`i F/o.NPNB M4Xs˲(֍&\JX]9B. :ޖq8;wѥ@,<3L]qK'Gy+wԓ#.f;.jZI(^׳JN7]ۂ:Gnb(&g0:u4ȁS qyG_D)J.`bB8B={wZ9WЌ[WGӶT0 ~# LXwGFDI أ["| N&**W,!DR]n6+g\"ZTio 7OfjΞJ~mji/~XN;U0OSJM"%Z=կ_C:QeHzAXQ"bV3ixĊG1O ٺof?)یzo0Ec"ȗp)7uOAUжsKy +9a/ea'd0tIaO{ Bj( )C NjC=3C)v jZ[i -6t?rX@Nx?u S7o쒛uXSSk=oNWg8S7rQ&b0PUB7d:>"EK b Fa\aW99\rp k-.% SVAm>,RlI$L` p4T'sg )vNᓕBR@ S)|Eǡjp+g_Nw{ h$3 9WU T "Bz; (Dڼo"u/@"! yw]Toj~>@jA7%5XpͻՓk-U&0YNk[FR_sjأx{8@bRDlُ#*bd&o5N5isE{gQ琿Hk&1ղh^+&KZʆʗ\(v.FO8-dH'ͼGIΦpNH~Xrk!(*“bIԨ۝=Q)g1%.[.w@N%@KRsrHyNN\l#ZHA6%hDDgWbr7Iz{a8AK6N/t69rc($q}[4N]ӵVꍯA EC[ a+a=Ž9Fwc|pg>krVY2*Q@B{0QsÃW[Q ]uzܴ=ƑypVߤҤ)"xMRQ=С<3UAW~ۯCwՊc9udťDO7 s J[z" s` hu |0/$dĨ?ܼv\t?LA^6釒.bo`ȁHfsf2`[&A(*@T&G<9U˵+% aAZ όuT A Gg===F0^=NI8]Q-?8Ĩ{Qv+GhV+#V۵?Z| #@lv2 [ǝ%WeubI$ܒ"o1)Źu3c)@?dLV >?c家[5t,1i:tIGQM;$lIppr? V:`EiN.u:ңbLHI1jw ,TDdXs`S`GġxrYFm ~8dsۮzb Rf-"/ q|͐Cu.\Y02w6_Ұ%盺ixǦR/lP cIbA.ђWSs_\m ~nwlX[!߹7ηMm!_D~tnNb Ac>Alh*e-`]!zWA&kҠIwguڰ 1"oK\"cV+;|^iؤu1ڰ{a[tDotRGa/(<Ѯ\T(`Ya'/XWs5T7z_4' n2# WVExF2-mp]^GW` `2o1bK:(_M;Xl >U%VU= tq#ѥ؟skF|C { G:l)< m8ΐB5^8yOo?tII. z/Wn(k嫗[G˼A"R{ɖ܂.Y)7oGiTTCbw[߇"*޺0^4L࿺6G$<8TGb6ļPBס02}{|s˜apcZc*Q62܀T3.q8ۤ#Oӱ2~-oQOI="Q1Ǥn@ >#Q5W(\qų,:A9rsZ o\7':1NqWF2~A1mRrWɭ_U$!pj~n8qrZ·M Z,pB$WjĢ+髟lƾ6לCUλjZ5Ip9I J @-GF*l=<1F%}w7[{l{%I%s_Dg'c?=KflFS|Q߇0 dF%@.~3_gO?`z@m+S5\9j$t(䭕3$}*WWsP8㖶1LpSUUG@ߏjwuD :#dPLaTD^IЬ">J ޞEطU7||FG"G {DGg7Fr|1'qב~kabs犺HA@I9ӻĶ,gz#4/j)<6ȍ€X'&'4de7sv.4tp~G_rDDml~BUkXBb XD "ʬCfqJ'u"=o>Q'2VadJhx?}`efE6C=H\/n\L06$=!^ȢឺE~ Pv +gRō]_S|R]! Wf{ц/Nq)_ gwz_)0"CŢ`U L[ypGI ^gWgx0f- .UUȘ6_?)s`{"g5wU8Mqmq~NEM;2)[cf79 VS<$-+G|R]+|V+qq=WrjybcDHF23PO/`Qyb#@~Q%?慅c1t`@+\0Vv'?W*)+ ]Lؾv&=ZXL|*G86{zAWtp29N.o k:fa`BVn0IxV:^]cۭD:&{'f$]C:b\XionvT>Rkl#N"5^&\$d>*AȎr(@o0nswy>|̀=)Gs\P]a iBo4"ˮ+]>.0E4N#;TZP~KC\=.z̎nunIvh>67Ǿ/Lk|[% "#Ff`J>K Å޶jyľ)Bf+r _>Lw.:q:nZ"X(ǻMZEⱏ' ׄHY<=f 8T=f\jNsK+>v]VBPj6E!c+!%@w%D/B1S-Ns̚zƳ6xy~1R8V(8G8;jp /q{,}H{5d; 8QDA-o:pU}m=`88&U8) <ҟN ~g8F%&%j_Zm@6^9a gV +ZI\c2rc1quY;9@b]0w$(>_iʣxS x'5s,w㇑Xְe|d\TqS1gսCA. WYG 83߳|_:v=hk4\VmJ}xбry~3̣><; P^Yf mk*%kWYq޾1s I؊5WGc\NFNq{]5|\DW^nϴN:C[~ִl hS,g|kR5E#/1-rj%VݽY޵ i4h:s513[ @26\-K;wF0m';}Fە:^f^cuD2yYwсu@D,> Ѳ,1 Oc߰۰8,9fV&.̋ztk$X ȾSo;E-ayXdt-!o G/3,;WsDD+8ӡwr# 7C۞P8&vGY7GxY.ZbOR"}d~e`LPjXYzfy#{"G#nMQDV7!2TéK9~eBox֫\D-~Ġ0#ZѫÄyXl'm Wieπt7ѡcƻazA:?ޞNǣanwd4aӢZYAף~7Z>I"*eϟXǶ_OW k<˟E^dFq鮘"禭2oQ-k".6O2nQ\R]9W+%+q^fsV p贈"Bh\)wǜG^7Zq"ecttFχ Ð#z RjHC^<,S,=zŞ+s]~VM(WK5"qwr ~lu~Gl+{. $N}DI̗+DG-8S跶8ĺU7&cAoR0a7|V\.M >۟ P5 ã㇅b>ϝj`w?>%ݮLBqN\8_7ίAH>qp2ø^\ȎE%j?eOS4?ơU+KqkB)(Okm(Kz-nڬ FreW J+oq=:N#ZWNj%dBw ˲&>ƉPEG-q_ A$ ztoA:KQ9dȦ9qe\<:[ٶ(P6ѳ}Yλ5.ziSG{XeSkhL÷NgePz0RLL6-`A_Dx:_5We"KbT<%!IU^Ԡ90}Yh=vLĩ"i#>ߢem-e7jsYk6)TOf)LUkGW;0p">n=' -쥉@] :,-!1s)̸Vན-6NkF~me=>ׄVX%j:+ pK@'UW+J$R ,dF&sHk5.W&wWvϗ =T?T^,u*_H- 7w"{d Futytb3#&'&q'qw*0>col`(G<&!?bӘ Vbt@?'z>#V|jkA X;cS|pTz\:0Y؝xQrdn `I2N <#|61?8 /P5[Uۺ8h@AJ:?-ƫQĒ S9oy?]20K !(Ymִܱ{UL}Z@. ɛ-0@sCEqjuk.ɇF<*9ȵӋ=$PGa%8ZQ s a zz߱Rө'!f_QH?iPȄ$="c\=*E OvΗiڜp`proC; *G꿹ys1;NpQ7,){El3%K>o7Aw=Rywp$Ox9q-'zO{ A11.2qKNhNp b_6O4[;kfCzi7|0]jw3hQns0w)o9{O-z p2I9CӋ_=(⌳^}m "[mARzuH3:_|&h۔E~ )}FFSb_|;+ y W)- 7Ƚ0w-"vOo/L8~7Iۗ˄tO<,"1*ndb~ƓsŞi|1/wSTPD\JI 0?-&q)+:Ez"nEjZcrbS̍=9n 75_/aIOvR{\D8qȼ6bARJ>-|_LOp $iBbC8~\&jukTEfG?Q{GdqzDTxU4%f{Aqí¨to j;3:61!:w+GZk!he@51~@y.tb>'j64B g=Q;T罙o)i;i>2f C|[Z~:VPG2K*]C8PszQz+fEqՙ\+L=!OD8-^Os}>OFxkEߢhgR;*.9&d,r[­P|i fRBj M,UMx=Z|vCivFn÷ǜA=xvH$"U,0@\blօf!p+j!B>J NDrE: ɚP75ñs` Q"9>X{$P-asKX>Q!*/dPYsU7@,Uwd+s1!G%|޵l◱,+ͫc+UvaEԭ{;e<f$}IpS$$ /8|¾OZ ?ul~JpdW˘- [?{`z{}ʈyjIj3PnSC9@>"dQ_kv>;&)e=q9'CdϺ!\=[W툚퓀"q֘FS&|)9gP㜱<mN kaZ9ЍsH_cs*F}m@U%'g5]ץSe˱b##Eک]HųRLփ| hٟy{Ǣ\7>9K M+~ԭj4s~}8nV**;r}On!PG|In3o{~俒ҺQBiU,$ψ4ug/V̼}֜.'u׌~Hf9yycCg NXH}f\ȡYEgrwP/T=wӅE4g=矉߅Υ<\ĆÎMon.VdFɖ-ݿ_EM|rfAV TL>Bxؿೲ?*x࠵pDPЍ+JrQP#U2 hZ):xcv'8t|NĽ'=}5_?C. C c:if ?A??(6r;n0}?1[d#<0^8(FŧIև"{2C|ExK $~~yFf=e EUmbRDtяF7Lfɧֱ`k,sF"1ނ"!%} VdwD}}7/1p,W? 9ףOFF8>4V^: =6irf?s @ "A[WpK6\'ٝ`9ɐ7c( R/_92e@xULP[mr1I|x<ì:9ٮ;s=o͍]7f|',Ye3ӆ0MIKqstl"~ /G;xh }>S5^ߊ>"ٖE!< Ĩn1O{.[n;w 4[ePPmޡIm欛l)%!DQ1dITo2* #Jh0ZE9%ʨluSR gyi}cb}xDX\}޹GF8Ńu$F@O D2)H~XhItAFm) 46~].\8QZCp2{^~Ueр6ܕQu^omųz a>V!.- Ak\E~ p]9{6Gbq߻&~}nUަxzkA7bg\ވwv g;|XF e%|KgẒW 8ot ACa JJ `sC<JϚB[3U?b.xͶTgeܥ0T6\UO~xjy,`7*X`\~V/\OW0*T>;~{_wߡ ~[麧Ō~Ϛ@Îҝjy[-J=mo.\#Xdj l%NńE"15=o@R(|J̙[uP'V&I>̛ixסجnf 3fXՙpdbc9R lBsL)GҀV)q=eÇsS-uV[#b0n /|5hpqcv:Oed,bYG֠ 7AIPf/Ryg-|=(ʃ=6(TJ:u<R,uTfIl;WK92̟>RĔfK2FG%hpl4C 0i_rnO6Crs4= 0Q@x0d؄)>,{ul8˳^Bpeܚ=,OG deĠ .sO;2C1gh2NRmBTs;u:$Nq|Sp:p]xLM*{SyH0}蔙bvcF~6O6=1*t{wXh_aWqT9;9$<ۏW|i4<ÒĬ̡j~3 $jo,{ѐR;h#wv!w]żҊ}Ҷa ռ=;7;m_6kβ7\ᆚw_|0sU߯H