#!/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=151a387b10e4ee6649d810b9049a0ec7 # 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 "`Rnqѩ5/~UlQUW|QkVz٬֪գ# .!/pO^_|p٭OJ2WkWjJdۧsuc|NG\QwM̓"Q|ךIV%M5u֖ 7 hseψئ<@"d?EGiH :ЊhƮ@& ![9C4񼌽$Q01׭u6  FchI,a:jAm_vp% ݧϽXLa  YSF䶾HYƌ):4< ECBmZ) дp|JM 12n.ϙ_$+#ޒhd0BsѼlnhY,ꥬep^Gh^J]r:% ?K\z]iv }u$H,{mv#> GWÞ WeI鍻rBTѓdAMHJu.}&d#\V8`xdrgkp< s]Y= `V"*Q.۽^W@3K#d@dI@g'dծ<:*u@@bxԑd"GJU{ `I0XzR2x$]! e|:V%r1ti^H) &"!)ݶfX*F*eP5Hl. 3eP!חPLbm"Db^I_R#a\ˊT lj0uGueWZ|N2!(r`6Lt@l)mW)=õwh3cOY ƣevwHJ-ӆmO` CgbiM\n95D|,TJ_&~jTrhҩC(.;$< Di4O-?PsIѦtj4^ITx?B{?hzڬ_kU*aH,![ِU+}NΔŰCiPۣ\B0t\ .4! ypV,3HA&ؑ XtuA)%)-(Sj9eJϸnf@Ʀ.QBxH2t[$4#8BV`9+(LI?&Ԧ.Hk[Y#x݂d'l9<@LIjYR^_,oN\! ~X,Mahݞ\|.5zN@؃$Zӽ^|x r'>$P=_< H:8o+EX4 %S TtiݿD"I k&ZuE(}YՔ:q_-ԫy=IGTpYݫD6 -\)#Mn74>^jJc#TzKVjVixy%fb"7M KC[BL(`HߩibRdwq;H⟧"W C6bhӹ>p&TAGk+Sx Z+l{GQE] HU{X gFL!I1 UXWglV#@/?y mjS˅~M,p~}J0% &X(xgBl4+$yC_cz,$S hu 8)X6TwI+i)P1qy8b?|tVoK6@QN!#Ȱ#O7i|y!ijG; "R7e! ; zv ndO0Hgs4S88}z%Ifn iej/%>s` hj@.c1VuR_YUa@DSW$Τ&E( MjJC$mwC|&t'iޡ$Z"fZs( 0/q3{? f楱0sfJKi&s{4ӈa)S Iޙ:0LYnanz1o8]P<6n(d_û-[mְcfne]}ȇ02\>V3 F8Q*{b RȲXHij@Pvsjƚ`yB'Z 'F,,#{O_)d~jƔGV4_%f8bX/4gIO/vQvKWP:OҜ B H,*|I$ ){Mn~6_W^~&{ AR~kh.cBbBѴr%s2+@9ܚt%MZ/n[EmR+@np!c+>.Dc!)+兒 f"YuѐB-UC%GKbDه? l>I|o6tFtγ}Su^z|܌^zSIaٖ5\ix&|ڀ!kX.m %Ģ@ pd^G\CceJvdT8\ jpKIp}knd B~0R,$hC$|5KX,Hca!S FS n݇ 9QkUf>8hܤmˆkKӢ o2I (dŅ҅NR(r|Ƞq^@Z[Q6\ʻՌǭbÎ%+5W0)>qǐӝQa#tٜyTȋDd`Md2N<@uYX(n=^+Ef!"L4Kwf^i7}",nRQ%2 C\P1d02.^%lA< 4i79 ,H/Zf4 J):RWj*k}/)`羅Vi9uN, qRbƣ#779H4H39i4)٦ @*FGvTG͏~vɈ&r񥈾7'sg' #nG!hdqW˼Z -oˎ䈭[Q䢙R8oU= _H .5lF8Fx /JXO؍bَ9<{LL=DyK[cb,ҿ96>g@')r 8< 5.LZ㻙b[pvO.OJ%}^rOw昇+6,ktDZsRްj5Xb Iq'槆 jω5qv2]#"myHH,@?%qZHR_bO;a{j)+}DR9ifQL1BqbDzbX0xӍz^na53FiʚtGʐҺD,Y$Ddb\;rOn%$[m#E׽V,Z8Oʈ3ū7Eq&^}>edT{=jYJP5/Ɠk{NsDns5-F$V5>O1ř>@B:St\?To̫6Ao_6(gc\j- $]_wgc&Ʒ[,4r^\ۊz0!A387^Cδ&?5+{R {$I!\tm9+Ohd޺TTHcR^^ +&l7 3`w&ܡ8BW ,g#+&t=&Y6VJVІa`ҲF{5D^_l ~D%x*$G@nIrĠa0~ey8]pW-&Ms6M n6k/y7fQQ3Ƽ}<7|(d:i`li Q'XLRF6SbNf_ܘA+\U >R'0kn3&Q3"9vD q¥O}\_=X0HAlMl~X^w\f޴P3PѲ!HGD 3s>PX==K} ͤOd.AkN2uY>Kyo];˷/ַ.s~! qTB"T[ ٰ$Tf8_+ngv?i8}߯_ 06Nx1l'w׷P-Z og[N^q]]˩S=3C (\ ==~5se_ʚ256t(+`0eɨw$E֣g[ѫa}_=cu]7 ᥗh/8 ?(:I1 (4;cmII}/iO}'(C(0nKCN.ka4P^Ÿ-THb]@HR"BF'ZvOF3?fR_I:ItRI4O)6Pnn70XۇtUT5d@1;OxGI+mVW0p8n Xs{b(x-^FAr̖&vlA~ Բ {^#- @=Ӈ* AeSZi*䖞1qto &Lc.zj#h< \_MSG ŨqtV>mpT6o \")NULax4pK਑l1<4&wzxx}# կլQ( R*bLtw`[Q4PYQwJ%Tq ;ReTX (ʥiihQ~A=RAh1£34T XhE)[]^8֛HyfwA`Sw DMך?ַw5fP3훝T4q9wEh ȄI٧&>X qȦ5WCeu004wj*ߡTC8 IyliqqrU4DCc9TGviY2[o8㪴<V7zĝXY#^ FAŞ>f߫ͫ~ aKL2b4m_B}Wq`sƞwMUAbVrpJ?LN|y6X ϗ`BW.@ [ānwɱ^Xk5 {~I1VT+ow;R!58ql}}Ћ8e}tk˙w_jĸkn7Djc8! "Uɻ`=˜k-%gMDg삛/ EGc"3X'#rrT-yU?\/ ̺Kv1yqkYX3*AoTu{qDP nn#ZPApwUxav,@?Xj0?J7K-_;b&6F9s"C2~3SkiJxxs G񉽳g767^͠0[y4g<-Gmr7$#j; x|ߗbN~0'J=E!5"l{pz/$C&\Fp TLﭵ?t0״}%`jM$W ɜJcx>JRiNT*m@in]_MS[󢑂^ZV%Dk$FlcUnXkoejοi^s9][#YY}P-,BxI%%uk0 =V`+lZ,L],tq[ϊ~P)Z[gǽgKBC 'Vdg{#(? ҹVKpDOZ`p: ԼbJX}l@>3#2k4LM™g~Z{k8OgfZ m-n_1sf G]9K<6p)0:zFo4uг۲(V3auzʹF/t$q3<+g{/P:AxOA#T\G^rWCd/M_YY@ i(z~{RyJ9 y+vM_N`dN#~ =M#q~e k4>f9g 1(=_30Ek*_NgThR+w⾼o'}5Nv؅N7qW*ˊv{ː+Jے}A54p&hwn!O J[Ru"0SR2K!:XYrkZ{8hH7X* m@+d-~U(B(*`QM.At؍E/_諈)Ԓ!paY<ݪw7MoS;fꭳgg:̔2tC cZ0|((oOQoGuOS@*HW6/N(u%^RꋖcpRwwuUYevN;-V6D; wT髦Ij}^R*ԃR5 $ $ ]02JRn^e/\~"&~6lAw<7JvLQ>Oy 8pUMJ+CNƆm^o"rSF7%n^恹uz0x֨:a;*~NHޥzzYNFNl?A9}3v(~̘r4o12{glzvmKNGW B ]F~e=F:Zg9 ><qtH5%BԉJvx})f{*&8wL| zЛp+@fm2vV_鵤K׵-k E-WQ JlÉ(\cۃS>~{t*3&ggQ(g0{%Qdix'J;p5.װer9r7PŪJNODEx싅m}Iky.ey* òUDfw.&63t cLtDW[dy\%H8+ /sIU/'+6oyy2fF./m!ʙ\U8Gz(`sqsbf>44pʤc2/tգ->|uv4tHζON>tS]}3lZYM}кrEYƌ#ji޲ɾ$Rr=xٚNbV& 4V)] %\HNJ&vM`gϞ\aMfojc˱4UBdlHgø᲼!zsc}GC[WG&'>vLrVmʗJ5s'ymVoeZPݲoVzuR5¼M\*-uRc (ai$hYBV}[v&+˲"zCnVg[Torʬ&+0Hogi ۫*E/(h|;܀P/"\\Om(Mo_8^E*ӨhSs a!}3E nutza(i2aGBj?cep8}}Z]=| =8"yxB| {qJԱ@ڧ'wԑ>=ME<)x;xi-*6}\ܵm[jdPMjty芌xCW J:b .#3B|5LʎdH4yCp1/I4@ν}8A$kf4Ѓ޻q?%}5Pi4tu31N*ԯ3WwQ4(0nV/&s^Z 5cV+lbN(pq f/ 47)f qXPI5u3s3bZ kQh|0QG6oݵ  nL,/ #}x,D9Y1ݘe;5[hqly.xܝF iȠ}Ih)ߺ4#Ekf`*\P r[#['FmPm:JW\ 6Ce_Ψv+]B?q++J +.ۆ,g0Y?knajr SLӁBqCJcu>֕WGE[݂X֓N}?$C@xxQ&Ó_gaaaaaaaa2;vF;W."͵iOjk :Ꟑ=m64NCow~|}Lz? K`3k_QohYƽ%ke߻&=8zlx4P@Sa@Tr`)T਀!.G O<ĦA[)و @)19!/pzszMEgvSw a(%&˷ @ k*E 8]27m$X-c#[,ëdõ`- ~|9p^p *wo'&TֻrOGF(sś Up)淢WUյqFxͳol. ҫUtθ+tGbs>B+6?~RN[Puw3Mv[#v |:\z6Q{m "`b%qE+<:޻tho &&y4IOgtiaYN03~6?)u(ua̜v%bi` v [zt-p^Qhapu&=g$me65-x# !a[ tlр??0;{Jp d & U>a 'O >.x3EGX5 6wTusr`2E_bvfi\.%Env=4$#j1r_6:{ g%MZNmI=vls](B[4M`Ȯ e{#pvzXF,.iD*d=e} *L2SPFp.;UGЏws&9?mς vpC)&P\cʼnK:;eѦ6|b * x0i{g$i^9G}m8Gg2{|Bk> [Jl4\纒ĨSx~ޑ2 e'Y Ȍe >clH$Hp^p?XO͑PHǥc1ϘxiqU?yb{ځ5"+IQv 53hr f B( *ZL~Vk]k W)J^d\ n>yrn|[Pq,–)eulR C).JuWwg|?vOzʣu/!<|Y,g3f?YtT+[2Ŭd ʌ&^QD0 )JMiEu()_sI 5S^[K") ޻*&c#ItH+Q:xO=RouDPEtA/ ֵ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& ˏpcK05U T˴Ԃax^h.99=ܚ,~1s۱۔2J㼘 tn!ŰЯCO uPAIlz:xg k)DuVh9ZyدJ`,U'@=3Lɶh^Nn9FeMDfOf.N͆7!DI7B|l#m ۄRՈT;?D'oknDP;:mR5 c={ɮ¶ J`xŞx>o jF3 yV8bP+pte%BĆ:rxBHCؘi\ N1 I%8L Q'8%xjUJdM#teWfesڅœm1%5`@P6dU:&Iq6jq }U0ݥGYMK0gS]rW9`Es,LQO!,#vn>@V 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-MlN8BYcbp&g-jW-6\f5Z ~E'$\ޥ1I/+hyG߫ henzkT&R֑R|5_㵕+33g3?)rZ LyEFuG1MG ~8<|ލWv2.6ySvOĻӝ=Pzy`)*Zmu2G]T{xl_y>6F<RawuȫGv_qVqW7U ԞTnLAޢˠ~~]\.Qy/CE(^Fӧ;5;5kE?Zr&Ӂx7tlC;WN:~#>O?|릎CLxQlLInkyo779c+Zy/Ȥ+MfZVjt#VM:jCǗ[b^HͭAz}p\kӼXgo.l)@E^ޠ(cHAxnrbh!g~ڤV.tv{տ]\4c;̖E!t ohXu7@gHԀ8x K2,Mgw^3/ආ ^XF_,4MiilQӂ%t7x탽`&kGhˬ!UJw|k&ӸbN,rbBҗ׷M'$[Ow:AL(8mHjy-%lLFc7Al)Tc<FQ 1z2鐿 {?>~SJ F>9D6j9:_?~UO\Ys5Y_y0]ydI@|1`Лi؛yyGb h>Oa9xw[[갠y I74'`sOӼxd?p%du衒gTcGe7{w;GB/rm9~tk}qil4yeSX(ƛti`XŏxfΡ:꠮UӨR^"zxܼxaAr[T$Q =Z G?nv"qXc$HW.rsRq FI7L`-(@8 Ow-yZJf'=Y%-' ܍@?<{ k'\I e5w g>*qT D^wuSxըdpkh^g.E>6\bEBaBZqJ3i UY)Fm'R;M.&w..O'\&^ʔˈjqw۶En{&~\q/=cZ , raO l5i+;DgZ3 ӝ_.bC#LF,:._sV+; |\McBC{|.zYXLn̚Z9Ƥ#F<}O"@ԁ%R%B[ߡI:d2B$%?eV&ZCSp|l@Yu^,\J;-)9aV<}{UL֕uFve6F= ).81jZEFe~0Hmzo$[*s;)v_c~x^>z?y:?3{=g3Wgn v~p!€%4w9;z;}}"?V䤅mRM @5)53*bJ_VxSkXOnJ%cƜJ:7D7ꍒN>,,Qꊋjѽ\^[BQ%~3 Y3I=~w~]gJIk{CAQ2qG_ƍJbZ@+k*'?B~}T;#\V/HMQ@t+ U[O ?K%pѴ{}9l /Վ4Q0(٪$eãTJuMSD]x4AC4_/ -$0:$͗B&7J G ^t %~cj5bs "m`qqӨ]M^cMbƵ3H4D>BXhUyxS)n 4ac+XaQ}H[f3;1F(qIPkrV[MY"gmJ6A0 Ah~R#Sc kCpxԃ#6nA!҆3;lpy+|« 4!73my!:Nw˽]7B\'K5i{{e+2 rC%VҞAy2sKletW*QywvpM&{`Q-]cw+zkYL/dOZ#U|F_n$Xq"V]ٽoosR;عHi2l ^L=5|CQe;/>(w/*kAOi)<},Ȟ-JHZ (z-YJy(iVvL{q_Lj *1?{pGMWMA]hpu8*xNW}c%'IY2Yag`?7`}QMP%,NZ*##E&\% 1=J$#I菇]*nUj I,}Xu2hcj)0bcϢ@1긡ow6;-Lւz Д4\0VYJĈѽF"'lE;CCda;M/G Of p0 Q@:KsT DAsl-:¨KD\zjBO5C/o'PW^oM; 9+g:"}0ՀL:jRc/ӭ8!@U{]$GVJ^f/ ,niᅢQ-:ʽiHs}^~o4=qb-bҎ9K6 +L m1;<Ӣ 6ǘ BWM1Mtŕc:BFuSbmqƑ^h(Als$ Y 7nhI` d0Ľ0J;`4FXcn&F MeKf&1 yҜa/7vq;gx1qȅKjKo{+8fYdbqcTQob Djp2#qEU'KG* -('~̷8 5::ֈ!f'\ ]ÓTX͜~2ODє Nc6hO⣓'G cJE{O+}A>i~Ř]hg֥N[2/avIfJp2YK B[:LIw'2bu]= %EYyfQqLO[/ΈAr%sT66N دZG $Ij)yg$d0QU(l6f1=S܃PPc7Gs]׭!q'J q GbQ-cFN2 :C: tZt[#/ɳ=oӝG̹'fؠ*&=BUsLUp~^zuaA]~JS3Lq/dVgJ!`#@xj`TFo T0zק?Ӹu!,_hܧˊ'Vs:m|qzD~chhe@*'ޥ_'2]36sXS79:! 8( ϊ3 )R 3҆)EnuQ[_C!M Ȏ | %4K>̥ڡ'" ~pYFߓqWVe#i,r) x2h[[Fl3Xǯ #AZR_[i0%!|J`8tȧ34LpM8/CS/U7L[D.{K[TlHe̴kJL2n6đHf 5wJW7g~r~oLW6Wkz~g߳F,{=E}ϢgQBI>ދO覆uq]&DsCaՔ" f<=\o+3D_Yh2Ljn*y{NJ`~SZJWs*>ᡓ WKsjMZ)L/"LSmqRTظMVvꚞH /jv*=6*^`sRi ۍO^^JTr:=祇/ۧ‡KGnAQ*=vwu~b{o^<!AJ{x3՜cI}p@Z_u)f;>݇G;;kR;?~FN$ŪK.qJg'?׏v~u_}v~XBgx'7WPvXx$CSrb|& {h uf f3K0,3K uj!/w 亦dwbvM%o?C~b NW΅AꉄI+DⰟϦFt䳼}mO9rU{Z#eD71ƇGs8}5_ GCr, @& pM$1VX. mX<' 3E6ue"jN6J%{KҳAjMqmƪe72%&[GK0],b>ȃj0M͒0"R,EU{|o>35]>.2qv̒q$VE[ /VCòHCF(F 0h#ر jdآlp0T0zΩfO3!ROu!`(YGMi d5Pd>U*晠8-=Sٟ-ɧ6 =eʨd#밟(B@AAl9so!8;i.`}mbe%Wְh5~WNrnsCF`i΢0iY W'')MZAݓ?g#GlB/;מAKx^ ^ yAXM1xk>#g2K. Z6Ġ0c r ]PBw&j% gLr%^Cw+C`cB퐸0I Πq:eh,JBS@TfkQdȦc4l bed+h@.PWM rxxsf\>& $"騌p{qP2l;P[p$4=%f&Qxiä喉W|"w" cxCL34 jHcYFj1E%$rUFwox;rV޵G(9\ÒBZ`O[ǽ5Ց?NC\kԂk?l[WKa [ZuaWVn3U{OD~zL0',ξAAmPH5=ަU5TXYDaD< ~+XkD dxRʲmo}|4Ej e=N9 Q:+gn }θbI=ѩmTJ<ɚ=hMAjuc3#cG0] ˥ƅe-w5|e!D+ |GXB %dKE (O40FxF(w#tvрhr64hf'A'Q m>tp+ius#"F_S%)V B\{QgCJ XaI%kRgErrhieCu_/ŀщe2QC]2z )J+0tQua`X"-|B/A.уg^ecĐ]֢p49ZTįSKh\ى[Ȇ.J}`pKm2V@*(HVM}L{|iTߘ,ICh? . 6Tc$gAsK >a!`(jȂyU$-DjEk̀qޝ4rCt) ǡ#[Y5 u]BհI{TK 㩓&Q +Vr8EVe/ݹ El|Dy Mg)^:Q<xlo_{˓ߏ{py}ϼg^3{] ;˝TpnmPJo!,o'Ոн'3yЉ"O -r]v?J-A%@Po]8C YFՄ`jH,]$!ШmF?j$3 wU6S4^*5UOhEz\ r\A>u^F#`V)>."$"u%]?5HB! _e}5%_o=L`6j3Vn̝)CgVE)HaGu*huhp:$"ä]C!Lk0'ت;a ,ÉeXQ7g#ʵ0LrߟO,omG׽A d&޳ٵp>b[?" dWi}d@3bl* ^QrVEBIUf(`fO0VW*ԥ:n䅗-JX&̢"}Q fpȬ;II;p J{Br\K†,qD[U痰l`3ťqwr.T)aS:dak ]v<͵wX]}a@Jo?TH}+l$\4n[ɦV4H  I>} Md`~2o `fBY|V.BxguF3A sRܱ'6z(sdǮ;Zsц"9*"I,NpD%gI7ê.]#&o|۾jK%S[ F. %^{ŧ7)۵iT紭h{8*7G=+M-s5ޣdEA@4找׭\*O2GsPȴ-Q)Ȗ`W\-Sv S^O,^p.4\-Qc nƢ zcm*|Ptlc_G$RԱ~6?VVWkO?O뢛U@tHE-҇hc  $nHʩk=dx7:bBg?j=2C Bjw;n/wzpMex0&KҠ|>n㷻VjLMlKT_EjtM>FRwIw泽ӳ}|w)He.1]ꏥrY UQj GK/n~'Q6zdzgNrYBRۅ:E^V~`7ֈjN?aT[0acꏆ_ dOʓ''z%;~5Œj//W<>y:;{`]NdxU_o<ܢ.ܢmLEMc׷wv8agr:r{ q-oDo _ÿ/!1߽eth5 nk9O#ibPn\mTOa뚎aB\/qP F\ ڑ;iUXWvHT@eBȞOChjR `8/oq(;zL}&/ݟ%HEh.h%juAz0a8JAJc\CvwV,H]s>(Ϥ왔=gRLʞIٷ#67jMјF ; ZA[9.j8DR/Ӄqx[CE;MP?]YέE;׺Uμ7g{LVgǧo#>tvW 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=Ə ٚ[̕϶OI-8cxWu]\h궖{ʞ3-gm0