#!/usr/bin/env bash # # Copyright (C) 2011-2018 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=3da5bd50488836ccfb675bcdd7cc29d3 # 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 wZ Y85 6W.%K.,ߧ&Y2ƿ}C||1۴pHp؂YH3 i2`_Z>qȄ!!v|ˠe<2|&$ &5:GPHH0j?4cPiz\}Z܋%>hDn e!>, z@=P4$`!6M ǧ  12n.ϙ_$+#ޒhd0BsѼlnhY,ꥬepo$ܕ#tJ3~*H!~ZH>X g]G"}$E!=QʒR&rwE '_*28; ɕ4\cLG6㹬qɰ=Rθx4(A溲+[ `V"*Q.۽^W@3xߗFȀ*9YO]y$uT)^(C#-Dڣ"tW `d@=HBALQeuJb02+ܑS(LhcEBRm&$ 3"3}UCUK  L̃>2lF>"bC}ek(\G`F$rJEO 罬H%P ̦SYnjqTP:Oq}'#8"fD׹ ϖB`|3\k{ {|q5+xԑs ,uVтCU Wzڰ^ؕ t,}@ vbbN K?󗢉T(to^;$< Di4-%{ 4t17#Kv;?_Ws~g΁kt3rg^_.<_.Cg_垹뿹@LKlN̕>'gJb[2 !oMVfB m;+19 W&qG+EڣAO,,M4qN2g\73W_ cS(!tH2t[$4KF#hcʧ"R &qֈ!%6z7 =q)a܁Yd $AYR*Xpb j^&h%xe>F 1X-L鮫=ә%XM+i(BaJ͗˔x71:*m_7|P-fFL^aCֲa /hܲWwGܲܓL*jESϧiٷ"e^U%t$, EX GX$9' 7'3HHh7[ty૞ ah?cH&e$gx&i;kη͙|n[^/,@r5$ b)Ѵ6, ӔڥC CdkǍˇ.Vn~ɴaV^;!E^g@qo]U.bV2`ʛN7Y$)BpX+15'P)Cu㾺W$imPeetR0x^rT >Bf4% =K1h~Z `qnn!p$iBګa6\y8vJ콁N-VKe6L#>>}$i=,zsLJ,#fܰo=Q+۳f6} s=zCmjS˅~M,p/~yJ0% :QB2\5ii֎e2l(Wero#Xa,s$H~4Ҕe8<itE_+7o%($R@dؑ'.|w!ijG; lR7e!`ü zv ndO0Hgse4S88}|%Ifn iej'%sg[pIʪ },^#q&Օ{jRIcؤ1}}QM"v7DW`BwVjj> h:xן#pkݸ;\&X\FV3 ۸Qg=p62{0̯[͘h= 3C1GvP4b0|ظt5ska,̐d@RFs€&1t"WgUgϰA<_,,J)" ;J!4.2L>](VJdNf0[NV)"Z˞:[Em~]{K-Z[bm.DLaEЇ…Xʊy[Id#,`KhzCŪqpӣEqG9? l>I|o6tF.|ϡG%Eò- "nk6!L6-Ct3bYf2-n %>A4a֑d^"Bß <˔ !ȨƝXgp5l1vY,u'`}knd >8 pV$L:[$Wbu C FS1Ss֖$|pиIۖ ;-M*X4d2PɊ ͥ g*Q7}A+üL}lLw˕'[ăM|A7`R#}Î!ۧ;gs"bRA"?$v֔&:˃TehíJTΌ`9vWf,Yk UXrq.y;58Cn|\F7<&F8B4[l/Zf4 Rby.-͘-zچ|WYWƗiAL5@\f'`m/T;W7R|Z@bƟAy$[, xLr=./ R|__٬?ĵg_BS-pgYK6G]珸v]sW?wBп_RWUmAXa&E.̜DH^{פr|j-!5Üu)ջj'E (]Ү[ZUfՒ׫Y t^Rb:pLԛAQ /[AF+go0}9Fu2Q;*ߣsjAG]oGD.f5>3U=;U=1UG#Qk[q+eufbskf6C2|3x|h?\Kd`@jw" =r=@0L٘&!H=3g20M3/mSMDJ)^ 6{.r 5jˠ(c1S-_#UnA؋iZYλبJTj 3_;F+[1% $^8Vq( ;?V%,f/i10Dtɼ 6Z9ֹ5SîZk$]$}y{Y|{r \R{I*$lJbVX2}RJ#Ypu4 $ $Ҹ5O-y??`ĭ&7bqRHU݇+'&pZSEzݬ׵VaŠ;pk& [+\8vlu=YJl1S>y_8QyԮOY7q5j嵄9auXxcG;o6p/ܼAfH0 MMMKP\2."pҝY$Dbс\;rO_KHFXw={,{,Z8ۈJęՁ'8cվ3z=ɍ,5_2k{N49|ԖZd\ Z' Ř׋LuK-3-4uoqP1_nPΖzDL^xMuwF}qb^CQ}K]Q/&$hƤii-~0YKD\fU"vS\ZoF&E#t?^ _?D,HGyY\]ǮcW?v]W}KRPr:WTTpN/[M,Yzy=PVTxm.bԅwre[;uCvX6,vbE.,UKtIÎvŞz%!mΜ:#JE`wB.׃;$و7#xz^wN7e/q_u?{\h]|t|:)x䤞+y5߁ܣ{O/a "(2q'?~Sa>-i E9-W2 0-;czsO~xQKiRZweӾ~i`LkӋZ,],> 12K-g lр[k2iLJA+F/s [ROn 3؝ w(%"D‡?JH<$ǟ&tL1}5~+MBZA>~J~@"*@9X7O5dBLBpT-} ugɶYѥ;wU!~b4mӔfc1ي?Y|AQ3Ƽ}<į_l".*@MpЧv3hϧ:gB7s2Ƅ>9ol5l(BwřFQWd;"}pjR$>(a` S6&6 |{3󦅊t GzL}fΧ ~gotXv"DYi/-}m٢_SqHbLr0A8"mE{>;K]KZO:uϏ}Sơv,:|m={{_5'ؑ(s X@55NxNS5HaE0UWsSœso7\߯ ZFijd5QQ[a rRWa@O_> "dBPگBkn5 UOuiu>XFUX\,xI-XZ%iQl鰆;hx5 " ְ33Bwn$0S2Mp\^72s,^"F ,NgPtfGpڍ`G1gxH?s{ J-|D| m?}(6g`*zkŁ62I c4M00gl!jw*`aZBwaM88CJEnL0u)#M@$)UH1 Jia`ў'*F : f/7s_gBASQ/1'8u٦º,QQ\p!I*oIpDF2ŠB(m؉4KY\FTnx1.h }dPnPQWRy0T/'zO 3^h2B<;VHy&vA`C ƨOܯOۻʫTV8fz>.\TԀy#I*F`Iǃ*|`Be"N+l(cLS.#֓Ky;xSLbyJZf&w6 P< P[lPI. 7\VqZ^?A H=ƝZZ fg^w/8{ [0+AT x>J.XXN*:gmt y0bsh6(cs/K6_ X ǖ(cZB/~<-$tv+ON&f l.ZByםr.uCv/=LD=@AQIwNM. "vbsgvHJ&! Tz5qѰ.R ߓIHRLd1x(y=Yp#P;|TqY,df >V"ʲTlEY~a>r^u- x, q &jzrŹ`GA`)(ܠB;Je09Y^~r2?J<|D_9:hdMDߒ6¬`idʣn $tw}8TfaM=hpwUt^/g\%Sv5' *1~# QfKwf01@+ 0N|u/l<Tr bۯ;5)& 1ɇѦ"UjF {[NiQ,q=%w3Tbײ?ӜO|Q~eMKlT9vugy<,AjKsu=IT VC,[82gNK۪cB9KqdAeq$2V[\Ƶ@߉3{=eK(feSe}eݣ"!HԔ P}`}黁C;SM,Q縸i'!i^X<\603HT˦|s1¸5"Nz FF MMJ '.$e(I,2Mn#j7B3Hm pH (VzaʊznO"gV xa^JgC^<4hT'[1.3p~Ȧ'!d706b35\F{,&* (Y״B(X֖xCmw )pJH"OM-j3zV9 >}ifYΡ%Uwh}'TaĪyFar ke`mSUY]hng6ކpX.웅sw5 ^2z`Ẕʇ29;j׌+q1kNψW]!0't?4 6|M>Xۗm/Qo7m<;W1離QpN&,NzQn* `þDLq?t,{&alJ{+HbLPS3DGk])_9h|uR[cct!K]t`M7,u\:S6CcI/@Y5 &VU hp&ҴSa3-ODT0dfLV RVU&("/gF yG =}|r`귂50ݻ-䶤%";>ݡB,AٙqHy]C ` niO1}W%s\LVWk u i8e$^oi4M z#y~jǘ<ìC_?k$ѳ~Pm*"LYbzeB L.IτPzkuRBmAj[D۶')9N<ꠅmHo$>S$.-)dJTjImCe  X!ӟ$@]&Q13|~@'dnX ۆi]Oe ;nj"~Y^bSU66 m0!;*)[z]PзQ/F66Wq<,9Eû(`]pi 㠤 bwNfTe~y@o)|9s)9NާYCk1 8\_ћ GtuF2})Axx$ɪS*(3ĤA +K@ qh]С)[=zS苿zA S`+Nk D [3_IJl~ OOUYߢ%1mku7''i;Upt.1'!3O QXi/aHCB#vLKѺ܄t8򶐤ð4LXIb:VDC!G y008F8Yfc,zo&c8=B#Ӑyh.2UtHكp|V ]¬ɑV r@) )YRPJpe{#/Raƣb^,$Lmkr)XC[7+2sͳWfV}9OQX4 ӟ^`KX,mLՈg`e8"p,28@KUYD y͚ oo EuR]\x#}{s&)#Q\ T\\*, l!%2@Gc=J3`W'NStS}C3LyKwdLjٕ0Aѯ06Wbc9HYVƷХ6b ETy21"(602^Sp?#Q: &zаU)0@I֤5,"l^G8Ye͚WSٺ6ŽucyAoZk4 Rn58TJLz]K3ghK4nVH>z6RovKNoS2>6,oȲ7 Os#2$Mm_,kua,B2l-H(i)և>;F=Q&9RFPkĪDVypB%~۾0wa8rSDz'˦KPC?4<'`dFṖ53 ˖'^^א p >HQ'bl{7'//#yI񽷷'TׄA4⁼b BG6F[G9zP IH &b4<7.WP Q>D8ad[Օu,m/ߓ (T@Lز_2 Yy& `%^0G 3F5;G܈Vl1V`S{kle49T>e-nzmEtHc-'5O}jʏ:OvE@N:ɗl݈_xS!9$ ք&PSu*gl-}t@ .D-:(enj굷ӓSƃ 9ѻꡧ؇m  HSo@2{΀zfq#pͽ&Fp+`p`Jg4 m}Cs< $z(WoTC&Ńx"7+>XS{>j> .J~z2T7.]v(&T`gx.BC콠QH7>tK#5r/0)BQͪZJNN|V"O8'8[+c"o7>d- oۄ?jǂ 9/ A]i3nSm0]Pn^gN$d8e_9>Z 0 J®#l6[_z)aqߙLW;J) CA1YYk#=spf1(*. Ϗb%$HUKI@\9M 'nƬ#1" 2 2.Ix 1\iӨUdh4XO<|atal@13Ũ&Wyzu)Iom B|1u4v̛99/G 8}1`〢 e9{N<% $noFLT,ZTbYa{p` `+ , zU SPY6ӟ z݉ r/kU݄RJHFg!_Nb]'q& 钱;5چ #X) :} З\R[V8N$'|$q3\ba͘Ji>Fiڑgk6 +V#yfF>.&3js=K" @n sn^N][ \_'!5q}t5KO1?mRj.hLV1j!_/^_O_zx&z֖sxr+r+rEX}dѰ@#ϱf܆y> ?{w|_;<1L#;GUL%N uiu>X^Ub!>nCQN3 Pf4lx8s<ۜRayNjhޭމx!l3%dRJo)Ŝ{C I`#~:u;R$9F:j rD=ȓ)%'CTԙM+jG;rH!g"B"\ |v`Q֤NsLl2A}~nV=cqBylvSzA*UV8󠳯>͕^sog*Gb'+0D1C0yKֻhna3~{ڻQxQ)|鱃]A#k5P\f3JG@{]./:է5F}K*$mOyMC;kc!Z\jY௾%r9YOaeV1>S1R㬃iI16q pp腜q=μ @2<,SGKvW}(*e> ٽO%Za8¹4H,l4T'ܛ^,ªt%f"Ņ ˥ևh>IG)i(I? DԈl69 5)4|j85%E\Oemm&ѺLIu RGBQVfMb#~TĚ:S2]2IdT68gL [.ɆU/4 tgKwO Rr[y" tSHth OGqr1*pfPlLyc~އJT^r _|ƿ0gL"z@ fD ezm'~+[݀rɠwMܤb'1p,],((<2zoq+jfgԯe5e9 M_A_['OW6/Q6 tzl`޴0F OwjZ,J gW")|Dx* G6hr t%Tfj4M9|P6JyMyLk(މI0E7WdDsm d6*+Wa:%g6-a yMrJp2@x Y%EWA#Y*dw{7shPOpOٙN{3dXneFVoо`);ÆDB\A|V;bCw4bg k0~GtMH7nҫ#OŠ$#jeFA-̦ ` 5ī +{3E.Exꀲ,$O^tva&= o_4V/Px!}2^Ҝ:Tl=]s)ָ$?yگITe-OxKE6 KAז 6H"oSRݘMl3Mjb3oH߬&6sxˌV rV#7ãON8BIcb}l :6 Z>95~_l% OH\ޥT2 ,EȑX^%U@1 *pd2h5ZXTCdl_Fn?W=(I}{/X)ե յ)#?r#?r#Z1,=Ar E~|@\5;[NqH`yok6}귣dʏ{>ܭwNjq>o vffU%Y,/GgUbyC>4somHWc,y뢋R_ ۧ@aBA |J8r%x,HTh?do ާe1 cţq4Y*wKtx`= l[I<^[??'ju]p8^[ mr%ڪr{D7K<`|(c׷CSSk0* e6p^joۧZxЏFrQ)1EKPL3D DD]J^s̞~mo*~x`8OMaݳv|"LHN±=MgnłEeJ~kݴOEGJ"eˮzǰh~!7/"k zиjA&,z/W,=^C[߷G~l0/DEFy݉،CnHVD0q',)Pul񿘽p tWV}PDCÃoa+[U8EȠ:]ݝUIl.7uK",F 2哿m΀[p܋w.`fwӍ0MB>`%ӶB$jn^¸PA|-2LjS1(F)HS *\s?nvƒ B8ӂJ$ p Q5sIJPp:舱 `nY ]*<:LU.Ǖԟ9LQ#ZNdF'T BdMf  GxD}x|\9@ws8P<j#v TsOӼMأ#?-xE!f `c&ɝgl> mFds|VeA3>;gi4Y,L!( 1H SW'@CTv ,ZF ^hk-x:(` {$nK{{eE=u3bUU+a@|Xd?ַW~z"pOY4.\dT沌qp!W[&#]Z?^{){j!pdqcmF ؓjpK<n5-hTCSUfhMF7xm/f]4"$n%^*@3Fh l$ :e,% Gq}iZeI~D97t,Y$W,/KtMC´aTU\L띐^dO!Az/j`0C`<$İl#H68iZ[ K1:cF(X)7 㢭|ԕ8wo}F;<;|stF0wR8^!;kq,feE7 o-dž8.]!].3tGhtǧ`]`1:uѻ3Blv6b%|K`QBH[#A0, KH]f yA\Y;:`$|_!VW6.y)kk0FKχ1-W*V1a+Hv KC=pG'!Jcbmr*wGe9u7so2@yg+-p.aL/WBG }CLJ 8\!!QSFuG(`-Z@RwAft%@,97bTJKY|Ef]R{P0R;.&1{QZNN3/G`{ܱ()DրnN%5~ai ȆQN7Ŋ=pЩI@XOA t|4c3R08`R"ĺ3#TAX 8_ße!ҿf-Uv]kI'5BR^Aebt?DU^4ga=6 gӾ* Nm23trr&%'aAU&4k3UbV!JК t U a }28Z9k| _$[6fv S?m?_ɴDAfry%'k?#mēmruym'Onnn?Ya\?Ϟ?þO,?̄E9"x▫>밷ШiCu{ĸhR$[Yؚav1X(X6zYq$G%KV$bZt=TJQoCuYV.GʸF%T푕5Df8^+I5]; ^UҺM$c:BBїa9ֻ$чz4 eaYDOmGޜz-QgIQ,Ju{.U@8F*lDib)=j :>cG BF[/ȐX*+&Mq 9>:U 0_ōkGMUv;61U$z"M\8D0XfTJK8M&崱%,0dIZ\^S_>xb_Zda/[z͢B=EVvSm(¥@:݌/ZNwÜ %`8lDLlK)d^"- s AP@9)0a0\ Ź8ӷ]ķy f)6[r>T<\噲s+SG*JN( {v5};>6E?V&TܣVKGĥL{7c#i{AB9uz2ҟ }.Zb`^,w*J*ᙴKY{@$s9htz(⁐N%^ꙮGVE2Nn"j7PsQz?xn2+$@9SJ6o!7h잻tqQ¥oGkFtqabHL|PtxQ4pXZc*XAI&B @24 &.!:H3ʊVWx."ߒr'i/gX~CnAigf<̹N%p©3\0?}h!?KCƠ+Nh-#P!&ҷ4$W ʽeIKe$slɺd؏FWAF;~ T$#{R~Hط}B+np6՜I6]Jxe'7SUh$N'h<'DڥʸI#$ mZ#}wRy%'mؿEO 9Q ֒@u%E$- I!{#=! v|K$tmGu{k0ES@zucb#bmasC*:,A̖M"BqT iulO*J;NA ݣ8`=7;}<Σ?v"mه'ŷp܂!bM( B iC,n~Lơr`-]ނ TRa2ql3 ."'3p)Gomk "ԴBDWAm㮦IҏkFQNJ7@m"uvSU/DI?Փ#I*BwsZ%EjCOD/BׯID~;n7IdzZ8cxC%"CD0 HPd ZW#MkH:D~sޙiT7ZsϭqnB (^aCU&”! F#ꭑ\74h]T2r1Ƞ`T ?{{b9CL-Iׁ33 _{2SECެlIq`lSݠYZibo?ѼU,`'˒XNmZ?>9T8=\ #1_4ԍ:OWwq8f=jG ঍c,VcVG#lA! Ҏ_BrAB!A-켴!ȍ Sx'-9tÝ܀[d vdRzr*k)w?@Bw6i-Ǩ>(/[c_̊Ao,,S fHqr+nH eJ+Ð2i0 %`XpH34 '_tK{чC)S:a=L*yw_1F*]0**Eˌuo6`%a+&)kmSKWuG<~2r> ˵)Or"߫)?g^{^Ons-<>Π8DpQϭR$axnkG;d2T~)RBxik9]Litۨi,4mUvOR/AAۗӝzJ*7 4SS=N_> YsQ? -R,f{ ’=LU 뵷!ПBa[B%[)x oO}᥷Au.pjz8:%[W<( Wַ.f} {۵}]d)Ty𽳋w8 I5p`uŒ;^i/ېzqjېm6Ԟ5(,:OO~N]a3TA8`w 4k{5^?2CN`VO) 3xY[]ah7:Fc81 FT6b;h ,r(}idDHʥ0J~468TkAca1bU"d'QQa40,eq3 Qq1ay( N a7K棡e}HCA9 wEM87*H'VBo)=œڏ{x+/W\$ϟZΕAJ n{S [!F4 A3=3:bՊ16&01\!o]W%4̄rWkAg1X[IGk ^)a yW`r y82Vl;bK@q-8L_Afk0+9Ztp4ƐCdJ S=AI c?\K(ӝ\-CxKVdI)| oJ;59v2E"@̭߉p [<NdIT5a0E DLJ(CF%6r,`RIALN֪&\ Q=eDtL:7)U7:V<3)ڴ>Zp 33ڧi:6la%0NBJѳH{5oqҰK\qomvZhʰE q2ljQU_F=#V>`mɴN^^Q "L?\'N"͍8"2=)$ɔ6@7 1ЧbJ9$YZekv ~Bys`oB܎j{rZ7vVpڊ9i 'tَ˱v9 i9~3!Eς 4pLܢn`E Eu] ppd1u60.k"JD1κw41tu! FT~Fv4dM :jZ돥\<5{a 9@n?Lcj0_"OaHG FSCE"T5.]R4-%*P+TN#ÓeyRWY 7goãÒ5|Z>`yIO?нǰ<<_1i' ֖VWnϟ?7M3Ls?ϭs?϶N76 H }i!,hGՈLtGy $=0i x6(nt@Ed!3T:2 TlPZg7CŞzu7jC*^!,2 Yh!5n2Npuh{,c.DNJ2F7M?>j os^Y/?r<7FK vװ̯AgS4*O^3]z,֗4~ᶣ~LSQ̼5;4Z!OPfZ,Cf豖N'4R>:*m$@hPm[jDmcX1s9xx43)a~w|}̗-BU4`M? j*KQ^ r7U-gXPYT*2)y&uXdVʛAZjP괺%>Ve22S]v/NILu="(nVfeZl/,l(GM[>K?Bmk$k_*aF.-X' \a6CLBZ(ԤnۓT*eh FD io{Ʉ^0I:|Tdu[/=8 } ȧB|F^xٶL 1Oufm5uΑ^ `igu }TܼU` [N)7U*iHi7nmQ)В-#P"B{m˳SZ;mgY&L \շJ3I'>T,&P/?hGԔDa#| I֣7E[^v?:p!bY_ ׅ`]iWT5L` 4m y6Rvb`2qh-gG/|[:c*ҬAEz UVk~,+(v0O|wM c?ZM?_I9c=By<ɓq'legjnO)z<N @pobb;Q[驟وWhTQٞlTzB8xAbwbua"7U 1iq, ޿ifLzM`],@lZPM *ʭcR._`hi&(S(jѸnvX?&Bhy:p{R1C;s{~(U@?Qr \xW=e)EX+t: `"u\ZupԮ4ʨ0*N3'n ZQsoeui%k3&?YL;5=ݫWig_8Q><׎8Gp{x^cAuyxxxPq#:<$W?#9<$/|?lbM qP,wNjǧ$l h|4S. Ϳtϒu/ZI `O60%yL>/~/Qs~Gg';U:>/ L8D``،?.vF@!VoDA|/gΎ!>b?^55&c:.1geF !Ek@Lʔy(|gd35Q1±Ըb"^6c w3F ,D!F3 ~Aeu<   Y3箈ğgm(^|b;jf{i-@ ` fv ~/nC}^JQv?V>8yJz`=aAq6L}bb fMɋ[ B8Puh999|/Q@f~fr\1I7}Վ9 }!1Ő\g 9%nW-@h[CfC;M:wYY4LgTٌ1yÑ?PTɜIZ)I0*, pvP`8T҈`Nl`al)u'=eO h*mU"B,x^v ټ+SnH"Ɩg=-_j3h1"7WTr&WLR~"b@)%}V~fLc̾ɋ_: +_&0VsS<8gڪ_.ǎn9\Y)nA%҃ u Vgn.#6n' ??????????????????2s[