#!/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=cfa2837ba8fb41a24cf1b1aa2d4114c1 # 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 "b}}nuuu ;=ҟHoI~^T_n$>enOZ&=0K8:bF2,'?"H`F@E>[ ΂x8l=S@`hVC%*_IEBXa}g&=|k|&Gme7~ϴf zv`ܿА1x̻m:̺-@mcZ`֠u 6oZ.-; حiwoqi-=xe\jh ۵a !s= *3ߚ97F+62Pd]@q7q1bgfE.H732{FUwQ'Y2Ȟfb̈́)=~,2圽*?~Pr"{{??=>{ȷnV_Y(ΨwCE ޴|( ?] CNivCY )6ba:z u@VRfTQ5ۭ=dg_6#kb8s}7 {`JL~ t;AkzY @Hdjr'vxjTC5 Afua8~o \xkNi@> ~W˦5IA5 {Y¡ DizD%h='Farދ30:I/քLs 'f2.N}E߈dvQ%\J#R40P~ :TE_>ִҔCG2E؛x> hY_; @]`!1u Je=Wf2ܩJٽr}@U!Nr2vctr1a-`"7t$C$^:sٌuQ'EIS/*.l<0*V1-h m&P3"@"(LւG[8U$ h8)SSx3܍qΌ23VXӴo> N ܈$@ꑢ& |l!JN%sD DM!ES3K JMHӴMg|k|@fka ^0O"{ՊT]5C d~OI3B&LS:H[&3p q,?M rah4:8II5)҆(ּ\ Deqr!SW){K8N&x #a4"VkᱳB2TBNOQz!0w,xӣZ ESѝ${WPDžp\imHq&7 ]Hh #re>Ҋ^Ҷ"]'KmK)JiEb̎G!EnTXjujǺ}KH"0HczXysAe3]/Zg{rˢ e~.ߜCuq+Vj糟a $$Nc#M8,F=㱇3rؽ3vmGR2lI^+ =Kˆ'`?>\IC^ʁis  tDq}edk^8C&>#X{LHor&BGZPNV1PGhOAn rQS@t]ҧijɒ(I=猺$+OLF^z^zP2&2-HWሺ`#?S +RʨȨCbCbgXAdYt M9кލL&ܱU2734ijZ6oݘe")dX znvOU2N՟T:~{tz|^(7D$^.e½O T!&61mD*-YZPaF_O.TWƸn%vuiAbȱ豷*\|kQ;U1]TB+Z]DyL+^e:By SzŌOʠP\&sL{)cօ3e N-~L_ut*zgd20+pǶVVho{pWPO}uebje'5vi(<.^}p:-N_g\ P:3\#F,Al#D3b=k"IRs ^|}O^Z?:ݪ-D3+O/zw[ǞXFxh|pnN8Kve9~фV>E&t WK_/~_N !?t/d]`jQA ʰ VDyïT L앗zawo{`lYz\ rQ:>J!0UpU<|K>0 @8Bv0>11,hLtO]^0>p~\[4 vnDbLtlLoIh;:‧Y[`N'gt @äw T8Qqѹ:؜ q70uW(%:1l.*3Vzې˔[X!h'ɏ؇/䋏Iz&h:N4vJBA95ouZR R bVCrLgjx&j732!l^uN^Jv Qao;7uOwUe!hJᠥtpаo'31ZwxQg/FWxz[y9_ X Kn 0 8B??N Wt qwļ(ȊlZ~RORA~J R]I}OW&6æz2kg`ڭar=vV*-paq :s/?#)M[H-R5^Ԧg')A b=r|V?^f.^=sC;<4<;]'O>gdū|f֑B’`< l,[o@N\Y. q2>J~v*XmTi Mr <+P!%U/ouKSKٕE+3żuz'/O~&[RLogQPj5Z;p%=j DW~ fkKةf~)[y}o ;R%ZijبZ.pZbD^O=@'U{&&]vorG.$'`CVy; +lDn1'Tp 'R2D!΍~uք\t92]?;dgJI$%n :ו[͝5|5HCd(V E/Ph1-D}z )2xUcZaH"6fEgށwa xB-{EOaF:{y"BMWhHË6EXʗX%6]ϱBBj%/mU߳lg@ r#ae/䀏fV^/ ] ӏ I. T#Fc EC1v )@eVZ**QN-W61 sҙ+w:Y $ÑkA%b _tƤ;Z)RZalj2ĵ/B%F@;(Y߅by,SR͹QHwz6<8RӓRps,aGY,dAW{U+E6\`$ 4;/BdӃ0 {5FjQ2L(YΪBciQMdo+.t`!<@gY- 봋k"q,*>exXQfeULovq J4 #|r1o#ܐ7H6PH%.TH#Y׋])cTm>3Bd#CT߷,OM*Z~D!b{>ACq1#\[e]JtGiEE5iLyɆV  L_o@0uo{YzUCВj $?s 5qicN\߁)fOREk72jȾw”,O#gLʋa\ kHbz!5cO{oƑ~&V]@਑ ̩ R[@DS!mowow2 (Y[DwD"28qb /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\:7֖~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~gɤir4BxL A^` C;e9x0;o44<_?_Jϙ*8¦ZZ^fVo+ UzX+뗇R~];{ڞxvSrgG TK{_^◣ê.Er1rūkd'f$9wNljK s @C#-eP.E7e_3!`AYu:JaB)*+K*JU#R ԂN@#!4 FaX3 n ĚJM`q<:?TLbI]ocg?f;M%W*-D\ Zax(8PF֌qNzuU5DMvJ:=Zs%M(<84}4P=.c_uAdY@ Uk˄&g ۵V`^bUǭ> 8k+EOW))+:ǗCT4#OE\7Pw9 W뒬[̓tٺq=-l3p  *??szL'_`2'RӢ@ \RnMKn=_1M_7ڄI*%o,P3%ŚP I𲮔jS6P|bG(;:0XRo6st -cM#DE20%n͗ބ%zCzbLi@5VNJjDsߌK EWE=y/ \T5jvBGdS1\^Q3l B3j\ON=šfi6vLђH{!L.:tq !Xϓ#Cע6eB}fC NVUFe0i AO\0'xm`5E[wݡ_4É\IgX7RdAg'E*_axoO$ΪSFbW{3R̚@MF̖Z7Τ:baMR׾ xzʉ ̜*zdJӟF9v1ɗE}GMLol 7dN@/|ڈf4W޶ùN_R`:gܮn5nAIY8 +U1yv3.su8"Ƽ5IvHU"44jNCx2_Sp].%RXa*̬MދCp<vm}`wE5ҵehb8|R U!7yyryc߽6Đ_+lr->:#\%sa0wydGs/l8BCrHSQvySTۣ·x4w"i&aƩa7U!!2-oB6=ꞕd|87߸<("8ѬkCD" (P܂XxOQ\'eP"<2uG,:1( 6NwfN{)h3 |͋9@,~‹L! O,4e@,r %'*iv} 7'Ҟ bSi%2w K0\,TQX∦(-yfw7sk_'+*ըm58LևW e,'B{dÈ"2how{Fm-5:l70*u؉/o= 0. 귃}3?f:g]ȞtY1,1GJdr"hA)en(c􆬰v޾#AFׅሁ yQ8nם C8G :1p~,U3,7R lKP_@P#Ꮝ5H닱;&4GKHp"5S"vӳK/%_yn~TԉzSi zs'\|Y=+T%/8[-ۚL4[͒-nC|`bs C x8v(q6 ap3G֖PVlJ<ϵ3v(^~.Q<8ቚMi6AEs‰@0BSiɳQュZ 5ѕ:Wo.)G}^+ǜ 07B#t7EۡJ2j97{^BlqlHEɢ l k#_HPmMHfm폏57ʶTKiet{ʫEn۟-w%$gͨ;<oęx31g ҡm*L}@ڒ<-hv>EuR\9;}dPCVGŷ&h(>>6f[CE^:LƓ :QƼU,jGv%;.}5F66NZq?+ҘJb%9*8q2c%NvlJ}遼,v {hs7^ka_Hs=T977 (`34} Dx2Nk$1ws( SҩX 2n簒KWνÆ(geyM@% v϶]CgaA!JH1ӗ P dp#]O݉߁2IUQSGtv0]ڈ(vd5T*Z7:BFÚ+}HoILO~t:}ZQ sm36, Y.9_nYQ$=L+9xm{PDlف'i[q-GRD]zSO4?\D7 &LǓ`V\y %MɸkfE[`BjuIJ&]o^b:,wlV355" L-O{%Iv&ޠ=N>ϱ8ѲƛjMsB'nX Tܗ=nZ~_1iz7oI>9n5R,{ #iSb)-?u>j罭^g#Փ0hILe I.8SS:Ӎ u9SFt!ޯ*)ԅK8m$ 7 S;9 7i,Q0+sd|JC̺Ќ}WgI#V .E,BQXDaA H{ӍF)0U,MliB6,EeJ5e*B+϶ppHɸ շ?^su:qRCe m2I4~_ וIǕud;|CS+ռ99KV*᪕][m̴I?5\@;8={)mP!}ro6e=Ŏ҆(MJE.ɤI0NOUu-Cm2.֗u&/: x@mY{[;tމV[m!9;B]0XxȏZR  ͭ38ݛT3!w#-Cms]O81 I$Smp䄝y>BsϼDH%Ztr-xS=zULhtNDD^ 80kpUG<ךoj:7t,ؑw $1șZkpۧ)LX~y>i"myBγ2cI-,L'td.Q!3h9U ҡ2sp1h1 E>?_zV%-t&Pؙx_0DJhe,8wc!vb92т蘨J.̮F`^KJo4^!aӊ\hX;u^ИNښ*kMKWXOV&%B-UzE.1`R=S LNOD>_ .(OTIp^]5xW$7&N4}@t9o&V6<Tl{Z^ *Iūm{7`)mLn0ɶSKI鰢?q,ã17%Sww*O`W0ŷJ, ۾On;NPT1~BjsJ9 Man<7&Fi-{ |(ۆɴAׁ0 =3B0бX{F0R1"bg [k6H=g' AJx+MOT; 6@z"”JSf Xƞ%R!'襰ڻs6X]tPqe7LW)UQ}-OpDczÞpVhΛ.[|`$n ό jw7K'~!j6뻵m > ⓨKB\dLW.<|WVD>% ;aqRsʽvoIǢ£S{)"oYۍx >"ԉM]\cLY!tRmuy؇NbRc@ "}/!nWIGk[cP ,wrC{}oAeLQM"H@%J{y+>Kr63[;-MzhXJif9¿ 5׭M5Ogp$%$ W uȚ" Zx,[2}wr:s,,e*˅DŽHޝSև5h>iһX q`$l3藩͆l #'gq}a9HQLȻ+EghD35Rb#\Q"h3Aϩu%5T9jXXqh|I@es:/dހBVr0jf;>E鹇 .cc! Ry"ՙ1Kz-V0I(W'hv1>">"6BzLNO;A '7 rda ~ 0tWN"E>$Ek@՛֠WXqXH$ Kn(jYG4oǐM{"Anvԍz8nrv<-´uyi:RgFfȝ3OLy^Hms%'pm,:lM|~pbK%]0`f~sb^o{nGzr$*BJ*|72 @G ˧]Q܍yru~ݑ$.inה/$Lm0h F vN.Cel׍L9via<&\' )@kv3ACv.Ni{xf:V@\%u.PF]>BP7uv|E)jF m9$?F1 UˮČ##KC>3՗;:aA 5FvޠoUR?=}ljgfbNqm>%p0l<+;L0t;Dz ~Js=3y;c&ϭbO3Mf)q3gwWz3dCA1&g7Q嫏ɤ*\9WkN]+b9 OECcrd4$}+@u̅pmGkjvO8i+j>lm:U7v+p{V@g(ELgLΒmrfÈvLr%g Rl;Ц![U)qb 'UEefE&A # n"&IZ1KR7ܬmצ-!M^3ڮMN_-trbźǦ8U{fqC}A'"51"mS .eԳҦeׁi& ]8?W/ R=TĽݜC<n LRF6FzgaJ/,b󩅗׾TVHgJ$eLdR>XT{XAf)CJ!0ULQZwk l'omWJM|O"m,QM 6NIVuQ~3CHN/(f[(A,ЕL_%TA g ijܧ쮩BAYRONV @=Y"P5h?It"s}!}BgZ/h +C]LzTx>u~,+ 74+GWrat0UfշS1S/" /tMy tKN\S4o㔿TyɂcNr[+H1{Ŝ.mZt6c#y즐C"{mGzCa (:զ^}哵g0h>H X(K#}WPU;`rN] h6͢}~[=Jz3qkb)O9Fl9 ?D+9N;sOR'O/T~g}nhGXWjc6'iǫ=n( %n ȃ1Σ !H+aSzA/0F$꣤a1'4 N{c3ZUc(N&2-8ip*Jc$:%3 6-p=$-3*ISF<h6 -t1'7xtB9 ֥. YGKrK4/.t&M>M\ڸ>0_G'Xf,+s-Ӄ m/=YIoLy-8 6 c<@z{z k=7J;^+N]Ĉ 5ڸ?-&>7]/0amVmԊ%'+0וA]V_i;}W(zs]?KΉ$QH/$ uFu|yT\:tC˞RC4 $P+.r亇g1(2uC6[] d.m@δF3 .og/lS jJ `,Rzԭhl(3QbkUf6(O{G\uh;6Y/g+?6/鋡cJQow]e;58 PhXڤv,_VmsUuKK;ԸQWFHB[9odk֖F)KfWq1rFrNjp}h{SS'mrppސTQiʸ7Ԙ,VZ6LFee/r şMz|wOeQmws3$|i-|| Ǐs3ʛr^BWhFe9}o9n*n@>)ΑT6ρn~ߪNett9c G/;^㨺|zADJ!spP'f=/`e|5۸<;cyU"Iiyu9$98i+4r"Vn.ӷ{+ɨ`G}XrYU+Ag|rqpVemJw0U`2jqIg'&p!ƥivZ4Rţ^g=NMP0y: hNcynXC6юq$Ѣ Rco(@9n{ tjИ3 0Dp=~p5ALN:xm PyL4ATrk'^臺1~(zFV7%ܓ^ >}eLo0h^1~fbU ']]6=pv`7`ZUxuw 33Vs@_ʽ{S84SU֑S ۆ ިUun]ڄvqWgK9\IUom) ߨN)z#]zy&m+eF4nC]&1.F.D֯A.(F&Ch\x^ׄU.&Q勨C|LQ,fC߀P-Ѵ Wu z=78"U5 `$)[!Z\=^I:?o\TO7vF#̬q Υ:tGs()eG*tiMh?JlŭlDE  G|x<|tyyY9O*ْҋJn.}n& 2kZ mW#FpXT!kWZ٩~#yO.] Si17k!7ĺ#;.P캗6j $Vl4J.9I/.4~dCfGysFg:"p&q;h"/:ho zPCx;݆=ࠍ_@%]9Q@(qu%61y DWr+xxk) .Vrղz-~- Nf/&QY_ ]6-" .Ǟx7Cg\i/ B?)ltG`6%TXE}htӥgϞUb.u[;3g&r}zJ6Tc*3ۓv./&Yկ=YcD18!\&jkz4 n2)fOD=ʥSbxaulKҫΕ"-MmG="kR77lmZ4b8 wWDdئU<i#J Y3}0GeU"ȚbZNR wac}Xr%Ę(L5I* ~N{;oM:ǽ ׆(AKBE``Zr5:J6⠕mGyv\\|_wj졡8tT;O onlt<1AA>zxjWABU|ʚ>CfǠOb2b:+Gl4 RFLNCd,9&;ڍ93#ڔU7YvԬ^VQ0ㆣGⴉ0G 'LQP}[[4 &.i=,R: 5}ʊ襁Ҟ LƠDIJQo cp!-ri ijhoݰj _;^R3G|{qţo\(AW8~2@*:$R`:+̈́ɤ?,ǕusPqr1 u(+-:=_e땕GS^m#|ntJ!z*s{aVᨓ®Kѧ辵j?ʳM9oR=]Z22kp[D rPgϥvZ\|ՅD6q,.ڃXwNF`a Tv{e|sSˆEz!XTIM82B̩bAL pԔrl$k&Njs5Z"3soWYѵ*]Y*(_0ٷtA^Z2i51/(M?}_$d9{tדy*|o`W3co4ia-0'6(=4́r-.iE^SdYiJ)HLy\yWT톞.]NE^@ENʹ^Vq 4;ĩlc Cm@-ؾx8i"IԾ\tdQg-T~qJd)],bɸPhػtaXE(X쳵>ȧr9M(PWk`3T.Z К'ɂ,48;`06q"?mӦSD'{jDrnHqIJfln^#6݊FzV/wr}&]q8ŶV6v5&\m:+ ,'#D |ł{bY[}4LËd⠻KA.K77-VxG+S߹ޙK̤ib44`|#C2~9-%'>*0elIW, ?Dć +I_4U֒ǰr"{Wp"€.GUFvl(']pym r}YZ.IQX6j`:gg 1y;wn܎ނKkg R2i'ѣo@06w ycb(4g^ r@qN+C`j4}k흪?rbd}b&JKc;,h'Sm" XA QjҼ%aSfڱ G',ʢxBl"HA_VfEoK|ugM.h0Rn.y?Ih(|*dw-_}r+=b6Kɵl{qo $7)ҭ*ERHP9byKI#IMAT- [ K*2DyŘ>CB9epMfod%*t; h ٜ~!.~ j // xz 㒛jz8- Y|k[U!*ɵ\r}q9 ݨbeֳXmJZ%F `g(4 ;8[ML [ji !]"VY__6/]bnH0lYG6Q:%= z&j&C͋8F0 ,ONleG;8YE0arMiGS5:EntRq%tJEHOT]4bkюmDx(9kl8Ϩ%tO{7*YmFCLyCԂ(IzтQNv{@?EdEЖ,Ϟ5^ jaP?k[1 @WnmvȋΘnRF}k:'qTQh%3n}OrS=gvC?#x)638(XhF<ѳj<w 2oZ$KhN㒙kQ=[Ylm=>Yn<OYyvz?]yqkikz^[;=}d6lgOqkG+VNO`LDY Ix0d5>EDuE{{b_~52%a`0@ _6E9( E'$Etاɗse XN{@|.]hqѣIkt?;YW֗4#!4S~W(Q4aq[J b :p. VQ|?Y?8^~>y-?] rhri|`_j0gp;2J8D#GSr@4ʞ-A&j+x&9Lw' lO= w}NϿW+$+pWfw(czt;}&Ѹ+eY Ǐ"âAqyW}2/Tby[wTz5HhTj!4/LTCxmJ]@Zō'B-ث>pi? ayjMP,h%h/fa{m`{S3[B=^нgvPKW* >B.r 8hlb Έx|1'$?lO`\nsn5Go6럚A>-};5|[jӵ}Z Y>2]FGʼTEQ7Ut! x,;=[&ߞSU0S~^|!e{:RYP'xNu,/ R&ULܮ+\'l3?lP^[kِc/(h nhoD=VkyS ĩ~˅g$׻#!JW|1]z)uS]LMwH+׍5XԁheM%M>;stWB#٤(:Y]qX6gy@xὙm58@avr9aCv/dc[)[~4EF2g&SGxM8f96= 2t.˓s)eˮdU2vVnGpY^44|0&ܧt463?_\|FC}~j˅@΂<oxqt\Iˁd ZաHbKF\ [ɛiR(2s R Bav2an^004>)䦊lbF r7.;В܃,񩩍mZ>xuNtҽ-J2 δGw۸)twoR]玪/cU) &Vws}>ws}>ws}>ws}>w3??柞X