summaryrefslogtreecommitdiff
path: root/kernel/module-internal.h
blob: 8c381c99062f2d38443dbdbf5ea9e634c23fc6f0 (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
46
47
48
49
50
/* SPDX-License-Identifier: GPL-2.0-or-later */
/* Module internals
 *
 * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
 * Written by David Howells (dhowells@redhat.com)
 */

#include <linux/elf.h>
#include <asm/module.h>

struct load_info {
	const char *name;
	/* pointer to module in temporary copy, freed at end of load_module() */
	struct module *mod;
	Elf_Ehdr *hdr;
	unsigned long len;
	Elf_Shdr *sechdrs;
	char *secstrings, *strtab;
	unsigned long symoffs, stroffs, init_typeoffs, core_typeoffs;
	struct _ddebug *debug;
	unsigned int num_debug;
	bool sig_ok;
#ifdef CONFIG_KALLSYMS
	unsigned long mod_kallsyms_init_off;
#endif
#ifdef CONFIG_MODULE_DECOMPRESS
	struct page **pages;
	unsigned int max_pages;
	unsigned int used_pages;
#endif
	struct {
		unsigned int sym, str, mod, vers, info, pcpu;
	} index;
};

extern int mod_verify_sig(const void *mod, struct load_info *info);

#ifdef CONFIG_MODULE_DECOMPRESS
int module_decompress(struct load_info *info, const void *buf, size_t size);
void module_decompress_cleanup(struct load_info *info);
#else
static inline int module_decompress(struct load_info *info,
				    const void *buf, size_t size)
{
	return -EOPNOTSUPP;
}
static inline void module_decompress_cleanup(struct load_info *info)
{
}
#endif
}1}s]#TT_.̐DnVjߴq7¢C 5<ӷ*[wU=gO"Pj{sJ APͣd2japapk B ̰Q'3BuN)e<~<b)qD jkAߞ2=B* 뇸[ ۷#r4)S[2VC0|%t9֗I5u./ױ_b$! :.5(X)6l=K< s!i'E? DG/[:$PA| 5E1~c[}c$G8@.<(RF]| _s>Ĉid>ux."%ƑH8uzPQF"34},3U",^iL2V*kܓ?j C>a9T=@X\ܣAXě,6yJb/PJ`Q@Uw\+poơ*-G;xqq *K&PTG<@7(q߶.0FG]A)_*Niow , tq5Ånz;7"e> a yG逬#ͮpvx6jdвe2] |bAzx_ċbш22D|M[B"57_SO&K2SAc.~QC1P/ÀZj#;<,GFUV4$e[`07$֣}?Qi%I~ ~> t_h=oVcQEiЫ祖/N8ҒCQAL_,~%+ɺuPLVt;W"z9onPxsFe>T߃t7,ǔ>3'.g.;֜ w"$_<Cǧj"^*3oTB}fǑQo7zuuO{dQ+[6z Est\rn9DhQ3"Sh LjDu ײϔ|mP#,حv٪H"tVlNMVƹDv Ptx8󿧩? P>5GXևXYi~ϬɃA'iCO0* lU;I5ǨVl =zS31O_Th{p?7uZdҔ󢠮̱֒ZhOOKLPz|Ni|T4 fzGOVA&oa|^>2~C|,chV ?!eߢss]ù O  G!BVoS1iqg?24 삘GK _aNIN8KGM^hq§}sKoʈ]U]M#=T$?:@ɄCOO(+Qi>[Wwo`4ӣvۏ?RϪy ?v[G@9Fw*#BQ?gv0%W"׿̾ -!m7m"_+N~Ն?ҥX_r6{Ŕ'DF{G, _ltlpjC|r_ehԣU櫻jˍR]\5{a3He!dMb?# Zk NDž5aOW+4,^T,Wt.TQy1;N7^cdk8}/}7t^%6= kZ*z(ۚ pطF腅q8\؛J9kN|*W\c Tֱ]\0VxszܼNss:c+rQHq~/! ,4g[1cJaN=;Gک긔s1OU$iPDCeiTգRɽ!] " WE |c $;#@^79 iA BWj@ +~Y?Tձ Gi<̅~߭>E,_ޏg?G1Eԅ2W|ngrP, 0Cb`ׁ zWm;u"BEz>g@OU@jW=U)GA aXO M,i>IGX~j¯rtOFM6*ǫ.aBNxpz]A\Am*[hwDD@!4tĞ>coز¿N/TPH"}QvG AB!$'PL.#?V%cUpO]ϋCcm\p?^<ǟ}C"N6(=}Kl:5/9黫'Ԉ/0 oCٿD4+0DBпRvAٙms=(mu fhf-zLd0XS ͇ڂ0 tdR|52ijܜfGG Ôy -2H;z߆T.k$'VsXbѴpκ[Fz9g&ٻkp%G)h|o4FB/ _(ٶ丹}6Zjés2\D^^VO8XyE~.gsOJ0u?(L,\zG¨͟? )k&x?۶jRB"oAri4TE9d`h~_,Q8L+x9;{ғ*g z*/G.P^7zb2z=OuRAL7HD(dC)Ut\d9F!!,$f\4շzfb>=r|{0s)>cx(otJI::XqIĻX´}phmr: 9!*c\LLJ.̢%B0 S%w[J3{3ۑ7,o}R&LFpX9OVWpj=}^!ZmC 8\?-kxZВjh[r_.˝D}Yfamy@'YfO?=;y߮yl^vw ,"vuqjAJRp=AD)90krW){lx19~ Z,s5_.~\-Dpȣ6T`)|Eu(G4"96Za74Y3DVלaS.PayX{w6Bk״ڜ^`<_lZSulBB\QQ`ŋ+5KZF͹tWeEfUAq'&j|3i d$/O ^/m%S]>Lȅ=ޓtL#Y PB0DI49_iױf,Cװ?VcH~&CͬƁ Ɂ+b eҘ$cthv41!DNG/q%P0zlK`6ͭbi 2S~:I77~ͻTQ[82E1@h 5!چFs00 0s(!NI{aakOQftGbzY ٘u̺(Y&ݒɠ7`$z#LIMBK=;DŽRҜh\|;s+`ظÑT)v'^eyDq ӽ^;>=Q.M:M ^ ,yY+Zc wQ^%tՊʢ\1mQ6rNWw*Y:t4P>XѤya_w~0 tS^= DBe釤!P !ӱi5Ne @)4$T@϶Ą$hC@2;Sjr@:Aoݙ.Ll_4gLnY9,r sI$ni7vi(Q/]oK6ՈL=Xy, ۛYHeyR;1/. ;A kj'tWcԡugAt kYeU:f"uY Wp vZ`qcgNy:Zmӎ\a?ZG^h-`W,/f  a{rqy` ®岢wgi,ل+ܽ1?XT`h^+[uiiU!X_}ldMmv{y]+ {O JmaOTGRo]3~*N=Q0lrQF%c\yÇ#l3}m|_=2w𓁸ɥ?S]yqE[]N|`vO_.|֕*y]2K!e(=4jdqi/rNq\K@Vr{[8iE*uz||r7uהsw7t}hUZ@qsצ ?I0pP r~Ʌc ;L]|]Hdɣu>X']yTe9nZkIx4Yi͗>$<Pur~=\,T0H]u$/ O=g54, ћN'|\$ SzUp~,pjVڪmUVgnsmATVڴkmU 6§ٲ ?i|+JKvlR>vYp+J>rO*wSQ[/ g2z",wds;u5`aWQ9q;(TBBrv{r׫C/#=l *Ɵmo)$I$I(0^;[?n(I,!Hտ\ٻG8莸Ȏܿj`+~q7+3:w>pHh̓Ȱ?)Ts -dHH!&1* "?09˃N^B#hdAA;0v0v}nۊH&x/fϢRiC0r?qGt$9`~2/h>ǠbuB~z{X ޡ | 췐4Ld1~s YsIs| ziC$mm%7.լq"w^"?G!)%~n}M(\by ?^/]x. 7d,.q 99KwO)fn@򵴏knO #ؕ" I``.P1K!9,g'YX&JŚnEГ&vx ?  4,%5N |_΋ =8?dD">Ť _XbߊQpch}^ @dlHp!R(W% &ӥd)< +w^w9@/s'?5?a悻gDC'-!)t*kp.vV0$PY49UH`5mB2]&DEbΫ rP@Y ݓP]6,-?S?Z^3_k4]Qб)Q4 jȲW7 ces>ݳ1 W]gDoOzU偅t=^0;YA⧮&Jn_s\sv)uI>\\8.~dHHb"!1 zo  3 m3}@N z~W|@oHDd>(K\M=H`?kn!~/cp#8&Y>B/wuH`[^.Ҙ>%:G7D~N46/@lFRdIo"q|1bsx 9r|8 A1 ٪l.֨gk8} ]s6f +t6,ʨ_:|`*"^w[Db#|*&Wh]xV,W_.L [=܍ct Gi_8DX&. θGC1\Ի2]TkcՓ_PY`ȝq`3 -?Ox|޸S꘷E}WuhzS2ݾ%z" FϾ[H+͞qV [C1!:OlCsr(>Lo`g9x!Ю{{O[TpR_? t~Ӽ,\9kBlկ%`/*'N%L?n$#s芐ɱ}<:PC~ᘿvhG}u`WPacmĪV a;5I<OpDHDDlj[_UthЁPAUS{ 7ܑJ$L1a}U?0+l3Yʱg*ΫFݮFV e3mQ)ymS# penͻgnrH΃vj}W~O1(Gb#u!vuӼ_|b#5߆G͵0 Oל.?׼[uۭmCovUjwSYeEpuf/G^*%g@;De?-72IC׫c 7_Osuv'l k  \'nuZ=6o>)>a솈=A]X2d8N&͒P9^"Ҵ(WJs7vE8|9K-:\0 T|#6D@[ߙvwǤGD)()v zP [O>WΝ=̳.&bR >ÏW$%=̼}v)Qw_ug*[?SD 5svB|062SmMO1[e??}vLsx& ܝU5X([)3Wg_8Is9`vc쾦P{^ Baw3v~.x)|ut/oV6:T])<tO4Uk2苄2$ qƶ T[_גy>OM`&$b;\nL`thĜ9S#LC( i!͎÷%30Y]:l7:z]m֟ͧ_,4oϐa!8 8 G(>ف/XSꝗ(!waZK37zUQ[mn>86t{9Pԍ^!b:Cag+姖q@qV7=]*jΔR: lsz-b Z* 7-/MTZ[nh0;? & B~ g/Rþ!vPvҚ%;3 XuJkM;6nu@B/l'ZݸN~k3 S0.GKcL{ү>!<\G$js~\!ӄm ^~:.J}5m8[*Z۷>/z+ۅ7wuzz'Ԙ}U!܃2)o"G0=䁸HIՋULL?WdG *)׿' -"gIע% v7O-MzYbTP$] 6n00Iܦʺ  ;mݲt3FSdYSiV9~"EN"e;9 їjEr'G*L{TZNx.;iUJg%aeCf6c-'݂ߺ1e K%chm(> :D.;r@FQvw )`@CM?rYPsQ0*"!״5egC>CȀM8aY!22k&A,nu&!S)!;cMۓLfʉOIm, e9;]:WkbX=dFH@RI$jg^ 7 Q| 1Z~SI꧟ka?|8G, dl'ߪ׳VH'ff1CBLrluaVH; WrP>0j/l C~*W'fr?>NCo-g@˗ }vIwհ8I;j,hϒ|Ώx@PJvzez';J`Gs5vtQ1FY(uRa@&$& t^e[I^0xXVWfچ $- A*'꓄V&Y@/ R8?|*GWǭq;-QW\GI\xƁEND(N`K-wh۶(` R‰R] h%:c"B&V2UuIGF ͫh[ ;n`17,h1!ޫͫL x|kjWpD F坂F_=. ׏7p1œ8'q9{g!ڽ[-eӰioQ t;t&CEDBΫ^F#" ֽpk/!](_=u|& H{[ C[tv} O2y?1`AϦa2TXO:;b9%wL%bmWW=Daپf 5s焣ZAP?TC-@n#߼ 9@ROma뗝OhGU׊$k씁\cKeG`lymrt60 ;2ժ@z}ꎑyrצ]=|z?:r,stqĈaBGHv`t9mj\ ?Pr]̌a m ~'dP1j0HʀZovbsJ"97 ]-怱}y,,p20x+; 6;j׫fGT9Xp(=B<!{-cnF5nՅpH]tkw|1bϻ6<t=ߓUՔ^]<[_P?ߔ-}5,|g>*'dgn~yFXMz`礦 6+Ǐic\8TM1hXHGtH~@\ d/yӮqn8źrԏ~ Ap vngr ֨Y!1VWZWL)a>haO"uzBnB/9w:wGm՞pg5z=/~H;}򶞝o=ΊqG+Gz}:uKK7?zpr#,=QY\0^cM }^3,0tGLoB(hbmB9Crqt~>8!~R %6(=+lڡSs}is4z(ˍnپ7.ULF/!L٧.gwNIc>N4R~L?e 杘d54xM?!v(ڪL.Vap|{yn`WR]d7e3Py36#Ϝyl#BW5 "HD]ɓN<.+EzWf8q ;#rӲ0"prG%SwZ<7t7L[H<<[8.}/]ڂ! =MAfvG`ԡp@Ad+\@7-  j9w\ߑAR<'i@y/z|n?AzɇU&ZZƪ#95W9έ.?R*;t 3p? Қf??^ BK HogB&Mp͵N)-Gǣ59 (!0]NH9b?*[c ;l zca n(J@5E%&OVg}ɔ]]~m_QrO 1bг\N DȀpynUofD9+n@`M~aϢ# pNo>958u?ٔՏl^lT96-.tEEC3ć㪀 /@6?<7XYA lWMy/`d;Cpv# orS^g&ʽ[<g B\KA[ Ct˗s%x~/ _d e )2@Xczul".(Z }vT?aN($@< w·@MeHpgv(;c6W X.p Sk8^ȜA;4 Vϵ׍@LȟILƺD8(Xh]%k[cZ$ѵpzxjoz.3ͭ8\3QGG .lv6+*2&L-SR<fpNǍӱ)B˦sr\ڢ~ۃk}[M v|H$l-l& ]םVqMx^g@* DW)a3eE=T  sfx` 5cqwS8v&q |C)߉ُf~eNܐkum83v*TuazxNFA3(zZq:xWb >Qry3I( H@}Xs cA; z`yf:9'Ó 6 +`ζk_UE* wppgdkADJB0`{7 zeV}W:"3[9 P"n+g$pD` i Eq_Ծuc'{>X{ڑоȺi᳄;샪&2C gc-W0H(> E Y7wa';i""8 ;{zIV [&)v,ŠD(!={43}9~?RhD]57aM2Q yx@u磼O[èZ5aoCx}z>vM~[u9gy쐟?jLDlU.> 1%WPEBeߛ, np kpair: FGՃJlF*7l54PzuOgc?xL.CӳeQD0RPXAHԈ!~rog^#g6(  YfA߄$ﳗNdg(eԭ݂"=D$xjvOOV`,AP{ݣnH78#w=+%ODF,SgX qHznrf}L8U{9\!S9z5A ڐ._+0mX7__fώXskI. w<.";]ϋ (iYKF9ƀD j՗pHgO->/6UXgM PZlZU<7']9ś.aebbbyʘϊY\qpmd':=;uyP3,9bsO?phyNո$sa`C\ݱ\靠]Bm\훜 ˤbb-dHAIs!8q6wƓkw!+!ɨ{ _.~Ώ8Xy:Y:M];_jOl"i䚐;ImܗA ְ;b $ ɗ%l ;vl bsԃaK\5<]Գ%jE'DW=dQH~ub+hvm[װ &1BLwpIc.IӛejbuN%eUu-|۹7>_i&E=UUݢLsE&\;Gdz ^{>Q/[FCZ3ȟ;l.uݦ[#2Ϛ?x3uf|zlt_fLqźїm=ӿ U,rJV|#f;މܲ5nȩʨ(|zU-1ϥk5IlHj1 nIKBj)kus} : i(,=*ZcI kM:w؈> .)kK=\8@?w񣍈}M6pKVSCܢdoL+D=S{u * x(Oսܪ0! Lɖ˟fszDtoTۢ_'\4·3+MD_Zp:Oސ v}ڻ7Y1y #Taa_M+} @R1,3[n;Ç)C&)p.Ų`2ѵX6eV[c\4%.,>HS>1ZX`oßL`,)G7+5To?d|YLp3OR ㈣LSrΝ?5M)`$(9RA.\pFC߉ѯ(:wHxgW9u}D *fUM]ߜ ?6b/&*na n7ݩ_>k~P]NJQSԼ Ee,J_tvBuj?3-zc,N[CdAΠ[",s#Ie1!?@_Թ#5}毒f|ά.'GwqAEqI APCK/VoNa66oFh}nei2eIw\3iDfǡ'vѯ {u,r`eѪ@a j w ϖ -hٸn nW9ؔ4!*K}3߶뭩i5]B9-He:eF 1!PA+#V*?I TjuggJ2rhAJCbY 0q1V6N D;c7BsAljuĚcf KK2f@uVqOCVONx$C'ܶpcXNuhz2\FHe%^洅:x:T1bnx\:G8ud3yN.[K9Hy13W ӼslepWMg qbck bva本ܒ}*[ 9WpQ/oϵ@a˺zNUbQe~PpW ,vn3># e`;0p=z0sw, *yfef}7H3?e`/ O1QCuQJ=` N*BShz揢_7ǖOn#?,bsnۓ" >G[/.'JeJSk(@qY!SԺÝx2'yBF?IF,X uAad_.c|@?RbP #db V _.^cXg?`t2mNNNŵU;hx ~Y,z z?]|[;F-K =evv O+Jq?yykcڹZ.s[ 8;tjm!չu-΋48jGGJrDe {*y K{YINzYTc jם¡Q:QMO ?xCT7{_T9m5G}/^Փ{9ɰ0qY6ՠ 80qc"EUCy0HAD_O mCh2^"QTzvt]^[^okh!v[? ~GNdْǷwO8s{߆ǫt@+AU_ħI}Ʀ (T9s4%?챨6tX_!ߋEnSVDkU[fk6>50M1c8U]&N_V8͊#6°GsCPqs땡<ۍ`ϵV@uKg> ]CAX>/S6 IicHͣ4SO->n6?? W+b?FF3걺ͭ֩g}x>>к3(_fl?pϘK##6)1k84螸vƯ܎TZ:2GP΋!tNBnA0pPlK(~ogm|Ѯߏ89潤ϣ%̜Lbf GÈyd!CrVQdF) ޫEKuYp)L !# CJJ*!g̈́$U MSr/9б!CjגhC]eTG Q5yD@''~X[-/Ths/)NeKlY'HeYuTG}e|'>Q>%_ dap8m}10ml<2`O`Ӓ .GM %N%eya U[.ړ<eÉ!j{=O)-p̹ۨ{v#QSxx-b֖Pe s{)p]2%0~T`&z;K/K1I3a?0ϯ Bڜ^^|wb!W a&3 Q2rF1`/X:j;دw98>*Ԙh"¢"CQM)8>~帏A5QWo).>*vkm)2f4{4Bu6C^15YqqLBzeB}J vjh\R+EVX1/ Bӱ/Rcn("Ъ X (RlC?TQ^M=Q5Q䐄W*,}Sr(_u3.oan!,!Ӎ1$ Ewn,XB?׭Zk2̼mzׇZ5a(#ggF=4/y]# yRB~2,qY Mm}Z_o,k;]Fl^XLߜ(s-D )#}1LIu{UnHʪk8WU-hE'Q -q{rԇn[2 {s8-t1ZҤ;)`tt GJ:竞1nz9j}0ۍ>8)JZK2dgw}SNoJi=)\K ьb9r%`=Kj21Ც3gF%$;pQ yѲwA,-xT@Luǟd5!Fb$O ٽY.}AU⏑KgŏrGJfS 3 | B7#ɑ}RwMnz(1,mK(d;Dr=| 7|LCw7Co~tp${jP6TLc69i->oFXc{(o3%at>x< /WX͕yv8nڎӶ_Ⓖ[i~Uk0[zsp9GTh% *͍;T98,뛉Y4Q1^|KoXi>p\AnEt L@|4}<8CYnvq鬆m {V% j~u"mNhMbomK@Qr PU&H%;zvEGd٣p*:,S0N 'k>$]G͎B+ӎ?IʜtV,wQN g4E %͸s&r~_R68,-Z᥷ʄp\E,T$F$&$}UhHE, Y;X1 /HQ2g&۳mfK8cnpK'ns6t!㬼-{l8Ln%o=ɉDXSA$4IF*M"M$: { $O*-=!6N2PxXF>ߦ)XoEPp}υT1(BuGh]?O0]jnN{>X4;ԡܷY~mrC|^2iE΋ډ6xXl#B|Yɮ#n/D B,D/=Y|ᄛ2+EBZBsv:w\fHdU]l'P!3\24t !!bM=-WzrלܩjOuYfr[1 +iƬ"ifd3kgO'h D Uwe0웸rN96 1s̽f޵馸+a;pUع&I3#gm<8~&,3]Ufz S`#)$2tk d XHle#Ae@ѝؖ΀+hn+&K>7 )vzA4?4}? [OF}xS*L,{uNlZ%IꥒHApevw: WJuK9]3!RBxA@?}<}fT h[!# +ZX}2fJ۞5]\ VތHz8pރ'=@Mq4QY;_QAD({\]qct|d &Yōk@$c'=Y`p(DS@^a'^.q_ѯL298;Cq*=>178}']T@H?rNVV4}/qgRπz1(ez AaJ<|# ) Qu@|p(H%a:A0ZKc)0@Kԗ/NP s{-̢ղ֊#iTX}".gM%ImΪ0?4Y쪰[HMaM"0 gLzџ/|KzH@|\}|ャt8wsvXh/#>ƘWm种OS?njf5rn|)QE<+@|]Q68v NpF$g+L ANPs[K}#,$I=i}n?NhK=dsP7ItýVM/&|O+1^V7*h"7ѿٚsröS~a`{j8f +e$⣜|:xlÜg9/x:(B}5y>zf38s0`L,2:?s55UQB_ѣ (E/1V{s1Bs8~ @8%Ӧm^(5oQ[s^ZD,]tߊʓ)d]3֢R{C֯`9i'Usr!h0",[랎N܈HJP)ы Opw%Elu0^/.D?[.9T< TG6&0J *X(?\& .au)h~ۭ=BLeR02k٧cnJ.~y嫨mSŒr8 3K"$k/ᮤmG8[l$D$1zwsI}\@j]uLUmxIc'\^搆DOv/l39!8ΉMQQȆ{`7X##J5Έ!d`1569@]]羁N&R? ]z8(2$5DDC7ڨAfV 뵐YV@ uAq-spzLĐԴ`N?n" "=Qx̲`^t{$];%{&: TQn,c"X[l-5(ڟHc_'uϙ["h\b_.iwfRdVXr+HN~QB0Y5M._|-4Y:={hJc;*DWZn$Bm%hqjTi] #;!o{ *PHz7rr>~k%i`d/9 =6tEFH Lxa8+&EFI Rn03ک, r2H<)JԖ6xP#@ ]Z>{˓n(PLPXfDpeZq2GI#^BIGFVy{u.f̋oE?kD&q0\Ht E' rfPj%\iO}jqEg4\Fķ,"rzɊsd!Řj4XEOG#*-'/FbZ8ͮ)l%e*!U~od[Tvozk֗<7q1uߕ8%[ L%4{瘚iQ\@[ǽ6ں^h -DZdB'o{nϓۛ9 e yOlnd4'|.kl"Ru^oK04/W~bxKjctm-R0[hCI֝Q[ﵦ).WrE@tu\adAy=ߺoӌ8r_Yw<ŒׅÞnWAfzTqjdaٝi&S|XLe'x;}Q=K> TASqE0E}jḬMlL@s96[|P>bFm:Z^5Q_~I}E'|}:F]Kz qn̓vd->mf.@BBt]' O@lԻ:lhvo%6Hgq(3m)LS|m{b zނܶw %yG6]39<6MGvg,%LmȐPI <dKU۪+-&ﳕGL gPq|0^&2I2C5e;5.Ǧ梏{2m25 v5XPj4bw}Y!\2"w=m[FZ2CtsY_nɔG%o\sgJF=Z7P gJUaNouISF[Vs"<^k4ޙ} ϻ)\=fQ/&S?I}LQTzڨᬁ׈^0ed}}dqkąߔ%>w ֮ޥ['zcMQ$8.g&}BgwmqluU&fk\(AqZhzs*/ɄB,X,w뱿VݸJ7c +y Bvf䓗.6Ayc5XmOqS"bo` 0p~ރ`48@p|@G= ?"xy{{|7" Ǣt%縍0yˋ_ :c?D1]GC(s ^CЮj%ukt^߭ڗ@E2s2|~yu㲚` NvͤvL ?C78Zc^Xuko=\og>G M@ԫz&su1ٖ]<%^ pWŸDg4E㳻.L؃&ne'cw:q_b`VƳKGEKo׻r\vBRQ^p:dn2X GAXCG# j⣔pVDqE~~s9 >ϖ>\Zbd_VMzk-͕㳓OX] 6yOu a_4"֜y`+p͇.SniEyYÔi%fąCmC8@Lc'̈=04UCF f[$I^)M!9~ag( P) -p#ac|@]F19$uTIPT簘}H-O$m8 9,촰ʘd؃~U۾%Rܥ~mMb“p"Ѥ$v Sȇ/C5I<{`) ʟf"y{rp"zpQE Zp >/lO[W柒A*tG'<.~:YTe]ـvfV|vI*e9:aה&V5Ye=J* yO!C =I9q㘣Qv :1OᎻ=F~xqtGwNq77 ( wWkavҤ6$}_+Iß=;8Gzy|4Ƶ2>$n^s g=C]7yKz )\=|M=F=7Z)~cI=n%Bx2! Sw35-/;o&4? H/iSӉSڶ~n1 n~חqL.y>'A;f]N ?E#Y$¯VkJ}bU^-0p6KTʨ,Uٳa3k |2tBA37 躤?wPro}oNw!}H\rQi*#EO0_怌Bf8.zzkTṼтPab5S=VT.jZސ(Ix绺~H-OJzuWNN ͫ!C( &!UGprGZ} 1;DJ`},i~G N'tR@e5|Yf! I0{ Ԝ C&4`w.!g"LtǞPDغ&6au 'o%6 !7&nv `0~~ƒ]ELW@UߖnipU)"?vƴ#%Pq'>s>Y:8 齙Fxكr$CUriC͍;C3;ԡҍ_Ƥ0ɛfko+mk^ff͐&yV6rv7%z!ـo=5UGq/15]aL!&2[_y総I%tLܠ4 |l}jܒzQ=/hBPp[- g'h߽Qep'!r7i2R8C okx /;e\M +o0a @Z$fsl@@833l!~t(bA BՌ<\ڒ6$`r_i3L/N& ?j66vǥWw7BNZ>ܯY0|-l7hIxtҖcG͊AFꎨsu<&>>(ѦR/x,m8eLɸ|^E

?/c˕5C%_~n_rje)$A,w͘@,0r;TZB7_MgkVz\:"yJK#$@ArǷl>:abo-sBw4| I(>;yŘDb(ORԐH%duQx4P^{%(P۪:k%W<7,'X| b}:s{yy8*Bb" u X@ 3~ivo| Eyu=2`pZmے@vj:#iQCD \`j4Z Ac?'HTCUq?횥ѯ뿱(d\R@7Rb`epe ޹uF'cvm& AA;}C> v%,ʨRmJbCNX$?9`,Ɂk/,0۹s31'gxC`\yi b U&1rs4'e34v>"Cǭ rV5G M V!'̖E&@f6Iuq/Fw.zD#'W: ~|7PdoPIp'tl"1aY-^4Rk=YE5L\iӔbW鹚Zm^yguXg3?w38+sF8-L0]:|;*9瞴sSnzx=[7[6I\bzU3bͷ8,eÉ.iPLhvAIjws|:R(h|q6)d +1S[S+!_W0p@tCJ6qxRЎ 2fKzteSXIO|C)mI J(p9nu/8rVWev ƽЖlH-K9hd'mw:6b*vw=wK򩚾/W>73cbeyR5kݑ`f UinkzC 3,1q~Tr]R-ymӜ)p[B*'eތU|b'#wօ% zX\<ô;./޺|[V\Rd! t3 H{UTӻW23B1/r'ئd Ŧ0{P#r2x(0vzh}D 3ߛwO*wNu ʖKmpmEv=.̜Y|gy4}N!*yyI*\&=dR61> F]8pNHXG|eܶf2Bl#u!CВVsu9, u&g6ўjΟ6+G#9'Өhg;\)7]<9x*wOC ~feE|+1' FQ6'{!./HDr1a1U*`>; q^c1\(ùFq&ԫb(QCE ૿^회q(0Igg)wLtE$Ʃđo]h̓im%s&Sr@ʋy8L ݜ; xi97Pe51jjѤK8!`3u|$%C8Bkh3Rh̹o9|Jj; %hX9t ̎ Tf;\Vz"0c]8ύVbŜD;E&m٩9=e@}pJqÒbݜ.*$T"zȾGUu'9 Ny#nbetw[h ɈnԨ81I{boY#sE"AQUPxk x#^.1w`QbuR˶"ڍ$ZO'u8&[8͉7" + &=p 6W e[]y2."Q4/mn[ڻ(pӾ1ՅyMGx2bqSa0bM&{A;w&b:Wn!˝9/> fA5As%SBxm3,0ŶXibJZQroYf)jUɝ5]occ<"_/s<8w4ϧƙ6h}o>Z;۷mdS5Y /ޠ\YSQc`?4S¢vYK u#01) SCD)gmgj\#Q60?3Uav>?9 Ŕ ў/ҟ qݝdړON_H3[=F>mH[z[>}+H_'""T0!֯(S}H dm_yfĄΰ.pac]"fݟ*C,7$fQ/ؿ|=w74y.`OYG-=tC2M8DwXC8b.ߖg_yÞ:xeoﯲxg.UEӟ]6vY}k)՞5,#Xs5:aYEo穅vT:+nn 0˫00)V1HUɀW U~0(ó Qx4 x8dxq4|SA' 3c#CZ3杍k18_{XN;2cwn.CQWghp ȯͷŒrV7יjdGanԺQ󸠳!2zBS2{:x~4~u;H/Ǚ*|^1o,7D)G^D޸ BB3c ElJtUAld b]ީeEn+=.+vWO<.rb*ELMXeKL51XC\XzƵ{|.6 `<4¯Dڪt(_|4_3=A{YYFy%~J3/kvͻa/Rj7_)o]h)(VHE1^6.ǃM?5,G?72(ۊ$CQ (2$z{Gpo+־ NAa-:geY!nn9z5";s8Sh D( A{^îu|x4GkdDbY*v!La_aT#!%7M!o7|ޘF9]`xZu380DI5 /%KE"+`ktU%9$%9,^C tݷw!Rl@.9]qyc6B0*9kk6n{OA=g} ^;z^FyTA $K!Eu!$bݕ*:C /;YcI)RGgzS7)ZAjV>iD ݾRwb@(5elVIW&@E8*j\d^闃ov Zo@\d,{a``QDUKV&7ʿmP﵄ȴ-uG2,?CWx 7Pܵ."WGV^d9#Q(q_'w872uVe5F%‹ R,EiC5w=fw}~ yW+ogtn@QX'vR Ipoev FR{b%(9>b`z :z${͚g>i+!X2[To$9.OXiV^IãynX+0˙X@ǂ_;*ȭ |"Jj} =z nDFoߩ/Fi195ae$1zᐚPAݤ |ȎP!e,,[njV5x۲(Kqp.!RBm7o~W'/̎;)}T7];ҕ"4z="ωOuٶ-&7ڢY0Hqж;iP,Y(KKZQfy|VMyu z8>F$sb6yv0tB<InTMy$5Fy~C npcagEU1ѰQǩ~mY$0}sɘQUUb$'ȺetySX3! =ZD qzk J~׻KyIYQ^ެҵ?-x'^7j4E[f˖+&QQڽ|m7k,k &(խǔ`Ƙ,#|Z}:`jcrk,38CcҘl?ms/1-]g702J" Msu^Ιmx.fp2icۺu-'~"vEΫ gQ1(hH])xL^/ nzK7[6Tx)|].p;Jf!JOzEcLzj`/f4LQwuO\5(<8֪|VǙ) 㛾o&_Qz+ }9]>lA3fy!mM($>ĴD D!\@)BN=e E*g ߬/{Mt]?وsdzof8@z@؟FR@Z'R.f8w%sиDitJKi!c?CړT NױHCOջ[*׶Ŷwg^ۘ  O>ہ˗8^C{h28Zj35m y?@õfKB~P]1 BQ K0GvDHWH\ t &ҕJLuQ8鈾yp%COa4p_ - KCQ& 9{뵆Ob<}|ۙ uʞcL ]p[쎯:C˯[W7WcXiҠxm}N|nv?!u 9 sۜ&6\$r_ Lpc+!^djq6O9?};?%:&愨 Hd]X`6. /{M@Z!UKܸ@[%}%5slB@scۘ1p޽)˿{t^;ey9.~˨.f{5΁,! Oce-5SƁ>۲CǏ×6Q6{kk=4.E:bx0s[x׊aFK>#Y/~|']_wMekn-O'̪o,V-;>y\y5W.0ͨO`26kbdqvO=`q :RY![lr{zݺ;knu칱]9ͿF_~? I?7UKIOEPs!)Fk+ m)!3 LT'_5OHCI l̨#! I IS4%R/_FljbȠbQռ?l}B5U|e};x7pP:](M*/GOvͮ& ivWj4#jβ]cz4N|D:c!*?N!9!v#X~ ꢯW^]qXOFDyN x[. + @5jO!/ >#7ry靐n8AWd|%|p)|:==R9^^;釋]?<}Ǝ?&fmhzP[=u8(mrY|pKhtN#~w~N(\@|=>}|v/Z~\VCiSsb{7+.tϳ ӆfs9);LBul^Ed9JV+e;}f"_%g4 3g1Vl2/mA6H!99hsqKw0WkExiOߣEY- UaZ~,!U?{>0C۫daW$%.W ZX?ATDk$N" gA*Au"TRi/_]Yjhdtdtc4c7 .`Rd/un~;8/#J7 <;TX֝ W |$. 8Չ&.u `mw'+eappr[{ 6A_3O'{$S1Amފʎm~rT̕6ɘ8C$0#}?<'Ag.pZz+1~st !6Ø.SCh*Wka!̯ѭ'C^NV, 8D-j{ r/=1,Z~bڍqy_m±ءmHo =:PI\TXe<EI*/ȇOԉODe`DV7۶}|pTkn3αژ(]320@ӹw'bja/KGy E-E^K=i(6ZU^tunruţY~\9juGG;`kz9b/*~鐱dDvo~:Ζeٷ^g枽~پ/|%1aY~)NTt}Z;\P @ 1fQ5oaYV_BA?j5Bo.􃚷 ]z\ +MYҜ#g8nd 1DQXijCټQh1ނq":ٙ8A6zw0K\) k9f 2OyW{NׇMn^Rܴ#slP ǻK 9<~Cy.Bf}G&8]-6\aK1 33Tǣ䯖| Q5~~dvu-FMB&Wqo(]bI -u 8X0u Du7Oq Dȉ`i[AMp z.vXIx]bUzȉ@# ֲUA⃤^.L-}z@ :ss /] ץ9/A)@PׁLQF_ l+|шp$R]=E(gsa 8>ݒt&o.zWѵJj8\aka& 5.UswF/Y°;bߚ.0bbo^|Q'KqÎ˺Om_ C?{JY)2!FjpCŹzY>;}"; .6Ff UU#6c&QWxܪ, /ۜvTnAc%f1pVou.szK0d!֐a[ ]B[QN;'E.id>JO/ fa-;jNF>eM!;CSMz$(\i4ިj?6yJ88#GI~`1TvW2їw z8d-C oMߛGR$ ]zՖRT <@d9~X48:ِ +,9`0{`}NQe!K̝|G,ympbE݁Ӕ1o)@!+[|?l&]uf>J9ckQ^{\ 9+[VoA趖t^#M򝔋T8vpQ&J78-^N6 L`(C5U7A;WsRC9Gm?ct]GA$8ss^U,Qi5(XV 1I`غէo`#_7LcX9`^!VɵKq֑YָIV0X$ z[[!/kCQXskьۓd_c[2#ÄY]G*Xl!fwUbϲ#;*)+g;N$^\)NNy)[ߔlWQEMhs:uUsQԨJۛ&IÙ^B<ضRȈ$)1 ,;rs C΋wem52]ӕEtAL!~7⥲ή.Q * %RP0Vq|Sf;f/gp=,YrqŅn}c5rP_QHqppuo XPjPԣSfxY*h`UAUGk~g\M A0U,\>/Qm$;JT|kms"SmT1r(܅6?wu3E28MXyI"3拦GyMcB<; I fLp/j3\l#/툧@9p; `tsnPnm{e+6*eUr^ƒl\.*~Ttj+!Wڞ+^8t=ϢOc 1 9좇 pEP:h?gşx=ϭ-rDUұɽ3v(bȦ"&Z㗍}:𬢟̢xS6}znN'9ힸzǝ9֔[,9W3,ɕJb³9hv?TE[\zR-{;,s[^ 1 J)[#SO 'I+!fl-a_>Ⱦ"SQDpG1fZ%:cX\z|1g Vu[GmaYQmMP7sdrfWyzz|t%m7$P:O''H{+a<{8%Y _]>#5"5WFffD| }aE6wt@9iT =w*U#(=죉xszrEXe! 9nup*6n<;8ty:,O/OPdqT{۰*cqQ ^_z8C^8@?%(bBWa$Bt zzYGǡ@l~ѦI\5kS+JUqpwaJ/1;O.@X;d'C{VfUK3og<dԟ=jH\Z-悥p\ =B AQ`rJΧN9n XUᡩrC,5+qQF &!ʛn]4A3&CAw% VLRAisϒ?u8V5R7 g|tc F( \CD+A_'΄O`9ց^1>bA`$>""nw}|l#ރ1_6 mLo ݇Wa=h&y/n"BFI\^nL- 4L?GT+Ňm p6$,|3j]0\#?ܷ20b  '@@ô>ˏɏmsy$AO"48$1(8oPʈ,ƑDR[- aƖZl-^TZY4A"a]w'Wb͌ZcΐdZ,(&c39tۖp'쇻쥝5o:Vp6!#9-,UF.|olC~Rl}7j ӹ4{)a6zۆ.LX_AQdd0sJRk e DE겆K0; krya nΓv&8뜖?_>{vyƤ]30kP6aEaubS p^pq2p6` CǍ$CԉȔ>87nђBsKR8a6kZ~L\j{:\cyW^ٕj.Vꁌ]cYM-*H5`ЌqUP\lhέ\#`.T>>:XiVDxLpiӄsʕqȗ4ZFkUDD"t[:,4{JmcCmZhQ[Ӂt L d0e&)cөXDنu׽V="%)`kK8 /NnSX͗@2AeF1j넽`Cu$@]I<׌Eb2 ^Ԅ;%F1wd.Q#ÚoNGզvwby@f(S9mDyܡQkM({t6E2wFHPRSMI  &#+35;L(,Z^K~Nxwǫg.1>o-^|(W>^U?"x#_Uxdm5֝O>G9/w~}[ كL#uVeݻAQ 6N~ןnZADFe&i".5]):j[W!4e/w~Cx#4ae2ԒlnmD E.yYUP]x(F`~+$x 'fv~&SvOL:dG0[-1QHDap~SB2PغLXi.[&j{ ߌu})>ZjWӈ@^մg\o8:F -Skq}~;ڲAzj$0ȕ  k;4m54behRᆹ 灾*t7G {p˚.@JIUv̆tDCLas; 6A3vM:# a+#wQ^YCVqd!o^~|+^kc`ǷF5\\v4p@|V6G_m?+ LkDO'Qgta HgG5'ðzR_\>8̿]G& mM0M5aYҒ#%hK:]nZ0` 0`Da VB[F "/2@Q1%7;y|O=aklnJ66\3ot \#x^a>OݧR#"h$Sa84u{WR#A> 5TEi[( K֖(R@7➖iǨމψzrSC-ƶst04yմ6M.˳ȘnW.,#Ieχ;AAӬ{Ȏ' 8ѮxGi:bt$ q.yBj䐁"P 'y"ĭ[4gTWh|T;ŷq:k~em w-=oa!cGNxǬ٧7U^.Tط'J7>,!WKp=m O6H'fۣ?cd7Rگ>b,. n.;ވ*?Y"y/jq@f9P[n E33yCRY JdYtD2'k?Q?HOBDI9u d XDS<8z#}@矪.3~b o;Mֺ1EȽs`WTb!/Or$1z~ 'h bŶm12E? M0?2쇭oM]{S?s8/h bNpKH3 Izg˫&zz5 _>ClioDD ds,^D=P3{,t\ = v(Drc>liz] 6FXl\;"Vvs{*:eߒKR CtBy}@ae9v2mG1Ec׮a?M(􂟑@29CD0T`)S1s߯&Y#f:;?F~yL&zbzK}BZ(\&"AN,AHӐlGyϲDQmL> nƴ; B`>35}7sB*Mzi aԝIv3 4LD`ltN%,ԅDP \" I.=O:xb; DP`> ׆ 2wiIkL-Cs6jq׷Jj16鎎E*U.yya\v#6D1^Μ4=; {uw^q_wXa`,8yQ|[!#Aܢ  Bټp+]䆗n(nLNC2ECx*hbƁU|z6cј~wMC;ٿl/ C4u:i@歂"{Hdx T^F@ SĹ^ Òs.LN"auƭqy#SX%@HxQw7Hrw o#yk Ul=C闥Ȑ68I0U1R(F&06X08aY!W}?vb8m1f@fnDl,ofS"I p[| Mq3r9- N#J GYQTxÇ8:vo˗(_j4R4-)PEAI@G2UqCaن`~"OE<ᥘKwoD G MZfz7T6YA@Scd(@~vcô:Uo.ZrGi?U@1;;{jVzi$ܐL]n T4׌׸ H7YEB õ:|6 /%FbpK;>v"9g3CɆ,@=VʁŎo {.XL1:$/MhsQE 38У-}gT 'j'o[9SwIٸ)Ad'^ ܛ\d4n@:"%RnX0H"D24vFbQ] Yz ▖+ʂ*+=eSFl-f?Y/cAxi| AT|8'_0׆b'"'s rNՏ2swd[J7hg,(,ȑ|@l@ZsxTUΙX('gj=JӰހ Jfs@~, yl7 9oh{SOr>!9 ixۓvogyٶ8y 6X_S:%".A )Aƀgw_vn 㾈jp_`n\}H8:*8}rKߊW}+)OQ"V(B Cb Z((uB 'P!EQEAMb"Tq;\D@/eX$xb%/;&%N pI. vJ*[yP PIAyo~MWr% *1@3^p~]t g؝P(ogٵ\\π_nZɀ:vS fTMx[,Ɜ/z|DA$h Нx%$8voՙMJ̻Y:Hƶ:rZxs|`:L)ڀ7Bc+:G}՟u0Q59Y*sT<b9$P怇*7HqWUB,Txf8VN<{a/ߠM7'/8z:W bbm)X$߹ށ=>cG2rOJvy?m0 '$ERMq#D#pܳCpJ,;|T늖/RkoUe$H>lU1)hgj=H XGÌs[2 J33Ӱ-r{n6quVZfE}qsk𤡈¶Nsf QVHb/cFoJD%˕4Ft~s- vyOR?;^#ۤݬkDW1̿5V$H.8 aSCH6b`hP^0zŏ2J;v*1V:Hn1atv P_}@pn%+vQzm{Ca5Ǭ+B)zFe6/NyeEGO [φ񐶲f?]ZJ4IR?bٚVIchk]`UzloWVm"ޗOe#-/]/;Co sϹmfŕp e^ n!8tevu}c|[ٟǷtr|=nǒtzF|Og{s&fa(vnưmN:3;$ 뜝R$3Fj>m ys?M$E#$ΰQ ^PBT  d $U 0@Ls30sc 辆VVź9|F2aӳ1Xb+! P:Ѱe%2eЖ'J<yXP5oK(_j fv';D9O!t2lA.:ZKq⨻}Yfvwg؍DmhDb#fC~]p+=r(8|C|&11NU0z/7ge?xżDla19XAσTg c8U|ʿX{A ^ɐ2:'[vnX}>>Cj%d&Q=#|s{Zz68Qu׀cK "P!Kպ488/Ɠ8Re[1(A>  p c]Y^W5wru0Sc8:,ϵy_ֳ 9'ܭ ?3>])u\Z'v67) ʐJdql~}곩zR,3~q w1x$;>NA}d(RjHWS!oՎׅ{T @rxR¬ 9>zݱpSCd^['ipnIO2a,O2F}oYUo CCsmQY_cb ;D.l B٠h \4kJ0,LCE&dr/yEuQ,JoC[{0ӷw`~?PGHp% }kL V0e"Y<~ ^IMO:=2[QH T?E=}玾]HmkmAME~Kul$W@/KFwt=f_!IQH!ќ?]iḂ0 0<_7 D9`%r>v|WgC9Մ˚P%̀](b6G|b:gX|D$