#!/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 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=27ee8ced5740c79afbf06aff2a2c8bbc # 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 D\\[{s8OLv#ˏ$v{Fh78*MBW!)?23WwU%Fht\Y>t=ßم;w~7?o{@{g >(B~Fk{5C1+7*lwoo71m8 B+vLj4b!xx˝Z yFq̑YgϢ`ڜܸ>aN*s1 Bc`2 wWY!g3N8xl6ܹف(&l#h J&;p,[ +n[|%uBLصy(܈y٤BAgSVf4:sϑ:\ &m#7!Z1]ˋRӄK ;56w52)GR|q$0 @vѐ`@O9 4 b΄Qrk(whX464uB4/_Zn0s޿4߻G5gxF_\ezg~g^۟ uzLt`{v_׌*ۍ֠/ Xv)*1ZC FT}J Y_ˏj1iW(8}?ki Qoh1ku RPf_΁ I{zzn_+0נNL6uz1ʮ/5xC͒ 4gɠGP$*+kk-Bk74|A>׺U`t tLzq@2WiZ~͏: / ] q)OKTr}ۛНюCFQdtf28Yݾ˶6Zf޿<[}0N01x.Pq.4뿒tX|RCkA(67"ɒ34EYwe h?t4~_S`L9S39}ow {>B%L{sP3nv$ HCaTlxd>";7&:;CUY %dJp 2zSSL4ƨ`62SZ΂z/YwFX B7LV*E_ ZVd; W4MG WpҤx&_Hr~hv]]w_^[k)_&[@ZtId,Q:"&( VYzY9ig lLjjE;[O9m#]Jq\My~Qa?YNd{`Fl“KLJf FF,|1Q{UF*L Ł`<0KߺvL$XƊCG)PRLZ sA, er _1/ؑ,*'!\. +eylЩtι!#˨{\j|S0JUxNiZvY6 :$0)̀,p V$ֈg CD┢!"g Pӌ=NA"5P"9q.+, \j&h D9,4y3\o.\'wXů4eA0pk'2ij ǧU>,]tB)`} Yۧbv"mn,rL]Kd^`$/i;QT^.! aqVr+דӓͦQ8Z9H m ^WjY0㲞1fQl1EMt_Tl+ 9e[n K˳RiB _$ͣqMH0~q60X4i1* ? |+0!Ut5j~mܸԛ XR)[*LL0F"% a: Xg|W^XNd Lׯ郞f뽾X5XZmT֏mAQaFiR+e[()вCvͶh-bJrQ::i¨.6*9܁#C:!?²$KR'M,(:?kfF|JMq $e~K.pTCwʊu5U& (ׯd:%PgHb[=fSjdbH+Rrj#t[T GV 庥5\%JT!n[0wQb%ɚ{fhJ ,"\;'Լݻ&j7qNIB]B;q}.*mza[,n4@)>:{Or N<GU\ 9O-y>dv4ŎiG§ o/J]mtT-蛗"{. )=dJzc{LG  |@JHā[< .潻xTҦyEɆt?L]4lv{d %DؤrYlJaE$|+0X^Q-,[\@ `. D3 WFћwXH[68 *s&nywO]΅XM}a PNNHKR^>K^6"Օitu4T&2;2a|^CϦ²+A[q:ƿ35.6 w'S'Z؂oCU[GrpV[YWۓ18OZC6#~"wq$I-tFIэU"3h-w(pr훴)T!߬h:3m%e*J\Ӿʨ᱐Xysu h\+&p*eZMX g"僘 o GE.sTљζ@ oOm\K:eYyH]&ПeE;+ F q l3ZnT}$kTDorlN ԔO!-o&4֙.N5ejWd$XmsBg(TFGDD-DjZcghCJ+F iFJ*NE\TA0ZZd~T*}'YɊެ*.$)X.es{yujINMi{",BxIȇݔ;6X0bFCq 2WJ,j%Dbi>a8t˳LsY5gOMzk2l]y1Ԇ7wDN2J?-\(57CJveHX{̟[:ǙJ7Ųr~Y)L*X)D7 ֪"B2M3{ڲvg`[}B|{Dt~f&,sh6P]K dl[e{;g3+be7_9㓽CѶ1K@ywP?~~? `<ј-!ZDvׅ @13YQ@-{ D˾_r}h |ʧ^M1r/{U􌣛{{=&H,Yq[b d:Pεui6ő!vHg\׻&k˼Sr?OtY &m*cTwM`bT[ bx-lձK)'O5{"]bwG5/J=f-VY&w33-FuHH=_w`ȶNKJtP_-:Ƽ.e9s ]ڐf. ~Fb]'7)%Zk8%B\ː&RA,SQ}#c;L cY}ۍ9a@ 9D, Iځ-ezI\8CA4> }p[}qxQ>klR įZ{o 7$}9IeL2n'k8a:hzDL |(AGPĥ!?.ƀz@zMHFńוEF u%(x%>gaׂ"HY5ψ m-o m+tK3`xшK3S qK53kgˣ'ASdTZ"'P^.Pd@jA)=68#.s'X)ȸ^YR.Y( 90א=5n @BX B ʣ!A_P Y1U\W2hwQ`\1%|p޶cۢq' Q|&evRb[6V^KXp۸FzyGچ[_5 |A|ooۉ){d9]2(` o*C,}=QЅ3;uMD?@akƬ~؛R!`#ԘsN좃Q3 AjhyqO0 Θ9\0ʩmQ<-N=Ȉq u]ug[L£ZtƱiV![wyq+Aڅ6BZ‘hC N [r¸O 6yP0?@(']p>dRzr~\7B޽MZm1z 6:4bDKݒYvY̐yu'Vv?wD2rD0dwZ. B3qI>DDtxF>m_ I y.04<UUOpTa=L*yw@dIWR ^@# vW$dlqJ^!AQem_h}dVk՟++?o殿7ͽ~s7xEofnqO3H}e  }n~sI8°DXnƻzy\߀[ߗkp-.&(l&/HkrckRzE#;ӚEs&k&QIޜoV @͓ۗVVޖsvnnln֏|HDGZBGl'D Rgx M3(+^ s'Baцcn';!ПBꭱqĽ^(oޞn’ƉŲ}xJnxP /lao ] dLi()m0eś:'s @+U]W]x+^1n#<ك gG͟w`?M$jKyBu)<=~ts@{|7Ao&PS'd.OXͿ6NAc,=yG+PWc^z_[`c{Bv^?ON%a#-hý70RUK8ډ#EБkar'ۑhǔ#JG"5FȎdhP% +hk9H\ðT CE0DiƀuC Zxz؜FVeZ}ݝz:^L@eE#5pW ~QaCnx`on@֥6 ajD$ac:wF~WW _3SY"!3Ծ.'SRTՂ&diHq T覧AD6مaXt a7gŋ: 5$s*j&DmlUF+űco )>+^'\s.?;~6B xt y |`P' ?gF|EA/aWW;% |ZOz3#Yӂtpr?"*Āyᱯ##IB:!7$$8 4T?(EvP7Etl+=3C.7CʞY=Eh0-RON^[fGi"%e QĴdsv!&cLwy~.> vJs)~?Xh-"V- 4q4Mn+JZ࿇..H=ɿqh~!oTӼ(FƍNh g0B)'YeC,}Rs5f NťCɾQ^;ӗ';Ae9%[ۼhHF)T/̇WՋȻ|8!~q1$lGC u#Ĵ.K$l=y#ѐʡM۱|HUUnW!zVV{O醺v $*xQ|d7uP]aD')NA7b;:PW: P:e .7YQ[`Gjпzs R0Q%Bp8'38ܗ%y.+l$\4n!A8 q:~~:dgTX_.o%C^|j٫P,>#ǡAEc ]QΣ0x?1߁0>_<nrZ̍DFy -rK HZ?εmR6#Yj04{8m)#x=؆ #oj8p~yK*ݶ(0ՌUUřbqpln6Qr,Jg/fXgtR1i*o m S o<jefT<, ^U_N,) -߅8GJ4+#STOk/Cۓt.9o}\SX{C]q8^YZVm܅Ke]rwK\uփŻ%(D=B1w1pH·eJeŀ5i%jkE'y ٳ($)馛,Tlȼ$*l+X ESrI8vԹ{m?XϴPkM)ËwQ~߂E lپ(= (,A-[FZ( j䞱)j:Yɢe"PTH(ޯ-^?%TC))Gǻ6N떘<,aưyF&8*6.{A@$.nYȟoh4s"Yyݶ۝ GGڻ˞h+2R;qm;^9Jb1\?o_Y,,+a6:xg:-53KTݝI`jEش@u/uƊAJ/ cLC@j -!N^ȧʙb K+(S¼I泊Zu@raݿ+! zn>Q-t wOFBL^!; ~ga.XYY:Wq»$-¿_›ԅ3Mx2y]|ɜNnL'lm@*v8r ҰN P"k.<N(ckxH8V1w>ݙAZ XO~F#0zWe nY`&ɵ736[oӔ 8hH6v*nng4g4g04 $xx0GZ\U+Ohop'I%0RB[U+ٺì/-mo 9b{6`ȞL䗓wu.\‡Zi!1\pRE,U3dt# syY-3m km "p#鲍i85rW tS!!SUZ:GM~G``5ekNqUr;ʬз)u3k.h9G'ABl?W$.?h5%O,e5`ל8B-W@9%6+*fWVl憴Ih%8%{XesʝQYN]ț97uR1RiK;ic:A`u'&scGeCu5(4 i;fѹ\PYCrvoĨ( f]R{RsJ(D6`MF'\:~ĘLj36ep-=!VK<^pϽf4F!2*LbEÞ@ @&5(ъ|GtwP) Ѯ#TAPx_,D}(b}qx| }^ӊTKjiL'+Gȯ:Pd (X$@" DMt3C %ƨyR (93$'.sVy*9Qɽ4lАؠKU]u9-RAU&4k3U:eۄC?ǜDv.teT11LCQAizNbu C̖ahW3~ o>KKUR['s7s7f~p ~9nr#B7l]/& 6| 6[S \_f!%mL4jͥӵ!a$ W hqNBѾÓ] svp{")D[N T֊޼dPFѹ-@|Qo5J&b.O:\dvy]7h4BKGŕ$ 郲 (P"K@g9Cc`.QH;hۣȀR$x^y*<QSX SnU dg)4*s""PĢNH": Y e,C%}(bCJ2,-v QQM?,R//%7ޘ9MiF͋6 eH*6eTw\Aq e;UٻڞTAEqF iD%! NջL [Ccv7d Μ1XYG`=E*w:ͫvPoⓢxUݮ~6[ANDrfɝY{y7d&aY<C& Xt܇x܇>ڽҋ OFoHX֢i'#b~-ŪV~r}#1WVpyʷ%A+z7 M;[k~QYq DQrR_sEٲ>ҥC;7j:MaJpFa~~Lod<}P%bjj?Z]q1Vui_"k[٩Bڸ+yI!Kjؠg||iil #kN,ikN,*5kjNhstbլfm[`%iA҂4.Z+*^UyŸ ' 3I@|[Wh>El74=?E+ꏗE9 `-AALzWew4.Ɨ(2 xgZPCc3h*͞vG:?D&Ύda68Zp1 _Ē+Y*|MBΥ;uˍMOz ,#̭0ݸM2saF~Y$ЌKF8$ k2 >%)C0{Fa#oJ湀nztZi-N28| -%6kfAqvx=9 FkdPFv@;TE28oL_1?r9ŋ7b|r+r+r?=IՂ*V ^C6:*JT3*P~mڈdXh`Zsԙင:JyCTJ0 +͏;GB!Lȡcf0EXZȰl:RwTNf3PvTN;%X%"!H)O+`;:0 #B{)A 9&7R>( u|V T6"t茉Y[cxZq=Y>(A t1aOTCǐJf0bk"{I/@wƽD!rc=rHG؈ T6RS`xF2&d&e=+^Cm n?hdj=V[V`g(d#`O!LnD;Dv*au .f%O(ƻwI! ֺwX W_t^nHE}Epb}#a7I.쐠ݪ̷<w([k?8d/C!Q=%0/\t[KM,|]"7a  _DvoP8xHFз7^f@ę&Dfss)^Kء$y{U`&ZH_~+pNJ¨_׽ $G2#tDK.p&R4ſ(jT_jn7=Y\l7R:\&& [DG{PIz(M}l943#%E4 qSSBYbp ?e>HM&U/kud16E]aK>,!^i5u,yQϧ ee҃x0FL14l͘}n^j4Ov%N  ɲDX< 벩:FŚvйkYFnf3$vC-JB ~k0L"z@ ,f\nj"(jS^@qaQLAxU;ưQ&) xK43*h}='ax,߿xE "|6˔lS7+XVϠ V dce~}+a# ض|lo#8xy2([BWq2~a29n`m8H'Cu$@$IΛG@> ;:%#=Sh֠iFvع0a);DB |2z H?`E9mĕ%s b,ށ3/DP0|3kq5˽!SFk5=actM9]|FACaUk/ɢkW|=uZIhuȃPpP'XbdG8EqlDkZ-T4{'Xt~S4)<Ț:IP%(j/:0e_|<$L:I\3Yڌ2hdmZxF U틥u.C$ARUjkX(C5"0DFxn&FRm%dzoSRݘMl3Mjb3ícCf5[fœfmnnln֏R0d9&* K@AUXA˧{[k:#"_$k߻Y ΑX^%U@1hsM{<<;SA jm(~~MxfcsP#byeű,'s;s;60f樜'K)gSfx<9wOS(T_Ŕ IVu @Y6EL&%[[r@+ez"&嵴>=3(UOOuP5V1 __Y~{ef%~[f1كbrT5{sЌq;UVזӫԸR-*ˢ˥e+(نn{oA ~/հ܎Q'b;x2әYU?TGC!򣧫ZՕhdClc)R 8u/ڗև|^]X?h>oz~_?4G`YB`!0"V0Sxe!IbKƣ@O|j3rψA"`֏DwOZ%pK]|ti=%?X\t/5G XTH6"%2n(IeʘT??[m $/ KF$Z%OLN~ f,e^C1̰U7JPˋm4N'xLeuv"Gt`hQC:8ED~ 5|G~^?S<95k;_U|iK59d<dXDa"fmI\?&Șlp5Oݠ=Ô7g xOT+N]+=Fѝ9w|)I';CD^EVs+/sMɍhê:Kމ ^=s®Zzw,2åRDut 4t>%U1inykr]YEĐ~ebw^F#MhH_~j_x O(V+QBf?;}*2.ye8pEpyI :XRv\GokRbB.\so7\ tqDJF.Y9,qwmR%% 0[vкbb .^mN#Gm.O^_l6ʞE+1׊ã\,࣒xPN #AG3SQS 'wO9iׯib9Vg c"!N|ak/~qFK拄+)1"DV Iuk (s#<ط0j4BzlkiV!F ͽV8nb.adDmfNk^J@ Ȯ¬ċlaY: dy1dHY7V9{"J;%_T>~=||eh-QƌlKۓ~'TfED*wb=Ρ\%R6\&fMxC5AغJt+FiONũ"Y$FKТVkca*sI1RuE"pe3{7T9k I|I ^nxQe`jA,i5/@Jۭq$Wܲ=А([+H6FdQ AP{[gR>&]I>(71:f}#95L]dQaOԲ+ L)h[!g1Z%#B._{ׅrP࿂`5p%G{t \jSD8ieXyq&ZrКE 1;nqLq3gcDuYKІ (ƞx,08Yk QM]K;"[IOSqsGEs*WaB6\>|VH֥Q( qL<|@59FA ۹/nmwOɘAEp^m#FR{onCӠ<1BࠌD#5oD[zŒ:TpĆI9BJx5`;x k5UMo= Viizt`dgtc!BSmHLN axNyÝkmDXh>QYg={Xl"Ѐa&=r5Ũn֘"n4GmT R.̢a^GjTݝcKN<9F_OHG zqͫv)??_3!" s*.)}K+H$XP' $ss!ڢCޘm :|gd"tP&rYup@"dG鉛%mٷR!1@fc͊4)h.vLZ"Q0ԉǰpX'}}Ɔ!qjk!WsŽ]/?,F 㞇SEt)S!Q53٧@%7 |fq.W'QV? Ksw'>ٌKْWhVR3i>J]Ā%d7B0*Q !|s!oy*_ ?M,Q|^F^^<HݨfqTHgUտ EF(N$r^)(PbW8+0`u=M\̬0W?IC升DZE&} Q?kb.JEtovN| 8EِFհߺBەij~UeLJ}'E68(Tw~nCK[yF84~FFYt0Ϙ wEЯ@+ڬ ]n[jgh!t @.5DTR`7zM["N`kш<Jl%e|#dFa[ Y^zxд-=sIC+g1nW Y\HrKȭ*ӲE)gI?)&%GvAg,PAxe3ŗru&~GUv#qtيXEu ; Gʁ PUVwOU#EbݹjCmf_l&Y;8pbPM v4GKF֠`\M+ ~k5{{t G4엞d $iTJ65uFتz/dPtv88"[V:Ӫ20fD cAb%V 0.j1OkTopе쒂=6  ,ýݓƖ@I(Sc̾]79݄"YA!-K=(+^$f C xXj(=DzL3L9ko_waFl`nN};ʒxCAZ}@~+ߕ#^ S] @1"; =`T+߃gz:!0t5jP4^BWaݡ$&" <LܼzwMPl[=깁,B?R Cy5dݑR]O+*IuA]yC\lzbxcSJe_ĨdI>8 DuJ816˕ȹ|!K9IN^:uG`xŬc`r,XwA|W6<ȶai@|@qe(T#^"_YA^b)Rw6sqEģ!&EX?зQ?=pH\Q1uJ7rLxuh8D @&LklZ's ɩ'Tz½U͙P c20c3h<(|hE7qF2})~xp(LTIEB D^0,Q7/Pd ub=zMh =P1>B{yT:;i=pӥںB-I٤MLL57v OuO:E-i$98Ioc20"-R&qİz,T=bK}MI#o I: BADNŲ5NԱ"d }t|&ypu 88q}>kLV iGin=w"$#Щ#q.a|aHs C{XTR8qĪ/4R0T9M/5[!挭jYJ́G,;OzBv^VEn-a㳸6ٺ^x G$%YsI<*[aaĮ2L9e E 7qydGWoߜpD4T0̳`O`pi.ᔉZ vcıq݃cywGrq|zɚ̔j8lǨ\1ή~CAʲ/ I RyHmTyne0c cFr}ؾh<%Yڛj׌ h:|Puy5qRm$cR*9O'ߴVɵ |l$?Aʣ hlMI, :'.߶4w-͜A,vw5O֭Z>ar:(d\=}&hm@9XeȲ7+?Lsl8b`İkH2;:5'% H!2Wթ+sx. n?v@3jaXq9ݩj"m9<:=HKVPH畀($ـ j6LQ_EL&ö}f0D_|S@(V[Lno6r'ܹ$[${S 2)eG(V ';'gU$W ؇6m HBa7?E3{9c8}FG.=!`D*ݩb*: 6΂ xHIc"fLҋ^W}h9%ǥ5}v bufZ%^~n2T\vYﲺ l;{ gxoB.BCNAg>Vvl5gJRWq'Z'2p_Ww2\(,gĽ鶒It{j^KBG5B1qL k͑QTabtKHH9PggFea$<(4/HȎux"G9"$= j3A~-E(&FR ѠL?7.Qm%.|<)vElM СhyFB{7`y8_Xҝ19zʵOUE5Hoe>,5Zfbl͆$vDמJs}Jn|&IVFOdgW{E5"T; bg/?-'y<?_0DqO&Ps)<.v|C^$ o=k$}Qw%4>aqv FqN6qcQQ*mo6bI]u7}L@Њ'a6Ma  W qrvse1D/07~ュ3PBYWyA77 ~Ģs`;ۡ[cp눻 6|D/3?8l͈@)NI%VP"?pJ0˃ _̿p׼Xh+VͨgxPmq WUn˕(28s"58F786ҦYDj]W(Z f3$,G!g9}k·&}k7eۙBB\N`݃ot3^.f`I D4Y/ZGd!3.hS%0]ex%-˶"``:Y7.;B&U}5E'N洱u dVkI",)+]XeHkLj*!,d^؄u'SGl}tHZ痷C k+@)",lؚ4TlVoVXA%r d,տ9 &HEOk:I=Ӂ8'MC 1?ÃQM& %W&6}.~oϧ$po_߿qVWֳn5fJ}>h‰U5Lv [s shgߚ?'nۃQ-@-O?H,(\#_0{Zyda۽w7SJݨvFw jHyjOCT;GPv<}]:t#(9p<#h8>7>zk7>r#6>j#i6>bB8uEAxy{tŒPjg~X)Iw]46eu NNv:T[ezyE;~|xίΨj ¾iX{ :w1 ~p* ֭7t:̵,6?,,DHNaBQ4|v ">,bq0Zɀs۸xrT,A,ˉ#݇@݃+{b gaDŽ,\G^Y&r6^35Q07~0BXvbs@4IV/̈́1xP\Gp GZ0}Q?^jbV4}SE}s`ފ&+"Q5b(H.[ z'nn^T/ OO(dRԝ<5x00UxGk6%3hLnؗAyKu(,{ZzU?.r/r/r/?_ƤJm`,`{}#W7NtIӸ=Cb!Y% 9y~4_6й3g(yݬO"&09Srp'3fo#u0CȎN'ȳ^2tScptPb8TӞß9 ܐC|>z MP::,{HLM|"6_ m%"Ăua7OqI'er[1^֛[3x8ŸD^rJKpr|+ds2[G,5Wx}:8S<8~$ %-0pZP6&z06b1!Y_F,m(:4O?'O?'ܟo0