#ifndef _ASM_X86_MPSPEC_H #define _ASM_X86_MPSPEC_H #include #include #include extern int apic_version[MAX_APICS]; extern int pic_mode; #ifdef CONFIG_X86_32 /* * Summit or generic (i.e. installer) kernels need lots of bus entries. * Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. */ #if CONFIG_BASE_SMALL == 0 # define MAX_MP_BUSSES 260 #else # define MAX_MP_BUSSES 32 #endif #define MAX_IRQ_SOURCES 256 extern unsigned int def_to_bigsmp; extern u8 apicid_2_node[]; #ifdef CONFIG_X86_NUMAQ extern int mp_bus_id_to_node[MAX_MP_BUSSES]; extern int mp_bus_id_to_local[MAX_MP_BUSSES]; extern int quad_local_to_mp_bus_id [NR_CPUS/4][4]; #endif #define MAX_APICID 256 #else /* CONFIG_X86_64: */ #define MAX_MP_BUSSES 256 /* Each PCI slot may be a combo card with its own bus. 4 IRQ pins per slot. */ #define MAX_IRQ_SOURCES (MAX_MP_BUSSES * 4) #endif /* CONFIG_X86_64 */ #if defined(CONFIG_MCA) || defined(CONFIG_EISA) extern int mp_bus_id_to_type[MAX_MP_BUSSES]; #endif extern DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES); extern unsigned int boot_cpu_physical_apicid; extern unsigned int max_physical_apicid; extern int mpc_default_type; extern unsigned long mp_lapic_addr; #ifdef CONFIG_X86_LOCAL_APIC extern int smp_found_config; #else # define smp_found_config 0 #endif static inline void get_smp_config(void) { x86_init.mpparse.get_smp_config(0); } static inline void early_get_smp_config(void) { x86_init.mpparse.get_smp_config(1); } static inline void find_smp_config(void) { x86_init.mpparse.find_smp_config(); } #ifdef CONFIG_X86_MPPARSE extern void early_reserve_e820_mpc_new(void); extern int enable_update_mptable; extern int default_mpc_apic_id(struct mpc_cpu *m); extern void default_smp_read_mpc_oem(struct mpc_table *mpc); # ifdef CONFIG_X86_IO_APIC extern void default_mpc_oem_bus_info(struct mpc_bus *m, char *str); # else # define default_mpc_oem_bus_info NULL # endif extern void default_find_smp_config(void); extern void default_get_smp_config(unsigned int early); #else static inline void early_reserve_e820_mpc_new(void) { } #define enable_update_mptable 0 #define default_mpc_apic_id NULL #define default_smp_read_mpc_oem NULL #define default_mpc_oem_bus_info NULL #define default_find_smp_config x86_init_noop #define default_get_smp_config x86_init_uint_noop #endif void __cpuinit generic_processor_info(int apicid, int version); #ifdef CONFIG_ACPI extern void mp_register_ioapic(int id, u32 address, u32 gsi_base); extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, u32 gsi); extern void mp_config_acpi_legacy_irqs(void); struct device; extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level, int active_high_low); extern int acpi_probe_gsi(void); #ifdef CONFIG_X86_IO_APIC extern int mp_find_ioapic(int gsi); extern int mp_find_ioapic_pin(int ioapic, int gsi); #endif #else /* !CONFIG_ACPI: */ static inline int acpi_probe_gsi(void) { return 0; } #endif /* CONFIG_ACPI */ #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS) struct physid_mask { unsigned long mask[PHYSID_ARRAY_SIZE]; }; typedef struct physid_mask physid_mask_t; #define physid_set(physid, map) set_bit(physid, (map).mask) #define physid_clear(physid, map) clear_bit(physid, (map).mask) #define physid_isset(physid, map) test_bit(physid, (map).mask) #define physid_test_and_set(physid, map) \ test_and_set_bit(physid, (map).mask) #define physids_and(dst, src1, src2) \ bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS) #define physids_or(dst, src1, src2) \ bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS) #define physids_clear(map) \ bitmap_zero((map).mask, MAX_APICS) #define physids_complement(dst, src) \ bitmap_complement((dst).mask, (src).mask, MAX_APICS) #define physids_empty(map) \ bitmap_empty((map).mask, MAX_APICS) #define physids_equal(map1, map2) \ bitmap_equal((map1).mask, (map2).mask, MAX_APICS) #define physids_weight(map) \ bitmap_weight((map).mask, MAX_APICS) #define physids_shift_right(d, s, n) \ bitmap_shift_right((d).mask, (s).mask, n, MAX_APICS) #define physids_shift_left(d, s, n) \ bitmap_shift_left((d).mask, (s).mask, n, MAX_APICS) static inline unsigned long physids_coerce(physid_mask_t *map) { return map->mask[0]; } static inline void physids_promote(unsigned long physids, physid_mask_t *map) { physids_clear(*map); map->mask[0] = physids; } /* Note: will create very large stack frames if physid_mask_t is big */ #define physid_mask_of_physid(physid) \ ({ \ physid_mask_t __physid_mask = PHYSID_MASK_NONE; \ physid_set(physid, __physid_mask); \ __physid_mask; \ }) static inline void physid_set_mask_of_physid(int physid, physid_mask_t *map) { physids_clear(*map); physid_set(physid, *map); } #define PHYSID_MASK_ALL { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} } #define PHYSID_MASK_NONE { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} } extern physid_mask_t phys_cpu_present_map; extern int generic_mps_oem_check(struct mpc_table *, char *, char *); extern int default_acpi_madt_oem_check(char *, char *); #endif /* _ASM_X86_MPSPEC_H */ F2c]X %d%:#]+eW@ǛӼ1te2X1 L5=Z(#j.5L1%;vF! WL+/CJ {&៪zi0qr_3PsD9rӓekA˻cg% 납4w5r͇{f~L>ww‘ÀD6 ,I^[r-d^cx#BqM9Q yC7~Ml&ؼ$dyǢ0m7,sCS*>=LՀ3#BO[ycaq /a6@Řl*.ia]mGZq Drhj63.Ha'c0w$I5wo9wrk2af$fw9Ț&ja#T'~ۛ& U1&IcKCn8> qþ.]df#N[djɷq׿5TW@~ZG5O}_ !} Ed}#+1km<4-޿zPg(w ثb=:Fl:,.dgDJmP.iyg)Opړ@p!4qgzYQ,W eQi(TՕ΂,? b)z2QnXH4ph5Vj2]iilk cՋ`ed~8`aMhC(Zp$LSZ!\Vp|a/Q%Yr>: 皿g~`J{rR̳JMxVs";J/SZn 4Zzu  M܆d_~(tE) UX@pk"X{177ׇHXI)K4:Jc5>.~Uy+X:.7J)\17ÿypv : .OE3,bʞDIoG#<`UXbQg[1Cy/=+713jy)K`KnISF6')P!8D!p_;z Ŋ]`~|oZEpK4Md0p_8au~V}N3 `1(v`]jO.H'T׉5L0An)\i==蟐ϥ.X=5W8 F*XlRxoc#1ش& Y+,,&V}T e{AW=T?/]l= w>~(̮)DU W Sa+`ell8~# HDDMkã̔ ''Ψ{rbxt* ~z=WiΣfW^ɚ q6.y\FhM/F4N6q5j ݼ3bN-9 n.byJLvm)9F[HZ]0r_)G5C$K{r|?@f!HQ&i,1,as1fC/Ѕ ;~ω fP kbk~LӿFFvqaM!F(+I͍B NK4zmoDZԇ7ᚎ=ŒP: T}ԝD'2#1'b9kUC`[9_Ł4b>`B@Ώ,`l.cO[dN]8JMwf^; b0:6z+7L+O2rЇtɎ3s_p9:<$~]ɨɗHcVLk. ~T!]cq[i&S=uzkҡ=,ܡWes0&ȼ+ܧ5:xj᱊PUӇ)x,t*{.K|~P3F)k&ʚn/\/w]8:6 /{jZ%_J3Rcgt*}n|OpF]v:t{ PҝZ42n+~X;9;u[e{!ExXx n@41%=1:@G] eɮĎ$gZڸ2«+޻-J8_?Ec4)PH sgQ'I#zn!{23{$7`tSLW3m9Xlr.W*$TQZ@e@xp mp6TeYq|9 PkU?Q 8=~YO}:ƻ*+jċ|8Ka6Z>mAf|sR`/=`4))M'1=\e1{F*E豿b|?4'k6QgV;*GkwQ4&Zn&c7[B'G3pB騣"CoJm\%tYYsTƉ !6bj6=yk4]Y]'rc"Œ ZhjUʸr#/˼ZqG~-upkYC`As눸(;";!$ ^+IJ61=N0!)KrEyx+8dZOoW+7a#!Z\c8@N7i8=+r)GXfgȢi K W',DdQ"L}t}ek+2C8:JN\U1y <##\!=d2?VԝpNr4iW8<j&Zo>yyB{}M#7ZщզMwBxҔU 8GrFU(Ԩ pz`vGmu%dJi1r׭ItoA09{ڇ ٳ>oTQoE2Da^?m\8ex& hJ|ko`_>5aϪ~{g_pcaey zP mEGsmĺVx") Slg91fs|3Q;\HޞҦڄU=qMeZOGmW:]]8huB)ڗR1/eo{gOOZ+:oޢSܱ,yO3`7S+ÑPGAA̿`AiCr=^m%1DXnF)Y>!ZWK$.G=G$d a@/܋*XP_B jql |)rT13cCåלW`2T*/|KsMRWGACHV:l!NVse[>LTcOYCjQ{Kh_X܃-"Jή;@$j'̩^|cbj§p!(V (ĕIy`2)#u66iD pfyc&u%fg<> u/f˚9WŸk.Ҁ9\36M|{> lyP_2rN1Nnl('wPD'`3 Mc@ϴUxZ1'5Hx`?C&_!kH)/gђʫ҃s(%+b {D i[|p翗_3R?W Fn*Y [_*hۉVTҜ ŜT '.4!$M 3Nm||h+V-'Q&Un2wz+<ź EH)!B~=Cԯ6ۓwX/\l~80nqpVI1%>y-ST&d; D>4/3~Ay-"0Lhk3SI"!0OBL;bJXqTqEtԟ1j3ൈ&M++V4|xz# )?KJĐ$i O7BRG:mķubԲ3-ff8[f=F#5wFu^pNEќc)Xj1ʹt2X!o#Ǭ8͜PR%i@`dyDK>or|ʧB\I': ЇW"rS*#C]JܥH'S~]Snk[Am ZᝢiOseLDVK +EǾꖓ֏ F,m- g}gSjX6FĞ7b4F0=™T8cʎLK|#\|n >&늄6]}Z3 \ܣd] Mh}>2b>ty1Kl~OWWlQbz9χΟ(?ZFe0|?ѓ- IlqLG H)%to2#1yj S()e[}؄0u&~n+F8 vqܴ-#V]Y4OD3W\_eTSd2/ϘAD#Fw R\ Ef-t~eY2SE\7K$|| ^-%h 31:ČbD(!xh0Q;i !grGKAJæde`!g E u^c+!*Gu%p2MY0є:^:>glDVfĮ!^۟!צ ,IOz*g u/cw{^`#@,W"ܷq|M@@[KJͯ5Wts} Dn2Z8u RLC[7P+ uB˳|Tg^)=/oyZOZ6|F@`Jl7:&,˕lT'AL>a?:ݐ/^FƖ莤r?0KQ@|h4b ^oNVyu !dM X|~eۚx 5|ϜC]m#'C:Um^j(oSh_ cʕOџ1yd W ?bQjɡu$,#EH!|xeGK{Q/V( 6(]kǨE=봂h}\8ʎBF#!Acwe*;*Z K> Yrz \6|^CEzo%&$к=y0pA@hv\OÃLrLpl0<( V/ s%\u]DչHCaLP4TChvGz@4WCܧ5 54`%1 X*Lȇ̗쪨Lc<$@ %&f،A'\)R5Zy֢J])P3G֪$Ompr \~b؅"C,:G\Baslp"U񥆹: 7? Dp-*2ay0e@N h6 N/uX -эot5IV~7cf#.BHmuJbY\b۸^Fm"ͻ|<V9*Pd}O`+-pL_pXjv?g3{u$``*MO'=JgRb@xEց񥶖G/hC~#OU\M ,rh\s,Vs3(k.1fDV]vؿP%062>t#:9b y,{?TEAYcC\c]<:oQ/-mŪhX}㙸e WNѦ\]\hZDb8vzas L1h|EGfaJ:%߇rɘ(y1hlYͦZ/7!LݴHƿ: n ssiC4WchjVJফ Çޑx߭"R 0 h=T.E{Bմ^F \kJ*@Ct[ 2QU''}N To氨(y>Lrh7(B|k8e  gDK.:o/.Fj;)+1Y:u4q)iA0 pN8P3ۋ$z0_I{Yo T!VK S?iEJ+5z5ue#QjA+mM)㰟 +zΚs`YMpۦXA??NH҆:k*hMyլZWK4JH4zХ u*p < Ou2? ̶L|VK5*|/lw 3D>D.ő~\m@Ŋ7 JfWi:}Ԯb+  U(N F[s9!krEyhmPj{ +JPYSNG 򘜹~UL?( ~1aUK4 mf-ߊ@mȁAC9mьƮ2uksX*+ʪSZi5sZMhZlM , ~C?f3ؚ£{~p+\l;@8 )bͶ&LRӏ%Sk2f[}ݻ(| 2ZP6"ͨD̶_MH<6m\<,L>&\ UL^ W}F [iRgw#D:Q!MjgW^`zl aE`^̗gJpF[qE@9? C*8>6U[з5mquwK*3FN/\5WH4b\=v(cYEWSW¼< cv& Z0>mn?Cōz^H Vc}=Ebpn{2' A`EU$6lY dڔRu>`OO'(4֬6._ A1@^](MHqDD]хq'>+/mh2T)g㞢FKn@︀ cie*c2|sDb?H? {Dθ=MV2Lgާ+xm Fꛟ@gG5F&L."+Sɿl5Q%o*.rz,`ྼ3TJÈJY!(P!m^T»eUdD,u=wf+.X kctZ)f . U{^%lugxqNǁrlsRL͉$cu hVw'*pt<2װTtLW!4oȎ6 ͖ͮ8ޕQ4 6wg|"{U5O# 0–>ВD/|?0n`4_~'`(UlRq"х&~SײV}:Z_sGJZT p\ye 9c܈xݎ-Q4_K/v2`4\)$ilaHS!`-;(/:^+] m["Z Z$;s r"a(%#V%oEy!ӏbj33Ep`:q T6Q̼\1?GjqΓsG 3# h)4Fbzx&~`O6@WU9bG K_UxSϲK(|*Ί΃ :*kPT%"Mq趀>T'}i=a_b_d38I[<%x{B fȐаYԥ2 )w? mwŪ! _=;>UNNFaێ2̇ȸOW+moVJSݷBZmLj+%J|yZ \xCeTT_8` h)؀Lf% {;} ďѥYk GWOIz%!ú%~^hiaQS{KTeLK35Vgz^+ډs,d&)| XYkT"<[=ڵG\_0 #¬"3*Ƈ_,xbRvu:a| "'[zupo[(9~ U*pK%8eқѣD5Gtol}Q*?Y"Yhaq1C`}9y/6g^k_Ο%y;-S~  fh^  1lJҬABS{* ظwX!w"v$u+Kg,=;4vqaV:)Euizk&ؖN8F^xF x`,4mzULB䶪<Q\o<6f 6+>K'd ro7iTJqncVH < Nň) C_6,ꐌ=ϯjk#БsSԜO l*+^ՉU2`Wf e4tw:B+IE4/OX4|߾p5@Dm $޼y))> 5/% Peb? ˞-T=Z5tw~[:3"Ԫ|O ;N|A|̓SV @|nxmN! ,rSj4wWX$Lx^h](ŭP޽ԚXzWU|!ޠhՅf6@ 4IUmcLZT<ʳD^Z߇G՞ cJA,8[/7070lܶ]}G F4Vn=BfDAY T;l^j; m1F M+;5J D3.Ϡ]2eI/ `tDł+ 2VR,EԘw^ߏvΓ,W<Uvٝ Q/J-W1U=G+ߡ)<2Adr 8E߁|w1ziĠF̓^gXVhdQ xDi0}5|q 4 u,]!KT%0p2>71Ox ΅`@ȡ}լxg^߄9KۖzHL 1#xA@r7oYv&xKRP09h<иG,E] >mM0T~NBij~=Q`n[Y(#EWJRVL15lpl!u1'C%h`2B-`Q5'zAu1Ǡ6jGZn;Y-X&'m?R[/BDJs(\Y(;93A #=z2S%)uߢ=5w|^_ԛD;T^Sl]}=^xNЫ¦f4TQ#H0sһwU1֢Qh{TжjxL'_ tNNiOXSdvTxm,NA9+&} _lb'k%ȿ_\xEMYSp,mў?rDgbaÁr'RGKNolqն"BqVM:J9T#1GTҡ|`Phy\H+L.K:k\!kv]-к!uqkUR :MK{-j[JYw-8R k[m&cVf6OJ"Ω&yRoIk~/~>BZvl*֒kh鱴O) [7Hq|f! چTg)Q hI9Y'(y6Cp6oW3\*:Ѯ7Q$ 96[_N)X [;|R1?GP"l 7ಞ)Phf|H\e^ѤUdqIgAJۮ A\-G=A |h-V62XWΟ[+@̮E/=0RKLB-$dî3WQDx42z!5jrtFXfS83v/+>ro+"ÁjDK=(`6 ̥G1=Ƙciw'[ol,u6>Z5\jG㇢[kvnܦׇ<*$DblEMoI.~žܛ$)s &ɜ"C$t=aӆJc?:;~^nhD`^" !cEHS2 v܅խ/bO d՚b%^xEf;ℴ0r㋶{Jy [=B˹v^蹛VQQG ֬C xu ;'t{ZgeӼ)fkL`ֲE.*M^b R÷O\,Q;hMGKVύ6u|=ϔ0N FTp'NkMғ=itzf4 lc\o{2O1-~X(\7 ilYVJK?He'eLy#2^Qp:7ۿ$ =0'U'YMM~ЎHZuy/4 BZ ! 0 x2KîҊw/kbBLƑW =-p ^e%چbC2SՐ/>:WwI {Ua:1Q!"%T&bdurW302ۤ<Ӳ <>!Q`B'ح]?cƹ?;+X!H 6DkOV f: -k>ڠQ01幝'v/խ0拋݂ >srx;F" PV|1jY`v=iP`M`v:@OV>6q1Wk5U^j$wrdAg 엇M6z9#"xx٪-dOg&YHWǢrDMukOL(PyaWgC;ŏ65IJ#ֹݻZD%nJ9B0J?я1bĚ~lN(/ ,F91w-y])I'? aKCЀ-3]\!8)F_l KFm˱dg?iwQxvWحSج_`5 =E_<؜; Tom'ڂ[9n݂ͮK6ě1DIAz/S!~vBM"wf6/vզ.k)#FT9Q~6܂mi5j)+:(ҝ(8"*M|#ұKȚfίIE!xfq#X4vm>G.⹂a78|;31[1qDw0,%"Qtx%UvuNԲ>40j+2F!`w3ʿ/񴬝]t؝Rʌa{p6)8#RGXQdEt+AxFRK&LS2)hn M(BONoCRc \+#"&|,tQ2 7W@Io]Hw \ڶ}w$VO5+bY߅"p|0oh~a}*xVd8OyAmCAl[tc7tl^kY4y5.ZqV_Xm5t*`XY~֝`~`x$V*xfbդs\o/,+f'!4VrvSea"t쌵d‘l>'˽Æ5mMlA" W雴%j؊zN)D} ]&ĺܼFy0o6#flFyrbCr$"*ÝV䴅i: 2 2ݖAY~1WɈ^_Et{Zݛ<|~ b'S01Jes2I|wa!$խ 5eCGwd\]`ctt) X;&g(xZwlo)s/QoqϨ*8=:'.lW>4z 4n%m{Ѽh4.(3;tI>uT٧JgwKle^9!7c-XFK 7R$>C~[O,b;2"j?Ы&\P{~g ߀+ɍK v?urRj}rIW:"Mxf͘$7-2))d0J7~#&=L!Z|+WClhu[t~'ˇfGOj6¿~uUB"oK*BSQl/R,R̟bZs@X4@~AGEl;}[c<8,<8|71?Yy!)!6~%٧[qF4@MLe*&Ln#m$!dS?(.#l>>rNɧτ/TEtMh elIݴLX!.`9*~00=BM9#ɳχ!ivzNx;oSʦ)5κ >2*Ewq^٧0U]#֌x9;%[@11i̘=n Я ΞO~R [_W&4mܧjJţMSS+EƘ3Kw"QGME`5p4JKNā/*2B;bͼXs_.kj F,yتw=M1CXpV :y7ؑlgطR}UU$)k;nykE6E79@[gOgjw-HU薘EmMƶvv vIY:5Vv6?ߖ'Q{*{3$+YV[qֱx^e9X>zM o]$lS M=sRya5~ԥL S7DRx߿7*e7$٧Wг&k|}v):[tu noT9N[QYN棤_G6S=q/||bҐ,]=N6gW4rlXp1X\ۛYuKpɸuVK|oAYp!;hyMs=dqۄւ1ao4K z&|u@DuLnQo3e4jw$aS P PJ21:s4E b5g<_{^4.ڱ56ԣ yv(;f{U*xPT +lfƌR"$  i'g;.RwU |1ioBZ/s̸ mԮ@@_:!u-Q>ZZp"Orؾu~$o1'҆<>m!4`Xs#!D ۵ңd茘u}&]Ѧ틭P [)#pӪ`R?ϜRl5Zc|3rs~Hx Lg<2ԔKi Xu aT{2)cqMcIREʞt D웇nM {52G;Ɇom2w [D_4.Ihdd_~Q`No wd^{Fl>yp g.bu翥$ !+3HQ pƁ:8Z^2~ڨ'1ZEgu\5 xEܐǙb;8ᣛ;ai>3g}}蛤sho}F"L.UVвtƻpL6+=)U҈HEgQpLzݥdݟk[(Am>ѭÏ "(V̵ŭXVhj CsyLCb,p&<~b+Q a|]iY@e2@?c/ydZJimilH˭?DkLsr(n&E,0w$ 'V)WP) Ϻq[0 PIJa[[Du4ᕈ qp\m¶>.tZ1H-C?͠H)u|knw/؁ə>%\샞qc#%N#i<㲱B0e0 $PA_Ӆ3QpRL*n\ژ4ŗ PU=+J [fٱ YQLsPMV%}o7X*<68qQ>6U Qq3ѣ=뮏DVvhR+cXH4L {ݘ`Y92֟oOՓNͤX>#f|TlhHBoY zv3 79dP5 KB0pKy yCRyJ'bqTfRk Xi#ZЦxx[;lcrRtxҭD`7VCWëA`1Y?:\*I8ۖ+amLy>a [LjGj 8! q𱆄$9YR%8,EqyQ gz)Z,uIH"2F'7a eBP3gi.x+s)ȵc|-ȆeP&\ߵ8~ ?!Vtm*U`8 \Ag~+kp./;p Ĵ ~(Jh2A0LYeB+7Dz^ 0蹦,t! Qzv>rowi ׳ߠӧd.AѦU+8G⨯|*xp)1rfC`S'vƲ^vcŎ'C;~}12U//t@/c^E>?'B47|QqRkU5CP}d^X & dyx1uuGMSsF _GӰ_тv*ʔwN=(j~~k:pPxcW88x0Ԅ ~{/z\̨$*:%3k$J+MagCUuE>q͒Uh\XTy{0it%`Fp ܝ΃wa+W.ޢ&ʔQLłQ/V]vЂ,nF^` 55zmtz&,PS4 .bM4lsIc *ptN1p˚ 4ڽ gQX=4A()SX[?G熫ľP>+jiw,y=ä-- ?]Q>}r@lzCInNbT`K"|dHhJn/4CFn~-/60ưD!A,eSA ۩")g1#@OĪ ןBI<V:j@炥N O0֫.磓\LT-4[\TB6|(_mg^=f/֕(Q0}sz',f| ^ ݯ;;6MT%[1/UnJ: Q_k̩,y*]CcO ͫ”z[3qRU)xb!n0}DXo*Դ~#ql(wOJ'61)j)̄K=0?v12zP+RZ'-O.Q16&- LhA=SK'y-B? }*( N119V520&TV1a{֢ĵ [Gbا}Y"6BGQ"yA@w چטMCk0ZZkBiaJsovLʔ2\+cz^k̈́ Ma  ij*ٌ8&u_['șk:Z H+90|Nq+;Lxrn?e+]-r1&M_[vז 09ݯX @ δEx畋쀦8BlA@lM;+b#?[ ĦV V3*9ؿZrD-62`yxK.}3G qƷ\wq͈C @:'  dh#4`4Ya̰Il΄VZRtvUfNԥ<>\_*<Ɍ 1έ_,!fv{Ju+O/r Q m&0TL X\#?- $0|W_RAˆ hSFI.79@+t~&J&Z;4K^'z+O}NQK s snH</6GzPod+qf;5!_ƴ$% x%m4(.B EN^ sV*%6@t3h avkq%GsŞ bx!Oګ:q+08aRoUŒqKESqClodn7,eӈn xdɉʐW8<a!%YO|8ܪHsOE͕`~4,sh`(_Y86)sT(u8sJmrIfChj CeGSLMuV]Qee~l߆$-i\$G^{!ttoILuځ_j4N0Wrf{Uq% BYT2meW+182oCK. S*,oo_-vyMVOUWXII+!EoASԲT#H8 g";snFuWªr/NJ\2Zbr`ҮE#XzxRBޚ{kJZ/n1Ǘ%3 DSS{6 +sTISr% d"e oZ6Nz0\Z}&>8ܰl1{xajMIu2F|W'1Yqlwr:tB#U#@cSa@WE~qe=\}-iSuQᕲONT~XQlQe |0˶;5=E` 8$0g* ÍrE;K;t41..Shl#s6FV+c50\=1 q rߥԼ _o6ԛ伣>MR&dเ1&>}ӀNM:$ UzYC="Y-7eXWLa(26IPAyR8QX#zmH>|to=9eXTƉ` W rY|JF3xkgHQ$V hZqdסּE@傒0j„837[5&,8>K>6'OT2FQ˾{gs #WN8!i:\"ȝ[/EY!sit"vN}.5`5t`W SI@_MO*t]Qzu˒)eA4[@KϛwpZ>p,v. T~*+v@I׋-OCgQ;n.o6xs_fuVδQ>V~܋a~6e:uq+WRӗ~cSUN)+cu{fTZ\T:}cz\gαh^LgB-04Hnhk0FP3nQ<`\l]ynVqn\Tէ?ƌP_/]˙RqOYi<'/j%Ż qCr2z%mF蘜_FUV:Pe蕌Qs-74}bqP>@vZF u-BX/X*%gJ0!ү,aA)HHy!ZD/CF =)%˘4 }5*ˢkDԊǫ1H kRR/@> ę^>,4|e J۱}^HjqTUaw[+vi~eۥ \vw_"׶Iވ}>811- co/Yյ?ESSt4kvdn hTZFdބNoJ \HYpBɛm&"t0(ev1U`$A*碞 GDjfHRDEgɐDi eق0ߌ- 8x^qCaGr^g8?:QNU:leJQJѤ/\hgn7GT}?9VgTߜD @v2//F$,ߜi&U**s  6Ȟz՗ȺD}xFfFe琮Q ]i4J $ BCI|л8u6 ' bQ53Cמ_bBlN`N|Qa[?dJ{N j_ զ*xBXǯ)u"!h=V:Zʑh DG;O3;ŀ| }8;`:fSΆUR:kUt^;jE=|cbaaѵh ޲sDd &vB̆Vω4Iso nkWۅhCyP JW9ur}*hMKv٦v}N\^F]ws(L$m7[BoЅ|9Tyh!3fHVE'8𵆇 (a!=8 N:1#J,kDPj]m", mXDԈo\)o41= -zވ8V?B@hO g홠[\.܃Z`*H%M5?j^E5Z]Ytgr.CEk unRYmOQ&Wnbxa瀷I&hZӥ G3$ U> t+R? ّj0_ O\ImoP0ee{knZVv^#鳹QfМR(\0,z+D9n?GdMuϢեEeAhVj a8w̆^ ]* 8qRhp 9'PI55?YboИEӖEa' v6:djbjYYqFA}h]:&=m-qQ`Ģru@CK8`@J|@԰ QDgNm/.Žt3RIqJwb,}" !Yq:\ }/~Iw¬L[ޜ%T%: ~gaĒ~34_uGd S$Oj9HqZgy)I? SQQfJSI-ȓZ3{;|VDd{IWrƺMfEWF$|)6(AkQ8F<<zՄ{FĹVg$OOvde=T5B &`ltуqsNaw*RD@oėM}򍊙jrś6[RHkt xU.亠 щ_'/sYyt%׉j rTQZXMFګfY_͕2L,L)kLցQb wт#3RbhmI2ſ MTO8"^DbwH십ىdpOEKXu2̟p"uZ2"6I[͡ 4b. %r`@B ;@MޟWj M~P>"Fgl5Go?ɋR}}Vځvp3׺Y+Y/qBv_Ϸhk閡UxCl@sz}T޳/c9${3sFs)9PrF>ϏªkPؕUE/gWbZd3 yw_S Cї_deqx5;3j: T/~s<]Ũ%YAm!oӫXlN&MivO" Rh5p$z \x.I]Y@mik>1,7E&2u\j8zkS⭵Qv<.)b%BП7Ն4b$KRR'5̍V5&웩!$^!r#B"N1C@-vk)!SAu]ꕒ~-',f*_!Ū;Ht2$SV^Miv|6(2@ q4Q=Rp̀Ƭb<wƦfE}feH< O4["B, v'vdI0 5惄svpUJl=3 v![!<d!بw @4c]R|~J{—[MxcB&GD%wuǕuW%q}_.v!7v)67:RVd)RFut˚ rV9bb_(V37)J}9U]QLe[ japv\ r363m!Z0m_%:GQĻo3zQ?n^%Y|r TXft~<,hy%`)<guА^7 X{̶9S2$vu&՗g/Z(6e6zc?+\!]ySaV6=QR>gwdu_~;]ttTR^EdR6| +0'ұHy)K4fZtq$j,ҏ#\ʃ]eN@_ ;5sadOyمa'0ؤ fXu/RlF$u$oxՊ^}Yqks,b$!%mY5%k軀*S$-Ώ}O뺦 A$v)71 v<%Ӈw^`W#`!!K[ҧ{F:9:JOtW 1I\ Xy1繊e wU KboMٹɆJŽwO>CCAJ7S~{nm~5%LiJpd\wDvFG%1ݜ*@cty4pBZUd ADXSBqZO! _vv2NɞG?qtW',*O*g*CL&#NG2}r8hx|vGsbu]q fa:B^S՝+IO;~W'-@!s)8V V "Xr/ ~j%Xu$mLy%,Çpo뢚7*7ƋE:PCŇvgJ ܗ)?,u'u*nbjK-ǬH9h 3 <Ll 9Ws5N!j@C";b͢C/Z\n $ x7/tctB# 0AqG%n9#]-} #pOXT>W Z/Sg3.K1"Nj59@4הH񩿖)6A.rWA,_Z*I=b(YvQZ>)HeAqrZ[[4ܽ8M[ni?!FVvfm^z<5|w11I:1٩m7Hqp~?*2&r/xVSzTw6:"`r?|ѳ1&[ FsBd&5FN%/ ",xx! W^.QWkά^dV0.`r*W 6^wye 9O0GJSNj8`6ګ΀֡n208Vщ(RZ֩1/79CKXF<|`{xK64#- QT-Gb|JL ߣ¡]2l[#^A.|s#X p[5'Ya0t_{ K'B t@ j7\B8HTrt&&ɼr-DɫІaN87` tvDIwX.WJZj/e{U# `z˽;4^%t1LX[be+z֮^3D5r3^m=C^|v,iqw7EU/n %+@7 ʲ=S+%8N؎إ<[ˁyLS햶[քKx4g S SE\ #Y8c ->.XCWS7LVH&6ݬțLe,H<ǨbGԨG؇ H=$ #J6АۈD;3=g~jx( g&r:!~DZ'b!+#s# A1!M.foy=`L'6rv,rJޅ.!Ϲ+czzܞ:Ruo:IL(熐Ole #iLՠv5;YT']#H)- ՟^ssʹ[)N }]HA|K˨Ыh3tH_g}ȵr11kJ]jm>gB}!_P2`GsK'tdƩ{ҀqR!B;GJZS\Q+^b%Tylw @r^'L'x-<8v^*SPvT/1Iť'C9PC.M%X8C%j(Sjclj(,zWr%YgL@jisS?Mȱ,ay Y\P,%,hYu#0]F(;d`|J[{R(˦NҪ"CC xg Qa,$3!f.f%iZadذUev$MЖ+/MJhÀX*[DPtn rLc!Pjx"$o*wv;HAӪH0) 7pifqTtQG/5DCX^սpQG6ORLbzol Qs,̬Dt3u]?%z ? Lv /Aܧ&Pձ~mnsP7 y,OU_f -X"@~ks ǙvݤFv?BY|;u7>CfT,?":jx7+z".}r^% SPR~M_dTjr!BpЉO|}Mޗ "ȡsPp,;,iԏLqէdnV@6d .w-@-8:Xآ@ fL rQ;30E .ҲI'"'ȖaU6mI<Ѯ0Us?C١}kBX#E3M҇ 8!)sFwDž~\XZ-+² .LwBݷ[ErxgsL4R_|ǾB.Sa򼲆 BB[=~IE Q$ܠ+64U'E)̅Tš"F:RZ*=þ,"TBh7+FDj@,{ƼadM"v 1Z-]ku1s=I\`ǽ9V`W@3?e2qbY@1|j6J E:Ż bf~ޘ EBK<#gJ2zG"$.:05wU-yFj>ɏIljc2rWb2kf !ΈpDEp)"ٗi >1[h&<_Nݜmh*,7̏7`gHD&:'M4 1zy1l@ (=r.OT;oDn[v}R@Tz+o׫WC.>Adκ+֟bQ2T")t*M {ܗ2/AYFk[1F.Tj7]`ˊq6J4MչDfW$!A[q,*K>fuQb,f1z|EѠ "Uae݉+櫳9M\*k) LѣzAە^9gQdy5w>A6ޝ`]IPg>g=+=Qdd$l=ÉATa%g%^Zb' "h:՝J)V7fºqe3mBd̀H<'f*-+գSopV|W[ %0?jr$hG,U^uUƉB['Yի3ׇv "c-`Yhј00 0tϒEݔby{0_:VRR7?Ug,CuLe bTup t4b'"z[slK)Gf}ϱ%J$YY4?՛YceNݹ!j;8  d$ak8jeX"{""B!lf%8e'7>Ҿ 4^ww&Y~>[ɀoRʤjmO Ipnuorʱ0ڛoy?~.1mY:wbcBjm)@|X`ґܩbBiFkib=F<;bI% xO1U߈i# Bvҙ9TsVl fNWEb;#YC"\OQAnc W+N3lC Ga / 8fɕ]Qb 'T降N/(EAFYNԷrYt\lN`DGiu~>FLBLx{qnAܗgg˘+Z{ 63ϵi M-*`ʘr֡ƕeQt{_U_-:5j2 PB[ 'Yg,+nĤ)W7pmάy#CTnUlbmlwGA"m`Y8H)=$k"U ]ڥݥ0Ì<PBvҌIʀu0"zt2l cTF4^[C>B.n:8(U-IޱN/L=6@ [oȱM}lϠkAL7%1&i%-Y͔Qk.[kjbS+ӵ G{:: g~G+<ls @ށeV+ᒜoe;Sҥ,>6Q y{#A /%ȩ ;\ zI+}ނ]V9+x䘥 瀲7hU6%ȎNT؆ַ}laڨ QC6'PkToQ\GW,J?jzY aZ`2@܌K1O/`pOy,|%*NhJ~3W7qW ==TC/$Wb:ɸo4r)4UA4X̻>jZӺ*>qm=A@>=`_͞LL0D'7EАߛD"ł?&gdx,~iݟ!c {Zgw\*4p&5TIqL3 5Oe 2h:!{*,'AmBdsAsPM5'|FTz.n}+?$$䨀 mip)grQj7VSqC^{warxW4GS ~rv\de=?dvZWāh=^ S]Pb08yl)>ü]u\H]!g\ Ǒ7Ԉ/ACuÉ%wbtᷥ $ ُoiKͅWN qN'x7^}p:ܑb܋qRJH&%fucԩ&7K}4=Z zԌmD>8+C1M$-طy{?]CwTTj$2`wћ\ӼtN2CNs|z&wTple}Q,s ;ܜkJrį;MjGus=${~2tW$k0M6**Fgο<]M8G œq.`izcum9uP$dM2Ǜ>,®e%D*?'%#aYңE%;侂hul5ڎ,Bze3rPND nL~RX)@kσ8hΎ-/zV&t-2~sH84#)pQBE}W`?l!vb1夎CsLƙUĒ2;0oT2!@ӒrC V<,yY{b&ihf)%"{H$4n7Y`aUӰ$l|e@F )ѷiR >DM!yٲz=wF  %Xaa\E=S͵ a`ܽ5 pHSu#A:pZVha;T=9R[fLiH֕,o 쨾[7]yQwzyM{qN}pHO_wo/ ̜8>y3-o}7Q ?ªtDtΓ4P nAl$˕pENd27fw~.$8Y5Iy qI @+i|GM걛Bx`ɟ&}3_=1!4l}Iu C^v/gJ ipk[F+3seۼt?{sai$KMfQϋ,g:._p|gG8<|B@1)h=87\^jM->\}C83 T Gc@Å$_Z)ē)ZEB>@^2hZmqoR }0gEpÐ%35\fnH̏LSFU&+WmRlY*{,wtwlzZ70\FJzL~f£8La7$욝ע2W9@Ros% (KXe7 1.Ɓ2e>8}s\tP)MOCH1oÖ:t۞Y5`a^j W;ޜQֵ &6!<cX+΂G'`H@\Ikvggqiv٣ ϛ jR5gv=oVL~_Cr4io2]cA '#|WFWSlM4]F3~F~w56F< c=Xŋ/X2 xxd`KPjL\ ddLd3p,wbb`dYO59 U!YntkxܘjX%S;\_&V ܁[A"SO鳦~_(7è8o8otwP֘=ׅg`$9~*bڬu~zګѠ 6Ʃs'42WK{U݈{xϩ_Ctl\"uPf_H9fh!Ǟ`䏲è>D]=V,W;6<5 ]BTC|)+鑽]BOC_PJ'Q.`QfÂF2X|"Uk+NxVom>-r$}jlJv]adĭLeLWUY8R]S^NtF}W%&Ѳq>D oymjI)9 Hѩ΂gHy Rw4y1bVͺsum=iֶO6|z'7!ђXR#iGi]-iDP@wcP'f#˰r~o0r3aG,w>ia/O(sF8uaU.2ZZ\q3]?r5 z]\ B3XA][oQShxqPC܇F3tjc [/%Q\+[L^V>g?d`KdfsΌѲA*!y;+O^P mJ0[6ajf JkÝK_aZ;;GԱ3nKk|^" d ͉EdYYߧ\\}Gc *{e ^uL!o Դ._C(^ilGqp66a Ovǫ.`||L3CeH)Pwnydj K .@>n\ RaNΉluo4#Bӈ[$(7ɕCֺ-9^ߦ瞰JˤQz-Uov5*>ϲZW!/a'ոrs4;L muqT J hN"[yDa 0&#O浵c#C6%Zw\{Bf7 HLnmf#۳ cDbKbNmv;3;׽ YY~>[*J[IE6ČӤ MJ9+E;*MHj䳏2әDT` gŒ~6)ջ^V=H2x1_7C`RF4Oh"K׵b $$e^a "cg7xUӑ$26|efM -G O>va˥XK'Ķѡ HOsFO6{yu[*Sķ1k)tRcor5dK> ȠwJ4lޝ.qFd9o|X(yF4Kb*ZYz$&͓ߝ ^]!Z ]k=DY9`cT e+j*Z ݎ? 2!" M*b9_/ Qc M&koz%n668k?/1A4d~:ܚnB2iF[.1X<odCuHqh2$6i!UAb`X!F$ Ū=G7{@+6t/x4y.XFw:)jHߘkj t$ {cS D  ]3y[$NJ!hĦ6`.OwmFszMJX#=ucȡ'V89O&ꌱrcPi٩BL@rW;\ IIƳ4I̖VHRc+ XGQX:Iا>Dp.ϵVc(:`}cSSv9L Lr9^LKs0*x&F$~-k6APA~rQnA[Cdk?>(, YU_u!&ᚍ/Hra+3/P7n.) z/HUl/|t Oځ-zwdOUEZC<]`7m(dDzcyUQɆusHTea'c|dn9'E ᵒ݃s2j뙓)}?4kwqe# d]/l=?m6bƂ<ݚ6-Fó(DKN>n1_4te& OOm$aVsDUyoG^sBZNУ0 N0q^~>Eoil]fd1揷tO4ȕ3˅W\ۑ<6H=8/X/ޗܬ%m?U ḨHENNK3;Jo[;`e=BR!ܮ+GǛ]v=l:AOZd/톰5Yg^w@$^#4Pz8 b蘸ORH7v&SƾUA̩.%[xI'$*šV}~~>P{hH3J[͢v*jlh!1@൭8sj;kD>9C7BbbČn“}Q(T)J~y?ij@L7wb!^Ԛu&-?ZE !/#AQ^Nv%`GSdeʹ4Lv"@ѡp{ 9!YOi: hfxmd J)ˣ>(oGNϳh[#*bm  x)=gAjټ.Ty,B6S ]k"->Mq(ԛ4mIՉrNvQ.e/ĠMemG!HuY׼s?-@/ջT[|a5314o9"ŒZ z_Ji7& ஃ,,'1MOkjP]+xg';\Ϙ6DNО(5(^.Gjb26v'IH}yi:PI!%csذPd y袅f1K[J.\mNy0 %<ń_{UIJC]WYJ+?JKp|F5ґ(:-v [ }@I%XɊA|1{;["`vx y d@0zFIB Wżuf/fUT?;W1I <" &S\m gcG<~T )eG0SfY~-Kt(M6O }%#^ PaQჾSZMxrf 9$ǺC1#ĈldlI70Ci3ԝ5ԛ[(<|[Q!/DJPYv0ogFE&^5<@ y5#&g|\#6L\.Bp\ 3Y,cjq^^s贈\'H[/e=|_q q2iWao3-NX:0a;tE2 IIMqw;9[c%qQp!iDR-hSqjBP#kvn'zr?E`e[j CJB7iCp/sgG,Fӆ-Е=U~T?7|s%T&9&n4_ S&P3^13eqlnj3"9껄 cmp%+Mir93U]RQ(Υ8E[t([L;>Rk^'q]z$ 4_yR*߫#+L8\24FzϦDOT_ʧxuFf0fqV{{76n7ʼPc}B<q+ϭCO3#]0q|Bq_ |^ opd"jU'fdJ@B<@Hey`K4U{>IŵTQ"FaFɨJW $aU$)=-5=1U+=sx\Y2;Z!Z-*_"b9}.x$זn#~@/( <{lƀ2Oȥ3}OŶ;q(tK7Y/<w^2)9nQFcJG}Ǎ-!]yrR}<یAj|ALbsjkZ`'l%pNS 5F 񋓐`%G_pM7/thbTJam:[(m1$e!q1.'STN_rNo g%XIB]%PLd"HbyN 1⭚II}QhԒi;shA>& a,쿈rZd=ql\WTѩP&(OŨYGr[,sP fbgY|'Z}cZYL+I6xC5DbI8'Dž8onAFAp|J4]WwD9hLGJ+?? D2'2f.y"|'lY&a``|"3+00}!(bTp0n3ŤM =NqB&s6o0쀶H/5WEٿov=yeGاƭ' KG"6yE α͏l¦ [ҨりNyr`-VeL*Ѵw2=kZw/xaGC}5q_h uwm&͸}Ďr*zU42bIpE3F2 eCq]p@ x(x~jR S JQOs҃8]Ϲd#>gF a ($d ݐ{ kBFuTaTGNۆ?XR(;Oylϫs߮^% _M;`y{TL-Aʐ,:hx͟$[= {(S]dt`?d7ÔKsio1!0%Y}gѤy@m-5QyBU2t.$uWL'k`fH\D}b5 [7ҠftC f/Qyl)֣ >;Uo"M~I5/PFUIz{AW-Kn Ar {_"vq{s; -\|9}⺆-a*Xd{# /+^:(ԗdr?`=OW9 +rkeWqsZ3QYE+xb֨ٴNN"IeT C/̧$Wj^8ղ7TDd)r_iIXL{,RI+50hr3B(x8.rKQOleӕ-DyHZ%6 ]GHV=VATX3¿ gXm~$ !eyRt*Tj|l]kD_G oAuKBQU$m^QI'"+94H:8i$,dw&ZZd X~fݲI۝y3,EpgB|bP9HkS [iBu!2)e#鳋+AVbAi>4 _2WR$Ў81C-s,r JDʘ? @GO/~x%`O8@nܔH*;wSĻN?3F%􀢫i Jg@ A@V{y dV@&oӨR=?l3ϻwoD 0lg?kAxk` vӝ =| fˮoms 8A&nu*PN4EVNKV44jdwNXtí!vR"/t?%P#/De&R9N~H,ͶĮV X`h6NVtLA4 odϛ8 $?éDyMة硫dK̋IKRɫpXYf~ Ȉo7 m=>2=v.*±۟;t-݈]Y2PۄH3+e_n&JNS?R_L(BMsLaQLHV-fZ-'%L8m,] ; Ug9*go@QCr^a%Q8hD0岨ѐyff{Ȅ}5ZЍxR{ lg30=Ma)H~KkҟKk*GOIJvfPRoqFg[Ip#ř[Լߥ+NR۱_FOVz9/2ۊL D #x"xo x+/k>:0 wLgxq, vN f}İ/LmWRc ֽ$8g k"2߂hhKV*mevCEV_KpY?,u:I8#lWuU":!Jv첳ji42 m;WO~ņkEt58"-tP h.7r:ɱh?n"n"N:Nu$T:'t3xtD 4@Xh >f u]+Ϗ,}F! CĻiҾBCyQ| NBb`( 3OծL1јʻX?]j93Xv<1ҀDNZ4Еt&ylMRzp6''.4D 7p4-a|XKNZ |"3n*¦) r2TZo! nZFL|jP$' &,ӵ [C+LqD-L@ǁ9ȣ@Hmr]%bjbI2ϳF6f) D:%:ڰ|~24xINӠlZd.v3,\G+Pw*}Sb98ggQj|Rx=>^iЯ w V (? J=maAze恚=^ Ϯ'`ua}SD/~UK-Z]& mTkQ RnCZ(%=# %T1q ׇ6lvX C6Щ|QϗO\z*?o&)=2O@\ <5<7-V՟OWZ+lܟug'YPLes|V`INx59*N>} ^qAĺWAĠ;]M iwf-"V_5߷+q =m3>ϡ9_U͘B7fN фb' Qa> 'rK F@h-璗DŽqOW؞M4{E͖.+ g=C@(NP2&5~O 6J2Q ,^]/fןhyS}1o/r})ƴظc$oul= q=*ϒv.ɼg8󔗹#\|+; RTSE k#ejop4ZQ= _۟ڴNaq=ǯ81+x3D\|Ke._9l K .&EdlM@fi#!P&ȼ;'8˳+U5(w-W!LPEp4\vSHgDڄCu*&>KӔ f)bdtfx$&Gʔю}R46i6kN2 nb!Tf>cw]=a_JAI?݈&wk*GR-r+eVM3Exد,0'54m b#L2&=Y;q-τfɚa9Z_#^S/p7N8<9q}{F wÃ]