#!/usr/bin/env bash # # Copyright (C) 2011-2019 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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try to install dkms first." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=9b5a406896c2908a70f15a0d4493c78a # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 jtcs1֏ZZ-ܬ-ժ:QU]T+5} gmX3aeJ_>tL9g*.:m&y_:᧜u {{??=~sOy [o_jgOg??}("<`Q>:t5;nr;˽a Z?6F T5#L_W_VJڌ*ʳf<&ccdM vrw~6q&70D|LTɏ!rnV\}g gi@ǣ(dz $Dr#H&@yQX'F&<&y4PT*HӼsA# )=UWNOZ?~fA ֬.awKoI6 ȇZjٴ 6_G3y7N7YXD"h5i*EŅ F*ƺ äJxF(_%ZsWy+q0=x 'eju 3pY|1ΙQf9y k)qdH=RpM#\ɩdHbа)$л`qf8OAiioM ^z- &~`IdOcZVz\?|/?iF$#Ji+ѤtRq!Ǽ:A.l-C@=)ɸ&E%ٚw+䏨8y4N.$:4M[dSlGZKSDUda?1r)ER MHy2=ȍJUN2BXr 5{IiS!o8( vE댕r@pYVuQ/qs}h>nJ|3Ldip eȢ'~׋{|qAgI`'ܕ˶3iK9P?-q}.A<ן(ql0t͋'B' T*Uk r<@x~1.-e089V ΁t}WLR;bzCdCBԵ!8>Ex㫾qt?i;#`ci#1$huK@J[tFR!Vi&y7XB'8"Tv_^,v9x,f^Av9u 4V*etҁ ]ٗwR;yC.'(Xo6%^RʧUug cϗMnD3P(^ **u\ 4HMa];j O6M-YR; 8'RQWts4Bi+|C^ BoJSDSf*QWX [c{*V!~e\JuHlzH ;ڣTµ!k.!)Z׻q;TFc`&tF5ғx6[ W$ kAo JԩCJGqُ|/XO 冈ڋeL4^D*$$&W%K #64H5%׀JݭW$αN9M_<s[c;Z 9=0PːϞ`b U6*s^*UteUK(}ˡ,^[G(`9aJIdi/8;e̺yy#08vr 4}~?V~k:?¬/ɯw&1L&N*C2 wlheՊ. ־ww]WzQ VvRYc/;I-B3"uiu&` :U:^aTh6B4,p,*]ݳ&t>!5W7U@㏭ݭB>RBwuetڈoƗ?o 椊j*xQMhz_4O0hB'pqoi_nny|~?qLQ}}y> 52H9@۞J!oUЩFXnPI5(&UKJAj@Ojȁ]iL oDC:z=\: qڿvTَB;js;cgXf鮪,1<M)Nd&[ˁt/*6 _\yK6O;:wҡK#DwS~)­A}&8_6`}'A{QVId@>.RYmZ/s_I*O)@A*[;JB0{UO~ LUߞ4LGJY.,.Zg{g$B?_@t _ ?p]pT79|A`p~=g^'8 ݫgnHygFgP̡xU:\TX'Y5%K ȉ4?;NƐ‡^IpVŽ ҷ*?vSIge>`dJE7Tuiv)TheoN$%3|Ƃ@<`OXx  :fEzO!3E^oL: )X,U;t.L/ZȻ%y/)_[G}O:PDH CTux&=h2~wK˺dæ9ZHSQT-{3An<=>vlܢE}Q!^j>,h?f`v:̊>PKE;8 VQxکZB|sA&<yN:Yz%n]'@f'P yz>R n}{܀5h?L>Jyj%ճȦ[+d _`Uv4lzfS:uOhT-^Z;J&ԁ4YShl!m2 b]weL>NUUUFR"P"Eʑ_`ʞڍXl Aӧ"l8QavRuM8Q~ާ b " ьbYJvͮ8_20`dO. ]{fyݦ8 v:e i$8zQa+a ]8gF]ldIEү5Bl/G}]:a82xR{_˳7ҲKi}qN(ͽ"mC[I0O=ЪABI m/kW|Z_Ք77QpA Ucg.Ax7:m3؉;0:lI|FF 2ٗN|~dIy2+Ay _C/9@iM8|*BK(5TDB95AJv˾pH(b*$ T-VSf%KU}.HD'?oS9b /k+\6f 3#*A3VBޡ-XxfOj 11̦MQGaq3}C9R N&qφQtip&e[Ĵ0gU6BFEc&j!1d~ZM?[Qz.ų另 o0uׯw LeUQȞn70;#tꄂ$4[KI [bE?bIE`t ęiei׃C{Ký=uʅxxmZ_^3HIv*TGpt^%iXRZv[jj)jMJH2|'ZGj9xh8D 1bvgԋ{uECJmg0*toEX֤`NPF FI t_ڄUԑ~BsdcFNγ!}h0:~XVaL1:Xl71JFS Y'Sn˭.PnM~7[r+ABCFpʔEZ&+]I 遧S/V, @ePBGqcN;H.?}L۬A>Ȩ[NSTRt(iO홡A a7Z-|i[F:e >dtqO鱂9( X/Mۣt̝x Q:dW^1*CD?e#4!=`7Spk ctII;)hDܛ8TPWdCw1b,pRtI\mBd~eq;R[RA:h@D[aHJpv{A/Z0m ˠ;"Hru)f8Rzr}TZ/7 0?Ŋ9_ wZ .ߩmi[.u/2#BdƷh_F\:7dߞ~gڰ:rxokЯ,{,!OBŧޤ0ݹ*Gq2{9ppEOGy85RSHG wkXAF}E*f魩i.L)82$hnLy@7X/Sp^U0l:0xbE)|t-#{QfWݐEF7? 6hg-y#?leivdN;} qkod)JzKQ4"ri9;[O5k\+luQB7..]\F*<+Bؕ֠"oةoB~X%X5w q WBm,_AYw9pC51`SRˠ\n 46a@9\FV*X,ׯ?j;E|T/9TPH[Ū>*~7vMT\@#WWY2(nF?njj^Qd]Rc֕W9IG7C$`SKzML#aɃI_ɨ5iBH7,pq )oU\UøIJӥADlQ܍$}e)<][Z-l=vV)%NTTU<٥ PERTcN\;H4 h|lBHH'K1\H :>4xL{`W$QB;6Vތ{uzY'&+UD.MrIU'8@]͒~ai&` p�&cB`b_ P'bո`)4i\.6Z-x2knr`6'M ),ٙ o:pa9z@H(ZЋnD)]躉/%h,Rkr 4~!KKR*DR-LNBu 3|Towv#wTǻk}ߩԗCgaii1M4<Njg羂i! QmnҗG5D9Sm)\fWJEv>x#`iX2'@ޫk`vGzLch4X3pzYHomDj?΍=S޲FepُG~9fX[+sC!|_¤RWuR OBŝ2d8  mfS~ p3 :Rbnvʇ9AG2stfBKVbEt$[[-E[젭H=SW~Af8kg;-L=p2ɚKQW| P1Fj)U.vg3`$ KEfl3pPPHV9b6qjؿ[mEXk%eGw\[ނYYTק i¬v#DD*`TeVui/빾'Y;o'DM- xV%)$W82j`j#uausj, tWHyIGF>jMng(%8llZݶ_9Ѥ,bxϦ_hmUvR_bjB4qI( юbN۞K/_ S0jJkf-% ~ nq(EWVKiTsEm, c}h'CA?a.'NQp{uLZ/ZoV-51)r3}!}K:QNM (:׾Hl{VjLb?.9ƚ5[n[~ՃGP\TCY1h)ABxge ֆ< %9'msZb+ˎ*F>F3$Ӽ(BBJY6-kF728@;G{pq3FR A!I)DqYJmmOl4`MYn*E#N2ӋM)'9ژ;'R*.NL3NB$zbtS4iuwf&]Q _QR|/-穋$)G; }IIJyg59Jz=si%iŰULSǻպO\hA5Ov|c{I k8 6~Nj2r5#3мru޼`B'o1u;BA:k -EpgMRz3 h~^CRO*_7Vֲw_Br\{1'A;3l/|}b39ɓ1E0(x¦zE£JNj7CٞDyJa4WBmO8Y"ǹ ACʕ_dɽ~EYI`x $"6p'lLagSV!gh ^s{^!=r{'JBԌz/(Qlehq8udGD2pjs)k6ƥx|c3zVĔ+W54M"_TygW#fk'Mh.n8o9Sl'g>(pz fG5Sm8vǣg*nS]E4GY꒽+Ib^;\L@7MݹBbS[(ƅhk !;&:I&P9zEzJ*[~(RYwC CQ;]]K wQ=i^T<$ +ui^6e1ӕǍͽHǓ7$qa& YGAZx߾S"Oel۫jȣ4ݥYMfje ZX"0ʬKx6??*,5E#G<'Mč{U; bzmr[hh I1'S素mօ7amVmX?\}ih2 ql?QHS{~Q=ڢK"HxBp7YMeϛn:x쎩7NݾsN7Q>8s sEW~sw)Dd8H+D})\P4n8UFP2F'%Ѿ[Yz *2UB!/RQnpwl9L(:ܘ b2{p4=;onɏZ0Qy qfqg.3զ'YA yed71¯=) @tIF NL3h߉7pX(= %'|kzl +CpVD\ wP`fJ M8{J`'yLj?՞UM@!FaLbd)<!ǚqhQI-*-alY[= A .zI?nTzz(Ǻ\nm沓0`wKj2 s, ?UQp%FTϐ՗Mt8\*=\ W, H=[X JIgY=ة4j% ZFatFUXMTfvZc*I@C { b"l?<*ڱSŖX1ypx!J)&-"Hd%} O-Y'pñe`ec[oj[?6m)k%!ҿ@ pfsْ1 {Ygx!;}ʅڞٲgL#D)C SOĆzbV vTԁh;(7sdUҏ&j'׉P>=7_Q:XWG?B%!RO0gS\ľ_ZbL{L+IK\;sI k'&7x,. ';"v,pmk%iv|kFtL퓳Q]g\vBƈp?sB?ezٹ}a ]\`  \){=}:11SvLJVyyVroeF"_+x+c [;3JvDU.ķg-EiG#srLN*7R+}븪Sq,嬄.H:!vY3g!WF~& \?Ӽ0@R.pG-V~$oiDA]W, zZ_;pEIלj1$s!3-RZE ?w\GЕs(S%.MvTt!^k ,ic3 T|W[a^I/L^|9M<~69O)4o"}[ZZhNU?*% } 23㼥f:?1L+$vka(&.LhT'2ZŊz:3.LF-|$Vp )S猤u#h֨  gxrPgGξ D:b$sB{|.4=jCgi\Jceݼ>^a]2tq.,(ƢcrJ)u[QO Bq[1Mwѣ .8<]?Y`x fLv])'yz֘\ zK蕣1>K/ݓwznm33*>IO2CEӜ7G vJ<½,q65%_v 5LAmԨ+(`+{ì)3v?(y0،q7ӀhO3Us ߪfhvL7-&.$ mԔBxa۟OWj[\ed^}E逵{&YZ\41-fzHNH'KXhtIb@1gI< 5,X5Q*zDHj51һF~U81$WicwN,ǂ\@]+XNɅgAs>=HO5RGKs5sOu MDæPD*fQڨ_3d G4D7K+誂՟{8Yb%]t_3k69'- |:MA>8;7M]Z`cKztF6yp[a% 5tIoN Eo"MGmPm訛xN.z0JhM{̥hw6ͩ!P֊&L0ڶ=7NS+gC+PK㣂 KA=T+.x92/ea1٦R&&H!TS92O5D <+.RCq*/}g6} Sęgl < AP{茻6a{ .i A Z)%~>=p pE/\q3_,; &sgDyZ[֐N)n Pһ(SE)@fT "g8] ()jk93޸pR&_]Ԝit(m|xRߐA)4 J"x "qh=_R, 3zx 1D qʇ{ .W5uwRӘC K\:ںfBHH:%A>n2 x1Nͯx98 I=he, t3!43`.J)*]=kMAecݢ1.@nI@BW@?FUBELAU-])I'v(ftjUAN1BLoD1K|ZJ j|8(:xں҄Tll[ B8T7/mUXU3cױP.jB=`D*|a_ q|hܭ %84P"qxK_YJ T/G4ʢJ~[kcNO̥:~Pkur1`~>_w%qfՂ.YPL>q &ӟ8Bwh gpKP$'TNs0]ݧI=ퟶ1}-φ&||@7_[_M_w2x\A$d}J} ~wRUTu`Hf35=фCX1 c[.RGO '}(vUXR1z44O;w>aGn~Iŕh(h W,AX$0Jh:฻5cz_A]x{ B t]NGI(, O(Bu TWj:aPY@iBU2 v-XXlEq뼏N;eJӄUsJ=ctNJN%Pf;8 ȓ"gM]#ń|eպ$V``ih|GnvOK% ȃ¨ }t󜹪$d w2Դ(c[iS[hWy@eF +6_J LIa&ToR+Z-G.},߅ +N3Lk)[\=ݬB`o c+#|;MGs5~GW X{7Q >LI![%7=|I)Pƨ-?t}ڬ62rZ;s\7=Cex)Qp 㪻a\ uEdXȣr\~ϗcBQDnso֨&V-fF;bmְd^eWvoL^Kٓ?7f7H){LWӃ-2%l QwڠSސ^w$hۈ01P`!/ǴmQUӼaqxGs2A'ΏW="Jt&Fj2b~*5}(ՔP}]{~>Уi}1`G؄h:QPoa*MR3x$k/5Kgtrp$R]QgE3V}[IsfYE5=_@MrLlnahs%&]7? .bcjBM ~gv+<_8o8<Q2N;2V"-:8(>B&fc:EcQPc%+:!0:mXI BB[U)S Cπ X_Աg"q@7n^2Yt)WtMzF,e/yGe\l*YX4PZ6QFz#sPj$:]Gfw jpIzs 7פsH9R{dMB:B~:r9J/ 4܅ځٓ5A/da6}欋h|j}>jkbv@?Ld)"@lb@_9BnB]N)>.V& h8P(珯S LTQ)}Qĩ  ?w?%r% HY R e6}=XFKi9L|<}71|hAaA* p%͖H[`TTOggc Jxj[%x٧lk(KxPQC'ʘEαz簔g`|}8}0Pt  TB)9cX(8ċ3_jQԊ1F~Y|K"H?b}KrM@o Ȓ0j 9<y4j_Fp NE ;r~IP @J;GSPxݔ!v8Qf&Fpt9,fʥc@c0:nR^C 0wa^%H T)ʾ}uO'wobȆƒI+GuEZXIB$G'Nf죄MO4=εaos<k8>L iGʵ4gF&<%3pF/"RcOs`Wi s?ķ:aavJ:ZVʹx,1 Hٖ k51H4SpT"Ғ3T>bAjct4,7bIݵ;Q;P&3jH.b<#б׮fKQŎƖt_E&VW(ˆuXsQCc25P;IX'O+ju8aNmFцY[!%K<<`ms4+J){%<tq?9;P$m+BSVtzуKܚh}57qɠx2JK?W`0gn4枋Y+$I|:ZV_We0as΋8`W:)r+u^#,:cYTא*ZdEkA3ѸJsgjR.m "/:Aš?^Z?"|:FX ޢc 2b% 3SЏhBɠ.9DՃ{ÑmLZ؆f+7I3 *؟HkQQDQHX4k Ƽf{}4w.CXdaJCGu)[JB{/‰M /`TOS/x|#z-hK<B"~>Q W.IYIѤ-xKLŞMjQ7|_#ƹ&X?i$Ɏ'I9'ZxSmin[ ˳c*GM_/+99]u[o;@m2ɾ; qáCeoa{?m|r=B98"Ymklz\Y- = !9)xw ]\GsN4 wjވ._e:%0_x M!a\vcz@ f96fq@Piu`YWW B2׾!bj^ E(a0,aic!=EP`m4MHFES F"\Es 1W'˂zNG=NjȹaAԖᠭPC5i|WXZݏAv5x4鸲TlohjE7r92؟Bv}ߊT \yK-㏙6g hgڡsc/Em*z\͆,_Q0eI90)귮%5b=Zx|mTP]?ϥRcՂ\2=tm7kok{G:Q81u&8ejةVu>d/P/m<$!nۄZ/u4E|娗a^][Ek? х/~agcY@b^}SwDHFN=e {Sg/mBz5|lw*|&v;w^1R&88tl<Ρ+Bo?[`#s6`rzN.m}Gg,5%ޤŦJW@%Y4/#$B{7+|۟P 5D>=G~UH:qUjpsH5vTZ)~ ˇ;J{-"u8yp<_koQ RC~f{j&n7:c_q> |}#U6T'f!!d-3OQÂAӇ^xWH{םIV6Nne/w{[oG?XI1-a)ՋJJT2E?Nv`ZP,jk҉A NbP@F%&2$Ecəʦ.;*\8 pL*DP}~xx l:1v(";b$:;4m?v<J~1},tT"o4AD/DN+%bԦl(N[e7_coh2ӉPKG5tEvau{*rgv^PCoNOO4jJunSdm(:㯘t0pߛ`qTF*':-7t\F}@v+|@!v|)^;:euL.M5%XeY 2 ,S7B-H6,y#bL0 kfނC0?r}`\ʹc|}Z٭m og&6ҿGN+݄deq k׷|k/8e<ڡ.0Kgzb.R eyHe"7p/Lwtcu&ԶM*U).չQŋf]Qro3FI eT|F>N}Oޓ9 bu#m돼6RcL$n Sj+]~qV.p˨3{qCǂ|߬NBL勸#v; :_c0eew#aZU}Fp\B;CJK 3Ex4 ڣkQ僰}*&і'`<a)9D^”}(LG1`1,J.fS"*?P&.9OQDU~hUBl93Na] >/̂s7a/#Ӽ1-:ɩk浤FsK6 fSw^ 锻¼DԻzhy`R^.R WTۡ삺&գ=ehpNCԙIMUʋk}E2_QQkyi1xJ{iD7jvjoi@yih>8~XnmRTۖqw֜h l;+"[;<IpX2{wwvC]|>/β 4&1EiO`+6vSzcbt֒0W޻mL|Dp҃=;)=Oxgt! P/!ъ/" xFl3ޣ~z{D CksA)2?/Li!4e6>Ch abXBpãb7q#f8F΍(ӝ ewOE|IZLʻ-5$acoeqpz0 ҋ &̑` CR3?{OY\yF(@gsHX!u6\ugM9K34['RF5٢9v``| s,;Zx9z9ݭ]MWy<-"Ѹ&Vvx8KYǴD&}4~| cbRtg3EW]!ztR[EeG?LB/~GXI8&7 g " H歐8̸ؠ&yW;mt[xYnf[೺ >$oεNt5bȣηYЛjźN=Z9Y`I'`0kt,j)<*?5LQ/u88lo A(~ tE.ȅYQjo0ƔK'eٖ^W}$&e< !n?v+$P}tq !16^\^5v 5-z'7Tf_XZd$D0_ W' R߽/g:%{r|Ωjtfkv芜/Ps:ؤ!`NY{ GXBbpl~{Qp+XY ؠՋ"%#w'' #0GR\(yL9i}h ^vn-0ɱ FV1;~lȆ=@m0rrVFEτj\tL4Ë>͡ X#-f( 0; )^O8f/P+,rP7aorՌqƪagSCQ(C-k+ }z# GЛ1Lo'I7}$\HqYQz0PI\o z. ѨUij4ˊ˾9|<.KKJf~U5LV忳 5C_4~q N_ ioǢ2D[lssܐLz?е7P!tWc؅@v K v' _Pd"ʂ C۰䆢u[Av ٴ70 ∺kT6n7MAZ,'hG)sZ ;b!L_#ezfd :t~w eV1Wr׆ݏST9'q'n*Trw~ i&>w!y!pvjث) !0@"G~#? tн|*Uݘ,ZWl~I1 rژyMyZBHqV a`>`2XϛV)~cvcu~9f'?4p)h'rHian>g&kEURA n%#DuZgW& nd ҖCcϐZJ88r4OXoφqa].о.xbhnDkE'@ hŐð/@=_7ԚM uoT#2dcR^v "Q#M q>i6P&BMWb0hmBbMtp,kTJ\T {^%~SCvz\S7>R]Btm%ApZ<80&CѤsUyO%n4q2轗\8N-- #IN͹: A}-o$o#jTw6+)/nYt^!i"6ZxOO݁`{6 I"]D&EO7`Hdv^Ҏ>:.x:_%͔ u'1Fq⸬Vvtw_-*) K^m ;`#Dd>\G go>ԋ]A6HSz0&0S ULQ2s ;a~*Tx8x@y^9OSWLC Kk ȠE4E,Ywi6/3jgKZUݽ9+ Bk%8_ ȈVs8 *"tMН%>N)D;u}搥~@~B"_mKZf ^Žb>SXAKUgc?8b5z]]M5zDp6F06}Z*Ԝ*dEITXï%X&𳾚D'>Gg*4V̰:EϤGՋ#4P&&d6etNErViHn)+EWBj"gΫpmHG|togۡS䷈@W`î)^ +QX[)ANjV%B:[yVRP3) J'k*J*>Z,t,b:0KR={if8o >,0NkcJF7 hjDG*0%"#A9OXwI:eko7܁i~) A݃#N["Bt0w . rxH׽ oQ;E6N;N囗,h:X$'R4gXܶ1+nULA/k386בn {>$7v7ƀRSmzXOJ'^>Y~߰b^9ۇo)aʫy%\Ӯ&ԅȰ8Vac,J9s!:k(1nryc$/A̖X@$s紳!8+ENRO6福E6f?.?Z}|z->tkGIN(MtK@te AZ " x1"MU%%/8au!sư)\Xx.95RN2^J7U\XX[MhlI%r(40d=U~TX.fP?R!b=&IcZ F*|¿~u1wZ0Mf"D'Rm'^?ɉGnNgtHxw<*ڱ$59tѿ*Yv"և;ԃB>ު6&QU*kT<06kr FYZ2WexJ5K07!њQYwVhM'3@V\Q҄tCp2iI3KTQjS4$)NTiUM iPhL ̘2'ǘ`=| 4xGkYo9 NjSPi.u:"D@][]ѯ|qwp04YmiEЯ??2 }gA^kE_z:ꓻ?p㿫=ԪZo2ș9T0b EYtTXz9$ D.¨/K'N#;cuٳQ\lェ /I}+ڼm&w6+6lE7ڦ;}1bL) tn[k6l} KZTn嫿?>ܪmn{iwG?w2?Ix"lc Өv7}}S_*.V]HNPxmzat-V.\**-U37QJɨL4le?_Y.#۸__[OOVoil8nn{/1/"|nFy[._z}|'S8j nR%]䦪Prҿ}K m(,g;|[?o[G".o4s$,릵s w(S]XKNh8l$CzRl\!T5>X_6n+w[| [$?-.d[9c2]5mFQU-@@ccESavs"5_ 6S.jS9O0nwΪMLF-{9#$X4ĸ4 -NFZQҾxѲ *X&Oͩ"ԑؼyl?ϭ 2#2KW|&Q<$Z4:ԖY` Q h9>mӝ@ژ[vs&AwFמ&ɩwT-*1 u;قz;Jn P#xA5@Oy{ҋ0ǘ  s4FOLls*aFNюMUk ۵mgu~>~slu{ۊD0s>Hn8m gXBIAM߼R°SA@~8ϗ.//+gIe0:[#YzQڅs$$?B&a[_GeM>9b EK^Oһv jQ7rrߑх=i~{üً{C;rUʮ{ a#@b5Jcr⢪KG6$ hzTYY)7Qkq`tI!"g*" :֠5tN:]`щCmڈ!\ \b;;^ܭ\Wb! ǠMt~={HN)"qz*zbE\.>Q-rh kɠl"rw3t=̕ 4CvAZxAo f1-QB^ԇvKO>]Z[}ih\e>-r[Q38sf"wߩdN50֋2=iG(Kln/ZNٞ]կ=FBuHo򧶦GkZ--&J;[nA>@ܣ\:%GqVǶ-\)Qvʪ)&Eps֦?M#&p }w@Dm*_0#pڝ6Ȑ5sTVu8-y/ikyNz;,9 0x6և%QOT3ɰM'l1Y8IqܫpmD/TQ%Ytm!Z{tnVDH"<+O3$/u)a>pcjqdI!1H6;83TJ|kBt0wdwX֮[H\Z''#JgB /a\I9i @;MU.uE4[؜J kE6''(^WE{xV+zOJ@ZFCXH䣷Gv5$$ `ZE# J8}}nv $&C pFP j?D™cnݨcM=3MYUppy5jG5jU:n8 oHz|-NsT~շ5LlΜ"e; Zj+a :A06"֠L< kNv;;eC%5CpķY'ԨRC+5 V`1LnLɢZy\Y^W;G 'P=^'ޢUF^Yy4F<™ͧF2070f:I,} {[[@ǕwIi?n܅TXo\LkwAnOSC~6 )`ML9L1 Ԃy_;;+ܞ(DEg K5h {BEznݭdNNaܥ*Q-O+jAL\ ZXY䀒8>[|*wNs~ Eq&:Cɟ;`YQix5P^y,BCS6jS'b6m:uHaq"O$w&p@,k6%;K8RlӭkqarG ?)g»K8KSlkecWCaBMΐrKy;B@ϧ\,'i/;G |4O&kiQ 8R~[n~32+oeMm}1:%:{4L(6KI@=:?(a J=Rr飂[6zPZO?K|BϑEQE`-Y} +WJ,G|Ul7?_ )r* r/K]edʦ2pḙ ؙP)G*8%^i4(\~evsvM~Hj#gݕbX8U.ַm8U-ojE^1R%Hfʖb$JR-8/%q|B=Dj^NxQ-=&vЎBL3}& 8 ^+d2 F.ܷީ)!'F/Vl9 ۾4]NjÂv2U)@%;E&x΍^GiyNnGuZǠlbUT9?Pը{a_*Rt~آ[]{z?ke7ׄ th =b x Zv;[^U%x2BsѫkUΤZ0$o3.n#| 읶E9EvtKf|`qNm~( _^KlhE8+kp~Hӌv3Iq,%$_"65\r5Oj{^>>WTUuM}Qc~Q)_ꊲjoBZc_2ҪWzઃQ Eۜ%w1->2&/Һ?gsk-8ՒOmi{osumKrF[{75'S{1Zgm}.|['1䳣Ё^◠V =2m 2.֭ڢ01z·Z\%g@Ѝ*6NZf=I[bb v2KW8d۰ج>%b%es,%sj˖umqSѓmfb0Լc]VvZO^s;Z&Z 䚖yT9/*1ua]StF.WBgTԏ$A%A#F3XRM׼{˸Ҝf4Ĕ<49A-hy "Pq/-eOtN\/jT@SDVHΓd̦bCcږI;R;\ Di ~v#LiQB=d= YDW;[<+\EDT_R Z%I"",{(S .QT#9I;oOJXB<%=V qxwiA( x;Ũd[p& fdIrhlj"`KavԋNO.|0"C$J!jGCnhm"C}q]Vq)EXGѹC:}ѱH,].W*i/oēʎ԰ Z7cLz q4v\N_s}&cꈅ;yP5C<H`GݧQ$N*R(ݒpuΙi,8d-\ދMw1bAJgQ'ix4ՈuW(-ʜ85'G9rNC,~ril<5 $5l`</?6rdd>R=jrs6edZLe'x/I [<6R$ RmGDnt@DWrl{fvZk*~siN{DhlwUgHw eS4 mYsʩ٠&f&߻Uqy{f'&mKXڷc0{wOe^;^J(+)(>siW9?8o#ZIy0ߎgģ=ƃz ,!ETﺭό&+Č.9.V as&)p{Gћն W(ZVdTQ&drgҕ5u)Ysv86B'lwjkЧ".=ãH8[,XIY֯ Krj&7$u̾ULn".&@.jVSr|\MoysaM׺ FBޓAܙ2V2zHy].Uwzl 7V~љH} $;(NntH\o\|v;gL ۸HP*6KzlX׽$OYܪQyqᘄ y CV# Sd1Ax.Q^7kK>,~W#SFP tI R)ElSdOYtHRIۍ}I{|:W7?~ʓ=jVNNO񳓕xe}H!0A<7xjEcǻ5 vxgnHpmU5W(퓧+c؅ G=֞,Ƨe2G׍T\8MVwRV*HdU ce+m1C/jIJ8 Γjz=[oke8EkkϖZ'ڷ"jis׋ǃL98vL ?p4O,oL\酅w(5r}N)8с&8\rŝ %C~3vӣ㨋1{\f>.c_@H4r8E *Ddr^ʋ7nCtw*A ip,}6ѣI _IB뿲$w;|w"o0'@7wn Rr*R0,h]:*y B%%x_K( >7ܑ[ }FR8xMJ>X/1כFA^ԅ ^%{^8^/"{1{Jބ ˂["J`W753pp/ԓUK{& ޫn {-{q3|(r9 0) s&fi_sBRÖ9 F>0wQzf )9(H_SO=ηůM1]ۧ%s9/o}Nl^QQj{SOW /-=߿erh<_I O(?w'R*# +"nkvlW,\'l3Y>lV@y|O~#9hǾ7K~H"dlǏϝ:hJ"QRD# wINJwp gr%)=&mkH3PUϴSx0GcqG, 9y`=P/^xofek*фX=o.lx8 ~u b-M &oU5u+Y7Nֽud;YNu1n~bRT~7ȰnoD *i8 ۙG&m\k}\67U~9~,&ݾ}/vKQ̯w QzM&U/rD7/ӄ!weܼBn.;ifiSMo7Wǐbqo\%%_1mY SS۴Zw]]꜐{/O[$ei/H3VOn+!'r>wT=| Ja,_6 X\.\ Lr)}>ws}>ws}>ws}>ws}>ws}IzX