#!/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=fcfe5636298a9d6bac596f407b56a466 # 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 "_[ysFϿ䧘(Y)![dy-9l C e)kg HIq,W+T"st5ug˿O ֟>_M7}c`~:1Ӛ%W+{3 AhNWYuGEhs2q|+a 2,o ̱Zefy9q̧lW/ >89Ф@h-vrE,%8c! &+&u) AؼN\#0uyHaQ۵[$}\B#[ɦb?̳b:-9/6 @.wl[',GpHhFM8  h$3 b$ S aTPf쉂YDBI&!T/$E$PFo!NF?-^GΚqf-}0dn x=C@j 1wKt5S7`F6Їeftq螖@nomc0p+' |6^mc^xbIo8 o FFsn X<:#ZưnUXgzwĆo*{D@TZmM˷&eWDE:10tV8ڽ4CG:;ZC}pf4kiNX@3 3#}0GF[fwg[ͽ.,dF `؇2{FG8+8 V (; +DՒVOƩm#8^¶C`! Xu,fQ'B\ʌhAJloQ(vД:8u|Lm9/񠩛'[u΋菆I[,!$m7Zp))vaitrnJ~)]Y+)Y v{Q,7Vt@!Ό㺻s/5D圍kCN'Onƞ|MK{z {W<1{>0eRA r^b* 0= CpL۲/x |_yV ":/ÒϽjP,_+#݈L23Epy=]pɅp6+aiwpihp?0ͪZ\b L+1{iNebK\lEK;v|S/|6Vi l !屝>sDrr` q"+EάX]n E*p{zI.3~pfWmVI-"Uۛ?e`Om?w'{?ųSD>P?2_",6]X.{=lW{ulGػ D΋2 AHpLqnBrY x@08HPy*i <ݐRU<<"lr&Jgqɨ60,bz"gt$ۣ9)ynڒ4fEgNGS63Na8 ʝ,2\ĀN&Lf 03Fo(<?J"KP7wJXah XI,lL+@4'L/3g>Uӝcˎ}]@[+[b(iT8J͋j,CgEn_Jb$}eEޮub+Eq~îeϝZ;/=mꂺ `cR6zSOjؚlw_8oZ18sg)A0XkpftŁb[P Ob-uZ6zE0g3Fc<#9jzV[&Lq{ d5dN5nY:ݥdPc vm}ZP\2CgBOSb!*8!{WJhY zd:G|YBQ۩LS#fɀ}g_pS5PxoM2eᷣZ};d("%7͉_|D?Q~xT\$gFksﶞÃe gKծ&Dβ,#KPXM8&~0geah1 YUӕg!RV^yVbctm\'}-fuYt;>H-?<wkQF}, \ ]}V;*~JXssx9ͅ|*0@A| os[&C ߧa=2'7 ㍒_"@J85I0#5£j 0_;Ԟj k݅&.' $#w{*ǞW9^9y<& B8$BЄhbR>Z./p3~eN<0f,V$1[ ><;hJ K+n;h@zQα#̑2ydnJZH:[_k/?-p9x "Mct{ZMtn5W J;cWOT3(!~Rؚܙv|vh$_Y e_/o4L)K0& +Dq< c 'r,ׁj ?'-rj{iΛclݖ3sхIYۖЧ"۬g*xAv/6%!vaCWښq-X[_߿i ʰa>==MZ& l:8glb=OG 糽' b@Lfړ`B Hh$;% +Z/!<3j⨄WrNˬKpE q⼠-ғb[RHscӟ)|ήZkMI]" >)HIylh[ &/Z(j/KhR{# 2H*l629mAڶm[ HUVB. qyZtYpJ %5)Kb6:c?˗LӀ%]>#[R>9)fo\45$ <jِ7i8KRHf6LiBo4 t Qd5E}M(9w8gJeѫ]׀sK/FZq6/X@f4a\M"xdp.N\bbo5‹v&= , &fj$b=yV/ASV 5 uNT2ejs+/1|/X"RFD?+I*K"̹ROsD[s%n%ٷD Q}wWđVO rY OIqU `|t))S 5D8b=;f6lq.}73nQ>J.$$ wiLܪeOw#(vG3rRݺͲ8A(ܚݏCY~;HLRHmQ&N݉v6L.\^ܷ*SVm:ci8>Pps?#T,ȾS~96+MMYTa]rU;K% Shү_d.[r5ք/^ThyENFP9`Ks(,eBΉ401KM%`ezdu)@JDB0Uh$LYijb*"Cqf4r$aMˍb.o.@ y,\@sӱJuZd&^)Uș[QoT9o E Rfjh,s晕axHmc=^~u8)VsV+SNJl.~n<|=߇\><ccccccccccת^+T^O ?ىmt?%f+& |Z|Pfu&+ʿmqq\U Pu55gO2TF% چNVK%XVzj߲kC-lE8Pi6Ӗ@oSߋ'eLmřBr2HJ.mȈ{YSs I6U&O0 ^+WA4)^K7,C#Lԑ8)9 !іj)\oB-.{#tJ~RU p6*^ Fj6zc$t/ d|{`{U<ٮ,w!|Ea iI)T!_2+VQU$ mG$1.:A%)K7$•ͣHXqxl P*qt{^f+`TZ;Sy2_;wN7w*US4ll' mVR*]挸a*].6A:`i8}߯_G Vc >f{,vܾBj@AKR{Ud4,uzj;u71lmlu i2 A-5a/g"pOeJnj:E'xFBFwV1۾m_.D"/,?鐆W47R|/R 6X"R#6Z_Xg[ZX\jX[ONkuλ= 3Jj‡Qi8-ss좖<ͧ 4W7Dt0Bd|"9OP,tt.iC-Ӿ8=Wu]*%H0*U/d͡Ri I=y;b2l}K~6h7ǖkӃ}2̬I+Vۚ(16x{)jFh-Pl zIфIEbl8{fjQ5wDӆ}p읐ef"36/8C`o"a$^S WI';Ng Ds]=X l |؎ͺڬb[-|L'Lbs22@F3% r^sbh[r]yԧUhLFrt1*T ٱiunmhͻ=6lqak'!v돿ELԀ iX8F*G yji /%iP#XjI(FG[ҚH(={oYH?%#rgKTɓ"MŬ$Ŋی(DrtqtA=-x=ߨJ@?rGR!D9@'Vf&)([ VDGmJ f4R~kۍvg,w"_Y+pay\g cϟ7cOӌ.DUsZrdF h$5̼6/>KHۈyW-jMu i}F|HtZ ao0E|랍KtД?˞7yc 5L*J;iTQ $::ݛ9z(^'8`'hh)hĸ6F Xʰ)0>?8r##D g&BR>ѫip9?Ӂz/HLĂᓯ8Y6# &R<̝~k@;ȾVs=~%Zh3СW~_8&aXEk*K"Ǻqhu iȐpQj]a*UusHAe=AxC~3~Lш&-a(Xj-:0cچߟ}ӨաZ L5+.c/k}}X|Z$2dN (hj#tYam .JJ 2š`&(B,wux.H߬Fx˜RY rR#77? ,R\:j@c5 f%nmi+GD"[If}bgVĊEHK,y*.|8ই5Sۭϟm<|iO9=7L'b?O'o`?eGrCp6(G <(Jb:%^9'|[#Cl ` qBݖ  |FUhR݅~̯5OmH,;5* EeQA%چitgz EETsE3 ޽6Ѕp rx֋j^D19YhMSO4Mr %$!Y)e]0i%8fBN-_?iŮe l$mһE;kUVA l5Pm j 5;ICuc䠅e94rQ>bNhN^v={ EnI? 3*#級 'Dσq)ɡd^IkC-s.tġ9Q0f)~nF.ȤlHl3ѯ6.<@h1]Gvu~^z?*=(K8NI5;WN2F dg Ir; ~r(פ{5H7* jPB%w \DXC1iv4k` i`'‘+kv< |I{V3ka@dXOpJگx!0_njW\<ޮu ɝA(H*YSgE@M&9Ld,͙c_hjD{HҍCIu*e]`hNSs*Yslm g1erAWn3œz4 SfzG&;\.2̪ʩ}TD<OY*1}r=|\nPnWV[eg?RWN+PqoѾ4`&a wJ@\}CBn/&~f:s$qasqUԮߜv3 MGZFYY̳)!Mqa4*{P/ 4\q3xԞA"LW\k_kj ۋe]l]H(v5iL UP.f^k4P`[^F:V؝D9/RD<ɼوMrDՔb4E3vopKŨc+=lBXq -SP+^h#ST]ŘcU#1 xoӁ YjG9Sd}գĢ$#X!%VITs]8f/-=Jڥ>EDF0QʅZydhNO3d&gn^v5V֌`PGGdRh} ry"R\ӭצG %̂KBDKk߱k1E. ;] k{onKV w<%oёJoՐRT4C] bkVo Vw KPWCuCz> -\of܈FK)50 A|ԷT72cU#r&Xy~͇lXy'yO%SW@"ph*@} urd,GrqtB>f[M`jP}P2E2Ggea4ohĺS$rÝsE`@Gy&2 DH8˜znZG+IX17M Ŷ6 _C\aT#FolcðfN+3\d7=p/ArF8-k*G;o)hHY,08TzX=9&pM$QGe OURrZ*KCZv:*yuX 5LuTTyRIќ|, ;T*VM(e m)eu7Eȥ)'#u+ʰ7 y~QV ۚZ܅Yub(Č 0ߥ@h\Bn#ScJWj{*`^ogK&P C6ɸEȴ/jܦQhp.\)#up|))2aCBba)c' ^h--%kx捰 o# avӐn Ր}z`h+gܟXߴ66lL5m[I&W4p2~`wg/1xޠofx/Ä(Hƍ$+f+0,YWlYpDC$(؅3?Dm1{hޒZн[WX}NwCz=s|a+Nr{Q;%\n`WLTBPI A\Q(j6pE"&ѥvҮJF"ri;5W,p ip3EB-[|T7x_"({$}=skVFKLR%[1/@y$dN ۝ykd_WQ29z}cXL\SH9M<@] sgplB6bًV;{rعSS gVFDA+4d1a.K,q78llGZYFVR|kw^(4^\YEr3X%;>K:#;r)"%.0u:ʦx6j $H"j$BsN(9R2J8jjxgt5~srH%aI5u g7X/~BM4kX3{!;bu&KKnzonDWNpg_&U&74pg:ҙrOW݊ .BV0_[9(FGZ$jb6ZI%^U.셆^Mz3U{-j2.YJLcb92 eoF"XAn>!ᆉ`yABvc9ʱt~*MLk)],;@agl1 &Y'v(.߸4>ABZu31*KiA e7<~]Cb;aO6Fӡd)H6鏨2+sM\?JQWeWL5Y%Pբ_բU(ts}/ U͋fŠ|ϛ5(n>M;ίX[,[PA=el"L OPNt:w6{ZgwjM1-":;7^=K'G;kݠzDݳ%A萓c@>T; I] zˋRI9 SzY` ؟|ɜ͛p6k^U׉s܇j{uTݶ7~Y;SGKJ`B8g|c>wsՒO{Qvc' ~jx.) OergH3ZGə+<%.¿^UՈs V~X7vǃl9b6?Zh t24=-:nT/ ^,nYq'>Sa2柚;_T|aKszx.SӛDq"Jxg"cMkqk~p5Nm ^9G b2[DC3JvcgT󝊴uY^hlSOOQlyؾ9%7hWQv7J\"OVOxY6 .i޲~zJufnFI}5z:`_`18`Wb0hGaeϤֿHYɦ<-~X~h|"b1J(GnY$&=Q1s$}./)6 s䨺[8(g%^ERK/f'2>낪P^T;K {RSUOhM!Tw׮mӧISԅ߁~[kj49N{s]⼇:ʕve?-]@shNX,\<ي6Bf_5ck|T~'i]^*Y8WS[%-Y6w)=#l;w>! B3\ѬY6n4A+gZ 33gڽili>RЎFb,=ONDQ&l9Zf7zdMS4';0TTw6>YXJIw{mE1I0Y`*pi,_DJmmId5ix8p Lv9%ҚLYtR5dy\r8 ^B&QOz}5@f#{p0iLllmN_QDZH+i5L!ad,j%bǞPG6@FLڿ}nx]n&I}v2 /2rvsͨ0pntX8 tu*cݐD?Fd#(=P1 O붿=تGj \&B~s$/OP6{6bv5ZÑ ۯX]d'fBQ}"`bOע$$RJ٭yF/c (CFKwZ:}&_C V4QJ[a7YrV㷻lJۇT'Dy RȳAO~l5"5cpLSqv +g݊݉O*/0H[ȗ{)b@^oļ2{gG,ȿ\̚ݒcwa?-RQu}: gB>ջvF^ay*`OFWkSv]ݙ gU >,YEwPlbrTQWyQeV|I<C@њLΞ)s* 0uƫrmifM~{p׍ǍrukgE9 ,u𘚪@hXFBD*GrVRn'LsgΌ?fk`f rǢO׭_DpIJIwG㩝:+,/YͧpcD#G6(狮L'{b=Odpˀ6 fg5^z B<ZX*|F`X~Ldwڞ0ل yíSG,}n#-i]uC\i6H _3"٘cTE C9G[fUc5KNe j:gynl+ jz]OskI=z·# 1?㷧Wcd\4@pYU٘zZWݎeË/[Oﻷ^߬ӏp;Nfp |d6'?bVL(_laYz2|D3L?D3L?D -- rhzgB!6Ms&hnl!0b XXu.vXzŨp(Ql? dbI `Kad1U LR1[ZKYiv~289e=N]B41Wʌ 7^# L85*SZ5^HB*tJzēz3s;՟DKDA\ *ӻtWUY8KS THqg(؃'Ɨ@yMSN886(IW&XE ~+C5;i:}2-p:ADod o:}I,_-H#ތSn SṆs\6pʔ7ˤ~R5*mrɡ&!&nC6 ]hҩM"\p!="тpTtXxnnc:kp/\}$>%ƛNYh4%Acy}苔Pck^ekm(| 吒Dr+h $,X]b.蛿 z{˷s +SG*J?鿢z>kS羳s_c)O]>)zCܙǠZd>ִvו;h(?]AK:-_ES'INz:=򒌉QʗIXDT /sKoGfyGd☨l=wCv\t 6/B7?.6 w]'_Hn~7a->1bThg@Vly7tjMQHkrk-x@/ t?8ɬNC7b5D;;S>"j_5PkWPGEMP5ea^ pQ\5 Aik rVdaPD2O90 Ehh0LT!trYh#8G:8Y<$ ZhV-;KK Si<+TMjl|ѓϫ} 4r&W B-W _$C(  }Z;t1,y䎠r\'(0ҤFSZJ;N/CXS/4wj7K,@!g3$c43kpT 7X]^^jP-)/dxܖ{w#[.]NBPL;ql<½~{V\< w34v'`K:ɍ\lj Aau〣9`~#f螗&g71/+}[I#p4f5Dx5aqȅK!l .]!7xz&I&cSL7bze!C#5đf di Hv|Wݳ։6[yZv ޲>. iii! NW'I|)dJBRi *8N^Bzzt@4Sh.矷Vxz wVZG}&?FOϰK_кy-d`GSDlj`a٢Q\)}4)(b4Tne1-4qѯE5!s:6PF خ BT3yRZ!ti*ا2 3]pe==J4D ;iA c]7͔ځeQv\7= V'5r΅lJn(]_a:M =BhMBfmVjF0m<'蓅kdٵ1mP0*ǫw׫b9tRUV 69!L 0xG4K 񧎉a9z%%a"s?5o9epn.4E>ΠYQdPs[EC rtup>q `񨒁ܴp=IksV`a Wp\BBC3 L <iXCnU rh{a֠gǹL[ $*_DB;wjQ~yV^4H>g ęK2Ϥ,5'ҌlhUˮ [0~ҢZrUN3*[| ̿骷q\[J $C ꣀF)P.E6!nFV d3nqfmKWUgN>{1wqy^\Yy6{px}O'^OF=8ɂ u_4As^nzl?9$ӏw՘+#D9x_RltޓdԮ3˙Enlm=XF BQɺϬb%`1.2 UyC#.vqF5Tr.^F9g)7?,S0#YR/ˉZI휢aex qu5L0JU+^ ¼ݚw;[v IL _.9b.m_ÃPxf;vfx /guf,^8x3<;Dt.v8hmKB n{%.Ծ`SF| 67Ow(Mvv01b&Z8eOÃbմg~aasdĆ x& 7;<`ɴyxzwwz>JЃwLo?oaVh5:͟pB# $3,e؝؅yaȍD Z;h :q*_(=|qyDr__-]ƥ mK=ݘ@Tpee?Eq\ wJq(Esjzm" O.6qQ5,DV}]E!yArE=txl.:\Kl.*RᰂL,?f>+!  =Ol\%1M{c]C85}ș&v=@f8 iË tj={W 57 a =GC2#_k4onN A^##"hyF:eH{Z8yB|A8@zJƹ%G胓MlZ"'k(<Ɠ*bq HfM 4tXT$:Kƍ] elwl FLnw_G~Ŝpd!{8nIo &Is0|!?ë5@V"Im]GB1}>%_`h-/ⲍl6NaoRCUDO)ԍ4V?$Jx$2{ 6PrvˊYy(0UcJ{V&KPF*/5>74fQW\;1~V/;A`Yd/ojPФ+Qrdy9]Vcؐ2ȣp )k:wׄ!!n~' nh WSHHa .CxEoυpQ,|mՏ> UpbK%ԅV0\tmYm>%&JqrZ7? 8L>Xy9!6g\zR(v4 |LR}&P#cn _b),.0HS!;m){QCC ϴd~荱xwF{L1`>oyi~Y`ڐ 6oQf o p0ܝYvȓ*ϱz,k=䆋}&՟7B/.VEz"<{mP6Vv5f[Lg7{~,$_ޛ? i#T,5)ґA&N{hVzT"^uZ 6;}cP\{U Ԗ/.}&bITOwG@c{*7>;.*0N)e"}HOA1G ImePj2O^ʽ[b^Ñv JOvxB#X Zg](6֥Qt*xIyMɉlѲJyqEQ,'1'lkpsl%p&쥸לų 3ᒞfv.ȘOղnW f-ݠxQE%ώ#CB_Y\_^pV&?3L&?g3{#at?w!_,ހe2nBkKۅ( BD <&MA$>av{QrD@u(&jLn _0lo)B0i.x[ϲ`uFI̅xgcizzxm6'YYFfXt2, ձ2, oSH;譈b!nfe"H)&$a0zgց=)͗g\)j}Eh Q56K$4ǻ)[Xa!cdl`;b1[gA49X@PQf&2 44\h62FJ;Ydfe6)&P^EKn˼Vˎ3{_ŠeÊ"&'cb oOnKsoBX+R,)P -.oIp,^/G/̠kh#4`#Z*Rt=$Ts]Ԅ.uޒB/ hmU_ndzGJ]d%]5v0 r<vÖj`gmxjcMPci=DկIz9b^2~g@]#]Q2W<* >:;W~s~m˼ǝZ"5GHYYvӡ4d Agjfёq`5~EGs_Õe=״k+^\O17KL1|zooSįcaeY\|6DSEwV~%iln$H\X!$R+N#LtFR "FGXYLJ~.=`HET}%g4+;U  T9q}eK,0Fr6zkK1x+W֍U,ˌW,&XmR7TH9nFQbҼb܅67%!+ 5{fūaK2  FD5Ir$7܌Ʒa.z#1v;mŭ/tPpP5~u A&4zlH+Ge1oϡ!/9Fx'zݫ qNVsp0Ƚ]l2<7=\h'X\g{bZv5SЈ"̙N%Y<m;qdkL $D)k.40D'h13r2mkfIyk^053eYDz8[a5Ɛ ^_lxpݦab e&5SmeZ$Qmw%5mfɑ-M"1f n1b|}nTܵɹvϐkFg4O3E2+w [Q4'ϋ 3S{ d oe^𱢥Lc|ڃYj(;/mM$A"rQ`ج_c #>_z^~4ob0XM&V?JiX{Vڥkʯ>ᵴ=nׂ&} @.26vo,`rZzILXU|V~VGD= ;{O~v*U~$$P7_AyrXmtV}8Bv @ `8s8J "jcT'}et;;rn a|PϤYr\"&<.ݺC"<-)kn'}ȁFeB*sRbEP48&~Nݟ.0`O! vҥ8GB$hs6Kt4診[8ʆr0v,E^U*b&IoU a3 q=Ɛ|Wnǩ[5k ̂5I>E)TދDLm6FFAt%TvaKDa- (͠A@V2 gـE9#h-2mG9Vq|8zdZB~0h"3j-x(䤽mQp@rCT-c̲P*U)QfIr 2mi2zQ|d5e8dVSSln%fWcy,[(SZ,GKe0 8i]Ug. .,-kG5]&+BmY(ذILMU^om g(6H%– pۀKJ>NTƽd/$Ql(>>yC}LvŜ$4j$Λ!ɧ= 3P\4{ Pg>)>㦓wX{"92aScKNکhUwE_MD=Alc&%r*O <$FRLpw?ʊZB ZQXQgTBE\1Μr*€-Y, &6j!HM{A F8^&'TT3:nʻqVSE@Tcbǁf6=*C3N#E.WϨ7(mS 3h.PIg3? P\ȴ V0if=L‰r>-^#6i+9>FBzYAc*|(Jvz/Ifo}:gq?//l/#kfs޼x:ʲ3Khb >[G;GR.>P*lݍ71t͋ Pr[[;—纽邊÷N9m/q% />_^oyhnΚsė)*m|)ڀk%MU O6|f=/3d4FO_yR -_`ą~eN8q:=~ Sc 2sz@VN8=~'X bEILI #R٧%>rQl]d4M:>a\姹pdӣ*gRdiT8z쩳O-k$saс[l3~pc}4 sp$ [IQa,K#vTBIųY48] Z~8=)ӝf,ba6tۍ*kWInrߖ{}]vQ2*6ǝs i0g35w;IkHGb F=A~yǠk/{uʰ%nn[&F27TeMqeO ='\˾ =D?ftXf; *saw8uDl"HM*S Y˅y- ]s y 6{-a:RE-IlHb>| 槢_~Q Gԩm<29$cqز#LfY_c^5b>{7^3#4q,"S Jg|h,SJYnJĽ="25Q䫇k FIdsc\ű/K1J^o?3yEd4 >}+f$o9)lX4b9AtA³-ϝp,C(1tSKsx2I%~>lÙCWYdҼh&g|?`0