ࡱ> nC!Qԇ 9h$PNG  IHDR5]#gAMA pHYsj IDATx{}pbf-X+z}G1ja:R4)%ףs0eS&|M>q<)I$!Q& iW36::g1 `;G]6I_yYdiz}>~y\2;;&''$nf4b^p3b+I@ D`1s `'2C׺4Y \rWKJJ$_icdzMD̆bX6"f`0v֖VVGurrgW]v C%%[Ju{-ӓ ~ܳɲ Q6ue66'3=j `c$>,Xv49_:_omUML&"Ig21'0?8tcR(ԣ[K>rjj vܹ{?GGGw@CC،/w*ʧ.yDBktHss3DbѢEe)bYV4%@ :i>:;4btmm{uuGy>P288 zd͚57nܘm[;4M#\.mT+ j h?0ywB]vÝ숈d I@DSq߮MȈ37|I˲,:}4ptKK}###nџeY=ɻw~cỶ L1#G"癝)T/_ 4v{1@*Z͛~˟RTJ]te$d4lL[)/]d\̉D¶mEQkkLMMFE9Qp0bS `Ϗ__F#G:::9>}zj܍m˿Ҥ|*Z0xi|W^a׬YSSS3::zdH$[e(LbWMMeYD`0ӟm54<䓏?~XȧRQ[2#G7m;>ښ*65N 5ONNnfP__ܲt!ƍ˖-;w܏~n7^zis}Q˲\t@T=6&I$rrWg&P*սe˖>7:4MӺbWqx64"I^oZU[Ox=رxCCɖ-[|9ɹ5խwU, _ ?-lE|B yf$scx5 zӬ\Бvh|RQ ={,Yy,\V>ЛD4eёD`0B$#D <S@*DT4|'֭]Vqz\>dEEŵk_oAv[p&Ȳ|9)rƠ,xt:)f/s`>qI4&Df)b~?(ٜƀ"73cڧg++7sbbBl|jjJծ. ੩)&?Ki %iGwenM6:qŊ--ϛ&ǥ30q.+y=OsQi|_YQ24uP\~[Ĭ_~h6L`,A y˖-"؏H$~W^y;HABe\.VV<9v$gΜaF{$\;::(DDg,z8Sw2 B<.IRWVV@Ç{131)M{rcXX.?v2mNg/^cqf_/ C N(@?1Yh,hA#'1ٲ,'%"tڻ?Lvo6(dQ8ÑȿTVV:U}*xEf~[hlffFs…v;DccZZg@̖ߊKϗ14dz{/|~ӟ|m7s q|f={EBO}6`^l`haxmBP۶H"$B "s;˗/O-ey탙LP(4;;f[ /B@"b".>Lߋ"ʲ,-JZU V: 8 XO>F%E5k֜UlذȑX''k,BJmEBavpe6,B\hvjR,n С@ PWW72֖O\.SSSMMMl;3OZV_4UE!܁ qWYY{X7g|Lk&&&.\PV6ݍ.]*m4]s:=֭[7>>/޽[EY7l` 8b+-&s9D`P3{pv>Iؼp8 d6 dA_QĚݻwit'`< e?:L5I͛HaG""S3N#f>r]tTU@k:PuT!W_&! c,I`̱&s@/+e9k|77._z~Qʕ+n޼4b=:RP1++c! yifv4wug 0z'x=F8j*\\w2YXK_d@"10q0$*#J8R0';/h3*"0i>_F皚k Q0#Ke_YYy-\r{O_pA1 &VSâ``0&I 1'0@bĥP1Г8^eQ^ZtB}ext[?~s_4>|~mtt'j$<4y6}|>zE)رeY,KRx` ë.:::nͳ:;6W9$^0WTT,95vjx VĦ܉N#w%kbbBBRwbC% T96#v,ilHY'?~\ [ZG+ 2`iYur;8{WVxF]%t[޾C[\'Oڶ ۏ03i녕*^_| 3@aX$螦=ByV@e*ER) I i]O33o>&&&l 8jUi{PDmL/f4=xL:ؗɰXc E:m[2}W~Axp8Zy.ťK@ !i &5EN-HTGBA:mT^lLd2kt} L!>#m)WDBax\/5||8=a, cy J8{97n]{jk'EWWW:ԡH}iDDDo۷QѽFRkkرc|G\1~?/fUm5M3nn @JۏY i]t1. DA"Iٖ`0oME1ȧ2Oݹs/XGGGu]gÈ~wM*̒b`;a<ف@>%Sez٣I-_da(9;/gY~OsϗF(DB޲eK$y~߮Yl{}^@B`0 DDTYY\;8%/&%'0=UUUʃPQQx⸱@.CPeѢEk֬}g=K.={oNQM\Hx.l5+qΝo8D"<6(++zjJY/_qFTXzu0\zxE3/0D9vZp aܹY>bہD4wfff~N\}ciOW<,`>M0ix ,"_?j:Yzbժ᰽f͚\.WZZ:^vdr Lå`K!!F"*vAZlQktvl=9oN$wUo}.ͲHX%bDgܽ{d믗/_.jb:=#?O"Y4gH #n~ 7ݝRi3ڄ+˘'Ν{4z9+tio @`v L*6$/˓sd|2 ,ux*Y#MwYp@ug `,WuM #je`z*t\n<>Cׯiz.}Isz &lMMƍ;5M+3`qo_&cGMM 3\'6)RPR`//^ ;V=B]%(ʳeeeLLioR߆K N@,?$X>_ɞ"s@;wrqڵ;@$!_xJ޴VE}f?焃?xժU#'H//ƈx<\r[oARj*ѢQ˿ n"bt[-bWpuEizwCxʕiZK,( 3>Iٳ7EzӦu4^wGzB7"(Tokˈp+ 4Xo/3=}7={xݺuWVa<̙3gH;H GY"E+zGDdeYpbbb||<\]8C0\t)52bax u1YglPZZ `ƍxIO-*FG/h7tݕc]]]wiA *rxx@sX-ťo{w0Өt,e{Ϣ`uFv8K `ddHRT^^}>S?#Ҧ݉ "E3NgT47,oMVX4=ǎIR˯(755i666Ý--3t@{zE}y w0u]Tէ+-/ڟQ۶mko?"ޑe>ٶ(lٲx +W2(c7`bvGs+0<: d^RUŷo߮r}*W// @$fxO>dNjiiv0X,.vĵ#۶p4:S0,]@θy"|twPSSSV1L._.mw3peeeacڳ!(r8ϧ˲$eY[_Q(e`]#Ӑ :/˯_È$"o f\ ]iڣp1Ŷm" ZCsQ EAYYeͣg׿ >ź|CSl0Z"?%F\.Ȯ+W ?k&***7"QW-TJUcvŜ EFlrm84=}Ktu =݂\ ml@Є"ύYUUٳDžFYg&[a(mm^R!Ҵ'"b.^(իU@l/xXDJg&Deec<K ~G)41嘡އ\<> 7/-^\ [: ]~]4nܸaY N ΅ҁ Mn)l\ žC }EbF#vaZydn# q0B!?Kc:i"[{L0i0[21 K/0DDHQS06f 8??.0_xZ0%'B  >_FSE;Z߸qy+紮mvu ٳgG}ժW6; H?8]̏/L޾>KӺHdkeet:ټyQemCb:α0hĂ%:QPD{.;ظWo7?͙D-v'3_|pr-V\pʕ+[5 Μ;uy՗dpwI`l*E@ H(o 3΢tst8Zޥڜ#.0w} >nr1@ oR]=vzlv NNM_"_EEE1]~l5We(Jp T0~]k"_Fz{&,4tZ鯤AN$7}{UWuّu.Wc1!IDAT:P(vZEQdY;/"Yj/m.6߷&svM4188K06*9,K*))Z;@yy,Ο,XvKTMy<,K'ڵkeY&dYk?ba|׉ֆ ]Z:fQs?L}IENDB`n& (RBryrqPNG  IHDROL}gAMA pHYsj IDATx͜ieWY^^{gys52Te$3 -jKJ8 D֧Ul42H $!@He@RTRyk@BR~Y}pcǎT,c^!ǐbB2p: s_^c,I^ ?zZ!yǎ{?\\t_[?qᣏ=X (C (PcH0ȕRa +W.dVrΤ^=h 8uW>RkF%f7X `oY 9Bdz}EW7}Ǹٽhx);nnn~3y;j@fx8y&JHpd`%U\O57vD헰WVO~>CO@Bd 0b01B 80 C˘&FiLBpa0ƟO_63vI-GGۿwt֑-h L0NEQ c!Ve$G14 C )y L8pzv[o3*f]xZ@km׻ֆY(I=uB.IB=q@wݎJ >${z/+!̃,Ï=oh ؘ3;B2BRDA II,NȻOw;i$bK^%[Zz?Fy7NLa8;~_" ™p-znw/>p-WBE -]McA1QH )XBĺ2Q"麆0QMH(IBĂdH??eB)ͽ\\Ǐ=dd0WmfW%I7ưeP1uIljj U,xAAK-+t96WFXX ,M y#`@_)Խ5덽R?5|h66.@CM'S<}DP2h)! W!4۹Lm٪9v$Z*w4G]rinѬ$1!,+G<_/VjO}mguz w~GUٔ s(GXkL %( ,ʕכֿʖ31)ZV4!"9 bU8)#YsttVS&}U?ww~>PESمp E!Q .T+KN'gkãh6de?; y㵯ɦptb"#iiI~'77⮌R˗_͏ڙ!Bu/}o؇G'nu׾Z 38֬J>%P5*i.P"CRrA 'vYv2v fr#F T8v:7cA9&@ኒȀ3j8q^%X MXK rs,,}|Ǘ6n׿K'>6k~eDո uMR`Ip=QT$t,W/ңO{&A&b@]7J< pV"a< %ǖ! ' /fq녒dS& ?tN¹/+w=y-ի#;6uөv#e;T)a0R-i4BhR~zcاHUE}br/iSSD-E"$L]6dXdmנRhh?Y!R :kqs=w~o7sM%9?d/~qئT 7poHPT* u=ѡ45B?xeKŞٳ|G<昏\>n7Tzg@LF&*jU0G- ]XHj0. ""`g~;JD^P33"CÚՉ#`XٞSLTA2]3,ұV䱯ـa;/k)~IB,../o{,[jZ-ovg|sJw0o(oy۷RT2'iPa*U}ֹ$UkQ-=dN'E[i ]>^wþ+E9fIɄŶDj,сTdq+EoA$0bc=<{Ћ[΃~M)irj7P h届 ~n~Ѝi=-(cdL"[Aj[up\6`LX#Ο R)|כ>8z쫷g=R0ʌiwh#|I&LB9kw9rf#76]9_~E3gO~7āÕ4k$WOD؆ HYU._|^-,?p_{-8BrGrzW"&&L|Ϝ= ;9wϽ73!R6UAV T\9N4RϓU],r{.keHnN= RQQ'Nnp5FFǿ?9~`s;~%u}gL:tZq5{|ޢM Xh1Mu@tL7> S^| =m2Tmx~[xHI)0 {&G+X "v]M̊H'bI%j/#JDM/uYn{ͳijKm{X[YslQ|mQU֏7['Z\ ؆ 9|c8[;g_xO,|Uyb4jRJ + #3``1bD5Qԧ=[RrowU%X0!TK72bEĊˈǂ 5>}fs5TneŬgK)ˮ)iÄVT7,$6:sn#'O5>Tz Y^PC0BVB7|es&( SͶz;/'cG1ۉYiIǝDMDЏ49bFD'(\g}.} ?e\|)  !PUtGkqPh܎-ѷh!󊏹Qg{sf{?g1! [R-c\٨|7/{/Nm}U%Wfpֿջ|ޱѧiG30L,?~yIb)m]Q8MKLY_X܏9 Daz-#Ʒ֟?c+h@K41,KV$eq(#3G$B|{p2M{3_j_xQ~=2AVJ`7;+\Q8[uS ņv˃"}U8DjpD0VI)Uġ=}bZU3ndbLDM MlHؗi|{4Ţ4 A·>F2TA;2󄡡-QR $IBބk˳ 7gW;\DϿ6}+ +_dk[.;yZҰcH ]_g1@P+ƷO(樝)ؖ@|:67=<<}Zd312fU@P)$EeBV (Ӄ HpGNl%Pjl1wf7t5uv51O]Z}7 Wx~t&v*=Hgf[~R =lڱ 3^} >g)rU$27 ĉJSf~@??~|*IDX9Fb%NMf-rNUي+%@BE1)"!g0:AoӇw/.57[ =w>ݬ,3ۇj<%IS|,AL8R*`"WC&AJKWF ӧyx{ ~7K}][w\V.6iXȣ;jJL%Nn&gYaLP}`}.dȆ9$+]a3Sc㙯}~l} ž &)^w3;k)v&wS&t6L<+0U͋)I8zP>؃Rjée0#R:j5JSlnb+b(IBV%ɠh&ib NO@Z;c'{\Tl&0"Xxw]XhYu&6`eOQsF۷ӂ ߭ 9|(Ow&ɅS5n~a&4Px)rɷ2*1!<Rtmͱ]cv*<:ikJr~o$0--Fjq}vRP`N5C.M8p%Nmxæ Kڋˏ>yvmA]w]a "EUKiH@/!`f[COdž9 !-VN um@]UH!r|ڱo`#|g~;Br]ʉnQwQZc8cFzS9uE#Շ}k;$ޔR^kP~bv-ˮQ,cDs>ܑw鿂>`ӹ~,Ir Nr9&ZodU#Ęiۡa[&ߥyG6]Y9},hc:fNL0Ј8kPR&;w '}:nO;A?u\ۦM^IP̅Ae"Sw٧4k{&5D u6lk% U=c*\XeH!$ҋ7B>(m!|@X  x+DV 媩P|ѓL۵zC0lYVPn_OLl 0PP =T{{=f(,WlD@66 NEJmD/s)lÌdJ,7h%#cy+|?.S wRlwXk57Z9"sy~H*ZUƠaVDFijE>v׶D@%H%kUixyܣu wEe9^B-|Tgm2qY>e56e@H3~W}[>9Qcb:mfֽex|ÍotQ2@pho(ަAjkFnq_ZNBCXWV e;?j mQ3@(48w=0súkY Y;HIΖ  %@Cc-^@,dal򘱔Ƭ^79]C))rR`=k7vfn瞉 dѴĩ=2M ,痔8{[_.GIDAT:o $q"Q1}4$iPr2|ɡҝ#9% '9Wh=\[ץm^w[-m*ļ%Qa篽̼h\(|,YA~c& BBGvQ9V{㻪;*,e, eorPGIHjÁ(* ,$]7Ph%! T)^7\E`|?wekdl"  h$ՌUAȕjV-ftAZ Q1 H`$u !CLrQK_7L4_ﶛRY<T0[ֲC6<]4 3"+b2&[VZru:,1Ip!&^lW#.ȝzwg[ڈJ,CZ2##cH)6$q.Q D Lr)or d͐1~[ҋӋ헒$I$EVc>.&E`  X 6#" Z=Xǐ Nf0ricUl:IYvFbȥ<qx6%~cΤeI)hإL]$,3Qy\'BxKOG4qHͳZn9]#AzR*< T{OKaE'L孫A 9ߙo 3?F1D!vcZ^-ĪMȴÕt&NLI ѱ$XSE.3Z9oAV}3xC`@ *19",˱y,K6 9(!*CC x[kl>Ǝ`_lD!K«"5 EBAu+mQKRHR7)6QH ZHMR!$EmAR ZAPAHsz+<3͙3gvw}䪈rLj~Eʯ9 }T|M$+E@^⠦;ʪrqSh' $hzErT[[K L&L63fPoo/\,YB , @NN ?Q4x0={}<rPR| B@IE%d i Tqc% x@(Q| B@JP@& Pi%> @%*n+OE`@FHx=rC@!P2!G#P2I|GJ&Γ"h=L@(\} @(1%b](ΓY^1yfPh;@*2:>!< ah3@*<(cN\Xk׮~ھ};޽=J'OҩS̙3tyt]zԵgo G$wKEߨca"]C2f"M_uнRu Ӥ+eTܙe\?LW%uϮF5ڭAdokoWQnp(swDb=N܏#t=bt}o3O_SRFj,sdu,:r8~7L'{c/u9XY?t8hZ|%h7Z|%<_VKX_W]LWμc+5GT7xTx~#NqN;G^m6ZG?HЩܫg5iϝoyG}Ӆ~ģ>ПktN?P7ц6_g[Ds&>k>&vyyӒϴ9KȔ-NKӒo-rKܒwP2)]|0wS,)֒?kOYS-w[,%K+:ޘcym$SVuo}r.g~heI{ 㑘f؎Nkį:}ݶo+iR2՗N΋-[:vud c|˜ j9FYcn]Ph=9 W.{A\9]ht=(զmzNh@v`[uTݙLs;(l>^qqsk]7 /o>5s(&+ߖ67ޏmG>37~FNFz*YOGB޲e{_rzIR5 8>({\ر2ݗF&K+/zˣ(3XxgԱ ",UV_*A[q?R]eCK.#97}g`/{>=ӇZyP!7ELnS˪d`#zkW)'_l"q'TA^ƿOKWW-G2 ueϏJ_( r ew'`jK:l@q?ֳe /hps0SʩeY RN-s38ٯȼǥ W;ˍ.sKy,}wH= ;-Խ{L^зր>gⳛw GiQMͪyg7G%fvUz?>a㳛zyH qnbY|v3p| iYMSk[?:'ϯG{Zdl57:&HOЍv/!0_gDu잿I[ yi=, S[_8. %c%^)co'FsUxuK5\?:nk4lĹS|նd}?[OӓD}d-Q)s/?h._wnPJ99߯6Mfs(,r쟻_Bge~B-=v!uya/?gMBcޓY߁gw7Me|r8_RD/e{vi͙ﺹ .ϗȾ蔴}t;J{>9H"3u:^pKtڻ{/`T쏵L}o?~~_|s{z#nh] '5p9i=n46bހxI=LfL!;#j}vHuhC0=`S/yMֳoxV(ȟ;sp/@=,Axݔ>#.΂RlLz/E],x{Mfs0rE%, F^y1 ) /NI%)#SF*c9A9>9`$94Cgkn'k]Zw^:l_k]ϿyֵA0  KA`+੊AP)P?T AO(8tPg'O Μ9ѷEKp<#:O" L t!h)׋U躡EF_I֗kBRo&&5Qzc\ML]ɳˢ]o^bror .SX6U޶b= 1/ :ve_BIoFdH ƀ4D1|Ɨ ?d+Zmu/|'!wxl}CAzQ<íc,%?yw>/4W.1Βz~5.<=w8~|-S֏Oz?z#xnc's̽+ X5`Qnp!?c6nLk[X!9'9oc-菿8=OU3moҕ5 H \xy_%F@9?kFhejVDY~E/smxzɸ*1c]P<>?K<?z~^y^?{^hֿ=dkٞ?x?hml?ASocQ6q)TC/[9iBӔoczB6~oc߈xmlY6~-(֯_]or?|k ;RԳgcD_oc3;)y|[^o֯9ʷ~mpo(ӕ?U[3oc?j2/[2ʷ7mlWkd/x֟O[y#|[}˽[_6~ʷm{$X.ccd^m^S{Q7ll{}槍w}OyG{}@ml}P_(ؽ>2_m^b֯YeׇX{}eW_2篍h]bgׇX˼ ď(޾A e^m^dy׫QLöWVcRϹIy6Oy~w{nϧTfXocݓjgo_O=hmCzRXzNXs<>ky|-Xox~Ͽy6=~ͰI5ƺ'DT߽>O=_6=Bj}A)ƺ'}Y6=|XڟӼƺ'կ6=~MIuOicݓ_ƧT&XIƺ'矍uOE^ecݓjO=>XzxGo?zuOƺ'sƺ'|-TuO礍uOZ}R=gm{ ʷItTϴI4}p>zP=m{Rm{ҌkxZl{Rl{R}ƺ'~7zFP6=?6=^֯w|:{LJzP}~X5ƺ'|tm{UʷW{jSN6=?+ƺ'M*ƺ'7>AXm{RSXzl ^lcݓwX*ƺ']|ʷI_QuO_-ISR6=>~_;~)QOʷI+ƺ'~AW(ƺ'珍uOF6=>?l{R=l{R3X>uO{j4h<9^SۻjcݓT6=im{RoԃVuO/6=m{Rƺ'կ6=l{Rƺ'|T_oL`:XzXM6=?O=6=cy19cc3sƺgqϿ߭sƺg猍uX|Q/ƺg猍uϨuϨ眍uϨQ?Q36=>gl{F=l{Fwx[~Koƺgƺgl{FsX綱x=uOM6מG<|m{?)ƺgܥ|*ƺgܡ|qm{Ɣm{F~/xG=ʷ(ƺgܬ|+ƺg["o=X*ƺgwGܤ|Qo~)ƺgܫ|qm{Fxzʷ?PuϨ?Q(ƺg?ʷ_WuϨ{vQmuϨXƺgx}z*_RuϨ{rQ<X]7g믍uϨ#Q6 >?̻jc ??xdOW{m SwG=Ɖo&˩O4 ?AsEe?*oU)c__yeǯ-7+cW1?|˹qu@Z߇P9;gpWW;8aEp g?3f?3H9g) V V~gտ;/=zz鳺Zc\堾<`L06 Ʋ rLe>gsٗ?h{^FY{gmp<{bﳷ9hN>s bQDt~jn{Ae=Z˝_yUߐ!~V+ONK=%(9#:P_/Ǭ]oqtZ\<\dC5~8+{\ kT`=9p9iχx!x-(|Ȝ^qNV ~^פӺ\JG}K{K̓Nߟχ0IIZͅ =2}*sڮz'V낷ߑQ_9,t9|ZN }Nѹ;4 &;@1$cT@=қX&_CߏzФbzfWϾ3emƼo6mLsݔuu}ZIzQ^vI;e-zNc^;o8v.q_2X{=9~u~?1H}k9-o,9\{Ǘ[csZ\W֜isb-u7&F?tN2LK\^yǮ'D5O1GAs`ލWX' aN\yb֔eңd;oJ~3SgH0W%O7A0x><yc |/`%LCycCP~cV4aۄmۡP{Y ӔEf ±!ysV´`ٖ¶vl+%j[oJ,4Fvm AmmY ӎEf wBQ"Oػ.Vtbvul3j;J,4{{t7j+alwa{:`%LOy%loBm/7<cB}P~_Vc&;&"O ;б@~f <vc@Q;V ea† C0Y aG9v$4#d%(y-XǎFv41"O ;α@af<͎vcƣvDLϰf<>+l>=g?J,4;Gع}9g%\y}Qy} z/0Xiv v>$+a.t+˨}+Y"O]WE]UV,f%.sRh j_Je,4\ؕ]-Gr+X EfW ƱU]5+aְZa:kJ"y]'zǾC:of=Bx'EӑΞfvcFSHOf 7=vcALxgDŞfvcCݳHωf#7=vcGxEs˞f_vc_B݋H/!7=vc-@n{}Y؅}u/#"ZB4HŎ}u^-Fn1{蘒 {!Z%B eiv+ZWBivkZUWB5ivE}Z_g"4N}Zu`f=raro&+4o!{(;}ڈfaO&o-maO[w ]Vh!=nvc߃~;Xف4vc?ROdO.=aO{ CVh!=c?~?Y94{PO{:B r~#aO=cAGQ1Vh#w=͞cN/X9I4{J/{:SOB%r_barϰBr_ٳžsYԟ5+4;ǞfK-u7P K M)rit E.Yz3G?1 sRhbȑ. 6[؊lg MEH2JVqleTB}%pYr[U؛[ 5UQ_\5VhnBT-c&9ળBS9R [ 55Q_\-Vhj#GcoFMw3+4uYcoAM=w +4Y Em.,e=/lC& Xxz:ڤ\0 ks'% 8orYyu|a:Gm>yӐUH&m 5Bm#YMV?@m6um )rMl3a[89 7g7-kf[ ڱo i\k4Fvm A}mYM;ڱvpP{Է'\4QN b7Ğf; ձ]Ψ \W4{{t7\74]؞uG}w=XMOz^v}P/\o4G~ A}}Yq(a` p?:o%tf r`a:v4a7Cʞeϛo̥ߘ4\"ŽrHԍG)(4;ZرHcDc˞fvcAH!7=͎vcCxxDf' ;űQ7 ih rSTa9 MGzB4 iiP}uHO#7=>% >@n{),>Hψf!7=>+l>gᑞFn6{#\>9Hϋ"7=;(<Ǿ^Cn{/&Q7))Z4  ^GzEiv*#*Zb4De]%HKEː[ƞf ұ+]ĬDn%{]%ǮV~լ5ivE}Z_g":a; hUb#=n-Ǿ m@oJ[ȽŞf7 c߆6~#Y%aO&oUb =nvc߅~+wY%frvaw8=h;Ubv =ͦS?`dO.Ub =vc?~/Y%fr~a8ch?Ub w= C r~#aUb>ES4{T=EQX%8r aO: OUbN"w=R@Jͥ4jN#}ܗiXد{uHgD_!{=+9~H_!w=͖[oPWR4{A؋u]D"{7swS2r1S-lEV@]6IDhJb+ [űQW ʢ*U1UɱPWjɔ[ñQzRuQ jRuؚvl-D=6rM?@la:fA=fQ]Ruzw-z-79rQOj C.ϔ бG=@<6cIEMkbȻ^t k{o!+P!vBX ;籧|a:uH5dOmƨkX&i6a:vt)rMl3a[89#5@{m)lkǶB]KxVȵfOmmضkVvi{'#)\4QN uuB{,lWvA]gx.ueOw ͱnx{Dݐƞf ӱ=P'r=l/a{;>GOiu}!׏=64@@.fvc@H"7=vcn0<P䆲a†aHE!r!{!(ǎDxQȍbO1 4F4iaa9= hrxa'81ԍGzL4 ivS;u& 7=Nvc@Tx'DӐƞf 'QWh:rSpӨ{ i fٙr3 hrvs{9lf9uh.rssK{%<汧.pluᑒ-`O/ бexWD [Ȟf رn<ҫ-fOK]إ[T eY6K[Ȏ][-Gr+XYȭdO]*ԯ[4V"ǾEZbEu®w:ԯ++ivo9Mh7{ FaqFo6++rﰧMnqfh7ʊmAn {*6Ǿ mEVﲲbېƞf ñAQ{vٔ;B} Nv]qnhwʊAn{+>~E^bǞf {CQǬك~CAOaa?u0?ʊ}ܧi{ :bǑ;ΞfO{ұ_@'PINS~)ԟ/l_9 TbgXY=͞c΢,YYsȝcO%–:%aeJ+eO ;VV"r,#[ȎkbxNY--lEV@M6U`e*"GVc++ʊUAT9*M ++vrjl5[59Wz[Sڎ ++V9R u{3j꠾YYȑn` [߱끻"O9jrQ  Yi6_؆-@M>jEf ıQ5f/uo>@+{ "h9t/&74:3̜6ͯwE+⬹=BŦ9kn5".>%'Vw/ņ`>į>iU]gUc-}}/P޾~O;]^Z!]n]^${ڤXy}G8 }6cgE7&ɿ݋~S,XƶO}Lbzcqg* >&Z& 낿>k>_{drIǏfQ|yۣ*A c1 ?PM6n (J*UV WԮ];W^4n8۷oУGSNA۶mhja/SQ}ۂ?^1'{~C!RP$Eq(P C!RP$š0m1 !RP$+B( HV*PJAh $"Y8BI(EPJAl KB)(C!RP$;"PJɎC!RP$;+%΋CI(ѲRNLbҿx*(H8RSPq!P ġ<AGG=SP$..{  $"9q( i="C!RP$ PJAL8F.C(VdqD$"&T $SPēy(P dšJB)(L18t\":Kq4(8qb0cƌ`޼y}QpС> N<9s&()) oE4.ED$t-5:/@= |FqTlp :t9Q@{A x[ol{w ؆Ā@U[PnHsJ%nN*zJQF*lũT 釔]!F)H (DVE{nn{gLrRYf{3Fpߡk65#JеeDIՑqq {@ ^_%E+hħM5͡HYaC& A^%D___ e2zjll3gٳiܹpBZv-eYZr%-[TOT[_POE9N.ïH.jJd@()F%d.> i PQe>JpP xE]| (8 % dM@I]| t x1.>J:| t @*DA8* *:<.0.~ xa 8sP `>J<@>‰|| L%<ź P'@<\C>PC>>J& x<خ:}b#14K޸q#r9ڻw/8pNMff^Img)ϒ%'K~?oxԒ-AKmɻ-y%o2rZjKSu5c93v?tGr,r[owS5qR-,u7j ҷI8_k WM5i9z<^yf[-y%gYrdM)?jɏZ%ݖʜN]_)sڔwY.K% 6ߒs{vƴ_) >&Mc澥sg}hlA{A[i^/^XFkd<2Nk9Y\|F:mν*^_t[\_2V[~ys9k)ye/z=<d}hgq\܏O> /{~䜀9:93T0/c̬{9mϭ( H @·a*ۨ#tst'rZ9a8*ۨm<(wB9B4!?o%qa:z>\pْ"݁paۨj9+LlKǙ\j:8o#|rgADߍ>kNR[ؗuܿnҶ1-쳸,?}Jۢ򤶰o*_*mއ$}P/UY[AϯT}PoRK%熼tvQ1œפ?2{ /%WETDL8;,N-K':&Gc;SȗnW *ӥyyNi:{ɿmT7n~=/jJϣRgWrzX ߥ "g"r)1tgɨq*Z|zOWᥞh|ճw!7uAƢN5N5u Rސ˵Tvu\wlWQ7lKQ-q[K~\ےi8_̶vms C6^f8!MOx/v%OQ6>uJuxiA r#/w~b!BOzB x[}l{Æ PA |VuI 1شx)5p\TZP*VUE4JFiR*"KdGLD@RKM4{nn{6Ty>f潙ٳh x!\=@ȁeL?6\\p'pr؀91l, erXkL\"O: ijp\uЦ"x9tA%Qss3߿:DOG穫zzzƍ${y fJlAB J̓"ob"UGCҟ;E6@eDl}H[/QN| UeY* e}HSɕf>+[FYhC^ifk(ʽmeH}].tjڠW 4IMnC6fɠ7Zʴ+}6Zv_,+yӠ4۠$ :B~Q~EG$ݺ_-wYW{y"B^CeCmzׇ)c/Jt/Jzxy^l:Nǥ3xԱʚ`=aMR?:*U; ]Y;wQGkt i ~F9'Y:π磎j-P~Mf|\sq`zwxOQ`cܙ`n;W/`g yZtaZ[y¾i.9z! ~jer/FWe-^h Ak,N~!N?5`4Kwݚl}aͲG{P~>`tY?'AI|e8KrE.,g$vP"krqٓ 5#W_2 OEK“< 2F??,__i}Fe |#- v+!_ɂ$ߖ1$UY_O@?Wp7}S ^o^B1M}3n L79_<~m}gw~MLwngd7SއK|-ɛO6Y"m~Hξ&R8dށs8Yycsw ;cJPO>5:g>GS g34h/ʯ} <.& _^;;Ỷ/cQ$Q)}dFȺ=чr.Rn~~8ve+^+nC+~Ɩj(ݖ8-L?lIUr/f[ZfE>A0|2mJe3(fC"f)賵RY(WRĺp7lve;FsjlmdRR]{ؖP.P>%"wtUn"/&MbDߪ}u 4{si{+)֒) Cu?ǩZ9RF3X3ycx~~7~pt@=A JiXGY&eO^3f_+Qk{]EU R#Lm%ۋdDjJUQUU"TJ*`ԕ""Bc R* U*:{vowgL87{ofWnZg)AASWDoڴ "A:DϡM@oR8,:/z_ du~Rڴ $u& CCC4N)ТE-[F+VFjjjںu+uttP{{;Ƀy۶! #[ C'Dԍ<~\|@jae3spZ)puZypu xH=@ք<.p'<<_r_>d0&`U03hJR.g]~ܠR/#A}@s xN~<^\p]  xHmRuA= Nq"ؠEPԆ.> Oԗ,"y|I';v\.GtQ:{,:u.^HtU $tp<f/UFǎf8x7pܰbic!;>kR6~K(Ztn#`ڤ<~co ]=-'7&[_[bc5$ݿ3qf D kLbPث,؏6ҟOK* ϰ+"C~C0aL4f t{s`71϶J<]Ds1OU$& ẎA%&txj#h'Si!p%WcGއH?t7|l%v<|0ƥ?9{ZSC?7fn<n'2hty2erv"ӎyq1|D\Ս„)9-)~':jtT\|Mj^uZ/:N":Q(ߜ O^{.8ua&4S|<w;OJQ'l5pp>b.m2Ma\{MFm9}j t;[<: DP1.6a;zu9qA ʕ8FƸ} Gٙz.r%1s_RL\vcn5ڊZ:iN4_DM(v^t9m9FB-}N ]p@[+rf,[DžTjL=.6X)\]L%K)DہHŵv 7k#X-NRm~:T%q 5䲜@=N~-G1 :-u%w!{\ _E_@DʵS?S5br1rO(jIgw ll5k<=}蝳ƕ^*ﮑ>Ew3w?(k:.F.]]@7kd5o(2]{WS}۠7ʓ!]svo͜|{o@ƳNXW{P4{ׇ]R;G#cIJ y^xב{x. ̽06~ƾ岱)[+dGI3K+cu9W>&-o IeFoe(9 UM__\Z oߪ.~~{]m-u*m]mS%ʾ_Dy+ 3ˤlz'<NnI6O- '㉙wŽŤǺ@N~M̼m׶^j-YFR1SٶYI1-#&7w&cZ.F*Nт۳ Y*JFIF`WANG2 CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) Quality = 75, Smoothing = 0 C    $.' ",#(7),01444'9=82<.342 i }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?Ѷm:LREQEQE܍L-QMM/L3NQLy5=XMqq' X?|%bVX?|# rgK6 ¢G4'  ͷy!HAx"I9ϙ6kR,cT]cnAJ,1Ymi鷾lFƻcTQ = *HVA\RqIQӬY!/PdJA5o:MfӮ+u~$=kwkV/nF )s4ޚcS.* |WB襎Xuu# ԔQEQEQEQEQERQEQKEQEQEQEQEQE! s[څF@3ɯWNjˢ^L|9M$K^ៀk3ϖzk <9SI 9MvQQ5EQ( s2f&K>ҷTr rEr4_^Z fmX6%2J:״+2#"z6ycOh[jtj?k:"ߺox~4Etrkc9unp?*xE2q(@¹:mkrQy"jo⻟@#mOS^V~iVQ@qL4H/`[$6+3Q4Z&K(f ܼu~$*inֳu5!a? H4(r%4xNt5]>34ף2K]6Pۆmkw:FCoT4gr=+pjxU ?*? 6#^%1׬xR.4EB2Mp+*Q GtR1G,O#c ¾CQ>'%7A|XQkpf=6V%*E|.'PӭnapTs򯡭mm*U=MZxA)@-nI#+ſ 5 3M-sj"X S<'K]l 2E} 7ɝb }* -QEQEQEQEQEQEQEQEQEQEQHzkM+̲(rs_9ǚߍ/v4 8?`{}м/xr R%hw2Xڤvq 'sIK5FH6*? h^'RW!~VV+|-]E1&=mR5E(WcIh/޵? $ 6%ٌD}*Oxz/ecm:r1{׿ibL$J +ʾngC^5TWxݲSRJ'K?4b\۵} {-GCӂ fAWVj]/ڍ66~5|;:3I+:Mg3sonMڑ׌pmoZq\\JҊJul&]!qYfXSpѱ#XHG*9,/_In|^ xs_nFJk< 1i }­u-%!J(((((((((()@Ҽ[/;Lr(9 4sZKoF7}31uy2^: ڕWnaZQ^cxZC5 #{y~hq4n٬|\qҾw+M\S ⾗VWPAdyYzݨom2W+/jZ]QX(uiؽ*иL ̺ cg+0$5~{y Oz'58𽿊=qg"5Ah xxKIJxgX-}_5b:aՁR2=k>3,>p%F>Z|%`4 ָd ƼoZ?!62GAaKM m^Sy>w ѥHc]Er3 7w{pCQO^:ϊ5+^M>/0dtm졊_:UP}kGc4; rTaG"y #gdJ<UmY_Mcźglub@~e5QEQEQEQEQEQEQEQEQEQTyG c+築?Z]+CdI0<ҹ_;|ev;0ْgJc|3`}G+TA'.xͯkHۡDoG9h$<+q;(P9$N/\jVf;N/zNWUC۹\U#+7^O|S tqGnk`Mn$#pZOKi V׊m*(/. 0ֹ/2ҼW($^IPbxcږi>%ɶ&|xᯌ5kUKłMqs^yYV5@ 1׼[Y4rVQ7c!ul)?_TcYۅ%\~:QLwTFf` OJoֱI}M{4<9[i n u5cmj6ڎ!Jx|H|\ RyWDktG2^5 j:,k ,с+t_[.2A4M 6(VE"'EQEQEQEQEQEQEQEQETI.%_ďW$M7Nш$dsĒǩjHir_Iime)HEhqA/jmnOGc/Դ<hM ނo豓yBU5ɏ31oՎfV7 4L:ҴW?&owSђ E|cZtMnTNA_FitW$jq*ʹwVA.J:=NgúLq9,qQ?P)䢂IP=jڥ􂩟9n>2<xӓŚ [fufwI?-AZ r#XڃW7xcKuK۸CMlۑȮc-yŏp#9S{xP?ɯl"F5u'/ v Si^ɵCv7G$;hZY3tg'WUËXıj 2y]k"d=W?~!YRi_x-QEQEQEQEQEQEQEQEV+hi$H2OJĩCw.R3`>|/_T)`*>}'imvGP8W;yhPy o#I]G{k%˺9)5ZvSO^ZIc#]W¦r~lk-;6ifx*e7EWv]wJmcJNNVF@kZ,g&YFI5*F bczou(UUk>9Xh]:\o];I"~|G՜5+১Vu1;ո~ig៼9?_?AQyWj{|j|Fmu˸{U)>xMoxWQ;3?5Vm>4jk<@}E?һⷅu;ՂCq]ݽbKyD=5ltV>{e,S"-mo 5"ws)נs66g+cw>0Ք~[ts./ ߵaש5R2[A!yz54k.xMP\%` #_zr=ih((((((()ŘI=oyt-&l@HJ]l?j xE$U\|qikCPbWMq'Éj]#4NUМ0?Jk6:=7w1ƈ3 7ѧvhaֿ|su=^OX8~wpk>LBVJ5k51x퍬.+on<;Isr"f[>2ibŚt|0+i+6yzyjsJѰSWjռ5OFBmZkTExr.b xVγa+ح-" (UQLu m6K(MxcǖX+CYaxn7ۻRpG;źd*#k;Pռ P4St9WEb^6yv^4jvu2W`: Z(#{Zi=C[xDbPng5-B)μTQv j2Ǵ V|;r{[xKKv?ZmB.-fIbq)Yx $QeB"Ny-*[ǜk&Ծ+kei-?t+Yxke孔A#D k7'|}us:Hϧ^t/hOhf");s׵E4w,0daa^Ucz&a]B >7o<-@[d5}gjvƟ C iEQEQEQEQEQEQEQA\|UoMk\y"%'MFR}p3_Wx3С X֝a][NpvƤ?GS-k)m.Y!qiMgƫ.M*M?ƻ߃VΟ& f2r^8mj;\_؆kHzG_ʽӌgj6]^Lă%׊jF7IvKZC_k5?wr8ׅEp~;e2u'A\1)xOvmq^[ë~ex!;H6yG>64=Bb-?,~( QEQEQEQEQEQEQET,$N)UWcelB}kվ t-uP-{;tƋ[]_HLVk,q^OA9mm2yS]+?R-uk)m/"YaU|  5'KM'=Sǚd6̻nf샽z<e8E.fiRkK~(3p>T,k?|]9B7 ? _K͒X@||konfQOݦm97$}szP !x6UK(sYk C\\n>|Q}lBMGQף 59j4 㷒:v ?Wc]FCQ^y^yOxYG\֦Mrpj# BےU-x1oK"_\wqDeQɌ4RZσ|U%,,pƀҼCڼ/Ֆf ~t.g^<ϳ lo/m|95M( | [_ ev/3LܜoKQk]: 6a <]K"RH=kt5K lPZVƛrq a 8+WŚ LRosGu &hyCjMT^/Zkvicf?vOŲxwB֙7ן5 NwjW_;uJ%vEx-rY3<֨'d3EX: }S!8ߎi~EaԠ>~7\S:W|]ާ}&Ny3e#'"+^0l>6X4Y=֡r  ~'x#ðJv^=/ÏKPcS m+~(x:?jcYlr}x)ܲ }}yaAYCwT UҊ((((((+?SMn/ep…M|}}f>-nvM/^3_M;~1;y[kc:s UI=Myx#Ŗ7(;3;RxŖקMfϛIpzޥkdrSE"vq^[=JӮ6ڽ2AJqO3_^:F XWiVgW7ţ߻ ^img[Ek(EV^Mze!#0 s6UI֋ˤOBӚ]kD3ۈ|C:/DRk !7?fn/dDu x'Ě*3(2޽VWW+o>&_~U/.'7:&n?y]~i^{URh>QTGV-nzQ1yfdGkz(u+s~*_vZ1j#[f;vX:Ljt.|< tq3zwzrּMߋ>(}X-V[DqJG&| r+>Q%eP1jk^:&uKhktrp8VW~ݦs&f((((((+ž;;HMLMs̀\? k {O}>v^mmحTVC7e^Mж:vuj.-2F E<|?eˋ-6dl4,zUi_j`;r {W=sV<o4f6M"9x Az$#FrTJox [٣ҭ+oz֑i}{oy6rYi#{ƛnEBKWm_^7G'oagmuM 89>DvO F+f?d/Ү^T]cP_WWk:**yoa^ QM.IB[۞ M{-EtH֬69Q0S}k%BH-,,dAֻxŚ$w! X5*") ⻋%9{ 3';Ew𭷄? 4c'dҞE|;tgz*Vg%Ք4L35DƓ,;Gn=+%_QU4]f8U#=E'҉C&Q^ڕ9o5 Qx87ľ#ƻ0Ѯam)Z7enດw? ~2k,o-ﬡ*R 6->."VI>(oheT$^?,M;I,Y#A]Ox~oQrbg^ooa!Qs1Vy]h@;5zKíLhp3W@(((((;W^~ Tkݧ5 |: "n_[*(*N:dSrsw a|z0kzkP)+wc j/kiu,Mz~>$&pAjτ~Q~Ɉ8=kXeX~j> oI$:5Ǽ^)vi5Myxwz&c]-n[|n6{\/&aBB=Hz$Y۴Hkbz X Yz'~G3$2s[KGtE+s=V#EyKu$W"P$ՏbToTsФ ߻aSGҵQel?rLӴ֯Nb? 鱎_Nv%_4ؚ- t\*1f{!{?LXՏirkǩ&vgZ4>yMr@C]Ay4Z>ﬥVGySW"w0Ĩ6[hk1dV81!QߏtZ_5/j knLH-8"^W%e#K(фF}%Cj񯆡O,Am-w \?Kg4\g"HhڂF"cĖߠndӝ*_ ƕzy|358q8WXZKs1csjfk1Z˾\wſsw4qn<Wďː]4((((((ȯ~<{XV˒]R꒡ܷԵ-A46_ #ֲ-o1@Uw n~{Qǵ~=-<3b |ώ벽7&!Tu5kWpxn.$A+حn`gD6 "J,(WzbG?`Yrl)e2Mx_O{ wO by^XxCL /v5q+[98Y~ /GN q]ei/)*?xu';xl攅 I^T|7 D1f}9 "{q^Vw,-C&@$WTkAhV׿h7Q>S3}\qkKm:[$1.I'mͦY6UP*;Wf&0Vms[Iӄs;Ivt71=OL,ed0 SE⏴[B~A蠚'Stom\4R`G8{z֯cv0tP`ڇ CF9ci յQjr#$g> ^&ݶ*A?<9;SlOWZ:k |'2c`2]<][:"NNϯJF>'jwTbdcJZ }+w^~H"81Iף\4|5{Tm#_UxXMw}X+((((({tvS9ƌğa_2Ɠ6Kg_^xgLO21!u gqt.Akw|7Ϧ]m/<,::g~h4&m%aҺ~(xk"[ubGL}+o̺,&7OjZZ//@=)9תM㒅8Y/qs\<xɺPa$AcO5$o[hsK/$.z2[r|yZ~+x]>)j7ggAx" i+5n$#VW0oåj*lH77/^ Ct9t_|Ga#}?k?ɑ_Z]#DAw+WVZ%׊_ 0zQ⻏j;TcҺxW^*Ok?-Nr[WuԺ圂n<;x#7EƯoho4Oפ͢xFfc$W1O~$6icbGZkZƐuy9*IT o h;+!\>2hZeÍ0q,uO4%hB:W7xO[8O/8HsM?H!FyW>> o>O 9A^Z0Ad\V Iq3Xx^cpV~:f/[rZωP}Α>Y+!c!|Wզ6C=@)8Eb{Ӊ:lrzҮ~am3!Ҋ(((((;W SV]#n_<%=) uvG?6@h~+>WYSOgWxh63i,:\3_AVKaZ"E? ڃ:bKO 2^[gHm`|s^p4_|D?M?MȀFp\d^ii:jZķ ~3\Kf|c]p‰EgP3X$ sN,jpsڼᖉ?YRG]7Voi887z.j=SF"⧃naDwVH|gz~G]qOV.{MgVY Zb8'ں1rV&uuv>bȥȮG)>κ 'A_?WIc\+a׺!k3-.Ogm/ XG,5tWK4p^GTP9,p+>!i_c_<}ki#TϨ!=sR J,>&h h(O#41*i\j|#h|,{)7fH¬CK<w5~2xj-gmoRO_ŤwSr c"/x'9 :g-OW{cvZb%B+_Km+~Cgۏ]d-!a¾9wQ| n5 yzd5}?zYMRg^pȬ"4Ka!w}kh&}-@9eɮុ/eLA?Ȯƚ%V"ϭpƋw:/%-u h֟'R=4j~ĖX[lW :j7V0_3>3Z.~!x Z[wH98ֽ+V#4 s^;*]D,:׹+Fu4\<-xՉ+5!NJJKwbo-4F܋z{ױk"/6R(_j._[C 2Fps\2ַ$<s槬$ 7@.HX5T[լfᢶm Wfuow-lFckc$sϪ1777kM͌m9]L^H@XmUyo|cOMw kgivpo[x\5Xƪ}gO e{-]lF_h}(=+E}i|C! 9gְu?M񞋪rZZkmb:|$~5ƟHGae(J|Cڴq[Of?o/.bU x{u+ ϮYC= ƣ<'}eiMRqXc3V]Fw[|qsZ~jFDxf_ƻQR{ K]o$.]hlC_ײl*0BY:|?VCd2|J%w2 Cl/SPXDW`;א3;/W&;RW.ZҊ(#}3vczWkVڷkvϦ6d3Wg4, }*ޟ=LU[m6qܦMjX]B"AYAk;kUD=@}寏:x*OI$׭|&&*(((((V <&,_s('}[@ +ɭjGNh.%&GpHֶ<j\w:%ܗ+k)sI{Q7Z߇NםKzgXXm1)obkpX ]7Qeq `oEݤcuxiö pť0%#j4 ~`n-bF4 ?SL46GEe#FA?Ox]ktGF03^-'$=X6*Ww4:\N]q?V!Q}*iffvZFWڹ/Bκ (#LAwn"ZRzW|OHH FT)ָ C㟉/1٪[„?G?B@j(]T8;Nq^&7ާ'^0á{X״]?R1 gV gmD\&~aڕp}___񭶏ak s-ܻ0thpZd=xIs^EQEQEQEQEQT'1 6`x|ů_i٨K8#QW|{eMJb@In;] ;/ʚ?UKIMJطt@J#Xy5@kx#1so@!A5'孚H(,~_ c }*x>ɩ]%ˮ'r? ZytZOl[Kp~ +_o)-ZR.bŝٷq9>"i{!i{\cQې> Ȭhb!\v<W"tmƖ'k'V{--Լ~VKn/n)cR:&p-杇ʋް'sɫf6ZW{yLTqNԾ%\i#%u/ @ ^c,Xy91S+]F!Zf Y*-IA|u ݵw pqZGXլ@p=EYv_Gko9!PxSҼKkxLK8dY𷇾xqVC{kup:!'v‚8KdU* q?‘HPژ~*xETy{"֎m+ReKApP9t;1ιoN:4vc&s9+L-gW]B8ܟ¼Tx|%!oN-kʷfb[yzcpuO]Y^Ǧ&-\O+~:Ϣ%4c<r8p5;d {eku^>+)Ͻm?oJCs*ך(}kmѫzkh}Nq9ʻ5H^EQEQEQEQEQYz>5} /t{bYg k=Yi UpdE|}Fhn]O`븏_ᶳ]cJ!km5ŶE9#\U*+ {-4WxOZf]>_¼ ߎ:̬ ~D׼y)kd1z5?4Iav֤Vgw{{Zܐ; ʒjNw-q`p \gl#݆FbA OR?:jI{-A~&k5[y#0u,$cH]mVjpN%aj};z[!x;~ė c03of1+(՗崻no5IE61Ut[MSM2I ]^0*Oxm`uijey4KN:H85ھ}iq{B_'yŚ ]>w_QBkY.KAk<()ҡt,+h-l0e@**c6x:C'4W '>0k}&5KZWg[klcm#ci'EtT(?j|5X|rndB- T]ڶZl"P8~n%wd8x/tM2OJJt#T hœ85l^'>it?Q^X*HG<:'Yg"^]}XGѣm='+OuI5G@9et}+>>6k5Ze,OWxƱ<,pRMq%cSr׾1#1+׮bZmD)ɵWX7𯞙wcZSOM,H0H@NL1JFU8k ҷAں}n1LH5(Q+!Tui8Ȳ?V#vB3A1sJ|9g^^E}]׃|l֯t/iW#>Kḳ~_ t?-pan᫧mATsَ+zZn/|Ă㬨< 9qWoP?#Hʺ#)dW#xC՝/٧<`;Nk ìFվn~چ{6I\#~nT~/q7! _X4)"m$y4mNKh$91 ?/ _}yMwQw[y3tV_P8 :(((((u-ꎦF9nzA}t*U.=B-Ṿ* 7FӴ87}jZa|15xW`sWA=cgDg^iiS-ĐD+~}Y5Mnw8xNs=›:PxWKi=F'`ɭU`2 xg[7 pg_ֽcږ}iQ;W|⼔ F1sk *0ʀ7Z{M99)H KVV+"I\b?X/m[ܸHFf'\?<˫iM=:_.+MzaF1ʳ-nY?UZ MxŶ!Vo%U:4O |,V15C gGT|* 4'V_ \nfZe5dQ:^݁ƹ$w.}JUXC+jvOAζ#TsFK;KƔȏ^޼㴅C7//zސNfq"xHxiT3u=EuY[EooQTp*;Ra}/j?Ez;sVG⟿[?}EQEQEQEQEQU̲OFKׯ4]C +P oFnjkbTMWN5s~5=P,?wy&~'1ku} 5Qx1_v~ ߘlKk wFxsI#dL?y׈>I 跗8W++Y 0A'-vӯ [57@e ?VӴ:5=svv[¹\o7Qz \U?o5EC o8n Hs^\ l69o!-CY./[tyKimMqg>HSMsTPӬDKҘ=ƩikVEp/=i$ Ecs.~&w;ִ5[]^%ôI_硫nZ?!!(;dk#z4Bg=t񖣯_^LdXPFW :oH״?GՃNneHӖ栓UѴ3@l kޡqx#IA<5yiEDY#w~w |c,;NCDV/>u` =㵌 $Oeow@:|?Gf{M+kAE ºG!v6?_^ 1PҼg/|=umS^w70^jQGjܼ8zV=īH2YOvq뫲IfYbnC)ȫhɶåEnZYx((((()2z/d*s -I9y*_jMzFZ(Z¾Ծ$K6^J9#$~ k>H\<%IJ6y?{WvvV:[İkZ9h^g2Ӄ`G^ WosT_/G? u/daH;|Q Ed:ɎGhզGyg(x~^Ƽ㝳K 5^Ch67L"gVC`z8-kz_PH@Mx>9^,?/zy6[ꗑ M&q־q2.;D_ݏmf˦<3[Ն8W'eˢk:4MxҴz](7kh wQgt+m8EvatCJORj|2lpXJ;kᯇZ+#37Ax~NV2uh汴_6m^]K}7):jv7GeҐ ~Oҍ T/9Kg}|/=}b|;ahiS)rƼ~{K2/kVZ|k׭kU!N2Pvc.+OWlb^lVJ#}F[Kּ?OoexgF H$WSZ|SM9eSM3Ym{ J%Mѣ_n?_XLӦ-4}2i H >Cފ~\zF]Z ['^@j&ut# @7t=GX2ʻw?ZuDŽ|{uᕙ?6;C|C^x=Cfa,s^EQEQEQEQEQA_$k6^?|af]5 uOv9tOš 4'5|7f*(&t=r87~,JM.n$epp^k 3oks/2R λ\B[ysA)OQֺ?u1TާXc90=L1Pƣy '̈Bi~ eaxv֬Eq,j)Wx#$;4[͍ # ٹ W9S]7m6fHb^y-Ċ3JkǚΦZ\;|ipG] wjz{Wu)ΈARď]:g@R1q^iJ"1ҩg ;Dd690`z 8|E!Tui8Ȳ KI)qHG/Z~R$HH ǿ5zu4s\"Wz>'i>" mrMFolנRQX^'F.3+>\.+; ⦭seᆲ25S\FSVʹ6$.#DuPda$8"o!xNg}*ki,@Xбx{v~ kE?t=wQoᑴ@mgaOXtI{hMy ] B66d%jNYb2I^W^oWkezq^?|> !9XF07~QEQEQEQEQE|C5]?Pa?t'Չ9xdHbϴ, bsMkUY ႀݓ] 2YCWKa *#nâvOQXZ74;:fomkv,W AٲZ0knb͞ED25ZVw kjЬC]F23Uiz֭}b&kч!y׫>wt,˂پ|_cPl=9fҬ y ~_ʴx8bDOEyUTdڼK?^ yY&^7Ω~\s+)RxkźՍIF,j$;H cAxԧTFy"GR`7/ݶehMK|#7/*kAOӭ#Pz™D;#!5=?tʩ*;tPp7 OPsjKVp+>4jS >mqn7_+oVn(^Upd#ǂ3@yl)"Xھ2麲yEp?Ǻ^$w H-9+$cwجjP Pyeş=Zu#3G_K֗2ZȞa3<I|w=`Fz~yo3i [AݹwwFi5':X6$8FA xMg y⻽7K,$*cc? [?|헐uj&`V<"?|Kruݹ%뭃}}!c> Q٢(((((& kgx^w W[O`ͅN=}9ڠwyQn9l f{maiR4fc+̼CD{{{N~7n:fv'N_N,Y,W{QҼ#4 _zg`bpֽ?k?\2"주̄1^x[(/>d⭷/yږW|NԡlM^:]x.'< c X}narq]G_ IJ7e 2خN{BD$^C]_<A-pw4-֮9*zfVMEE^ (> yV>*#HبX0yeJ~ʠ7-ԛm{Pk-ɾz ԑRIX4ڌo4gL&'*sqo@Mb8k!:/Dnu"H*58K6Lc"X j4K?g~l]bڬM] mHͥۂɽQQaSK/jh-׬FR2j6qrcKg=kƾ^*NE״wO<=+l>i:5yIخ_he bD*/#יW1Ck <70s-oC}HͻnH UMka.+>:xYXihiWEᏎaVD_O4Mn :2g` oAKQ|q J>[Z{;ۦٱ)QEQEQEQEQEL: B/#M͜1\yo?¾͂d9ǥxſZxWG/vɰ< M-b7!MzlVV;x@r)ml>hf`*x}Zm?P'BżsޛOÃDy =qx¿Bok2ko--[<lEmI/EQRM,pHʨ$9&U5YGFk?FQyeq( 86(_0ޕxCZ悗{7SW޼_%-ofK .y5^,A ۆG+dI|RGgI;mLK,jLI +2V༷`J_D-LW(q\y#~dE?5<32ohu^únyj7;Z-[Ð?;6~vjO~1\V}Zus%,sj/+zW]x.ħZOHb ʨo/B Hq^q| 4^Nqʦ fE>"+y+)k>24[cfNޣҽxQ+>cZlm~Gq4qs+I+nZ((((()0kω<*lfewvW$j#qJ xO"=W⎹^|k) qs^E&xL?[xy2L֯g4'GPU(O^6Rnzku^GҸOn,$=^uK{[ 5&?>0Lӭ~+g|QMcp,#cjo> o A^#$WRr+uռcx>^M= { <9]7b pB>f>qcW7Kcה.Tާ'Zo~ E$ ˌhI}8UπlGjٟYw0^/^GA bebF\}?W<\m~>d?6zZxn%Z/:>,C9S\7Q&t9=z W|PvI[~UTh]_;CJ_R٘rSXxvkHn_b;^[u 4,̮ x&f%t.yZVo^[8hPC#Hl:@ׅmmvbWPs]x#RъLJ{h.P$Pk| 㛽n("p? Ofu_Ih]) 'q:m9J((((((xOlӘ3FC>x8+ȴwyM렂Km? hO4粑gk 鷚Ov Xu&cy_ I׸\^Z~6*{O8܊HSGZƩ[=֛pۧN}EUimt<g\|ALjk}>& WA vQT@Ҧ#">kA0s\<{s^ t2|~+L!<2659#it$մ>!x[4m=sGQ;{xG¨y]7v3]H ]<73mb.Ҝu5EiX=uF𽍒.ݑ ܊:~l um9/K"2BTÊP3Qqd5>/c.Tvt5nM[×9Y!rUM{5E}+7k7ˣ˟n碷{Ҳ-*T1\*WW7xZ[ɎF:Wl^)e ,R2@A\ΡGREc+):<+/Bk,7vAJXֶ~7bX$l~WꚔF=˅$,rk<c?}q[&Ȅ7JSW6Ǧ[sll MFfI#;WJk6\ Z6]#}\׊&.y~d+{ uqߌ}GivֈXc VQEQEQEQEQEPzW;5 X:/+WZq1%^m3_cj:|d O|O3f9;z_xJ-o퓄9${> zd>(i$;brGZ>giYıƒIu}mcN;Wsc& ex믇^=VrQd^ݤ֙ UV쌛yc?ʬ)R0x,|ahTCz1̽s^sx\{ 1%;b9}kb״}:Y%LVt2 *-^,{k_#nN:Wzcx5umlʷwUJ=K:8A {XPxFeж\qu{^/6"]?i_z%+mz|:T`b8ѝ?uaV%KC|dpNkH#hC Ic]{ęT~Bׯ* 8S>(^:3\2 x~ |27:hjv]i+G$T8+ςEΖK%?ѼoO5Ő9|muGKm`}IT1NEղ1^kFSaN7_@ O߉ɥCW1k֦BRa2;Ҁ t((((()|Ÿ$т=|W|A<>t{5aXf[;UmooP51\?>!Cn:qs^ox%:05 bx@>t$t> /~x+; 9;(xgM%j"c_=,znrp>xO2ގ$f7zteXȘWSA:|v;cƶ3\?iZ}3^ڼM<7ƕ+;#>v:$܏{V4]HxpE]gtp*0>W=O]͎"CMyƯ/MtptȯG_Í/‘1qxF^w9AKER1WKgMkKWߨ܍"T*M6ٵUwj76[תqҗ`T34r"2+[sCU,YrC'BkuxcO쯶lE {/ 1H?[ԍK1>?qOYZO.!gῇÞ)CqMvQEQEQEQEQEQE|L70$y㜊 ^/g܊ys)}yeyWhP5JdH|[^OS /y\] +Wm<7e>m#K';N3y[v(j+1+.Z'."m9q4.Fes\ÏOouD^ I(p})C( W⟅ݥ}%c$?K}FNN+WK,-IMg( wx:*jz+ⲷhFk G+c^ rCklుa#F pcڗ42`GRxŶ^dUQ5ugU"H GYzvcOq V;KAY?k"l;^-,>)~/Oo+UUT` ?0Ўm 7\6*_|&VI= WJ1ҝEQEQEQEQEQEQE5*As_,dFڅx;FKoq^H*y_>|Ix/?oA'{|9\P𪂀k;N43dص~ϺaCԝ~y'Wꚵf7 H9,kt?C':-ܘ,A*=s^oq)4.7PGz󯈿VYxߊ4?Pq E: 񦕪&y߀v u(Ԁ3ßĒh"_&4R ^W FG=iJ =+U𾏭!}5j7u!զ~Y"m#ēEflLtjTҾ/.j%k&_֝_5/)µ>i*VMJNGuOp^&DB;jiMJLbº;_@~35yn}iͽ1oV6k.x%}k<9ͤhZM3*[ [?z[<.,Ƽz+C2鱶b#Z=œ2 > ~<-O4&y74>`lཷKyVHd25x:w"+veITa]T}4ifKnmީAܾBĚŚό|[$2ģ5Ï -onT y[k(((((((ҹOfxvDaRbltjVPOnh :dfοoM PpC3i۬c ؊ƨ 㟴Ӂ;8R*| r}쩹 ,xt xj^&Kk xKº,)hl>Z:Զ;hQ.^Gj+ 6hڎ>ϪE#/4CpbLf%7WF A=+|y;Bkk YU1mF㻵k4I!u"AxQЭIR2qW>|A SXp4ZF>o<ѵl#nrXhCKMN1FGQ(ڎFOݱYZϋI҈\f<[X Ge$vVcJiu=sƞ#[FK=*7,J~fi=>_د3O׼OizYeaL0{΂PIF\l`mҸoEӼ%fM|G מxkߏu/[=ۢnvXGoo4UQwTFa7{o?yi+ >Ycq |WφӅ?,L3Ǩ⺻OXK [v=&//Gq /[.,)b(,l4Rvڳ/cc5e&Jj^َ/ֺ?4zZvIP?|UYE·G&㪹zJՎ`|)Y;$r=EbxEYk4xj5kbڗb[FŋN+WZNEu4riv8B ziwt]:]Z1Z|-k-E[?xHEq^ݵCCsq -,*F,q?|ZyNX1FB7d_&M&-{qq"U?QH@$l4h IDSn\+\6l* k~,(,"5|צ[gCQWpGA_0}U) }k I>".l/Tc;=+ڻW -,"snJ-QEi6Zū[0Wk _6)+Wß]7Ķct)r0 S!IgXd`j(hʞbTM^n!cf,7dj%\e.Z'`R1>][ԏ6rx5ү7 O<1YOq"+k!w"["(9=Mz_è5I1n7_#FWogkuq|jO NծSCb*_4{cY\|GY|ɷֻmk4N8hZvA%Q2H_|Nм4\]tX993e+&ߌ/|>)ngIuS8v t(K2k^P^y?ɱ-hv\N0+ۆ6Yޱk]ȫ`OZ+>%@]џd1¾W4𾊗WHGz`Җ(((((((J|S_X]v>9S_'ZV?4/nxLq([Y[޽jZ(3Epk/_Dq*5yρ|iu纶>Kp+OGַ|rdہ}'Ś.cR 4[kyABۢcՂWDӓQ{i\a&ܖЬj͸W8v+B3Q-gr[@FXcPԬ#/ws*W`+2hN,zd~> ;X_MӛxcHzB^ 1A*"Q*P-dQEZ$ #V'|1aI G.G$ֹFs1=fNVRl(}k9-uXs~((((((()O-`9W'A๷~Wa_Ox6~2ҖU%%<]#(UZXU@',EC'Y(x[G"x-[pk_Ф~bB fŧo _0F]H>F4RSmֶM>Tw`9}ϊx9o'`lZ|%+`[iֺ**P>(]ZY-۪@-_&x]ֵ }tI_ |DZ¸ˮ{קTnbAh2ǁ_<|Tɣ貕^%O/X x/oQӐ嘏}+ >L!Q@QEQEQEQEQEQEQEQEQE!+;"9}oèF27{[[/-aoa_Exem`TN7}+҇AKHyx3Kִ{á+&>l1߅fGf9o0pGTy /zt[Wyr -<+V,*<I? iX|t(=*դ7qIꧡ+Ŀ5}KKm(g +# H aT 7 A(d;xY̋$%1ι^y;Ld ' ^\B"l2=qEQQIrEǰZ,+x"pP3}+KX@6ƁGSH8ERMxz׶ZeshP:R(x6N@!W|(oNuWrDC{WјA5_W?'gBT̥C޻/|EC4 lTQG5?yncVSE gŽsIlmInWx͗.E_f=5)  `:~5reܟE$t ( TQETM,,qVc+ǼwK2X.n@~Umwq#{?;Y#!+֕* ?QEQEQEQEQEQEQEQEQEQER`TSC4Rtad|Ԍ*nycx#V$'F]gE%i|:ne[W1 [5KEW^ֿ vQ$_/7.$|ڽss^2xk×Z?: 5b牙RcNъQKᆭHZXW׾x7^_fSd_{դ K$mXdi:zp<Ҿvau~9V`ׯ,2A#}XHS&kĶ2Ga]Gmj>(EsdEe w(4 )$+gĽвp3HpFNO֭x/6YR6',9j'Ҽ+nX[(`>iHqREQEQEQEQEQEQEQEQEQEQER0x wW^PI>9x_4z+zG s^6E=ū#s{m)oBc~>_tf%)ʶ◵QY!+) O^νn#/`8'Ʃy:5ɂ|ֽy2}G?fh[yQ}=v[u".2ɞ^{~hGu}J((T Q*J((((((((((((R0kt?}f#0>( {h^CϋzH5'#<[QR^g+м3rme>: \`{S$8q\εh?ڵ8wk̵-ѥzIҼ\oV[U_99Ğ%rڼ1&Y<+KH.5/˅i(5p6,QT`U8((((((((((((1H@KEHW֑N̼כFO%<:f\)}-FqH|57KFQEQEQEQEQEQEQEQEQEQEQEQEQEQE*JZC0?L%|%K9j5?NiD}뗿6Pʽ;uw6_/Ys=up1U-86zgя?Y<5/Ɣh,'gԿ?zz\WK?[6Wr}pKښN0u\N_KHYs]$qh4U_E&((((((((((((((((QE`S4QO"ȣȋy'*LQ(((((((((((((((((((((((((((((6( & r Worksheet Excel.Sheet.802Microsoft Excel WorksheetWorksheet Excel.Sheet.802Microsoft Excel WorksheetWorksheet Excel.Sheet.802Microsoft Excel WorksheetWorksheet Excel.Sheet.802Microsoft Excel Worksheet -Worksheet Excel.Sheet.802Microsoft Excel Worksheet*/ 0`DTimes New Romantt/ 0DTahomaew Romantt/ 0" DArialew Romantt/ 00DWingdingsRomantt/ 0@DVerdanasRomantt/ 0"PDHelveticaRomantt/ 0 "`DMS GothicRomantt/ 01pDSymbolicRomantt/ 0 A .  @n?" dd@  @@``  8O,     ( %,-o%, ""R  $-(F &8OcV+   .0<<Uk    0m -+0^ '>=  ?D$b$Qԇ 9h$K!b$ (RBryrq&K!"$_0(pS<* H"$Axݔ>#.΂R,R"$|FqTlp :t "$r#/w~b!F "$JiXGY&eO^I ږ$$$$$$$$$$R$Nт۳ Y*2# AA1?`f3ff3f@8()dg4$d$d< 0Tppp@  S ʚ; ʚ;<4dddd@l 0@<4BdBd@l 0@%0___PPT10 ___PPT9nnIt>"ՌPNG  IHDR +tsRGB PLTEfffm cmPPJCmp0712 7tRNS@fIDATWc`  SP1H $XLIENDB`?  O =@8Porcupine: A Highly Available Cluster-based Mail Service99$\Y. Saito, B. Bershad, H. Levy U. Washington SOSP 1999 Presented by: Fabin E. Bustamante,7&7&H #   ,X@Porcupine  goals & requirementsb Use commodity hardware to build a large, scalable mail service Main goal  scalability in terms of Manageability - large but easy to manage Self-configure w/ respect to load and data distribution Self-heal with respect to failure & recovery Availability  survive failures gracefully Failure may prevent some users to access email Performance  scale linear with cluster size Target  100s of machines ~ billions of mail msgs/dayC$)e+/-6C$)e+     -6E Key Techniques and RelationshipsA Why Email?LMail is important Real demand  Saito now works for Google Mail is hard Write intensive Low locality Mail is easy Well-defined API Large parallelism Weak consistency v)  5)  5CConventional Mail SolutionStatic partitioning Performance problems: No dynamic load balancing Manageability problems: Manual data partition Availability problems: Limited fault tolerance PPPPPPP    FPorcupine ArchitectureGPorcupine OperationsHBasic Data StructuresIPorcupine AdvantagesAdvantages: Optimal resource utilization Automatic reconfiguration and task re-distribution upon node failure/recovery Fine-grain load balancing Results: Better Availability Better Manageability Better Performance b  <  < K PerformanceGoals Scale performance linearly with cluster size Strategy: Avoid creating hot spots Partition data uniformly among nodes Fine-grain data partition b-#?-#? LMeasurement Environment30 node cluster of not-quite-all-identical PCs 100Mb/s Ethernet + 1Gb/s hubs Linux 2.2.7 42,000 lines of C++ code Synthetic load Compare to sendmail+popd:/C)/C) MHow does Performance Scale? N AvailabilityGoals: Maintain function after failures React quickly to changes regardless of cluster size Graceful performance degradation / improvement Strategy: Two complementary mechanisms Hard state: email messages, user profile Optimistic fine-grain replication Soft state: user map, mail map Reconstruction after membership changez''+  F  (  OSoft-state Reconstruction P!Reaction to Configuration Changes QHard-state Replication Goals: Keep serving hard state after failures Handle unusual failure modes Strategy: Exploit Internet semantics Optimistic, eventually consistent replication Per-message, per-user-profile replication Efficient during normal operation Small window of inconsistency bE%E% RReplication EfficiencySReplication EfficiencyT Load balancing: Storing messagesGoals: Handle skewed workload well Support hardware heterogeneity No voodoo parameter tuning Strategy: Spread-based load balancing Spread: soft limit on # of nodes per mailbox Large spread better load balance Small spread better affinity Load balanced within spread Use # of pending I/O requests as the load measure V&-DOV&-  #   O U"Support of Heterogeneous Clusters #P#V ConclusionsNFast, available, and manageable clusters can be built for write-intensive service Key ideas can be extended beyond mail Functional homogeneity Automatic reconfiguration Replication Load balancing Ongoing work More efficient membership protocol Extending Porcupine beyond mail: Usenet, Calendar, etc More generic replication mechanismVxZLZ Z~ZxL ~ /0    ! "#$%&'()*(   0` .T3f` T3f3f` 999MMM` lff3f3޲` eoHff33Ҷ` ff!` T3f3f___>?" dd@$?nPd@ d " @ ` n?" dd@   @@``PR   @ ` `(p>>  H@ (    s *ķ "0@  T Click to edit Master title style! !  c $ "0j  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Nff??"?  Nff??"? F  "  Nff??"  Nff??"   Nff??"  Nff??"?  c $DÍ "`  b*(2Z  B޽h))? ? T3f3f___ 0___PPT10.[p1q___PPT92p22 aqualab01U   0  C(  ~  Hff??"A  0ءz "G  z ,   <hz "  z T Click to edit Master title style! ! T    "  Tبzff??"  @   Tdzff??"  @ ~  Hff??"A~  Hff??"A  RA)\ :?nwu-seal-gray"@)i%   # l$z 1?"g: NCS 443 Advanced OS (2 f  # lz 1?"3 o!Fabin E. Bustamante, Spring 20052" 2 f' fZ  B޽h))? ? T3f3f___80___PPT10.[p1q0 0 P@( "   Nlzy˼y˼ .  z x* a00aa  Nzy˼y˼ 3 . z z* a00aad  c $ ?  z4  Nzy˼y˼ 9 f z RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Ty˼y˼ r  z x* a00aa  Ty˼y˼ r3   z* a00aaH  0ηo~ ? ̙3380___PPT10.[Na 0L0   8$(  8r  8 S ػz z r  8 S zG  z H 8 0޽h ? ̙33y___PPT10Y+D=' z= @B +}  0 ,$(  ,r , S 30@   r , S  0j  H , 0޽h ? T3f3f______PPT10i.U fZ+D=' z= @B +  0 ` `N(  ` ` Z̙1? ` Z1? r ` S e0@   8 ;  `; | `  `\q1?   lFunctional Homogeneity  any node can perform any task \7  ` Z1?@O  SAutomatic Reconfiguration Z ` ZD1?] 6   LDynamic Scheduling Z `  `h1?;   C Replication     `  `ȃ1?e  E Manageability   ` Zl1?D K  C Performance     `  `̋1?O   D Availability   ~  ` N ?RtO ~  `B N ?R ~ ` N ?R" ~ ` N ?t  ~ ` N ?"s H ~ `B N ? t ~ `B N ?s " ~ ` N ?   `  `䑂1?L C Framework    `  `p1?   D Techniques    `  `ș1?   ?Goals B ` ZDԔ?@A H ` 0޽h ?`` ``` ````` ``` ``` ``` ``` `` ___3y___PPT10Y+D=' z= @B +  0L0  @$(  @r @ S 蠂0@   r @ S 0j  H @ 0޽h ? ^WNff3y___PPT10Y+D=' z= @B +  0L0   P(  P P T詂1?m } >   P  6|0@   ~ P s *4 j   P Z1? ` E SMTP/IMAP/POP P P  `A1?  P  `A1?  P  `A1?yv  P T1?m } >    P  `A1?m 5  P  `A1?m 5  P  ``1?   vJeanine s mbox   P  `$1?  pLuca s mbox    P  `tÂ1?   nJoe s mbox    P  `Ă1?   pSuzy s mbox    P  `A1?m 5 P  `A1?m 5 P  `t͂1? A NFS servers   4 P S 0e0eBCDEFp? @ i v . P C 0e0eB`CDEFp?`` @i }B P ZDp?99 H P 0޽h ? ̙33y___PPT10Y+D=' z= @B +  0L0  #&hC(  hr !h S 0@   B 8 XS 7  &hS X7  h H0   >Node A " h NG=jJS  @  " h NG=jJ8S  @  " h NlG=jJS  @   h He W 9...  f h 6 7 f  h 6SrB  h BDԔSJ JrB  h BDԔJrB  h BDԔ  JrB  h BDԔ  J h Hl@  >Node B  h H;  >Node Z  h HD X i 9...  B h # lD1?"& ^  8 , r$  %h  " h B$ , r$  D   @   $h =H T  ` h#   h < ? ` E SMTP server  F  h <?`3 D POP server  F  h < ?Ja E IMAP server  F  h B( ? r  DMail map   B h <H ̙ E  NMailbox storage" FB h <h ̙   K User profile" P h  f< 1? c  KReplication Manager T  2  h#  v  h  `# 1?    KMembership Manager  h <'    ARPC" P h  `t+ 1? 2Z E Load Balancer  h Z / 1? U  @User map   B  h # lD1?h H h 0޽h ? ^WNff3y___PPT10Y+D=' z= @B +(  0 (' ;=p '(  pr ;p S L6 0@    p Z7 1?4  HDNS-RR selection 8 0   p Z 1?8   @4.  OK, luca has msgs on C and D! P!,   p Z@ 1?#   v6.  Store msg  Z ~ !p N|?M? (  "p B ( g  9B lB #p <DԔ %N @0 0  $p  ElB %p <DԔ0 0 rB &p BDԔ@0 0 rB 'p BDԔ 0 0 ~ (p N|? e  )p BD _ 9C lB *p <DԔ N @0 0  +p J *= lB ,p <DԔ0 0 rB -p BDԔ@0 0 rB .p BDԔ 0 0 ~ /p N|?4  7p Bh)    ;... " 8p B@ G=jJ`0   B  lB 9p <DԔ   :p B@  Ua  9C H p 0޽h ?O ppppp!pp(ppp/p ___3y___PPT10Y+D=' z= @B ++  0 ** <   A Luca: {A,C}    x 6H >  @  Xann: {B}   F P U x P U x 6 P{U 9B  x 6 {PU 9C  x 6| ̙PU 9A  x 6 Pb U 9C  x 6x b P U 9A  x 6  P U 9B  x 6  PG U 9A  x 6 G P U 9C  x 6 >   [ suzy: {A,C}    x 6 >   Xjoe: {B}   F   x P 0U x 6\   9B  x 6 Z  9C  x 6 Z  9A  x 6\ "  9C   x 6 "   9A  !x 6    9B  "x 6  K  9A  #x 6 K   9C  $x 6@  0 > Z  %x 6t"  ` > Z  &x 6%  0 > Z  'x 6H)  `  > Z  (x 6|-  0  > Z |B )x@ TD8c?pp Pv *x@ N8c?Ux\ v +x@ N8c? x v ,x N8c? x  -x Z(1 1?> Y OApply hash function  P" .x  f1?`00" /x  f1?`` 0 0x 6p7  ` > Z  1x  `9 1?`bfG BUser map    2x Z8 1?} a  MMail map /user info Z 3x ZT? 1? `Y IMailbox storage Z 4x  ``E 1?&F 9A  5x  `I 1?&? > F 9B  6x  `L 1?&F 9C  7x Z0Q 1?   rLuca s MSGs 0 F2  8x ZDU 1? `  rSuzy s MSGs 0 F2  9x ZhZ 1? H  pBob s MSGs 0 F2  :x ZJ 1?   pJoe s MSGs 0 F2  ;x Zb 1?   pAnn s MSGs 0 F2  RH [ luca: {A,C}      6̔ >@`   Xjoe: {C}   N     P   6<   9B   6` Z  9C   6 Z  9A   6 "  9B   6 "   9A   6    9B   6P  K  9A   6D K   9C "  # l( 1?(_(  B  "   f1?` P0  L 6 >eH Xann: {B}   T   M#  x  N 6   9B  O 6p Z  9C  P 6 Z  9A  Q 6( "  9B  R 6 "   9A  S 6\    9B  T 6"  K  9A  U 6D' K   9C  V 6 + >e H [ suzy: {A,B}   " W  f1?u E X  `h&f1?  p YB  `h&f1? o Z  `0 1? D   [  ``3 1?  7C   \ Z1?E ]Qe )8 p(4 }(  67 , X - 9B   6$< ̙ Xp - 9A   6? p X - 9A   6B  X - 9B   6$G  XX - 9A   6LK X X - 9B   6N  X - 9A    6D ̙ X<- 9B  ! 6U > H  [ luca: {A,C}    " 6[ > `   Xjoe: {C}    # 6^ A P  9B  $ 6b ̙ P  9A  % 6`a  ( P  9A  & 6j ( P  9B  ' 6|i  m P  9A  ( 6q m  P  9B  ) 6Xp  P  9A  * 6ht ̙ QP  9B " + # lXx 1?((  B  " ,  f1?` 0  E 6 >   [suzy:   F 6D| >   Zann:   ] 6< > P!  Xann: {B}   T   ^# 1 A  _ 6$   9B  ` 6( Z  9C  a 6 Z  9A  b 6 "  9B  c 6 "   9A  d 6    9B  e 6  K  9A  f 6ب K   9C  g 6 > ! P [ suzy: {A,B}   " h  f1?  i  `h&f1?| 1x jB  `h&f1?p 4w k  ` 1? T D  '8 ( ~ - 6 LX- 9A  . 6( X- 9C  / 6L X3- 9A  0 6t 3X- 9C  1 6ā Xx- 9A  2 6ǁ xX- 9C  3 60ˁ X- 9A  4 6΁ X\- 9C  5 6 >H< [ luca: {A,C}    6 68 >` 9  Xjoe: {C}    7 6ف a P  9A  8 6|؁  P  9C  9 6$  HP  9A  : 6 H P  9C  ; 6  P  9A  < 6d  .P  9C  = 6 . P  9A  > 6P  qP  9C " ? # l 1?((  B  " @  f1?` 0  A 6 >< [ suzy: {A,B}    B 6\ > 9  Xann: {B}    l 6h > Pm Xann: {B}   T   m# }   n 6$   9B  o 6d Z  9C  p 6 Z  9A  q 6 "  9B  r 6 "   9A  s 6<    9B  t 6`  K  9A  u 6# K   9C  v 6' >  mP [ suzy: {A,B}   " w  f1?  x  `h&f1? }x yB  `h&f1? w z  `h+ 1?, D  H  0޽h ? ___3y___PPT10Y+D=' z= @B +  0  @(  r  S z0@  z  0 BA  ?Vv  zH  0޽h ? ̙33y___PPT10Y+D=' z= @B +m  0  $(  r  S H2 0@   r  S  3 0j   H  0޽h ? ___3y___PPT10Y+D=' z= @B +  0 ,$(  ~  s *8 0@    0 TA ? ?      <: A7a ;68m/day   <A p P  ;24m/day H  0޽h ? ̙33y___PPT10Y+D=' z= @B +   0 }  (  ~  s *`H 0@    0 TA ? ?"<     <xJ 1dQ ;68m/day   << P Lp  ;24m/day   <\Q 3  ;33m/day    C xU GVH 1? p ? jh ,$D 0 zPretending  remove disk flushing from disk logging routines.>>H  0޽h ?  ̙33___PPT10+b'D' z= @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D>' =A@BB BB0B%(D' =-o6Bdissolve*<3<* D' =1:Bhidden*o3>+B#style.visibility<* %(+p+0+ 0 ++0+ 0 +m  0 @$(  r  S  0@   r  S z0j   H  0޽h ? ___3y___PPT10Y+D=' z= @B +  0 og` (  ~  s *i 0@    0 TA ? ?     0k `v G+16.8m/day (+25%)   0do  k G+0.5m/day (+0.8%)   C xr GHma1?   ,$D 0 Node heterogeneity  0% all nodes ~ at same speed, 3,7 & 10% - percentage of nodes w/ very fast disksff1   C xTw GHPg1? u ,$D 0 U!Relative performance improvement.""H  0޽h ?/   ̙33V N ___PPT10. +׊D2 ' z= @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bdissolve*<3<*D6' =%(D' =%(D>' =A@BB BB0B%(D' =-o6Bdissolve*<3<*D' =1:Bhidden*o3>+B#style.visibility<*%(D@' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =-o6Bdissolve*<3<* D' =%(D' =%(D>' =A@BB BB0B%(D' =-o6Bdissolve*<3<* D' =1:Bhidden*o3>+B#style.visibility<* %(++0+0 ++0+0 ++0+ 0 ++0+ 0 +m  0 $(  r  S  0@   r  S d 0j   H  0޽h ? ̙33y___PPT10Y+D=' z= @B +@ 0  <.(  <d < c $    < s *:9 f   0:10H < 0ηo~ ? ̙33A 0  DW(  Dd D c $    D 3 r =r =r 8    I first want to motivate this talk by discussing why we chose email as a research target. There are several reasons. First is that mail is important. The use of large scale email service are rapidly expanding these days, and we see a real demand for systems like porcupine.. The next reason that mail is a difficult problem, especially compared to a typical web service, which has been studied very extensively. Unlike simple web, mail is a type of application that is more write intensive, is disk-bound, and has lower access locality. These properties make it difficult to use techniques that are effective in scaling we services, such as proxying. On the other hand, mail turns out to be substantially easier than distribute file systems or data base services, which are traditional solutions to write-intensive service,. First, mail has a well defined and narrow API, which is a message send and receive rather than a generic byte read/write. Also, the mail workload has large inherent parallism, so we can scale the system without worrying much about access conflicts. Finally, consistency requirement for mail is fairly weak. We experience delay in mail delivery or duplicate messages all so often. To summarize, the service requirements for mail sits somewhere between web and database, and we believed we could come up with a better architecture by not binding ourselves to either web or database. 1:35$,W H D 0ηo~ ? ̙33C 0 RJ0 T(  Td T c $   > T 3 rtà ,s,s9 f   BExisting servers - implemented by using a number nodes that run distributed file systems or database servers - statically assigns each user to one of these nodes. Problems - it doesn t scale in this three areas - it cannot load balance to react to changes in traffic or configuration - It is difficult to manage; administrator needs to know the speed or the disk capacity of each node and manually assign user to a node - It provides little fault tolerance. If server goes down, all the users with mailboxes on it are locked out of the system.&nZ-Z"H T 0ηo~ ? ̙33KE 0  p d(  dd d c $    d s *Ѓ 9 f   qThe most significant difference between P and conventional servers is that P is FH. This means that any node can perform any task, either being interaction with mail clients or mail storage, and any piece of data can potentially be managed by any node. Especially, mail messages for a single user can be scattered on multiple nodes, and they are collected only when the user request reading them. All the data and task placement decisions are made dynamically. We have developed several techniques that takes advantage of FH. Automatic reconfiguration and replication keeps P functional after various kinds of failures. Dynamic load balancing ensures each node stores email message as their processing capability allows, and it masks skew in both workload and cluster configuration. These techniques in turn achieves the set of scalability goals I described in the earlier slide. H d 0ηo~ ? ̙33F 0  l$(  ld l c $2    l 3 rՃ =r =r M _   The picture shows the main components of the system. Porcupine consists of a set of nodes connected by a fast network. Because Porcupine is functionally homogeneous, all the nodes run the identical set of software. The close up figure in the left shows the structure of one node. Each node runs internet protocols such as SMTP and IMAP. In addition, it contains backend include mailbox storage, user database. Replication manager  ensures consistency of replicated objects Membership manager maintains node s view of the overall cluster state The mailmap is to track the location of mail messages, and the stuff in middle is used to dispatch tasks among nodes. I ll explain how they are used in later slides. %H l 0ηo~ ? ̙33z G 0 : 2 t (  td t c $&   &  t s * 9 f   HA birds-eye view  steps performed during mail delivery A client somewhere chooses a node to contact using some naming mechanism such as DNS Because of functional homogeneity, the client can pick any node (B) Client lets B know that it wants to send a msg to luca B first needs to check who luca is- B first learns where the Luca s user information is managed (A), B asks and A replies that Luca is a valid user and that he has mail msgs on C and D at this point. Next, B makes a load balancing decision to determine where to store this new message. Lets say C is picked . B asks C to store the new message, and the session is complete. In step 4, B can also pick a node other than C or D, say, E for load balancing purpose. In such case, E needs to let A know that E has now stored a message for bob. This picture reveals several data structures that needs to be managed. First, each user must be managed by some node, and all the nodes must agree on who is managed where. Also, the manager of each node must keep track of there the user s messages are. PmH t 0ηo~ ? ̙33 H 0  |p(  |d | c $    | s * 9 f   ZInformation about a single user is managed by a single node. The entire user population is partitioned into a equivalence class using a hash function on user names  same hash value, same node manager User map - small in-memory table called user map; replicated on each node, maps hash value into the node that manages the users in the class Mgr keeps track of which set of nodes store msgs for the user (mailmap) Picture shows how Bob can read his messages on node B. First, a hash function is applied to the string  bob and user map is looked up, and the node B learns that A is responsible for managing bob. B does an RPC to the node A and get bob s mailmap, which contains the set {A, C}. Subsequently, B does another round of A and C to obtain bob s messages. >jH | 0ηo~ ? ̙33I 0  4(  d  c $     s * 9 f    H  0ηo~ ? ̙33K 0 jb0 (  d  c $   V  s * 9 f   Now our first issue is how we scale performance linearly with the cluster size, and the strategy is to partition data management responsibility uniformly among nodes to avoid creating hot spots, and to make the partition very fine grain to further reduce the chance of creating hot spots. I actually already described the data structures such as user map and mail map that achieves these goals, so I don t repeat them. I ll just show you a graph tells how our design scales in practice.H  0ηo~ ? ̙33 L 0 P p(  d  c $     s *. 9 f   ZFTraffic shape is based on that of the mail server in our department. Compare Porcupine to sendmail to show that it s no slower than a popular mail server despite all the additional benefits P provides. I compare ourselves against sendmail, the most popular mail server software in use today.H  0ηo~ ? ̙33|M 0 <4p (  d  c $   (  s *86 9 f   X axis is the number of nodes in the cluster, and Y axis is the maximum number of mail messages a cluster can handle per second. Our workload runs both senders and readers concurrently, and the readers are designed to delete messages after they are read. So, the Y numbers really represent the number of mail messages that a cluster can receive, read, and delete per second. The most important point of this graph is that Porcupine cluster scales completely linearly. This shows we achieved our goal of performance scalability although up to 30 nodes. Next, porcupine is no slower than sendmail, despite the fact that P provides all the management and availability benefits that don t exist in sendmail. In fact, P is more than twice as fast as sendmail. Sendmail is slow just because it uses the file system less efficiently than porcupine . 1:20H  0ηo~ ? ̙33N 0 E= (  d  c $   1  s *I 9 f   Now I switch topic and talk about how P deals with node failures and additions. Our first goal is to maintain system function after failures, and that to react changes quickly regardless of cluster size. We also want the system performance to degrade or improve quickly. To achieve these goals, we use two mechanisms, depending on the nature of data. On one hand, there are types of data that users really care and must be stored on disk. We call such data hard state, and that includes email and profile. Such data are replicated on multiple nodes. Other types of data are derived from another source, most often from hard state. We call them soft state, and that includes user map and mail map. Instead of replicating, we reconstruct them from source on demand and P runs a protocol to minimize that effort.. In the following slides, I first show hot soft state reconstruction works, and then explain optimistic replication briefly. 1:15H  0ηo~ ? ̙33F O 0    (  d  c $      s *$` 9 f    Soft state reconstruction can best be explained using pictures. This picture shows a three node cluster. The upper boxes in each node represents the user map that shows which user is managed by which node. The green boxes below are actual user information. 3-node cluster manages 4 users. Suppose C crashed - need to move all the users managed by C, suzy and ann, to either A or B. This is done in two steps. - one of the remaining nodes initiates the membership protocol and determines who s alive and who s dead, and at the same time, the user map is reconfigured by removing nodes that are found to be dead adding nodes that found to be recovered. The new membership and the new user map are broadcast to the nodes and we reach this middle stage. Here, since the user map has changed, the users managed by C are moved to A and B, but at this stage, their mail maps are empty. Thus, - In the next step, each node scans its local disk and finds out all the messages that belong to these moved users. Looks very expensive, but it really isn t because each node needs to scan only a portion of disk that corresponds to user map entries that have moved. In fact, total cost of recovery does not depend on the cluster size. This is because the total amount of mail map information that needs to be recovered from disks is equal to those stored on the crashed node, and that does not depend on the cluster size.$ ,`H  0ηo~ ? ̙33P 0  h(  d  c $     s *b 9 f   R>The level of performance decrease is about proportional to the number of nodes failed, and also the performance restores to the original level after the nodes recover. Notice how quickly P is able to reach the steady state after either crash or recovery - failure recovery mechanism is working quickly and efficiently.H  0ηo~ ? ̙33ZQ 0  (  d  c $     s *} 9 f   Now I want to explain briefly how keep messages and user profile available after crash. Our goals here are to make the hard state available, of course, and because we are using cheap hardware, we also need to handle unusual failures like multiple node failures, network partitions or long-lasting node failures. Finally, to make the service non-blocking even when that means presenting user an stale data.. The scheme we came up with is a form of optimistic replication that only ensures eventual consistency. Optimistic replication satisfies all our requirements nicely. The basic algorithm works by letting a coordinator, which is usually the node that initiated the update, push updates to other replicas. The crash of replicas other than the coordinator is handled by the coordinator wait until the replica recover. The coordinator crash is handled by letting one of other replicas quickly becoming the coordinator and complete the propagation. Thus, the common case operation is simple and very efficient. In case of failures, the protocol ensures that replicas will quickly converge into the newest value without every blocking access to clients.H  0ηo~ ? ̙33R 0 /(  d  c $     s * 9 f   Performance is lower than expected because (it should be half of the baseline), because of the disk logging overhead that happens inside the replication engine. This overhead can be eliminated by using a fast, separate log disk or using NVRAM as a file buffer. H  0ηo~ ? ̙33LS 0  0(  d  c $     s *l 9 f   rSo we pretended that we have such hardware and simply removed synchronous disk flushing from the disk logging routines. We get this red line. This line still scales perfectly, and in addition, its performance is exactly what we expected, the half of the baseline case. So, to summarize, this graph shows that our replication algorithm is scalable, and is very efficient.H  0ηo~ ? ̙33jT 0 *"P(  d  c $     s *T 9 f   Goals - to handle workload skew, such as a few users receiving gigantic amount of mail for a short period of time, and - to handle configuration skew, such as a few nodes are much faster than the remaining. Algorithm - spread-based load balancing. - Limit on the number of nodes per single user s mailbox. The limit is soft is a sense that it can be violated when nodes crash. - Spread represents a single parameter that administrator needs to tune. + When large, system has more nodes to choose from, thus we can balance load better. + If small, the system needs to access fewer disks per mailbox, thus we can more streamline the disk head movement and also reduce the size of the mail map. Porcupine chooses node to store messages from the spread, using the number of pending I/O requests as the measure of a node s load.H  0ηo~ ? ̙33U 0 p4(  d  c $     s * 9 f    H  0ηo~ ? ̙33V 0 4(  d  c $     s *䷉ 9 f    H  0ηo~ ? ̙33x< tյ眙{s7K B^(!+#<>HLGvi|uGQ'~Qڪէز|ZmTT>3s?I&sי9>{>sf}DZ{D#GkQahTg҆ꁄ6πd@ʄ)R\4TiA B HC!A: 0H!Ci$QFCi,_&@lH@\H߁4yp&Rҷ k[$ZOֹG/EKGYvܲC?T|&`'5$) zrRA.$Ȃ(H91uzS2ԁVw^Gyy{Fb@'־M<>?}S|fw~pm18pM p#+^:b,3|tW%[ѫ>hz<z#Þ8X9}`#,nt H1N'9ڼ>2r&?Lꤜp+1/n&Bu1! k# xqdGY~+*NRN7d#|;7o q|dZ({xNAX_(Sl c\eu UfizmyQ_KYHMqW>X6S!Z6;mw_̹ncvmǯ۵/ӣрT{cH9.&ɔ_'e}u:W{Skudw%l"V%ɯ$T4Z>%Mb숭ם&6JQß"f+oinhKIc,Bo ew>"d9՛ot,jH,:mTY>f%O;`ʚҊl:/6PQvϏ͗{  tD㜧I~gjKޠ:UCzGIjS-&@ߘa{LCT;Ya{MQ_qFh2q??g,Y| ПQax^:uZ[v\iﲛцڸ;^~w<,m`qmܮ 7Pk6^)J<,ou6pqmL6s76*ȮSHa㝂q{kvШfk+c4ڈx, 8Nj^WkW{_wnC%!߅">3sqQD'1/q+$| G*\e>.xco 1$Ng> kpD;.q{a%Zqun=~G~]$y_WxfԬih " bF/H _NIZK_>_jHCB=ܬmK3 K=Q%>moknaU`}2YtHfݥ_Olc,gUԢ'*k]N?NaIsx6c 2uJ64|~d0p=5uZ𯺚HHѼ9#Kryi@UZg~bHj/YV{f5Ω X9i?ةaHcRSJj,)5,Mffg䳥4͖Re2_%ڑdߣM·ܺhЎuGto[ rwiŴ40Nx%z<[?φwV< ,,z)^ٟAnG|, +x7[,oz7WWZj]W[W%+}cB-jE1yDˊ1:TȳHR;n{o *N$ k)ybCZ e#,ʽnc{ $meR :~ed:-ӴH.sG{ɓF<aXeG"Dt?F\/ y!ො{P!$)h u?} ^9Lj[Цc}?CZL}`ӹ ˹oM:87 FTe?5zPrO +{[K嬌υDgüΟ8dӨ-bCM"`҃R_DʺO@+.A'NJ SndNYZ2J{z5dHhi`Gp'R!Ҙ#0pB7D= %,E,opt!/-[ Uǐbmp{=g%WR2 ?o39ql,KKc$Ά8SU?1 Ѡmli "*GNɷNNlOI࣒G$lѢx׼_-JZx([`]]X.QqᷢryM&(^ N|sL{!*m!ۆYXB}y&xن;lؗZi1hD|0>4DBRz9Vֻx4};T^ˀ߸=9![,ejh3i! W.ಢ{@k)/7__0bL|0;~TNKp> RwS:"ۃ0Ek\߃@m1Cئ߶B<pSu$QըU5cj}<<~}wW\x1}bm^T|QfڴА*>O.`+و^Z+|vGI&3i;s|n3c Xh :@{ 2}dY3"gb7/@G-Qyx=]v+&*ՠ|Z :W=@z 5pZH "X3j&JPT\"39Q"\†nMĽlG*&c$4RU[J{oNCfClX+hǔx> #Ef,wFAS2ĸ޶)5䁴/vfY&~L3@Qe:=/@}s̋ j 2GSc,pCUBl.+GL/`@ՌwI?n |4[k' Bb[`l0Tq"'Yt509'i0K.?Sf&.0?eҹ|UGFioQğF2(ҽ?ʘJ'm6|,`^>r=(џvk{ vC{VĽGUWʣ7jq`0PØC <͂&܏0݂Z!C&J!Úxh]Nd@z!| ą=>z,C5kKj:M j']߾pNQ۞g,v҉G4VT Mk$ՐuYG#Dy v'֮4j,w, -KS !i+h΃ᦂL K.DTJa{J < ᗦRcOCs;]{lTŐv$t/^w$^kсtiSHɠ '\S{LvwHtv/"1bO_bW.@+ 4R.4"v!fB~{! # !(|!k\eJ8#WH,Oa"+c?mj dW H/ɾW\MqŽ? n:,^At8:Z>qtt^/K_Oey!.hy|7St>h"0:AbLtj A3G>3l|մX^!䛮>=h95?}#;txqQxq-ŷg/?_$hp?BC'Dy@o ![!Ԁ1)H@0pjil6sD_Q{488 GGN>]r%xbtڵhtt4yftΝh||?ov=c5НƧWU^q޿k$sDeZ4V"{Uߜ ^iY;2dIs59HwI3sS[ɱcԚ{5~DE^:x:y:yR.n$p# PqՓ7IͶh7A -hcNs'#9JrMm_!P֬ad/H_9^yHi*ʓ.RF7 /p}k\{ 5skHF7PS;S^Vezs^̵ݬ2<!JuOIIe5~(NRwm-:御Q[n5:p<]n N\Om^?<Ԗ|MO*vHɼT OɏHZ"uRzŘ ;E=Vm 'tDeVM[R[&Vg p,iB%{X9ۆ kKd%͊,=;Yl+5C灍l|4/AȺ֤f'~u=q v]ה+&uM=NKA<-EK]v],[NX+^%]4[hgIj4q έ6[(E>]i/iM߳2:9ȷTi6UxlCf=L8z=%OR2Y =0^>J Я'z>;I1ykrwR^_Y٣ Gvz^~Zf[XӥwЋvJH",~6֕UX{qY7ۦMؔS+YsqWsM,5k֊Y1Y+ +)#Ά4[PkS^۞դ_O<,&T]gbxҸ5\*~;5~y][=2gUtgka?(IxW<#O +htS^Tyj_Y-υXuZb ZOtνwL&{*w9/gޗuWwL4UO&F =q|/HNmddd ry=z-Ns?|N (p2`S (0`HQ’X8p*i&t3&q&`vZ5-8דή "{lx>嗢M(CIC'9"} v[S>H🇼cğ`Lg俯q*1r`>|Nq׵>2|}oxscpUDPA]}Xv҆K*\xq京SV *NK$?bث/zӨ~@8pGHyE~RyJY(LVy5kdI+,ՍSx;MlN5W-ZoƁ4 #MxIG@?k}է1'׭:V{ >R)cnh6 ?HkIf&COmB}aqQS祎3&jc,O/m y]e#dJ5im5}4%%p=J^Vy{(c+ԩ7*SAD 58j⨉DnU8&nQmdKaFgsKBL8R=(P[Ocyʢ 7p&QGM&޴&0qzz BZpQp"t)*Hrf +H!NH d鈽Ib}i:?h&;O{9}#SyLo6I?N{esLS ׎KT`ˤU*  Q##exQd5m3m3-? O'B(A4=hhhee+gmݺ5A^1ewWh1g'l6S|^[ ~k(l@I[Km]$Dע&jokxLEW"ɖy Z/*g$hO&ٖ@+R_&~VsΖEK`QTO2gbg'M:-M>#d D/!RFm bDrGoY.jmXY>eq dvšҚt\=PQVϏ{8,;xi8H*-e839F AIu\ "6 ]#UqZFq4LwT "DI%0 @0LwT8Gu /C3ll=?,>/θxr@=іkxABmU@;B|]F8oO]7j|m\j-`?+_ŗ[FbI]M jpk0~kԵq;?P.Mtj K{nx\|*(,_g%joNs9xul1_| }  &c2/rߠ?΁_"Ji&k kupmoe0n/+:V6Nculw?xtއZGi՗44FC U͑0 BFO P`jMo#!$ip Mޱ4bw,oޱE?[=6pv9nkVaőP}ϜJ|.yHfR"0~& LTkrH=E)`*Ii\Ѻ/B+k.Knsh!Is+i2EM\rC#\0hĠAŅ/.7E* kӁk,5YAM= #c Ya!Y^.*+D["zJdfe&dYXH +1~\eGO!KB0OOpc2%0C\bNջsourIj\98I~[0 ^H<@y3uGi0y1xVbnHӦ}+L)j"sG@:Su =`=:WQp-Wp㠜5;ʀk3 #/|Z:׀Äq]*ȍ-mAW^ h1_e5u}b֡=+ZWJ7*r5qS㘉Cr '&Z0 R.㲹J/Z4kqwUԕƭtBI 0/rlJ9%"|9mHVoWLR4Lͱy6gH>Gjnޖ2=:q)] ^cQttAxҹrtD{8k5iT09#=is<(m) plJY]bPJH(CfTJ 96] $C48AT|T)j}px*Ԏt/^ w+i(d[.m݊YP):ԍGvj!Sհ.ՕݧH|~MLP!=L/f? 5OP(G%Qohb dM|["|y7%C!(TE. s¾[Ïކ%sfO:̇ (4l v^vl۔́IegZJˎIeª=Tv84 vAԪʉ,mgLkv#SM><_8עmLuEh>|Nsގ/HyWFh*9!vnbI׃,,<)X-X$c+\ ]\7n!=?aNxqY[ MNGQ́:8nAGU~L[zXk\> F= Q>G_caREhED9y[it陙z={zAA^XXYS'NԣR5rpT?3{ヲz`;l~UDջX`@lʟX!ȳh OK1aEh%Dx!у/xƋ CA0jiD>g{&uf~ovoٙٷ=$x B@XR| %/A~WP (B@@<! Ŝ@@%.t x B@ <!  PI@H@! ˒PF9H+z!P1·P  |@ "G~PI˓ЁuAB8@ y `= q PI@@ <(<ur@^Ҁ@!;D(8 ($x B@92CRq#E9͟++ZٳgK.ׯ_]ߺu˟ܹsssGW|n|F?)0QJ=[==vS~;w=SnaIK1 {s^ZQ½гzej]W3lvzNmOPg1".'ѧ-zsk,Czj'̾^QDpd9 n 7e)MZnrc\r\{MFM&mi‰FĚĒkX}p >`v.IkP{9-w;pN9#bWͭm¶'mFˑr34aۓ,7eIMZnrcXb>#Hq& Q+ÍZnr-wrppӖ\TmǜmmYfZw]mx1хؑ*??]|j.oC!zs)V_~?-^N19kӷڧBNӘzYLj_c_CajC|5NM6r_;omZlɉ3R7L[Ӊ[cw(f|zOTլs[r?i3E<2 iV=uҚɚ@}ks3ngCz)sƜsXýǃVsGli_eZ.Ah,lVjN$nenҍة0k{>r*nn럲?ڪޘa>a߃e5ι.k)X#|9&-+-^w.9|_;7ܶsQ>e Wul~oO,$>x'o߶qmߪIc~pˣ(.wDWhaCߒ'<~w3.S庘+Nsמ/++Cډurz]m_fzegsMtnz amt^C5S x< tTEU^w< M od0@Қ@b]]uQtY]WT`@E0:~VFq8:~`zɮ:Owֽ[u+]ݽ,4M67c¼&(pRӆS삄6O RgH2 e.@ʂ䇔 )RWH u7 ^r!R_HH Ai|H@i@ iF@ )h 1BTHAtHg@:Y&PfR!I&CbRr Հ-pbcGW167ivܦ?zM8YU<퇏 noOKegaE\6k 9ёc_Kꠞr!s&Ebr^rCՋWT^z#Sinl谿=L~_~yaW öJOׂc^r\)t&0sEN(W@WՉI 9mBIUp^o!/qtByUe<^t {}͞%}b+E w2i4imyY_KYHȡ6afEdMN ] Jhcn" 5#djik̑ѬsPPҴ'-VW9zXሕ-j[y޸Cx~)X`܂q +F`3,6`_{iCYé斬'KK Q $a1$am=)*R ޲Y: -`zz fX0Âmc-) SV>n)ZWMda &sq+^`^9I ,7k5G{|ulukks}ї##*wo2g"yoRx*I**]2exٔ/=iff[)~*_O1c%ߣG-~ _7_7_po֭IA߃UUkmfCl$~9bT<D-Λoo- (~+6m;;H2կIvR:b9":F2]$[,ֺDL =d[|lbtVU{K[p ם^ԨM~ --->-mɓI.!Sc&4 õFo}e 5τT샺P&aie}JQG;*|qMvu-Z}+{Pož6|EuM*P  mt, {U'; y҈ޱ/%^G(znh#PuBՁPI(2T::T␸Ɋ;J<= 9]T3xaUq\֝v;;>N2^ vH(;֩vKxVK5to0 $99U%+*Cп*%kˇќI~ ˤRYz-ݴZC?i)vвA;^`ZQN;N;Նk얚0:FBΟ^h3Yk'glQS٬+{~>x/MՎL8׊j>ǐu&ѻcm YMɃ@im joz^^ҮSe`!l}fŕkO: R{R8}%wewuhyfog}c ؘ#PZ gg{otKoU'vQ E(/a%PD 6w4}%#QF7)rj$FrRuɩ+V3I9O^A($&e٥2{">s-x\i y!-`>@IԷ&p|v`rwɘE~jȦo䝚sD!]OyLgcTm>(TЉ]wiDIk tXj&ilX1‡gr  ϣb: ފ9+(`6;3)fcYP%q*G٘qcj2ߡ"-sepJ89/鄻v<>8 |X$pofXZ]tΪO3gtήwEq]`݂!p)ejF5tր[Cdqy:8ý |Nr' "b݄z5LcX&t|Nd].SAR.sц ާl:Y_:m:Ys_l:ooIߕmZ/u6}a㉧n]bɚyM'e~uۏmg\XS :)xML'ՙK|zԛEO7#0 hu7},bnfu{'S%CzLnF#zar:!'yʛn%' v)/ L`0 LwE^Aˁ'e,#<%2۰07l3I*u6Q7l3Iə<zo 8Q{'j $ ˷۷9gg:=QTG#_t=S(?td:I':ʟ.D:0L:rDq0t^#Й4B--it`^"SD!-b? zMҟ<8ȀMx!z_ :K8o]f֩ ?ȷ\j/vtaf}n|ci@4hѤ s/:̦=FtiBBdsL}tY횵{1m9R<+o͓WoI>q:Mܖ{yHq1%xYmSb"L5)3~mTJ 9WӭRz%  J%h*>j=#9zFf~JHن]찴7 @G?C0_+aiJo EwUsrWkܮ[^̅mlsWEIl< vUV. x3v7 ^?~`9'nWEQx1VaiNOX l;N ?L~jL;`ɝ7 W"=juأ7ܼO?] Dd(zUԦG /ezb hvw}Qg5NA  *U^ĖC@nU'mX"55*y"-W<)J+hS+WQ9TRE73ǻζBnwoffoP+rLX䭏_$3DZ rjYZsbU0Nu-hm6K/?/?SâPxQkێ=1w(s(OtM;awÈ9L7Q|ToGq]+M=@6l@h˟6Ώn}N*"4>b<|ao.;p׭wܖwڵkuֹ7ovngg^wU{p-޾ͫۿx-BQ/[<$xxH@$PǷzg_"]P<> xH@$P)pH@Dt] @ R, e|8*x@+q>PI˓ЁuhAB8@ z<$ (xS x@1vbQA (<C<$ (8qˀ.my\?awll̝pϜ9^t={{5wjjʽ~;33κsЛox''ZA^‚+)7%Y8f7i!S[4 61"Nc OSVDek}Lls 9~&09& Af_k/^ъ9&MY&-7iQˍZnrzմM&ni‘F-6jZQ*lufyiQNn ~c|')Yk֟ r-Xα4ds;gIMZnr܀"X?~9ƙ^BNQM[nr ޱ\ҾRo[,ebw|x!KQ;V~4pySL'LxID)Iݐ3-:D:p #oNaTkI$Ec·!+ozVz+ǹ ͬ-SFDW\aӠH,9;}xMl #- EI3%fzJ\Ǯ%^f%F|IY}\D]q>|U kty=. mǾ%pkIsG{;gуS[NsG~s}fit-.SzŞG庘;'HKK.bS'6eޙ/.<+Ž<ff"8_(8]s{nC9^n\5y:0SUV=9n*'F9o+oo^n 7`VN/VU~-)|g}x_E ">'j{01h" ;+S!ߞҠ,;SB#?wB~w/_-j[5qZ0jLC|];Ǝ{/:\~t=qޯ.qc~NlRmz~7 OGCw+pCaXS&R1(>2|B;"ײA2]^V*{1NJoUgZr%mҐɚ@kUE/Xcx_~0X@7W2ׁ"k,zo>CǶY;IERna 뀇P+tN竱SQUP}z5gEٍWD4MRCrW@P(`x, Gh-5]9j3N)">DZK\bu:ֈtU;J}ι{oزg';_*sGE0L(&2s8|g9c8DB(b 1XX8TO*C,G8q(G"x40U &EvwŅyԌ_b./1n]$л~ޛ.÷`_uosI)(AN!0̸wMZ[%_ָ*qAsmLiZtOIIӾoѓֹEn׀]JkJ|ꂼc{:sW?9J'om&ӝw!z{bg']CZHXzb˗hʙ-m%զ^ܐ?SW~O:ھ:~?CsKT9}y!=ywW9ڜ>m OǢF hoŋO;y o Cc%1LRQHbo!e#g%OJ=OzLtfB#%|7HZ-i REK8-ڳ&G-Pgan%ߧGǍ|e{崛RS_Y#M>]6}Lz,' c^jXd#r-O[r.+IC=opq-FX6HeŶ,m>qΚ -y/X#܉M!6h֕eSSUY|g! WރY~u_(#,m@Xq=_'PQ7+1OAQJA1vU}*T(*x/ > >;umK㒆I3Lﱇ 5%1`;25P=-Yм7ۖ5-롸Ҩ֎k }^rb2kwt;Lt%}& efFx9[Fcr>?=ASfj^Թ# 96.9?HQ+`[@kk#wp$m٠#&n|c'NkQG//,H{yg/ U;1+1i?+ؗJN.mus}ܖ[-7g% ^Աqw~A]> \}s,@?҇Rf h\GA6 e?i 8쵶Կe?Nrś<~^h?e^.˹>!޶[FvCټɠc~~6nm$vH:nQl\Lh:͠Y4|lδRPz0N;hJ̃?ě b.4΢FmH?);ϛq[)}Zq? &xm1#dzG+}`D(wAPVc3^2&`\,HdxNAkti;]C(W:*卬*@~&tV*o"hT\;ϧX/;O8Q"ZMQ!svCQ![;)GiPm}tբݯqu>T^[P%r'm3TF^zΑpZP4وq鮎:9H)FڀeNO?={i}" ^-tIA# t\Y5-wX>Qoxi԰{EUДG+g;@hG|fv2)*]:yA[ J67o4ِj&!f V o2&ZA74}삮.)sOaaC0T{ަ|#|xiYލ̚d7>x< C1 U/e@[QY#c!+?{.0T{$M1CnmY3D F*c?)F QYGiAI ZqHJАCRڦKz#S!)\ K銰UdԽ., a)AI)qm;;(4_`7Y]o;aP~0|&IT^+ePE&2y_b9HR9wt 45&{/ck6ٙ |x>](G>-P*M-P!n n iI WYN ܩ%WO1VPJ%~^ˇ L(iU'R]TWD0<`207sb0pG\oHCX]ipa{?Y)nqu>t_,Fi طEp>t=f"8 |8N9BpZswn9vԋru?ociN+ҽcH.SX2L HCJ"R8iԍRYV^qbf)Aze B*ΆT!Hs  W}̇ƾT"J+%h~O:zEx89BU!;9NdPxɋu'(8'I<ϓWExtչӏ9ˋwzJ):C};H5ݏČl,˗1q@6P.Lmh^}xsPh: `mǣ̋x :Kt 'OÇw+?e><gc*DH>IYQVt goH_Jq7>IiqRs_JS.;)ҍ}.+sKGMSΏ|)>p=>)ACYv!{}xkF=^Fw̓9Q@`[Ot% Fb4uܯuhtX Fj 7GkA?fc&9ϲNqx(F5\ԫ| =/cm} Ca\ܛʜNN`0 >:K.x:+r(2~ZX&?"{rJk`@?`m_"n:jqQq5rwu$Rd.yP))[Vity%4Y)8%N_&;yw{QEg7YMSQj:4N%?jp7:)N.YS;4NOQJw[);jۍ?:Q-qѤ>^ꆙw9hO%䨧g]੻"x|Uq3ɸ {xBDPQ@!@n IPuhEjnUTܳG*@j=ɹyU's>y߳` y7}LÄ;3DjKB;}zi=Qoo Z, r@D-A+mA;tA'  @7 }@_?Q  p  C` ~aڶA!8 `8 0x0 &@&)x0NI`:L0 % J0={ƋwlBi|6_(N9ekҸv6G!oeά\\9,0)C]_owQ>u:/vO)+DE~*mhl`Sh-yU:X@YlpJp8 /[ .5R+p\~ W5Zpn&p3 n;.p7m>[փ{p<߃?FG'Ix(x <O, σ"x ^ &x @-#W1| > %;v| ߀oN;(`hR@H Z, r@.<ZV5hڂv=:N`tn;=A/`?A@0C0 ;p0G#Q`48ƀ`&cDp(d0`8 L3@1 f٠@)2p2|,)T* NKR ,3`p.X Up!%Kp) \Wp-\n7jp~nNp=`=lA;=xl@ x< ')43x< 6^/W5:x ow_=P Gc  |>[KwP` | ߂`'  R@*H4gLdl{{HQAjzs#;6z c}s Bc45D~ia&5O8/0 NjkhKse!3߼46zbmcb[:AxUh[m^ k^%z ekztP9Ra8W+9{ٹs7sijz!;X6DV|`ݤsȺMVcv{ȴ^i;bohc%'5^>B;- ]ʉf=HGWf/lNe Efn O f3z%x%g/]K,˭qy&"B }*\ClegZ{ yj襈`goo\߻ ߷ _>TH㺞=?2-i]ąyoO/3D ȪTqܙUV<]X:|qET:-*/=;Z:Np-NSqI(kms躻LƩutU}n-޹w'[&s}hQG"6HQ:kd!^ Ema/jz@wٿ#`*.^K.g)dy)|]%mEѷ/&rP?9LݟZU)D:X6?tQa/\?*dzK0{|&TMλ3ǔU EXnKo&&x]аVܨ+[^;n`i^yJK7&>>(zYEu:,EwN՛szwXnc# nN>>*Y]?(΋ ہ<:L.C2bRn;*ܾ,9?] Au/z GN2TQZڗwit߮;lsXs2? b4(q>OOb1g}G/ZN̅%xšR9- 1s맚&L=6mg^=}?ܴ4{Sl ǎR! ׋kC 3OΡ̄oR0NpkBde ^4kzjm$1vh.J^f^F] DET#tEݪ[!;0,i. o|Vatq<~UtSl^/b#ϵtx!*z7hydJB Tg,FY^Yf[І,bUvQrsK1MkKy), %SxP)0naI2BNCwD1Ot1w6KOZɖMTTɶ)^%q/MVɖCeRS JN̏͟[(RU/[+2qN9{o_+сگ]Uppu%j#%r`D1@E8|5!C&O {ytg"N}`+ rmJmvu38YL8a=s@O܉.V5MUۨLh[ SWy+|xҜ[%3­ `E7ѳTQfĺ=ugr<C%n d8,ɽ߮yqg*["iT]յvLڪ ]wSz'̲]wYۦZ,=Q'CYMATqM,lM쮦~tW IMGb -/{9rne~0wQ2m)*b%v 0.ޱ3gOom=]H58]PO-to';;Itd3Iӎ5]%9S8Q.j?1-Y5ڿhǴVV"D1:VA8aNhu2ZM"R ;4艵5Mm'd8].qk$3A5(fcJo$3혃8ѳ(fc }#QhɌbF;fH'r5Ōv "Hf31F2ю cdF13$K!ݜ@K%XZ",hjI%iH-I%i7't@K%ҐWSa4d'D2L;%HC]kH%ҐQ.D27D2R6OD2ՖDX" }#HCƸK!wFa4dD2N9_D2՘DX" }%HC&K!CJ%ҐLw$i3DӾR",]eH%ҐI:$idws$iHvA",Lqw#HCI%ҐiY$itDX" F",Ԏ!I%ҐY$ilxDX" vwV",юmH%ҐwW}a4dvC",swu#HCkH$iwa4dvE",亻VK!]H%ҐI%Ґ[F$s2ʥJ[s&L8rZ.[WcvZ'Xsg~_~%"&>%3dEO擸g-޲_ x{EM}J ènjGb>/_+@N3n,NjK/9[Fo>I9Nlݪ5 W g7ts!z $?$@<rT97nxO zyёrv$3gWN@Na]~ n x~'~w#)Mw+K{= kpvsash[$sCۓ@G *.mW9'~|}pvJ}O YnNt< 򱘃H )LZB9SZݸԺ6 5ؘ㘃D; wzqvvnxI AˣЉH A-@ιk!Ȃ=Qpv7VzrK1BIŎ$ϠQU;+oLIhÝ I jWWg7Mz81ާI gp@~ <|'9812Ze>%7.Y y:aމSI ?߮)ǶtreoiujbI {0S(8S!+c4r>\he$Ӈaw6z=$,)>n@?3.ض.MI '+�ܧr6פqydSOs g7.>@Y!d=g7gj HTD+)LS3nt^q^ M 9758Q,*W{@5}aoөyypXZHW ~*D[nK5xm?NΞ4r:TEbʏ'd(q_8y`?|aOiU %$F,@5|_ͭkJ e*k= NT9yœNNˏ 9>kX f*k='C - ?rspv޴)qNftzi;+$s&fm~YHys|Jkk^%SwM''vٍvS81qS? Qs^(S tfM;}аZIɭՁJ 傌Q2@N/YՑ@ë#* #> x.cSq{7 spv#{qvÿJz@S!_hL9fP FzrT8L՞Ыr*w˙J >o[[xv7@Δ_Oٱ$ \aщJ goѥz g7W =a-}J 2@ ) /c?.S9G"u[>_ƫr^M{f|^8ZJ8c٭@9s>Zz=S Φ_gjX g7>ҹ 4:iݴ9J )98\?>%;' Gع&> gUٌ98z|JW/?E9yj]@/noJ^n,rFu|'! t8o'M|@Nd:z?ؿ,z^ok?K9ݺ5yo[}vgg76دnx7<{b}+xChrڔnPٍR>7_ ?;n<3Ԏ]Jօ?!ny2}vc5ےg7>]rV_P9YJ|qv#<:-͙>%i@]%IT|]d M6n_ n?ҴI5ȹ2 3@κ ꜊/ݘY§r"C}"rv][ϗrn%+qvə:)IorZt>~<8q1{@Ξ^J_Fԙ Wne(y;+Ay;)oJ9pvk g7EyKS^%orʊ ݈̟{qҨc?qv#3tN}/f~~%)\I*lg7n[[:9 <;$-8_ lg7fTm|'iϳjn{קr48F/᭝ϖV>pW 8Wi|JD@ѳNN_=+eXfMqS9:nn{rq(8/U9Uqvέ_ QGD8q|1 g748šݨ{vXa7Uqv#`1(8f8*ru({eƝ(8^Q g748LJ:n,~A~wPpvc]WףpvùJ g8wWgg7ܩ>`7q)lg7B9nf7J ǹJ~?ukc6S9Uq$qv֯xXkio8ǽp&ruUnSjXn,&* ng8ڊ/SlF_s] lg7ZLf7 p4E5~ըlE3Og5.z"vf58pU>y%x%ժ;u\םb.b.zp]u='亞\דb.b.zq]/u....⹮7\כp]u}.....뒸.뒸/庾\ח뒹.뒹.q]?u?\ן^W{pu.R.Rn 亁\7q un0 \7R.R.puCU~U~t(Pal؆ g6m$HQlFf6--m,XqlƳg6m"D LL6/c&Mb6--m lS٦Mc6m l3fb6-mrx5Wx5W xWZīżkzWoj R^ūeZΫZɫ|^j^Z^z^jF^mf^mV^mv^N^n^^^~^;*A^˫xuWy w~kspsCW32E 2h?'tvc-xW݁5~ufi9WA gPh*}qHߖҎRHnU.J1uC3/5 Chn\>$޾n;>҉ǃ_, Q?VsUMNS^t1M~!|ii*gSMT8M<| B6EДn.ǝuԚ6rn[Rk*]D>FѝHДDǝiִysg 4 Қ9M[<|yyt>4MǦZ{Mi4ijޟ 4Nǡ)ㄏ;M¦!ZvQ7y!Zy3/AhzyqhJ7DNi i{MCi i yǺSZj 1AK`8mrq l5uJy[u|}yy}[\ /`peO +ape+ v|RGF+`]g1W1IiApe bWnAO u L֦W` e[ 4?2`]> .c2-YIɚ`]1 U8=apU+ vk|RGFͫ`]+U1^ *eRnQO0]Y . >w[ . [Ut>#w`]wcu fƳ1\Mew>)#d.߃j W^9Ap5 nWnOu :'<.^Apu G}>)# @\z`p + v+}R G-Ԑk`p6״^ ״k`t'~fDMK!&Zk Z2ح5I5%u"R m Z\ -D'2X9Bpm u 6ױ`'Ռ~ U\c{ep]\u0\W>)#uDQBp] LpIN\YکI'u%t o0\_>)#e.ԄXVpVd"ӏTd6M*;!ٛZwmp8K=4ksi1ƞ=ƀc*MBfrzY<&maң,<:ڣc%m<{rzt]q2:NtlvƱ{l!3c9lq[8~==:F+w]r:`vK@  w '~9A@v܁*{nC'8Z IpC.2X@CpHp#|bp#+8>)v#΍^MCp#5Mp 7`:'~: UXcp|cp+ 8>)#Md.ˆ&j|eAp na8e^ڏ^7=p|CЄAhS mf=f2-I)n&u77Sc<Bp3 nn7nuOHuws!D덕7D+8Q>)#2XCpyB0ފ 8[X-d[?q?R?B:tnx0Cp ninO HyK !V&8ie[Yd[ u?RJJwnx0Cp+ nmnIOJHI{kK!6>6Vpޏۨ1 nkAp nknѼOH|[!/Y1vVp;)#en j;Yqa;Yd)N?)Ix0Cp' lwnkOZ HkAg!w`'~ }0 1C >i# =pQ5r@p ^= {`c'~c'~r0 Ά %x^2X@p/ ދVpo'ď{ cck #&4&>2X7@p }"Vp_vDvI_W *98 x13^?1$kvѱ=c-!3c<=:.0(/;$0wG_yteGPFx 8Ȩ8)q2Fɸ?c<Dt83&βc#x~Cfx&~ >5MpA}< ,ݶ7X x0o!&c+x8}r>#}rCd!j,<ZCeX:?X7T=c0`<YdۉN1x Άa< .ֽ2X4`h `m0ĕBpaōqnO:F`\n1ĕ鸑&.!q#8D4!n$qQ&. Fb(+ns}/7 v˸:.:B(KRp4i+I[B\ kZǍmōqn˜Ƙ)U:Bhߊ_ƸMsMsz fy:rBL}rz1ly~2u٬g3b^RQ΃]t .:Y1h1ֲK,ƪ\gb,Z,qhq-[M8oY'.ZL`1-&Xx-&ZB-bEIGflW`1 ,MZL"Kl}h$\ɖdb1Y >)-RBE*HEh1p{8HE)b1ET ,Tb*h1XSbe1XLCO3U׽1[>}HG{{u ^LϾ ^+͊fGrq8s" s\΋Y2sݻ׆ ddȉ(׽#:]g٥׽l!3׽qߊ8meȺl~ݪ8{ eaWH3%ᮐf idWH]! ",be1XLW8b8be1X@h1X iY$3 H7I[hnYtƢ,"ò Z27"-fY,-Z65KYh1۲M,f[!him E&TE$c h1DzC,WkmNs-b.ZtFyXEyWwbhʲXE,V{QGIZ\=.P7P]P]Hԅy{"?aȣgŞ}6g=zƳ,tm:1n03Ӈ5^'P' 54D_e!QpyGCz>Dԇ0D1T?IO3TFeT&jp GP}GCS-"ԐT%jt P]T#cj TGuq5fD}B O$$QT#Q>TT"Sj էQD}Z/iTEDJB3ލg5j3>3D}F ,KQ}Ϫ T?wQ,Q?}Po9~NyTy5P;!/ jTCuT#sjQ ATG^P"P"QXP}KP}/T_BT_"Kj՗Q՗$AK>ꗈ%5++D}EeTꗉe5r<ԣ!x<8dzynRFsJ_ˎOK ^s'ΕqM(FuyO%o4|pz$];BR:!x=NXR]-?lןfoyz}0x[k~Bu[+p*{MxYRo k@_輷?'߳8sK'&1؊Mc j ؞9!2*Víi/ d4d};$gOB}My+*FF> &$ b-1 ;1dc054F%OPnxϰ`oais"1xs P# u_y7To /[=3 ^ yLϖT͝pXIqנ[D!37[+A{3?se^Ⱥzp"JQQJGWŪ}NLX7W=X&-x 6KOA{As+}~f@*&H![ #"b+$!apBClΊ0B8!!,>0B8!!Y>Ɋ0B8!![>CapBC|F*onETg"Np{U0B8!!wZ3QF'D8)#"RZ0B8!!#"[k"Npu}U:CF'D8}apBC E!ᐻ3KF'D8:V nm90B8!!Xg"NpH kS im,E!ZY#"R> apBCX>ي0B8!!uO&NpH=S#"R$,R i`|J5apBCO%0B8!! OCӐ4$>M!'m"NpHsCF'D8)Z#"$,W in|J5apBCOZ"NpH P 6h2>I!&NpHS#"$Y!vƧTF'D8I[#"x0B8!!M!N'PF'D8 #"Z"E!{O&NpHWysZG 'D8i_#"i0>5apBCzՊ0B8!!O&NpHoS #"(5>i0B8!!I&NpH?U olR4apBC0B8!!ƧLF'D8dIZ#"2hg|nh 6>+ 1>E0B8!!CuM!a'AE!kNlM!kNRM!kNE!Q'MF'D8Ě&Np5QF'D8Ě:EF'D8Ě&Np>c!3X>c%38S #"2$mR `|J4apBC&0B8!!OfE!'[F'D8$jL1>apBC4M!i M!4mQ nlR4apBCf0B8!!3O&NpHIڪ#"a|J4apBCf0B8!!OE!Lkh1>0B8!!sO&Npٚ0B8!!ˍnM!\S #"Ԅ Yi|bapBCO7M!|㓦 #"lЄ )0>W(4apBC0B8!!{JF'D8d #"$j5>4apBCM!']F'D8A㓫 #"lք h|hl2>k҄ yil1>*l5>55apBCJOkM!GO&Np63FF'D8dԄ a|5apBCvM!]&Npȣ&Npn&NpsCF'D81&NpƧ1E!ᐽƧ&Np>^F'D8 㓬 #"LЄ 9`|4apBC"M!Cg&Npȓ&NpasYF'D8 #"&NpQ&Np1S"Npq㓠 #"rtք 9i|k2>0B8!!O&Npg&Np3g&NpsJF'D8)Մ y #" #"NF'D8;#"r4ф 9o|i\0>5apBC^4>i0B8!!M!Kg&NpeWF'D8%sFF'D8 #"@F'D8| #"N*jli$j\5>4apBC^3>)0B8!!׌O&NH!?|Z%a&UMsǣEO 09U"EPBEkL 3oYEEOگԳ;yŊ=j;oS#;v {glG{+>r^! lVޟyaj&LGֺ}PسVYIϟK]v$ |IϞߟiSz>B?{6[.ϧ#'^vh>rw4{53d45M vy+|OCW+>jgZv}uąC59SՊ=v-.ؚ V|Ͱ*Uwr.pS&#WXg+쾻Z!?\B&D'魗[ vew'K"h>\bw? jo&Z 3a=5v ~)e< Sa=v-~dqZ9`m/4Gsm|쉻Iq%s(V|Ck><\ǜ[e5?c6> E9z)Cc/G v| ]&zr6/R|nklE$ug?}X9{l[?|yc<{lAKj)ɺ뾠5sZRUZ#߇vu#QvnyGEZ>o_BkgVv H^Ӈ,WkOyk?i?ۉۻ97V|{'6XkgnϴF>i 3}{|PyHK=f~"xqVߖ\?,Gr=+ tr"_&O#O_{O"ೱq+=nVy"suW;X|svZ,T| [h6EŽXk-W|}Rݻj>vm{V(>o_Yg55׾HIlms5 or+̆Ys+`ߪ3C ,}w.T|F]pw|E'uː2vJʮ)>v,V"3#S|^FFvjF3ѽ4/钧|գB&3~]SO+R|_{w9\ Vn)>]nM4}-K~ۭ;4"ES~@"˝9wP/׈JOBEReU'+>7`\ 2~(6Ŵf/$_^ḋ,ɫ+>_WH59~Wtv"3񱷾x.[ϼQKy)' /|OdպQgvd-S5ޟ9ak"ܗ\v F^y|~Mm;?;繻}6Oyi=vw&eJyܹR)v[m.RN&+|FgAzy+U}Fb߿f:Ϙ1=lwMy.uM`n=v=sU5o;;C!>lϙI".:U}-MiP|POVoZ1ϣc#~ۧϻ_/iJE֎~ow ;χ7 źqߖYTLYC,䵞=NHlS㟾T8)Yyύi-T:o1MŸ\\ y(#vs"['[)"_:p8f'?Yη϶ߴ_?qC1sUZրOA5䫕ϡ{~F.}Hw~5e]ޮ'ud_ߠ(:?j 3+iUi";ȷ0 ȄP]^E&TjBu Ot~ty̏>GϏNw>':ݹ|Vӝ }3sf/g/':9D'#=9->ѹ':8Ł`_tpN>ѩ窚*vEg|@/:7D'Ed"o9^&yad^ny>|@/:6DٖiGO fOtlΚ >zl |`Gn-ϣ"[I蓋VOtjV# }3vE磖Nj|Fb~"DhZji$n >pyY]j4SCOO ltnzL_BklƆn\ƅqn|ƇnB& nb&nR&Inr&ɡ.5ԥPꦄ)nJꦆnjꦅinZB]ZK uinzꦇnFfnff.=ԥP2B]FunVfYnvf١.3eP愺9nN憺nn慺yn^B]V uYn~懺nA[laȲClQlqlIȖliȖlYȖlyȖ,7d![![! Y^CU![0d!XWڀ/"ņ"V""bGʽ3h,;`$ QD{c7Vdn٬Q([,Wܙgs_|;0o3[قl`s+< 6_e %ǂ},P-l`قe Xł-l`K[*2 Z)Z9+ZyJ>բ/ZVh*DkhbZ/Z%A6hm͢E6.Z;DKJhݢG>/ZDh}+ZDhuLVh2Ѣ9PY. ?yT _{oU lD 8j,D: V\s4^o~r1r^#Ӵ&MJE2[pZ*P ; 7ut2bF z'tP9Mbǣ ws'΃hǃRݸqqd&8RuOBx8=Rhǃ`Xy7*$&|ߖ+,} ҹxƝDNG;nuW 8vFG62GsU>&x0V:,1cs :lW ΍ K\s#3ろs\/IL7٬?V1vkFadtw'-^Ƙ~w7 ϜD!`L022sAFwу̅+.3c' 9ڤ0^tš0dDFѓw]%siwLLةTZ& ]GڙCFOar`o k(K^^N(^~!QLzKLk?-S Y}4K|e2+U0愿3/mpϾNgCo^c 2-8lWނyF&`ې}'# 6;wN!`, ;>#Ҳdl1IKoDcSO513oeM02w.+Ҙqϱؒ+'cKL2Ba qݽ~0^w=k&`tz5[dl17AoZwy+16%F&`3Kч6'ؚG&,6Z.ˍL8LRRJZcIF_4nZ"Y 55䤑 SZZ5F˙*4jmȋAc}=;i  !_z>7ۙmxm4F?tkS[>Ȑ1oyT &&`[wzқ4&]JHW\~<+@F?џ#]}.s51kMίO;Jџ1xx8kү^`6`2 n^ Icj7{|@jWmy-:"o)1N=>01YEwG1ϱ(JҌ9$ۡάOqm;Q;rF&฻~9iLa7֘9*_QFGGkc᭯WKLh?|ld̻Ϧ2GﶩW{dpT1 GWx4/4BbMMLs9T&(L=>Qiƀ[;ؕJ[n*1ŢZM61GrT&c݉*OeJWcndD1vw%&ivcLq(T&x^(QiƀXhtl8oG4&Ⱥ~ ;qBY9cf V㫮tWWtt1oz礮4pͭ4&8u !F2Grt#/# =3=MLaut&X%ϣ$ 8jzwҌ9gD ɦ{&&833ә03]O#^f у۩ W~e&V:=L+-Hev<9*'AjpH=ѡ#DGq=K2G<1sT1 G/rWnԋ_XG22s)gmScwCB+dJ38cpf &ga?c$8ˌA&ޚl1D0ˌA_,3TģmtFy`:y/uoN=DGċa:eN8,3ty/ :(e`7IҌM?1m[v`IU s;CҙX hawc9 yjס3*?L3^0Q2G9r-C]MK3*z+vIe/2'V)qT:9x>PCL0jw -Ke2נGyr Afgqj2ǹ^ɧ%J?9KX}Z(> 8WxAPB)kQCCсF&8t: Eά8*~C]u=:|u= 8׼guU⨔œ#T]ϩaPCu"t&y|sٳ Ge©C] GGo]P:܏&W^N_.qTADT:t1LLE#2Gܜ:с^f&PCwwnkMLѤi܋dJ89u9gW7:kS8&UQ).W|DNEf&PC#Q,ͿW⨔qc _c a2p阗

HNKs^M⨔cc_c:nfu=t:~H/Y5 8 {`Q)&`>RVi6VULU=t0:lq~ԹRM!| tCСq'HL55Q)&G?u=4 zh9ܾ@!X<o9*х*h\⨔G#ACSzh ::c GJhrTyWCcѡƢH`w@º%Jwr eA+m=t(:С84*#Txtk̎h 8.vJ5*ʒZPבС#%m5d&XM~}7~CQ)&G"?ȑu(rHw[wS 8}fE⨔Gc8?1WZptkEf\!xw9*Hb을uu( Ju[C{iCd{ʡ)>wPߪjA#0R -GP\l#SLGR{$]=#1R-GbEQKzxq^^j17Ӌ 7uh0ۇݹ;uH06ߛ% vѪ`wjLŁ1cn18Xcؿm{Owc{SNa?Z "bNaڕ]5sܬ/as0'~J]%&~ +}]~D]c/k?//u %u j*_w E˺*tc17KX "__J[d?f {~D݃o]Eo&^orln`=? z=~D=KZafþmK?K~9a*^߰~F-#~}\ & ^? ^ fL?Dqz&]>٦͒.&5݀{aH|D - )?0| }"U "&{q{.Z9 A[LcP؏V:XPU_g鏏+*rb-CKCD 1!qDC4KT^-CKCR Ս[DC-SM-CK"LJ?,V6g D*AD?,o;ԾGnZIW|-1<QXx?"M cGDZ- -F3w;2$ǎJ0 ``L3柶DZco0w v NL'8vrc) rSo-n;H^63A[cV`8ޜͽ̻ziw o-ns,q]9 Ʊc_zU~2"VFD7`>5"~2"4P7GDWF~cr#~D#2?YxH|D - ?*VFhe1GmWH|D -?:VFhU1G9v\\[?>"~c+qcHE1DŽ{sDH|D - !?6VƆh51džWqZ3\TTX\؟Z1#qk|؏>'"U "/|rZC]#14![y "֟6141Oİ[u "֟|u_-CKrO c*norD:+q?>"&?9V&h0'r9h|D -M kO )a?Z1 "b)a΄Yҽ폏=*`T Xjسu{9CKhO qb*l?R) "biaƴO$G~lumz؏V XzدXf\. 14#[Y "֟Tx9Eh|D .Su}fKifP9 g L3s.'[?>"Afdd[ef3 o鏏eff3faiv8eJ[?>"qfdd[q3=O鏏eph047Įx"1 U4Ӽ ӹ Ӽpۼph14/"fd(4?) 7" "6pvaSH|D .ʹ KiA8SY ™ "6ӂposI.\+ia)pph]nߵ# ?xI >ғu8'W_Q؏3BS]S(xEWWo(AAњF(X֯U%AAϰaI?K~_ӎXp_%KY/ њF_zCixyݏoK~_Fj! eaDWe e_<i7{}c]cyFɝ2R鍎W3rw2'%J0 [``Ĵ柶Gko0Zw v >-nQ8GO'nlA-zAmA bxnж {G{n /(y K F Wɂ`?YO~Ɋ;a-`?\A/ ԧueXVB+jμkĉ8Uz0PWhn_\c{-"@H-$/bTXWaMXBšDG 7#ղ?º@H&, zXHX_µ@Xa}0Gx% T l њVH_BT Bj/VT-acX֥BZFM'6h)$l/OTx:&|/aBTKasXVBD--#H}($l/a[TGakXVBDmF l ~OH_Qa{ |BeTqkŽӄ%\1vsJLH_Bƨ+ ®]% \  jJH_BL gH$$<_Bl gHE$$<_B'žy=% ”@x.xMF!DaE <AK[5|{Q@h/sG^HPw i/j{D kgM0;jR kK0]jjޙc؟`9WZua- CkB U?BB<>{w`Gihjnv<ĞAޗǵ'iTǜb`[ w. ڂ$ u/5x is+砯"CV(H1JP/i EÁV!سq'jڋ ^ kݼ^TkՎZ@;q1gI0ҎujGmH kM0Ҏ jmF kgK0Ҏ͈jmMbΏ9`?W[Nڞ@;h1gœH0cNj/@{)ŞRv2.ɰ{v!v*~Sa-{:Şr:L{H;v-:Z@;Ŝr&lzH;= v6Şr6yH;V4hU{ fCjUڹ@khZ%|sj@hĜCr>vH;%h#핰{+ fC+j#BZhBX `NB딤<@_.&.&}Io(] KI Ԍھ6.gRѸWC׮]iWI2]ʸ:9ު]6҅8ݿە@\kMP6钇{% ?dRG;E\ל&Bqu^tlHRBCf ~ kTqeCm듄V5'N<.I$k$ -?O(g!{k?=Q\ٓ\.?gmgrJ{t#]kh굗KcWJtT7]Ή俦$K7%?a'Ǯ.tBuk]-UB-tkh3ݡin!C+׵NIϚ(g5oxG塭 esg>̖Ȗ'|Cs9 % 0bĈHt G!c7ܾ-]veKOOڸLb.^{G]Kگ7$r !}?>9q+D`=;v_SLq^ڟr1~on4`jޟD}-hILKZ҃D8p>sANb8і$8Ipb^\$IsM87܄ 'N2d8hI'N 8)pRr'%N*T8pRᤎz'5Njqnƹf{|r' NZ8iq$<ZwI'=NzA-8dɀ'Nwz'#NFL8p2dɌ'3Nf,8YpdɊ'+NV[qnŹVpnù 6l8pdɎ';Nv89prɉ''NN\8prɍ'7Nn<8ypvqnɋ'/N^|8pù;pɏ'?N~;qĹN8p  .pI8^ Zwƹ NA8q )S0Na8q)S{p(NQ8Eq)S ^{qŹ8Nq8qJ)S$NI8%qù>pǹ~qJ)S 4Ni8q)S,NY8eq)SpyAqyN}8qyGpyQGq4i1py !NC8 q4i1Nc8q4iqqy)NS8Mq4i 9Ns8qy 'pZi%NK8-qyI'qZi 5Nk8qi-N[8mqi=N{8q:t#NG8q:t 3Ng8qt+NW8]qt ;Nw8qz'NO8=qz 7No8q/N_8}q?N8q 3g @8q 3g0`8q 3g(P8Cq 3 g8p8qF3g$H8#qF3 g4h8q3g,X8cq3g|8q,Yg!B8 q,Yg1b8q,Yg)R8Kq,Y g9r8qVYg%J8+qVY g5j8qYg-Z8kqYg=z8q6lـ)py g#F8q6lل iqyg3f8qlقg+V8[qlن g;v8qvفg'N8;qvم g7n8qygpyYgqك9pyyqyp^yg/^8{qهg?~8q9s A8q9s0a8q^yEq9s(Q8Gq9s 8q8qN9s%p^y $I8'qN9s 4i8q9s,Y8gq^yeq9sp>Cq>#p>cq>Op>SOq\s3p> sq> /pK/q+p kqop*U8Wq[oq;p{q~zp~Gq~ 'p~gq~_p~W_q~ 7p~wq?pO?q /pzoqEZw"Jr'N"D8q$I' N$8Iq$IsM87܄ 'N2d8q$I'N 8)qRI 'N*T8qRIs387܌' N48iqI'N:t8qIs -8܂'N 8q2dɈ 'N&L8q2dɌ' N,8YqdɊs+έ8܊sm8܆ 'N6l8qdɎ'N89qrɉ 'N.\8qrɍ'N<8܎s;8yqɋ'N>|8w܁s8qɏs'Ν8w܉SN8w܅s]8w܍s78q )SN!B8q )SN"8܃s=8Eq)S N1b8܋s/ν8q)SN 8%qJ)s}8܇s?8܏S N)R8qJ)S N28eq)SN9r8<8< ΃8q)SN 8q*TĩS N%J8q*TƩS N*8UqTũS N5j8qTǩC88}qN?~8q3g8q 3g A8q 3g!8Cq 3 g0a8q 3g8#qF3 g(Q8qF3g 18cq3g8q8q3g 8q&Lę3 g$I8q&Lƙ3g )8SqLř3 g4i8qLǙ3g 83qfę3 g,Y8qfƙ3g98sqř3g}8qُs8q9s!C8q9"΋8/⼈s#8Gq9s 1c8q9s 8/ἄK8'qN9s )S8qN9s 38gq928/㼌s9s8q9 +8༂s 8q.\Ĺ*Ϋ8⼊k8ἆ:8㼎8o༁&Λ8o⼉[8oἅ68o㼍s %K8༃;8⼋.λ8ἇ{8q.\ƹ>8㼏8|!·8|G8|18| '8|)Χ8|s +8|g8|98_|8_|%Η8_|W8_|58| 78Wq\Ź-η8|w8|=8|8?#Ώ8?O8?38? /8+ί8o8;88'Ο8_878A띸;qw$I'1Nb8q$I')NR8Iqqqqqn¹ &p$I '9Nr8qRI'%NJ8)qRI '5Nj8qnƹfqI'-NZ8iqI'=Nz8qn[p2dɀ'#NF8q2dɄ '3Nf8qdɂ'+NV8YqnŹV[qnù 6pdɆ ';Nv8qrɁ''NN89qrɅ '7Nn8qɃvqnǹ'/N^8yqɇ;p'?N~8qĹN;q )S.p¹ nqƹ NA8q )S0Na8q)S{p(NQ8Eq)S ^{qŹ8Nq8qJ)S$NI8%qù>pǹ~qJ)S 4Ni8q)S,NY8eq)SpyAqyN}8qyGpyQGq4i1py !NC8 q4i1Nc8q4iqqy)NS8Mq4i 9Ns8qy 'pZi%NK8-qyI'qZi 5Nk8qi-N[8mqi=N{8q:t#NG8q:t 3Ng8qt+NW8]qt ;Nw8qz'NO8=qz 7No8q/N_8}q?N8q 3g @8q 3g0`8q 3g(P8Cq 3 g8p8qF3g$H8#qF3 g4h8q3g,X8cq3g|8q,Yg!B8 q,Yg1b8q,Yg)R8Kq,Y g9r8qVYg%J8+qVY g5j8qYg-Z8kqYg=z8q6lـ)py g#F8q6lل iqyg3f8qlقg+V8[qlن g;v8qvفg'N8;qvم g7n8qygpyYgqك9pyyqyp^yg/^8{qهg?~8q9s A8q9s0a8q^yEq9s(Q8Gq9s 8q8qN9s%p^y $I8'qN9s 4i8q9s,Y8gq^yeq9sp>Cq>#p>cq>Op>SOq\s3p> sq> /pK/q+p kqop*U8Wq[oq;p{q~p~Gq~ 'p~gq~_p~W_q~ 7p~wq?pO?q /poqb"-;qIw\$I'Nb8q$I' NR8Iq܄sM87$I 'Nr8qI'NJ8)qRI 'Nj8qR܌s387I' NZ8iqI'Nz8q܂s -8dɀ'NF8q2dɄ 'Nf8q2dɂ' NV8Yq܊s+έ8܆sm8dɆ 'Nv8qɁ'NN89qrɅ 'Nn8qrɃ'8܎s;N^8yqɇ'8w܁sN~8q܉s'Ν8w)S]8w܅s8w܍s7NA8q )SNa8q )S=8܃sNQ8Eq)S ν8܋s/Nq8q)SNI8%qJ܇s}8܏s?8)S Ni8qJ)S NY8eq)S8<΃8< Ny8qTSNE8q*T©S Ne8q*TS NU8UqTéS Nu8q<C8SNM85qj<08©S Nm8qjSN]8uqéSN}8q<#8<(Σ84ic8<NC8 q4iNc8q4i 8<8NS8Mq4i Ns8q<8OiNK8-qZ<$Γ8Oi Nk8qZi N[8mqiN{8qtNG8q:t Ng8q:t NW8]qt Nw8qNO8=qz No8qzN_8}qN8q 3g@8q 3g`8q 3gP8Cq 3 gp8q3gH8#qF3 gh8qF3g X8cq3gx8qL3gD8q&L™3 gd8q&L3g T8SqLÙ3 gt8q3gL83qf™3 gl8qf3g\8sqÙ3g|8q,YgB8 q,Ygb8q,Yg R8Kq,Y gr8qYgJ8+qVY gj8qVYg Z8kqYgz8q'pڦK(ܞ\%nrVD[w$‰]#r'1N')r' NR8Iq܄sM87$I 'Nr8qI'NJ8)qRI 'Nj8qR܌s387$ブ48ipI'N:t8pI[pn'N 8p2dɈ'N&L8p2dɌ' N,8YpdɊV[qnŹ6pnù 'N6l8pdɎ'N89prɉ'N.\8prɍ'N<8ypnǹvqɋ'N>|8p;pɏN;qĹN8p¹ .pƹnq )SN!B8p )SN"8Ep{p)SN1b8pŹ^{q)SN 8%pJ)S>pù~qǹN)R8pJ)S N28ep)SN9r8pypyAq)SN 8p*TĩSN%J8p*TƩS N*8UpTũSN5j8pTǩS!pyN 85pjĩSaqyN-Z8pjƩSN:8upũSN=z8pǩSGpyQGqyN8 py 1p4iN#F8p4i N&8Mpyqq4iN3f8p4i 'pyN 8-pZiI'qyN+V8pZi N68mpiN;v8piN8p:tN'N8p:t N.8]ptN7n8ptN8=pzN/^8pzN>8}pN?~8pg8p 3g A8p 3g!8Cp 3g0a8p 3g8#pF3g(Q8pF3g 18cp3g8q8p3g 8p&Lę3g$I8p&Lƙ3g )8SpLř3g4i8pLǙ3g 83pfę3g,Y8pfƙ3g98spř3g}8pُ8p9s!C8p9sEq^y#8Gp9s1c8p9s 8'p^y %pN9s)S8pN9s 38gp9seq^y9s8p9sWp^y 8p.\ĹsUWq^y5p^y uq^y 7pyM7qy-py mqy%K8pywpy]wqy=p.\ƹs}qyp>Cq>#p>cq>Op>SOq> +8Wp> 3p>sq /pK/q +pkqop\Źs[oq;p{qp~Gq~'p~ gq~_p~W_q~7p~ wq~?pO?q/p oq'APz'.N›Z$I'1Nb8q$I')NR8Iqqqqqn¹ &p$I '9Nr8qRI'%NJ8)qRI '5Nj8qnƹfqI'-NZ8iqI'=Nz8qn[p2dɀ'#NF8q2dɄ '3Nf8qdɂ'+NV8YqnŹV[qnù 6pdɆ ';Nv8qrɁ''NN89qrɅ '7Nn8qɃvqnǹ'/N^8yqɇ;p'?N~8qĹN;q )S.p¹ nqƹ NA8q )S0Na8q)S{p(NQ8Eq)S ^{qŹ8Nq8qJ)S$NI8%qù>pǹ~qJ)S 4Ni8q)S,NY8eq)SpyAqyN}8qyGpyQGq4i1py !NC8 q4i1Nc8q4iqqy)NS8Mq4i 9Ns8qy 'pZi%NK8-qyI'qZi 5Nk8qi-N[8mqi=N{8q:t#NG8q:t 3Ng8qt+NW8]qt ;Nw8qz'NO8=qz 7No8q/N_8}q?N8q 3g @8q 3g0`8q 3g(P8Cq 3 g8p8qF3g$H8#qF3 g4h8q3g,X8cq3g|8q,Yg!B8 q,Yg1b8q,Yg)R8Kq,Y g9r8qVYg%J8+qVY g5j8qYg-Z8kqYg=z8q6lـ)py g#F8q6lل iqyg3f8qlقg+V8[qlن g;v8qvفg'N8;qvم g7n8qygpyYgqك9pyyqyp^yg/^8{qهg?~8q9s A8q9s0a8q^yEq9s(Q8Gq9s 8q8qN9s%p^y $I8'qN9s 4i8q9s,Y8gq^yeq9sp>Cq>#p>cq>Op>SOq\s3p> sq> /pK/q+p kqop*U8Wq[oq;p{q~p~Gq~ 'p~gq~_p~W_q~ 7p~wq?pO?q /poq\"(rz'.N"D8p$I'1N$8Ip$I')N|8p܁s8wɏ'?Ν8w܉s'N8p ܅s]8w܍s78w)S N!B8p )S0N"8Ep܃s=8)S(N1b8p܋s/ν8)S8N 8%pJ)S$}8܇s8܏s?N)R8pJ)S4N28ep)S,N9r8p<8< ΃8)S#8<Σ8<(N8 p<c84i!N#F8p4i1N&8Mp<884i)N3f8p4i98O<N 8-pZi%Γ8O<$N+V8pZi5N68mpi-N;v8pi=N8p:t#N'N8p:t3N.8]pt+N7n8pt;N8=pz'N/^8pz7N>8}p/N?~8p?8p 3g A8p 3g0!8Cp 3g(0a8p 3g88#pF3g$(Q8pF3g418cp3g,8q8p3g< 8p&Lę3g"$I8p&Lƙ3g2)8SpLř3g*4i8pLǙ3g: 83pfę3g&,Y8pfƙ3g698spř3g.8 p,Yg!"E8p,Yg1%8Kp,Yg)2e8p,Yg9 8+pVYg%*U8pVYg558kpYg-:u8pYg= 8p6<S8Olوg#&M8p6<48Olٌg3-8[plيg+6m8plَg;8;pvىg'.]8pvٍg738< γ8<,=8{p<s8<<8㼀 8/ًg/>}8pُg?8p9s !C8p9s0΋8/⼈"#8Gp9s(1c8p9s8 8'pN༄K8/9s$)S8pN9s438gp9s,8/㼌29s8p9s<+8༂  8p.\Ĺs"Ϋ8⼊*k8ἆ8㼎:8o༁Λ8o⼉&[8oἅ8o㼍6%K8p.ἃ;8་.λ8⼇{8\ƹs28㼏>8|·8|!G8|8|1'8| Χ8|)+8Wp|g8|98|8_|%Η8_|W8_|58_| 78\Źs*η8|}GEu{Ї{M ]EQ, 66bdžhIbbN4+&h+9ל }wue9ǽ?]f3{,yCpG<8y cp'< 8Oi &py SpfpipZig<8yspVpZi8/i 6pQ1yQ_vTpL1SpL158jp1 3p1sp p,Kp,рG+p kppl[pl;p{ppq-8ZphqGpq 'pqgpqp\qWp\q 7pqwpp<Op< /popp|_p|?pp 'p '@p ' p '`p 'pB 'PpB ' 0p 'pp'p"'Hp"' (p'hp'pb'Xpb'8p'xpI'pI'DpI' $pI'dpNppRI't+8]I'TpRI' 4pN7p t;8Npz'8=I'tpN/pz p2'Lp2'78Np,p' lp'/8}N?p?8p3 g 8 p3 g08p3 g(8CyWyW'pr'\pr'8Yprp) p*Jp**p jp8:ptуGpj,g!8 Y"p,g18ZpjYp,g)8KY2p ,g98Y pVg%8+Y*pV :pg58Ypրg-8kY:pցg=8p6lg#8&p6 lg38zpplg+8[6p lg;8pvg'8;.pv pig78pg/8{>pg?8iFp9ps 89!psWyWyy y 089psS5UUwKWئZY3{W2rx@ė0_X^OHVle~]l5Z}8"Aeg&3'̴}-yfgٿ9f֥,,;yHת1Y{6vjкvFȺFvZffp괮Ϝx.FfFr3}ȺF~xt ckdgm?+gپjVkΫO}SmV*\ UBH &D$T"„S0”zN%B5j"r0. &L͌o|eNW}&MLxdZyZ{Jx)_Re3Y،6!J،R؜?;P_M&MXv9boުD^PGas ?V_lCXB [ƏC # &0q>dle[P8s[{a–RؒOnut=~i/҉ _Oa.LaK oF>Jؒ)S[In-r|yulÄ/n=r5Ga+5V<蓏ƦA{l6MnNLXd>Y/&,ewVN򵥄(l-y [{҉ :4yo\[u15z1a >Da[ k7]G6O RN .;hx:1af'K3ޤCmG4 K{^au%k~߻FLXxڞo+}ě= JT PW SF}yL3:1a~o>0s<})s<[ RO ^O?NZ^LX2}dCa =IOr2)/9J؏R؟W2g 9~^LXx]х?&,}Yʧ_S؟š-7ϋ畟Y*}Ϩ* ޗ}^iu Ug0#NaQ!*өAٖ8#Y.AUx I x]RlKW#˥:Ymnd?z:4rӍoY]@4W .~vmY ¨9tb.?eL\bX rndi[<|j .NLXf_۶b1aOClf,tp P8#\;O R8H xHuńؾaɳ)$>R8#P(,y|͈î5&,u{ {P8G)>!ٗ0zńS:‘I(U#)%x8pYʹQt!Ub~u 7U\Q>Ch:TQ<<ՂitD$;9Ub‡O N(ʣyocpiM\=/OUeGqń-xӡyplGJ P8V M}p=[ JLX8 Y}M+qC8:V±q<|92\ Gު~ w+Ąul_Ao} K1 Q8^ pʳ1p<k[>o^q@Wceqy ,nw4 ߏ:txGcV?++u}\c;\h׏PVH\ք o{[Ij?n8\EO d~UM`8תּ/jA_@ā,s\Is_ t\yB=S|$ā_x-6*=@G(9,9"Y!q/4',>Lw !u,iCI<JsλqvC8[|!Sq,9[a;9q,p]mknY!g9I'!'uCxG<P%eses< u0WH\j3#!:a~LPÔ8z!z!lqqW.&( aR8\ݏIqX9X9+ߛ+$Kg=#xGqGX9DX9Dw&>l>Og.8B<G1# TH9HL9HW/,4WHCg x)a @ yY<<8@a- "aJB='BsN0!a-&a>JXB=PBs>^aT ,u$<a̬ Yhه&'BXar#_AXȤ"f?,v'~bO}Bs ^v1uw"}b[bfw~+Khtl7uӍdi|mݘ8?z׋]}ff &K,v <ؾK]}Rfe)%K-v)_1FW,Ur%gYYԴ"*Dh.l=ٺ 9s I{6wny%5[h.Um71 g,cvifzbaZLsR-CT?1ILWn* }F`{q8_VZkv`{֝ﰶمEZ ߳Vd:<+-v%{M7x\By`=ٺ={Ş50\B`W=ldlN{>c.4U.R{[^lG^lsN{ Zlr %4Z12[2l{^=}A⏊]-gPu᯦ME{HE?_"4 `W1[7|LZĮUxމn~Kht쿁ٺf؋-bf7])nFWKc30[m` C^b0{M=Kht`/e.eً&Rٿ)R; `/cn.CsR^f1{seg-Kht㳙.gQ&rw/C> /;jcfnV3lbWcv};];]U0WXtάq %4fFh &K] [h.JWٺ׹fw+-Jf?8m)}+}@O8}HY٧AA$!}駐>ivOC^CB0>i:O^AҡHYi }drڬSWt_>tJj>>&#W{E0cacba- *,:4B@D0 5#XZZ¾'$ZXX,lqA,dÔ{{Π.zC]}bKz6ܣv ЂAATZΒ@ AA TZHi!;/- hn OX囬3!"оCDTZDi;- KFq:6QaUZvl88v<1jǩu&uqpc̖ؖqpcyXZE1`ZeR[hW?=ƅ 瞇1Vȹ#'&G[.S 591uqhWEsk*f-M%݆-lJ6燖vZR4Z)rg֒JKdZ ΒN RJ%ͬY>4ҢuEi-VZڦ2@`)ʨ426ZV4(cֲJڄZGh9$NYON%Ƭ唖<<hnN^eĬ啖)< 8 VPZЊ~@+bݩ)Ҋ6iVvf[0KʔTZIi%oVv ZY4^J+4ZhnQKEUV9*4hnJU幬UV9GjS~RS .k5lFmZ72[JTZkh BJiYk(asmޞh|rRXپ|qnd;?U6o =nuc4?tppOݳ_=u~ݳ_NN:7iDr?̀_+ r%cTV'#tõun.;jf~ RSۮ۟a~6wo7wE6/h&̑x4 ӠQ&]3kQ6aNi9D͘6I#tô~ 𗗟 fr r&TL( 6BP0QSEkmPX~uszO0RTX?fh| N4CPݏ0 T|]D , Vd@&M-1Oh+'0Ux   , 8 D P\dWelcomeDistributed SystemsFabian E. Bustamante AquaLab05Fabian E. Bustamante69Microsoft PowerPoint@p o@}@ OQ@Эk\ GSg  )'    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___wwwm)4'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮϮ՜.+,0    (On-screen ShowEast Texas Data Service Times New RomanTahomaArial WingdingsVerdana Helvetica MS GothicSymbol aqualab01Microsoft Excel Worksheet9Porcupine: A Highly Available Cluster-based Mail Service!Porcupine goals & requirements!Key Techniques and Relationships Why Email?Conventional Mail SolutionPorcupine ArchitecturePorcupine OperationsBasic Data StructuresPorcupine Advantages PerformanceMeasurement EnvironmentHow does Performance Scale? AvailabilitySoft-state Reconstruction"Reaction to Configuration ChangesHard-state ReplicationReplication EfficiencyReplication Efficiency!Load balancing: Storing messages#Support of Heterogeneous Clusters Conclusions  Fonts UsedDesign TemplateEmbedded OLE Servers Slide Titles,_*N0Fabian E. BustamanteFabian E. Bustamante  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoprstuvwxz{|}~Root EntrydO)PicturesU:Current UserySummaryInformation(FDUPowerPoint Document(NNDocumentSummaryInformation8q