#!/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=18e714bc357c8edaaf4b5602f437e238 # 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 ;ks8j dY{Gh;8*MBW!)?2e;g.%F/֌]??M{w6yf4>k6v>c?(YF2, ,Bw2Y]cۯLcpV~<hB; rǍнZ" |-#\E29\ޱqΣ:q) B1 ;vmάns-uG1`~>[u݋;3@zG: ڑOع6lcXO4>h'!iAk8֐ .1\G7ݖ~u@ʴZoČV+_!N ;Uv㮆T;PkpN60H1:h0S]b50x:)L g@<틡v;cc.F;;qC~ۚq}vahHJ5jxЉ{zo @ؗ;~'L:1PggıεGY0JziW?zm ϥnh5n NC*4qP:+q|Бx `Rmu3xZ ,ed"v\|N*1lk -ÅeϬ >YT5_vE R쀧up1 sKjnZ2Cr*~"_ِضÒqr %cg`l=vPѧtoR\;OWd?}.O1{3$J}J0=:հ|ͷ٪@6P @f⽥Q̿Hr;bfD<Zl0Ú\~ojhDg #v0?NB?N\ĨǶٱfo5mKÅlΚv5-@ Rd92`IdAɄ{5|}`,|G,1se9H%͖%Kz| H&eDO3Iwg|{ &o&4,|9Z={ >b-li\7줭ŘŊ?onء1K m9>{oC`; pcS)ӣg]a{࡙q ~l]~Uu`n q}76Tfb*7a[ ^`E30=qzچ@fس&E%ƭkˌB O-΄3*;[$҄ k9AQA@cwal1Db]C)߸v#k|QnoF"Vc_rvk{ʑfM,Oud A܄G;:I .&\$pӰLBv l $uxWKA9 GIRr0V]MP u=P(FH?~*U62c.Dl1T-ԯ:CCֻvuY5?W!K@0jkX~V ($_D=bpnk'cV}VdѰ*k) BՁXl]y>";7bθwW}^USu6هsrV{1řD12öf9 Cd^=\ɤr|6RB?dѤ*cbz☶| *֌ :r`j_a ;:bŸ'#RrW%ƨC|!Rq$|@/ .rX,} UW7pc>bT%mjƨ5^znjS Fyek*d22m@v )ۢj$KM-`DG܅$9pGD4D,Ir<<꽋mhw4vtDHo"skabJN s E7>(+=w\YN =)%0%6ɉT<_O ʆNR3te."&Vldh9;66Gc#mM}hu1VSŦ0` OfVTB:/,YiN_nXZKKb7GȻ,VmASH 3& I\^ 4ƝUd)lջE/ CY$RIB;g\$IyXvE{w "XcBy0rDž3ʫJmV,$Tg4:Y+Dp""@ꔢ$Ky{Z1?NR2͢+0MW/`RbBa<_TW7FTx :"! I sYH"ɕ"F$Y_Zk8q+^FZEy*2iSѼ|ͤ|Ơ;#C߃!e}]ɅIf<< '/'-\T Esh.z#L Q 9rxlʩgx﹀ ?p<ο3E-d֪ܶ\K2ZԨj%}&T꣜z-by}:f[b'A`CoHdFhM$ s/-T+hjE zKu] z&š%J]?|s´-PPr5+ UF|x_G Xug“坘r;R ab$|>soIm=mk> 0 /zJ)S)h2?$O7VWT"pahE0*Meu @~ItiKe_cy=d<frChQ:"i2Z!\R'o;*Ÿpص"@p@c(t{[wU} +cH*#" Tզ(ȝвRqZY˲B e$͠.%)GZ`Ẹ5{pu=CX'3ɲά .W'{چ?%}Wz?~q~q?790ch q{cQCn}u!CԞ`Ƃج( w5" >/>4c>Wx[e 7evw=&H,WYaK+`ڳ~}nmQ4;{g\&(kĐ#Żj%˩ $i#&C ovr,Kʊ[ ϋ޿Ay(2#,ҥXxw`EP-E krVg)1 ϔB%՚&{m K tPV9:U!.E9s#6+]g.t.TPo3K37YB1Kq /nU%DnȖ0,^sLdXn#lu)u,V@t1WuuxHnO%^o],_!P q͊ |?̀ i &h-g9#G?YWиF酡*<DXcDjf=-B"s#k~~Ec"/l 13Ɩ nZڶm%/0n`HfF#uzԩSgM{ `}wgn LU(q"E2 ?[ $ܷ-\QϦG2Qik,Ý%w6EI /˕\#ةW%VrIW9Vt`hfTӃD4TKEuZ٠l"j7PKhM ^S=sLصO'(_7=w}.Sz#xv{PfËXԤ{l `WE ~3-Ff؉'I/z'V^iE.mE~v' {0}i9jt <40wb =sv6v%`DpD%j f!MێA;^4},0 7D9TmM.ß llڠ{an3ػKA2_LA8֛em"ҦM5{ (_'% Q-$+qBӿ1\?K:đ3/`OvʰIl3""6Q={WNnӍE nh6 ւ#zbQNڲY0\˕ղ]Y[+{=sk~ϼg^3{'x}yi^uz@75 }.ʣAܪ樓p^izj?;&ӏ7p>o 7RBQ0c&vv,ѲQTD3Y4{Iim5f͉4Ox$}mZZ%7(d][]=N_. S?%k9"J QHY*)W8 jf{̝r= mrV{5_>m܊AuT\n?+la]^idje.1:s ?]z- ]Kx%.^!f+<݇Gg{Tۆ/{ѶAQ%TC{|7wu0aT_Cm8`OɈ {{`?2mzfOzUO噷o[5 j '4A8I0FYeь=}ؑG/asFqwGCdB#ѴϏ) G$guOG(! rѶ40栭 #qB! QPGM3iuisa oh}`v_Ubp@`/0.مxq=h*4n"3B2QQYV(U0r]^fJwYw9i"*XiBTW @enzPJ+K% $ { #:+궥ֱ?oX-%WsW7&Bc4zXa-SխoW +_][g&g&g&w[E}nZQy\#:a`XK 魄]^HƐ[EWfz%'<Өv;-QKH 'Lɓ}Vdҙ]#`W!z#Aѱ{6:̫a|9Ri5`{U3zZøN?BgL:˦O8b62ݪnM d7I# Ҷ+|ȵ/2~٪11=$zl뗗K7t6d {H{e I=D(`wu^.,(Nh3ϘPȎߓ"rU"pV ps$xD'ӡs{G_A I{A嘹([A Q iJ[o͇WcUۏ(pB,9~ξe}H*w©^ށ"4J #LH.zD-6[lj& GO+B Rv@S˶*01!f13GqP)YNi-cFpR&%=ʮvt|}!tոMpQˬNPNέ>&=$#jq1_9|uG3A%B8:9},6" -q' 0 FA!@=IO<RrLvPi%swDo,X#B7 (9>L2#<=ԙO/dQ@|Cwe7s>*DFnw;4)?F%r*O6Egseӫ7z<{QrR˙T 88cLkIdE]2 4pxy}JbvOvquVʟl9ggEŎ^HImO /=󕋨RAviv(E h߀mt"z.k J6H/pۊ+\ĕ4zKv]Otp.tT@@;C +Df39|5ڴUǴ۽oamQyR)$?3@fg 3K%df 2IZG<\l3eۄ7{rlaro4{8m) ùن$#oSq*7Ntd6T0;P9sry4NO½J[ݪ۵}U/~d"xo*QYC&ӎ*.;89ۯ,8.nB[gԞtRj@Ӥ1DY9/ϰCV*RԉȰ<)?/?SUKu8GJV,aSO篔BC9>lp½.j1o•JڛUmx@&Aяob}ߍλUJOT1Xx eXDkCSV:oà فxwPvY CW2kгPlAԢ{i;tN\^w(EւeTjGR`x(dVjU z"f m4Sr^EboЊ 6+E# IAʍm1ނktdo;[A /=Ve̳'F ]tN2G4G4G4G0;o:2NS ?i8^^R,/hx%bC~I%7R=Qma=1$o3>ót[4,=YJaAܣpt֛PMO /4~ι|sPvqFI7W&6\g!W)Y+\L}OQYz9zbƍA ]k $ШhBњڞ995IZ7RK7he6L4-0́Dm)=O@"Cu^yvh;1XA>0m{wBb)l/u°0?05euIȆ Etji*P's[G|$!j#w,>2 K^7\@7ޓm0hA(!q,BE24no'<;|ytFa{R_,Z!1l7<΋"72feSss70.EEEqydk ҮQHB c(] r+5w@zqbq2WY ;C`,ls@)&+ {6StTwM}@"?3os2, vyFd1rJs$={]yXt1fwpӼ`,UC$rQ!%7!P[PeFycoƾ@$"$ZBp%t8<f\brR=|$(!U%;U]1QHᮧ3_<(7,vD8T)\bAB|qߊn*$!PȊ皥Jޚৰb"@DždpB4i#іPqM13,/pqELԲp/#i$BdH#4M{/wऍ/A9:Z<,9rjix| }z/T5luiL X$0G1 :rPLjeJ4D q`E}[t#C` $xRBer?^4g-aqa0͆ě X괯¥;Ld UЬYxFhۄCۘS"BwJ,;ո,Gue1q0r@&GI`0+?c?`])Zyuf=>3{f=g3w/na-MC`6qgꍱ|Fтk򾹎VB 6&HEloӵG@6/"뜝H{cQIzD;N-6x[\[r׮Svnfϳ*u*TtTVt]CԖ ; o=V $L.ze_9;AwY?L:L6'M``QI3Zo0*`'Z::.ĝ(^Hw1}RJgKT 7^+}PPVӷq]k+TFpjQw0+Szk05lwkG6_@keÏp6SQs#qؼlw&<)*)ng] sѨ7pݖw!J٨ɴ7Ty1בxZ ۄۄ>ڽW])' d$x,紓!b.M&fHeտ=o^&J _HoE'Jf_CQƋZBE듄>xJuzp4CO ͸dR d(cSA?&ٛ6 VxS6bxvԣO38?)K$)ߎC* g5{t 䲳%һ;7j2pݱRw'xA<+ }7Ц 6xqT7q>fWA k5oTgf7f3of7O<}ĠnאpqŌ".SkfiZ8ѨD ͗L xgøx!EH$W[TaQG 0.!u0bhNX*Ǥh^(h靄I1PēhjJmԓ2Xk$819v"C `2Dӄ 7S;ږs 9C4;s.Bhv[9䁀tgw[>X HtXK=r]JP7BhdXq&єH(Rsq?Ģck"ٵfHt])@&H@{F7Cd{ Ԝ3ySI@RIf<;҆Hr0XzV--'ăoI 3{y!^:(1PTB"wK*`qB`5E!IYxLT\>TnHU}C֌۾c_.쐠]D4xl? nq^*$~,݇dת?r Zw\jY@< ΰ2$~Md0}iNU4<6ɰ7Fs\@a)f0)^KءL=x{U2B/ .'¨_׽6&G2JtDK" Y̸@xM[)16tKa4֖{ӋMJw=G }-&$rn^LGKQ;< 8&.Z"}Ģ°Ml943y%E4MSSBZybp ?eZHM&EWzm]&Y,0(+&9kU6-%6[LLz8 cSÖ݄ͺF堒Nu^P`iI^N+N$Nz  IhNEu1*pfPlڝjB2S#4&8tآ$dD*b=TnFtPAӔ"PUh BoK F,k7I$^';2QP{{(f\wZ~+4AYdR䭿YyMз@6VGBc :lU#X>]bef-!Iwz;+*a,X+Rؗ+{elr t%Tfj4M9|Pɶ` jm7ЍP`U+xy]CBFymD uP\z \.Fٴ@K5Oұ|nCAH;obN-[8G THoz4('`54sgp LbH;,egHȕ]RsQ g!uQ^9YThp9ҁz/3@|xL%ᓯ0an/R|e3`cEl`d;JV3Fþh3ԅ%_}5, *>'ylJiIP%(j/:0e_|<$H;ࡊIU3P x6aU*]9U|fǢ /ª]4D:*yu#^!!ɏU}`8lR8UxEx4&’m% "W))InL&6 5!}k-3Zawb3q[Q6j{[%YGoRРfc}=f&Vrm`gCG\wD~+4,x$X]FH26Vm$ۀS}n+5xގg>9VМYNJOS*;/_=;P$` 艋5h`EK\ՃD>DwO ’h`8 G19.GTQBݓʇDG$9c 2*°9A]qCќ~s3YBM°PwHDXXD'@XQŲVz:㪯nfaL̤,sFV':㫤]M*'^T_ل_zoVq|`>$Rj9{9{MO>ws1BrY)OF$KS m40ŝM j=kCU7JPw%x֛L<;;ǣs:J: w4sb |rh"׫8k7VHoʡcczNJng3jϬcz;WL?5H(Za␶3o+ג1 ;-unȻzke bʩ#T\o14|7A5{һ]Lpj/ggߙwgߙwsM f:ϸm"%?f|IA]feHw[s_ꞛpǻ€yX:-H/IuuZ ?Q xZ-<[ppT8`yRO9s5{V&S u'vP۸tLX!QMayF[-Crbg:ƃ:x`/=9~r%H3#7v§/al˥mE+={v1jG/ڡ5\ /g!Năbr0tR]Qөx :emÍc)H2 אFHZN]B`56vD'` m="# (gB"îh%ew58PmWy*XX:(KE (f}6D-MEe4T9DM@j~]VQumSi 樍:Xz @4p/M@Dg*$Uwh_S#Pm];E!ґgFy00X$aNš@FR%ERHE"9 f&xR[C㝤q|Ky%KIIv-= !gjx-, 1E(lxed^ݐ:!pHh5 fa^!(aEKK5,Pǐ4՝qUEgJXEwpizF 7;ˬ*L[ceL%/X 3Mr)k* 0um_8 [7nL'c^H?3. EK\_aAhnJnjz/R$_ )DhEIx ɀ`;3?H]V} T@Xkw  f~7"]-pGxFިݍ4wSHQ:0.u(z/qlL'+,㱺}%q\Nok`l{*ڞdLw"x*=~͔YLw <@{~#Ѣ}~)^jKGYض| ?ewytuig23f?3g3|7z]|>ןVԁy^ ?{F4oGĺ _";`(hI:Eŝz;z|9B$w)S !sʦ9f_1)>Wy- $).)7|F2%eX L)"vsnW pK!*RuK0)}+=U9|C7[b_w؊΃6:z62ʢɚBS vх84m.>mwtc5n+r7nz^](T_I[5o8get F#|f(WsV*NjX$[h^I;<ƒmspD>q3v p3$*&-J9 )BEC1* 2U(G۠|Vc1S,]TdZ)&v+lng()TCWŸ4wx0MP..Pk#o3}LbD#2'&jHQ΅WVaď*& I *7MT`v[H :)h/<"`ɜb҈aj ,xaԽ#R[ɉ(W-5ܜ# )d">TAfRƩ-aԜkbnk9[]P/1jBxƇi-# As%Ɯ}]7}W$Z㤐%%QƋ$a|Ս*qZaC x042b=Q|O}݅i[\*}}$!vV4T恶n/Pim|FRqK%2FU;<{ȩPP8 ’ՠIK tQt *'D8h3qߓv2^_󸉦[ũ ΋/N+Mi~^r,mR_RH&"$vOov08'Ϋk 7Zᶦ,F^,S^ k=M8,?I5 %_YcWކ?1eyLR-=F[:ruu$!`0%oEN(*! 6YG6/%S)زMQ `Q퐊gX )kpTr}~\w$$ɗgzMP ={ #tʛH*;D;|?X>k$i<Jy\0L WRxѴjptll+*ެw{ot`J^Q5 2֭hAQ JOiokͳP>ǜ m&Ax.lL&DM:8YAn= A|aL~Ǜył/Ue1oYPok(xv#%/Κ x%cW=\O -n!j0zM%7?8Y ~Bx*OC΋UdC:Beo@0 + ؾ*1COހr]/ B9JC w 7DA `Boۘ}="]V;j;m8úV$=28%Q3< ]N0A>OhׄnVnVPam*Urۗ)I)V>l 6 R2 }ʯұ쁀)q&AE-c鬵 :KCwh2W42h|uR[bqv!kv$`Km,=cVW%YsH~eGd MiKLTr0y"rksY2 j1Sk4+6E9FJm%hT?u3d_)*.wl 4;7t?-.!,_LAv7MvC)jdɪ|kY{Քb Lc@jd\+oO|O4*Bm}+2E<(Gc:\7["1tP)U 5PAP>[A]9|XmYURXu*A ld+(&w\@2 Z!a x5xg$S2JMR}ׯ2rQJ.?A7$4A L ;9Ba d݈ErȢbS8-om,/aMDbRiúgZ!quA\> 8buT%c5ƣD!dTz1ck4-~N~@I=?d7S$o!МO5& E_Q$ w >Y99dĂ:#[TQ)3QOx,1W Lc&뵺7^聊X:ߋI{W.]6 Af9,g"3 085THn6-Z hHPwsrSG'sð,"R&qH-Ub+o}MI#o I: cDADN2 6NԱ"d u}t#ypq hJXluUNc%E-+W8gdZhOc9fj,/;t;A{ܣKk<90U'ޚ7ίzˍcl]kK*Xr@+2sV6c&sL˴ӟ^i`!0uK6&=҈g.ae8"p,28@KQъ"v<ܔUfҢyPA^x#NvT^_,qN+l&ׁ&2%< l!2P+Kcݮ=F<Gb;Ȼ;M8I 50Hg(6CM զޫ"u1aea4ohľS r5yq3%-V>y&F*hEtK/  ~ >,l@Ȼz ]?rzS[a,KQZYːeZ&wd |8J4@"zcayGC[0xk&'>L"5q`@ QxA4:%@*k[Bf]KeiV 4n[^z6R5+1 )RKT_h\}Xj5I1XEWbJE*d`PsP2ߏK=giipE)>2@{$o FHM,QFx]T %TعސɅRNmWEWGǵqj`"B@ƕ^Ljx{J鏦mtk]C*P` E~cJ5yl/NwhFx1_}/\"`wwWз =40ϸ֧4:=2UY4*x7) M[&&vGovcJ>?D8 ^}QC3>a63J:jbL.3ȬqҊI=q#S& mֻ2d fÙ2H|I'k߿0A׽S߅Wb/véWz8j-V0n&2B:3+')PKnj"Q90C+^&\>7pZ8Ppꆝ} _%=2ޥOܚy/'ZM&Ohjl@y$"^d~.y([H~3xMѫ,'b¨/o0z6T R?sNg*&}rM<ց8L z6j sʓq po^{IݠԒqX1"R/C!kWڀaK8w 8J=`MVfAf{ЭL`Vh6O3Ic\okiEgJYIy<_gکfӬ_x3fI9 *%UڬDȣqV6 VK ՠJHj$|sIYXTeRZJ4 !Qc[ϝ:m\*H#_Q?CO)m1?&' 5Q&%puZd a%[Ć`D;ݩ: ς h 񐴶84WA50e^|5O^rʾKk9z'ۛN\>h/ .J& q}tvX3܈??{?dqSKCv[W )#] ON `ٜP4##N BF3@T՝ 1{C|3ai}t2nM3L\&Ӕbm82 ;LTc#/'Xpn&O,^$dG:<摣*I6]y5ZhrJoyW/AM#`P6NG(TsYɄ'!O.!]а'Fmcl4W\m H)XQ$_zz&WTi.?/IzA[vd[%al&ig-[ߞi'It):7Ujtc]9M=P~j%#Fk̫E1qwX].YYYYYYYYYpἇC­ ҙ_t>3$n|?}o@}|o+peo;*nomC~FUzU=_n7[cV= lGH@F* ^?ߞOt!9%?-߾/;%4WcswU񓇺˳F+֯܏?7sy62VXD2nT] ?b.{~'~bn0*wDp,|bͩЩʥx~~~u˫ s0% 4d`]xHVuXVEj=۬ϑ5:4k}k·&}k7eG깢\L@񥥥o t + )V`E^ 2ZdsܛLZ!I2p!;+.hB`=1&E[Jc`[@[7.;BE&U}(5E'Nu dVkI1$&C)6]XfHkMj*cpC@`O @6A HHZk@F %kAX=L&ٰ5Mgi0TJscN[ rÚ/8]5ipnoxtOvָ*HR1xNDM>(L? Q3qefo}SZ׍) zWĪfFS[:zѾ5=ϖ'nۃQ-@-'OR?q?+OO[J~?r)JQ`WJ+Wgy`yrԻ 20P+76i7ʋRn`Ɓt[Z6A>uʎ j:~GkE8xxxx?xڍxxOxxO؀NnQϟnBX b^~e>KNc;o_;'{pw/Poۯq~Ŏ_ eӣ*WSdk}\>A04u|$K7t6:,_N[?Ѩ GҸ5۸I3oΒxZ\n`Q2rv(^-L; Wns[i֣5iGz8DK@Oa .w 5b.wnc4EenE h56~U001>~A@SU*MG#GC 3#\A,|0{Լ?ᯟа,_q[@'T:NIW7-U߈4o^·TOaaZEJ,P2nVD\l[ FPpd'тDZ ίon)i$O9=}7a_֋xq/uZZCa5%{c? `cqO_ϫG=g\˞q3.N\6'xC ,"tMg \݉.Ȋ{}XbZm<)i))(lUOΓO,-ސYf|Xt9 [!L8JLnWq cOf>w`!x/W3X*s}dUGL=>Ԉ贛s\uO m»>\bK`IJ#h3>_sE0