#!/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=ebafda32133b99fc219e5a03ccf9b4bb # 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 aCt\ݷs@=RkjLjdDM(l9+נebٺ@*eHiM-U!Kɒ ILouP@3;_,{F 6-+F!)u-}Œg LbZl4"E2f LH q=L(0jJfS…h`)tsx&X@#esC< `Q/e(s=\GrW꒳)`q$_\rJ#]h#lF `k+0vua8 FDd@G*KJNoܕ(H|%*l@28'WҨs 3'ٌ#&H;^{DpHJזPWru_!"L:g= 'cvQ{  8j>V?cNm_/ғt# q(3Eձ*$HrGRNIo0 I6Ɗ̤'Ui4Uy/A:@gw}dٌ4}D( }ek(\G`F$rJEO ZV2MV@fS)c8 (CE'Js Aa\gKXlcOCˆ9w{j͊Ee0u$-7KݸgtFPU`l(6lo~.u%E):K8HkbvC̩!mRbr4SENF1U\&I J-i=mP>&wo;mZOG4^mRj]W*aH,![ِU+}NΔŰCiPۣ\B0t\ .4! ypV,3HA&ؑ XtuA)%)-(Sj9eJϸnf@Ʀ.QBxH2t[$4#8BV`9+(LIo?&Ԧ.Hk[Y#x݂d'l9<@LIjYR^_,$P=_< H:8o+EX4 %S TtiݿD"I k&ZuE(}YՔ:q_-ԫy=IGTpYݫD6 -\)#Mn74>^jJc#TzKVjVixyfb"7M KC[BL(`HߩibRdWq;H⟧"W C6bhӹ>p&TAGk+Sx Z+l{GQ^E] HU{X gFL!I1 UXWglV#@/?ymjS˅~M,p/>B%`yP,<3TS!B6Rەks^& /ڱLF=OrU) Xa,s$H޾%4e*&3gc@],o ͛| )dĔ1vdI80/$M(u:!\D,dWAo=v&l@U{*48O/<i-4M?LcxPM ~e,&]RުN+* (hęVW:_rդHE TIM)cqDnD5|3D]Qӌ[k幀`ƝжЂ"nf',ݼ4f"Li)٤yNtf1,e=}b!;3S)5m4m4V/ u—Kp`r'M%~x}[&[tv}3*l=3Jy )LIu'; ŭkl0Df)̌ ?&X1Ѝ[>6~\dvk*tP& ><&F8B4QbAEK}Wߌ&!"V)%ҌI@)n{6廲/κ2-O fJ evR,m{ڑl2B}h7hXa`ڏyܼR18l`غp}@i?_)s<~vlR_۝۝۝۝۝۝۝۝۝۝;,fKSer7vVP^N_‗HRP;g5?pZKxZ[zc2F&d@qO'MZUf;)W 0hK>cjL R f LLUNUOL aGB0؋ySk[z![-qE3KA3 q4'O0{v1>a'@*!]'ikVYq@^̱'!Խsx(4a%tz򦙗ک6dŦY sTm|'lORqx*,k,C]w3OŶϟ ˟D]J=+52{Z18VtmLYwǎ}Jyϫa )$-ƝZk<':}jUt㏻޷yO#!!$Ti!IE~=aB2I9g (,4H<}?[::܈%K!uj90^94A"G+zЛfU  ~: X c*:h"ۼvSOD5+3zjK椙G1q|IQ+?5կ'"bI"L7yq!rs#kjjZچ)CJIxnf_:Yri?oz^F[Yxtk`# u]Ұﰧzb[3gHjvp `53xAqA^8p3#>} {19ޠC{3v}׸8X6]t|:)夞;y'@~Att=K?< #( q'?=0X(Q`O{ރE37qL R`zoLO?ٟ=Tދxj͔7&$v{ ;W%,~U״ LLICHΨ+>N_A˸&)ȔM P _̛*fJ6Z6hRaf K~goi%ȲriӼ_&[:r8g)owօc.RdxT+b%AGHΆ= qr`<7Ǚ_v?ng{VH/k}JE'D $ lI^Fj@h1xƞ֮n ;{ŽCwu-N:\ ==~5se_ʚ256t(+`0eɨw$E֣[a}_=cu]7 ᥗh/8 ?(:I1 (4;cmII}/hO]'(C(0nKCN.ka4P^-THb]@HR"BF'ZvOF3?fR_I:ItRI4O)6Pnn70XtUT5d@1;OxGI+mVW0p8n Xs{b(x-^FAr̖&vlA~ Բ {^#- @=Ӈ* AeSZi*,@ۂ ӀX"cԑ-0gl1ju.`)ÿnnF&;z,MF[.rӤqSXg^-2 dE8j$$ddL@ o,&_]ᄣ^f0^_2@jBk5+#`~T"&csxtP?]`r@G$Q&!9{gO])zԌ9jfg< ax]42En ɀC`12qMPfL3L5ʷ'оA,jRvZ\\\2 X7]Zb;N+*-|ͨq'VVQP'O*Gp@|+%r0XM:?yUܭ]`{R4l6_ V&%(ũЕ $h?PCƦqݤmrlgWh!v~&ݎ.iAE ΁im__b"hY]rfz-Z$!.1Z 3NEùHU.Xp2@ZKYcoc$!Qzff "BQŘ `'>DNn%J'\EY~)c375/n~B"k+uF5n4zy!md4X 7NJ#̎[ G)"wzWlDF(gNdHobj--=%X_U/">wLqƫf7LM'tJ +wpa; ˞Ec,0cokB=x.q%L @0.CKf/6g\lKHxu0eZK1`Enf4XU}fG 1,^>ltki@jO;Iy q(),o[}̄DZ bN9s}wue<|ME۪㥅Jq;ܖ.73H9[Y\ЀW~1})sҡSXM-bQΆjB=d"eoHZC7{sMG\³tk -ӏD7]ȃω:%̅8a1IY VDr!̠ Y>'s$4OA2N+) 6zT.N1U5/)H.UlUBFn6^EJI^6敺:5?5 h.Ⱥ}ϙQZZO3ua,d !ӨmGX lˢZs΄5\.=FW=G ?IP{syLC^m7ђ7m 2gewR2%I);'䭔1N5}s:y;RGWU*'6%i-2u&Ġ~ M|3*8QI?ʯQא;a:ݬƱ3_ Zt,+e,C(mKeE9:1C|<&d*mR#KՉLIy,I·褛bY[g=Qaj!96rD4c .mخۓT U!tC_UF5ac7fn *|"K5~ykt-[ܐ6eN[Ξ; ̖2S:4 A~7wL72kUr&M?cD=eN]VdxPۏ" \۬ H:=̗g{U`@zH/ZZ[UJލUeU۹;h`[Qyz' yIPb ºrK,<^46t]0+=Hy-KYw^ZDпp8*|-۰=#4(1EeVȏ<.U7) eS:8բrFTixQAL ހvU{1EÄZV 8N|O,kj~8J;Q:#y;\)g;99!pt&ء1cC[8THJO-I8q "_3$t4wۜju 2H6#e[Ԅ*zR'*^1#f,1/oM7uCo­v:߫I[ג.]׶r\]Z/'G.f3`*qs|vR" Z'Op"\vnNv̘D㟵bXE$_¤QD b]Wy%ت]mB:-발 3m8i%:Ic#NJ)8s=iK.uv{Xid {I4߮ {7 (G ?_ÖɑX V,KC9*UR8%K>`zQ[/%Ub`j?4eM, V}ݹHpWkhLH5 0I\2nA+sc8"p28H%yTGȮPۼQ˘ٛٺ wĺx+grUuōΥƊFS\)!˼TkӱW XىA"9>9;tS#MuKw I6;ϰijfg6Aff:3HYy:&NH:gkZ:qZ-[2oh[EXtK//p#m<+65]J > ={r Ο6N=-WҜV} =;!_>П 㶇I 9o _AQ03Z)_&*aԤϝUm[uLiBv˾a[}ItޖS 6s(IE71TeY *nۙT?^ PSZ.n棊k~eZnYRQi+GjhDw #5B.lLpBpIp h>}4q|16xLnto vNe*;@EH"F~Ws/je*fNTɄ Qq)ivݓ?'rj㴊s &t)APk#ܑStrRGr6eh3㥙r؜Mrs*UovFCq6qV+2!7+_)((l5` 0k*;u#Ҝ,mU<_`W\`$P j8_[>HBzoG@Ѕׁ2GgϠ_8Sό^A _&8:" #BlE x\Q(j>pTǶDtNb;pDXŎ2ʥ) b~c)hmS߰Kn,}aŋGal]E(ޭYr6 c Qq d+ vo]:;딭]]ߚVn>kJFlU]3r0˛MD?`q[e?7J Ù#Gpc0)v6J&4mc.ֽx="(ո h觠½cÈ]mZl]k–0w H!"rc$["vkڈyw`[ \fD+DŽ,vlp*iEg:Y)y<^gީGӜ_¸YMr2nNd̽{9?k3O֌*ۦ[\1K L<+bAE"D;`>"R2J4DmtΙBe0PJEzBHy6PF~vz#^?@8`Ng*<"P(i}Cs< -ًk e_|zFKexxk9z+;$~UܣF{ ]pVrY8ݯ׏㝣WgV?;TWm+ _1̳-VXCwcc*uXv'<9HyհX/y;D8;;}4@Qs B\#&|N/ X&x~A=M nS` e7f=Rbr.үC8_6z#Ӌj!+*%54G!9Pr9J5M&YoLjG/Th*(p*ef7F5 oH2ZeGX^W-k[*^sAU$1&* F)N(Lwۭi}垎P8_RoE6Kky+[ %(gh'>;:#\T  W3v)q)DW鎮R}Vl~֝ط2f4.?FS1:tptp7afћxD #x<ڃ{JAW 6DךAh-k5FtLQExVz=K ܜpX-J"'j ?A~C/Pn˳xw̝E/tmAogPNn96K& }7jNdUJS #tkA 2Juf:WFyt1о|74?TLd; P/|Mhz6P& ,Iɹ²afJmS$QvØ9K ?Kxzރ|ja=DcEXl0:p3N6yKGİ-}@6h=%\r}}Bd2]` BU*^>p:8 C7]T`ahfa2NbtwN4]fhKN,`˅Ģͮ'xÒDr$PUYX-F+PFaOaR -ǎÝ>c E~!)_" t=5!LppNˈ%^̠ϓARv ʈv Zޜ`<$<~YP|BNSR:}(e2Dsk8qI'{C6=4ڴن/Yς]PD&-sV"ͫ>=Ch,ZOhpara7@@邍\Wuc ;2YF#>K1Lژg W {JDN Q759 4,/0N G;/oQ;Fd%#.| Ų۽{p`v 19d A!VU}/#Tݹ+)PkA9c[\nbzt4fx8U'^c'l{.Yd~b ߈]lHy"#0-U.|m9#@Kb뛨7$r,2uWڎ9B[V8WdA0{YfN>:Uoq~H!yֱ^dd6Y:e/.}â0r[)‘= 3dH=ɐ*#2C ` C3z8]8|{Mп耖#;}lzFEđ.u:*e|2d;|Zuy*%;uQ\.Zkj \I{"~Vګxi+Ǖa1\Ӄ ӭl>p^naS$é)V:0tQ)QL<6np)1TLLri˸iZj9XC";"l gvՓħfMnTwlAtCV )cy}k-*Xɋ?r@a-‡C![nލo *.|E2lN} SdȢ9EeV.ǎiWY[_y<\Y]|Y,g3f?YtT+[2Ŭd ʌ&^QD0 )JMiEu()_sI 5S^[K") ޻*&c#ItH+Q:xO=RۯuDPEtA/ ֵzX,&rD)[юkv(wt7._BAzYyTin$Yze6ʾȡtˍRG`\ _Oh:U`rGN$ңs&Fұn\|-@|]ݏ\KAy+γTәC}KJŒ8%Z>%^bnS*$t:gxS9ʊev[owwI-l7u-X>t[KO׻Dm#/O+[XKTswRf0pgw$m~Ach в3oefݫN& OpcK05U T˴Ԃax^h.99=ܚ,~1s۱۔2J㼘 tn!ŰЯCOsuPAIlz:xg k)DuVh9ZyدJ`,U'@=3Lɶh^Nn9FeMDfOf.N͆7!DI7B|l#m ۄRՈT;G'o~knDP;:mR5 c9{ɮ¶ J`xŞx>ojF3 yV8bP+pte%BĆ:rxBHCؘi\ N1 I8L Q'8%xjUJdM#teWfesڅœm1%5`@P6dU:&Iq6jq }U0ݥGYMK0gS]rW9`Es,LQO!,#vn>~OV 9^u͞=+3Ӟ yZ%hd 'LXp)0<8kUi#($(_%2!,W &d7Z-Uo3ȃpO +J;0 T`3p5[!ՂTjȣ@|[ E.E,&Avދ.لOy;)ߓEfM=Sj-/]߉ 60Щ 盬WuC뗥zu/CdxV* Pbɦ+UWɀGX{&hQ7FF҇JOZTA~?ŵFpa)\ *!XҤWtdCLqUxX ņ+27ٲ|'VG-Ml/N8BYcbp:g-jW-6\f5Z ~E'$\ޥ1I/+hyG߫ henz+T&R֑R|5_㵇~g3??K-H"Iߺ`W&#?̋Bv?b>[eЫ~;~)'mh _|0hnZ[#w.NOkYs˼qi#kpU껺JyգKuG8+޸+jO*sQs oQ eP?t.ԨQG!עZyxhX/Oeɓt|k{L5Qۢ-9@ ޛl:x'K'ݷdmSǡtfy(m&$7õ7̛ 䜱<@dRT^ަy|3D-+U5:ocdl+ŦIKFcf1/V >L8i.iià $mJ/!:{GR%| 5MN -OʥpΕ}Nyv"q•ٲ"=(X*Z||zYFh!WQڀB)s\G4Uop#g zx ]Єk||?o[]Lmpʯ"o@Lދ#e,Ey>!hTs2z}9t? QY |4x+16C4{U'+Jgn"r֊A+[Ca4E֖-W[‡ ֻ10O`Zl#|k&pKP叆>-pr-uZp&r}`xلs-m5JIp$s^__wW߉ENRLHi;Z;b+"N'bC 8m_-VWh&h-%\wG2(J!FO&Wsoox]'4f]-AǯO+p&++1IŀBoco>lޮ5?^?[Vh>Ǖ/~<`A*lҞ~A|t|J ;X:6xRΫOO9M#鸀o-$C<8*s$0QDܻï9⤍z)k]v_cNf6Ocp}/, FF1ޤ+MNӌ7T.~Ŀ/7sQu|FOD ~ds zB+]NtVz̝PXi=/ Zi= BUZ N@џʮBLu$:)*'IWՂy$A0ˉL1u:T :I+!sg .s&Ư0^/T0!7ۗuWů1[+Xw eSLNK)N_]=ң,EA]`td'-~׍è+TϮ}}@(꽷fşM3q&HYY9ld:.;nW!NIA1ELFN DXAˌ(bzI/2ҷFӸUHh߫)ZK)J8DmW2<T705*h8QntY}a\DtƲ )gt vȀ Bwu/ zn -ݫ\4iO]duNRTN^(VUK4fi&)HybM~U.brGbuteL)ޮFn, m+Qva3iw+9)'M`np@> {;`I@ԧ%:i蔜\2nw<.e2b迆5޷R_ }">>nk3uѫBhr`]&<"zް4|%Q$,P-j=(HIF y (͝7$(1 .s=*r҄KlemQvNޫZ\eB3Z{;G,E1OảAL<ߍqWӢ/O,E.Gz( ox=n'YRW۵L cp/~x>Vf_g=g3{=j R?Ο?=D7d.bGrocX䧰^Z]*]MRI&fF[,Vjo*x-u-@)Ѡc qØSICㆨFQԇe5J]q18u^"VKkKtS2Buoƣ[k8obׯLiS:ic(H1jS1˸q^R _]OyUxM'(wR߯ojy )lEj+?I=IZC.#5Vy/?Bq>M%? fŗ4[uxJ^iJȶ ϓ440wbEDFgbTP܄]FIahx||KTtso̗W\lA ,~62.6}Uظ | I7>Q׸vyׇ\H+w*o*XyF45lc=#,i+ tf=`'%0 j휗^ڪc)S䬵SI&V!=ܯ=Y xbdq]A`2X {zpUtzF-t16(DDf n:oevZx!4X&t#fby-/Di6:{Kw"W(dGɎϭv~ҎQ`{#xlIza,Vf2z$z+v\JOR &.aYm$=o7U;`1=)3xbʦYI2\(Ojyى~6 ! dl]{{Tz|%ϜOXՙ:RQDVDoQW14ktn9#栖< %'|ٸw{%N=Hgn侁  ^gur?xczO}OZfU}D`Y_2(PVfnImӽLʁ_%*dwl"7PS`C Cr1ː9]Ly2]K~4yĽ(KMߝ' N3i%JBΓEn=}*"O{%j'Xe-(S+,Nwʇ<k0Nd۪ :W3`Nj@<xg;0 !B{ЋIou}0V5 ̠b%PVcm8h)-繏%bٳ%_ I !E%+[] ]1%؊ێi/k~CmA%槰xȹ`:p.ݟU| `l3D<)Rؙ_F57'<,W;* ReIKeDwj!ƖbwG~$ “0񰢠Kŭjo[V:[TsW-eFXlliRUq'&[74:msQf7E)tu?ZPB߯+_q* \"HB䄭y~`hh,"lb`ߜ^ItجQ`\36#HxIx Z(hYGuIh⟋UOYYUC9|[W< \^sg*n(ؿH:4 ,fx4{@^J6#~r}QEf3'2h3uO-X5G,s<斥%;P Ts-h*ͼ1ӑ@ |}{;gumi ⍦',PEL1tѦ^ S\^aIt0f7pӂgZsA]H}󪉴0fP)xcV[G(~;܈nJP_8θ+e;HٙMb9@"k{ƍ' X$P~T0y2}|В_èmba=-,|U`5:~rDo:h_N$YbYY 듖Xم6yym]ĺu*"fd`4'S5Ԛ ԻsU铤|i}2)-3 -VP1Zb\(+8ng %yD $Q":Gecx E{\1@KwpLHFq- I_E>\`cv#Sj0=%(^ =59~C{4׵;xR?.w09 bp$fYz r{:kt $Blc8m/L BWUJG5<>݉}˜y➪8~m m#_!=T7)0WΜuO!95cBa5z4a6 ƟhYFl>@7?{u [M̒1}1xb5/K:拆V}m{b!5i<9uB󈂙P8 л"Qzy1)mB_&^aKaNnq=q7w>_2+A\w"{No=a//[we_6ŠQo"2ۀg) f9eD`<ÁeLp=Te:,V o\&C|:#ASq[9~~9T>e]yTER!xHuˆzPL.iCXԪaF XsGxusv'ǎtqo8{uѪY~B߳Y,{=E} Q&Sjx/>=~Aġwe1? USL2 OԛGlr e%09ܫU9+UȂբKNk*b_'sϩGBNؗ_-%wϩ5qj00{N=緩ISa6Zskz*j 5 ϩ,R,v{͝J7fo7>{ysV*KhRɍlgDR{破{yvKhXwqpugG/%MpwR  ewg(~JNl؁¤|'l-v_=`z5^wzuk&_1xv쨳 '4 )2FyĪw#$BF9Zq\ qУѼos:H>46(3+з4cs;8?*A]Q'#pqǨ(KqZԂ#>̰qfrCO$P}iɷwȔ 0F5" ,=аq5R~2&tEfh]t߹z{9TfH~ .IbW bdYQi\9U-'iH#_0*02NtKKStw@8\{57E%d{D1 cluWqVn_X_?Z?BF0,3K0u/]v: % w]S/?)Pe?ăƭB=alk+sawz"avD8өQ?o7,,/P[SCޮVF_(QAL@o?N%~}j>`Mѐ 'H*8 \S IDB.VAc­D y, ftyч e_ٻfzRޒ~|"FpZS\gj ?rIVSLreuW21˳*42qSh3LT1Kуq4ߛto)hMuzϪLE5~8d8* -@VzKpofk0z_?d!콱(ƐQ$@L$D2.:J5`PqyhG\[!ΎhZ XGXYuwU5,Z ժcQ(b&DfLpIIJ>01VhiP{@;,Ssdd;}yE`2ߢh#絧hicf*^9p7BBupC#^d!ș ͟1# CJP;=};$.L6s3zplY:1 Ā;|>Zid{ ۹>~9;C}J$*lv0$е US\"ަ6^ll8B;矏6ɨH:*#6^T0V&8 MO郤ٺG^0ie`((L<=s2D;RX!{сZc}t Cф śd*;EwJw&װЩ$GqvptsupqPO+/ՒgXV]ؕo vAkA_^e^&=2̉%oP{o|MϦi`ŤcUD0vQX1k"Jc?Q-l*@`G+Mb%lBbSN1H{ [@r3n~vxgthUROfڮeC{tZ]GLW`@z`FAr)qaY] slQ¬!2&H R'=gA= ^ʦ]4 :yO5n٨9&I`IcBv|=Ļo/ bx#8g`EAHT z#UW3tE,dXR"TYѴZZEy])BK1wtb:qP׽^CJJ,L]T{]XvFc<)H_K/ mA1dk"1=>dn- }g8WvbfE&f>xRL@U#Ѐn 'ADz9{Uwq_ >|5,_7&KP7ς U >YRO`3sZ?|!qeD ZZAF3 BwgyJq9qV C]`P5u^7ҥqCxIwFʣ'!pNGU vw.HQ)&Q^/'( nxt1#VptTzE|tXqOiDŽN/|pǏ}G3=s~5\g^3{=y}{}'ri:xRdyA[pH=ydx5"t!L"t9elAK\ׁݏ҆G˩gtP )EPCA5,-'KIh=4jmχZD Qӽ孍Hr"7h{>ClvGd?*|ߢq rT̝4bK0XʴH(ؼ_:rLlC,TS &܊PTխАW;]i37ÄYTdOp=?DLu')R}g.1 10l =$i"x`j@(kBn::I[?)҅rZ%NE/쩿Y/ϵZ/u.;,[˝f5.S^ ɒ4.[fnuZ.7Sb7u@l}SϪ].gtnoDll{!cxm b{=nd Ac\j}x-mq-50d-g!hDtvW H'˪bhAAzS<0Bp QIK^>EO MYnTģ' l";B$=e\T⮔ijȝ{+8fD [9"u,(!rٚtG8%EHKd[s_seYp.@( rӭ%%<q1nÕCW%dҺZxq?VVy?_GXąlͭVg'@M o1:T.Y.g4u[˽uCeOcgg3 6j0