#!/usr/bin/env bash # # Copyright (C) 2011-2021 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=629d863a2b8afdc9b43f4d3ea33f916d # 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 YcRnqѩ5/~UlQUW|Qk6գf~Z׎_$*Vf=oz,$gZ[:eRjzȶO.W-> 0PԣE15Y! m. bqgcZS`sUR}j-n[݇?˞ñM y-E~48Ӑ&1,ug]LBlǷ Z#shy{I`Rc[ l &$+ XtՂھ*@KO]K{ 3@ 2اm}A1Ӈ{R`#u\hx  9&Ripa5@,ce \<3IVF%5`y<XKY!\n$ܕ#tJ3~*H!~ZH>X c]G"}$E!=QʒR!rwE '_* 8; ɕ4\cLG6㹬qɰ=Rθx4(A溲+{Dz/U\{$fpݗFȀ*9YO]y$uT)^(C#-Dڣ"tW `d@=HBALQeuJb02+ܑS(LhcEBRm&$ 3"3}UCUˠkن]&Af6# F1ʂB/%hd( $QE0\żtѓ/~G⹖ j` 01PQI#0e$>CPl:R(-ۘSzk-}в!fǞZbQGI;gR7-*MԨ}bѤS}5Q {],wIy 9s 0iZD!ɝ[+ 㣣M^J~.iƭ5ы\{0 Nh[hb7wj݀nn^ 3Wnl<'G3>u䝙66`:ۥ 80 `ȈOE `?Ҿ-n:_` ;mfz]5`؇|!(S IKk5pkEغ)ƠXj,%,H~$lm7:Wf ,{Qz>.iY -<_*,W)K;!4. Lan.M+'Y2'RDíI'Y^eO-"h讽%Z-u-H 2"chB1R^(l&%]w _/tڢ\54.Xrnz$F} R S1Do aCgTJG}x<7u_| (.:4mhq[ȕ aw {1eZ@, 0XAy<9]diGF5cհ g$(ط@+/#Bk:*LwXr?[<%`4POv}0\e&ჃMڶl7-`(P9o{jXn~r #w >6Bg͉wH%xID֔N&:˓TehRd6"DzgF셟vWa,Yk-UXrq.y;5 OV (\Fă^|@v# c!A`(1t oFsii$c=j]Yg]_y 3%~2;)psPH6w_P H]k!Jy?>p400L~% 6ՎV_ըa1sXR* N嵕+VBX]Ƈr] G I=}ICZ2 _ U_;2% shWm'/' 7P:,q5J晬FNȺkUS廊^2@gK/%f<11zs3H4AO4F3m! xnԱ?yt jG{tN ?h=j78h"_kzs9gzvzb {=&pB,F>|̛Z+lk HmE.Y !9f=~Z!ݳ8~>R ?I[*jcd8`? !óW +L7ͼN=!+6Ml`(jsd{"Sa\c >y*L`'_$Z4T^Q/Kzgy(kcJβFq/;:q( ;?V%,w"o~jVhh^C?aW-5.?z=,>~>r \R$au* ɸ#'8rW7@@КK"ZC"xlG#Fjr#,ԩpxDq@AoU1<,tL2{c% `[`PlM=֬[̔OqNT/fM!$-?G,VNԬW.@U'0ݨQ3cDiiOw )KO$ʻIEBO~@.f9Jʥ#7k ZBb6Rĺyme?ҭ}訌8S:p^glSFVOGiߣ6Y^nYRkLbaQ3^άzQ$)S=KCƼ nSOzer6f۪&Ѣ`h?MuwF}1nb|{BonM(>ťY4dҙ[Fa *ɫ"vS.-a x֦xbsE `Fۘtjz\}jCgWӹG=_A V;?1OB>,99-{` 0{{czqO^x1r0Wʧ=kșWfeX Xľ-> 12K-g lр[j iLAkV+sB܄-}B&p7aw΄;]Pȁʑp"Aßs$|ÄW# 뷱JI ;8 PZhOy9㟹+-|S-Z= /l#'K#wB$inۦ)|m7c%_l>*jҘ7A&%L'm>ʹA{>U<KI fJ:}*g[&sm&$]qQ$gَa?N_A˸&)ȔM P ?̛*fJ6Z6hQaf K~goi%ȲriӼ_&[:v8g)owօc.?~Qf{N6RE3lvuK+kSg/s52[pQ})kZBKTLС 'Cϯw¨QB&᫟cؐ-s[nE/'}h1ZEUxZ. ,xj%IU (f6d! ypj`_mX^ߕYm`(3Vq^zy΂~ LL];RQ]bnÿc0FI w\zu>6'\wZGpw 'X3-dZFGoEbH`N Jh=θz[xK} Bth_Rm >(Jo`(j2ll,*vVڬU'Ą`(p{`w쉙k)wxM˙e4e KQ uT( >TWn*JSd-=e,$].GxL26Mٲ s-Fm7,}7X Ah}#T4@%"4i\YW<"Q 5N$ddL@ o,&_]^f0^_20ՄjVF@|Eh)a1&];hzAE(;4PQwJ%Tq 'ReTiP|Kӆ10 $ {']s>nnngЊR2b{bq̗>DzS5U}z <ɠ@iZO!9{gO])zԌ9fW<8n񜻣iӄ$H ŀC`1geֻ2O>fj;oQ}Os݁a[դ<6yCc9TGviY2[︬㪴<V7zĝXY#^ FAŞ<߫ͫ~aKL2b4_BsWq`sƞwMUAbVrpJ?LN:|y6XY ϗ`ZB/@ [ānOɱXk5 &m' [QnxoHFd90`kA@o&Ů-gv}۪5%D%]k&|C_w 'DpJ,.s=6Y#ag삛/EWc"3X'9y*ٟfpyxfU;ϘԼu5YX3*AoTu{qDP nA`-(HP1NJ&| [ G)wzWlDF(wNd%̌`}U%2(l>#+ǍfP߼~;u6V)'t!snýsm2,{"=cчof&)ԃW|Ȅ Щ,&=ɋMY:5#ZL`FrF?8@uyt>[n-Q6:C5dJjfB"-B1~F{_tSlѱjxkrN+̷e)K8~֪V64O9YޗbN~0'J|Bk6ܚ,*C RqWpz/SLp\1TӺf/Bxv&Q@rbKdy25QaZ|6L;&)K*I$ ɜ^JMrB},Iy2.fNMt}4{K[LբE^%O`GU I{|c) ~&y`F54|k,?<%}ĄjAg Պ& B"KM3 !>z$V.9XXAmɟh OO{BBBC 'Vdg{#(? ҹVK`pDOZ`]ч.5c"۷V&,/ 䈬Z SupY!$֞Ss܅YB9JK 2QN9: 7@ z9z{,m,ʪ:LX^31#NktE /sN 0<!SL N~.#-YyȻ!Z2ܗrA, i(zv{RqJ9 y+vM`N'0o2RUed>C#q~e k4>&9Lg1(=߂+0Ek*_NgThR+w>o'}5Nv؅N7q"AVeYseemv5ϨѝO8W3hwL>BVi*m G-'YH/I7żzXACr0%mi~ӌ2PnabNnR W" -j"ec7f$^Т)!pļhUnH2|j-wLV[̊tVK)<2 wLaX(΄OQoG%Lҩ@ljY$Q:zͪ at>SU5 eս*sUwi !$O_5IR ӒRu? ih$l`WzwZ.(h~@>A8*|-d۰=ô6(1EeVȏ<.U7) P:8բ" #4(D Qo@Kܪ~#uz0x֨:0yM Gi'Jt$q9|9AOirNߌ3f9<M/-F3Wz<ͦgѶ8m1PpU Uk4WLatosu)KN|#aG'یmQOTD(֓:Q /4L|/Pd)xy'J;p5.װyr9|7PŪJJODExlBτm}Iky.\ia9"s: U(y ̂]x&:"[-hesCмx~ W$\Uɽ$‰ u88yE޻y~>Ȗv%x;grUuMōΥƊFϑ[&CyXcm%Ё#9>9;tS#M%I6;ϰi]jfg6AffѺ3HYy:&NOR8gkZ:qZ-[2oh[EXtK// 6M욮 %^=aMVojc˱e4UBd[F6Sφqmy C$\[FC["# ~&9Y6D%ʶm+SU2Vn7l:ZߚrJaަy.:ȱT4fjDV}[v&7+˲"zCnV[Wor&+0Hogk ۻ*E/h|;܀P/"\Om(Mo_8^Y*ӨhSs a!L"g$xrZ#52uV'HOv$4STu Nѷ϶OTy=/>SPvU$ϟO6cO :]4䎼#:CG)F;oG/Hڢ"!s7)ʵ*]h8VeP#Շl2U8&GWdx!7+_)()q6\g{5ɒH47yC   ' A > b:ٺ! -vhnI_xy ; |9:{5©W~fgvj2rI`u\%+t`0C0+" (O0\ ylKD'4+V!> ^GU(g\" nxA-8R˞Z.\^/q w-xRvr6: 38&V#r7޾(tvr딭]]ZVn>1%匱\f;ܖ)AY3ύ|p&l4.Ahu1L ykD M옋u=^ q5%9)p0"yev6[WPl@!N)$@D#`$bKVnQQ">l+XLhr0%G܎ ;[=Q^VY'+>N׾vQ4(0nVO97' &s^Z OkxiumV1K L<+"AE"4w> |1"DzmdiFtɫ3 R78aAQ Q 4:l?&-0&yF{=~pb?"ϝTxDdWQzHԇx@V[B'\? @, ;:#\T  W3v)q)DW鎮R}vl~֝ط2f4.?FS1:tptp7afћxX #x<ރ {JADW :6׳54 G8}jHLQExWz=E$>\$Q_$Du!:g)NC(v ~Z"9Y'6?wb7|;~O7P%  !UhIمK7!%&@|& ZM@id>pƘ_pAda7!ԡܖgt=;v_ bۤΠrtwlLnp: C`*Tႇ0suU`q'JeQW;'FJz.Y%k'iN0B cQͮ'xÜDr$PUYX-+Á"="Kb1Qhq]3{DvxKɧ0XV|w,nLePU񹊓J:Beٝ{ȼ U]rDJ/Yi2pw1oOI;MeO85d~fcoD.6+s.qɂ`{YfN>:U8^%yWuF: BrrXpqBŇE/2=aXE?R#{.f$8?^{!akTte/3k5f42p8)q-5mGvL#]DtU7ʒdv!ŵY2HU'J3wn#qQQa֬I{"R?+]ʰA^O@t+[nO)A0fp6z=vX1pjI}@?:5 *E~9GV0m.B:斊iA2\^ 㦹JVr7Euęgɼ2UNG;*ق邇 RƼ}Z%#U +79~"<[>!B޷ܼT\*eJho4?ȐEkiisˬR]15Fh݋yh5~f?Y,g3f?_4. ^Ef* ymH8"n.ts52[p&(v;$9r"t(+ z(Mk~;>n}V4eYȈ M2`T'Rd ҊPSFǹ,6@jZ&[{)o)/DHϧ4|zV꫸ph_$Zӝ# D!(I 4JmA Sk}~B]0 .kb0%rvXcηCpx%d,,@(Il}C~t|W;&-18JΙiּF(摁eHnė٥ ȵ$D I{UBUi'W;Cd̡o0t헤64pjJHc1D2*m*Ed4nצL ѱIʊ_[N[Skj8`OAL0d!F-54Z鮣h-Y`-7 ԼzWH2 Z'ۢy9I=C (vN=-U46v߄<%!񱝖L"Z@fnJU#"(S~Y2%B@7INR7Ȏ$^E' *(}#=|xԌ/L?'oaUg+&\/=J<7lj /^8BʐlLgmvIXN/aRX?(;PSjU"{>n?Uk/Ke4SoӜ.4\٩F,>v&<%;;4XԢκG8yҥ|n0LB\%Cxv*L7ң촛M;aTϞyt]>)(Zeq’?bV-4P*P!ۻ٫Gsr v|tә!oW-Y[A9 LN$?=gGjH o:>kLUHC ſ3vtcFu]3鶃y|aEXijlf+_ZJyxkhIGRnBœC(-|wa=^xj3eFV2a3yz!p~eQ7Dݰ~٪އ6DW/-H`l=]u9ۭq HmruSkd /}īE+l-ݠU)MzqeJG6:TW"j8,6\&Vsx˂ZX rZ4#7ã;;ʲk9 hQP28>m+l`׊DTa+-!irTd$ȉCiK}*-ţW*-,2v{5#w ϟ2A<RawuȫGv_qVqW7UWԞTn}LAޚ1twAú8sF彈*? y=֪&Û@je>y9Ԩ٩Y-ђ3@$cs ϶_F?8X>ﻰ٦yw} UAVǐPBLyfjHw~i ^HM)c) Ar '𝫬+sMmpQhu gYaKO[Oj  wРܫ:Y mU:uAv :^"pYG"\m 4lZﺛ[|kj<%kЦEow3/ආ^XfvK[ჾXh l'gIآZ%tLN|wxtm /Z2k8+%!s;>=y}}i\~'>I!ۦUfh';  }&hgZw6&_iF?*s^1^k.dxh(=t_QMv%#vДzvat5ۯzOۧ?,½<~<Ƥ'  Yo\?'??<y*ְƣWכ?xvoYCW~zU Yv\JC<vSrXh]C:lhw^m~tM,@8 l4o2$O~kɿ0O;P3?12GLpL sY"z7v爒6cyb:<[d8:tu]'w5FUjK>\Tk(xkң .X mF-`΀Z峻r=kBb[-G?`[!:^r7%ԝ[e93قJlQit# EՆD&' ?զ YYY᥂[4 +hd*f"a2k䎴ݤ>B][CD'N:+ryl,#a3Mz%A;SܸJ+i?2hԺôPUh2:Eqċ_U8öv0\ KZ;/Pr"SL,ՂDJYKxǜ᳣W$ OBecpq}YxUJ2 ,t_6Մɭt |"rIKGzҡ^yWt +g9_e@I˸_gu#0* ՃC˵:}@+`zUW1+!iv=*RVvF zUdR(LQBFZ#ݡqNTI>ψ,w]|= 0pJN-xѐE5:%REB^}p0LZJ-~)9a{udq3x,(o`iޑUђq^ltY}f\XtƼ )!w vȀ S& z$U.дR: j؊kyR*'V/v+ԪGoO4vLQ/JD<1Vn֞~U.brGB ٺymM%֠? fŗZZuxJ^iJȶ ϓ440wbEDFgbWP܄]FIahx||C!I2 mŜ/U5ů[ݦOv7y5i>? A|@XhUyxS)n 4ac+X(:>~3LPЙZ#$s^z9jUstNֶO%~ FX~sd)aƱv}`5!8~UIؠi 6x뼕 >{IiU`ez!73my!:Nӷً]\![D%%;>izI;G s +9@[%Q=GYdEz$z+N\JOR &.oՓ^w7. JTWp 9:)6g'⓳{p37<g'"Hjt7ׯwhC c˞ߛO3噲['VuT8*?[Ub̠4wn~9-OC _6FKܙ[7#ygKn@]`}L勇Eˬt7˽ Z2K{^j-ɳv)]9Dy5CDjJvV>2S=f2 ;>k&We~__cqif#MࡤT``WyU<حuOi=\[]YD swlىN`[Ɖd[uAgy&^LI b,L3~a{^`bRtP8,o *+~IyE|B641ՒdJ x[V>o bJZYװR:KOa#'ܑsUFuP:#\?}V}_<+>K!g~l߰H\HUQ7- ob[OFW%#N菇]*nU{j I,}u2hcj)0bcO@?19xy6u;o[mv[IW9+9%iZe!|+#R0>a+wޅ'Yi2|97Wx6kT-X ㌅Ͱj) PO[3ͱ.)Ms)˫j(|S@%j>_ʯNxi'()MG*^%5Loq#~r}Q E+H+'i~͘hg֥HNe_$ ɳWΚDٚԻÓ'qAӌ䩴(Y]W3"/GYq<3Y({8'ʭAr%sT66N دZG $Ij)yw$d0QUlRpS)AfPc7Gk]׭!$J q GbQ-cFN2 :C>: tZt[#/ɳnӝG̹'fȠ0*&{_2)AZw .iu{y^^0*l>?E.eR@>rskˈ x˘{PזzZrTO3 xOex͡)*ț@L-"uV -A3ZS' q8cm>R ;`kRa;ծյG~,kGBgY,{=E}Ϣe)~}otq]&DsCaՔ" f<=\o*3D_Yh2Ljn*y{NJ`~SZJWs*ѩоᡓWKsjMZ)L/"LSmqRTظMVvꚞH $js*=*^ sRi ۍO^@^휕JTr<=祇/ۧBKGnEQ*=vwu~|{o^|7CJBP*TsR&q=\U;S}(pxvgj秽}8ۉSN>G˳_G;?źk>;zY?,!l3kK(,>3Ć!<5p񂭅7м^_V#xӳCuLロ?^'lx 0gj H;|~dJvctQnU6[tq5R~2"IQ:iK3o]r߹z{9Tf .IbW bdYޤҸr&TJ5!0 h IA(DGdt1Ewk ȵWsSLpYrJGD@0vV~G?jke?2_g%`f Yf C|_ ȵ)qU/uMɼJ>~!~H*g 4n c[[1Н3@w  V#"~a?Ny!f gy*r8vG7@RbP%~q2.'S1kHDX8A=VL@I"bp Z]d/n%ڰxO0fg0ˋ> /JE4mJ\ӥ1Ԛ:یUL odK7Lb+Y8|Tla$)"D%ݟaZE|XD|n#zKAk }V]^TKٍ3[Ɓ2 -n%[mCR"1j E $@aďf 6*byPxPq4j-ig;ꚽO K=х<pd7JPorLިn\E& 囑b SȒ|j'r٢<3.9:J5`PQ{RЎCѴka>Ϗ6 aFkXTQU'9m7ǹL%QL04wQ .l+ȓ}`b~Ћ`Ӡɟw_#2^vz/xY ]w0*,DVܛ>מK3Q)?齖){-@nzqD,79^rQж }A{(0P6]P]*3 Pӧ0,a?`xW:H7Oa!vaA rdՈY  fS@TkQdȦc4 |Ed+hp@.PWM rxx}f\>2mA @me">HxD᥽[ )E|,w# a#xCL3 jeḄl1E%$rUFw%A Tw4W޵7Qs$n 9{k+:֨b?[W[a -++7* \e뼟^&p<2̉%oP{ W4bұF" k;(5Op1k(fOJY2`G;MbMJphb(3V>Pgg 1PqT6nd]˦ p˙ 1r#. RL²>2BĕYCe,Mc!хo{v觃{#\#M:h@4KGuj9O kbQsL@ƨ6Xzw:p_Fp4jus/#"F_S%)V B\{QwCJ XaN%kR'ERrhke7Cu_oŀщe2QC]2z )R+1tQua`X"-|B/A.܊уg^ecĐ]֢pZZf(fWvb&E&f>hRLU#I '_kف?h ː2+fܨ,NCh? 1S}300gb~X qeD ZZAF3 L'3ӀFAa<@q懑s5 u]LհI{Ts 멓&Q +Vr8EVe_sAJ6x?A~^psWӏq>bGW kKg^G|x{LDx I/?|g_?{=sk~ϼg^3{=.NN* 8|76t( z`}jDC^㙼ED|Z'؄Lׁ܏҆G˩gtP )Eg!蠚PL8d C͞~F |}W+%RUL~`(\F7,һBZh6 JvV1&A1.\p"PW!pr;i-ɗEbDni05S+~A7.ܔ3&3ŽU E:XGÓ vmebZ8iV IaN,+Ċ@9ĞCka0?~?{Yd//'{fAL0+gk||a?ĶiDAɮ-Wɀ g!IMLI.F 8Lͫ%Q+f=Ib=N5`˭(UKuZ ^b+/c{Fc0 IG烨%$%Yl/5`o J Y㮣4/a'yRKʹPPM1J5,kt}d7aMS\zB,] ᦡ}Kuj9j&NQ 7'󓝞y;ۺ߯O[n/6E[04fB|V.Bxgu/FC榸c7d#'6z({dǮ;ڴsц9sUDƓ'xU Β;n*U]G6oO~;5Z}CWՖlKmj((9\Ӷg}'\Fvs8L^Pv4ٶ̍(GɊh}i/Ziɯ[*O2G^s^P:t-V)ȖM`W\-KvS^{[G|Gc*`zHҨEE H7c zc\ _fftlc_G$oSԱ~6?VVWWg_uM*TXA :"P y}tuVR Ե2J_1S!^k/u._`gۭN R`dI]Tǭv|f7}Y-)r:;PkF[Tj$u|g>;<=G>z^f2CХX/iEKp_EK !E騡}.i?Zz~M ^i<}ꔞ+E!.]-\D 0 `R`j3_Qm2j F3l ZpKD{9<=R?Z!Fsx8X>ou<^C.nKk+k?hocQX:]x7oح;p{~f>o\gq3޸wZ> 7]8ݿ_wvn<ߑsGnn8ݿ#wG\.)`)ӝ34[:s߬UBR)Qq;E\=كwO0%yL>./)vE9n>N^9]LqY I?CIbeKFkOތBDԊ[(e}6# 4"-**ϖ0̴rf޴FùWǸŢj,vb ҋRfBwVNn~'Aw58L@g:Ig@ܛd0Hљt*j+IڔKbPhuXN7qh6WhiVZՏN6-#K©zC:BC JHLI<}y 9ZC3 n0ipa<Ɗ9܀5ÿw/keth5 2 =zF4ܸB=ƃ Q2%U^we{S0j0$J\3EGO4ytf" ïRq_C t[w_H:i1P@p9xʤ;=x;{}oeڀO$ry5bbIyy&?䇙0fL~X%)_WMMA1uͅvp4q x`2ͫEg$HS f~z4?m{k|>Ha+@Ws+X]st zo~kY?O"0ݜGO4dV]f㵗w>#-{\Nz 1\Z ,O!fF+:"s2c+R2sA ֢;!.)[b ~Εe_õ Gڣ{M*Bsx3bܾr% K,>ӾZ1Z;nc#5~@J\jme|} )jڶ`,3Vgm-#֠=gvg?/ܷ 0