#!/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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try to install dkms first." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=114fedb7fbdadc03fbdbfaf2f1442069 # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 `;sF]w}L6m`뤈Z}{c{%f ᄎ2oziom5z=רoXk">I!cD69*~~ 2f~5F;esFuUx y;nW Cš;Op"3}%gϢ -Noo UTfndAH$ vע 9[p1: \>K38 |Ee+ZIq1 "Xs abeFxf/ljyaD`GRDP;.3JV܏Th5G#![1]Ӌ6''&%q]Z}s'jlf<8@ 4#9*0N L0 dA%{Q%h-T2X^P(f0c|>*}A3 ?|ֵ)n0e4u*=!e&jl3j2וTS2F@]`` +m 2mt!+U_W6Ԧism::QDѧZzlrOƆʐfvhʌKe8ܦ?T ȓީnfD@i|aG )粄ji0ʕr_ W8ø~gLTe8n߱ ]*2P m@g0>646~=jQ x*x@l`uF C}T὎%) 8ןHjC+CBU#@l4Tv&Q\ |[$V3eACtPCjC_JƓ) oy x u\bq1ڴn/}]L\[(h#4`8(˷+Tc RAјΒRoŭKƯ¯T(1FAwV8Xf>[vXkV .W>ASٻ˿jlV`t:_UepVoysmuwjw{3 M?Q$M2ab%KBaWSB~4vlԸړ~k|wwׯhI!x̎e$+6ck $zX \CBq3bh`T*0 G ",>n`utV-8 \ɼY<ΩU,j|pW$@0N",um*p5'"@8AJD&Xj#^`B \|#qGG&6^pٸ `Mi7"Glťe2¨ ğ P_{2am8d HȠ8+tL|k)6*UM!Me0B=RD$8uN>cK*x *Pv0ח?zk4%dnBTIJdPbCw>6c@R"dy,n6;9n,I(ƛaO9BCy gR:X6ظnH80d.GtU葄C7HU_9H"æb ^neWXy$

'+ ޡ1˚pega^Ab߳¬̪];߹k׫b7oyzʍ{UCcajg=F6Mt6T/T]K()&߾z2~QwKeJlq $fV 3U 0.+z-Ŧ~,,¿',m%PR,f\3lr \"22MԥsD@,fFnD9><ۗAr#YKqLmHj 5;OVtƮ܅pYx ńXBڦ7xzF޶[vg>77z6OV;,9wz[֠$K$X%"9p#NhvJI$zw;DJT󙹳F:ʯ0i3bQCE}I;@:H]*GVGHty鬠.(Ntp̣H8KD*v(8EJ7ii׭6shN[m>μsVVi٭yIӵ'V9iZ/lӞڧ]g6.vi69 ke>EvQ4\5L*!d0ń⌭I,11j?H)gǟR 9DBj3WK!0f/qqnƘ" uΕ*õߞ68N՝Iݵ:kn53z^:|?MKUhRuոRbrBQZs4텡o&jk|{m׻aֻuflԭ;usC7cL P?HĂIwcyɣrP2 dEv3ź[`U_c$W Nj7Mg@YZ'V5YHTb}X}9M`j{Ezy1N30]Uh63V +jJLΥ. -3ܭ4{n C:?6ߛ]f#'WٴO'ٹLuuApN8xʎYɾeRܴ< ,K";9n5e;8@KӷdRFc :C ?  e>D,̪ :;rGI,}gGL T`}"nq?FB h*_xܳuDƓ2u binL/AÉn ]N7H t&.sxPJ\up+ \A P&s !~ ~+w w-ߋJ>e{t#ǬxLKE//nOQ~(ʡu:t~8ͦ/v ^4#Uw%~KM-pScy9f%^3+xzErPI *;Lq+3N]d:utdYB=yE ]vGǨ;I,R'~,.o{oF Wxme 2vOal:5@3/D"*k~~($=E9S疨J"m8q4 ̔8xd7Clmr v?cE\FQL U &՘;xU/1B .c!୤sƐm&l* J4"oF]X#FALMt⚮ɣ9A!ݬ2\QӁvr,_.)N/ahP^,~SSlZIZBti0$lo14&sΩ'O~$'au<1* "aweYPwB]B8Bz6@`d^UZ[cv dxߌr޿Rfl`Ju֍XYHH%yѹ'". Q dʗQ\Jħ/a%X=&$>7LTWH[ؑ+_==h{1Z0ͦ>7H_%F–§GRHR AxFx,X>E$\ÑdUȞ,eQ,Fbae#fX>I&vb50e&q'Y|n{&24jos?%?n<3>?7&*ܛy|٫3 VOԊ^Q+'+jaN@[Ɠ$3>|f?*|[`f^mՋb>?>[ym,Be77j{ʘfRA?5zm?[׾-ė!3r -G5z9<<9miu `Z'iDCD);9nW XuHU!E.ӓT+W ?Bʸ3f6eߵNdh(Dopds^jkpB/N%9E8餈,RXh5:4TH}7^i>jJ6έ[grXZ P[X|[]q%`_ rlsƷHX4_ Ngx^vP*h_FORF佞VC]5=pW:{ݕo ^UNPeen;rP?Fjvj l Qt8_j;a,*y ُ>דͭuo|˵B2NM.S>LcIPlѧ8fȰ ~8DSr<`Ң1_e6Z/ޞ1nf{^6%ɿo6)z^~ߨ٨TG}?^D {E L"߈K77tHsKt  qL~|Qt.Ifb Cl 1h߼b7'HİӊE8U[3_iP#xK!ɫg&)XJNۼb =u4nTt/}QSVS㕯\5R l.A Ԡc[9 %Gs*+Oi)FAt V$F E"F!QGu2r#\ z6Tav/G@r+h{k躴>;k,4y QxQ^<@"^5b*+B>]Pw r3&0AnswK%] lȓf!*yU#g0|T(.HM2* Qrל|<ȡ.]Mq_`!ZЁVs4TaO*P5%:P>]ITa]J~qqj݇!Aũ2a?aYge&ֲݥT؆L xҍ[Y mx#x4n71E R@˳xNR 'a#d\HA9`1 .N>GB$Nt-X+&+I<ЪѮsK]$2T |۹@s(nur} iܥ1r+@ gg![!5%<]ڇa2c^2+1u;j:Zސ?ӷDu?&eȻl ɑD~uCƔ4;x%IP?Aӯa0=}ͷ;GIp++ѽΥ)RjڑF$>lѯ Mqр4iM1j,s NCr-J;!{ t:A":K= 0&fS )%3PR2$^@9U&&,hAz-gsKm舢;Pt1 ,*)+z),suڣŧ)1i+nȑ I(}MEٲ\U9~(ٲ8;,h`lHWxk&AJcTO7UGsVIUH-u~:8.1o_E6QVY?m϶Oٽw|ag>dž2v&hm))ɘ7o0^]Eysx>vb nġ|?Y/L4N1[x^*1Dž'% 9TA7T)RjAM48 $QwO ĹYyzG5^f?f 2i[$OiOͰ3>T;zsXm{U?; 0r (JX,ѣCfXWf]'^6څbY2:B);ɇa@$pKtU-jw1lLu8r]Z/W{ {n{mzX~Xo ؔ[N1%77݃ޏ;zZzR]˄}U[2:~KM?"j}䝐B?GYӽzVw B6q~o]!1CCQ3(%4㓜W^T߃)ǃ  GSyg?9.ni<{ Bz ɎIWR +IX]-Z3 ;)xm6LQ[=ܿN*T5p5ڇՓB<OALUQK[\ t᜾pC4JN;쥆v4QkDkSBt1Na 4EI§8rZ`\e㐥9 ,Qx]C+V'rPϟ+]C7LD9ŹqW!-d!odMQ3ortJvO&F=CLLsHnIueMh e.GY@]~Ж8dI& ZiF Wًj Ah-&N'C(v5I!$7RB-Ҍ;x",'4 q2tyʳC1GbZ#sS+Vղ?nt'L!w9 AdJ7΀ddK~l?Y/i j"ojGFs8:nbgȹ}Wa9@ޝ;LmwmI:}[r3^paǎmUmB? Ѥ8b~D\$o\zE&\$꠱IaxKheQ٫c:tXy䴱EI===.=>MS FQ1hTErXuoÛQ0"m` VD^p0 r0A'מ?__aV&b>/HP<7j݌L͓şl0%, 0.ugtKDJⷞ-,~, h?R ܖtqI%5h #rh\R=w5`]8B0&/(,ؚ@MkES~W6M-Iu rbjTǪ;3~UJ"JMP 2uނ–cu?ػ|' *Qo.|#?y%AH<8u`š'N ) LP6rUGj3pic-/L X@B "l:.SnR4;v5?7>3^-/F\?8{Gкm8iU<6GN3)Agbnk,D4ĭW>ʲEocKm?( Gchw@h]DDWpEPC፱juXug[SǪJ΋ kQPj~h}D!- :q$]0U7㙍}>xlL Cϡft D٪xVY-WD={BeG}!=Rx:'k e9gW:'W*ZXYe@ c#O b\UiߪJDZk.f;`Y v{8Z# @s9C 8;a06q"?e!QIƁHO.rJi8౧X[0H ?i"jtybO+˰onqufgH69XpMZ,x? hOněb%x _Eˬ,㻧5eb;Ff5&sbz޾wƲ/uxNO% u3N?*`/ R=?Z|hYhЩU, %?D#IQa#J3RVXD~ X8 t2{eSF82>vƵ;Qjc~R`wSRp9 zCp6$1qwdL*q{ve%oJl A7ptȔiy!&-&ezJ=W%NolO?_`V t]`tS.rr]7U)6+"Ɍ7՚# h**hc&Hř ͺ5qYY8Y,_A ȡMB2ZD[ob+i1왖1`/?TMN2eG;D)C|<ǟFI\24F0XD%^=<ձf[vXP 5wEg^, ܏=&`KQ=Jkk ju`]P,?4CnvKD入'kϖ*rEjmZ+2ΊR( tngƃ'yT$k,۲m9`V)R^6τ=1u^9y ij1$KI*DZB 8O[SӺwm@@z1ݻik&֭z\ҫ@K K5sӹ8TIal2<n0٭9!~ oQV}h毡 `U9PWfK@ET6lniwө83#O9&$3R2 0JpID>poD!jJ0mY $S=VsHLCB }8*6.qwbgl)zh2s`JfǸ[5d;Ma0emtx%κ\$/Z;aX#ā8bs0^ 25J?kFWYmV}Kͷ_ʆ?AP? 5cǼQ9?憲h>zkddBiKfIh|&%,:m8_R5mmi>ٚZ}5%-WS-w4ߚ%jr5=WS)*q\|\υʚ0*6mKmP?>y}ٓ{?p>#?WBwr0nLpj? _QZQ:OjV\Ȁm>}9jvǝVz6R |~ qF/>v(QD ް!8d9\/f%1R!QH_lT ֏ؤq$Xj8LFWhĕ?&71jfsg巛yEu"F@0Vg, 񉾚Ec?lt/ Dx%3&ʿ3dWQ>BWGU>)$8,xxD8Py0#jțQݺv!S=f5 34^?= lB: e5CGqC!p*JR╊˜Ƌ5WЍ-9="ٺ!'B@t:T9Ȣ8?`=i.NRiϪGݶa mW:DJB^r^"5OYcTE4^VS| ~kujf>nDnĄ-?s tGƨ b;Fvߪ# J/ɺXqKm"A!g,nU< ^thZc4M:Ʉ-D}\ewuZf]^}O|گv| ][>>ث7[ jG|;r V-ȹգYoPdo40(Y=j7ꭒjNGJ PGmu8l!YJ~V_6ԐFڇʪ94ۍANN'ǭzh :~qQ[^W2w{Yf;kXo5;hAIN~Cw<٪)$jzR*,)-#:}j7x9xQ#zkGhN[Ю=F7c84ux`jm' vG:KyhՋl0A}[:a8^#hul)3͖0kK@MJ0t;d\di]B]$ig{@iFut*^;up- $ ŗa//:}\Ѵ)ѸtqycH_d#&_Nm׌x"}` v>h~3I; QR[MoV߶qk!jQ)+RE #i6lsLC71O ?ӧhFV;sk/*܌$Dž@[I'OZEa}=WJi-@fϻV7߫Z5J#>S18j}r+\#4|ԏpV=NkBa_^W^uܶn?V~ˀ%ƛ24ІgϞw ^5OOv 0-a}a PSkqcJm~o-j% -hhDm?~cY:3>5PGvK(r}5  5Cːa*9e@safuXAAp5$(@AB /Ӊ-A0[NIhQZOYXs 3c}x>0]V:!D ۼ `={=ס QI@1N1b!7%hw~Z SП$1SA W)Gc|n2^>cy$2h%yHöڞZj;=Act]z^GNqUHW`{ ׏7  u;V!H^ <YXm@Ї1enkD4|_5^svĨE\2L`PB2;@F@Fd} H5U"йkE`e'"\i@G^cY.CHnTo#pdEQTiWOY\>z.c Ubb>clz&hI8:_J3 1(xмxt\*/ʲ~Č`!r /Թ`w#JǸ0 bC6avd!T-s7͕C}h$@!YH'E dcjXRRM"c}S "Cah=aEb<S⥴puHOiWo,җ'0i 4ppS\X7H˓#'w#'1GCa{qEH#|TR+u2_qQ[b<b XG*!eŴML,Qaf~V"c`|o~bh3^r a[V_E[0h0tQ={OMigra r=%u&Mѵ a1B eHe7Re'׵i8D~{&/D `}]oyMSu,T9Éw /Ęur\ `D9A #8[`[Sil<.CnȫXʃ9b!bܽԶz(%,ȯ ulZR Ԡ'+enDK//ZMLإEܘF0hfʁu2g7 1X@@԰.2TTTॎX[hno3ʺ mr8 *1Xlp<\Q(i8!{}ԥHD(ϴZC$$P1Q/ޛ IJ͢%P>2TW}T\ N뷦PtI0D/~儰*l8Ϻ0C~}`E7d<֧T;Ӂq;tI.]+ٵGq ݙy5u ْJ7YG75MS#9yv眰K7HӜpTx]A1 E1c5O8C }9y^T^ `ΙsgݺP`ɖt}&egzV9&Ԩ4G}ϐJr5Z$iF {;~{i[az}G0AfS 툤 e)U?Wի3 [;2^%O ; ޾MzCD (fDOfQ\u*r!kCNP[/搶GES3qEZgn1 P:dHR3de[^nzhu Ͱ `ᘠ$7rЮ2c0D˃p<=b>8p(2 OCzU|HaDİh9-V p}4VM|O j 1 AXt~ytF,9L5S E= gѶ ) gh P56pֽ4pj 0XY\t[+.+z1Ӕ~1~&Ysay>`LU]|v#%e!о.6="\O!?gwu㟈'еތ,N:{b}hP{E|y0uY=0qڀETܮʂ ?;wk,3x*L#|27_ՈN2zY56M6~UnK ( Tq2Ej;o rhRTx ,d/iˈ]BqW8:'f\?:>eEõt,p-'\ +>%<GC`rK*9I(LDtA^r.J\YbwHn!g,R>% kiՇٔ\G &]i۠hzmr 9-`= F,B<⼢Vl޷ Q,2v\٤0*<[x@ys,IuL3BI`gMCf]hM,?YwEvdP9w;(`urrjNKzpҢ *x[Mk}4N${*?HneP^W}N#N!|YdG5mܰ_8CڍֆU!'AJH(d'+?,?pXpVG`p̮p.TX{UN/*l7qzKEA:tt5Bw3 Y$ݝ\|.iexd&xMr>.xUpeڅ3 mxE]syU)SUr4fGI2:sL(d֜⃌¥Km BZ;y^EWq4gOP͓aFmtnwN:;g$r{7;nǒO_==h1 wON۝jQ-<@3C௏<=INfÙ85߅'S4"A"/ܓ-׭ȪUלY_c%+YEHHp֐ v&׉zT #k)$v:-ߌ9{GIc ܌ryI~o:{V |k>(|(~j`NY0rofQnUz#ڎǭe$/Ը3ވ߽Dk٧ߧv;oDZ;?} @u܂dc#qOjl ם >F7x2/3!!L%<,v.wP/(,ݠp,Rr"\dd.#Gwv~gkdl!3/zKusް)!y)sP?9}cj뵭Fc-bc'G7nx;32ĨA wF_{LkMjyI9 @>7˰TUASˆ"H?I/depkV H.(TTD@\QׂJΣ`a v%{_W3~QYx<`fm!҅yulI krN,=9'3/N7r{VK<7^m|.#V*7@_+~W0("SB}^ѐ!~̋)=yICK"vZ>ϞvИ)~N 5 | @8T/G "&cx1> 8ԜN?ZCRR8|PQ <1K}~Qn$~6܊a REL.6RVuYB/#7Ռ:M/QfcpVvHo֍^fm+?O~2*o7I'^o$S/ HiX|WT $w=;z 5 ZH+HٷHYzpg!cJqtnup]v2(|AM)%!۴O ==$ҡt )!Pߔ& 5"OTggh|Wk #)^W7>+ZDw\Q0ۇƫVyZkS9g8*k8YoF ď)Fe(RHq!]- Ă``&1R]4G5 ,u!㐲}~;Y%1^ gPbEk $t!Fۘ"TXDer 5 (E7lv~.|WJV 7bpc:>kz]ي@IH"# W;|ryhw4>xXm||bFMω"6?lml>KrR]a=x]<)rM-頚&i7LYL6Gݠ3w8>i7@i_5qLbi8!Lx= 3y)LYWNc΅ש@8)38lmou 'Ȧs e@,'Y۔6cf9֐C,e 1(WKU!1|Es1~x8Xx`(@MS> 8%*|lrೳЫ-.//X*-Q_]*P +>o*G s$W'0Eő: ګ9|^yY7ᨨF n# &7} |$4;NJBqX$><9h,dpG96u1$ r&vS;'6ΓLҏ6uدF/ytr1 _N=D}"fig'z7f"`>xZLۤb Ju%'=rFZt#D\GagunrA n@s[HYf OMk7|jІqAHi|n?~L۵d6'iOѬY{N7UL:fScڰC v{TJ>lgNF&{V%w>RI/b21-\Ht%bjX~*Ĵ$RјʥT4f̫+|YH/E4j~L9a䲒oYaP3cx'׾zRo6Z#&\obBzp}nQO⋲y+9:C ѬA򼮄{ajL! tPVa EIp ǽE4 di2{?}ٓbb!z&`4O c~FN|ι)qkhc 2qrC6|ɶozRj,eoY2~R1TLq7oU{L)-*E f-/M:ew/G;$NĠBڼ"u?$zx@sR&Ir[CLJ79Nė}0N_m#%ūH4 Chse7 fȐ쐠2GM5| [ViXν[54gBPORnG/PIMJrӚ w!IXl-ͬW޾pQu._ zd]!u,}ds}+u|־ŭXpm8 FN{ zYϑÙfKh0H'>7dqg2c8 8|>w*ѮXK '1$ OV2F@41b*~?-ܹ >b`0H/O{:GyS٢s9a45xUoR q6  ~|R%Wm?C0;t%jÑ-$~{vQ*"]2ĝ$HK8v&XEjίgӉgH.T~Br`Mt\vKA}͊h--bJ1>PY8/KޗӼ,!XAx>D; w\2ʋ9 xNV6d%S|b@{'|]4Jt^AΠҲDE "L)jɢAcˠǐ 0Fr}@o @f0? h# *F@,WJvȡi@9.*1:\NMxۏgSv#&\Z2HG؅D6x4;meqv%ٝ `|z{ v;hA)AwGEALh}Khp;zl3zxz좰"frؠG(ZyeZ{_Ga"IILD9ܱ,[Glh?oS7N{OLՑ~/gRl8Djz 6(*v! V67j%ieS8*cE%xvL4 bl]#B`GF/cƞb#K& TSa=Xah|;@HL];ep۱#o0gC#:6yE}[B ҈4IϣyVoh✄JK佋FƠ!j^2/8cvEM ķ07tB W9B$\(PYsB?VCK&T| MN='h1Eq8z v2X4P/u`i~ qt/!-Nߞdeq@fb @s >j ?rrK=0!/p^'Oص@K0/ԍL X=B0 @2̰P@c_ %j>e6IxMdF{٪ZeJw ,ĵlbx1R.-YMܤԜ)L|0h$^,v>48&$ig. @lнæ(G(3 G6}CK"H"A"ӣ& t-!crDG],G~[ `@,X6yF7=Ǽ() *TjBVO`̪VMݟ.xs p94fht,Yͨ ԴCEl5"1 Zp gv1zl-A pijaI;#i4a;& ϑfsdQ5O佰96iޡ:ܘ{W[zdܛfg2d3)3[F@r:G~ 3l$ v5kv;sGNvrhfRKv[ʻxEDzW@t W7 oX2H4AJARKu3s@nl` 09] %U7&6H1o Q8bnV$WuL}qO l-juE`ce)鎻 RԢs?Efm5cьm0>r&eG 3`}.z,Ŏ/dN^XC)}0Ttv]DY#%do>Na9,ߍﺨnY+i;[t=U8ܢaIl|2սHez@Uэnh\cFlNpkA'"O)¨:x@̼P.3= $D=&h=NvleZwM7`{e} sLjk NiNp sNfEwh4v0dT)1KPuMw&vYnx_nw0o,{>Ea:5?%0{]hW,D$FKI\Lbᕮ71O1mw6V3`1.) b:=$V_97s?19Ѳb8S$4X<p ݅NS;>пέkN!&{YR,{F'rIĚSJZX6>[ZI+khdhi ~z>'!9) xwtq[5_y!(0xOt,~I`yWMsǎ-f#0%rn82AGAXWW|iՙ}6?7BU'HF0h'HG`XP )zJXw2$_*l2(B ڔF\Tl@DiWio!#堇q" kBw* sc$u{IYIx#Fr; ټ9, C"Qゟyu,_N@F=ۭ'9ga9a0THӻ-q"He̱D =O9DPpWuoJT x~W`,"P\;:l\m#x=4$=*ߵ4&.ܙwoo~z 91sD⇆p26&<گ+ U)Ѡpjv"8GteŇ0gc?')J]u?mC5R!E΃cC,bla<I[a4+u1Ż\7!ov+7gӧ+.+W_y2Gm'nΡ Bk?[ԯYG愭]ym?ȱ_Ƶwir)rmBTUN)có~O_QÒQJ1ŏz*lIV'F! NQ'g wڽOi#m։V 4fKloaY\!۹a @k-A ;gqfߝL,6u7l'au56'F?>0BV6iy˜ PݐjXHZ쎇ZSEA''z)8gl3,zSIJFbQi>쥬0 7Ih0Ġ0r\KLtkxjzy0LtL3[;s /@h/?[I<3>6CT>NA t+\JT1J{w{ŮC8Sāb8pe_Sua0ڽHoMbEzL]үgЛ%9y^KyAQBt1[V%a?M>{2r< xYWE=aݐB HJBQu"_B&f?iTIi'KǾzbm J<ę6ܙ[ŭ꿞TezƹozqvCVB;c(o.6>Obȵv0uJv!+ Ty܎8][&67|z;k }K!@!#:z/ F &2{|']졇VP])5SD}qQu1'`D8DT=G/2zvPm\QdEvid^s RDCQ4%n5;jlIevžU|olx@94_67Lcz}a51㼈.U5y%B7@ :JhV]Ex8 m|R4P*D_S)u$ dtf)CIK"$H]~!;``(;Gv%.obO3M8OV{YA%t5#}9a5֣")qŋ80QQ#"Iv%ŗDq%Nx E%N 3+caҙϧ!/s<OMѡ`VfB<Ϥˈhr^EsP0OInՁGzd^sw:'\F7qqO6ppft\^dZnPw|n ;jmyeѳ&H0plUFbh]O"K-Xΐk8Wxg'dwBiL4Bghy],`>pKԚ":4מ)IpH;^g7hӂ FW}7Gr1ǃ-p$NcoA˹m;@dۀW@hCaL"!m, t4Ttw[#Yj ȬkS.R Q4@}x)%]$87۳9]\yVz,rFK( UR0&:',~;@@خh>3e4R̯߻N >C*.&3-BhxwY=rɛS;cPi4-M5 +яR!^E3 xt>wwσ16*>F 0ݎ,ɹbKfL76p70=RzH쟢MUHRNkk|^iXXua=՟έx?U]"MЮti6<\,id&/\zm$5{]7fWî;cJQ u2k,ngL&B~2qWLf*W=PGi-D$#,PNs}n)b? ?Yb/=H2Y\IjBM1ܡK0y1v^‰CERθal\|U@CO^#:WݽhPjZGP"|) e݈.Χ6 Ay'54Ua5QYp^^z@&jw %[ey:"{iwdS_Z_ rǁ@ky~2l{D?97u}<vؾZ87gD2b%t@T v1kTӤll'Ys.09.ZnېbM]S,cȂz:K)v V ΩCR623l 0Ҙ"Qp4u?9ry eIrSUo!60)ЂcmaCB'XThn-\"Ա,,um$eKm!eehwvR~m-WќV?* EU –HМq-줕oQ8я=r-׫(ʱN8څ.c<Ĝ2-SWǝ4]9d2O '=x+Iw>D66K-ݕ.Hn`vz8I^efY36>ZÒƞ/< #M&1 6ݔ;4N Y-Sd?/ `v`V͍Ù͉ߌx,N'Nx= {o)kl©$y?wƈFQtL /lԜD>..K'w (9<#y#pdəá~8oYZ7zdlb菆GH8%V o.Hln : ږ8wju82 ;CVuENmhCG :E!f+[Q,6pĴsjN51dōb@zMn<A!I)>@_N i?:{WE\Mg:~ q,?3ۚ[a zq4ވ 6)pd.\K IA`hA\({1{C( y=uISXz Qk:4EL |vÍ@|n>H5REKp5s/w5ͦ^9dm6%H")mdH(4:a%I\nw.,}͊,;}ű3םBo`͡Z׷љEe$zf"Nh[IAhix,?pHo9/4 XDc ߼@Huv8c$]2E  OŔV݁ ,4$+6|B)>)€|@ϭaE C)Jfn_5!Me.&wأ[\RQT 2L"+eڳU0%A`bm d6ڔJ2=m7-OhtЃ>^7Qhex7'1xP;YYa0j "'sĺ} Ǎdg B$kbR)k Emo"Gm^7RdG0&`- ~s)۝M.y=lv*q(^O+::J20b֪db/yY.'KHQAt<:ѠI$pXrD "@<GE^α~9Q)s;G |"-5!y1E nShB\`S8ل7LÊ)߆1㫤 ^ʘA3 cfê7",Xmt ԑyyoK> A"߆3[U8g {X2'*"h]d^hΈ &3(i)@qS,E%,~(@If8S8s ev ^}+мkhh(FQY oEtnʴ[:VAYT2=W)s%f2cx |l#s Cȍ퍪 WxM o`:ܥ+lD,GtOvNQ"z6(W#s~! Kp~Zn מNN9V$!;ZN'U7f*_w]6zu,Kc= |gT>d/ 0$ Q}]\5I/**EpZ>Q +*paU4M%{@sSi$֛jup" !#Aކy`LO̥2~P[yr1`h~ndLwP@IXpp,4䷭N^wck WpJ''N3h=A =٘?gaJxqyM>q7OY~_$!ҟs_=DJ|ױxaדϛO|`mGkgZ8΂2M 5w(ßd<[(it` {G6G(F˜t2tC(d8t@DPɢeD#B08jmtKxApF QƄ Qd K *AXIPlFAn6!;"!ެAmJLwg*I[`4G`ۑ7\ţ/C€ز24 E!:b}Ѯ#Ps:O) 4ɸQ ?| O..2ڗ{s e=y=_7Zui;\ث練e]ՎO7^ヽzG{#7[PJyWU轪;i[-Yg?=7GFUR^UIA e4mH>.Qx_֛qh#m TInNMur<9nvn, jUzp9~{TobܮuhgA+5Zd`%(uR5+IzTm/IB2xFvڬba8Z/[F]Wh[2 iM٫T9c ՠkA>=i[hg20aiԏ` zϛ84bU\&a W~Tc,mU/´5ZAURZO8]2}hZUc_U4B!ˆZB>GI|Uk6No ~D[|b^H귿4_4Q^ck;']H I#2=Wa:>mu$ӥ}Y+IwGdvֻƈ^}>.roW7 G\Y[{$W￘DO1UPЩG]:_ 4 &jΛyң+xN5O dkGj-v(mKl!"|\m!C%Jo.-]ƚ)U<+O0kc)TlE4Mz!ޓzh@2Q[+ nw]ĩG$?-ʓԋD93Lzd'3Ov9ULx.Y; 0zfzxFt(I2oaJ/_]@{9ṾGqs^N=R0]("'f6B8vZR'&{V܅@io~r*w,^%|Sρ+PL˄SD|,"f(:^7&o|znؑخE䵕yLGqZ4ohuh@cןF3b9ѡ$ܚ UW]i`45&zAvf#+~{y^^{yN}Oϊ< dX[i1Amɐ1ȟBvmj*^|#'}mM}c;?|VKvژ8yˑ-2rgOS}>(=AphU#{cR7"E |̈2Op'HT/-Igge|w2F<ϕZ/Y~*? DXBQygyy'Pp C O+F+y.ˣ~-A|jbaZ\c]cm+DI/ K xc\ٓ֓7\٨KYU gټ*cb*0b)Mx2eڞOhlm9s?s?s?s?s?s^X