ࡱ> za 1=<*I؜U( wwwwwwwwnZnmh5g\K cϩPNG  IHDRmlYsRGBPLTE?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU pHYs+jIDATx^oɖ&FRvf 3 -#Hn/$ۆL-Gd,}s t]`n=Z&*Y.j=D~'" I&uEFFD~ωsN0,F tVFb$`Bٖ#l9--FsH f[ZHs;#̶vfF -mi!06@Z0Bam<`40x0i!lK in``Bٖ#l9--FsH f[ZHs;#̶vfF -mi!06@Z0Bam<`40x0i!lK in``Bٖ#l9--FsH f[ZHs;#̶vfF -mi!06@Z0Bam<`40x0i!lK in``Bٖ#l9--FsH f[ZHs;#̶vfF -mi!06@Z0Bam<`40x0i!lK in``Bٖ#l9--FsH f[ZHs;#̶vfF -fm;[GC֗҂aRB`6vd-(Yցq #3Q53eu+Yt&0p3wKo֐nma;1wY`[Ku0zՔ#53fm={&v`K~һ,YH%xʪ]wgmM!gttm.?<#0Kl"嚰LZV63.>,F%m /#0 +b #ȶAٶu띈Cy;9O? G}>+ Pc  /b=& 3l+ mA)Bk+Dq;3%;Rbf-J $ 33|cBof j|RaZbvr&Y6ج0ۆMٓma}Nʝ$7d .y6lf fMU&yOiu>rO2ω/mf-&9 .ی7J= H.:[nv!͙ԛ}dz֣]+幂fbNϺM5ܵ{5NRtvKi,m-_ goQ2wS~Iƿ5I=3,:=}tt}<Wua7lmz8E kxz# k&w[oYi{M¶Կ$Zrhz yv S&X@~0iTE|Mʪg?GN[/mPb9m-wXy}})Yן>|zss\<ڼ@9FQ.m4y?2:'[5)/F=3޼ &݇_ևSyi/2\I=˭|:E+::w:D,nmxiJb`dg Je_.%U ω`"`J?$.OrDz8vP 8IY\[f\a4SDJSA)=PVoT4n2ѾCxQ,0ϩ?x_CxQ cCχIͻ@k\<^~U RzSrH K$SlޮxkVp5MT!S]&9gV^/,ۆCU§IJ+6(ym3ZOdV+.JQ2a#q0v"Ml,qh,4PY"l*H@Dy\ْJf+#٦JtuSIl΄86Itqvq $5d4Sj& }O,We.۠`I*{d?d帚d.>`MR 5H;UȡZmmRrlI)d`IJ>ɶk(äKi@[Fflmڶi b5(WFdͶa]&ה1y=UlӚ=kklqZ c!wI1ۤ-҂#Z->ם$jVCPXV:) ̑[z"e^cZJ8M˴E-υP!ҦATY猂PFJS'/HPcMu!(G_l`8ӿx m/D_! ´5/k8 ؁U(􃽟 T0S!}߿?d"O=.OxFx>X O9m]i]F/%>fw=s=:(ё-V%NރxZJu8\ƥ\fNaZ=ɖw{k+<;^b VO9*Y &Pi* Fmz3<1YK pOП8md}BJʣZ6ب*ҪV &6-prhBa6Z(\QU+|~s6=qƣ38JsPF`em +Ҩ/(>ضѴ s 7yuHM UpTOazԟJT@M[$Ό|pVVU dUT J5PLi5Nf+)8)ZV٦V@;$[Vc4 Mmlڂxd[c*mn:6VqQݬ#۞-s.t T8.%ZxzU?x IH`m xȿ#;#֢VM6܇FK?9*bXFEL(QnOg,(bURR5GlC&Snl& ~nx kҰђBhfQ|P|RͲ+{[on(V= *(ilnR{EHK?l;6~YXmBmϲ оmƽ^p{kOzS|@?7t#ph@ttzre@ZA/W#XLY͖Zf4C6ԒPZd%؃W{)Ὶ+zݻf~(?(VCt]^iMmȖl*X!W9A|I4@+!XmU0-V$7Žޛxݦ!ۚ7fbMMiXW#=prmA6[b՘d{F5&F Ϳ џmF BB%lM<)k&9Eoՙm,KT, º'Ͳٲ2>z I.]d&adR_ehSm=$A(IgJQvGA hʥ;@ԧHM9]srւq`֋pӂ+3kȇjXMȻg_řc%`޴hqK![zS״&_gosh\^M_b%#ml 3 zq>xޔ(n\J!ƥ`MRoVt)fqɬJaƥzs-d $z*&ІugE_awM_qOx'B1%s0URRos-: 7,*ڷ ꘝ} N,¿mlԂmlܹP)HZIܘ=6IꁸPiPԫmdUR6'Т}j8*ҩ֜"nRi|d&٫Jf}w(.öj(˶ mz#$Ķ{bCeݲ*]K:Bȩy5l6 $uB3iuLθ.UVI=؜R0P,0kb/Ūm⪰/UbXӷi#}h \N~Y/tT2m4DޢnM]7gIJ!(Q-_B˹Ui.d ,ZpUa\ͽ,PH22jm颚uLE(ݶVb٦_Fɜ%۬J攪:d }0 \ђ IEaWl#U n4S³ m =ݪ{Xh(hz٥ UpYȚ*қ:xe=6=q:愽EZlS~Kf M(}׬U{buo~}zuQ>?Qh:K7i&.,֕QJg*h*ۦYLCKySMQ9F+6M+Kw5_Vo_Voo^|-~߾˷˷uzK7QZ}Y[Vx֬MIEUI-B&)Ͷܶo!E|E)B6PQ DrQ륭곭8V,IqK-βM<ʕ,]7LªrO])z"m  ~Oz@Cc_w!sQrUEJrr=Rm4HECiF>awTx)D={]mM^ W~wLܬ*f'=zБl%**61e:QD$RJ"p"x&Wlx'k_H.۴3nQq[ 8kT6e(͈2Z{ E2Q]^K#pKۊ9Rc*̲M6d[ι\m-vp!JXF4m)/]iyu "y0JCd0QAJA4VರU@$`KneʝFe)ΔQ*&<}F2~ A ٷB&.$ ĉRI*,|K#Hm$R\ݯ^.p\!֋Js"A!b#RFtp kuB2ǸG%9dD#.e[@" w>CřiHᛋ3eՙ"S 3{{Pj$P$-tҴt8JS2_U6 }zEZ՚`6YuD'JU u1bwI m-V%f)td[$iU{l9*88r2&zɺmFөv+6}{Lbsd(g͌=~~4z&) 9 őЏuu]U$\Xޅfmdqe_%ی gfÂd3%,gC):yK0tI!L;xjeq߼QpxmۤP4<=5ś>O./nlI*!=f G};2KtK=تd]wWoA0DͻpcU2t6)lrKʂmK!& %՛^ϙ#9@DO~?(s"~ aav1r5Iq6x?263}#!p+f/lg !pJ{B N*MҶ{B+DSY:\{;MwIHu!'ͅJ|S7Hnxf~T={YI~6q pJˬiϬJCjkªQϱ#XJ]oQ=$z>ɂȌkW1fp6Uf5R:w,@^(r߯U2m}% f+N.68L:T q$d(5'_e~M{ç;O׍uj"GXqlS\`zc,J6?H^dblK-?4eZ4fw* aЏ3ݶml㈄_n>q#.i=F/B8DTYR$zE K#nOζ>+ jFggeψ|ʧ6i &I[IW&b輲o䀣uLEne^\U<{G$+˴1ui{D$λe_nG9{m}$EP-gxG$%I Q5IbL֗GpJR80Jzw|>tyzɉ\Q'3 ;ōrkM7-3$(ECJف>7X? n劵ƎW9cM-5nP }$\ PN9k/Ѓ~JKNR uA?B QʙU! E#lGed4(: .~P.sfi2yg"4GR9Y qd[UQ9܂&՞AD#b> 4NQOs̳Y[IcWT'GGݮ֪tvփGYɜ2ȾZ_SM֛pwT$UZדLG Dy:hM\,"0'ȶ ~%r٭JFɜ()划j3o,p$UHs01Up -&線PⲒ`ԂXSdL"䈒C7qϯXYnb>eZHdTF(<*H/F 6Rl%3㦲*5p nKٞTO|#IjMsn`$ Z`jw;Ꮺ@a5񻩲-;n {4I)d6KX#nX$)-5oR,k!$d[_n'G3 5ĻPSd- :9b54@Q3%h!fgJ@a2Jr.-< m>w}o&_D_Sf[=J٪#&gкMQZ 6S6>wIfyIgycٖym;-ޠj* ,(MbB^ofmB,ЌQIL3%hnpnas0B m,-d棒Kvp T2f|Lχ#MRoţ~j;I)mIN"6I&8gp6 +! !`6e;QlsMI)k'mͦ%[g[+ISeԍKm+I14I K clk63}m}=^ZhoA+m?|xWR!T)LkcZ t62JFO|$sgW[t=錺MY̼mθGǻ-]FITĖZN `+0y#&ffBVFDJ8ȴ¥9Ê)I%lC8&֦,2o$UzyxPDZI;u\-t-7pJgf[,3Sf[ۖ%>zdB`[Qbd,l#{H,GfM$YlQT@34rFgq3QQIn09ըN1YJ~jMluښda"H&9&ue" هpOЯ[3n`>1ņ-Qn[qɷqɷtM!|蝙*ICbhv)i6' 2) M2f?dLmd&97lN dp^%"ن۴ `QKnnM8߻==mMRԈݢM9_ٖq{baX58Ia&!0Mr|4ذ@3oImi$RάSf[BÒj3oK onRۏf2n[f[J4d>r+%|}I&h*yuqfg/)mxݦ7>+ݤ۷);0ů@9/yvJ/ېS%)l7m)o%6Q22vL~zfrj3M2I~+QvmiR&{2:+ %Hripά/rKhdTmOKT`$wobJw?}[(MVÍWG$I}JY߻-RR/)we ʺ~rp;5f 9I; K'7nL$ el ­ݍ&b$78$T8`DN(ygI!ێ8RqAT%n)ۿ T-A\}sn &mZ".9xCULb[s3w[۱%>$fdu[0J.i|T"CJD᠛=pة6I ۷0J o!f$9mtɓd%Q#Q+9$):3<<>L$51n#>>P삃c[DW+85J᱊ &5Z9+8d,9mjH$16}r@YX:; ZPdARrd&7lNd˪5$c9# f$HL̹RVI7`77^$fqVm)scIwe\Llr 5ge[Iߪ~$3%P䭽*~Ad9WtV% T\o>~vxb̑v-F'/ZlػݰLmل'J$zy(f"$ȃ}K%1Qێ $))UTnl3emuvLJo_t:2>rJR0PmTwS$YmuH&9)FI c4$*> #.f V1 l a[⒅*9B"["8#f>*!iMJ*~@,#d%!@Ѻ88@X2&٫$뚤}/+I ќؾ YAHg1a[K3/Q(@%A6Iھ#]+h}-AZDne VlVP(}[_bW1#%)7(۰m6Xe"1v7qH=9wE͋7#H MXԙME3mMRombpSDm$"% ]d,y.${[X2{ $@̛Smi ?XL2E[tX 0 tKz(mrJ6w›?Q%̕,˸/JFDmρMRB6Rk$1,[m#,؜I}nI L9'$kد`+ (Ш8ۨe|I-{[gpm||DnjJ"Okq_dc6tYg>4ɞh$0Jc&aH,y|6Hz$Mkp 4m-5C擥#Ȩpƍi<n[ƙ3NĻmu}6J2kNv]J k 6 ·rK$8Iy$=FɑNLlt [8xUx|r}%A7W HöQpGSadzժYRĦ빚M0tOPz6iwȱ$6۰@b ^!HI3hO֧k5N0JcŃA!zF%V #gk%vmc 9Lav.٫\1yrtl"0/V LI-nbn$mjWGinOGU|'xRủ(v±@\Gua(uV)ݚ4I-POsaoܾ\ZI8`->/k #E$ _d[n;](7ÍM6F7&LyȲwq[/L籮@6I#(GBM=MՊ/Z{\]Mdp ˄q2Z-:RzXf;Kv4rM0T0$BHTe uTZ.DoY4Lw.d[!1r>]&rfKǥ*27ꁒs=\0!T8bM)?#btIOdǒOmaQ%LV}+IA9[J}̉Md}mXYumsI{[ @5׷;t<1ʍM{\pNER*C"5Vp-*\nv5x]eۨÖs2 o(;Qbl[2N҉Ij>dӯD:UF+7id:n,?'QH݃tGÍJv$(({T 1@76:G4gXvI HNi&5nI2vl 6'Z.mn LH͂y}{D'jwnw,qd&qiIJR&I&I[2C<;ΉM2edgd٦9![ ;R2LTMB\\4{Ų@g>d[ pxe嗈 W"UK'nЍXN8ƾ}NR +XDorG􄎄-.JD!·M8=ddփdG۹^0tIU$U"@3ό$`>N8r-%c-nÑ >nd9` @LR>pI\znӑ$ЋIZCl\̡[Rdgx\(f檏x n[\=R6P_ӢuɩPG]ysc3T,nʡD1ݦ@9be뫒i& TΪ)i6\VX\kXf>=W Eځ#ӄVV\ w>ۍkpagܠfyjj67kԝP# OnX!s%jI&gqDGDnYMQ+ol䟕k>[Cy.I7{I.r:AqO86=#gEQ'nTMJ7ڝuUq#[#Mfl+CsԨ#L v}}se1lquei[oǿDnK- W/0gTn>^ǩ#$к$ %ň 6"7\$MNfާX{UяМxNI2-vX؊ȹ5<"ueD YG)>#¼<_~n$.v+ IZ6 UaO3%~qȟpCRQbys>n#QahAacjay%&e$05u˜xpا%j'u@oC3pɲu[6-QLq: ɂ5*X:0$zLjػ=QJ%t-a60M:Y6!a) ed/9F)m6D؆ ;1[m ->eӃ|DniR|~|MU`3ͷSȼ1o(]~GsGmNmlLέݤAYPՍr_: ӭ1tsGmNi-d&57H(lf^'Һ>'LYGOShTԸ߆DGK'.9iZS"v+ Z|3/T4p>h6ss[hN4IDw[cLB&JR(Go5nΘ${+WW2e CUW؆7@7-%{(0lYf.?-Q#*g䖧\( 8{PRiu*srȤJq OPx셮KN";IOjuF ϟpv%-HFBNJ;ѻ$[2muu?XUM[Oa-Q~yGZN[]G8'IaHf3M2W$WJ7׋_NOI|x1O;Tݜ6;&ٲ1kj.Ļ@VZ߳kc2z|/~eX4l_~YeSlYO/y6lF|ݾ"sJ$$"M5Wsj7\lC.嫛_~ŧuˡ3F|FU!,OpHQ;wIT^t U3ᣫHDCvh/q"͇ljmALs%I!r?7gmD=2`Z^~ZTP1x$Q}w'G;ɛM)Ͳ8h`60?oqņ@<]'6ñ a^$DTe䷫ܪa|366- (Ml|(R,\~Q#SӏQ92»nG!X>l#dyy{_}JxH+.r/uk{;_.a<`9tR͋lH"S.UA+ϵîo.f7d|=r~6ڪWG0Ȗ؄2yɕێ#EONA5|Hbvt&-Y5k0:K/N*%m9= ܝpM 6X+a>aeΉMrb6 md@80p]p^J\y0 yqv*/G|}>'%}M2j뷦Z)u(?nHxL7%Xa7`~f~#A>=^8qXǩKUZ恾ɣB؆dt |ͨC;'QS7Pg*k>4VWr;04Zyz Z_ZղZMp\~Z+oeK\0U_}L L( [ _(wx4Dn9fKVHԍ vP!3j?zn_^&4ߕj$JO"(D%bGCfa6, 'Rp*yA53·lKo0?V˴V$ɿ04h=olB1n;TYFn;+pY#ʕ?AlVH|_2poc5gm=MKm+|DHܠsYuθ~ Y#|a/םQ mř)基Lo}fNIƽmZ3o ,^ e[_Ez1J{V}W^SBM sExN$G4m︉Fz^EƏbhվ@3(gTWIS+x3fMl}RlEt}AHἜ(+m4IidDPAPmYI23xɋNlk5ʛkDkyk177 .IFqs$"i'2V{KB(܏;#Eήbn@7 =;E< Fl(K1B*&XxɶV$" IřK=dmf% 㜙{[Z7 hr~խPtO$P?޽ztz?}x?9a?wOpHN?~Ht+4HHЬ6T8vooЋs)6[_EhIΪb3#=cHG I/MxF_oJ¹%@[[oQ'>n& ¯#Oޢs< |2?,EXRɕKOå/s{D|WϪ_磯y4 mDjZʢyc!_ǣnńisJDYDqE8c닟ٷOP#YzRAQU sIXr_:ڄf\Vb9'o܇O^:&ŧO{\Hpυ&'<9:yHȖB/K_$=8"%P?%JI!H_s8 !=~VFϞm"3\Q`Esɓ^O-(Bԝ=σ]` P<8ݤuMSg%Ѥ\sZ67'?ޤ4׸ Mҹ &( _$,24[&"rl>5#? ïOp,X3+~^r{rta? N2`pL E2ϰ۫Bo'ofY-P,Ԃq//-BBȢ +jǕ>hDQ{L7,z{K ɺ'ϷW_?˿t|v X-?d.: jbaT^('uEЖ)m=˹mn>UXY^}ijWw׹o77! ld0c&\&]]x(N^5X48F JXR_pC@䢌8ey e[$O1(bBm5!Wj˛(M~S3$^0aY9w/;H[9X% ,cnϋ9~\P&"nȼd@Dv%Ymwۭ۫ZY߯XկoU޲m~_/n/~o@=hEzSX;Z!mfXs]s˭o/.ryǽ_I?[8[u8Ʃmq9+alIQ7mpv[|skh$dۋdd["ї1OYa]}X a.8e_l"Rܳj77KwPn |qq_5$ =EG/Vήqz^CYI: %adR\6s_/(.CZe`@&|Gl^f 6ɣ%콍U^e۳>пd1[E^7F;FbU뒱2U@{}`ǃx ΐ8t3lM4(zm\k-M7ŧkOq*~Hw' k:^; Kgn$‰e&G`؆-X%0Sr , 0{ls<+Y@ą(»Ss=4=9ȼlƄ6D`ٶnwě ۬B莛Q'Twf)"lKln#l?Em)Mqmw|㧈-E;@6c8'} ˟qV9mM)t?(i(clCc62FaPh-_3oʰIpޞj<ьBr__R k7 mYh-}-;_@E3c؊cLI`hEN7 6N .:HMq s|}x(r[_31qu%͙`tq}jOiкu[%D]CHDXʝtKjd#], D*9|@$ 2Ŷ*{}#-E;>5E+pض@DÐ|x! R2]tdBem*tbWNk嬚G*Κ՗AHSP`knqL侀 #`p=M4 HI 8%~maF^QW ٦ؖrgDȏ~sEuhy4T]{G]>'yxs^wQ&I˥>tQuh-+mo;5jۜ't"y"[r lXAǻ #׌-{x\LmM{+ }رCoem+ EIbQ<8?54ЮBNI>dۭBJF; !r钾, ~Ԟ}p,Qf] V!IVDnI췒`ZSǞ*JiocQKJ3Ŷs۞KbMbЍ|uR&tMRF&r Qٞ%4UĒ˞Q؆5-!rH{<];|A7==ѥȔ `{Ky ,4)+RB p:"%G %DiHl r`M! qkk۲c"0-cHC]ӅXR$]au$+.еfH1h -cWOIfmV4@:%ﲺUyIAKw۸ٺYxI˩CGnYjUo5[u@05;hzJem n f[lPrEm,g5:Bn eV(ێ{dsR< oBjīSIa/i%RYhG'?t+vgG,m^[_0I+ض"+B`^F]hrKԱ^3ήl_G٩#&:nZzN%\o}*C,”M4Zݥ}cH5g[Wqg^`\[GJf/ީt HV:|ݕ½)y^tvs޴/bwJ9ʘK1g tzQ7Sy7`-'rձ2t,c +=GqNh6F3w*eă tV8 y0퉒o[ XBIwNiؼtM}x(3'Bp:زeI&+Zut].F :45kgS-bd/Ysøb?/`Vssiz.QO~c=%pN^ڽb/sN-زZSzy AsIbhk51VIIjoa -1fi-b[5XI3A,?`N%ĺ: WMq#enA b۱ ?b5Խ_-nPEƆ,Ŝ/u5"iRI2Qhj/za[*u`/H%P[͞}7MڑƱ:qS|N* #̖ Am_-Ҝ3-}+$R_9) -I+gWJ~H$H[ _ ؎3eSڹNU6pݖ6je іbG-0rL3XenM ʟT(OS OogQbЪBWW~K)bmri긔,.cqp~L{ ف"vϔL<]KǾQgUWIg 1{XԐBӦliz] l59z~V2mǮEjxߖj魚@DTgy؆."Zٌhu jY ;}RQ);L+m}Smn([*RikƊcB[0nOah%ؘmZ. XIĴ_#5Ol6x&-hm.Wlz\[*[rA# -iGLV4s)>(D/\}P~Me믞uV TkRq}ls"GnqޓKlw+[Q3k02>uփgyӚʐ&I+GmBǗ$PBcv"hH>QbT<~lhwen{m8ȔQV$jy<#_`6ACcf}4ąMRH).dDtЩ/}6+`&&牤Ѧ~/&Mґmo8 7fe&T_4mjݦ˚+4ᯓ "M+묓^E&wMu )ˈUj9&~9uR}Ymt\D8cˋVa̮GPj.\cYhJ,Iv+EBiϗ Ci%VQRY\q(b%̷^;y_ 6ONjx|p96IC.GB(S.5(6n\.Rzm׈e*q捭!ƄP{U- <Ž `\*T>/ĪlSm. :S5X dGB i7)-*]bvL.Ʀ$HCiREۢ`WF_Nn@Pە&V)!"N/av pwݱwbK&me%3hQP{ޱE.(IMIl@G7cL,t+GKHQQ_lSȞ P9/|,-:>=Sn.JXa}BLoGT ! /B< LV)Iq En3+Sl^( 'T&[[̸吼(--o4΄Uh#-e)ukZ~ZzFh aCMsE!@YYkT].bǍ%90b(HՑ=Up[رvdۓiQDx]ZP"Y)hGoQf븹SoT/GjW$/v [J]~%&h Yj;Fܡ_ 5A=Te}aExB0Z݇k[-`n[nͭ= 8; 8.{Qz^[yx{>݁( ؖ "g:ֱ El`9nuۄ3y<9xNp < p6ɳN|o. ѽy¡_@զH([=w7$mvoszm# , >XQATZM ,:zV4&~+8!Qu@$ؖ^ft݇aǷ!ԖRw ExT댯F!l:]d$ ݙv, #EP2vE=@"JM5ܰO6lx]a횙 5!-,.t߁O{%J Am?Oj1"[RZSSSfC"bGҁ("mE fN}:PS09ֆxMAY [?#U!8XMU1&׽'vaULٮGw0`e`5[ŹX& uˉDA=h8xeO0y[m̼(%ܰҶ9Ad1lR 5!3ez-S Bp'-0,3  $%?.;AZeF:px`R9&tO$ނ\%kSFXq-^Al # lsZ<"P/O ̈́k#\#oy$~0ʲȀckzum }5QϊU$|hb3+6[JecrTv V)tTvwQ]͹>]1 UYba'V7pg7s_p@]Ks<+0ɒ)d>֠lp47߭8k' ^fNzud.bD1kߗ5Q3$#^ U 675/ ZpyŽabEܓzuPk cf0ÝeYnoc Nv$H69H?]ꍉ9ܑP%Wx>^ |#KDPWrzEAFRF֔j"m1ӹan+a)D;&ub4PRNT( 1o_Z 1Kb0, ߥAA$̓ SDkF'È:c0|$΢K3p07*g ZDA^&$L_ڃŕL9ִss$uE0W{ [KK,HYLXΧ.fDG1rͥ6Ǧ׆2 {8&Ud$/#xl ;A#=[';$Ӭ~JQl39yPlM#JcmRdd^\N#a#̲I9PrYt1(ގdLB0 y/_O gn`PLI֨*H-rEAbbaŁ6ӻ7Pٶԏ9!pKwһ+RI*A ƧhqߋR5Jp7߯ALe\V 3 eV9y{uֈ} /YI^!O]>"Y;ނe %˥Zfֱ)ESrʍ( aߝV' <>?p.yɆAd'~.2NՖPpa;ק{8kb0)>X-b ŷr Lg ڤ;b6 l9L<7 5A0e*@)N_Ā ՘xh%N!{փKG8j*H TNi"b@v?M?Z|e&ub1e?: FW)$Ci}h!u` c[i\L%;6Q>\ ʊ̳|^1Ht#S]ށ3$8fJ N![#1V]5ݺpPx'c'J/!sym8v b7=uxs$w]3Oރ!B)6lgQGx61֘yʫɑDA.a?򶆁m{ڂRp4 Nug C'(mT7]@I@ ۄscFUf,Ӹގojxq+I[?Z1i^!k3`6H6$FY&Znz|6~Gϯ3u_sPNG  IHDRmlYsRGBPLTE?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU pHYs+yIDATx^oK'ޢUW;.|%%(]dE![=azD5;5;S d%GK@k+XGYa> GfDfdf +QT)?**\cIǩy mVgCѶrq(:+z/l; ʶ`p> O ?1^zjU^VSB QR кsL#(4B[5 VmA(QkUZ߫ITM8BI P͍leO\t^&YJ R9mV* 2Rj}ܣͶdrU+%^S=ݴ%C5mٶ~Dljƛ{ɸKKN}So uVJmi ovOiAMǑFp)}O]OŽ+W6Ro|/e9G\x; ^ȖWF3Bbiff$M[Uoy>Fdu^HTuY72DCy~;\ǬOc"fF,IiT.U0z3xIZ,{YMf؏,gԿ$F ^d;믰A~: ,Fv2Fsi˪u=[}טKA{eB DZoo?sֳ?\^ړmCD3-͌P#rihC%*9nNyl`a&|/ۀBs9v.\nj~Ϳt. 5>xw~Lfћ}ֱ$dWJ1(iJb&9*_ Pt͡o*A1Jv}|uK1&ݶOv3':G&y~ΔHi?g3@d (eřL%2Wy6sR}~yyyq|w ?o=<rCx e^^H;ݨ/mRB f䡍 k$h1&fk\iC|A8uiF$f3j.4q+$0DB @ľĀmґ- ,r#E#,0v)"M$p%q$63}6k*B< 5`C 0)$T<6D)HO7Oo't&$d4cwf(p +|.ծlch We@OH?{RM2=$M҈ I5" '\e&Y&lSvM\dWs'KT pfIJ%Q&C6InwKPY2d6ia"Yʶ n&ׄ1f # rWS7vn9 ap \l&r.[U6DB^\|h_ã <3g#0Eu`xy*U7f~$u1#L_Z,#3&y YJ6-HP.sjjj)@fhfFrm0c8΍ 2+AQ@qīhJMl2VXS~j N^i-6ȶ6&OWa TZd32mp3FI@h3F sk;iRyZ)3ʨtDM_o*u;iuMMqK舏&O:OmF$[7nb1lr u6*3w6Edb2z&thB*O}*S oدʪt<0 ȻzRlU6\H+$_z$•OH}|sjf kҬLɶ}TkѭFp+b,ܚBk K71kn%x NΐK-@*4_JEKP!` =WڊS{14͓^YKGy;nr6*gQtpI!= BWLlb5+%WeEn0C{Bi m5Vb?V"+0r e\)"catolDA`p}a/zο0lk _+5I&AxER;b.\q́,nSlʮO_h?ݯX^| #f<fnÿ 6"M73>gr}$R"2hS]~r}(.7Bע |6u+IJ[Yojz|^o477o>x߰nD%  hdFDM| Ft܅VfPehBdQ&^b\Z/檏C[M>,>4n,dFp.<"AmdĢ\&*AXʧ4Ia\KM'4xdp?:T9yH`zJ3<*(2LR( Vdv.܌D=L8Ju=I&+̘$2$ d.~r 8+3{>0 u.L.4%G&=&lőBPahZ>O Fzf'(N :Bſ4$kcvz50{\ Έh˧"dXeA1IX + TO'BT*%p o֦ngʎ{YImCuνŬz _A~)xaZj5ť%G?QDbDoB6T~Ac ($&ƙ.\ H"nוmf2)X7PR/!29fF~i%͌+H4#k%ɯČ+V3-'[/kk&.0/k{Z{&6t7@F^ ue;&l~ t[dI>\ZmoPd2R:~թfT^3_гa>cn={lL{H$ fł9a8X 5`ς"H+hs^G[lᨊHJgmԐϲ׋&73MҌfl -`f/d/EJ^Bd8 5 _CF:L8<V\YxhݤfhlE۞X碍FTFbh8N@dj6a3Jf6mfh` RA qρАBy8Ƣim쫲kΚ+f6ZMmYo8S`){Iq=)yO Rtm屻-챪8jDښsp^?[ִ!y6&m: ;h-`PG׀!;)0|Ϳ*hh}B` Ң:T@`.c^s(>y?GH[IC$1Mni_pT21d5S A'`=0ZA"_= Ծ<6c4^ƔmHsG&mfT4ɬs@0qMHBaaGh:M4& O`Ò.D+¼Gv D3!hk0lF];د?~ j /lr` KA XE[Fq mmˌQR> %7sۭ! q`ndl,x0&)['gS\Dk͉5 doh4Z/kӗi>/OOg%|O6x i>bd^6`9:UiܔuΦ[Gi x3m]U mlI+ 6Hyp;%}hc6 YQF-5cD͌~d9Sw/ADD%=k\{Xݚj)OQl4٦ŒVt+6zsmj=fhde6'?mby.0YRr?-sg ski܄a,\d[C=0ⳒKk///?̘$2."iX^l꾜AaIM=\<˭=J [JIB휝-}* $1H*\֘S5dpkKRӧs5hD͌I Qcזf7i0U ض-0R gJ! gmҠVNRhZ.ĕ ڳ a\2i=qmf\JɶI:hlh^AÄ%E"TkgkD]k $PC~`Y&G&䢈\cn=>ޖy[ E%N2ˌcryfnc޽6=A`M kzhqp h[Y\[D >^ECheh=!0 Vu5C <kd"mcmQDMC``i8Yn#K"fn#G#>j6lVO>ЬzGm3/k~ (I&F2KluMެw17b;AJSM $77{mg3* u'x~;`NF͌@6ICIy9&'kQ%lCp9!C *+%`F2>|4+6x$hGv`='HlF/JdtoN7;x4R؋%Z$H]nvFf\)Qdaud~nf\PdWm"{v$5h dV[@+Vg\Ͼ#+X.b' _d+HW^&M>=l&ڱ >V|,Īd[Wo?ޖ*j!h-Ѧ &V4&;_lB?|B#J,_Dy dfM"{5yd |??W t]"OBVґNOIr[@sbZmeJG\Γ*^\C\E(\eD"G2?o=2(U]R*K:V'Lr5q6mPZ 6;~g}aO?QCfljtZN#ɳ"LslcEp5ӫ4sfڀpR/t# /uidAC%lP@H+R]5 ZW\\r814$0vz.ߺ*$9 y2&j 2p3nz6g3RRKW$Nn!V3yLF`(wDѭk.wyR^Ry%ǼbjH V ͸j˶uku}~uZN<(+}(#A_fd 7HѦc48CF;rQj#[H4 $eî'`"ن7|?Nۄ-A#&^qΆnt.3f'UJ0m(V6$mv&uH[Vekగh44smkg܊6qV/@R1m& l ݕsxP-u4sQ1wxt'lhcR9W* zMR4z&mjhkbplM_`evӅcg +)nwq/.aO\ yäX0`\DTs8?S$d% TS>++I)ko^>p{%d(gz)]dQr3sd]ăʹ|Sll' =^V@Ih]i:DV1YjX^֣ҥ4&d?=P 2ߎ3?Flf.'.阴ܾzD[m4'cEmbWa90n"[ogf)ܚ ]|mQwv|//>ݤReJ/KgVQ/|>pQE2[hR Q Y㟔۷_4V킄[4b˵hLA[4G%w{2Uw{p!T $enb):?h,8 Wsw dIoop$筗M;vgow48306a;hsM)5iViA (?}_O9+=Mߺ Qh䡉8,}m? ~|cR~7'|`?ٷ<~fDZJNf5&n 4Je/h1fs4\L8X=}:iGgIfs/x<\S۩R-"kUpQ  Dٖt߇W=)XI9{nx>֌}.I* „N\Yf,2oD*C|Ykf1: %IP):-T+UXM3~-m;U= 0bs#f#2L1d v2ԁvH{<hGrRwRL)WotC=MRY${lu6lUUfd-]1R:p}D ?jn%܉j hI:N(pÿa ejl 1͞hdUl {xx UA|>y 8vZe6f$ǔy=NwIpWTBrPVǺvn[Zmv*+¥oFHɎ)Q1$rxJBN~z7!dL?U[O! ۆSv?_2*UfX]L=&ȼ`˻F|JEu"n(#HSۣ Rnw޼x{2qLH *f@Z_RnJQe;$|}/D@$%θmܰjfD4SnGٻPvZN=ܞhLd2{L@ҡ{nX+-j絊^v4QsnflTɔf f6IX-;wp2INiFL#DnAn+.#j&{uٜ:^Df'U2Dm{4s Pr*9 d36%ە˷NS 63M2IV86JfSrnNo=B_Fo5%VK]%&#%i[,9|q'~n-vo;hkRY߻͇vp?=qɧL\Ny1'6Ikf: e~R9󂎤Ǒݤ Ͷ@ %&o&U2Fg|ȶ4 %MU2i祾IlNR:e:ܢb}@gɎ#{99v{ Z,Dm6 2A+͉lnzn[8f7z dX##DEdAQ$i>*̇&9PIJ"d+PrA@;OI2ȇlsTG&9sy; 梖|xx6Ockn%+̨˷KK-8If9n;=@1m}rOgcaqb4m ƳZ;FE-y$X7&6{G[mg\ x[*v؞}cJ͉@JCWA۸K+TW#%CRlC䜢`\j=4(Ku-iqʶ;85ĽgJ?Yq|+I * r˳zuƿۓusn1f'WEsb%9飅cr36T)\M'VJ~spD{¬& %syh&iI9Q (7o($EyՎNMO'o4%66qPlFO@4JDY`w`sK8ǼftͺwRxz]e`H&2*'%ؼυl :Hc'+m"$ ?O%Wds>d%ģ\9R%gӟ|xi%}6yeKҕ6I7*pv¤8I7p̆՜$Qg]EcB붾4tB7{qୄ¥AtIqƜԅS$٥RwuĐ8mA% ݼgSm۸9qXx:TD.t#lmHzzMovꞒ8T ކ_%%S)n{ò5h 's)@[ǧd~niT۹/uJǠ@5북f{8I#)6psqGy,LR)>moI0zK6ys,MvT[('&]sT}r6K蹂6{Ch?w/@&p. &锬qwȦls+ O*ƚn-)yW,\ gNŻ( {[DRv K^p9 G|&e3A/zQ5A+aE]_妙:=ۯ*,@"&nGEE׌n7ZDtAፉV " ߢmI\F|XIږwAgBV=3J'#O$ lsq۸? KM:d`d؟xzޭcfF(5YuE-@dG’l/n>mNյlj66""Y{jO\ $v}n(6*muOm꺍'e.~)V~$ |] kKyAd99h=mFӦ6f.HEEOrnR.i4c)'3ElS%k6XDҹs={@}n󈦨>ŻmV@0 'ś7|G! 'Rfq-%Z|5n(FS@>v)Jml?)j+tnY(tKyӨ>7qNvګ)I:l"I=z#mYߤ4nػ YV )"&'v`ڨz\l$]2]hP{N<pķ%QUt?2m ۭ9`>xިi~(KID0Ѩdk~Du&eVJDFnp;WObԟ*=C#i nK䡒tImRYG@F |Z|cդꛌ Ҹl;6#©ImJ196ܮboJn~2dɶ霹&>`Hq5L~Sn 9n;p2ɨ3&.ۘ{آ f"X#SqI@cS : K}[ u+3p@/ ˤEqC ŋT6󙌃L@hmF 1n%$yuؖtA\Dԟ.4\YNNo* ;jZ\Z8Z\M MB03sy J1ƙB)Ug[!Oh[#6l ^_;ѣ#bԋ O儽ЍkIe')ƻ'8*n׀\ӥ@NlS›_~Iي7061^UqW@9I;FR@Nv1r룪fRGI:WH}V_bL__mh緾#&L9m2&q k&ٛ|ZV?;puhԥ}9jҷtL1ŒX ,i'~$RክvV<l;'Gd]G>nPwOi#po'Kْg" ,nVt#wbZEmyŽ($K2M`4eD$+M/F%.I|6RY@>M'M0S'/{Pr7J!($I|Kb'pNwpr8iӤmW  +U gIʜ!(gȇlszږDŽtY0o~ĒpNK<#(q1ߚKlTrQ7{`?y$&/1r{qqVy7g XwL2B"}GͿ.+NV9n>mSKM齴?m} K1Iky,- ߟ(x9u.j /-jq'%ۀVV^ ]Si:ߟ_cfv¥1_cՙOBr7um7D47q{뿻l#bJa[8O2YnÍI!Hޞ];F3(_S !Ϩ|NlϘ&s? ~ εVX/uufJR_tK詌U&w C}Xhj~IF (@6I3[I)% 78ǽ4vSE 2;9v[TA8'Md%>9 (f<p Q n|j|璤`I6-m,>uҌ(dg LLSܭ:cnc]8?uf @˹<9Ձ}֕DTb(in*]y 6_`$m2ݙQ{>dZ~ ĵI_H&f 67!>3·lXTжJvR &q 7ĥ y!<ɤ%4li %M})](8mjf*Ϳ&as. )P[Hr]v2)yˍRݿ d7U8oxpcrXuZߘJ M2YX { ֽekd'}" jMӽv$,g7"ڷ:7=@p]ZGMR,e~+f7^__|?\E^;w v |⇋o!c?>n|k+ :(Ji.ۜr?>~?N6͹I6n@ ;63PlذہOt ?^@~bgUI|TkX %dsbGAQ9Ξ{&'^_w7ׯ9@nͧ%>T\Z?z~_ſ~ɑܖ}v Dܚ|?ia)8BTV0Pފװ#KF,w^fh|6+zq6pVl~WbAs(WvF?$w0`Ք8Tjk&l5[?H l K1 (0%zȔQ_9uopTLMtA=Tk kKw?jJPKJt*ggրwr2kU}6*&ɟ 7p98;9Z(pNc{kHj'jk^X?jWj, `?# BZ'.h_ /p_1y$^OI3?_Z4C.՜Fa >Qx {Z{xxv ֿ̦Faoo1)8iCTEv{V)_]~|R)ʁlscnQ'h a[b a606>^F%| SMR=|k c`sOvP3ؠwC ,I2=vQ7 ιǵbdF ks7@IOƳ.ZU$1cyw4KQ :#zAvSn8iOFc`(Xov(5 9=m$D2i%Idۋtd[x坧J A԰ H^r 6{ (w8_רּгAS{ חUDMօBmdlv$XPA -n@*プ¢hQ0ކZ5_6!֦H?y|~j-ͪ/ $;UN:[Pخ0S[9{>-w&c9bXy8ɆP5*} a֑¢qx`:`.*<[ôWۯ㞡}cs 66@{Q_@eͥYLPE=nUXǍE.۵Dl0*Y-<'[-yj{kg٢ uŨ(lĢ][drPE\qZls3k~X+P{k+Zeŝ|_t*şA` n񐔨6ym@ݪ^"Uk Nkh$p:uO4Ooo Eb˟@{\nۭJ\ @eI!%TgS-Vl| (}U`e[|OھKm(U_]4-GObG[;,8ig!p;>KƂ9_M`HQa`#l=t_lr Iv;whAnP %9mC)Ww[mn>(^GN&)}U$!|K(qy{%jc͕ʷXM3d>bXZţf", #l tlJKjX=)H`~?^kw=B lPI=lrq̐sIP>d(b7Ll Fwoq%w#}bE'+-,N Q+PMXU:y ` ս~Qs&|7'"H}Tu۪k(͊IR龰svdA)Q=$*-Bd3c6 n5Mey 1cAN\pfuM#twNLZ))8 FFV}C6\s9>9N"b"Z'KUS0=PMaZ=@n)@YӢ8:2&``bt1孮IB`j/x Fggw볠ry7"Aٗ[N>!)$j՝jAI*lL3YHVd*LvWMN/#\c‹`nI+r( m hc= 0GmSo:{li1i 8]!R3H~F}r7'K-54q2E k]!8vF$YOܣ }5UaZONf1ks&Vp=m9? 0ZzS|!1Hy 63%^3*9ln _I@6ZcpF6jk߃W_UOe<(rSl%^s!MCE: CLhyM KڥؙFa?~ 66^ V'~ ?r\*N1e$w7IO,m%A;>-MwQ]~;"2$X%i=g Rl5j؍1%@߾On  AW]]s2o%aā}! U^F[Ik`"KHXGhZJI 5&9l bFE7:J9gʳ'-ltYD9&M:x N/@7njo_璒leV$GIjb`A/Wnuy?lx WׂܯZ /W#bccơL/qwp O 14gKlPG}󨑧~|ـE`6ܤ@֨ل?ƸJ_Bd־KO6W_2339dkSIC-6ކ!wcCe# Qv11c*[x]klO hwX Na\+[ nie ?xRr#Oa(O$FiI nŏ bCKl|YpP`{F.1[PMĝ}(>#QN@)TKaL폣ߪʃr7F%@;Vx%3'?Q9wBʿ*}D"ldy| ٺcU@X&ܫ{ܦmvm+}YxVT0`P}?9Q>i$:%' ʩSr4&̐Tbm:=C _|I_ ]ZQD)-))v`f2` *=wRJmBrH+#"|UD&q~}x'^Nuu+UTGC Dʜ~9/}KakşVu if6dݦCWJ`q6KJF30,(U|#kdk/&',i6z 23 ܘ]UH> xs@yc9Sj{ƕ7|֝Otl:m8/_T72)@Qǔm~UU&!kE +& #9#)ZH#Pp F-w˒y)2rSPapA︖} 9Ǜō{ƒv$fAON_G!@40sIY$:K| lU^.3Hh QU܁49+Q091̭fva #@a&0ha&S6/WpS %[pxWō/Wg ]nGsV|6J+R]VqS84&dkz TDRh3{X.v~W`Tua@Ss V^H𕬬QӒP,͍O畧,WU<*e~Mz>l2^qWf@|4BiG,7GI(/lE.x X9db:a/$PV~/%WO*oCAꎳ鳦#N2Heژ(t#_X5"Tk(`)7-lMMj6d4EMj0r}&@lR4Im|J{"DFQdMҌNkHift\#e` 6#2Qf&L0ۦC|Bgng%K>' ЍRfM{DFQmF B͈Li$vif!KbD&4$NJ0E:+ٌ?HщrfwیNk$Jb d4"eI1ift\#md4b2lK褄WA3 щr&i d%1"e"M2(ѭ Psvܘq$DFQ<fZ5G)@Iq63:Q6:)AhǍ(h+IiVyIΊO.6Mщr&i $یDFRd,͌Pk3D&(r+> %1щr0:܌Nk(rˌ?Q.p &it (ɶ<@64;3;nDFQfA{DHOC\ 2"f(9jGQFY"(( l3b2YImft\d%IƧ!@͌d%1#AIE%щrM҈A(*وLi$v&i!t(H Ao`_?c3!7?xdmV,2L< |v5H4s:sˈLi$hǍ63:QQ Nk`aVֺNJ]&Iщr$ɻm tz(H MҌAHщrE%ŒщrM2>&T.4&h¸o#ħ@jK@*!udLT Э*5, ?DmM| ^5ae[cOѶ{b@8Y>5E=<3'ǩ.Xl MP n[IS_o~0ɂ+P(al\ƩLzDlꆤH=DvzIH >(aԷIN_H=Jvյ0hLݴg:uѓ]8uE/u8Մ^F[P[wܤ~/fp n J˓mWA[T]?CuYÞ X?T3Mj뮕|U$ .w\ZjJjUpsVʶAң!13%{h;݇yXLSz^s^ jHk$Q_JkadFMfACmqB+`t6S`zVɏj$ ̎щZ& ħ Ge[suIԷff:s64tM~N#)0hsVs!s~(0hsN~hL#! p )hz9-JCS tb[9-JCS tb[9-JCS tb[9@Ж#)'9vZ)q{܄5F9m3{% (1 ,롵m0.tK%ZJ(W(l/X[VI=|BRwu*HeY]#k]jڊ݀ ,:{ u!7+.4*G*VVҖYu[ir-[xaB:#p$sϴP[,jpI 96D0uж-NOo%hk/vM%:,ݎ024GV# IHHF I'PEp_,Ez^ 8IvMwA2px` ÙgrAN=8wPז-}Jds FGz@ =ͩpUҐ91|ƔE9= ľI\g&Ӏ4n2c; + ĸDN<'ϦC&Mrhm,oҾc=UPvتӚiaKl/ vM'8IiՋ=Hޠ4όj{{ ] kI,d c ahӗ%mK0P"gap,M!קftng%׎Iv=$6ќK4kY0c$l2T;Dsּ4U*Khg:yZU "R"L `m$׎67Jj|'TU 5XME_g "۪"ɖYE)(eҸS,$gڇ6F]`26ݸaK6PBnH-T\>.)UPxq0.M%S X}&Z{*tiNjRw+-H$a h,Ff&IGO` ?VJ SW{ &4ܫq[ 25:6 De/jr215XTy @R5m&|.'`8-@;N0S06he"da'Gn2= ߤCiH>qIDĎz8•uMEW`'vP V&w]NJ"rYBaC dyw %GeoK^xJIE1UBx 8"\"Lv*,DH0 ĞڀNԕ /#*kډi!60d[xsZk ^,݂p+1㛞X.8ɬ)hqx:1#V2s> b$wy3<9nrUYo|_*ql s{iGp^%Ly]$@d m i! (`!դ^wc;Q$l'j Z X[(fn]v]xujwڀYД78褩WbUE/{lܑs(򤍘5 ̓q<~>фWw2&j J3z #6c`!n;gfAV{La ex,&Mn:iIm P)3bX U!Vq[؀:tj90c㇧zXAGp#s ZfD;GUTaxz18k.w%΋^:l M[E/fntV-^U{q[7;e&DjzspH&6aQ6R6B])m9XR6B])m9XR6B])m9XR6B])m9XR6B])m9XR6B])m9XR6B])m9XR6B])m9XR6B])m9XR6B])m9XR shkַ!O.;^'?M;f2}]֋Ո'T5BvU{4pʔV8446(1yã궵 -~+Pൺʷph*i F38rbgۖ"oNVoW+; Hr_0wq6&=|`V*OLH'|o'+{;xg#Q5 yrGᇰDp~ ]#Sb/I<"}yʵ2Mz޵ V9:p*tv fyQv`*?{ o$r12d艵3vQн.Oڥ a]\WY*o(òPml*ią*b _ %Ch SP(]K.q%R]2UzՍ`EKB]_Q/X92mJ0Э+u/ת{Ҥrkz>.N> QG6*S ݮ"&Y^- _.%3C~ OpUfci7p%cz-שr^UY.`#nW`nPxҽ+x^vbXyf'r222o'1$˞K1p-\\ěC3YdτL&x Hlc2lﺽx5 nMsA" c\[u@f+zlɁgQfoJ bvA=TBK +HRUN|-T$Cn%aV%A*)Y(qe>MOܤ mOYB MRLPBXX_Lau"V~R~[5Q^6}Xb-ru-rAOFД PEwXM[—[Ɛ*U*V#`g g!ɱ ` O![/5cu1Uv2'pY # jGD{cNB^(xƈt|?[!l:%楐qɥLCDaH{u %*όg܃O`3ge.]ʽ2J0Cj%wj D~5q9Է Wܧ >`1PM01;57`αU:#@Q ]/sO[YX#ElvC >T!QO!8s EG`~#޲ܟ#c_1Hړ) QDd VEg$çIz-:i7, L>p1Ou`$/vJ[݇=p+2W-^2-lu=F_ݭ*6=g+bh.`n '<ߠG'гK=șs"bC!T7};Hg S<90^%t(<ɜ5k#vQŮ{ TWxám6A/ 7uN{e}%AmX6 /Ӷ)[7'ʶfy6T='jrEF tZ1H:#H?nz%P5=%f3KG͵e"m?@|]:YJx6.L Gzm^`1d̢P4uTAF#u;˙ mg֮I`N&?5PBBOc T0SjN#iQ! ڈӢmZv6(@hx(0- ڦEij(@h# LiQ! ڈӢmZv6(@hx(0- ڦEij(@h# LiQ! ڈӢmZv6(@hx(0- ڦEij(@h# LiQ! ڈӢmZv6(@hx(0- ڦEij(@h# LiQ! ڈӢmZv6(@hx(0- ڦEij(@h# LiQ! a/sIENDB`n^QW=368dPNG  IHDRmlYsRGBPLTE?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU pHYs+}IDATx^oK'BSҢ1O=p/9"ƂZ+gToY-AOU\u3r-KO2ђgT=֖&>\Uz|"Ab/.2 /ϱx/kD]D@:0iZ! ,B1Q - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - Ң4C Ң--JS;DBQ - L ӫrЭVZ$v)Q`2жo}b-k8N Q % LFx=e ,Q6]Ki/sAK`*e]/bh_&m-щYVcfP`֓Cۮ6vy~ tfRm/H8K$a,駌.T) *`1ϤeUmy/ql63`hq9Q(0?.O:/l˶N^qwr c+<|݇O~/'V5ug>^+ Ek38qк4"N`Y!mǿme?fEۉ5PNZJDĈ#t%6SJ}8+f^bI:.S.%w^q LqNZ2TmI`&'^G&JOG$g:g6L ?&mS"I jG=q6{c.G6x&i0$@y*a% G\閻hsíf&i WKxRL%.g&}46VU'mNᬋ$]#Y- l$m;O4ڎ;J(vչ鹠'\F$0!a Tl٦Mĝ=٥ԛCzn)lVw0KzŴExdU.l(L5%i8?8=}?6*&GăztwvOOGʇؑ4M$E>I=: * kxz" k'ھ\[I4bQv7VD_ՋlRv SnpmIM`;*ndKqYպlZޟ>p ?`vgKI"(?z< LòKd]|QzssT x(Z!j@)ڐy?guJkS^25x >M@!|˩].D|5O?_ZMhH#ͭnEm^@&ɼ$&`p͑񉣂BCY% : 0V U`_SD48ж[@HNjQM73Ã95}%4SDrH)T+QRdE͡~<*u*޽?^ߟ _ޝkJ3|waRK_//s~1wd_IH '䒃6..EL Ę@Jt[O/т]ӄ*A8V4I-?bi5B.q/$pD bŀm2-nX#GF0O0v.2M$p%q$6=ck*" 5CT hm*lceHzr`_G &cgrT?N>j[1 V6P0$?ҋ6nxI1Ijq!'eXL$$m .k=lcbk|dZ cnьrFi'C>In{UPYXSzPe0ZHQ7Xkll#i~{7\[1> х6 n|".O-މ.QJ2o%Dy8:SK8dr[M˔I 0LIBn!T.,_mrp{Pg\/$7XiVoZV^so]%ZV+1ݦEQva1Fv{h+ӉRZpcgpsnۂ6A WXMnG0՚ ORvk3Rz-e@ۊSP m[H߲:qz\JΗ63 q[zqIL; m ZBz%蹢K~z$,m@yDOギc.'?Mj=N"/Vn?MZ _Q>n~|_w۲Kgdc&3;tJX,O8<O+up)wpW~aTȶmp/wUn_ "N.p@O]T4:'$moN@2w.m<,-Oϸڀ+Gˑ 3m%>&GmaAqoA++'G=DKE9ܰw ]E!ݤcÅVܚdhm xȲKG)܂z3Qʍ6+&>M ɥ%E"D~4kLc5qB_.\?V1ۆ$_/_^"~ yA}vlXݍqB)&(^?2ՙ(`[hd5ʶ_Hns1Kprm-wW~m}e^ +P@AKp0mZp-OmlS[.E /\TÌ !u;>,<-{{/VA(4:pqP"!K 48F]=hy6UcU7 >K:φ>"(FƩIR@{xIɖd]dę*b GB5M> gwLj6ZM6'q9yQ%GKf  5RnmUdY#HMK30<}d E:(?6&JmbKm5Zir q6=)-mT+pGirP(l2>EH*M 66Ԭ#Ԯ9,.ew:׬͚(fڶVz}j^Ц\ m0"śQ3,i-2#{ԫEtE&|DbIydM,~imlZ%'+tq;YwXdg;ْJcSzXG3ݶ6i5R$$3Mܯ%xБ]$e؞B}~7FP7֝ 1цf܁r bu _d.1* I _ /q,EM^&mU\4K!-m0 ?nrg#'gKR#La@wQrݑN_X{<l՝ w~ wPG ^oPaVhj( KB 񳊶 'ۀB&@'FmN&h!*W"> tEy栍D8J. Ԡw AqP9T|p 9WD,}{{M5(\Ԅ?GUhjf7 Kd FCU0[CɁ'R0}ZT~\km9s9:&xW%6=≽y᠈T0BMK1Ws`G .-1BnlRT;w wl՞]Dtt@JRFL x\a0[W$p n&)&-"$v۠Dme-;捱+%ؗh!OP HI%γ?9BX|X08}66ۅWmP|s(^1kv5-d a!7U%9hMiz\Vj0ߕ\l㦪ˆ<\.UȁDf\Xj6y#6EXz.`A! ~%U8xIƨ&6=;%`f` Ij\>(6qq1D d@f8"N=zm(^vY>qǬO#7MYzs{I /.x w#=T ܟw $1ҽwizsRnfzR PdQ>ɜnz$R)@M6Q<{nJEyw*3M_]U:2㡷$R "2Sn %+fVJի ͛eowL_JNgWW|Տ!8IZVw!b{u}miaGU׊5S<#8Czwuv\bs͊| ֯ hF/e'Da8:fѫIf)U8]P/g7i{j ZZYG FnL b-yeɰJQ9YVf;Jy_'ޖ%7 @HBIڗOg fE ~8 Q +XW}F{8r{臩mZlN@Q ܕ? xtY.dy f[ݔ(+2T0lٰ6lƋn "9yÿyj#zRTlPD$Օ]+TwdDujL.RJQƞ U4e[ٲ͆l}$]u&fYJ6p$\aזm{~`=^ɬ@|Xm3}2C>Y_^ oK+R~F;x@ׄK(c6lKn4#c}]o#_AFsAUx2HV"n^`A#UQaC9%,ia>Մ^}r 'x0(ST]B-٥:ڸH"|.ڪȪdٱێ󈷞o>/Ifn c܍ʣ@ہ ˥Б+Ftr0;&N&iW7W+GnE1<3'FkYs4IVz v&o6Mem mDa^X U7g҇}`‡e-Dxbod-wceh v|s>]\_,"nvKV|֔۱,rN$ten |1NYqdg!+A9[3T L='uX {/Q$&*? b閱Ah`ٸMrO_.ZndbCCMne'}{ -KbڤiUErwHSehDDYal4mܩ#.q{ۊhe^ #mm홵ec~y^AV@Kߕ6edFyQqlT L*1=i7sr H1ĽY;:s:v)ߌ%ىSe~;n^c 7ls hkQA6ܲMz \Ѕh>y5IQ!,ʥHв!'Q13܊6IJFGP(p I=K,ȳ1PzR5MmR9w[ Qm(GPqrf?D&!s+WZxʹϺEw7l-3p~\+϶gI)—AiZ5]#AxLQtȜA6W;MqQf˶̯9[CR%)8p|ӏ87QV*eW DNЋ\\)p_04qxUГ.&|ԨvY.xqt촢Б$CT❬g%K5$ilM5nXC4Nz۫UV`FY]M)&<>p@<넙V[mE\|WL֡w&{KTS?0 4I%ivK1U4t51Ed sX;kǘ\lj<|'KbψWin*,HPg>}xE~g5) AlYO}ӳUO'|14F!^6,Xw,YY,k-pdd>q1pt[.RA^ֿqʶ{IxG]{4ILM4h~ Aމ>:5{^VN&r z l33Eg:G(\H;# HFBsMA9+!H.}IF`Xax3".n+'pS ՁdRt:sM4R!޲I n%u@΅6ɲGF6⒙nzwo͌p{i)KaPCk4|ۀv1hͫ 'Eeߞ[]n *垰"zWmɃh){˗؜KֺC!b̯k\ U$"u=o=!4ՃжxcxVܝg+q>ב9/fA[z⅛2x"DF,l-Z_-۰cā=P?+Il;2 \E4N mZ5 `K޹{.Q{.0'&m0nY'Ԑ5m|Ti5Z5Io9MS. &vO}6.qx. h{ jAu06Ne'_-[*e&ZG¢RkB8U-"*f5𩏹ĥ2٦g|Tɓĭm䴛fhعq$a*GNib)&O}$ 7(>D% _T!e=qI.D@B8x6m KDDetAݮ6 wbN>Y*8*Mo$ 770I"G@='. }h @p?DVhYI\qkc0db%oC&5W9IƄ$ON">ɁaWq%t p^hS,}/88y-no.yn9q(;h-t+mRyp|& 4?~+hoُwv( 2ƚw|d6K=` ۀ98wƹ;uӸ @`xSJ(Il%De:,uh9.a:4_΄ Nm(pM8;70Ct*:T1KXD7P0 9G6qߝm8Scp"%um|>L2H*Ma qbWqczK |3:Yĭ91$H<*)YU*$+T(AB }@} y`>! h ܊w}vsM$o9л8Z9ԧ"Mo^flj˶y48}`NGMps1_%ٌo!07#fzIt'2oېHn"yvo}hNcŌ}G-DZ ֯wzQzXUSoNs_[4&2F˻ђm'^FDl?.٬_\$F6,dB4GVnĻDdۀ}IjMnFO̍9 )!e~1ogP_6m4)Uq KIBAWܴ X Wv2YzͺtN~2莜S yLkͰl.'95P* 2vۗ=m P&O f~ٯ1-wX b=.P'5+|@w˅IZvŌ@^bAaȐ0 ߘל༾y˪u~@]E['$rpak]b"NF9Iw ' qg U930*=(Zn4bդnF|;"9R}W"DMb<b05:hv_x b,%BWV籴Gh|ἂ6\\B`XUz>t5)[xz +ec TJg+{Mmc$3~גm-R%c94 XJp1f+66>n-kbJt$+^H2Ƅ'O$mo"-'ݽnys4fLLLOJv݄s8K {]#j.PqeκI?5uV5FUkUkZ oZVuԚxvYlB|nZe wǫ@%K/s #y6$B+lYmB6O<;sX~jWk嵥z{mam}m _X_|6Y^Z[X^V񆵥2Z ڼP)^ǵo2-n# U la&C[yw_;$a^!{&r1덪pS}d3r4O'#ܴd(L$d zI⎷AfDust;I{1~iպ3UN'v>$UR!O`%IF QtmJm./[Nm)%u>L5۰6y%lJ'$!y65=csSSei_c$NɂlM#ۘ"GR%@{J/ "VZ%#h3vtts ɩm[ :7#Ed=Aa:'|OrH CeFg NKj%>CULddXc}\s3U:=l§v57128v6X '9ؕ> `U>P;"2e9+s[ >z5Xm;*}IB9z EҲכqՓ' T 9d8{n)ILj]odcGLW2 TIJJT`Srؙ܄][ډ_`+^ɏ9FW'iV^о(x~"[aKU|rIX0={Mf0/=݋%Ϻlj dN 2fTgf>V1Js\ɘIF7Ta9K(:3_۝ 3!^5Wr~!eIir%%) ?c?I$#me[5L:81?@e$ϓ['S_zPǩdm+1<D)89x@Mr%p;p*?DQ.$q;U2fqIZmA$n JFaޛ58)RS3H6Ay%՟ pK3m?nkR%L՟d{ +9Xۍy%3; Q˄e>5&6R%c"~nI. y+SLxI^W( TbHpD֕ ؙnHZyILȇ&SIK7?%MsRM>de$>*s'owjB %a#m=ǃ?&]o>.ANgW${Zv楎DDMv^exXiξ,6JR;/Pay$P'&;{m' x*F)*I''"k`& چ5*l;}5dT%){+Paalй$mbK"I^ImðE5Xrl PX4(Kص _r?'_YH@N<^ښ$TRmui2LR >ɦ'#ddsc{,Uܾ}y2\dv:n;ò1 8XԵX`] oiP bRi:n99kCI)lv4!u;v"WTHu a*7rosG{vFa{P阫Q*{#.*롚Le4emj_mp$2_.If ;"|_/엟_!U:"r⓴JFg+d1,Ie֭OסH7$HD-y\b2`bg*?-F%rG>V2b/w9+/vae vpx:!w3U1,V,9_5FBх5oS?%)jPQ zRMT7#m*tD!uAW&)/Ip3hʃϗbīOhrEn]c@N"ԍ!o#/yd OGS&_ۡ6nz6i6aY?*Kil'N?^<߷{o)T[>6(Amnژkm3hO&>(Ǵ2GD9ʶQmt'~qR$)qrw=IFy%^4)ЎKtvLoQ(足Hۻv;l9 尞Sw:0 =)7pNZtR #`K/X:<ܚ?vh 0;s'iuaE9Pw}[EF ;0[!OsllF 3 c6lTg%jB+<>{d)sv8k/;ta8'8Mt̓'Qַ.ķWNZ#BQ,AYܮ'ký4Bͮ}JN!>KT"N #NK䩒dW񾑯xFtHXx)]Y@>2z4.ێ>MkܫIWwmT9&\qZjFM@N6GM'ּk5iLBwtL~1#^R 'myZb v&Ex mmJLԑn}NӉ~$pG|os'ǘ.9iZvyIbux ~BfoR DtNKtJbDܶ.@&$$ēT 'I{r%Byസ2b4VG3 N{ep"(ş jVre ./8b#SdxF1(tmݘ3YI#TO%f h;krʅޗytBxSe[|f57pGkE>X)ĤK2@&Eg{#Ť꓌1y}5۵/;hs"dNeucPż*kZm ;)e d ݮ3~_Xa gIL"5۰/y`Z@eo}],vJb3kJ*r94Fb)[l|/zavq%F:PUQ(f)ɑlqU| XIxԔe݃3|ptiRK-ͪ9 {ǽIK^;۹wMicN % '{$Pyؗﴏav~ܮIm/X曷|SWRpjo,"C# *9YwsQ-N?)EOMkֽ?`!RmVA+9 ^}G{>}a??ڌCG@NVܘ랱/|ҍ (-Bgsso_|Iޒ5=D:K5[H"krZShSkPzzo[rզC|m:CT%I ڦtlESM6/? #5Qo?}:g7qܜ-a"\jx_҄epKIH앜4۲-aA[SzpBޠv뗧?l^nA($\!ޮOOO_]]ps$CP '>!F]=) DTĜ)_nā;V@[VICװA4d4I‹(S:h8D+}*:!z1B/W׶qx_-alD};P 'IƽGJo,j6wvUףP}7 ON?-tO4 $Or9ڦl+nB͝Z! FBnm"]>Ux3`=+yz2?[-W$A>br$6I̶lkPTUz߾D.o.uhp" ~ .:PYϓl3̼15g̔t;pjxXsT ƣY0XZaYq`mUUj!w|o_a7m(nJ̯mc$oCmW+]*,㭱bas ]bg9/иU<}x~~㇏x׷ؿotov'n}}Z>㾖t@eU.t{ׯM{ نiP۩yerļ 6 = 7RY({=\)Slo[ůWo_><~qxI-_֏<GgBg%E>nQ{!p䐥(5IXp;Fzil} F2K\[ww7ӪVk-\,wÜ.jpqRl*ؼyyܐ.}^mS6wUQڰy p^y~t}<\BitkYdn{=w﷍DNٵnPY,x37w U,V5bHvomL^\0yw8@<8;AWA6 xMo|yt<3M_z7>is%/ \8cRotAqeg+ÛϪ7P،p1d^Uu`0!ػFmggqGwU 8;A`sg`i;O>v0j 2dُXmzjzj측؅}漈{xrvK[YWRnl_ճ_:]6Ges:]kM+&O/^l>z%^ذ'e= )Xq;j=&bm ޑKj1a0H{ lZF`˵a_2cGӧxdXه\^Cr:b68<Fn9ߟ z"6n}svꦰ (}K Ax$z ٩R[; pYz{}س7a2ITv2nl9Tq__(u\ƿMo̳;Ń dûuvSW;z1ƲUU>;X}iqFk{{VJ/ƕu.T3ίB*Z$&: Ξn yT'a#7f8jfhV{j>\7[\=ʎ$>:dZfh$f VoLҳ|zx[TֽoKɒP0~;{k fxOI.,ɼ6o;6J`3I7.Y(,^G 0LTJ %cT9ؔwW@>:ۅ _F[.LIk؂q-ԋS.SM݆Hwr}U!\?Rmt$3 QFOO1ilpX,J0^q2/^D _2xX'~?!S!rZ."ժE ǥn ,SH|x lڗyuwvvl~Wm&mhiDGm¯.tա;Db\@6[xz[nZkwoB>>GWi(+EqEG5lί !,Ӌ6+M52i-"MhB~w!jBCll0Ppva|3 jm&$OЗȪd/9~Ίb7hU g߃҄?\8y/O{h9ls%&W<$D[DCV=|zÇ^M؈?o]lOW1ze}$MI K #Ֆho pZ߀ӲQ{S=ڪ-l>}xp a s+g{ע:ִꉺ.3%a7hVwn;Z\H$/h{НTaYYv}o*'__}{WC`_M:m`;R2׬S5s`YRͳG&e?߼9ۣ/P\DZw[&n*yޡuR`Fi%?-`p=я~kY;WB:ʝaх?ql|Vl\QҀG]mN{ TvDz?2?9.n8nnށ-p?_Gݯ?Ni3&%KV]󄶆!3%aqsk 5TzNztӃ˟z3H|8vA\zvGS2Bde&>IrdtmP!!#8n&<0SW6~[ކ :s͆wKqیkM:O'#xR2tfgʢ-r;V G/&&8f mI& Ԉ)'\ܣ v*s8\ w#y0ffuB(7xp2uogUҿW9+ԶR0MR0DjS \&s8s>vk>x` gJ5yQ[MIJu-n65Eɧ& COeLlIh jbQW&qD%+Ť!>(Ԏ]~L4p&s TZxD:G2Y*)@Q(GPVفkWy/D / *#$l Zwؠ9QUl ˜o gl&cc5<)Cu`]ڃUh_c`q(Tц^3p8kU'$FtdyW# 4䔻vMٻzyJJaw;GF{T(@I@'yÙfAG6BBzƖ}y6ɍ6{&G2*6=_pvq WPXD[6xIkJPL{niHlA%h*CG=D_-!ECZ34SP<$"uJe$&kO;A}sk 1WoL;2(/*% lӛy>p[{a|I\'t0s ÙOa8AL'9qGR $OILum춤wJ\UM|OėI$NH8OXTb3چ0mvnwK\Hz=Ws_<P+~m&i‰2"pdQPj;t~l2=+qT=h'Uuۈ*A|zc6zcvJfm6\KU|?{7%ui n ~>+V(^cmeל@ׂZ I4voc5ݠvTDQ`Ѷl!\G5CԙP`fi$_"&mVۨw4—4T(0hV*çF)R`Bі")@Z Eij(@h# EB[Zv6@Z Eij(@h# E-@\]R>v5j{kwws#VXF@nXK7Qbi@C[05q _dc]/|ֲQZ _CfsX5Jዥ<3y4y i0ڒ{,G{5FnZeL{ZBFJ 4J0*w֡Kg m{lD: Ӂ:4JEvkTlg2~oCOfO D[(x,HkxNk>ZٚNA˿P$,9X#aܤzBLbur-ua5bل{$)5FmgTrܭúۀs7@ĬN>M>l43mkvw-65$c(RFJC:!EI RsmܲjѧN6"40%\K jJ&.WK} t'.KhۗS1uǧ[Ԙ({dzT746m< H&ssʰ@}u%`7Oh07 l2;}˭ap5=sƽt1WAE"^N\ rf;16Ta FS/:hn V v6е Dk,d c.B/Kh[/`.O@owN$ծO-hlΊEl:Kn 998$ל`Id~95Ci^3,=bp¤P F|(h~x| @eYmR^yTD}VIn(qމSM*.ۢ3>]bX$t@Ilkhi`Rn,v$-\ QxQ šo~Ii5:z kuPm&r6Dž8-@;oO0S7MDB'Kn2-loԡ$ؤg"b]Rj9,Ju:Ȧ-G+Zq3Iuv QIs_pZ3V2kB9X;oJ^l{JтIHE1Bh X>w*,DH0 DڀNԖ* '#*Okpډhʼn!ֹIW2S-9xj Z.݌p+ީ>㛎0{dFـ>Dp~p^NLr p xs4 2OGڀ*+ ^Yڏ8Ublr8mVN"6]e7 8ǔeN< 1K6-g#ZJ{I@` $S"1e;a17 (,j>7.36>2*R`η  M|3㍎zuJʮe-9+ڈ}F@e0zʺQD^9oȡ2b1fØfsl>JkSf K(6sbN c">|/T`򂽄 8eA G=ڬ^y-zzji*厚Q0Tѫ7en8VMkWqVoYڮnCݫ31v78G| &a`NoRjpL p7n~T8Cg4ڈX[VEቩ_w%17x- ]Y3P9I0_ ބ; l*q1Ĉ.4Ne)mh/uThmh 8کB@)/5|_ᯎnx(h gCC(!7'ˉSm>Ԗܜpঃ=6 r1 x]^>PHN[bzN ծh<(Ghʶv_ٶ'n2!ڳ%UM85?Fmtj=8=\;V0 Adhk|m4a iW+=8i!Ogtt~-A nN w,C_iOQSwg8?g@p-xY}XX=}y5O15/9*HA͵^S gSBhJEl [j^ eA.!+'AsOz'v *@'*5;[^ASBb?8ŧ t >H T-B2rv9SIPEKl91qLJo6߁\ˀSarl9Q9XeNMPQsʔ' 7L17 FۅD.s).‡6nТe~ A9=6$("{&d UБw'8̈́6ؼy)hO3N-HGdDC8D‡[ԤÚwE6~ITT1G BcSQ&yZ̛tڽVke\.0(]8;2pksPXǏ6 Gh_YhcZ;#n@v斝`J [lP*.!tdeA*`fl:YyNh }-mL`lg֋@Cr dlSQlw(;DxUeNEa4te.vSS6RЦsv쯍0@g̀[aI2)ž2+n+71:q)~ً[MҖm57B[(yG"pilVTM6ƾeް{=j &/SA^5 ^<^l_M_M +zʁgQf讖J b6AWt8J\e*' ȂCUc{Ip mTC0e>#YQHG i8JN1k_ F(wt<~Ądנ 's8܁Vw$geUhZkY#[P7RC΄>I ) paGwHm р+,G,zGpF8hs Op>V㈕:{h3-'=*] %lЅ) ]6+%Iaj$ % +\07L1$uǪ"V~)&ډ({<],9y9#'V#hJTƽ 2KYЭlgHˌXxIweci'e'xjLm \VGbڑ'Sl?-1y5 zRغ)E3ꥄg"MJםǶ5 0>dE 2^Q@hd.vM%p)Jff 3%-߯;PXobVGmiQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! ڈiQЖx(miQ! KۻIENDB`<( / 0DArialngs/(0(z[ 0 DTimes New Roman(0(z[ 0  DWingdingsRoman(0(z[ 0  B .  @n?" dd@  @@`` "0% 4 RV  sm=/  `r$ 1=<*I؜Ui$b$mh5g\K cϩbnir$fL4³@1inr$M-*chHHi4oR$欯94!f ob$6~Gϯ3u_s|q}b$QW=368dfc $0e0e     A@  A) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||S" 3@wR ʚ;m)ʚ;g4LdLd@z[ 0(ppp@ <4ddddl 0p/ <4!d!dl< 080___PPT10 ? -O =      Object Location in TapestryK%  Is This Always Optimal?K%        Optimization 3: Local Surrogate K %         /P   $  ` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@,|?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>> VN(    6  `}  T Click to edit Master title style! !  0$  `  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0(   `L  Z*strib@mit.edu   04  L   ~@*IRIS Student Workshop  8/10/03!!   0h   `L  @* n  VA޽h ?Canvas 3380___PPT10.@1, Default Design 0 z`(  ` ` 0pG  P     R*   ` 0L       T*  d ` c $ ?    ` 0G   @   RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S ` 68S  `P    R*   ` 6Y  `    T*  H ` 0޽h ? ̙3380___PPT10.b`~[c   0<(  <8 < TL  ?"6@ NNN?N`P vBOptimizations for Locality-Aware Structured Peer-to-Peer OverlaysCC  < T  ?"6@ NNN?N@^ QJeremy Stribling strib@mit.edu Collaborators: Kris Hildrum John D. Kubiatowicz The First IRIS Student Workshop August 10, 2003Z #0P   2H < 0޽h ? 33___PPT10i.-`+D=' = @B +U  {CsCg@@B(  @ F `F  @ `F NB @ S D  Fn @@@  @3 #" `F H2 @ C @H2  @ C /WH2 !@ C @@H2 "@ C F@ H2 #@ C >@ H2 $@ C E|H2 %@ C BH2 &@ C !H2 '@ C 0 2 (@  A))?8 <20%  2 )@ PA))?20%x : 2 *@ PA))?20% K 2 +@ PA))?20%2 ,@ PA))?20%3  2 .@ PA))?20%NB C@ S D : NB D@ S DNB E@ S D  NB F@ S D  NB G@B S D ZNB I@ S D->O NB J@ S DG  K@ C xx xaxaK@ 1? v` DBerkeley 0  2 R@ PA))?20%BNB T@ S D  NB U@ S D_ >f @@@  /@3 #"  s H2 0@ C ̙̙@H2 1@ C ̙̙/WH2 2@ C ̙̙@@H2 3@ C ̙̙F@ H2 4@ C ̙̙>@ H2 5@ C ̙̙E|H2 6@ C ̙̙BH2 7@ C ̙̙!H2 8@ C ̙̙0 2 9@ \fA ))?Dark horizontalPw2 :@ \fA ))?Dark horizontal.2 ;@ \fA ))?Dark horizontal2 <@ \fA ))?Dark horizontalFB =@ S DY8FB >@ S DFB ?@@ S DNFB @@ S D.FB A@ S DwBFB B@@ S D2 L@ \fA ))?Dark horizontal.VNFB M@ S DVN N@ C x xaxaN@ 1?2b ?MIT 0 2 O@ bfA ))?Dark horizontal FB P@ S DO. F  J @   JFn @@@  @3 #"  JH2 @ C @H2 @ C /WH2 @ C @@H2 @ C F@ H2  @ C >@ H2  @ C E|H2  @ C BH2  @ C !H2  @ C 0 2 @ Z3A))?Light vertical#  2 @ Z3A))?Light verticalD c 2 @ Z3A))?Light vertical};2 @ `3A))?Light verticalIh g& 2 @ Z3A))?Light verticale # 2 @ Z3A))?Light verticalIgcNB @B S DI& # NB @ S DI I}NB @ S Dc & # NB @ S D# NB @ S DM 0v NB @ S D>  @ C xħ xaxa@ 1?m R?  @Rice 0 FB Q@ S DG FB Y@ S D@W l P  n@ P,$D 0~ k@ No?P @ ~ l@ No?@2 y@ Hv @p))?" `8`W,$D 0 z @0  @ @ ,$D  0~ p@ No?@ ~ t@ No?P0`~ u@ No?@ 0 ~ v@ No? P ~ w@ No?p8l Wp @W,$D  0 |@  0e0e    BCxDEF   Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||!0`?>x@  "`P  }@  0e0e    BXCDE(F   Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| X  8Hh=KW @   "`X  ~@  0e0e    BU C!DE(F   Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| U !B *YB90PQ%! @   "`C/ P . @  0e0e    B0CDE4F   Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| 0| /^+H/3P0(G^5X @    "`@  @  0e0e    ByCPDEF   Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||97=XyP@  "` A( @  0e0e    BCXDEF   Ԕ 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||IqhX@  "`p Wp@B @ C Dw  @B @ C D ` , @ s 0e0e    BCcDEpF0 @  ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||Uz^gu_!lBW;x?}  h - 6 c@         K ,$D 0 @ B       @ s 0e0e    B4CDEXF( @  ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||I>[ _iIa Q44!T$d@        ,$D  0H @ 0޽h ? 33___PPT10._,+Dx' = @B D3' = @BA?%,( < +O%,( < +Dt' =%(D' =%(D' =4@BBBB%())))?D' =1:Bvisible*o3>+B#style.visibility<*n@%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*y@%(D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =-s6Bwipe(down)*<3<*@D' =%(D' =%(D3' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =-o6Bwipe(up)*<3<*@D' =%(D' =%(D9' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =-u6Bwipe(right)*<3<*@D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*@%(D' =-s6Bwipe(left)*<3<*@+C  36+6crD5(  DD 8 `F  qD`F  N `F  pD `F NB 6D S D  Fn @@@  7D3 #" `F H2 8D C @H2 9D C /WH2 :D C @@H2 ;D C F@ H2 @ H2 =D C E|H2 >D C BH2 ?D C !H2 @D C 0 2 AD  A))?8 <20%  2 BD PA))?20%x : 2 CD PA))?20% K 2 DD PA))?20%2 ED PA))?20%3  2 FD PA))?20%NB GD S D : NB HD S DNB ID S D  NB JD S D  NB KDB S D ZNB LD S D->O NB MD S DG 2 OD PA))?20%BNB PD S D  NB QD S D_  oD 3 rh xaxaoD 1? v` DBerkeley 0  >f @@@  D3 #"  s H2 D C ̙̙@H2 D C ̙̙/WH2 D C ̙̙@@H2 D C ̙̙F@ H2 D C ̙̙>@ H2 D C ̙̙E|H2  D C ̙̙BH2  D C ̙̙!H2  D C ̙̙0 ~2  D VfA ))?Dark horizontalPw~2  D VfA ))?Dark horizontal.~2 D VfA ))?Dark horizontal~2 D VfA ))?Dark horizontal@B D C DY8@B D C D@B D@ C DN@B D C D.@B D C DwB@B D@ C D~2 D VfA ))?Dark horizontal.VN@B D C DVN D 3 r xaxaD 1?2b ?MIT 0 2 D \fA ))?Dark horizontal @B D C DO. F  J rD   JFn @@@  D3 #"  JH2 D C @H2 D C /WH2 D C @@H2  D C F@ H2 !D C >@ H2 "D C E|H2 #D C BH2 $D C !H2 %D C 0 2 &D Z3A))?Light vertical#  2 'D Z3A))?Light verticalD c 2 (D Z3A))?Light vertical};2 )D `3A))?Light verticalIh g& 2 *D Z3A))?Light verticale # 2 +D Z3A))?Light verticalIgcNB ,DB S DI& # NB -D S DI I}NB .D S Dc & # NB 0D S D# NB 1D S DM 0v NB 2D S D>  3D C x\ xaxa3D 1?m R?  @Rice 0 @B RD C DG @B SD C D@W NF P  TD  Px UD Ho?P @ x VD Ho?@~2 WD Hv @p))?" `8`WF @0  XD @ x YD Ho?@ x ZD Ho?P0`x [D Ho?@ 0 x \D Ho? P x ]D Ho?p@B eD C Dw  @B fD C D `  iD B     , jD s 0e0e    BCcDEpF0 @  ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||Uz^gu_!lBW;x?}  h - 6 c@         K ,$D 0 lD  0e0e    BCDEXF(   p 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||y#E{G8PY  ` 0-o,04Fus@       "`Hg ,$D 0J mD  0e0e    B0CDE(F   p 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| $<$ 7p 0 @   "`0`,$D  0  nD s 0e0e    B:CDEXF( @  ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||I>[ _iIaI4,!:< d@        !,$D  0H D 0޽h ? 33J B ___PPT10" ._,+D ' = @B D ' = @BA?%,( < +O%,( < +D' =%(D' =%(Di' =4@BBBB%()))D' =1:Bvisible*o3>+B#style.visibility<*jD%(D' =-u6Bwipe(right)*<3<*jDD' =%(D' =%(D9' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*lD%(D' =-u6Bwipe(right)*<3<*lDD' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*nD%(D' =-s6Bwipe(left)*<3<*nDD' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*mD%(D' =-s6Bwipe(left)*<3<*mD+   '(    <x   : Discussion %  Z$* )?"`: ,$D 0 T Metric: Relative Delay Penalty (RDP) Distance through Tapestry vs. IP distance   ' ,  *6  N  )?"  > Why is this a problem? Latency, efficiency, availabilityP %  $  Z * )?" R ,$D 0 g Solution: trade storage for low local area RDP Will work in DOLRs with a pointer indirection layerF1 7   '7A"H  0޽h ? 33\T___PPT104.+saeD' = @B DS' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+p+0+* ++0+* +X* - JB'@ H2  P C E|H2  P C BH2  P C !H2 P C 0 2 P Z3A))?Light vertical [ 2 P Z3A))?Light vertical; Q 2 P Z3A))?Light vertical  2 P `3A))?Light vertical] v 2 P Z3A))?Light vertical( ] 2 P Z3A))?Light vertical ' NB PB S D] v NB P S D] [ ] NB P S DQv NB P S D  'NB P S Du 2 h NB P S D) / P C x,M*xaxaP 1?"  @Rice 0 ~ "P No?/ [ ~ (P No?   = ~ )P No? C  ,l  ; e 9P; e,$D 0TB P c $D ; ( TB P c $D  e    ,P#  $ ,$D  0x *P Ho?  x +P Ho? `  -P s p0e0e    B;CDE(F @    8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| `U94 ; @   o C,$D  0 .P <Q* ` GOptimization 1: Backups% 2P 0T* Pp 4 Redundancy: Store up to c nodes in each entry c 1 nodes are backups/    :P Z`* )?" P,$D 0 T A simple optimization: publish to b backups Limit to first h hops of publish path - '    ;P Zn* )?"P ,$D 0 k Result Nodes near the object more likely to encounter pointers Cost: b*h additional pointers per object  c  @          n P VA޽h ?Canvas 33___PPT10z+'D' = @B D' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*:P%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*;P%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*+B#style.visibility<*9P%(D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*,P%(D' =-s6Bwipe(down)*<3<*,PD' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*-P%(D' =-s6Bwipe(left)*<3<*-P+p+0+:P* ++0+;P* + @$(  $l $ C DA,localopt_backups_90th,  $ <Ћ*  GOptimization 1: Backups%B $ T|* ?"6@ NNN?N @Experiments run in simulation on a GT-ITM transit stub topology $A?H $ 0޽h ? 33___PPT10i.P+D=' = @B +' " '.X0 x(  Xz l P .XP,$D 0Fn @@@  X3 #" PH2 X C @H2 X C /WH2 X C @@H2 X C F@ H2 X C >@ H2  X C E|H2  X C BH2  X C !H2  X C 0 2  X Z3A))?Light vertical [ 2 X Z3A))?Light vertical; Q 2 X Z3A))?Light vertical  2 X `3A))?Light vertical] v 2 X Z3A))?Light vertical( ] 2 X Z3A))?Light vertical ' NB XB S D] v NB X S D] [ ] NB X S DQv NB X S D  'NB X S Du 2 h NB X S D) / X C xĚ*xaxaX 1?"  @Rice 0 ~ X No?/ [ ~ X No?   = ~ X No? C  TB )X c $D ; ( TB *X c $D  e "X s p0e0e    B;CDE(F @    8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| `U94 ; @     o,$D  0   (X#   ,$D  0~  X No?$ s ~ !X No?$  x 'X Ho? J  #X <  ` Q!Optimization 2: Nearest Neighbors""%/ $X 0x* Pp k Observation: In Opt. 1, choice for backups is limited But lots of nodes at each level, many may be nearbyH75 )5 ,X Zh* )?"P,$D 0 Y Optimization: publish to n nearest neighbors Limit to first h hops of the publish path . +     -X Z* )?"W ,$D 0 )m Result If n is large, essentially local area flooding Analytical cost: n*h additional pointers per object  e      =          n X VA޽h ?Canvas 33f^___PPT10>+qD ' = @B Dm ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*,X%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*-X%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*.X%(D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*(X%(D' =-s6Bwipe(down)*<3<*(XD' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*"X%(D' =-s6Bwipe(left)*<3<*"X+p+0+,X* ++0+-X* + P\(  \l \ C DA,localopt_nearest_90th, \ <ܗ  Q!Optimization 2: Nearest Neighbors""%5 \ T* ?"6@ NNN?N s?Experiments run in simulation on a GT-ITM transit-stub topology@@H \ 0޽h ? 33___PPT10i.`e -+D=' = @B +4  o-g-@_lH ,(  HFB 6H S D  >f @@@  7H3 #" `F H2 8H C @H2 9H C /WH2 :H C @@H2 ;H C F@ H2 @ H2 =H C E|H2 >H C BH2 ?H C !H2 @H C 0 2 AH  A))?8 <20%  x2 BH PA))?20% x: x2 CH PA))?20% K x2 DH PA))?20%x2 EH PA))?20%3  x2 FH PA))?20%FB GH S D : FB HH S DFB IH S D  FB JH S D  FB KH@ S D ZFB LH S D->O FB MH S DG x2 OH PA))?20%BFB PH S D  FB QH S D_  gH C x`*xaxagH 1? v` DBerkeley 0  >f @@@  H3 #"  s H2 H C ̙̙@H2 H C ̙̙/WH2 H C ̙̙@@H2 H C ̙̙F@ H2 H C ̙̙>@ H2 H C ̙̙E|H2  H C ̙̙BH2  H C ̙̙!H2  H C ̙̙0 ~2  H VfA ))?Dark horizontalPw~2  H VfA ))?Dark horizontal.~2 H VfA ))?Dark horizontal~2 H VfA ))?Dark horizontal@B H C DY8@B H C D@B H@ C DN@B H C D.@B H C DwB@B H@ C D~2 H VfA ))?Dark horizontal.VN@B H C DVN H 3 r*xaxaH 1?2b ?MIT 0 2 H \fA ))?Dark horizontal @B H C DO. F  J jH   JFn @@@  H3 #"  JH2 H C @H2 H C /WH2 H C @@H2  H C F@ H2 !H C >@ H2 "H C E|H2 #H C BH2 $H C !H2 %H C 0 2 &H Z3A))?Light vertical#  2 'H Z3A))?Light verticalD c 2 (H Z3A))?Light vertical};2 )H `3A))?Light verticalIh g& 2 *H Z3A))?Light verticale # 2 +H Z3A))?Light verticalIgcNB ,HB S DI& # NB -H S DI I}NB .H S Dc & # NB 0H S D# NB 1H S DM 0v NB 2H S D>  3H C x *xaxa3H 1?m R?  @Rice 0 @B RH C DG @B SH C D@W ZF P  kH  P~ UH No?P  ~ VH No?~2 WH Hv @p))?" `8`WF @  lH @ ~ YH No?@g  ~ ZH No?P~ [H No?@  ~ \H No?  ~ ]H No?pG@B ^H C Dw  @B _H C D `  `H B0*   *  eH s 0e0e    BWCDE@F  @  ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| ,+7  _ eW :%J(C @     + ,$D 0j fH  0e0e    BCDE@F   f ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||d`q9$P8%x  U @     "`D (X ,$D 0H H 0޽h ? 33RJ___PPT10*._,+dD' = @B D' = @BA?%,( < +O%,( < +Dt' =%(D' =%(D' =4@BBBB%())))?D' =1:Bvisible*o3>+B#style.visibility<*eH%(Dt' =%(D' =%(D' =4@BBBB%())))?D' =1:Bvisible*o3>+B#style.visibility<*fH%(+2   !! ,U,@!(  , , 0   ( , 0X" 0 gSolution: Check local node before leaving When publishing, place a pointer on local surrogate Occurs naturally on Coral, LAND, SkipNet In practice, storage cost is very low f*"$N(p`Pp , <x } OOptimization 3: Local Surrogate %l  ` U, `,$D 0N P f. O,  & `NB  , S D2  N2  , S  m N2 , S \ ] N2 , S PW N2 , S  .N2 , S  f2 ,  A))?8 <20%"A - 2 , PA))?20%  2 , PA))?20%7 ?2 , PA))?20%? I2 NB , S D-" k NB , S D)[ NB , S D A&NB  , S D3 | NB #, S D3  NB $, S D<p V ~ &, No? @~ (, No?  N2 +, S ̙̙R  N2 ,, S ̙̙  R N2 -, S ̙̙  [N2 ., S ̙̙` uHB 8, C D p HB :,B C D x HB ;, C D fa 2 >, VfA ))?Dark horizontalf$  HB ?, C D  2 A, \fA ))?Dark horizontal a % 2 D, Hv @p))?" `p-  B F, TDg ?" R  K,  `/ )?"?  Bx ms"  L,  `5 )?"\ g  f> x*t msB   M,  `_c; )?" <  g <= x*t msB x N, Ho?@   P, s p0e0e    BCDE(F @    8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| zS5GP @    "C,$D  0 Q, s p0e0e    BhCDE(F @    8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E|| 4m6CV 5hC @   R  ,$D  0j R,  0e0e    BCDE@F   f ) 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||d`q9$P8%x  U @     "`r  ,$D 0 T, NB )?" @ ,$D 0  Issue: What determines a wide area hop? One metric: if next hop is more than t times longer than last hop, consider it wide area j. ]   #)2H , 0޽h ? 33 ___PPT10.0+Ϻ;D~' = @B D9' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*T,%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*U,%(D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*P,%(D' =-s6Bwipe(left)*<3<*P,D ' =%(D' =%(D[' =4@BBBB%(E' =1B B`BPB1:Bhidden*3>+B#style.visibility= `B<*Q,D' =1:Bvisible*o3>+B#style.visibility<*Q,%(D' =-s6Bwipe(left)*<3<*Q,D' =%(D' =%(D9' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*R,%(D' =-u6Bwipe(right)*<3<*R,+8+0+T, +  `0(  0n 0 C FA.localopt_misroute_90th } 0 <  OOptimization 3: Local Surrogate %5  0 T_ ?"6@ NNN?N s?Experiments run in simulation on a GT-ITM transit-stub topology@@H 0 0޽h ? 33___PPT10i.`e -+D=' = @B +   P8;(  8 8 <p } ; Future Work %D 8 0   Automatically adjust t when using local surrogate Take measurements on actual networks Test optimizations with real workloads Evaluate the maintenance cost* 8 Z )?"  P ,$D 0 < Questions?  H 8 0޽h ? 33___PPT10.p=+WDO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*8%(+8+0+8 +  0 pd>(  dX d C `    d S f ` @   @,Name / Title Berkeley -> MIT Joint work withH d 0޽h ? ̙33  0 hR(  hX h C `    h S Ԗ` @   T@Techniques I describe are more or less generally applicable to overlays that are locality aware and have pointer indirection layer To ground them in a specific example, I ll be discussing Tapestry (DOLR that publishes pointers to the location of data instead of data itself) 3 sites with nodes in the network Lines represent Tapestry links between nodes 2 replicas of same object Node at MIT is the root Each replica publishes to the root using prefix routing, leaving pointers at each hop Node at MIT searches for object, hits root, gets sent to Berkeley replica Node at Rice searches for object, hits local pointer, gets sent to local replica But is this always optimal?H h 0޽h ? ̙33|  0 <4l(  lX l C `   4 l S l` @   First, consider the optimal path from MIT node to replica it finds No matter what, it has to take the wide area hop, which dominates the total path length Extra local area hops when finding the location of the object don t matter much. But, then consider the optimal path from the Rice node to its local replica. Since the optimal path is just a single local area hop, the 2 extra local area hops triple the total path length, compared to the optimal. Is this really a problem?H l 0޽h ? ̙33  0 pX(  pX p C `    p S Ϝ` @   Z3 main ways this hurts performance: - Extra latency on lookups impacts performance of app - Extra hops uses network resources inefficiently and decreases chances of finding closest replica - If extra hop takes you off stub, but you re partitioned, you may not be able to find the object even though its in same stub Need way to measure the efficiency of the location path with respect to the optimal Common method is RDP, ratio of the distance of an object through Tapestry to the minimal possible distance (i.e. over IP) Also called stretch So we solve the problems discussed earlier by trying to lower RDP to nearby objects Issue for many DHTs/DOLRs, not just Tapestry Solution: trade pointer storage overhead for low local area RDP I ll present 3 optimizations that I ve implemented in Tapestry that do this Could also be used in other locality-aware DOLRs given a pointer indirection layer>#H p 0޽h ? ̙33 0 _Wt(  tX t C `   W t S t` @   For purposes of fault tolerance, Tapestry stores up to c nodes in each routing table entry Primary vs backup We can use this redundancy. at each hop on the publish path, also place ptrs on b backups of the next hop Only do this for the first h hops, - to limit storage cost and - because after a few hops, backups nodes are unlikely to be in the same local area as the object These backup nodes are likely to be primary neighbors for other nodes in the local area, so on the location path from those nodes Analytical (maximum) cost, actually less in practice, see paper for details Diagram: - Backup nodes - Publish to backups - Able to go directly to object, with RDP of 1,cPH t 0޽h ? ̙33 0 WOx(  xX x C `   O x S ` @   1000+ Tapestry nodes, simulated on a GT-ITM transit-stub topology Each node publishes some objects, everyone looks for random objects Graph shows 90th percentile RDP versus how the IP distance to the object Analytical cost given in brackets In the local area, publishing to backups can have a big effect on RDP However, since they are constrained by their ID, backups provide a relatively small number of nodes to choose from$H x 0޽h ? ̙33 0 0|(  |X | C `    | S |` @   At each level of the routing table, however, we do know of lots of nodes At the first few levels, its likely that these nodes will be nearby When publishing, at each hop place additional ptrs on the n nearest neighbors of the same level Gives much more flexibility Again, limiting to the first h hops for effectiveness, storage Can result in flooding local area for large n, which can be good if you re willing to spend the storage Having more pointers is always a good thing from a latency standpoint Cost: n*h Diagram: - Publish to n nearest neighbors (including backups) - Now most nodes can have an RDP of 1 to the objectH | 0޽h ? ̙33\ 0 `(  X  C `     S P` @   xCan get much lower local area RDP if you re willing to spend the storage 90% of extremely close objects have a near-optimal RDP, as compared to an RDP of nearly 20 in the unoptimized case! H  0޽h ? ̙33  0 ^Vp(  X  C `   V  S (` @   Our final optimization addresses the following scenario: Here s the same Tapestry network from before Now let s look at the location path from this Berkeley node It has to make a wide area hop before finding a pointer to an object that s only a short hop away! Availability problem mentioned earlier Disastrous effect on RDP What if we made sure there we placed a ptr on a deterministic node in the local area Before leaving the local area, check that node and hope you find itloH  0޽h ? ̙33n 0 .&(  X  C `   &  S 8` @   This deterministic local node is called the local surrogate root for an object It s the node that would be root for the object, if no nodes outside the local area exists Worth noting that in some systems this occurs naturally, such as Coral, LAND and SkipNet. One obvious issue with this scheme is how to determine which hops are wide area and which are not The simple heuristic we use is that if the next hop is more than t times the previous hop, consider it wide area We call t the threshold factor Diagram: - First hop is x ms - The next hop would be > x*t ms, so instead - Find a surrogate who is < x*t ms In the future, we hope to develop more sophisticated algorithms for identifying wide area hops H  0޽h ? ̙33O 0 (  X  C `     S \I` @   Decent savings in RDP, up to 7 points in some places But observed cost is far cheaper in storage overhead compared to the other 2 (see paper)H  0޽h ? ̙334  0 (  X  C `     S :` @   PFuture work includes: - Automatically adjusting t based on current network conditions - actual networks like PlanetLab - See how they work with real workloads (i.e. web caching) - Evaluating the maintenance cost of these additional pointers in a dynamic network And that s it. Any questions?o H  0޽h ? ̙33rx DA[Yipzz$!z:%K3!pVLVڥ0f ? |Oh+'0T `hx  Slide 1Jeremy StriblingeJeremy Striblinge195Microsoft PowerPointP@w'@@PV @Pn)bGSg  )'    """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___wwwT>w\t>w4'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___www½ý”¼Ú¼½š½½™üýý½¼™ý½™½ý½¼½½¼½¼šš½½ššŸ“™Ùü½“ü¼¼š™½½™ü™¼š½½¼¼“šü½™½¼¼ü¼½š¼š™™½ü½¼ýš¼½¼ü¼½™ÚšÚšÙ޼¼™šüýÙ¼¼¼¼™™¼½½½¼½™“ü¼½¼ý½ü¼¼½ü¼½¼Ùü¼“™™½½¼½½½¼™™Ú½™üü““š™üüüü¼š¼½ý¼ü¶ý™™½š™š™ü¼½½™™¶šš™޼𽽓⼘½“ⓓüޙ™½¼šš¶¼¼“  ¼š¼¼¼¼¼™¼üüšüýüü¼ýšý¼™“Ùü™¼½¼¼ü¼ü¼™üüٚ™½üýü™ü™™½½¼ü™⚓š˜üü™½Úšüüš¼¼½½½ý¼½š½½¼½¼üý½½½¼ýyÙ¼š¶šýt“½s½½ü¼š™¼Ùü™¼šý¼Ù™½š¼ü¼¼½Úš¼¶½¼š¼¼ýý½™ü¼½š¶ý½šü޽¼ý™™½™üý¼¼½™™¼¼¼üü“½¼šüÙüü¶àüü½¼™Ÿ™½ýüÙý½ޚü¼ü޼¼š šýü½½½½¼™™ÙüÚüü½š½¶½¼“½ýüš¼¼½ü™š½™½ü™™™¼¼ý½“¼½ÓٙÙýt¼¼½Ùý™üڙàšý½š½޼¼Ù½¼š½šýššÙÚ½ü¼¼üüšý½üýÙ¼½üÚ¼Úü™ ½šü½Ù½½¼šš”ütš¼¼Ù½Ùšü™ý¼¼¼ÙüÚÚ½¼¼½½™š¼š¼¼ý™šÙ™ü¼ý™ý™™½½ü™ü¼™½¼¼™™½¼½üš¼š™™Ù¼¼½¶šÙÙüÙٙ™½½™½š™üüü™™üüüýü¼šü¼ü¼½™™š™Úü¶¶üޙ™½½üüšü¶”¼¼ýüš¶üšš½¼™¼š™¼šöü™üÓ¼¼™™ü¼™üü½ü¶♶½½¼½ýÚ¼¼½¼½¼½š™¼¼½“šÙ™Úý½½x½½“¼s½ü½½™šÙ½™™¼ⓟ™™ü™šÙš¼™™½™™¼¼™½ý¼ü¼½ýü½¼üý“¼¼½™üš™ý¼üý½½™™™ü¼ü™ýü¼üü™¼½¼ý™ü™ü™™üⶼ™™¼šü™šýüšüÙ¼ü⼽½šà¼½ý¼ýš¼¼™š½¼š¼ý¼Ùš ™ ¼½¼½ý½¼™¼ššüٙ¼½Ùš™Ò·¼™Òü™¼ü½ý½Ùý½¼¼™¼ü𙽽ýý¶üü¼Úý™”½üü޽¼ý¼¼½¼ýÚüš♼üš™½¼Ù™š¼¼Ùš¼üüýšÙ½ýü™tü¼š¼š¼š¼üý ¶ý½ý™Ú½ýšÙö½™üö™¼”½½™™ü“½ý¼™™“™½ü¼™™š¶™üüٚ½¼öüüý½™ü½ý½üš¶ýüý¼¶޼™Ùü½Ùü¼½ö½½™ü ¼¼½½ü™¼¼t½š ™™½½½™½¼™¶½Ù½üýü½½¶½½š™üÙý™½¼ü½Úü™¼¼™™½üü™š¼ü½™™¼™ü¼¼ü½™“š¼¼¼½¼¼šü¶¼™Ùüޚ™½޼ü“üٙüü™½¼½½½½½¼ý½ý¼y½¼½¼™šü“¼ýýޙ™¼¶ý¼™¼šýŸ™üš½½½™¼š½ý¼ý½¼™½Ú½™™üýý޼ý½™à½üšš½¼¼¼ýÙý¼š“Ÿ™ÙÙü™½½Ú½öüýÙ¶šö½Ó¶ü½½™⽼½½š½Ú¼½¼“½š¼½“šý½š¼™¼üš¼½¼½¼üü½™ü¼Ù™™¼™½¼½½¼¼¼½½™½ü™¼½üÓtš½š½ü™ü½™½¼½½Ó¼ü¼ý޼š¼½ü𙼼½™½ÙÙڙš¼¼¼¼¼š½½Ù¼¼Ùö¼½¼üÙ½½šy½™½üý¼™½ý½üö¼½ý¼½üü¼ýýٙ™¼½¼½½¼¼½˜½½šÙ™“½™½¶¼¼Ÿ™šü½Úš¶ÙÙ޼™ýü¼⼘¼½™¼½¶¼¼™™½½ÙÙ½Ú¼”½½¼޼¼½™üÙ½½¼ý™Ù½½ü™š™Ú½™™™üšš™“™üšüüüüüü½üš¼š™½ü½½“½š¼½™üÚ¼¼™¼ü½“Ù“šö¼ö™ý½Ÿöüš¼¼¶¼½ü¶½½ýý™½ü™¼ü¼½½½½™Ú½ ¼½™½ý¼ý¼¼¼¼¼üü¼ý½üü™Ú™ü¼¼“⚟¶¼üü™üÙ½ü™ü½¼ý¼¼޼½¼ü¼½ޚš½½üü½üýýý½ü¶šýý½¼½ý½™ü™¼š™ý¼½¼¼™ý½š™š½¼½¼üÓtš™Ò½“½üý“šš™½¼½½¼ü½ü™ý½šÚ½½½“ý¼üüš½Úü™ü½ޙ¼àüšýŸö¼š½ޙ¼üüüü½¼™üýÚޙüüýý½“½Ú½¼¼¼½⽚ÚÙ¼ü½½¼¶՜.+,0    "On-screen Show  -sQ  A ArialTimes New Roman WingdingsDefault DesignSlide 1Object Location in TapestryIs This Always Optimal?Slide 4Slide 5Slide 6Slide 7Slide 8 Optimization 3: Local Surrogate Slide 10 Slide 11 Slide 12  Fonts UsedDesign Template Slide Titles (_Jeremy StriblingJeremy Stribling  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)PicturesY{Current UserSummaryInformation(TPowerPoint Document(DocumentSummaryInformation8