#!/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=563c0107c72e1eae5eaf9ac29dd4ec20 # 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 \WH_'ى1ȅbleB{d%$C߾Uխ0sw Sݭ4f|b; }8|Ӡߍ7{>{f{ ad|HPKFҮnm6F܁#=ZÈ4dyp˭zy eQ`H b3eLNOƶklhʼz=˞&UcFσEb~|Fp`8ޝ0s-;ybUAyX&ӳ< cM c&2!t\R// j:=A} 0`" ~Y`P),\̹|x602ͽ3a,F g\&,z]Bz }nAW/@rP.Tiuk0>?N?Cz~1bnGjh^C hi5zi0T4LtU`HUS{UG`xtKu~^gR/gT4:hg!iAk8RW֐ 0TjnKT:uFeG7bE l=e dUe :*8QJ{:`@[>@ilF)2hde7P9}9u)،4 wwΫ2B%,{ P30vuv& N!3v=az 2F1, ,b ƶ8֢K@%S*&)P4W)mncM@xD"bL=gB`ĬYaBȚ[{W윻<k cPuj)Xv|O=P -FgQTNje\D +̓Sc@l5~>J1傕=a݃^ػ,4`VkhFI]m trz2PL-VFdw?`6ff b=ώ. GMo~ٮQmS lkB`̈Ơ=eJ{ ?vot'(%)hOP&ﭓ׈ '+e;Je!_+K5XlZl\ f`30y=I |hF]5e30z| g`43NS",Z 7-`"ieM >q=?ypY pGE)dFu1 Y`+44Bnu38q\~o]H'ew}?=YjB2Y4 ajD8aڻizQ1 {J7~\ٯF*E!ENh߸C\dXd&K1KO`™vI nZWm(!prֺ^H]:8_>r*UJSbW= - ^'Ϝm9&-݌Ĭ$KHs_ˆmt@AUenĎYkԿTۺSGT#P+y7d *d72A,K;,2™.yxg 1T:!__))aGi=#@:t79S?~m/?t0gVextC4%^r2{V~DAu#oZ:5{Ɓ+J8CòlZͨ\sdGF MRiHXe;KsHFTH5)M?c/WHw^Α*UF@D`&Nm?߿+qimOm2.PE?>iϻmBasxՔnQWViUqr6hbz#M/1w 5!| EB`(׉jj :w ܧj#]:N٦p' Qo+GuF2sc;%! ~>k-3% ?è VM]t^~7|߹, ýᕸ{QLpb >VrXl]e+eO+ CM89fnWZFUi rq֣@Fkjn`YSA#fCNu߯_ ;؀LLJBKwb(4ԋN ?+ kP@rA{8GwX3c`\TGXRGr BĹ( r$ȱllcIzM˟KF<) pe,r/'ɡ4AX*!\g4xΙ~Mh'q8HY'u,(džD& vめTXR(ȋ=S]H=#\Ѱ0J`F ?5/x;a=:ϻo~uVY'UKpX\"-qɤA8ȺX-(*dE>8MȶPz.?ʭqUYqWzyc%V(7E'!PӏK$+,DXa6ґ/k:bYDEEJJ20;,z<+y%~oNVw⺛ע3۝xPQ qo-x|{IP$mf*l'޻/H 3Z1J:`ו PCE40Qvt=o rs'BXӿ6Ϋb(;[4>d ಲcZSI':h8+ݫ`,nFGE%vVșMy`!斪#-,vQ=KΊ4o꾅=ƞGu R.6_hbq,!Mt<+G Cǻ5T\ ц/BbGQ)dr{60ܘd ӑlpld22NA OV-gf;ŤDy2DV6{lg_ "I%'Bt ΑA8bɅ4;t@.n8b%: c יc%,Ld~WE™ZS,lc)K (Wt"I AdFba!LăLD.>FwOi|XI`zAZžϹe ]h묏!Ɂ;F87c pAd;+5IըS>ȶ{ ;Pwx)|n3oy$ {l3f q?ݎn|OO7TSܽ6Ӡ*ˇǪxM UAQ}i_Ú3_CyyMbI^(XbXe'Nj Y zT˜lEh?>ޱ% b^;&7s܍ky m*G%F' w~ekč' $/Wct.G2?Ǚ!~u#BzSE@7.4 #لՆ"J Io2/nD*#~-}8B&#@ u5ӝ72;)XIOׇ+ecr''#A0!w Ѡֵuf YRxaѠ/'™zz{5Nĭ zz݋|UmydBz-C6SX,,¿yX?< 얺bnH'G׈D~Xz&OYɾm>}16xpPxy~<??;5|LoiTv~:-^PR| +Y_P{]̩T`VRg(KceQ+z\TYt3#Q 0hwӫs9JiwSu$m357v |?(I{swY"ݬt f;0q5ד4I%$~99Lb|`O9{l&$5(8!wɧo(?mmc+}1N #"a';WY $> ;93=TwWW+5cg54O~4U7U{dՑuX"NmiS>/mC#v^?4G.B#&q:j#p ֖9ZC~Zn4}rzk}7WJU|l,Q~t1vW G#PR /p57kal|G uQPOV-AY^r.lrws1\ӧSG/^O(nTw6 b\ǿ, ^è);G5#΁P1Z(Cb>AjxtNG|6?*-[]'m'weG=>l\sо]i8$S\Y,^/u< O" CTYG0tא"ܹ]kqw:~. k$tS!d:_&=K>{D˾׉keظPƹ3NCْ cS/R p"+;ϕؗ&3Vn 1w#˽z []^Zlj2"9G7 :D3Y1Q4&rzXs3(? (vhWP~&u'E41ڤO6Mgv㑧0QahADǨܶ N&Du.ye8p%pc] d˓Gwjww?wYeY^. . p9'[ p+XAhٙ cߛhVvkK{rز`-T"ܭF-Uz+GMzI_=VUC h.c 1va_N)9?՟#~O??OzQ<ߟ^ARpsU'w\<7ߏKk~Wb!H9t%5Ӿg2wL_eVTpp;ɇKм &|E0׭ww%.Tz_R/!tnqn-VK+K0$[oFp8:xHfu\ ֛yj+Xi,Q@DF?'JԄߚ[ ~kom e{7KyEE(S>Fu W%:P"`Z 30$Q3sO}4٠0iQ0P>!Q)QD qVYWp%CQt\6u'J!IIyq;]h{wJZ 46jX):.عٝ=sت3 \ іl<`4h@`X0yt?w4k%*Zӱ$l=:kB6$v,rJj6Lap+߾!yp;mLӋ/g/o[{pd)=1/npUWU;:4'v'd2?Hݦ~_cy\,-?gaYgaYga9V(ؽ6IRϾ,nyQ?nɶڟ+)ܺݟΎ^q ;Ul^xz]:nF 0 /\C.bP9: +dX/ne~OV3daÏ6R2,/rt(@N|`]<30o,v)+}!zN8[pTN#6 _i%Z/[pz] (棳Zn[uѾ.fat7_dP uX(+4x}QfPi#6+'uuܷY1Ɯe##ƨ%>X)АGpCPr4PÆn}ԽS$%)UPLSɫ%ٵqFxcඕGa+ fe]j1*]s;ȻKU^1iߊAM+8{~=_K}ד3̕Oܖ) @1O'[2ד]>]h*xyzK?Vf&Z{`kM% (!.nCS|1 JXLy@ш*\0/R/xipЊx>!!T;0ГKi^xt'gPVn9MIēK5/rFv: ~4c<]2}cZyfх&&!e,CF<=8Zyd>8 bzo%s xRXkxOLPDYj#Lnyv+aog tMp:,p/$vPK<# hlo~S 'cMZ'y4Z0pBsK)V:F|bVu@x&foҫDۭl\2,qz>j!N]G&D)U,,.|ih/ⲍl63oĉRH`u/0y( ȤKbJN':.H'TfSU~rDGX ƋPFX1*Hw4}fhkh?Y( N$7'4 ghѰ8߅tM:2KO,.we܌|;y69Ny БAl7dׄ)!xwN)/5shн YOVfOO e"1"-f&-+ /Mfgk~Y~|b1fk|BV3 !e$98t&bPFAyA+%Qie_q%hQ; tlG @9A}&WYy\k{IҔX"q]_br),]Bwc)faKd#N"N%PL1QF41㔫)/*$(RS,}ʴ;< k'Ύꂘ$4uW`=.sje hN )ⶆĭUb/˭V,=4*pW /^OZ4 'l{.Yd~b ?]lDqXBҜb9&oW$MqobP(Fg [M,6w/܈ro3ݘ:KF?L^oQrމv&XMLfS+Z {Z\?VODGb:|m]6xT*pX; +eW_~~*ì#4dwJ>(s}?x|?FQpFV6fi*ߝ+ƓHU3<G{U8N!tX9ɑh%>Aq^3j,. `U,BB) = fgc5MJ/"S'TY M W4Xѐ;EL94*tfE٥Qu, R{T}AvgOYA;w0HyqDP [-x{q[{cug\Q/!Zr-):W6ZªRtIA.:56v}{n@Zj|h$߮+>UFHwT^4+ޙaW4Vd Μ9Xj`zǤS[FwM\EDH䙵Lzh=y:vXba09@PQ+IU&19׷)Yfrqf>:O:2&$3HSDRHU|`ucWUV~^N77L\k\67bp?jGY/dtcb?]N$Oh *d_45 AuHR=nWP8?B]Brx}{x`jenLDgrEoy<ҸWZ!9gXg9FkVs+檖e[vU+֨3V,V%aAVn젠dUF=RG>F9us sAfx18?vt-ոL.t9mrYhSVCٲO,}C$|ZŎK,ࣜxwF,)*^5P(AQ5i0'VTyh̤$#BdbK)#뒨U*n'O &QE6z 5W1 ̅Y`nc$W~hXD}(kE\d,A[m;Ǧnz>#p2Hqo2REuu1d&}8z){2$IЈ(7$ֵ̂F_B.AqbBb [c!%!Hy AǬoƒ#԰糺-PNZ}„P/_6ϱGw#'ͩ_H ,,2qlh3HZZ8d}$Nz-PNdal%Z󼨡ZCoS=˙j Z`O;!cŔ$k- 7,銋Cr|GPO92?L"+/y 9{_\%m|^b*:62S贼{UTK`j?Av:A}JDfB2LxjG6^V 6kBҚSI2*Mgn@2a  %t#.;=P~<({XCނc\.Ѳԗpm?IR8vyw!MfISPu̗IqTå7Pיt{g D+ {Of70',Y+:iHGG킑ڱQӽu DRK )Z@f{R4isU}j*s_%ZT K= :0}M kJjyHB$n89맯{xrEę3@&ex|OIҗnjN/dY8T(=o.Ͽ{p^x}/^ /6Y*'avHȫY=b>דa49cAax^W6ǻ ,w <~SuX?#*0ҒR W\-ڙ,{D DK?Z'^j$ T/i"p#J,q~XG+$d%Q_N !!#o2ZC`f>$vҘ7Bb i0n!K6Y%k~}|RN+px`= OCAh2mPY` FBQF >, 9?Β+KԓќF 1Y;2KDFwD9F}gCXw8!ecD&38wfWÕrH 0Jh<Ƃjp3GyP'5Xդ~]P*Tz~䅗8ZxhLfI|<(|d3y8dJ!#ju<AR h* X =܁`9OPG( 0񠋽/O RnME<,HMD؇rFECL}݊F3I@!@9MO.&-W#qX/>U('Fr3=Ln6ѧ:3Iq0$ȉY @!R%@#t53((- #6`*&^Q#%S[ F]X':D۠<_jk<^b(@ vΤJuV-z>)r>T,!P/6ԗL1Tq0 ޣdEA`4 }i;Qͯ;=Su|Dtv1IyH[kAW~9q#&6DL Q:&;y. EL-&L,IY/ާ{;G|[M:V;Pt3oegshǾV &`6 L^+KңǷXY8@ O'd {xJ $,@ְsG Zm~4d ߾%b(^ p ;}Uk%>(0qpޖ, Rk~eVn@}{c?6F<>0 TB*S*.;<;;9oB3jOsKQKi 5(Ġ00DvQ9/܏CàcQ5,=1^ޟ\U;^vMQYo>F?LitńW*"Ohd7|^9zU 1 m_uHN77ʘ_z9~s}{Ad)^ 2)*`/PW?cjvnn@_¦ 혦PWBRM:Z)/ׇɋI'$<{gq')% U\48UBHèM=M)TSΝwE)^2L򃖣pe^)dȨHZT“וzґSث0͍&G:) #< E# 2?FS!!v&Edp$ϼ+?Y0/)lsCho OZ< g{twY.uXv.a$Mڀ5Ӿ.ϐKU^N:աZQsK$,oՒ}w Lk8-²{r_ I'Fj8cũ )t8&Z1՜ &Db(/i$sv¡;꠮g)j_c'x_?UsB9`+qZ1$V:H g\9ˁ8Q#ԤG-J]"xyPp>{"6"[a "#՟rDί߸|k JvRMM5 MFk0s{nXïI%"OިZA+V<v63Y: F"/ '2t_ 4b:w|)]w\NbwB9c bpFܱV`aBQ37 =ɞF?>̌Nut|X=':xKb8z/+q”Rz' 3G|̲:x(%qBUraIwxvnNjjP" dìj6 T wԘ؍[pũtrb4=cR,)7ƬrDQ.d9QV62(wS'r? '"ngBwwh3`y+394UPQޓn+;ĤzRE(BBGh- :2$)}oƾHEy SsEVIÉz wcKpt ¸=sD9tVf PIU;dRv:뺍\L=7=ɝiGOdu5EVAT9z![V =rrӸE3Qӧ [& lL6]\CLL'\&AĔWے 09N|nYNԹK8;#gp5P4D1؁dkGSrsᛲ3ݪ;74]F5~+kXWwAB/~ZO:8;]k3A#t ? B/, ?W"@( 3&K°Gj|L$5& y (3$(ɧ.s=*3XܴфpJl#؆uWevMQvNNRt\eFg3Z?zG,E)OaAt"Lb($WXF\1s+P@m.u=W;߇ZCFR1^,/O}r8@\`W{g&A ?Ii@Trf^c+Kׇ/A:Dxx/:(( Ks4Lo0FW]Q ZuJv,I:׀r3TozQ_;K 'J5rߊ3 n #a5 XXTVk$(> Xx 'Ex厎Xd[|\m$iT E<{=%`%vp{^#iN\"ءeZvC"UOT=+^ P8Sz]NQ؁rʤD&pK΅i\⓿?P>Rg4n/۠?ʑs>!mFĈ_ 7#' bwE 5u9 9(km ^5/@,r@Ŋ5fĿFg= rɠ_ a0 "<e7AyN Qِ{wrԓHJIȇDjs5U%D߶6zmg}+<دß-Wk1f ?m*'3&ve+z;; @G!L|}2sMՐ{0:gr;9Q}O1"ˠ$5VҫWPf2 } V-tDbfC`uX$8{MȠ|=}  |oz8a E qQ6ՠi@'c0{3koF ׂW$ NQ#ׄWqMqu\(9hYk N_V R]8Er:}n&|I/$VTd.ZZË(W+'[_|;$Oݑԅ Z7ql}uP8"ؽKqsj-ڭ$!.A^t3!⛾]΢Ta]rI,` ej.%k;AD n'J^oP1DbܸF0m+@2d0`~u(HdcDfjsixgzm9{ZPAS^ /J Ӗ w8%sF(LHPtF\KφH9YBf̙čƍWP\70~s% 4VEAU5WIWbdTI [.,Çr q>s\՟׾2ًY`ίraC՟^3ꚍbXrbgjcA#nY)O/ o㜅(#c1  g%RcDx<1^H@Au$;|KP3趸J3~J\`Sc1RFePRFpRt3p$eo*P|-y]_C"~.dﻵSV>L݂Y `>j_%{ƦđX? 5 +jݚ %\*BMM%_P׿Yo$W MCt;P!7˽~\ocZt,.,C(y>,:1F|&Ȥ膺&٘࠻A]Et駆 11 Ѧk;fgNwfK)54 An1M72chh˙M>AV<hN]VdxPۏ" ~ ^WX,@X|I} (!aFj4K5KYuRINvN6DWBNWmj$'%T=6~X-_@rf$qS32J R_+5c"PLvc zQo.٦m؞څ?49r݌xS~<ŦHtp*mlPݺMDbh0 F 8:f$mP gf'r^%#؄8QdݎT)Ӆ&7Vuc7+tMvJ$]+)jغ4_N_dTⴲsX?Vee'K"_tW^,l|fEaRH je7>]&ԬCБd3a 'r 6NԱ"ʤ }=Җ88aV+<^irS{I<߶ {7 h(B#=x`uN١Q,)8SD%b6ނyP0m/c=xR* b> DLf˵Ӟk`#pug;= v\ሄ1'8ģpxˉpS^Ezq"]n&{l\^EFkrf9qp6+ \\\ F Wah(i$hO6z=s(ψu(_OݝIrZRVtSm}1lM+)ǺsE2Y1Ƙ#g%y:&"Tk OΙV#& 4F)k:g7X m<+&5_oų'S&7DZXb ]Ygr$[pY=1׼^l,_A77(LO|lEfܓ~H%7hxrR_[\귖0v7l:۱JA|KN/,U1Cf|&!tkP Τab`RBpYB9Qَ!%ܿbxƊ J!x[Kk\\UuØ%VG~T". a'PP8ax>ptvtkvnQbd1<\I"t&nWsϷje:*[R"vG):v>cw=Ԫ램zx1o_~F/Xmc΢i0^mF^:Y<쎼#:');G[oǟ?i QSIAuVzE2Ɖ|;C1z_MjJfL]s՗;y)+NF_+(l1` 0[ّ}W`xh]t f) Zsrg'$bQݹ& -`~:hnI_ay9 Tޯ.\9:{z5ª7`B+rxG0UТ%+To077WDL*a8m ZÛQa93df8NPE,CEkꆝc #^5=c~2ZgGqnʽ^ݗc&egvaC0PnwE}!N@iU63qMrX.v;X܆)AZ3ϭ|p&lH4.J GpaRxle &4mc.]~4o)M4SPS[ޱaD]oZl]kʯ91V[vk yw`[!ylfD(,`ӊew8xϼSBYo* S.@.Zhm~M>1ƌWR6je_1Ȥ4#Q}_gu RϷ2NUSJQ9lIQ 5140 zjb3j51~m7`Ko y#" 5HI\0Оj]cb6?fk ] e&RA8()߸4>@Bzu3d1*OiA ;e7"~]GbO>FסhyVl+H6QV'D+'Ȇ׷7 +V.ۚ,1g0q?kOݎJ=Tf5rlFk[-]+J#vYrb ƬtfNr ?7Nbi,?,?,?,?,?,?,?,?,?,?,?|wAN՜φӊŀ-Xm@CI֩_"( ! ɉ m{Jw*u>y .)=vj !:FzU Iz.bBa{ %uAA){k6dy=MϗP^D,hڜJe6f;b+32^lݩ; F.(PN9`KR,HlclBhf b|-ǕR*5I xHp2sgyQ337 >7D&BtKcUs[bퟌQL#&"g5H꾩4~#\-6emvFN^ 㡔.Erw}!DcCe 8,=!;{P|:B^zbg*)W Ot1SaT/k>""ȝQWȴahb] Gg ̹d8d݀I *Q$|TΤQTK}@dd/fcK`וMyܜ&eM13Jo*1L}oe⟓#"X`È 55,yR`e_d҃35bt&ZPNy{J#G,'g@==X≷_n:FŚ)etC%f.lOɆ78 9Vh~>2fh bC( lAw"!z6;Pc"; 8C#&1 <ڡ+gGW3" qyIT䍿Zmч}Uo+POWvPQ yg3J㏝ *@ ľ|KK퉶S 8RQΚpӿx 'yOeG؋R1ii磪,tbM|m7͈PdU:k0Q/2o2"?|cNf̜b棻QzdwŔ??L^w2 @Zܙx4?0N!*8G \Hoǂ9{)'8a'u괈$=CF &1od Fݛ3l /dbF<2zS#!+eG!YX1b,|/.@DP|ՃJY-to M,>؇OVc];#FYEVp4P tG4پ& 5Y䜽>|Jaku<R 0p;pM١`?wL[݂THc~DOLo)};hESa=uY? 6hK~HBM=s7ԿCg.XS/7^u]~ToelsBЬա,m[t.a.#-?UD@Q7FFכ@,9tEo6;.W V%5IP1^^fVS=<;9WoV39|eJ-,ά%-JYq}/aewz@1V:NZ&fe}.o2\?=3<_b%u OHZK% ̉EіX^U@[4Oap$-L2{կ#_Z?֨3׾fU,oWkvJO(na|ymi}}Gost֥lv2j %੫ ^2(?#@D ~X8[kEIn42~6hD~SV1_H L৳\bXi!,\}n#7(Pmݟ .~v[}ghu_kN;Z;KȏY`Qr,iQe MdC>,fat4F9Y}O'y'NǗm=+Ƭ~,$*N1HCeGՀaa%wi;U$ Gz,e{a=CY:_ ֭g[À&A/ el NsA tYZ(&')! ٵ1v4OՃSzPuI4@+71*϶.\ktXݫdY_@m8jL>Fc7V"Q&|2-JM[7?pg$siw`?""NMyZ}<@ys0H^?5xT)CoYZ<,rm?,?=&}뀘=̓`!D:y'uIôT I@ BBZ; h7й5f9_4q Փ4b(xq斊 kXKgUdd}?!9IM (CGNфh*Q hcptP{-PHHLbIH8RjW{MFR„zt@G[v|D@-hYT9ψy B$=50wl6go9dƤ[!.Eռ-b]ùT'Z$;M*.a,=Wҥϴ [X+smζol/?GlH*T*s䧨iہ}8w\ @lLS6NXu4v\,~?10