#!/usr/bin/env bash # # Copyright (C) 2011-2019 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=045882248457e3a861a1452ca29777c1 # 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  ^!>>jw_:a{U:nw^ַ$*@y/{?tսg.udnŸԂ^ozZ`NEO%C|w锵LGlA>]v snl\35O$!43CjшlH >@=Q4$`%1MP…h`!9ts<&ZWTG#&pC} `Q$ȣ 0 <'k''Iw44.r5ĉLaZD:* X^ 2}ͺ'"4LF" } 0T$QniO{Aїʨ&.$ 2'+xΥ|b3^HgM@DӾ0!d4Td:VѰ:cb af3h ,,Ar]% 3 W2/ҥ8?B<%Y$$65:e2TEֈLD BZBCp0Y ͆{ -jttk ;{*L|eu]gn.Uy4tE-h ZiQs8Z2X@_ ZO0 1{i \^97$Z{[_'~lTzjйoTCN$'(R2w &OΣh 1kM~_9DE?ySzp?l鴷۩Bئ`i 1SځhXk9{{>D:u|$"!/Bcm{w9Å,Ɗ>@8`p]EDaOttJ21,`pJ.C=x=HsE4_Pgl$G <@BADe(φ&8 +V$()W(NXRʴWy_8:ThR1eiD V!S \.s&g򛱒!P-&EL&'?wsY1 / ?Zk{t,̉FdK]:8::skr vED!I`E~%@b X^ 3,qjI{aynvO_̏C4HC 9d)r9ryIrM@ h'IыdʀeRe@\9'ߟ,ɖu*OxԽRcҎJqq+@ ˪,vNߗֺt!qSwa84㑌&x!Qqij)@iS18B|sK[(IϜX #DZ'u-A;wl?)o/?.1M&`{ loM8^2!KS×<vZefBC&n| lTnM\0u& 1U||]]! ʺYTigeWYg׻uMץl{+X U2fwp!x2#IE Uy, h:Tga_!f`_zzzQ{?ӕ߀]A/T *+4K4G?:khu8; h u+g)V?:bʨމ{DT@| +)>7m 9H}~CO"gD9:7= \uf5}aN] @RiP!L1Gyn]`cn(W R##w>B˺E5 OYZl H*=ZK6@SCHa5n}U_>-O߁a76[ vl;ifL;3Mgo^QW3rZk6k3/[*6ԡa욹{ݽ깰Ջeã գp`'M%NDN3~5<ӜրnE!r.{0wpD\QlAn퐔X[s~= ~G fKu0klN=sX`_oFߧ,xCs0l\y*R˴̀5R A6 f߫&oY3NZw߭A^3,|x pȢS=\caN=ހURVz%c@%t^dM'EЧy"SR{"V|*R݃iX!h!r AY̕ X$%IYQ-skkűjd\ i-QvgHEpwc|o6ڌjy//G;xOv267.ͯt&Ҹ`=f7Ā!~sD6Ԓd %#Mka@{UEp]|c ŽjE=X`]{ϟ;A,ٙedvt~F+@ Wi,:N[DolT#=m>bj`.պ0 6nҶg UiQ2Bv*1Bf*`LsE[D0/PͭfQ6\sk/U}Ӄtþ|.i_rG0#Jo }3NlR z6'"fC.HK3|0X\Zڦf[J٠ŽW k0qLYثk( h*t3P% m  4ms $HL#%f> >hiidD2\> )Eߝ=,cʷ^\7}5S)^0WPxEjG~ 3P8V )Uů0\9)+~'|߁zڭ?_ǜ;WR{[ Nb"EA `yԛShtĹw婷5M7z[_vm_gIj'M=˜./e^}o6-:#> bv1m I;KE1T|vZ{gKwL¯!U^]ֵ@#GWdW& oK~"09pG&D q=,ci6 O0f`' v |ҿs<u qg[nmw[-VK1w{2gK S%_ͷl[+-5t`Tl;: #m}yџU[[;`#-\p]Bth xqE@9I.'xszU],a+1!iq 2c|D_Ӑ&M!Bw_*eKq qwvORа 3،r5I,o:]$Ӛn8BGcfĒZHd5}-JBRs).hZwR ] X}_B~ Mn=/"9WȻ4LUBƩ!gi`nAl*] *?fx"]L]ZZè)jmb̎e TK]ՠeFm]F5aIV[#·';a]N>QDͮ0Mk~5®Uveu0Ffuܿ ֻ+cJd +shf0IMLt͔pEBRb_]<702*®kxk(z\^UE$Z ƫg8Ә. $,gLQgW zl`\)#Wm0fb+4hI<=[]6vy<Cwu-N:훞D4qá-sEh ȄI'&>qȦ5WCiu004wj*P}Oʡ}-(3arZ{&uB- i}&GlV|OVq?˛QX}vRDC|dbϡJfU?ᄁG%F6u6ϫA6N,W'P cS>7= S@OpB:R&l'BW.1و>nOM>]$L1Ezjފ<_k}JMϷM]҂ oN4t"qDn>J9S+}km" qQ"ݘov({\4T) ״Z566FޯrgF nfJ 2+U7 D*[򪄺\/ ̺ /g~2 ($ֱ*e$&ߨNO.F:kAiX*}ٱx`})w r\+h"m#ojb" &u\;ʞwJB&ѫxÁk /zEn΃CıvC qsBً y OEfuﳴ3_a1b6f`+ "o?wfPvb1}hA= l܃SCvn!jW~%ͪ)e:a(l.6{sXTC Rq&^HLl[kfixZ}@nډqIAve ODTr!|Z ^08 (7L]UKt)="su O":VsQUZ!%|kzM{>R枛敺n:wdO2b94J6 FNNG'&p^8j dF70VlAe_독 2j2YoE x~B|4tT3%_rfb(~&);\#K45J| /yTZ#0wvK:(Uº`>YC8s+#&3Iv򧵷b˽S >5_gE]*aݾ,Z*Lv`,'Xa€`oznun",0E3kw"\#UȢ(t eՕrxDp$PG =|&rʫvWQ+ sU6^W_ srLGɯZkQߧN rej_eGBkSH_DB*.Pd9qYgB~X *_WgT:Ϩ|m\kٕ;:n_b*|uk100[Nġpk2"-nS:qSChrFqE!Sa+ND4x Gr;rW:\RhЯKX蛤̎ ܛІxCŊDOS*Tt؍^hZ7[23 ̕ӭzlqCڔ&8՞oc:{Vj0[h,Hn4ւ@Fy~G l8ۏ1NAjsi$GϏ\n۬=eB)L/)מN߃W+i=H7wWۓVmgzӢNmvl㦹$K3NRB&Xwu?Y oB=fd^e/&@i'.W><(a{Fhw 2(Pt::eI R!G-+'Hie "[i1z/o1 ϋky{) `i:hP}sجQNpuv\waҎ~;P{ ddː`,hk2o>2lGvmKNG.W;]^iFrj̨Y`9-ߏEoRBMb3p/HHa{ &wL?p| Лp+@pZB{y6:X;i+ZҥږBI 9d(MlL%w~OUUjA>D$71VLΡP3G ,ܣ`xXg}N)WWlM'Gn==îJI{Щ#N{K/ly`a:aR%S/ ;BS¶JLRia٪O";磊V&5Sg&$U$~k)xY\/$H8K /sI{/'+]0A޻@>=dS#MuKdɵٕrAկ[+z Jm | 04i\EːLL"O#̥ *s}VuÿG&k\}{ZAh A޽Fa\pramLj_E5oZk>v$)f|T=;!-4mʗ$b0GUc1,~X, bЫ-RN P; dٷg9rb`deVj싨_fkeZ_lYdO(,H_̡ȗ"Wթe8OlD4JmV)41KxޗLnDo vnãӽ~c-D 1,jQhp.ܜcuxra(i2aGBj?c<&۫'uO*^LןË z(m@ad~ꕘ1{uBaԱ@''wב >=-y<)x?)ͅ2>[ݚ&C޺ہC!-$n-I|<0>" iduO+K]qon9AAI2,d[M_\bZܼkeqf_sF =X)^ҁa?p鰒ݫQ/k5Pa$toukѣ1N*Hү3#. }M-̣60ݷw;o7Ճ@)ه&ms&"kb8d`n'?ų^CFCwQAN/!ڿҞCL`s.JnI8]c ?@`4RuoM(q:$t &εbe??:Q.Qm[_1v@ 3XUwc*G/?OL%Hyՠ$X/Y+);#=E0p6<\&7-hz/)3,e2Vg-MOG1a©샒\6ܱsQYL,/ #}x̡D9!鴘n= 3do~C3)&ҐAfsvbJv4"0:/3T*yZj`;強BC}Y6VסdUljGΡ3|YN\ <ugg!K"LڝX܆ImX\T9tnܮFD]Uae}%_=S?N_emy4WOS)?O? ML h_5Y8^k4@ؽ1TzkՆxŦǍF{>ޭцf@].eq N`4X)w߽U*(߁x\b1u(B3eʦA?yU>փ9[wET;,ՕIRiUaU!gC ?_~VFɤhBZjX+]mCG;7'3?2flv77Ftzfh\AJ{šFfу9?>8J8TiJ9,v#e3(b*,:$|8hH5է,ViiQ; mBEw۽w7(dyyb#^ҠƦUqYZI'E/dd_^B9VgʨToV3Q0LD3\&9@,`"1?%#4M讣N}Yȇt MG NhUma+H4^r쎳_'xP+UKeuDHbf뿬fP2.ιt>tv$O+"[)`l ĊY^au ټFZZ(hZL _ib WFv<ۉMF!Hp;҇sc}}i\q^; H";a ?rSR"Ǽ\ 7e*_i?A2m'x=E}|KZ DN|ÿ^̶׀ixg@-›tB I(*lD3i5qӟ;3N.L.snow>ҿ;G|{,0K#! @7 >&`DށznhARR,CK; !ދ9`vT^YY\/t# c g%[v>@b^RV}zB3z/lliW0Osb+tevov~yHNe=g A+8kMIuXs֪(&kD8F [χXě)QY\(,D^wuS[AU?>mĞbp÷;o:OjMVn+>i(.;Pi,r95TJ<9@hxnD=%]j%yKG<_vpǢj ۶Enws-Nܽfq/`-@Dz? 8I8f gp$tL*saR#>MҰ9*hpɈW5V"6R[8䷏ЂF7u k*3`]P;"Hch@qaYoQHI6=HҮ 1!A!UUpɃV1]FN#/I ˫__ײ+PWʘj]*7Q/8:dY i^7,/螈>lGiC.Gz( o)Ydu#Tifr D2ӟ{aGTRO_g;NSߩw;RN9N|a{yYcjļKmnҾR)g,(6圣ƀԍɓŅŒ:LgcfU'09:10y/F_Y"i$=JBGn1O^C߆ *nĪeEsgV,H:^ꮂg1A9i )b `RnLt$zZ0vPEH{m>3]4*'ƴCJ;W_@]F?Fksdyqk^ک@v۶c ‡И2JLA(26s";X깍M溼ѡaAw{v$FNjp%vq4|33'5ؒ|jCu TwCFmGjƴ05YLUBAeyqZEB6Q%_?1\qL, .`}Ln:?wUT[ *2wG#cfBTT2DUH|d &PBbD1š0A֭)=V ,<N]|e f(KN^S}N I p2V2,3Q#йO x9\Gz ZPOHMBYwO=cS-_t|CnTzLmئ~>@]$~5BB'u*鋋= wR|GBB.Bm3PF->9+]Nj7Cs a 54VH\'mN7+KG.NZA\U IFǏqаK᫷ۯ{U^l uh\F7ګmJy0D?NΊ@M{qPvl4IH]ۧOC|% [\~4'˩g"І^4{ޅgn e#\X%9a} 6?ᆒ^)a'ǔM+FEIV$Ηl JgqAV,zI ~捈5Yw"eV4קd}cnwm}w #5{IR`mj@h "OC~)v0-'hE һgwY%d)rǡ߱i(r׭_ZDLIXtIhOAR'f;u|Xy\Y.kM,-di yWy.&Fq}|z<;GoYG gfjQv4B1]Ni"<\1cBkh#wyuwmkLSߩw;Np >^{ Y=vscZttniܳ$~1.8 .Igf= +V)U ^-;4YdLls\>bշX9f?:J6E_W/|V8u;A 6xIbIP޽?v#n*rW_hrwhoўzo~bƤ GĆ>6BsPWPÊ-8ZII=Yވ)'L9 +}[?p lZW<~/tP.7oGgj?p|2u I^;8E+gFOzHfճڈfj3(Gv[f3Td໙&&񱜢z⋋_@[8)2yghe&`Kf`I& ir0iuJ?[ AΉUd mc5›#Um*ems'x)UC ìJ&hhL2&͚qM"ȠLŌĕw%54ζi'pzr:'/5ML+<OD>dqvq7:0%t~K 7&i,:[+uwwahsTUϕ&˄Igya LSD+|TO2W6i |83yz f Q5~nRVp9e{s6!S^KQ&o]|o}mvls?$Z)' СifwXEwք?Zs0?`h=, LgumeL?S3L?S3L?m_Ų%A{Q4LNE` zhȁ $UU;Kٿ㷇Ljx#ɇ -LRRX^ח{'ݒv})֌OPU0[s ^K"~p 7p@%zٸBZK{rjgbps)e=\^[r= njFt$Zgx)י~R\=}ߘ/o.uo@:e2_ m4*mq%%nC ]%cکO8"HCEѲcRt=;Y԰ D߇]9"#$%&0g A`nވCY84vypkGb \1\@>{QtGL5H}<hMSO7O3k|&L|GGE J|+df,V(I{tIn-rGG(u [r*HF(y#x=5[t뢤xʆC:0Q*EFQB ܓng&š?JD@ɹ$l!He])oh$~~2g1},_+I&AfS ֳ4tK88<~@Cm[zi1==Xgnu'LUl~ŃDKߏe|w}W?~m/@&K2cRM3aj &Ob{CrEO}OZj82}dAAWf}pqVDĝ(UdB܌BwMDj 8L~A [ uŔ?3x;AΎT|WĚ5~AU6}H {qv-R҂s>K@Àj.ᩩ#L[N,&HUhQ*"4&2S^#"|wG@-@? =-[uVڵ+ *&BU薲&(^D jc†bu;Wښ@ٺl-(Y%<(.,\TM| ײ?04BA_/|$:lփȒh*bވj9)^f:bBpԠAW=e@ėNoCM˖WE"0*Jup i>(fO?gNdFJZ6krॅu= 8{YqPļeu+pKFÀlORmf(=๱l9M=tFI{ L4Q=w"OB b=W ogni,15b *@J;HUd>qthY_w'mdz (YLh)Nh<`MT6Wjdw@6fs{sBJӂg|jh=Yq%5X"8`Xv5Ĉ`ؒ*:"FP1qn "7Nrc1HN^?=7Lԅ>oOSրa5yBy>z(f9Ȝ"73B᥆,<@8|nRlέRn^i2 wfc슭Kw0aأe *TL;+O>ZǏpJa'ޯ;ĸ:,>Wmj[WLk[,|UM1.t~is:,rVf`Dzcz_aᄚQh $3 8zŴ]-&'*; MKI@% i *7ĻQJO[(Έ~,N_{R`΂Ƥ5(̓ei`b">!wqw 8J4D;.AÈsboENdS4\0l#1X^2"-\۵~_G_0$}͡q;7y#hpoo}c=Ur~A%ڄEQ9~0jÙ a{/b&9PXx.jRe+,9`4¬}tP-+|/&XdL~qb.JQt̺'ǧ'?j\z./F#냻L$\ƣkrqyS غkvpB4AF!y A7;)l,7Ɉb5L( 8w}J@"" ܹq {yĸʀfn< ѠDNnm^lO9 ; <9`xA3uI&>>C6i, TԌE-dz Lt>yc-mJQ‹/h[@%vOT77On6 9f޵x_0;ÆϘJJe5~i4w;N_4wE3v.Xhբ5|xX>/w'iaW਀85Hx NTH_HSb#_P-Li&b {ү8_6sVY\v[ vyI;N&ebIrsI=Ӌ2ʎyras'(e͟!۱Z4:I 4)j(VRYBS3J6y"`BuQռJZwG:RsVryL%KaaYu-kebx8t{tfݯ9rRK]k1#Z)Wů'[@w3̒빙Jo[ E4hr=‹EHE?F=)ű'<,!Fό5$3njTzEUԴ1DeOX)^Zi/& ݟ$by e+deRA0aV7>Er#`X:\&jE+^H.v@K| 0D PG椋:aCNx;tkԷŁP!51Qc__N.UgVT'F y9vs2@jX@+$72%jQ'm]ҶSɀS < Gd'''xFi3`~,dڰzmhWkgwpKq]8> FErN^|w FK=<ݫd`_m= UĝE@dHNn:. U>j2rDg+]v[fՄ r; DF:| |}(Bo;}a9#˭&@V壐Im׽_E/0LNFsP0ŴϹh p:u)5F|;S# <8 8k{N1C49-9D+ 0P;xVKpT B@M0B`$90uh$J NƳM]v24%&֓NuH٤rmVEsc&-#($*l :wdzgfGRt`j7U**Ē̈0I9=xSg^觏(㶏3N )#wП< g) J pS;xu˕^?!/tmx*429N\@J2ܝW<iV9chNy ) o57RrxZ2sZV<SXEN+֓B/js L]vPRw hAjN͖77c0N sj{aˊS,}δ'Ni;8bT Vu +ܽ ͆ʖf;М>fԘPk&$Ԝ\'{)h4{dSNZLR3ok 5 dFBJOj+)IY+2D&KWOQa 9ꗣ,sBg lu1zټHR++jwDQ({EZ-d.J@0Xj H{.WOzⅭ pMOyw@N63V-?͢qxhcԔ}f3gP.J7Dmdaپ[+c}:{޽'zˤWۜm}4WJ1-! Vd@V3IS*cK݀>L:Ǚ2FW+6gTb%/rd khbq5 B ~V[b{ jގ-ZyDY:CC9xC)k~Iyr˴f]ё?vO[zӧi3L?i4g3?vQm^j@pC(O3W_ !`j4%Op"TؔVRT.+ZmE1{= O'KTZDWHTL8F4<%|'}swaS*J 11Y]{ddbӹ.#CBR(6=;Q]wۧľ HoW@ u|*Po76 ׈kĦ/6 n2|Ҭ|LԆrMV &š P̋Uy(Z F8OGa~UF-$Rj^ & (c!ͺ5_so/e*H^&q [p+YY[xoSvGuQ}W|\Bq;5ܧڍ(a(.RJ@Hv)+] u5=\}>ٮA_fZkc.e}ͣn4\s$7\IQ2ݵSb0!_OIKR#ֺ:.QdfC]/J^:mϵڇLF/Z2g2-`8G4YGǷgӬ=ܚ,~k nSȌP[d Q<$6:Oڵ&x7*KrDľ7ҤD . J~"i%,A٢6eM`$ewmknc;ۚYS|Vf E&3aNP5oa~J.Säh%Oҧ^&@Mr]y, 3CH5h-t&cTT ش;[[4qg3vfs$&!\Ķ#@ ha݌mLrD E;vZw؛ xwMҠb dp,u]a൞q=?xT5[LϽ:9s'?gV8bP6Wpten<4f 9i"F )OwN:h X #zIt\}M$.`C QX¢:|Uq{U*xfv!sdrIX,!u`dU:+Td\g퉸 }Q0ݥGiMJ0LgS2W9>&A(6oUE2">#q*Bl{huRaŽNٞN{3jiy#joݍR`ryp,#׮)9+?S F"PtP|/'XKdLzGiֵZ\M?<h"4YV5D}} VK |+ yR+zEmB>[(sѤ-"i,&Avދ.؄OY;)s/2T9m;0j#o:]N],|ʮn`uTeliVJsP-cɦ+[Uꗵ>~Zy˦$?njdDim R0u%TC*IϯLV 5 WdnVceN-,%p-Z[ޫ흝Q"Zo[ծ ^l j>}2a+-n{VA%&ই-;eRoaR-Kaxh_c_k_{wOkM_{=us~O^S{=Sz}?ߵM}P :;"VLNlb#FY7cAv?LPՄN+F˽A qՄBh" %& 䧯do~r?\_yK0DbrsWaDćVv\ O}f$׼.fsdî;N}hg EsT-F&Jc@x7Aʷg#"s"ɐq?;ׁ'ҙee!59Q)]:R&X9tTLm%Dۨ <_lEz 5pxyJ۰$Rg~ gHuNMcw:My;T[' Wޱh+iSϛ f6\(+3l8qFG#C 2`710l3Hwm7rb>;Ж{LE7?)oynu})[_Bٛzb&<7U~zddeV¬eY"+EVY"VP'bF1G! 61>A=$q"x3-1_ ^vOO~ 4njiJ*!jߩXMױNEzcFk:u(6,/Kl.LՕ2 110VrI,p{lC?UCzU?sVL]13sXj5mZyw^-^W_߼zoV#N2?#-И٣!( PKiDϟG^q}iFi$H4< ͔xx)m[&_r/b{aoc`t3:?U]3N ޾;Qǣw:*,ʭ w4{hT Dnnp#aZΝuwkX?EL੹RY.Z3^] ӫsu@fEǨNq![KJ%cwŭ'Y8 RG$egC_3{DWB3JvG9&%θ{ $%;!&Y_ي\}k2sHcVyϼ= 뒆-[C[$UrG4uI5cF:`ٟ`19a+nHr[_;/}f |rM>C+?= "iUH5^լeΥ6ܱZw$j1YНꏶ=Ϡo/]={a[n_Ssf2jȷ#mm2cG5X)n~6>ޯnh-no^,/U,q Z﷖iRћ^=A+߭?zGKAYJ:ר,>.>6 QiѻhՊ@ ST8<<~!ܑ:|~_::<9<\7p<px@ƿ7<||?klx0 "-$;{G17FO[|L(,LMݓS /U~\7O;9|wSOgt1U%o)Z/pޏ F+/(?EgjmFt"YhF[M8Yj-ZJ%R'(mՙwG ~w؇wZ,FFdc]Jxr(̨b$-ߧ X)J<ޥVLgiGD,]%NZ*,L}s-o캰/{܊vދpWtmYo"RZ>v(]-8~?^pJ8oMMOѣhWg_6C"2[x,f_]yV}KD`DB"HMj%=` 9 r@ "`UGk6%ťHnؗ^{KE),:Z=^=|USyy*/O婼<%/Á8Dߔ XB'0^9v!1P\o TP~G 8`έK d7@'?ae9 ϼӭrG3۟;G$du{vt!<:oC1"LsX 9}`U'{iVO XS1ksN#x?$1&HWW^iȿ0r .1 ,\F%>IQO*L&DZ-I(М+E^,ZKʑ*@tAqsg|/4p#u] (-JqjnL?ӟg3L?ӟg3L+y0