#!/usr/bin/env bash # # Copyright (C) 2011-2021 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=1617ef259de64d3bc735c24a88cdf937 # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 mdRnqѩ5? W㣪qSl5jժǵO# .!?yG?z( gZ[:eRj/zȶO.W-> 0PԣE15Y! m. bqgcZS`sUR}j-n[݇?˞ñM y-E~48Ӑ&1,ug]LBlǷ Z#shy{I`Rc[ l &$+ XtՂھ*@KO]K{ 3@ 2اm}A1Ӈ{R`#u\hx  9&Ripa5@,ce \<3IVF%5`y<XKY!\n$ܕ#tJ3~*H!~ZH>X c]G"}$E!=QʒR!rwE '_* 8; ɕ4\cLG6㹬qɰ=Rθx4(A溲+{Dz/U\{$fpݗFȀ*9YO]y$uT)^(C#-Dڣ"tW `d@=HBALQeuJb02+ܑS(LhcEBRm&$ 3"3}UCUˠkن]&Af6# F1ʂB/%hd( $QE0\żtѓ/~G⹖ j` 01PQI#0e$>CPl:R(-ۘSzk-}в!fǞZbQGI;gR7-*MԨ}bѤS}5Q {U,wIy 9s 0iZD!ɝ[+ 㣣M^Bw_y9D/?wpx<׫Z*jG*aH,![ِU+}NΔŰCiPۣ\B0t\ .4! ypV,3HA&ؑ XtuA)%)-(Sj9eJϸnf@Ʀ.QBxH2t[$4#8BV`9+(LI?&Ԧ.Hk[Y#x݂d'l9<@LIjYR^_,oN\! ~X,Mahݞ\|.5zN@؃$Zӽ^|xL{fuܞ/]ux_y_][,VA*o:ݴ_n"f 5nR`]l"侬jPkռ$ * U }TKj&uTuOI/eQ%ıP%Igx@wxՀF<3i&Aѥ-\& YzyT KX`1nns$ibګ!1\y8*ʠ)V-U6L#l$i=,ysLJ3fܐ*Q+۳f6+N| їrǿ z6tS&_Bo0L c( *! ʵ9 _foX& 'Z]B,t 09]Fo$oߒF Ǚ1 .÷HkMdT2b ;2qCwvSB."uZmwFv Ȋt6w*M=QӧZ^4Jhp͟Yf^1c{<P({?o2.)oU'UH4ELj+/ jRIPؤ1}QM"v7DW`BwVjj>J~.iƭ5ы\{0 Nh[hb7wj݀nn^ 3Wnl<'G3>u䝙66`:ۥ 80 `ȈOE `?Ҿ-n:_` ;mfz]5`؇|!(S IKk5pkEغ)ƠXj,%,H~$lm7:Wf ,{Qz>.iY -<_*,oCwp{&0G,Y)"֤,m ֲΖxt[_t-nXr[ vX1p! IY)/TH6֮̒T:dmQ,9H7=Z#>)`N7Ӱ3*>gJNf J˶M4YJۄ0XD;w =̘_ŲXpi^@-qE hWT < u .S2#wVNDZjVc솳XOՇd[s ӕmb!A5j^&;YZbEr-V Am0bMu>@Lm̉Z[2A&m[6DF_[UhxNR@9&+.4.u FC xl22Wޭf,W88n\ v(Y=5A7IH;|o 3FD;D^$"kJ'qRu2DqZ)2 aYJ3#xO 0q`,5trM,ټm'+݄`u`.aA/t>OI1 m0D`AE||R7IUJ年4cP[ss q,㋳/}ӂ<?y8k9K^v$ozAAM8Vuc$7 uԣ@L 6X&n0oP]?R?jGV+uުa1sXR* N嵕+VBX]Ƈr] G I=}ICZ2 _ U_;2% shWm'/' 7P:,q5J晬FNȺkUS廊^2@gk/%f<11zs3H4AO4F3m! xnԱ?yt jG{tN ?h=j78h"_kzs9gzvzb {=&pB,F>|̛Z+lk HmE.Y !9f=~Z!ݳ8~>R ?I[*jcd8`? !óW +L7ͼN=!+6Ml`(jsd{"Sa\c >y*L`'_$Z4T^Q/Kzgy(kcJβFq/;:q( ;?V%,w"o~jVhh^C?aW-5.?z=,>~>r \R$au* ɸ#'8rW7@@КK"ZC"xlG#Fjr#,ԩpxDq@AoU1<,tL2{c% `[`PlM=֬[̔OqNT/fM!$-?G,VNԬW.@U'0ݨQ3cDiiOw )KO$ʻIEBO~@.f9Jʥ#7k ZBb6Rĺyme?ҭ}訌8S:p^glSFVOGiߣ6Y^nYRkLbaQ3^άzQ$)S=KCƼ nSOzur6f۪&Ѣ`h?MuwF}1nb|{BonM(>ťY4dҙ[Fa *ɫ"vS.-a x֦xbs} {1{8ޠ=C{3v8X6]|t|:)x䤞;y'@~Att=~}AFPN{`SPO(4|"kg!nNKa^9<@L+fޘ~?{ꓽ!;(xLղiOA r5eY.ߋ%OB ҥkYyB#[4E֥ڤBrJ\7a~_ M؝w3arr$HPg9#_)0!3fM7R66S_g'B bK#*T!!8rK~&uK-,Éȝ?@m1niJp1_}%~W74+D!~C$Ic#O3fОO:gB7s2Ƅb_a窄ůJ:\s6"tWyhuE#b؏.uP~2 F 2elb2󦅊t G:Zo&T’Y[h&}$;w \s4ɖ.]+Yۭ|j]u|uK7dxT+b%AGHΆ= qr`<7Ǚ_qv?ngO{_Ƒ~6NA,I3d`;Ԁbmb=;[]6v2{'Ygf϶|^hְG'﵆8`KY_Bfچ^ ?z~F׸2U_Æhzt+zY?9ǕG*«r)H`T+YNŬd@1a&aN΃LW<<C-llh3F. tK`fElJ p}Ht6J>tl!I>y}-j<[K8Yl!, Ԣ0B0?z U-Ep@wW\DDTv5 »^Kp}XXw(DRn&AQz OGQEUC d3`cQwf0:!&|C N=Kp`O ^K(H#hZδ-,h_%lHHBeO vCPٔV| [n)#G`4 1'v9ƳeiȖ]w0m1ju.`)ÿnnF&;z,=]. I* Z9pJq& #cyHcA56iL:|* %2G&TV2G+B(HD1A *oE馁ʎV ,ʍm8*2O\6fx%T3(E88銞s>FxqCps3>#wV @+M޻VϏc!csxtP?]逎HMz ;=oJ 5_{͠f̡]U7h&q O-&$AO1,|=+ ~j4Tˈߩ|;xR  0&qnEU>2K˒Z~eEW/#J4?=`0 * 4g^h^.|oDX[f+ՠ@''65kbuSFM`r˳bx8|jؔ"tMlΰZ]71d̼7o;I?fx݊ju|}nG 7 E ΁im_ z3E.vm9skV)!*1ZS7jc8!#HU, dqsw1xE ;cxetw(a$=чSU6s0/=eyŭïQ hQy r0;''<^^v{$ kAAAvU(09k?j0?J7Km_;b&6Fs"3e./ffL* Da_'^I<<1Ay75IsgI* Ӹ?,q640pm+#]b%5/.H*j;JHڍޫܰH)}33)ySG8]ct-yVV_#&T :PV/0Iq ^Roꨘa#`rq(͡łO22nK,EK(u?}*O~{~RUQ84";Aiu~֖ε _#zU֢>|tvy/Cپ4`y'|f Gdh 1T'4'npF6h.Ⱥ}EϙPZZOpryl \`upސiߣg leQV9gi^.qZ+fxyW#tbJPtzsi,Cm7ђ7 2gg\dHKFѳݓŚwNO[)ckZs:y:RGWU.'aJ([(\1I@e:,Ai\)*_TgTpR?G*_};髯!w.tYcg Zt,˚e,C.+ms涰yF|jy@cfrҴLSi+w9T݈h9)̔̒Dz|N)uֳ)i#|Of,t܅r sv{ qt*!dnhXeT!.1#\EL'{&EӭzlvCڔV;՞oc:gVpZLiY$̾cr̗Ȭ âFp&=Lj nCo?*9eN]O*TdxPۏ" mV_$ N(u%B H)\Th]]UVYuNm >'yOZ@ (Tɭ?HE# dC0̼҃ԿײuDyרE OQo ۆ]~st23&ggQQ/=äQ3,P%XL;!ت]BC:dX(a9#/&p/KuF)Sp)$j{#ܖ\.;+x{5 BדBi]n*0>Qхُ@hu͓#ͱ滙=,Tr/VUPJpU}%/2ƣf z&l[KXsnheM Q}ӹHpW@1smg$0I\2nA+sc"r28H%yTGNTm(eK-A+pG,19Ք (_l*nt.5V̇6z<%%2K:{hπu_(ٝ/zn*)ݝOyMR36;˴iZ7CH7՘qDBͲ8[19wz\^9[I?jbD~F*\zyAпpobt V(l~\?mrzS{[%.ӥ)0Ȑz&2@6n[7'92R"@AQ0ߟ3Z)_&*aԤϝUm[uLiBv˾a[}ItޖS 6s(IE71Te&T·3hXXw\KGr˴?ݲӐWfP0XFx;[kTU,zAFz|mFizbmRFD/U@w #a9s k_]-ϽЮᖩ:qNO7LEz#j?cep=?}}Z]=| =8"y<\| {~JԱ@ڧ'wԑ:=ME4)x;xiFQӾIQuVyZEÁ-Kg>ga]}?09"kAxH]q4JAFI(2 nw)%2FaRxl[#Mhf\{zDPq-OAMM{dž1+wۄ!غb–0w H!"rc$["vkڈyw`[\f2GDŽ,9vlp*iEw:Y)yvxϴSB9D'qzɸ9Y6{-4r ~ugvZ3ƫH lor_MYGh`f^Y% -I C!k+%MCHt6J{/NN^/TzyNΎ^Zt/ZJ7 Ԟas 5n4?ᚽY\fgoו0Z/#G+Xs[!;^u6KHZet^?w^YaDTw.[xP]442c!X ?<\y?|2U~fffffffffh)3lw/[is"\;$>/NiޓQ?n!\Lc>$xW/ɔzð66%^*/h{Vk҃#φWJ#.;eF MA% ƙM X[`@xxuzL@6 Alqr/4s~׻97^tWnR]C ($J.CI$򭂩Zh mQeNWF!M]&VX*p-~Kū`\:SJpu e@>n6mӑ\ ~sWU5k:@ƕxiUu-ogfz(^EgG{;~*8#jfݮ936 9ѵXЎ͏ԺT],q}*Ʊ]8..f:l^89z ?~aB'{aO)0=>ܶ*Av|z6ѵ `_Z)H0 `S/(܇˂42*.TL!}:9i}:.O _$8;+c.iԾtmKpgq0o D|v7e!)R!{@wߓ]3R W X\҈*$=e} *L2SPp:*hys#;9.tȶwAe ep;M]HQ8SCHQ(%2Uh~x<A5ȡ &q .hbrgx~2 e'I e >c 6$e+Q!$[D_8m/G~8ПX'#3{@S$7qiXL3& 0N p&v^>ޣv`NRW]o)fˊo-!c qW 2<>Wq_RIG,sOWR8ps"k[ΒW E1=T:ˀ8?MN.;MX#~G A6/l,Pņiq$哱߅5-v$h}I"\+L&Dg>╶ceV7U3Y4w/KܬЉzG|?׋"$ʳ5W^g!B@n"\n .cCRaSZQ~h8`sfHMԄs{ u]x/-%UJ}w틤S ys$(_Ev,L`Rmq^LGK:bXפ'i9J $|gl6=9t FNM iQy,SFT%HWڔ 85!0:6IYqb ik*bM )H)f 8Y@峆5W^+u< ׿%F0SIמBAkd[4/'7\wh"[If3v&G$!>ґT6{@ h[ӌmBjDE{u7?KV7Dt6I1ߜD˽dWa[X%Xo;^'-LyEބ/h+4PMl\KV R"6QoM4puY M胜t}SsϽNR!L U͚z (_f7l&aS:7ٯ/hV/[߆HaTZ lM.g5xMѢnjvx86R2u%TXC*I/L&VPX ņ+2j^oYP sA#\f&qxtx{g~3CYcbp:g- jW-6\b5Z ~E7$\WҘL9QtkE?Zr&Ӂ(ޛl:x'K'ݷdmSǡtfy(m&$7õ7̛ 8 䜱<0ɤ+MfZVjt#VM:jCǗ[b^HͭAz}p\kӼXg}?p6۔^B}u o7JjZș6灱K +'v^/{y/ D ٲ"=(X*dY= N=%B^4ZR縎h4ŭG>3x ]1D>:҇?o[]Lmpί"m@Dދ#e,Ey!hTs2z})t? Ͳ,+AC4{U'+Jgn"r֎A+uZCs`@d"HĖ- []wtvo @`d-tM|{&pKni+| uSa},;[T@@w9>ۉNM6\ >B[f g$dga8;+')"$}Y}۴-@pd{`1BN+m4vȖGe.;ƫY~ͅ m'7{ծ`^n3cW^iEWӕǘtb@~7T7덋V6oWVxz/~-xU4]Xyʏ?CO ܎ UA`GԞ~A|t|J ;ؿ>6xV ΫON9 M#鸀o-Iv*yF1qT ɛa.+QD\QFG ȵu.ѯ1㤓ip0:}+2&K;{Q7Ima`XŏxfΥ꠮UXɓR^"zx<nA.r[T8Q Sgb G?nvn(8#]p+ U|6oMzԸekAѵͨpQ|vVnVgPUl􇱀z7DKnƢs+ܹa5g&[PM3 3`0ᵽPdVpCR!T?+++T0zfaLP8Ld9X&yܑGȰ+ҵ~xdIgP0OedBb9lpiB/$h0x qWi%0;gp@fZWv* 3q_X0nx 'un" ,;J"Z2.k?<{kֳ}Ѻ;_֘w!<.@0a`w{}DQ޽E\ @V4A-[q{m6 ϚQ~]DNmstwr^բ*u?gѶܳq?8:$ҍя&ƜXcw\s'*bMtʛz( ox='RW۵Lql%?|w^}={=g3Ή37pA;?waߐiRBƻ=\˝>aBCxiu]HLvqrB6I&Z8nX/sqq$gD1DR cN%cqFI['S(uy5潰ܒ^[BQ%~3 Z+I=~w~U6菀{96e㉾(^{I!t᳊NS psX"5Eѓ(Tm2>'/IkeF*5Tڇ)dV0GVBR)yk7Mvy2ҐfV=[l( ^C6_ k()l /o(D5I %~cj5@6Ux˸iTٮb&/1&G6^$r"#H+w*o*XyF45lc˃Eчo :SkWvK/Gmձʔu)roԞvמ,4l128֮o0=O=*=a#"m"S/7q2g/I;-LOt#fby-/Di6:{K2`zc+duģd;M^?i(;a{a#(x $pP0(3(RDo‰b[TIJ?օ5V==zr.qVp{^U^7Ui* XӞX@M.1BʇAfʵ,Cw=vb2}ؿw-*>/K7 w4?7:l >;q)v`~8l.^7 )TY\i/l ^L=5|CQe9/>(w/`Vh7ֆFRxY"fZLi74AoVWDWCI+c:VPGPy),a;rnj2ب:<\G{KvÙڪrt\G06ڢ}B})/#}[y Y2ꦥ2;BPmrUcj1;ޣD0 “0񰢠Kŭjo[V:[TsW-eFXlliRUq'&G4O6tnmnb>Q":~ g_#?$: W"<[Z,/rbDjҽ'lEλCCd18Mf/G f p0V;E!*ik9Wa%E.V=ey5W زx* DK T9@$1hXeq4ëٻ5aO=hi>}m.Yۛe]܀~6ܲd Jp܂&}]œ{75f:zo笮0bFORmW9t:Amդ&Y&8!@LU9.#SZ HV/~BKY_4{At xOde}}ڨ'\7(ߡMOXHcMbA|#fsy&ØM iRc%Uia̠FS0]qX':ǸhPv5{ݔ88wqqW6'v3Ĝs: ?DwGZy@7h5XF? ,N?.IbHl.zْ8EtL0pfM7`LrA(_p!XVmimo23 uT?Bο cI`E`7#47'm/m ۺ֩Ldݒ8yY;[ztx\U$.!hq<6af1Zb\(+8ng1%yDq9HΣDtF Uȹb@$ P-%@dbC["A>}`cv#Sj0=LP޽zj,?rhkv5~`]9DIa8sH0jѳVRu 5PI"@q(_\'6^yk%y }7393Uq @cF%ڄsGjC{ 7)0W6uOB?W sjƒ)=jTir<Ho ?0Dl>@7?{u [C̜1}1xb5/K:fAC+ t}qWIx~e>XHxt0tp\Ꜻ !M}DLVAnSHBH(T=hEN/ri8cnx p9C9NZK&%ht}XKuBN$%}O>o]Yŗ bԧGȥ6Y ȠGnnmXp`2|UײRWO؀b3BBXq!qB Sq[9~~9T>e]yTER>[ eCb=(cu] TbcDu!gGj0!Gw VWj?;uccݷQhՏ^[__Y,=E}ϢgQ߳YlR1ůP7"˄(ca(Udaxl?rgGKME++M^ͭR%oϩt5XB̯^r\ V8{N?:7c`[Z_ugv|vv^L};q*Vgנ{yvKhXwqpugʬY%79iR*Tl !˛TW΄S4S&FV[aTa0)(eȗ,N9@y 1osjn n#K.WHcدG"O1_?Z?BF0,3K0u/]v: % w]S/?)Pe?ăƭB=alk+sawz"avD8өQ?o7,,/P[[CޮVF_(QAL@o?N%~}j>`Mѐ 'H*8 \S IDB.VAc­D y, ftyчe_ٻfzRޒ~|"FpZS\gj ?rIVSLreuW21˳*42qSh3LT1Kуq4ߛtDo)hMuzϪ<Ӌj 8qf8pTZF;ŭb`bCa{cwQ$F!H#x~4F`52XlQ68 Z*Fe=lB]A`'b,F3Mμ Սk$}2|3U3AqZz?YO9s@N2[gF%Y|@ * bOjڑVb?Vp-&VVb!l~h V*w!8)d J 0.j6-y}yҲL̯z1l=6={D&N/0Kt=#f_^}>oJy{ӇSsic&*^9p72yezAXM1h{>#g2K. 6Ġ0c r ]PBEw&j% _gLr/!Y>JP;=};.L6s3zp\lY1 Ā;,c a- 4=~\oߜա>x%M@)uB.oS 64QtTFm8ZaL8uqIu({a"eϙEnd! 0tdqi&9_V Vyt1HDΡhBn7#(7 ݻ&JwאЭ$GqvptsupqtP@ |rj3,^Uve>]PAPג~"@xgB9dq bo^!jzxVL:VHSamg&2 .7cŐI)KstC}x磉p\I 6PأS }p Ї쌛!*޳| FխكkV1?v939a0Fnx|QЅ\i\X|W_F(B0k>pt%x,RBT4bt~Ock~7Bg f(NS-i#Az[l6jqtЦ+_C X9F͠n~X$c=֪wA+cQT:nA"T2̩d^*hZJTmp輮!;:L}T8{^FS!_ Wc`s6&..l^1 ˔\/Y%ԅ[q6z ыpZttt`Rn2RKC֬"~ZBN̷B6tQTGT_j 0u9 iUA t-;#<}A>|5,ʼnrsg`C@>Fx/zf42\ D<λ"h!rU+Z=hdf~89 ѝ(<_090u8 0:ijRٸ!u=uҤ;juR]aѓvJȪ vw.HQ)&_Q^/' nxt1G*aMwՋt3o (<7/= ߏh=y}ϼg^3;v;$LС "C ނK2YN΃%ë{OtGygiE.`Z2E\r?J-A%@Po ,jBYZ05N$.zh6D5{IT^ (B]&spKV3pްHv kAV:"Ks,Ԓ*eZ]ĘvGǤp_HB! _e@}$_o}_lLQgݘpSά:W ;VaD+4c O"2Lڵ)>i F[5P'"le8+ {‡Qdgt|fyk#86 !3uﮅj]9'J;߷k\%$sW71 $mx5*2mJ"6WSDP'58~I."T.iu+4$^xһa,*2'՟j 꺓d B̾8OP<ր3(Z6d&ڪjCdo~Vs?yo mͧ eY቟9ԽLnmbn}gݐu^ ojEjrUO֟Wq#./8K*VuBpg=xk ]U[-yc/\mo\}zW|KIqS{M]puN:s ͥ0zqC}t#?ڽd27 W=$+ :1O}h&nu@ '/b;>bRV&yyA !XR"[69u^qn,-L"zQ_mY]h![!I+T#݌5739Y4r*|EqMQ%(XY]<\Y|E7#|Sa萪@%Z0"pEIZZOI.Sz(ot*2dOzz 2K H wYnΗ;=j8\2J %uiP]> f\nD&6ʥo*/ @l}SϪ].gtnoDll{!cxm b{=nd Ac\j}x-mu-50d-g!h4)xUSz\vaNnp-l/II w|]kDQ0-jMHogϰ1hG/?XՕ_N 1 P_}p}[}yvE||xErq[]Z[Y[ Eۘ| qoq|n݁3tNoyZ>+p=xƕ~ynqݿ#Wwv;rsG^nݿ78 rMKiT.MfeZͿLu/Z]{zo)K\ezqI/bqQ}wzdΟbˢh4HJB([2Z{L-wfD"VC)wQel~ؠiєdPQya&o75E?:-W{g8{g ^D0rrìm< Ͼ%fOV^qa"=չMG?4$AڈΔW#eUQ[I7NҦ\\JDr2@GE\WM*֪~,wiYN#J VWB: g[M- s[R:fWQpMF _>؆ 0V}DxV$q</{Y-sP@ԨTxߖf 4&1LU|ƿ--!Ҹ+WY$PE?`)*>z`d'ϣ3ѼuHp~ z0g w E"IZs =y?S&1{ߡ}+| 'OG3a&?䇙0fí*IMl mn o.thS[ HŐi^%.>#DRh6Ӄqh[CE;M\x7 [pꪞ{[eH{s_You{v|&#{H'ih |  2ӛuop,"XP |x/ͲH~!ЕLEukw,f?%nU˜yL=+I_b̈xq?VVyfΏH ٚ[̕϶O!=EM z 4`j,3^3Ng3~?(3O0