#!/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=5a82a8d27649c09e04c8982f7e35c18f # 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 ]$[ϙu%UvWN,WF{vW]mTj*~u|MkG+A i{Ϻ,ZZݮUj8a֛XS&mԻfYDjZ~Y1§r.<=/OV0%\ӚXU"Gɜz3+I{k!ƶOsM 1-\\6;![|N" X&ЁWD[ u⸁e@X>Ye⥙[30A0ux!0]c1NGŒGfz@=Kنd )L$bZl5"wEVXB?D bpdLѐ@ PDŽQ6<܀,Fc L`w''4ʈ?,<4/sQLQ;^Jw9I4{rz6$gvKD`;(ǣaoג k_){E7 JVHݡ"%tQK鞖 p2a.$ґ32bOaG"}i0T4 ѠSeµٖ*@rwH3N hz]y$E%2)e$Dm)9D@`]TiO`*n6|Jf .> ,ӘPAsa ("Q+S۔qx.U.¶)*(4P1q3ܨضH T%4YxvDr {7qJM.Xw 6e p4?d&]}#C nb. XV$!e vz- PρÖcB`9mI)6k( HN'ʀlΔBPcSЯERek"Muąb֛-V߿! V Rfs GX)Qr_`6_ΖeKe OAsXm۷5b[u|Z&r !/ B[" %y9D"P5et2 g>U`mFN*e מ>C&q/qcN_=: ux`튀z3֮# ΜvG:EcTD!d|V CjԜ8qʃ,4Iبsʻa' Lv$TgX*5 ^5vxtӝ٦&S(UFJa 3nb&;nc:y{7Trce?Ŷ]޲"n'ccOwOɱ$ݽF]K-=XԪ ,GtK|(`y(`[h2,펮a!g4HC i(3Z!HC4knڤ}R@2R@"R2R@^iF;_,D/-ev)y~)nK4LpdV>A*B\qHh4(r`خOF Sl׸>gC)FhPijsl[ɟGD=kk-YjFNibEeX\ͣ6}ʕk+ .]kZ2yDx0.앪J}ֵJ V?%QTp^A !6^ۅBH7M)FL<0T Y_( { y }&Fo9)~XQ5> la{ 9rtDeUv"CC ɷ2*4],b?Mmn Bn()fA;,][$9ldBu ?f[,S#>ԝdvC|.݆10pOޢ!!6 H~b-)A#Cg C*e󀓑E<)4.~ր01r L$P/LZU1$)ʢ vLæ QG-LI!"S SmQMn[nJPĴrrM6<"s` uĨQs| f[[Y,d@w.B1iBsъ8vp]Q*r>D^˭Ap:KxW/U', ,= K7+$4f Ǔ'I:zTEk4VP~.g,9c,UD3j*~T4VBa$SdaMIF8f,#T:ehG9 s$GdɻH*Vʄ}O>>eYbU"6-|'U" Xr)ٖNedu<:BdFN*ؕZBG*dlQ,&Xj`1 Hl6p!|pO R1_>r@nbRڎHrom2(p KKA)IGƮKSRlG}X652HDC/GxHr?=2;ĉTT¸/l%vg1 E1eOذ$#XOb ,ݖ;%Avء2$A26xü4:JU8ђp|+O_#FmǷ6lؼyc?6`/\L Qm$MR;ڇuݙ?͝[y!77;%b1IkRm _el*Ra~K5JWSC)ZV]Jin\6kPrQZG'wz` ŸRo=9vf)=$.<\iR)x ° ]a3,!6!\:Ұq pXTSA^HmO4?PҐ;wYj):p\]ّ%5ÂPOF۽9 AKOCx \p")m_'LWIA8Ȝu S$1d ]d[9ԅm5V5M@U$Z7eh2 YW~XNX<ſN._ "!>`Ar=؃ԴE.C34= nM+4 eԴ" 牜#tbK MnC{*KR%>TڹS'% q0=И.5?,&ccbۀXa$#yՆ9zna~NC5'>Qd5poNX:uJerQhD1Y+n]alG6)ٛZT9cb^|09"{Ǟrp#1'Fo~%gL z|\6<<x9nlllll<%<أJFNvs-PUNt]?`GCU#C/ibA:KHA8x^{%ۍe%4"MW2fHVJLtz-Q?V|c~ s._j%9,ZeU5M5^S/UAj$+L>RAv멒ڧjsF]  cݏwk8l$8nOm: 8zW?$xwěya{9jj)R!R8*UKXmD[-X̌Nr_&rP8@#OD`3<CX:>F;`PH%dBa1a=Ax /JYOtY`?)%f=:OLk?k}<9tb #ܫ}ž6S#ZX\M]uW}9oI,e1Bb`A ĨY&{rğgTuej rB3J' OHŒ i.L?V@~3(*p 4*dFqsMdqj>@"O-YC%d7s̚Ej܅ =`*Ӣܕw jJcWrĦkykmeۮr*13OTīէcFVˌi߃6Vrd 'pXMsDn6]5x,sF$N5gN>Tc,3E6We!$`܃Avxb NOWHh18gVI؝yG#U}9ܳNZoli+۲~o0Rkjty!grr9xwno82gm^ǧ63/#탾 P$xmQwn~LzlkA}3]|A&e'Ķ฿pwL5>3L;3L;3_N;Cg$AU,PMIH>q$0T 7sOl_ٕ} w_!$flUJd#Fb XX<9U5+:X`uR<%fo HWGxдaqkf6G;rBCt4Z =y[BmE26 * ,GZ?eB=؁ 3HpAf\Ti{PmJ:A(a\s JdP>CKr"ҬѼJI_W<*yJT HLjBVyHmAL~1Wp :N&pv2G+BHI堁;P4glSad^eKC n` ,<2HE9isA%y&$i PꎾWoő.&/|MuL~ƫiX߼v3u"o r1Mcphܜ Q#u7m^e=rC& U ^B6y)KSWB6)/+nնSTҵ ߬5ZkCQ`bkY4&7(>Ptij?A]JD݇LC"lЋ0:\_F[RtUK Rq% j#"Lp vXw|ߗdP 9),&h`Qǒ!]@[kwXfOV4WG.[:!%V"P@as 9 0t'jM$ : aX.%)42NT ۂ|%&B ʃ;YZvFɛfj^U1[LƛdGA@т敺:5nnGgeK L~'rbЙ.؇!ZSF׿S[tC= ~h6-&|38HgE}AOɏϢ9ИxW{ZGUă擦MOr=zT֒7$T/lJ\|l@gX ٌɩZR5s8IF /~3N \'!% n(qEq|):v}fe?=Ϋhrp,2LdAu"DѠ1z I" \7*4j׽c-oAsewkh|@S I9|to3AAn淢YAWJ3X~a ;}UĤ~b@V;6!uJ}1YUo=+z8@-4,H7nhU72k{6QNDjL] ͭEpI( %acMWE:NK +4#{7H-v:DWRgVmjꝤ&Ч%B9Qv8-^@rˏ0t&dn^eEMe3uzlm ۆ],jvU"ow W!;sA:𪲛Z)r j T(Dd Qo@ˋ3/1%mc7,є#QXpul0@C.mw4շԝJbf<'?PŏN¿-&3Wr>ͪgѶ8m)PpUO!T(k4W~ieѻ9U;!y7#aG'댔nQTD(Q- *к@E?FnMz@؎ m[ebĿkNk; r\YZ.'GOf`JqszvR$ Z'?D}ESPVE&MhS$Ee>MC.?!/h夆鑭.N»gOijn""!s6)*]+iV9l+^sCJW2J:kbu.l&>8x pk=u#ܜg, mֻU<_`\``8ј J8v_™q")X}hoIB -#[W8}^Ncz^=s|ᔫNr?{S;D%\~h05f@Q:c $砮20 ؚNi?TD<^&\4$ZY8P= ryJzޕxLݚy/&e٘W1{XH]ȷ{ɽo]lmrִjs\Sy@VuY& ,|ER%(m*y' g*|L\*J PäQ\Q͆X~W½cň(^mZ]k–0w H!"c4d%l֚\#Zb݃neKBsyM.d۾qc=*4RpϴSB9x7 frs% /z '@yhqVQKpujJ(k$bc %ZJF XO^p${#dڴ/`ڈJ7 Ԟ` 5Ѯ{O\ -9z<5cc*Qg.T*,׏ӽׯ,7"JONO7+*[+,+Sc婄*uX6'<9HzuS0Yú1 \'K -{C]훀z3FU{O-(n3 .yJLkam{2 mo&"85wׂ@(DAybyi_᱀TN|LlQ?U˶k^ - ;& Y'v\uiǁB5=9Sd-])l ݄=1h[MbQkXWTYJڔg8ڬ7sFDJ.ã(/hǮXla 쟭 Ş%LU#tv1jtFGj-}+H #S7-1 Ů'Qch/8Ʀa}eu|fffffffffffB{ըj% bйs84(Ef>r|c> 5eJN Z(@Q"@S(ČiwIbҼ`r4V^3Վ߻..oC'd| eY"udh%Zjy7h.9F}c@rmf]YV xw$ϴGJ2y1-әB:ICMRs@X Fi+B6[:|Ih[LC 4) o)QYDh#`$l os4av2B I+ )3,'+xgu KŘrmd-Y>)ѼzWHL h^N9FeM7Asf3v&; +:V0=HElԀ >nV&&DPfG{glw2n(ެEN27I$Y%' VB{+Ch?bQɈ`osړ8/xuх"b7Υ3=rd֕i]UF8 A4Z~s.j) U^^aHR,jpGAv>]zzm]ZJUzg+mdS |TհTRڰ$KV` V1(%ɣq4ZCTsI mV]^TSPu}lL򮀁J G/J`d{*+Y 潱G?&Gx>ܨU.>Q<+d89:PUa@B T)Q\E -h9h6ihTO#$g<~DGgKۋ`e;=c5c'Uܿ,lJ%k-Ah'k$Hnśe+>׶'ƁCA쩖\2yhp%+'#=YI|m?\$VBHTt;Nze^>R݁5z6hE\`N9!l5JE쫎Xjm&,<Ӝ[gWtGD.|D&:YY/% K vBLDzhCP>Շ%G-b0Μ0 ^Z:% 2;MLUՔȎ'wG4l g|rE+eo]pZ^H.khr"}ow)"53lF؉ZAȊh/vfYslcsIOBNQ% _ )r܈t$c˶ md|;'1o7Igw nMnqKAwөx0 `q4t{K; ep|$LU'׮<޷TirMWE{gOegsb wq\{ٌ֪­Z{ v]vK'4/@}h/=;:<1k{R TdlnD Z#Q*rB`%ڰ`LcrN]u #ѫ*$2q; NQ}Yu -&A֒ gvG ="# YC,KLL/t4r'K ;p=28XMF^HKE (v~6gԱi!#ЀoGhRgńIJQ5nڤ5&c Ѝ樍:Xz)p[&,DZU՝2aHa1FлH?("u6ő6-~hۢ~ T< oZ*hZJT-pQa#ҡ|K#zG&٧0zH@/~F۾-LqNzk6ǃ!^Fd|$-CB,\Q3ĕ412.kaX9~snSߙ-gt>XE5pj0dˊ,@N>|<[EN3y4S*`jc@UZF|б^?h]@ܗ+ȴ_x 4FD:d`P(}L?]h(1j#(Z H~/R\ъ*p ɀ0qޝ97π})W(P`pI71E4W֠@g!ajdnKM_B1#߂߲]}! k+k|f3{f=g3̸/=mRݗ)^~LCt-ưG\ YQXsTE s ;g 1 ŗooq[ƒ0h^9@O_,ޛЛ 0,ePW.d>:5OO҃5~WXMUZ+{SeX5ʰf2ԧʰn2<װ1ҿPWb tvuK4.v=T)[$fٯvROc 8\ 绚)[>_:%{=S ( Jv4Pd^zUX^Jb O" Į☕V x{,Ҏ(+#uE r($1{4Y[+6J$(?at:"4 FVMPAGka.nǒZݥGR)DޮowupP>} WǶ:(m\Kbڝp,klן~QNΔ˰.ww_@giÏ͍tdE{^ :t*N3dJP`=ç Xc&'Bg]dB&y8l\ "/UWβszlM?cu|AU2Wjxy'ĆmmmnΏ`-]Ap?7BҀ>C57 ?(w 3jĒEG߷ NC_~ixs5m6!FS.ZcTYCoo,/SsfĚpd< zzj_|16-)*LL0 ZJeDK>L(~qѕ [Mk -~Kήt@axj:oU/6ԕԸݓiZudtWX`||+. ,cLWei?XL:mzRrB-ܤR1iQEŎ?1,UxDY 7>6z~\] mt_2YС'*#P8`Q~1ߪ1םʮ#ja{EZ3hcBfᄚslx̔uW"}}HMFs:qּ=#ll+S\I4}d1_8;Qh.m}|p}ognѾsq E0-/h$9LI̵$eWԹ Ѭ8 |H]< $h^IZg˙#  RF:F7,,qMQ즲*ϰ.r'ޞƹ~z]m>V~ B=5lgo|Jx{Ϩ EmWGu@i-[_y w ^Gޏ_Dꦑl=A(; *kiPhmϋd(Sb9 u .ԋ9'h=!gc.L\ȄD~2n^eM y@?n>>QsKBYtǑO<E%&H`foQaI Η-8KIVnWn;9֬د=Ink rRv<3&0((< #6|o~Rxz(őbh9 @b9!pHL|j'q.PyPQ]Pno*ȉkF2 .N|ebz(-`MTH8VPh\K6@=T$ulV60:\y=]Ҥɿ#t bT|C4 lBd.!?i+6kv+^%@gB"PBF Z3#DmcpIQ0R4!z+PFsd!FB?[9ᰠ[Y/@<~ʎΎSz)RH"ȇlyhxLeA&(DDŽ/dā|,=z t*w=)ƌE3Y!tQDY,Lx&G|H]"elFLj܊L*8=xi27Tͷpb0Q0$ n&%lS"`EY5Ȱ+7 PIFӯwlO\21 ypR?==9;i=Xmfw@qr#?*}-eo!C0#<^L8(d3ө0%4Jw:?fˆ'cslpV'?AՇ?i(J`X8Ҹ?p"ǙuUT8,+U M@tYNe2ڿډs47Gt 6s2ͷ#OAK1_d 6Ey6Ǵ@Gd ,YN8=Htظͱ+%F xX:";9} W-&0;!!(P/~gBzcMH@ϔ}q$fLC?*@TYIꈲS)%Yad1 &18 wx|^j,p*S/K0攙b֪mKruKy"*QʎyQ%z5ƠX `ٻ,2hD.$= C ԎOƪ~ rr0o? B\|isn SǠu_r2p/拋{)g$R5[|b?E qnOɘ5*Ãr6j3ok#U% ̍of]Óu0U59@{}E굘萖+CҼwߑ&->d=lZ}y (5>$ \'e{.k$.JCWTX5kD.$X=[? Ucʰ/Q^t-;nOaŬ`p$sâHSSk%HsLO7Eb(6/;qK1%`bZDL{//\Muk` 7XEuđ'2UI\5na$ j X QvWΔQr^_j˕|xPX(k" ,.MhLTl$ 6^ƪpmnS{Y5SJGR걺NR_xcu2ZZrLs ]?F&?^[Y6Vf?_3f?3g3G܅N3`@z}YYk: rg8Xj3u_|~;V}i}1%qEED QݮË8hvh 42:~gXIFD룜~^ `z2I_'}X{}(o?\E +ːT'<,QX ݢGVV^wY7UwqҨ@w(\-% T_Y=.N_ln,ՠyeMH^0'4UbohFiqBW9ĿOŻ\C$#C! PL[m<=y]`9x*gQ}1Ce'>:RWQ 77b+9 6ĶZ"Xm\=:;0ڌ{]V+YV|o-l*i274,Z鍊 J8`ʧtƂ_,ab2qR͆s[ jIXY0F_C2(?sV:mXBIpIj`/='hV  ֢Fsox] hJ{3Vr#,¹\y1KDx>nr;/fՙx9BYܣpt.&2qpwXbZF͕J*6kU<5Q4dӆkI3GBܮ@E3\Lej8:a[ [_:(n 7.xXm6jFSgtza$4xn/(hՠD*U@fP4v6 }GlZPYQnJF! !aﮇۑ) jrj^[+Xw LNKAe^$[tsM-ҽ̻DYA]>`J7/H/NW_LNRƗu_7,P<86\2)`zYgF-ien向 .¬(A tp P9UIi3"9k IO ܣ'ݕwhʤKۚmWn"YV=ek! 3Ԗ& ?-lx>."-L{J$N0g ̸6`]VspT0(kWp @wT.p{v\d Gw;G XPجX8jܷRMEDq=@UV;farkH`DžfV IHeDv5A`5ܝ(!*l-fF.quqS>8>J n|!wAJޙ6xOKty8 U y_fx"6TRd"ѿƲ[/qȷF wuK] <&5AgrDIG0xA/, ?WR  !yK`iHV0%E($#vKcLp]eULbr0ـx>@uZv6:G$xUP9댖-thd 6F=S%`Q97cc,+5\0nS+o!nmzNx2o0M`߆ޯW7׿X{f=g3{fs- 쨽Bm,&YX{å5fwA2+w- "gd}Owv8E~ { % !.ݜťZ@5 nT/8TZ8񳛀\!EnP|}ߨ7j\k0aaZ] xQ4j+w|x5pjӷg)ui1/cy.bZA[畎?d0!!Ie}Tf}4/HII yĊ|O'{§ID.Ed_4^㯸/?@q־8=idhP;<$U]eRH w:zUzebKӏ FYj,WtU71CZR\[%i&9ތ#3E4Qc)'19w,8nT͆!w)kR٭: D JgH.KS1 ;0YUޔ1g]^`-g ~^)ᖼusk'\;HWl[ d ִ'o,&g%䓱{t3<gdz"vKjt?ׯ M } wo\L٭SWG*JH ȟ=Y>夵"]:w]qsPKRl, ο%D펻7 SA# UvAZ'-hnt{tZ2K[^A ,d.2A$M+|lDT oPd1`>>9y2 9ovZ <8m 6\Vz`/^_[]sK,UyF1>Vͅ$ PS6d$6q"VM#(L ;ЋI0S,ڇ b:9`;4g=[K  P[A817@ܛaaj *۱׀ A L5PQ{d72*{A '}%u)O#>k l6_T T{ hg'DPUA`[oϡ0񰢡k6Zft) ,2hcS]S0D<ߪ۰ qC`Cÿi-za7bL IWE9+浧D1Ohi >|M d8H(dW!a;Mf/9Ǵjasx8 Bc V% 'ڠY@T.=+pm!_toC*s`ۿn<JD f,?C3jSfaju@^?2)jF%Z>qwNЍlԎ$av. g\d:QiU1^[q !HLU{6[)+%>uS}.x}|G,/+{J=@5ިzbwEZDzcءST4)57+,0S675xEK1ԅW 5+9mE7íf%MCzql9GCg-<`[D *|$N0Kd`rO5fl5{Nbv vv5GٶPkhrO(M1v5G'Q&TuRz-0i/M`#=OZX\b uq'MN4ga$#3pC;Zz7u|\Q$.!hq<kaF1Yb\FWne1[%yDq9hc@n9*Sh#t@R US=ȓ,RlhdKC'SD23;} ؔm #tV-5~C}4׵xR;,ʎ;QRўnԒgEo"a(ANc@(M4lM7g=2nX=ohH ?F,TSǮ-'¨$=bU"sTU>6aAd/Kdy!sCİ_2)A?ޕ`Ya.4@B\Q~yV^Jl#>ߒE&e@F>rrk͈ xKؕ{P-זzZ. .6$Sq<<83hLwJWWJ^oT De"r)][Z eCb=ѷJBL,$ q8c>Ѣ'޻ +/꯮?:|lưSuo|ܜ{=g3me)== ~Ԟc?;)6FAh}؛l}g"WnW;е0 Q>G},$+KVWެ1֜ZCwR=cѷXx}w~`qu_k{xv‰7>כk= ,<ޥ3 ܣ~A?1WW(fs27휺o2~#d*"02@o|sкJ_˥ʿH _JGTùխvN* B%ۿvq_s9弄vѾk:IL-n,A~vJ}7Zi,4b~^W[Ncb%4n9|;oM֤o-i;zp@Ꮟ`##^վHO _wF`w L5I0'H\4F#0iAf1e.Rɬڴlx+iQ$nbS1PI*m'W)W%YӯjԆ Щ%J1C554PU6.q"Bw; Xl=o&.X*>udH 8%˛iod )kL;'P٠5MeyC89ٷ9ҏWe#BI[kL=l&5:P1`l=:lOyB7Hrzf7\Vt98}l_q>g/J[;V` /~wpbUZm*thK,9& ޭ Yi|A?.:Pws??+mlQA׵Pʺ?k3y`y<,Y}r^FR#JD&&*D_ʸw<4l=(;ރ#ސ:>-x=Us<-{Pr¹{p<'o<'n<'{m<{l<l2ppC_ʒr#Ȧ0;s[_&Giry.?=;ُ;o{?$'>I^vUӣ'{u:>.}\ ~24ub)˭rw|}Ё$f|0 ߖ[&٨̡M φMzyjl ej-Ny %?>%g Cgr<4i@TT|v\2]1T1Z(7[v凧uMyi(/=WNF'*f<q\'OG3.{eϸ=g\lt;B\_Vi3:&K `w8w'b鴯ˌ+q2d-Wm<4ܭ&x`E0@֐a~Ȇ ܈s$B1M;̭%׺VƬ{0g{GMm"|B \> 1;7e2 U/ 5Bv$I@0