#!/usr/bin/env bash # # Copyright (C) 2011-2020 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=13579b9f525e7238074b4f7f77d78a51 # 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 ,^^=ksȲne썓 :EqR*! XBb%A~g=I칋>8LOO{(ávwI5^^zxҙiџj6ٿpjVYWVoZ?'k WJjG'zqrTT-@`?zŞs v|}-Z3?&v7+<i_r=+<#gy;%RjzȶO-u n+mYzĥ 55*19]! lĈiY:e-S{2s܅W&M8.Yd\e,0}d:kӀF4|690qHp؂/YH3 i`_Z6uȄ!!v|Se0=b>DKѭl &$+ XpՂھ*@KO]SXLa  YSF䶶HYƌ):4ܓ)ECBmZ) дp|Jab1Xf933D`e[R h|. 8+e|)+DߵGhVJ]r:% ?1H!~Z|6F `o+0vu~8 FDd@GX2ޤ+/P` 8z<&$sr%:>{\qɰ=˝I="h8P$uekWRDz+DlzI^]_!"L:g= 'cv#O]$ʀGJnA&p}(X'۾j_G%LFP&gXO L4z+w$ Dn{fDX&ñ<@@:@gw}dٌ4}@( 2yw)A%$FQ( XAU+K=Bw$ w"@m2Lf0Q]@*u,gTL:>`EB.M]p5HF4,ѻNوs$H 3T 1 7Β(Pل#OVV$y'/1=S,k4J521ͧfNg@4Bb)7P )5_.3&gU"M۾Ž2jCִf /heګ #Ttgq87m {RmMx~G=چij xVHqCJs|9`y9`䜴'H3,ߚ'@ʗ'ʟ̔h!U`H6!Yly偯z99 y9 z9y9 yJ:_6DO7gs@4sTSh`^h*)+z7D1 F#/=XV<0u甴as=|hoF0]mԐ?,3͈a٨ݞ\W/U zN@؇My~|xYu=fuS6P==t~u|vVtnXJf&4ü{E.WIH[#y%/Ue(`իy=IG2WW)m<^rT  .uu 'HGaTR;-}.ng8@At{ZPj@4к:3!]i=\ɝW2&^kyyTw@QW>Tt=aAi3S|n:,̹P9R|=E^!6ԙtSQ_D0c(ygLl4VIx44{k4xz2L;X a,\Fo$_F SDZJKk}*_*rD ;2qCz:(u:aoY,̫mwFv Ȋtf9Q =QZ^4Jhp͟w^1`{<8+t~e,&]RުN+*3t6U"uU=8Ԕ2m__T 6Н u—Kp~#O"#J>-nK3o4 ko2To>lq;sB}R[402W[wwpK"b!5o BSfۍUkkڝڨ?jfp=Aw4ҺSfz‡t bg)=Z4+lqP qarp{tj)ɒ1S n :]ܦhM{lAEYs-"hn Ec+>.DcaSV %e݉Β֮Tڢjh\`ѢQ'HO$zcp>7 :b: pshC5^z|܌^zSIaڦ9\ix&|ڀ!p,VsL7C 0HE 2hPG12%CvdTK8\ , X8< ߴLVsbaU1 :X]s<-)ztn 7s֖$|pиIۦ WE,G2 y`I (dŅ҅NR(rT}A+üaǐӝFѳ91M"?$"kJo&MuoPw&?+Ef!"hS93~M`_c d^]o(wĒ}pC\3TL?Y&O@X/6 BaC HD)H/Zf4 Rby.MUbe!.ߕe|q֕ozjOa`_f' ~Ӷ 7R|\@b^Ϡ<eOW3Ӆ5%C[o?VcW#]?jg?kGV+G\]sW?wϿ\a!SR/ǫ ̶r 0"qQfN_OQp/iovRt_{>PaNXĺ]"J.Wm '/'*QxaqLVs:Q~zǡj8}Q4@mMO>LUNUOL aF7c/hdq'q]kz!՟[Q䢙RCH1c= ]!l `+!]'ik =ڣ(a=3'!Գ?sxOX ]&f`ivihbC_U2Nf/E%\}T0 >Tl L`e^5vyZ,jKRJw昇+6=0uD? aj%-ƝA 5mkqUt㏻޶yO#XN~K*t/IE.{{ɸR ς7@@КK"ZC"PxhGFjr#,T~8ari8FVͪtf2Nz% °pFMz"*فKl1R>y9QyԮOY7u`ÜY~Y,>OaQϋ = fƈTSPմ ťL)CJ# bk]"'zt`.rp++ܬ1k VHuovU[ 1EQ]8S:JEglڗcFVOG۾mr#K_ey pcYڶh.Eh3UGx[ 7{c18s{Ц&NT.*pɠ~q\j- 8yWI9X ͣ^dLHЌdұL~0YKD\fUfばو qI6w_?D,HGyY ?v?v]ǮcW?_◺ņr׹z Cv2~jjněp"w.ӗ+_1rle+2paZKvԳv S@l p앟I|]+DBx=>Q^8p3x|7bG(TZN >7W|mwW0&g!N 9AJ8B o'jwujy4Cyr7Gz*0L)q_X+ǮkK{>EcAh1lܯ =D*P0TGρ/>G/Iefޭ}gZך}`)b}X4.]6'4EZDo]Mˤ1-]/+m̕&lJe?)Ngwܡ8~ '>YH=G'9ARw3bjd*V@[) 6|DTSro:şjɂ/|S-Z&ϒm#'K=wB$alۦ)|m7ccg"@f.y2qsy_D\U$Ic#O3FОO:gB7c:Ƅ>97I LLICHΨ+þ?A_CL0R)dAy,o;uxf޴P3PѲa֛࿠tBa#[+}6N lAla;I^Fj@h1xƞR{W$IZO:uꬃhq}SZ38{߾)}PQm\ߋ~9/m[ȉ? Nra'_r<IQ3J}|FOs?{>ns3Ɠso7\_& X4kԧ֣^JzQGjկ>Uq+<g}RAEȄttxeNN~~R?KOuTł7*9uUҜ&Ha&kԉ.F7 b !03sPL*tg5%񄙒iF^̥D{Lh&]߻Bەi7'!x5Gg킈7*m%t~&%pyxb(f#WWhj.0' pE˘%R{4֍]p Xvx֋"/MbXXw({p5oawڇxd3D6]|#ʚyE)1kJ`4i"XsG!x+k(wrM3kJ[8ȢK(~gIn U(ɣC Z)*@]N<ځS7 (IJ옅9{` QTCM ->h* yW*r̵dѮKi"Na5oB PO +2Q 5Pi@0ۖxIL:y}td+4%qSg(m @M!ۭ/ EN '.͞4}"N7MT`.SX (ׁHyJ,̥ atNQG(6NN E}O}-5C+JrAaKMUBȖg!j94P99=W0.iZQģEC/ Jehܾ(4A x MR1z;&H>PaG *SqZaCiqkV"ʲTlEY~e>,r^u- x, q &a\'_ӫK~n#èRPApwxar,dy$.rt*њɚ6%X Jt+a $pNӷ'jn9}NNъ "[܏D*1H*:3<}/P? ʘٷ@qx@rm[@މ`@P)C56}=_{Ih l*ܔyq𗝚BҙDhS5#qlxSA$Q{G˪w3Tٲ?SƏ; Ʊ2,\Q5VFwfr%riR9 d|Ƚk0) 4jAK[W΀L$YSҶjP~:%f!}qjq,j[Vw~'ۛEJCO!ņvzopr_Tܾ Y QS&\p6N Yj'6< If qGqטA2Oĸb6fo䟊ٰ,&iqPo027hSzD8 duy ^N,uNbuQ|QtKEaZtψMY) SVԳ?uKS"YZm*MBŠڊ 7>D6= }Pм';A5c]5qUY@AڸL'F ^wwś.|7N?""*N2{Ψ ir\&8Ai#X2GNfZ~ȕe |<&VZkX,՟ן M|7w ]ۦHX/W{f@ &\N{oV.l& |T6ܠ/d@{h&hĊ)۾~+լ9="^e|$ϖ.8hy@&h`uQi,&c&%/`p&&X4^_6kQ$T}lMN4Sek=l+$ G$%YsI* E]!E3Uy-n]^ odұo/<`4q5%5J@kK3>#S&j(q5G{,@\i\/?5ja[ C5hNvgc^6ή~CAʲ/u0.=h(RCAqQqĖ꒪0L0)׽Z7 yJ7ծaa:Ɋ^>(Ӻ׼̶.4cR*&+ߴk+6HHɴX5#pZu+ᢩf hvٷ}:/uX0" RK_(d\=}&hm@9XeWo`Osl82$Mm_,kua,Bl-ϔ(c)6>;F=U&YƂPkĪDWyhB%~۹0arS#Dz'3ڦKPCo92gdPȇ53 3ږѨmkH L8 30ƋZ>D#|#a80)2<2[e ן=3 z@Rfh|c 9ykr{Ix9T~KE:7 I40LHXzj^]_d.p0*/$omv<&/a +%_9۽f^gUl8CM9Q kGp{ 1Z;D&AÆxJѢ+VImt+qxg v,WEV^0 N׺tPå)pC([1g/0u 3XCA< A!ǐn]O7m#Lp,@ 1p [VDk. $dO6LSv/2mz`Xi֥XVeUbה۫,'tb¨n06$Rh? N8M8v=&lB .۟b϶J_мޑ~ҒX/RC!+ڀ68.1zď9.H&`͠3D^c+Ѥ1~.KlqӟoS5(G%m8 y3TP~L/<ǣL_OrMdlFHD\&t4 W9c_h;P6R.I+x%!2S (RqdYvqqqzµ4msq~)%M ?,&RTϾ3`)ҟe܌0h#CsIEF/1 0p8@;S REP kCk2$$eX\/T3&Žx*7t&>XSѹo bufZ%|^? N_\2T7.]DM7u~mgv_୯RA9Ȫd9CUҌ(ux*l_v 㺺qp@aQu8o&5ML"LۛW/ 54 e2MWg VՑQ(sS05%?T1TnQY&O,>$dG?XBr6EI6]{E2(f2HoyW[IofU(,2&v|ҸBn=Z94^fIUTv#p ue킆,"CfqjO[TPU,[ҝ1zʵOUD 6ã(wY|VY&k$| $͉p+ +*'RH *NZ&UXag˒]PբӘ?͖ajgP<<ǟqϐ}½OkMg(Â&~M"T.:@Ajp{m̷D b?MzHHߛ9Ue˸ wiu94Dd9H/# 9=D8zDʨ5םk̀)Qj1>Mw97T$SU]/69EoU~nk%a=^^xԬxy~!G#e=H w4"Lmmb4L-\a 1]%c?< QH7tK#m?0)BZ^HK'g >?a+[IB1CwZՖelB|ncAȜԠ_N.\~J)̪L==׳x}I<up9&vVxB0|k;Cz[Xzz)Z_/ n59!kTs٨T . DZ/=5Nqo26}ñƘjޠ8X֌/x|v@h fb?bdtSQP)h|7ZN{@xd^2v ,d'bhjM u|7QqGM,IW1E';adns,ԧᇶyg q2f,O m滑,C66nh.5=DeK:n0!-YuNM#@ 81ZŽS<![ũAfU&ODŝM/kpȈ$>^CKiG`ҨA(euQ*QG`.2DŽ f܉=KxKp%OHoXWV?=2$p M:N2bӤG&oyA@l'E ½1P (wHAnH7WCyO L?G \x|n_bNN)Rjp]>q۸;R: `Zcm;?<Wzy}8`ЌؿAL l.luHr)p|mZh*C[^?>ݿV߳sBKOp]g,P ClINZG E1H륟QM?X_hC$C{CO:$-6(a;ZFԫ/SbBtA$Y Ų`p6d'FXX 7a|/=ͫpA&c`0hAh6W'y$nX7!?=r8!"W<k6cјy[ka?T 涂ݴXEv1"(ѿБM'cVࢴAx6-:*GErfYtE:XX} 7Ue(^E Z1s#S칸z7 WvR -=I+et,YU;,!prI]پA'ojKbVoO<iNg29޳^e֫mƍ6>+%lp,r#BM.;l7[{%yv;;[WJ+ɓFWl뜝,IV2cQghd;9u{+[p ~tΝ58>IZee:'pRk.hω'o;k<ߟ1h'lg϶s?__1ƣnn~V.+#za8`#Fifd?5SQ[iǁ0uW]h9؊;0 '}ow8-N866[ y*Ōd M4!)W%gtT*6cBw" Հ=spV@njD$1!ϔ0-q3(YMc`q:5|"3:"-f,~IhcL iQi,SFCI~E**|zm]c߈QQcS;؈Lo5=K LLz8 cSÖKngM`#SB!vPUVJȓQޥu _I Kna8YR2ґT#@aZ݌6T9 VO{EZv/,=(Ety"&)ߞ|_1 Ձ2?ww:Y %nYM+߬xaي.Br0^ӕFEf&## GmDFWBe$f;R/dr$v5n<<|e.{I,MSN;T=x-{|FsLvS}wVcj`XU:Rbhw̅F=U bDI t{CXSr4|Yk U q_,]+A#Y*dshPOnp.نN{3dneFv0eRv \$lo Hb7qkk05IENHV@7m'aE5 7#' Dnf%S0zkU*inhECP%$ vڋ.LلOi;ɻ0 ԝ赕_mcHM+ޚ6ª΍.",U)-C<xjslͥ[&g[V]$2ʚ*J?jA )J_mn˯-AlNަ$=1)# f+fCߐYMm0;8(Fnj'?Y ,V雔4(ltڶ|qwo8%9"JK)e$FY;6#-J*c eUই=ihaQ =Jg~Mxh_d$?c}Y5mrGGǗ wp ̔ [*jظފi^(pNR|0&@{}7ޱ1Ӡ 8Uެ7~w~H*X`ip**\XVem2P}8kAv]j/!#ˢ5(e}_5vTq룺9͒3rU0ZmH?`QNł!(6F$(k72bc}JϟZKNXjCVx %Z}۽Wtl5l/|Q;yq e{gkU!`8z0hvps#S kwLr ʡ_ߍP'@M/;?o=QQ4SV%ť$<8| x|VA4~j)f%'Ff!%:Wn\7,Rz=u\HVoóYއ= V2#)n܀LrPU9 n=s+n6*}[['}\>m GG_×0 ]~mhl=]HM{7PQp&'ܠ\>ֵY0ƭ 冓8HTdm_; p&XvRES8<@U9Գb^Fe^AĢ4<Wv(;q{\< C:MeK"L1h(+ 80DhS5Ѐm/`wC $ T8L PgO eZeraǿߗjT1d6,~OS *6\ycc?ԎÓsq ()j;D}XK87%tCIZ$ƲFv+l%O%7{ ,d3WM"jWR?{)j) ;u-ZxR+tk6WfdBoٶ7qxz =y%@򔐫1pOiM(@P/?MO.a3<^ 6%.SZ N1$$__z ..}?ýYInH_ , a UaP- $d0Zx"B= ѴdO)TG{uXTQbl̨UU%Cg%>mب }T.Xt2.eTqp!W;'6ݨmM O=hon FZaᄾ}x8һmO;N}ygI55\;7ƚ64*Z`&#FWe32|E`f  Z7/h@3v6S`RCf+ ڣT۾|$ "C Rt[q@{bMɋt=Ā3,2 yY aY6\$z֢T%đt 9*sqY;B;>55]ɿXь 8*.4v֜mg#Vr;:ͷ꘭ )m4e.= t rɂte7/%#yKr2]WMblys͋H]SecG1j? ?DFI0z{bEdcw4Iq{z1.Vbr'pTSQy38GN*2 wbꎆRB |SJJWM8j8'wP+%|[WCT5JEE7qSRZ(":05;}5Of`H8>`Mh=N&~̐ : ?Nd۔o"gH$HuZ-S>$HEӞ9ִ/,g:*ZUB08b R"3١#@AX _e?ʭ]/_Z wu []vwq.s4#3c4$@"U]zhH57!)h:S|b)/zx^ѓNL N i_^w1:%9֚^٠*S( m19to2I%zh):N8j0&=`\`E pxLC5v-J #6x25Y6snOӍngϾ?|'s?s?Za\?gϟaG2>o삒Y9"p5B@-4(o)a"^'Q'`Ehf8;pQ9 qG_`r*?wQr)00&Q9Z1/lΒo~0Ǐ4/ǢT]ҥ (nX4< 9WƃJ4!E 3QSѧ(qɷ 2Jd!3EיaD[O5y{nO 7qGQՠT+c9xu`0r*%VO )<GҒJ8|oAա6偅f,LtOk-kN*ʛeK]XTgH4o*NC8Ŕ('e}݌&u4Xg8jFLf/Ln^.LIf׵z{S`1KY .^'3 rd[Yeu{&j!eH]L=u<5V Jr5ɥ"kX5*Ѱ92C YX_wE/R3W^J\eA+H6('-«SL_P#p epoóCJ#Nd}LF%ݫT!{Ft :/ѓ_HcZY긡0o[˪w/.D-޼%l%Q ~h) |K#@w>hR||N35eNt6qTg8vE-X ܢMj)^^Pf+RA$3٢$fP|[H<T>sԄ ٿU8#,ft~F6#VA "E+Hv6*,a_5=a4l9L+m4n.t+No(= .w9;yOx"nO.Kc y&ܼ mZ#}wRJ! x%)*mmDO 9Q:ْ@խ%E. uO!Ք! v|K$sڏFu{k0ErT@vbb#jka!B*:,aP1:$h k؃h8B^݁וѥ9iÓ\^vN(i`hpU]f`>fgXhqBBnn<1i$q(.9;9m B.Tb|Lu*uLEuHd75|zqW9[ck5DzPUPᤧitZPoԱ" PHVz DxzO*i(ggϝh&qDnlI`߫b詈Y1hӯ0Rp'ҭ2W(RbR`Ck glϖGOc-4tb1# ~ x ;Zi 3z]IE+K W%8$ !9"D\B3ye,@(Y#"A "wP;[`GdHO&y J3F 2x ?ZJpmhUǝ(2vN;=J"BwݻC1-w!kuP?F%: X=vr6m|*YvQ:bJPo*C,}L$4v]8s@۾0~|v CU:P1?rLyvC<5лX5&Zu'ʬE9c+ p]˩mO _s{ECݨ3tup>.'ҢǼ-ܴqlꜩ"yD0(ĕA]H&H(d;E4З6yޠ-k 擄%'npl}rS5=q/'LJPO.`-;HhMZm1Oc86W5e[2.ԂR<MFP;^$?}{"^JZ' I%/+3RažVlD9 8cXÄ=KMqjh7'}^+73ml<Ɠ{_x?}??w]=\s?Ͻs_չ׵ð8&I vPNo A|6 a^(|=N u^]z ;Xs+ѡuRoja >;6~8<u\j֟:/=NUa3_A=8`w 7Ȓ4y6ȴww{χ7y˞ao<{c,QG'4h\H0F{*6v<=:z\0 k]Gh1zr)J/M{M9N<"=hܦ4l7AqX/ ݶ=@Tdiڪ?aŅ; K0DAY CԂdLX1gyZݗt "M ÓS];Dۅ&ɂlafңјnGȺ@L3Cc[}V OTbguqe YPi^)=7Y@)3ߨDAUg|0%[P 2% e`ބ&<<d}b hqWvBo}+}'K0=d6nm%kyG߹H 5&0\9wF~FȻ-?ʄF1i/M7CQh'Ç3w>BD_`aή8@0_]L+.Gmve*İAhgSGL?Z Ɔٵ.e4K"@ q$^PrSb]2F^+kYٜ,uu3m*!!yᒫYw!,u$P T'e (H_""6jJfE=&0/00̸921<}]X@>dz(N"Jc8F(Wbac4}WRU!yAy ,RNktM n;k;me#A؉,& ftG eȶFVD_ =*) Դ8hZ XP߄ka0{> [?%F2z wZc&󐑡<Ŵv7gQi}jft1-P20ê)~w< IdBv oSwb8(nELk0#I@OoZ8]u}:IX< ! *#:> >CN,IEFGy >Ź{ YQMpLW?`~HK9"*j5H:VXYW) 2ָ$"NDPS1pD2d&{RH)ln-$F0=F-c> )8/qL;rIX6\&:[(7Cӌj5冨nFHsf+U'ˁ9g i9z~{3!Eς 4pLҪ⻚nUEarn@\ pp4 Krd"/ %|Yg=41[uz򂺺 >P+q3B -6hMȚtQ7H0yDk \r- A]QFg`) <|A1D2̩$ck\*hVJTVP2r'XxB`8Eќ7f(Ѳe !$DEW7+r"`_ FKO+{d8*R&ΈqzpPfa8(3`u%8==yIƧGwŽb<8*0|dhUPn:2.kPlZn!C)XRoDtI}Y/D<Ȩ Ksw@6b+| Ddi{0#y1 7mCgkw4# lJ{GVҹ[ŠP c˟Q{bxELH8ٮf/@ ϝiD >t8Z+Hr2Aeϒ_^(x2>-F)F,CZ<1h')`?sZn5h?70ϭs?ϭs??uW]hcߊ;0 "}3ĥ ׳]zۋF7c25Hވ2ȟa5b@ 9fF"bEՉH!Bf$udWeR ' % kF=a*EHՆJBMYd\Z;|NCj(uOGY\Tcel\j}4L\),?ͣ{:>vKv-ua!B!s(׭a}ьYOR?R7u}f Hڄ3J-2KE1p<:yU 6C[&5Uv?w1HDi5G)\U.@Kjg]`3s9yx2ci|}ul̗ӭmBM4R?$j*THQ^.M$ 9UfPREzu?u ZeJSvKߡM۱ɬw"Ԡ*mJ4%/|l+b{Aee*:i{GIPݔ`}JR߫Sz$~( M[>J+)0A620A<'~1gX( oLa! }R<h9PM"B-@vSl}xYfV3ͻqpݷ;:vZ2%cʾl^$Vhxy}Jbڴ -քa!V唻= #$6ЇRSi(`R(IѦ3JԫvivUd]㡰9K< 漠i^!m:نYʻ@, &svѮ|czM۸u3lq/zT>P7̲=|ڱO2Oq.F1ֳ<ϟ{ɶY[_{]n5U/=(}Sb9F \E@! ĸvvW?ɩ5ob%gѿѨL} "#ܨo+]djqxq0jYGߔF71\&I_W/'Nxv?U.[17ګz9Xك"r98ʁhXD'D=]qQ;:”!TyÍʞURI]VhXhxzp4[r㦜g1ƃ`w q?vw Ţ^=^K;01\*]3+͠2Ba4 *KJʉSX~78ml~_Ͼ?kS_,_={-pOKJ>rOIets埜p'l~[kx?Zj{\Fca}ecmc~MEu< v|a=zd~}}?pw@yg\?rtx|??qx0."A;?< 17V{H[|ᛵrQo|^wվ.v~"<])+\ezibg^8}}W lӪo,a4Pz5 q joT:?~%d]{l.?>CËXLF7@b7z2D `s\ 5E R&<_KR ibQ21±r/FE5蟉15>J5PtX fWG,#~M]W`,PчQ0k!JqHyvU^_ ӧFjw*8vnj7oPn 8 eWc`v $ gDYFИݰ/ Qt7AV'=}- ?s~9s~9s~91c doJm`,'`}-cW۝#'! \ uqQ@S2Pi8hF@1gxm0ց0ԿaZ-_靑'18Ym xr;L)]"dg!cH:)HGV!XR1cҧKϝ2N#=%dҪHW^ܶUf)d3\bn2RL- \