ࡱ>   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(((((((((((((((((((((((((((((n XcH-x2KfPNG  IHDR1cgAMA pHYs.> IDATxO\/Ӄ.806d f Bm2pe|2JxnYrZ–=żip&"iP E mL@HAjOU:s]U}}IhRqz,-iȡ=@` (DA 0Q @` J×޿p ]ҨvwwKPRqzOvxuWj$K_/~~vZ6--iȡ= Z%ST]ѕ;[[2024rg Lu0IA` ٺ{ɺ^mʟwz5zƃ;敨H69 \ۓ_ٺσ;{'j_߿'-n>'uYS{{{{gh:D׍nN~zt5W;[_bs%p;?xgk+o~y=[@+`pM֫GWivW7&WlSjhz//\l}"k^]ͻ;{Pwff"j ՖkSyh>ax&~Sy`B&g-< _duUNjTJHC3 h?R4 CL*9"_`@UEV])aJ_V}RjRߨMK+`*TkO~z-ĦeՓ$'Jnx:$hԱܺ{{GWμt-ު8{7ߚ/ְYHūyONεOװY[S*ru}w,Ρ7R3ߛ]kjd&sK_69 Z& モ/@G3X4~sV{G8-d-\Xݽ?>h~9M><2Vh`: %7>[pfG}0@I_\c͌{^zSO}0@Ig^:;>3_ ^{ʙζ}t k^?v2IX;~Sk7?ޜ|𝭭6o /97旷ghʵO//@ Pə>xƼ\|?mͭ`Rqzh7>|;? KKrhzV $h (DA 0Q @` (zڰ&Ъ7aTl0 V @`` :wt 4ډ7!Rjj0frT 4ZY4xߘǾͼ@`t i)DMUNMY7DN#---hֽjmH8@ SVEYh D6]:f zy?i+0Lʪ4JMDC$m|W MfIʪQ^r` vx:52P/6^uTk%@mnJ5HYV@Q0#]c'm@ttMӬFMuțP E-La^ 0zk2u4CSObGlSS-SS ---ԃbP|9 4łP[]qr@E00|bX4뽶B_}Uh+,$VBhևBMP Ĩzˮ{18 @Ӭji֡52@t@9Jhf=f4BSGAZkf=Nn(׼5)3vo < ?G550 F8>5e(Ǽ@!0ߙנ7J5@t*^8`j$k2揼3m H& #$(\@0>cCb"p> 1F0|>02o8B0@h=ch'5&8:m&h;;S=H` ~yy2@4xezG 1sy%y` z>z4G031>@XIoi֡ A#&μ-8}S)0)}a|(`w+q! 110Ib# &pf"ħ DHKo70>АO`L ?<>S 600L:hIF` .^ PdTE_¼@"Qѩf}a7@ P ymN}H4mn@`¥YOg`t1A:!3iֻeR)*敀к'嘿%ç;`W,Fȼ0l008ܡ@``4yÐ9 FG v-2 %!2]$̀[9;0T0{x蜏``\FKzQ N=6yc,0<00L:ikm?@<`zF o{L#=63өGK^70Zlz˼13- _fҬC9x1%zL*1y%`0`tcd{@9&;AѽE%㖁K65 >1 e^ 6YIWDBzFNxod0:4yx/*0T0':ufҬ7L&CSgz6 N zy?1_0{:uiΐ_W`x`B^$ =zJa^S'4 y ph֫9`,RfAhe1JBM#`Q2 C /+#A, $PZz>U KNB]T50?:u*Y.}'ҩS]f}ii)Pv`&:'{!5C]P?v? 0"u)ԬǹɻAu"`KXԥ}Gk=Tzg`NxU̧}'KkTP;e @bX2DZ@@7H'P/5 E/EӆY+1Ӡ@'`%B0-fRp=006:Yw$(v9 p0 m˿fMF1B&ҩC} ADT"L)``=:uB6~}`}X@u@j @57MDYT"|͕UC0 NhUq]}I_m m!r3/')P>3Y& d9ٺdzwN>wra3M:2fv'ee4++Tt^iP5jCU'`hzVu;ܦwZ~}'n2ƿLv<DYe XoGR-N^8Ц*GM%p̲RSܡJMzz*i= &jt(͊2zq?wTꨩُ\J`zٚrCU<)ڤޠU XH||f}z (!ؚJ4뉚"l%k*P%C|K1VȨЯQYRSSh1 :T:4_S0IAj;cM6z_'$5cxT˼RC/Wh`hzV8jlӟ:TSܞ4)Uz_' 3jWCJ8T &kLٹwZRYOt*~ U'ެ'TJ UkJIC mRoЪZɖh?1Khf7  _H4krF&eE U &>X[*ĤSW>n,:+xbz鑦hSCU+3 m7(̛?aE7>CO@5?}|MM=&ww?}TVj>T=u試E7IMAO y[Cs/gcQ.ӂ55Y~*5f8TeRSG*ZUX_=-ցiĸ)y*srvQ U kY#j֡!MUz4|Ԯ͡jԯG`Z&}Y'-w+%ʊZbcP_.%:50ǡjM U0 GvPWjUE;j*~MB+Ie!P:]EΎ!lSMѵ5jf`yb :Dv[YJI^]҇kP5 ZO ƂrHOk ITJ-+CLआNιZaiFש*>+ul)N^剁ЬC]&'({ĵF5e @*8 N=-Pj~o+A`HksjjU+oF|{7:yC U Ba,eSOB%vO+$C@t%h֙ǾM0Tb^ Bs ݡ֝_L$Ier2%Zm_\{7>kϟ5+G IDAT+5EuKKKO&.s{|»o^S//y9C ;Щ72s7>ʹwp(;j>|t[E2/Ty9 ivNIlz̹+~MNʅ@oE]ݭW7ii֙J#_΅:*:T]՚J/l~`.4  (GZ6Gӫ'<ʙ=<ɳvٹnN|E&U oEOYTzN>{r&/}o_ŕ ^( VICU!ߞ6 5u뷷npg^:O׵a 0teRչ;kKMl_|jٯZC5do |g'=y'oM?,W_ܸ|:c3źBJ~wം5,?:{˩~+8O890KW'?>CLϵwšeL=T45TZ?YI+? {7ZzJ }{i8̪]\;~~[ub@н]Ef=[<|~Zuk_lֻE&嬚l >~XzR)Icrde;X :EWZ8T:;yˁ*CtN.Z"a;WXkZ^^N5N>¤ [V79w3޽P玴3tN0:bDc1%Yy7>WWATT:C4GL*5+\G֎(%N>3,d.UYyN>O֩*cyꪩғJeL*QYJIRVxsZ;v'μt6@&$@4'o,v|꯯f?>gڬq,R fk9p~§UV&X3e?هHL<Pm 03ROM]Wsuu55ԤeyxQ7kުu}40TMTϡʤ ]=Xݯk)mǺ *wwUjRYL*ѾBCU韒:U'L*0б/Y˜Ћ۩*Qњ*QV;H(%&(ɡjr-ä0M5ݯէS'pj*)^+`=\s2D&u*-_C`Af_>d 'mLvkצ_qk:4eRJҩӹ憪}&htjtR~=^LwUzou {Y{NȼJM*U̓uꐡ*uTg{6TT! sg~'+8,-l'IrꯩϝuI']9߃&\xڬ_ǯnv$IpmgޑF3ٚR[xeOToZ@ZP:oL~vrov܍E`sN[woO~y'ʽN+ߕ8ݏ?I7^ݘw}I%*:x_~gTl~c_<~jk>y2TAP\ :SR,Uwcg~kyY:uq_J]VܤR˛/;xpV0"$m U+6ϣ<~ǯ2jjK__?(C> ]uXkV P7/wWYךUꨊJ{/o^xI~/n~okׯeC˹9WG0LMU~`BS/W;[[[wnK -,]K'oo5ׯBj ;s f:]ͯr>ydՃwʕ_g_כ|'Wu-CU U~ws˓=yO_o?O2/?''}%\rŗK+hC}RTIǯ6?hO|WNL'T>?Nx嬭[33{3QO-2jP'sTŨʑiy;[OhhqZtN, ɩjf<ċ7\`5YU<âOѩӥE18EsU32ٗ/jպ~qTI\mRCU];//|o&*[0tOo3-F\-}PWAQgTnY],|VًZcԤU@jju0x0aqFoNR)eU&o~ꅅשS UK=yw|ʑ+?lzP!K-P.&_GYz o1kaivy:U;L_b_]3TA$\M !:PaeUh޹yr[ UST<jjov_>׋oe_}2 m~JfdU02=AU8I{-I%5>b5uWܼ`O_^=zls+֔I% wzs{k]K5#Uњ;?} XK5B峯l9JfTS*Z;O_H~wswwwϞޚ2TA8`Edc1/J:uj1c^)Hp7-۷]ҩSRxCόq51_iyyyt`g9r=;S'ۼlhk˟y=|ӯI%T_S_M-O~Cw7>9~.$ L (0GzSM:uE~wS;d;̱k.t ɣUq\oMOtT3Nϓk*CY)eJ)ЪB#(܇k2R'e5Reջz믽(+PUb9&*7(.lC`KԈKHJ696>ê RԯBzyT"RUsMB_pV'uoNU.yR6:MXM%JNVV%j*6PoЪghE;mKs⬩D1[YUL RoЪ*Mg z]HEMAorM`hzVU;;':m6YVjvt[jI RoЪgzfbE_~^Vj;J RoЪZZ-kl) j*~ CU~0IAj@ko,jΟf-DJԔK)ڤޠUM׮_{SD=aPԨ]$I 3JtM%AUCC mRoЪQom:}7ٯ\M%nwD0 U &j ئ':uvL-9$C鱳8tjeE U&j%[<̮BΰUg"n-U)ڤޠU-4{y L*DMorJMɼP5݁hzVӞ-G#&=zMj+KZ#0IAlR-ՙ{m:}jRKU5 *] ZIZ(|YǪM66סoً՜?M'1Hf3T &an/ #6PTLUep9T & m9^jW9OhzoO?ajB)ڤޠUcvPkod ~M ZปRhuFOׄBݻbMU/jJ67hU/Fd` oMôdD0T0 Aޱ @ z &*;* A pvQ D L.> QVI~tWmntž!^1.I#$Þ@$f$9$ɷ%v Y"P/{0IjVqWb.% E#P&!^ J=TR` \20$ Luu`YNB'S L]` @E,Q#)- @] ʹ4!cgBF{xs4 DQchW`` @ͼ8F s` #Ni_p+@۬>s+@"MpF%}a@a٩Ae`9 6&šUyKs(꒱k7B(hC v$` t*@` P.@Ǭ2DKe<49Zcg DA0o]΁0o  "0 #E`* d E` d*4Dz"0, @p$ }b@0"ŽL7˿@N0ykw9YR`z̄ "0Y %ɇ ` h ɤ 0 Na1)%@I&>r`D Ma^8P XްB,yXOHB@N00 T'=cI ?Cj!cя{P @,u^',/P @h53˿@ 0Q< >G˿@90c 0Y;˿@`!r_&@ E!˿@C``E#GA0&˿@s`` ,M f+F pX*?y i0ᪿ,uAz Gf4 ЈLcnh DDs@``1+F Df1 0͋O$˿@``,L ,@=vGOZb@@vțtBΊbF @CvtEϺb/ /!¼Ey,t-E`Y! @`٬K@DdbB $S@` .@`}25L#wIAp@/GA @S,AHY @#,, Rds,f 0<05 M0}IM[0;^&` D9`n6Yw  @,!"pW@`e "p% |0 CXf6 0+"bs 0-B#P_G`4C/ "` ˿@`0 0Er,(,G0@a< ss3@O eu)w IDAT?_0@I$3@`D15 ,6/Y\}˿@_XV ]T d(DA ~ÇxC3> 0@!E%,$#@`bZ @`(:08)/(/_0@v:_` PRk j7 P^T+Q :jO7 HE#5ag6yɓaHuy` x/00C u Pf^Gt`4a7$Ԧ ˙} `:+7.T!֯ Py1жi0XJ_l @k` ЈC 6 ү~m-@ 0@]w 9gN.0@79j0Y%@ ` 4n"p GADP@CcF^כ' {ڞɃO“Zbrh;|pq DNX\Z92 -iriV$tOh Оp.C%<P4JE  (mlIQ0Q:`}0Q8pÇùR4̳&Ъ7Vy|Z&ǙM:Se -@QQg4TF 0@:YW8 =V"J@`K9>,h_ f0@I/9Bš|Մ^1`^iېE5[  P  %E``Xh @`[v4@E0Qc 0QBdv0Qz"0@90@ @90@X(AE` d( h" t P @` P @`sh`~HeݝC]oȽ!Th (DA 0Qp$8|6@O C0/N_-;QV!~'ŢE跢~)z\_y }pG^bYi``^ҩChT%@`Hiof;ILgHELG"7P{a t ȝE@pF^//Vy*g2={NO@0!`B Az0G|"":J'AT8\OL,< o%>MTX/X,0 PmNg/߾0FLXTȹY_YY !L,$ 8|#rL,SA  @0!`B A  @0!`B A  @0!`B A  @0!`B A sZYYu:iR`o2ZL8;r0sDU!!eHW9T  P!\\  @ g=f`BIә8 P 00@(X03@%`X PĨ5~*DtZ P-f=yt+++_SE|X$@  @0!`B A  @0!`B A  @0!`B A  @f=Fu @f=zTދg?s[~ZV֐V; tf8&geeeؿ_4f 4@ż~ Ov/^qTsP̸2e'5!߸}g'=ݸv)=@4TZWO.޿{{uvm2@Oi2J^<5+#nlei0,*U?Vou}ng /;S~T^>${X_Okd0@ PvaMNߎ5&XDo0[2r+`iZ$XE+*0@eVmTtZ_ 0dNY P 2[w_w?xG ÂE!bOyν'C\`YrnūzFrZ_~j68*Ր[y3TdaXTD }t*wGucGeb P ̅_ 2 P7I'JWria 4@~*{uc+Mwnvߣ$IG~v6@,~Cnx3{HHÃk ȘjNg#)K)`-iLNL)?G[yڧ;5B0뷍+aii9i=-ad@-%]=|Q$izxm O̻ X-`IXx`5 kNrr gJ.ۮ"^d5DPc/@U`5[$k|z?P]Ng-/@`kb+`}|!{);ܾ֗zO%,}*J̵\}ѧK@zW/qkw >MDXYbSEX_{|[I k]nl^SsINRE߯~I 4jd'zs Ύ^f 0v+NA?{ /֍Ͼ` `Woo{}"[~?/'+jGb+`^X럖xpE, @|ysce]2 6ʮi}yf`:<88Izm`H.^w``0L+|^׽l>{~r0so{Nwf5 `Nil^hu4מ T)~߸tqҠ~oo/0I${/??j̜C0MQϰ֗$rWm>rE00\nX_{|;I3"4 [> IN5dCA?K@~*{xdLyq7w4rV^aZ_)m|` 4L+@P%$F?J#'Rq){Ƶ  87'W ދgؾsW`rS`9so;mzQ)" 4 Dnw~YkZo/@U` _tIٯ`>qSe 4:7/;&Bd5I"xE- 2 XÃHאwmjZso`dvh"nl)(ɵkr9n^((ɭ֋ܾ[l ͍Q01j8/[+0vmg=`&0HlcyԽubnP  D[+M ߛ|qu+/*(ŹY`z߽=x|?ə>{Zl5e@ֆ\n~Wxv|֍kh?$I֗< 0{3``.e5%{ln$i}y4 P}(ɭ=34[{0jg=&V?ǻDžX_k7O5 J,b1Ja `&Sܬ84ySz:` 4L)}߸?H۶&1hB A TYȲ 4L+ A  @0!`B A  0 RIENDB`ni;r4; z /zˇPNG  IHDR1cgAMA pHYs.> IDATxMh]pHс3@2)\b '&NAtv[7 ΃Sh/X,C=T)xD;o>:䭵Wm֊"B;;88hz:oaA,4a9 ;] " g&6w|M P)v#@9R$7YÏ\q=ig\xM6aݕO<`P E76Nſ&<^Hēo{feI < ^`5M0U􍛚e4ph `5M0ޡ}p8},fN(3xS\µ`5M0Ƭ7/SNw'?2]GQ, 4\ KQ , 4 7.]g|5d&S7aW{503?(a 0~(JC v́a @PF4L8 @8[wgIyh`H(k>}JrAnX ]yڍMwS]g\O (<4ޔz[c #΋oJ:X=UБo `&56m) \D`͠!t]o]m^ `:,v*go0=Rd1s w$`ƿ530vo50$ wCU!0%:88hzj-,,<^xdqƺ|Wr^ߵ|l+VWWOt:ُzvM7߇sgE315ݭW?޾lï;{o?(r'0=$W~uui:{rJ96b3n37oo?vq}&{7NN@密f:7)W&>l|z7/})kv|{\)W&]sӎ %t$۟vwS  [K,_:/O|g\ic Oh$M']~=3~4;@%oJ4p<^£}'YbC6MݷE_~G8fY;vë_/qM=xOD9+y\_R65ϐ(ڟp|zL\+c˿/|n3!Rx܃/ ډF`޼} Xk'_\O}{g_yѣw',,, atVe N\:/kt α}H+2mUe_%SOt>pk''5~| 03́Gߕ2\Po|)S*e @̚Gr:m&C^]=^pskx 9`:&fGW*QR۫QEnE_>7[ٞg#aoֽO㟮?<8مyW~x5?Z>tӯv!s;88b_ܢ^y{%_|.vf4/;?[ 떟<&1;_깬9܍962~|ѧǖϼ1ֽÏ=L#蔙;*[L>wzˣ{0ע`p ޺`ɍLۏrϿ~~f!@5ow6EC>tZzonn]a.whii_z`0gfphyNNt?>`򫯽:a~tq>iRƿg|  sNϭJnm=_Ϝ @ xQzw.ѝL=z4x[U3H 0┻ WG(v3xWmda.`dݧ?7 kd곫6oykkU/~v hnfwf^Ay?}l `'SO6kL{>j0_:>! @g,,,U5}~y9Rn L]$0g\N Κʻ=^=T˒S.~ӎ&:*w*rbsE_>}S.{.^C.>q֟n>\ok'_xb;X+V5 ?/ p)ם ?qr#6egos}t&tҭ?݊(t 6`_ډ{__O~CL6 7p\;sÏGi e-~; Uxl~l&>W?:`ҕwo~0]OS?d5 n~rs]{{%o/kDh5|[wGo4ߵs+^M 'j™~Q;:a6K{?כo.ǩGg~  V)~-`y{3.WE篼ӟRv ȪҵkKK˙;֞D3 ǿ[]:kR{$P^]w2B_Tw:wSZ݂)OK1oʺ[XC@aYE[[+kk@ijm +R/}r)몮Q7.Y`w={!)}3=k_A$ۃޏqr#yoNmo4~k U͔j["9},\|.q5}3=! H"_nY;B֍E TtheÝqF?1{_iI._~ہTFE=n?(ow#},oF(r,̳_`.m_0Z֋]=,W*R$VR6+;mx2p);S|S(l LO^9a{$z;TV !pUP X_&/o;Lx't·jxr; \$}# %iz`+` ]}߶w^CwXE7~!+`´u{s{O/aKr|Wunv<v~!H.@n~rho{?|ëOW]^)gJEf}㭕JTUwpO \(`>N_KĕNy4~nA\\D=63?8SQO6~Ͽ~~,'@~QOѣ48^ʦ.o~R6-}g?]ԣjOKߨe 4J\T ^۹;TF;pf$Z[$!@S뛷?ty;{](x?qި5&<^m@mWio~Q| nD4=is ޟG3j+k-G X'_y'|D4Mء M "՞C0ټtͺU \jNҷbÿcިP `BsC|9Fu`J!}*"G"\˺wQK@ϽrϜ P)ĥst ћoyJb4dD_)^]{mN&#q9opW]JVp~r0 ro*q/^zo~~x5NhJU7ZFlw5&V;9E^N&2h  P *dV;(h3 POg !  9 :J%}:Ma3@0TF!H_`'v"#_@I_@OY 7 O,?0NBVEJ@;!  F0a3 `|HC&}HOc39`K/ `v  /e@KI_%ֱ*`E/@v")BLJ#_j#fH_j&ZY @S0P#_%egg]h~;P)o+++= 0Ph OB(!}h9 b3]!` o-̤/]$v00/,```L}ҽt[YY_^GW]E[zjg8#_, qBSd3쩦w(J)}gmL aEV;K_F@'I_J@X ` E`h;J$/N@X  FP5 P Ͱj&n!>V;@0T@@/JX m#-/Tꩦw”fwvv/T#zNqnu*}~{rSH_h_yeex^hwrܠ(w^hWTrh  @X & }&  % @/`e9 @/`zA ^Nӻ4I )>6F_p0c/t֬`z*e_Ñw3*ە A^^0  @/`zA ^0  @/`zA ^0  @/`zA ^0  @/`zA ^0pL:fo2` 4}2~tgz`z'Gj`T40t_tN>0}a20TeeeH;a胝vP4X @0}Ӟb'|J[ @=0=R|\uaP. @7Xb[hz|Mt“wP[+G[%@t5MAA}(c@&<^qԓhuma $`5MAA -Z6İ0&@۠p4HU]Zz 4}&a% @OX@܃,nJHA D@"`JCã^ @`0tX1a  bf 1 0N SMмJoSݳ\&<&NlKU   w*: S0]'zGR0@_^*R m*a$R|h9 &K0=4 A)XΨ&<^$B`KWak+Oƽ/>Y[&̓(&^hggħVVVF_x_ċIN^q=mx*&@mxÀJUtD"{ôAux'lܤ C#4k9!`L[*='_UqJ@~EѩS/6rk9!<5`qb^c7aK&<^A ~#W81LXN9w j$0&@\OՇ k')brN4+o(S20&@VOqb2o\ |Ccj`Lx TƟKG'!gL \KQRA<;)} *}Tm97#Qtd,Yi[Q-=+(g~ ohU/~.{*e)44NBH@t4KfGFh^uK/AbX}5kO3Oz͞8׆J['ZXX(s#OS) sLp(Bhz1M"r!?h 4m1<܇{tuuKcږQ] [?t-Hx ̾p[=|K_:=7g7}n$KJ`x_Uzpͭ"𫇗޾t=*kJrO7BS%XO5Gۼm}VϞܦc#TAIJg YN)y~A)$!h!  qaa!9;wqqq3 O+OKL_??zxح[G M׹禽`ʩ_ <̄$_hphxnXK|}ާ)PiW("Sti) '3=炗Rť2V32xG_\~#ƇZ[P >ayݭx?y`3s1 N\kٕs).b a3(T!u*|nǹld=T깵&إU|~~_ބ,[m$"꨼K@Lj%ip˝'5w8Tǖx֍Ti(&<2~HEg.z]lxBf >PLk4&D] y_|iy7?\Ŭr3(HHfOz8xR=bۗ_9٣Gc_G 6HE_ hoH 1W)eg^~rb|l;S>5P P=O eۇN:/1NC~wmP'_ݵ/幠0@N@o[b9|v{[vc˿/?y_K@ s1M)k[Y7aCd~Wl!\ ~-_z'itg(FV XWή;2m'C` /@LZ=_ɳS‚w1>i_fM(IȌxxʭ:mR 4;R |>/k3\_! 0‚䜛w] =!fm25p+7@Z]]-e/6.>S_v%epsowKM_@L~l&]:]g\):q I[EB` ~8(qg Tivv_}B:? ~bjOg\+iѣn~r3~Eх:+jWn9@k>ܗzgmgiy{Ό?:`#_ ;h)˛K|(962#/q;G.[>`T\ɅkilAHr?_yq~ï>yѣ}n_y {!KouhgGG)ƿ9h.͛#t%kfȆ=zc/xFQ/|liݭ;( @ߩ_N}߼(֟p'~oܝϞ:a~t.k %^S]1 NW +`?Dw?X;q|VqeW;'J,g.̻b/|WWW/ξ2uH/#G]i}[} R]` 3l:#7NNH>wrgݹׂ^>s\ F}vGJC81h4F7Cznm=^@b ] Æ|;OO~ga.&}O_ǖ.B}340# NmQୟ5/smQ@}~pjovӌU{'WidHO`/@Z'7Ͽ~~sYp`ze!t!AdaajEtWnmm{ҽ~wmx!RhnO|L b Ng : +Pd7^}•w'?N{p>H` dinw] $0Vh{ɏ,~o0,7nwTO ,X Ӝ 6H@,{ީ[Q4x6^'\=~OcNjWqeƦJzCWLШ_1?<2ئiGeQYB ` (?N}?v),7޷ecOw?zobg>.~' CKKKK_jV4=SOn?>o/~z μtzOn^p+5g_y-)7 _zE_:88HUN|Ɵo>jEGh0xxӣ΃Ɵo~OF~aȀ4tN߸@o _:S|O.y;ߏʮ~谅 g!??ޏ;ѫ3{!EX @4mܦ .nmm=_}(|ߔ_`5M4O_F&4p;H0!j,/,6QTR*L `O(RB4뽎?i[i$~~P?3pVo$ @ogNqxJyJjϣH{ar0bF4&fŵX{W}7#oE%_{7ޑT(!K 4B!QdՉ!}b `B5MP0/oT{FyM E @-l5Q&D^H@P\KHF.UJF :R<1}dEr([VBRiin[Ϟvow<2&<^H u/ˊ[˾칊 `5M4R_*x)+-'͞Q5 `B5MdR_3.s,BE;rߨJLx R @uˌ% ~j+0&@bC/ՙ.ӆ ΗQLx ^ @ufPZTϝQ- `B5M$S'ՙ[l)_E7+}0&@© ~ZNEeto\ `5MT;_V~'n'Sgcv&<^HDje pJѽQ 0&@[~Z7k]˳(ޡ' `5MA~E|OM Nݸv `5MOn @ j߬O=C'0yn ~G[r=Rԣ:G%SCY `L@i/1r@9/Q@> r@!IEX ~ ~/PPL ` 3 @/P fiqmxWLePxO_X/5+c@!@ w&?&|u?hd~oxM ?Mّ <*,Lx Poa&4 E76NſR߃qxMvo¬ .%\oCxM:o Nxx_~[BiT}0)}WuG2XxM:<9}pΓ9(N}?[_~CiT[cM^)8xQ+r#~[EiTݻc)pǣK74H&<^Jߑ f!t!V4H&<^ȉxdqƷ̹oT>fn 3xץ~hoIiT{G(}gw9%JWSz;~qyPv穦wZ-^G:R`2mgnV;:_R)˞stD[xo3,"GTI 01 (S7ay׈>lޥnggnVToEn|<@/Ǹ(k>W\#iY'#Q~/ 0t]~O'B@/, 7TvZfOWMư r~$nmJQk`Jd 4Niƭ6̓[~&hLe׳ ~W _!0E_=0{;[ :_40yZES_+fƿ@0U8C`hL娸 ~]*3C`RR@; `zG@/Z>2:@j.[wLo\;V^@u63wwws|Eֽ~Ͽv~0HE F-'{{?w na>P@u/~CQ)*p #/u^ï>]>|&>r/;_|>4t*f:xdq/>tH\]ח߹MX g]$iWW8_?89O4 _z&Ov8_03!Ɔr{֟O<)|v(-=z^@),~:J|#ʂ gWn<1C>ʙi& KGiQm?_+f|W^-qڎӀF&Je`p'WZ @/u^Y+` ?~S:gWY,>~>O^E)Eѝ6㟮O7|_$V>GQb|;wu3 eۇ_OʱoC|w H\}h 铱!pE\ݵ۪/S@00KgX=nb>bkYX{OUCW'~`XWΞ{\eǿ00 QTjˡ>ٕc+iv/ܪdmP?_s04drC@ُO8Mp8,~>դ[Fo0$n;D]kz($ɝ9sw^~}.ezrǿY 0 Jxގ:߬/6`&鑩 \(8q pm_ƿ@2jϓ.5iuMZb#YUQǿ-|,~& <0 ⟮X+yIQoaw>یgFO~=zEQ~ߎYF} 驩 \܍s7>S|vEQt!β0_'0;88XXX8^ډrl$S^~8č@`\ޘ~粞!ѢGͺy{'7Kܸ/@aLL9ŷQ?];۳7p3~^;vG38q'OG}(ugރ,ǿ:J}#Zi^Ed?]~cd}WV'*q)8~;;݉|lyƃx&}>f/@0=6sŒ/M U]}vOm*ƿ񝐦9 7de {w]e={GLc3[xrqFq`[p8 [/gfyzOQpoTjC=T;u˝~ r,nQ&B49(R^1GLf{Ust/@d rw6:D `b͐Rѻ/╲~-~~IN.?m]tOIu~ ٟEi3fgOEi;ֲSP  6p-\4ݲ/8`xd?J?n_ ~&dp3ߔ_GNm~΄!pwdF/7~z9 5:?Á3:7nC~?f Vu _Ss9K|(ӭC_m/Rvymϭ>{g>\]KgM(j&9ޞHHD:(߻㓁x)Y/@@pJaLx Pw7p H/kyogFCIRLx\y|QizG߫~(-*߆9pro|;A@/5p5MJ9h v㍔]#WOiT@ \JFww7ތboif `5MJ<ܯ"ˊ',~,v~i&<^〲=\XCY{TGLx P?^}Ir9(AxMږw4f]ys@P K0&@TQt$w7<gE`% 4 ?.%}Ee9DA8Lx P  ?HFYq9\HIxM e(z, vo7}Gxs0%0&@5p 18K{`5M98(%JWpY;RÛ9?rNxMiJxo?sO.޽Q 6ƿ&<^ o>Yq"z\6hK`5MZu0Gn"ֽ;T۝JתX R&<^G 律4x@/$ ex%C O~j#a.& 0~! i`"i`"lJ92@o_ `! , dV!zE4NU988{< 0ܲ=@e P /q$%0Ӵ#_@o_@fi`/@` K50+m0PGriXP #̓50uƿ-94?%Q0}41a J_6@40?ZN ;88p{$'V@Y ~h t HtE@`u40 _V@i` 4gn@KE0rs0^h- Eh5 (  /@w `400n 4Ht:FP@h`f~A0  ta3@00aiXE_` :OUP@40s ` (/@0 BJA@A `[_ ` L KO!@J08 ̥~zBK2zKz푀 2zDq?EC0;P$>g0Sn +5 }c g; ~zNh` " SD`$M`"rO=/@`C40gF0@`_0~Hi`4<'*_~E0tL$!i0@*:A0HKC˩_fh`h`h'_i` uR!p`h @J ' m~HO䧁Y}(DCk J푠N0@i40C(_r;`‚c:m'7}\M1 @҂6;B͛oyëE7.?Kf ujX P kc;-,,|J%Q9=TWl]Õwj Z5M*Y[>}nmm>z_h&<@T+͡#$.uݟΕw:Ko_k2 `imo?z5.--?ݺה&_x9n?l^RQ %<&51nD~W]w3~~(ֽO㟮gp/^]ic4pYW8Qf if*`hzlތz3lʿO|` Ftb.(qRw?!rkday0^A!a6pIdb&bE%ޅ$E1`$!` !֠>fCK}>0JW~Kx8p Xs[nZ_#ڤ듙yp͟~[ 3_j%Zep t?O 5nFzuk vi/us{:dF.||/_o~x}<gxyyӽ MZ;N_F@dnydҫ:ǙϾAItQ:PǏNc8N_|{%/N[o4g& MTqDE zG#]|[ɦ֏q8sUSA@ `iD,f<Μjto2ICu9Μ^+zݑsr\C`A"LYjq?z4("WG,~Y z*alj2n֫[}ũ_rcƁwΞ?n@M0:`(O` @GE0P- @wi`BN@U0]J`z@`0p{$`>@i@9@ ^@Qʳ44f4<2065t/0I{rCta`CmTC ( I$ͦ `ީOa RS`kQ-z0)WN x^Dd_(` 9 @0QDA @,AۻI @0Y|y_RkX :X9@ `bTf`"3k/P;mҷ#DA @0QDA @0QDA @0QDA @0QDA @0QDA @0QDA @0QDA @0QDA @0Q8@' j|^ @00:(}L@\ @ro$Nw,ұzM @D5 % X DA @0Qb0 @0QPadCm4g04v7)ghtah .MD @+0)5`bTKtiAf1 DjTsKP9 @zіb*!zL|-1 `QQ0K@C0K@ 04O@04C@aPwwmiOiA$#3 ze0cpzG  0a$ pbF0DD 3 ;mоZoRߧ\Fmjd `@Fr "  TF ek0P;1 @`Qd8$v:,a&`}b`[05@wa*$~,H#(A&i˂Ǜ 'paj5ݩ펾81ck(h@?u~~d=IN ;FsM?=noh#tw@;?6p41LNCR6xebcI4jS<&*}`wҬ^ΩSg:0qL g 88M {3fpvgu?0qL g '&cS"}nऽ 1MUpApLiN;0'ޛbdԏ`Lxș,HI!3?}3fB <7f -8 X.J ZX`_cx 1M1p"p,Z#5"c ;m@=NcK)ul?$I%ɡ)O>txl5sw?|OsBd8NF`dSNՔY<<ٗ=Vth]Mx,HI-.%OwnNvGs_3wXӡ0qLN>rƃH| '#iIM˿3<ΙgJ~4-k;Ip o$n$MNN8:K)nG[f7ޱ>eQ'o+ˆow=4w- 3[A:rs&C5fx6vt=/nc[#::s72e)y9gF_, 8 6 n~Ghwh^#s'B2 z\hLx#ó7U^PlCM_ØY/b6Ko$oξ,h MĢ^佋'tߢC} 6 # Fup9 -Smֺt΅g`: Zܾ'Ob&x 1\KM~nL%y6b `k7wZѕKl|xw;\O_?tqv=)+ϯhzmםo]B\Ξ;0qL  M0_ZZ2pR3+`_l2>o׭7f^8iywF.C}&<@P^Fz5ٜ c~oo?ݳ/rȑ9/QU][ҒTjkWoy~KOZ&* @?L/iw]0G|oxޱoOj" |s_m<\lzVhO6p  ~oN9LNjfJtuk3e,gJW> w\sȺ}yr# BG`z՞- ycF_[zm"C_YN0}U2ѣ X mHËom5L7ͱ[| 0s 0=Ve,pWtF8WT~81E-Kldݢ?}[97^b?*Twx7p{kEP-G}ݢt^9xQ-xU/{ q@a狯oy6r,t`zh]Ko׏o}]afg4pKpG_xYw|˗Jэ_b&譽\2ͺtf'Ow8^{虫6-aq76~qw9ι<[/uykAȕ/&?oAMg;nL 0wXiSߵt^{_9yjdUv~{t'7Onxocÿ.&F9CmOox{3`",fAw}=﮿.|q2ςNv gן+~x];l30 @8Z KW_}ߣgb#蓩3-@ v]$ɋmn-/}}3+E %4(?'Gs*/ӭ7}so'Nsc7)mWKp.0~!N͂>S$)c֫L}~gn>GW/vysF3Ʌ2Yt:39)Rs-E  ]j52LxX .13=087(.΅.$ &Z`B&@Ȩ',iI'B8 &->ݷTzo&X{j0qL  Te2oǍl2ǙM:s2# cug5?ս;ҵsLxk?<T?ig] SbxB<0TCB}&` §?P]AIENDB`n[67 >g\~ .PNG  IHDR1cgAMA pHYs.> IDATxO׽/]p 6$]p_@ 77Ɂ' Ʌk-3x'6gp`%GopHې A2c ^p{< 1 p $$`[յZUny{ׯ]kUU@F]oM:6išm@` (DA 0Q @` (DA 0Q8h4*ijϝ][[=ԓ=^&`~r=I{ŕZ7 F쨀*Jw>꛿xgk$ olmvl|_\4D!7,ݵ?"{~ olU)vxOo~q9f)͍j몯\lꝅsdg t{{{Y=˛' 2_n>mv۳ϝ_b_ul}gYK4'O?Lv㇘e?zj3s_ Q , h{勵-ԝ]zukBn~Y͓Jlee_\LKz A\kmm+N23%N- Lw^MV)aW>gM!VKwY0kQ9%i \UΧ^9.%֓$9T{+B&+-"us/Xi`@ʝzDW;/7vAJ߲hgNPEh ܠ\c}፭ g;;7ٞx[" \f_Yg^Yۿgˠ2WZ[+3.ҳϝ=5lU_xY{dnmv+`~zHl|o7϶\n~Y󯿚+110RJ_hO>~ә^iOln .f}:Ob*y$|RWaK͓sӧWP+1J}.tg}( +`;fP@z{ Vp}O/|>@Xοs/XYKH2&hU~7]宀&.w wfЁ7.59q. ]}$𩧞\'>|{GHwg6~6yzcdE`~&w; &3 wrrI 0@&AM0@>3OlΘ90@{ Nw>m$՟[ n7 0@nN֯;m[YYM-vc!cG_[൵6 4=>:k| KM΅w>x6,$jy{S`y_}~͍ܘL}j#]opխ.$I?|sgD$IYۿfC$՟ۻ'rj%uۿ{}3#W^p-[~:v]o-޻7?lG{g‘~@Tt@`h%DA 0Q @` (DA 0Q8g4u M2 ` (8ԍ]o;~Mj* ` (DA 0Q @` (DA 0Q @` (DA 0Q @` (DA 0Q @` (DA 0Q @ty6@A 0 :t퐇$K`i~dC T[@`+тaաzD77Ԩ\A)C"e*EzA1=7@~0@g^ |0@_  @` (DA7% > ^uP1zLP DJ``~+ײka&0l0@m5밀#]o5'O|$@΂RM# ǂ]E)(Fk5RPC` (DA  -T4)( j3q )'d`X W$NP;"E KEY 0@#JAEQ 5-;@ `fӲCQ F@`ؙ)( e j:'` ꤠ%9+ @x$0@`ӲC (tH`9-;eD @0h١F"2C#JKEQ @Z`D }0h١(7 &F 0Ř)(6 f jB P9+h \.52 9E#J(IEQ Zvh%e(tH`9-;@`*ѲCQF"Z`D Q0Ui١(7 @^&F }050g5RP (HAl@ބHFED5J5FA5AA(DgR]欭h?ygEPJ  C_Y[D~X8@`D4-;)zuZv&Ts Ilw8*>ZQ Yo2@90;}dk1)M%QA6$pT@` ^y+Hi%FA5JAEbY7x|"/{"lI`Z@\4mҲh4RP!)'&gw>QNbD][-0 B w "}A:Z}Fáe26@0)]{ՃB`D `)sZ!QPpm`m&go2@909y-?0-1g5RP%s/[cj0}NnGb_Otus)zy3ӵ;9`9G1T ($Q[<;Fiه*OA)ro| 1 PM10MUh(D>40p>a0&7Cx@2o8HA,%1 >x5uڡ`Cb0 ײgG@"äe5X@{Z>2;F` ">ҲCQ#-{)9Ҳ `&PhD @LTP| @@$N=2``s / K&KȤQPi00p!iK#DH"_@!K WS$@뽦eNӿCO%~}P?} @ȴ0;lFx0OE 4-{5 DBo$RP}&@`B'huH(LoTij(ARP qh-z|LA&QЯ̻:l*qЯ=>0>z P@`` Hhj*8zѯS9+zJ`P$Fz/9%D<9)(`"e>1`H`LRIzG .ZvECz@N Zc3/0cuʉew oa)M˞zDJNZv(j_] MSEEJF_w{jT^үSݼ^\%((` \z&jQhd{_j} @שK;׬!I@`o{bhMRŻ 5~zs/8N&vU.]"!2K?b#8`#]o@_j'NSPw`N¢FvyLRjAAN!6Ѩ{B-H@@YTg/Za((``\: @(3P %cN-a:$ӯSꢚ! v1w= *?P +a[vӿ4^ tONHP# Uorz_^NQ@O Dd]_S0%ӿ/½+_֔ۻ ] DAWYPP @gt(=ߔ̀hhǐ`4DSM @7b];Bc'a?>{eH +A%4n]M` @@Lthg M X}\i` z 888kj@,hTtWWP@u0nq?q72r{Ilb^_'|}jֲ)(z\5%MTW1X:@;ע7-Qe׬ *ZMIُ,8R*@;TtbΪ2p2ոk jJT=SMIk86 i',CTtj"maQWHt턪Ƃ*_%I]jJj(2`h4t(-[Lj2kZk(FG&JO Ó SuЁ&z W{eOta\P)t*#J"$mf=8؂}:j>QR";DNi'f#Jc\7U}Ó SuЁӽCGE;JJ6;DScI5Tw#JS41G`huL9wmøս'O=hiW jQegk.h3 SuЁZ՛xTW!ӲIAUт*5 <~Ek鷩nDirxJ((w]oPFY^}#3*n>H4ZYS%x{7& *`|?}#Ք(('@~$298,hiE5{Px^oVP4mRMf?={蛍2rGƏY|e/2Lt_PK_AAi䩦􋌫)PP3 0IE$ͽr!M[ш^TۦhB TqDv2jJ B{18%`W&ۯy{EZvJ(wo~PBTO(^tՔlhb**#JҲSTN@5=[w: * ZozDAQDIU@Y0K]lܲR͝KjmJ%v"1a!DEU: ^g]zyΝ*/R/mvHm IDATzOv9}ҿ^q{pZ3{gN$n`cwwMiٿU_>3d`3=(K%ϵQد]zs3<12 R)I3?9sO7N](A8 xtB3?}R Koe_ܾ֥׶ lh$Wl.038q6 joo/u}KW?\$;CuO?8qig:B^::tA]y k_k7v[7ߞ3~xx?s?}9g\}lub럶oƕxEq%Isw>,̈u)4t93)s/K+?<ŷfF (@C@24R9We͓9_w/bZfV4B[M!WA'Emfw_ЃƼCWjY>?O~ήʥ.[Mc-b4B x\df$Ig=ad^[: wl-5>P^I{믷l`(tD){x:T3&gee噧MbU*_5$kn5&t&Y:~=)XP_oO X[[˿IvǷ̈GC)f,`^PE 3(A8 aɞU2d͓Sdoup9ϊ%*ԼɫL'/1aEwC{)ux*=%J_y3<VIZ<__,s9d:JKeV/COĭNKXbjzPVWVV ) a 40tozF Xkdg~2VCkKE,RwAe5ݯ/vwBNT٘y\*&yNR$ɕc}``Ό֖}kr x3Zhz<{KJW*ZPFX?9v3'mt%t_o-Ͻgif]~[_k~ӧaz!+qxzg/ ``B<FROk[uz-[ =e=& ڵ_ɷV7Oe %'T@`z3-;L^f̏dڋЦ~s-+kIνtvz8~o/W&<}y^ҿ^ ']狅~tb|6H7h79o>1}<4.u)bC-xdyh{_/]$Yld4:/[/_yJI{eo l|c VCoٓԡ}qEĉ%ڋZVZӲϗkOݷ}F&I$돭o=o#I(-wwuރ8I9JK!$yB/3^u6sٽ/說UՙSՔ){_&Iro$:X\P~33o )Teoj]0_j,V^ݎ%pNIR)*%*Zl_} ήM_Q}RWl:*ׯ?\}ۙZhYug̉9~c~,&Cxko}q鳥O8넫Jݲe˿[Afe$I*T}^:w[.g/ AyKqy}uBN#(k?>km8INI TZPKUJeo,xpz_] *ӯgnkf>2.9-[ 3',8B*[46ﶊ[9tǎ{rfBwD r0:m:88L'MT} +( N0ei7I$bmR-R^=Rr.T抵~tA՞~DIR4'O{CɍOg!Z0\maN=uOx|7.񰚹f~=[|owo^_|/}ЯT7OT~}~{Νs/zm+~n ?->q^3Oy}yo^Am/L߱k_{/|3V2 āU~P}w۷_PhHn~k X\Mgﳓ=I֣>wn/o~z3), YеKzZ/6=[) :k+WPFУZt[yd豣M'bʌtӛ{X/vAfnJBqow13Zj(V|:ɂ]MIuowśy9걕<-=_gl|ػZU_zʊY xbp7?:ULT,T F&&OoNtc_ǗJ 'Cp5a(~f<4WC.BՔ9̏f_):lO{A^~?zTױ@ B*A6:ZZ ki!T_t}//RX$:cOl>1:j*a޿O__*I(A8C@&ǂkLg$s.,ڊB΅7.׿zs%~,)]PU?97ܥ_]Z0du Ϩ>_cկ_fD)I})~L$I?z|럶Bݪw?胑勿p$I/'֒~B `Ţ!ugԴέ _P%//f9_fשX'J}y|yoOo&Ir3?:Ys!,󬦍qjv~JZBai,BO3?y&~>AkWN :O?$! VA32AΆ[sX͓~d(SP5V$[=$ӿsD)inGOBc"$CpY%bD7XuWA՘V.j#~a*WSbAk7@BP a}v{] k/( jh{qܺu5Y쉿?|PO=|/rz  !v}PtZI{A AnvAײ_{SOm6~E##ԩN֥_ܞvy|$IN=ut) 'Ah,,R_Y{0j^y|蛹e:: `g;;yϞуܹ޵ $YYY9I,I@(q2aW{R j҈'I2Zw׾y|KMz4DБ^޸8߽ޝoԸphѢua(zg5~,Nr{/}"OI_͕>˿W'a2 gO[Щ0''{o?OMV_yU޾˿|;{JOYG?<(0:KkO LAZhŒjJ,vOЙ)td 4+dU~5Ta/EMOT7VP@ ;A7}0 Z!7[$uRPTF 0 0m|}ԓo'sG͝%[M_ZrA;ܯ*< zt(WvM):J,1UP$ & Ww_x`A:@v~49uҬ8 M j"TT.&0tAAJdXEJ{QjYO_jIqVV%C rZO~ۓ]o J%AU2 ;AJ&C*}BKC,=Z7yeYP@TtJH^ޏ/ር_8uRY:< >Kg]9^KVeX]%(QKFQhJ5%g!aHT?^|M*-Ń)xO iy~Qۣ @Aji@[I9jiY 2DgOI%CTt6ޮƖkJDJTj~6jTdA >U>\$CG&nG[@!fte,zOLJVP%)i`hތf΅[@ A((BP4fHAg`h4яd-:uAYIAʥwXPa`h4וd|G?6PPTNU J:@Ӎi>9ީ'uBUk/^P!wĩ;j jL:@ i:ϘF3X$uzeIuAK!mztx}:Zz( RE]ESotU)QP@`Ve4RPv:@}j }Ƒ]ES[U 5~g1޽W SuЁNQ6OQN֭DNo+񂚳 Timߙ?S@A >Um]иn)^.S5TShLC'铂*YM @Ai^gw/{K= 7*+e] u~lI `hrM: -0;jdޑ~"Aњ&!F0"~b0!~%aѨyqbz P;AR37 fEߢ/@s1 DKh tRZVzZ#4hU`f74y@T h֍%p/@;,Wn3HH剾;fImpMh tOGsL,}0@ۤ_N@zVASF#+0ё.JA'@s` &=H;@ :a3@1 L]3E @D 'C[ ^ػh  za?!/@` 8B`M/@`OL=΍F# X0"!Gю{XL9/@O @,`F#`DŽ@hB9= @h(m~H5Be`yͥ9hi 00"P/`H`7L-~FiI#}bh 0H0=cIC%an4I&=_g͞k00&Ҥ_@AeYl7~!~H2K_@_@__j'DH#Iz$p$|K֑7JR(~"g&sᣤ./0oh)D 3s8>Dj_ 0{%_~H!p?H,$!"T$0M$p$~I 8-B`'h4~X@ ,,('Ϟ#DN S /yhpP%Y C5y @~0042HAQ/@D䫞aI( ]o`&0Myi0\O#]o%ɐfTd,}!`%0!P )p,X*I/ygǘK^P#G @``!o|j$/ x`I4AO&ӿ# @s` :fbiHQ0нvEB`  @O ˙и7;/&bns)oѰF#[:yF7|OL`0`,C\wy= I 0IB-QI dI 0IL P /&fxH 0^xF#0 <3x/J|0Y3`0`%t ~ @a@ B0r@䫠/8 # @`\L/%5 @` {M r0@U2a"8o4I %=烳{ t@-* mL`9*At@S,{4K`_`_f 4[n~ѣGkW~`&3K}CM_CJy`J mD`2o4`/,`07<$~~ 'LC` ctŰ9W 8'BWP ЈO}O`Jb d Up?1ӿ~ CC`0 lCH`Rb7~ Þ6jt feq};!@`E&mo8_h P'q_h PH(fþ͑~in;ӿs_h`&?Z#Do_h ,_j$o\ '$0/tBhJrxW_ Ёg๽_ Р`d |_ Ѝ0#h}_ Ь0#e[5THuV&KMX}"4n^ at F/H@d&X 1 І'i f/II~ Xhɭ[ZȺ ~}[ @t`|ůT$@`47? ~ |0@ҢϕsH 0@j.fe e<~ 0@di43K/0@MHBls<˞_ /9m:.N>:P$ڂAWd %t3i &׻~` p ׭[dbZ7z$$3!{D04RXM?Ә/%}w`;ѣKpk] ?/X )"zG޼,g\~k20 {EӬ IBIsZ7u$0` 8̢oCF+B@/s94Aw&le`KB!>܍.T'$0@s @,u0`Tm:Zb(8+@OI`^3 Uz`$p c+1+ 1 &j*h 3+@$`1 \ b#$pE^ K&K0 f:s$Kn$UDA DA79 ~H g 7MH@y/@~fo f:/]tV: L*b:AP$&t :w1E&"wRo0V/*H k= e+V~bdt/@>fA  @0! V}_q$0O08I|p}} P:`NS}7ٔ8J5WV{e7 ( EN '@Y`rGv  Pb"hP  .P0=ȿ(> PV>m E  @0!`jZEL0@\zF?PO(QfVA'c7QiPr|yfسP"` jꄚHKE8 ^V/| p O(g@ `C9 `X @0!`B A  @0!`B A  @0!`B A  @0!`B A  @0!\*z3Z~Z4GX`~o2\,8QV/':K䧁JD|f50@Y`$c50@)`Bc5 0 GUh  @vE˜  @ iZI d)\ӿ A|o"/@Y`֬(KE`7mZe^(/ p 07\ @0!`B A  @0!`B A  @0!`BpGRixk+ E-zᧃ7F5p鴿!Jy>y6v 00@퀕GXXXL7"r%ӷXn. ]#J{|vGe"Nda000@VU[/d sOIo {ß~iL%!Sox(KE!4=Ns\l3{u9/ZUDveUܮ|h|퇟/=MkOٿsY_>s7$d#`:,(O٧C-]t~x$I:<` R/KJw٧f{ oywߣtiqwn35lVչ 4S^y/_Lj`ea 4@i4]VW/|(뙭( PNos>Jw91@@C}~=Mh;k,S`r֗ ƍ_N}wm-ͣᧃ •hrh7Ojׅz}#( P3 90O0@ t:}w 郤# l0@ yW~Ӿ, 4@ e6{񅋨{ozMs@;`%IrԭvޛǏ~nxv$[O76~!@}@̺vͷlf޼}kݸv~{6l_I}qܐu">JZͦӍ?w>?>j__^RS}Qyjvکu~xЫ߳Kغv y~Ã^̸VUVsw`*E"vE2ͦK&`^HR`6; Ir4pOB<5.2gsrfuRޛ/] dؚK` {{ܻ _xs`lY-}H̴k+}V3-|ϟ^ή[L*``>4>Dq^r 0tڏ|8]Z`LVWլ/0O0I$ݭ300ɃÏ&~d,:Ο;Ǐw/00@ttig`Y ]cq Mg[&n?|(KBt`.nưoy$F0Quݢ0J#D*p$LNZ=k0@  @0!`B A  @0!`B A  @0!`B AB@Dn!R"&yg0!`BTqE(ed0!`B A  @0!`B A  @0!`B A  @0!`B A  @0!`B R96O?.,,w0K@Dn!UN(G<ǵ;ߏkH̥JGq6KNi7F>ݵ{Wjː  pQ8yOӍ߸jyt*wGǏ6_z90@\ 0˲WfVW>4>Oחo}я}50}@8t}Z[ k+`f3[3K+]Js20N.< `f]Iҥ黶ӏ}50}fNdqtiq0೾ݪ4Od  Os쀕G(fwI?;Wka|R//gG#$I:vvtov#{ `\*z3ݛkΟ;/n=ekl`0@$ɿ}zw^w;ߏcP%Irf8nW& $Iy0C$PI4wi`$N)I?vdz7Lz)A `SKo\qFٛ!0;*E"vES^K5[Ci_\~ŏz.T(fԜm:۳xv!4FU[8H*b1 00Oo޾ 搗:&&@5Z6msi8KE`t)O6Om"=r}Ϳ$/[95@hN;zgq ~ޛk `Iy>y;X}3 M#w:^0o@3"kk#~/"&os쀕$IcFJ& Щݿ|/z0Wjy.>tj"y:w  շo小|Ο>ӻף_r *E"vEb{T[]x?!JGq63SһQ[=p0{ů+1л;=\xp@4k}ӥ_Ov50}f&G{.(}/_[)z8q ` s'Iti嫗E 4 0)N񣟏uxX`T~9]ZϾlo?<~ͷWm 0  gO}WmuC$L 4L%` 4ܼ}4-$zqoNvXQYwc/8~C4@Y @0!`B 4@aҥ3f9(}>@Y @0!`B A  @0!`B JTIENDB``! J"Uб _BC'.)f~M䔕)3s2Z 68wk?k#hÁz(7cHc$C.$ofRYԴ$`EE E Dsf,Vά(L3]n@\mbQI3g\#NO߿/~oH(c"y8_jݵ?'Xbɋ"llTVVѣ(--Eqq1 ,"..n. NӚ1vB@ wT:5#wÙp3OПrR,%tl1}\졏.O-` E^^Ad+8s'̈ 33"fO_FNpy܈P\I|8_绅|_"#y4ndD ?t(z[.w#ԋIK%x鋇(wf(*HR < pͬ@vǼ#0L38L&ױ#p6CѴOWoYdp O(:oc{nl܁dA7ߓDB3ÜSPXL>3Mh"sճ˄M=g2&LĄQl&,6*has=s7kK}R_+ZK}eQ_ԗZ $@H>%ұ0&sl2&sNt23O18D{icml EKhcm$FyE[WU6ylV+q@ࠬE!y{C.OM#A8H % H8 Hc,eƽܘOHb"y`цqYHb혃6I$Q{=s֞kqi|fڒU.[&4FrT[N+Oɿ(|@63WS$9H609)!+Bm*y-}_Qrp?2Pdv۱+#d)Y{d5̧q\hu0u4:M Fg҉N,͍.*ih0#VBbOԸQ$05tw,|{6K#,^d_<2WDyr`1H/ ~^3C0h!ӌPcP%]*sTBa"P%׃YT]ZWW+<Z!jհ6-]mi$um i(evߵ{ʧ2_ZMm#C֧ Yg>h׭p{إsD' L8+pLư2%[d${܃y?Q#^&a$aLG_Oǃu5n,ܭ1KHӅBe{Ay@,>ìֹr# 57S/֌Hz]h$-=#2 򒖱7TY=(giRI*Ic3$Q9&gY"_s-9O.K6eR{ۮ}A;;2ֽ2.AGBH}4 aƻN"HCTGh!ݥ?Y"/Fhѐ5!FZ#1OU 'Su;^VNĘ NظMGXG}>$J'p= \>yɗ Umm5mNDqIVj ۻBSxv:&M6Β3?jju6n$"cx'1dN2Wi2wƟ*2) 58KWMsDw2 '#$d,Gs/ܯga~l=ló|J6\]XumUrr-6׮ OɝޠMl:Tr4i_My]ʱD6O䴼]%COw9&t.)tܨ[]&7FIbT͓dq[$[Z ;9j5U҄os/{t /$$V;x/$˲L_G9j=H3mG^֐\{d>$z7'WQA멺@ 1yONj{u@dj@ wan2\Kuwu$t4!~E~MwFiKmWM{M:ڊ;O+t=wC!m5F]ڽcbhw|D ߷}Z4 [dL(8 / 0DArialicawp7L40Wo 0h"DTahomacawp7L40Wo 0h" DTimes New Roman40Wo 0h0DWingdingsRoman40Wo 0h@DVerdanasRoman40Wo 0h"PDTimesasRoman40Wo 0`DCourier Newman40Wo 0h1pDSymbol Newman40Wo 0hDHelveticawman40Wo 0 "c0.  @n?" dd@  @@``_@,whoosh.wav.WAV 10103RIFFWAVEfmt ++data~~~~~~~~~~~~~~~~~~~~~~~~~~~|||~~~~~zvtvxz|~zvrnlrv||vtrpptz~|xvtv|~~zxvvvz|~xrlhntzzvrrpprrx~|j[QU_|bICCYn[ICY~zlnh]_r|]SUSSjz|x__l~v_]drnUb|nfd_]d]5=rrnj]jz~lMldrx[[_f|YQfWK_xh[zx[CIjzxxdSQz|_fI9WӹM;QnvK;OUx~xj]]YS~ɵlM?plM;CGpٵ[)Kh|% %;xtKQS]ɖbGr|lSnvz~nfS[nëx;Az=+AYݻ|=/1r_ ?|潄W5/Czãf)/pvbMQr|O=OtjdhjlG?G_ɊK3לdQCMppW;1SŷAMz/#?bx͖SAM[hvhYp~~zrvt[]ptWOUtxxd]v~vvxzd_xzh_nrSQltbdp~_lrQ_l][tf]W]~hWfp|fWhnhbU[hzlSCWbYbnxpdhjvjM9Ot]GQ[dpp~hhhdpx~xh]Yntnrp]dlvjQMb|vdjpzxzztljr||_[r~~jb_j|z|xpp~~v]Wh||zx|x|zzndhpxr]Yfntzjl|z||~vppnrzphrxz|~|xtrjjtv~~vz|z||xrrv~xrprtz|||vzxvx|xtx~~~~~~~zxxxx|zxz~~~rrz~|xz~~|vtx|zxz|~~~||zx|||~~zz|zz~~~~|~~||~~||zz|~||z~~~~zxzz|~~~~|~~~|~||~~~~~~~~~~~~~|||~~~~~~~~~~~~~||~~||~||~~~~|||~~~~||||~~~~~~||||~~~~~~~~~~~|~~~~|zz~~~~~~~||||~~||~~~~~|||~~~~~|||~|~|~~~~|z|~~~~~~~|||~~~~~~~~||~~~~~~~~ $$ ]      R    "&3  .0  8P         %  $CCk))$>  $$       w2o3U(vcR$Nт۳ Y*2 b$cH-x2KfX2 b$;r4; z /zˇiG b$67 >g\~ .[Z $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 2$J"U"ՌPNG  IHDR +tsRGB PLTEfffm cmPPJCmp0712 7tRNS@fIDATWc`  SP1H $XLIENDB`z? -O =iDistributed-File SystemsyBackground Naming and Transparency Remote File Access Stateful versus Stateless Service File Replication Example Systems BackgroundxDistributed Services Service  software entity running on 1+ machines, providing a particular type of function to clients Server  service software running on a one machine Client  process that can invoke a service through an API Distributed file system (DFS) A distributed implementation of the time-sharing model of a FS It manages set of dispersed storage devices Storage space managed is composed of different, remotely located, smaller storage spaces Client API made of a set of primitive file operations; it should not distinguish between local and remote files 66=DFS Components  (Flat File & Directory Service Operations ) Naming & TransparencyNNaming  mapping between logical & physical objects Multilevel mapping  abstraction of a file that hides the details of how and where on the disk the file is actually stored Transparent DFS: hides file location in network Replication? For reliability and performance; should be transparent too Location transparency and location independence Location transparency  name does not reveal the physical location File name still denotes a specific, although hidden, set of physical disk blocks. Convenient way to share data. Can expose correspondence between component units and machines. Location independence  name does not need to be changed when file s physical location changes Better file abstraction Promotes sharing the storage space itself Separates naming hierarchy form storage-devices hierarchy WZDZZ`Z|ZZWD`|  !Naming Schemes - Main Approaches >Combination of host-name/local-name E.g. Ibis <host>:<local-name> Remote directories attached to local directories E.g. Sun-NFS Gives the appearance of a coherent directory structure Early version required previous mounting  then automount Integration is limited and not uniform Total integration Single global name structure spans all the files in the system Ideally the composed FS structure isomorphic to that of a conventional FS; reality is harder Administrative complexity An important criterion for evaluation NFS is a pain Any remote directory can be attached anywhere Separate accreditation mechanism is used to control which machine can attach which directory$ZZ1ZZZZZ4ZZ$ 1  4  Remote File Access  Remote service  simplest mode Problem: Performance Solution: cache recently accessed disk blocks Accesses performed on cached copy Files have one master copy at server, but N copies in caches Problem: cache-consistency - keeping the cached copies consistent with the master file Granularity of cache data? Blocks of a file Whole file Bigger increases hit ration AND miss penalty What s the network transfer unit? Disk or main-memory caches Disk caches - more reliable Main memory caches Permit workstations to be diskless Data can be accessed more quickly, and memory is getting bigger Server caches are in main mem.; use same caching mech. for clients bZ_ZZOZZ/ZZZb_ O  /Cache Update PolicyWrite-through Write data through to disk as soon as placed on cache Reliable, but poor performance Delayed-write Modifications written to cache then, to server later Writes complete quickly; some data may be overwritten - < writes Poor reliability; unwritten data will be lost on user machine crashes With Delayed-Write: When do we write to master? When is about to be ejected from cash  too long At fix intervals  Sprite every 30 ; NFS treats metadata differently(write-through for them) On-close (AFS) best for files that are open for long periods and frequently modified Not good for small files with short useU1nU  1n Consistency_Is locally cached copy of the data consistent with the master copy? Client-initiated approach Client initiates a validity check Server checks whether the local data are consistent with the master copy Server-initiated approach Server records, for each client, the (parts of) files it caches When server detects a potential inconsistency, it must reactN^k}^k} "Comparing Caching & Remote ServiceWith caching, many accesses handled efficiently by local cache Servers contacted only occasionally in caching: reduced server load and network traffic and enhanced potential for scalability Total network overhead in transmitting big chunks of data (caching) is lower than a series of responses to specific requests (remote-service) Caching is superior in access patterns with infrequent writes; with frequent writes there s the overhead from consistency No benefits of caching with diskless small-memory clients With caching lower inter-machine I/F is different form upper user interface; not so with remote-servicehhFStateful & Stateless File Service & ~Stateful Service  server keeps track of who uses what Mechanism Client opens a file. Server fetches information about the file from its disk and cached it It gives client a connection identifier unique to the client & open file Server must reclaim the memory space used by clients who are no longer active Increased performance Fewer disk accesses. Stateful server knows if a file was opened for sequential access and can thus read ahead the next blocks Stateless Service  each request is self contained Avoids state information by making each request self-contained Each request identifies the file and position in the file No need to establish and terminate a connection by open and close operations7 ~37 ~  3!Stateful & Stateless File ServiceFailure Recovery with Stateful/Stateless Service A stateful server loses all its volatile state in a crash. Restore state by recovery protocol based on a dialog with clients, or abort operations that were underway when the crash occurred Server needs to be aware of client failures to recover allocated memory With stateless server, the effects of server failures and recovery are almost unnoticeable Penalties for using the robust stateless service: Longer request messages Slower request processing Additional constraints imposed on DFS design Some environments require stateful service. With server-initiated cache validation we need UNIX use of file descriptors and implicit offsets is inherently stateful1Z;ZZ\Z3Z`Z,ZzZ1;\3 `,zFile ReplicationReplicas of the same file reside on failure-independent machines Better performance Improved availability Existence of replicas should be invisible to higher levels Problem: updates  how do you keep a consistent state of all copies? Demand replication (Ibis) Reading a non-local replica causes it to be cached locally Updates only on primary copy; updates generate cache invalidation messages To satisfy remote write access request: migrate primary copyNA)A) !The Sun Network File System (NFS)XIntroduced in 1985  first DFS designed as a product Implementation and specification of a software system for accessing remote files across LANs/WANs Interface definition and reference implementation made available to encourage adoption as standard Part of the Solaris/SunOS using an unreliable datagram protocol (UDP/IP) over Ethernet Interconnected independent workstations with independent file systems Designed to operate in a heterogeneous environment (different machines, OSs, and network architecture) Independence achieved through use of RPC/XDR NFSIssues addressed in the design Access transparency Location transparency Failure transparency Performance transparency Migration transparency Not Addressed Replication transparency Concurrency transparency ScalabilityNp>p> 'Three Major Layers of NFS Architecture UNIX FS interface (open, read/write, close and file descriptors) Virtual File System (VFS) layer  distinguishes local files from remote ones, and local files by The VFS activates file-system-specific operations to handle local requests according to their file-system types Calls the NFS protocol procedures for remote requests NFS service layer  implements the NFS protocol:00Independent FS & MountingTransparent sharing through mounting A remote directory is mounted over a local file system directory Mounted directory looks like integral subtree of local file system Specification of remote directory for mounting is nontransparent Subject to access-rights accreditation Mount operation includes name of server and remote directory Request mapped to corresponding RPC & forwarded to mount server Export list  specifies local FS exported for mounting by server, along with names of machines allowed to Following a mount request, server returns a file handle a key for further accesses File handle (UFID)  FS identifier + inode # + inode generation # zappa % more /etc/exports /export/home linuxlogin(rw,no_root_squash)%>@K%>@  K NFS Protocol4Provides a set of RPC for remote file operations searching for a file within a directory reading a set of directory entries manipulating links and directories accessing file attributes reading and writing files Stateless servers Modified data must be committed to the server s disk before results are returned to the client (lose advantages of caching) No support for concurrency-control mechanisms Performed by breaking the path into component names and performing a separate NFS lookup call for every pair of component name and directory vnode To make lookup faster, a directory name lookup cache on the client s side holds the vnodes for remote directory names@11NFS Remote OperationsNearly 1-to-1 correspondence between regular UNIX system calls and NFS protocol RPCs (except opening and closing files) NFS follows remote-service paradigm but uses buffering and caching for performance File-blocks cache  when a file is opened, the kernel checks with the remote server whether to fetch or revalidate the cached attributes. Cached file blocks are used only if the corresponding cached attributes are up to date. File-attribute cache  the attribute cache is updated whenever new attributes arrive from the server. Clients do not free delayed-write blocks until the server confirms that the data have been written to disk.ANDREW File SystemAndrew  distributed computing environment developed at CMU Implemented on NOW over 4.2 BSD Unix and Mach OS Main design goal: scalability to >5000 workstations Two unusual design characteristics: whole-file serving & caching Simple scenario On an open, if there s not current copy of file, fetch from server Stored copy, open and return handle Subsequent read, write and other operations on local copy If modified, copy is sent to client at close Good for shared files rarely updated or accessed by only 1 user L@AAFSClients are presented with a partitioned space of file names: local and shared name space Dedicated servers (Vice) present the shared name space to the clients as an homogeneous, identical, and location transparent file hierarchy The local name space is root file system of workstation, from which shared name space descends Servers collectively are responsible for the storage and management of the shared name space Design strategy based on observations Files are small; most less than 10KB Reads are more common Sequential access is more common Most files are read/written by only one user and when shared, only one writer Files are referenced in bursts6AFS Shared Name SpaceAndrew s volumes are small component units associated with the files of a single client A fid identifies a Vice file or directory. A fid is 96b and has three equal-length components: volume number vnode number  index into an array containing the inodes of files in a single volume. uniquifier  allows reuse of vnode numbers, thereby keeping certain data structures, compact. Fids are location transparent; therefore, file movements from server to server do not invalidate cached directory contents. Location information is kept on a volume basis, and the information is replicated on each server.@ZZZAFS File OperationsAndrew caches entire files form servers. A client workstation interacts with Vice servers only during opening and closing of files. Venus  caches files from Vice when they are opened, and stores modified copies of files back when they are closed. Reading and writing bytes of a file are done by the kernel without Venus intervention on the cached copy. Venus caches contents of directories and symbolic links, for path-name translation. Exceptions to the caching policy are modifications to directories that are made directly on the server responsibility for that directory.  AFS Implementation  Client interfaced to a UNIX kernel with usual set of system calls Venus does path-name translation component by component Client cache is a local directory on the workstation s disk Venus manages 2 separate caches: for status and for data (LRU) Status cache is kept in VM for rapid servicing of stat (file status returning) system calls RQ AFS Implementation  QThe UNIX FS used as low-level storage system for both servers and clients Venus and server processes access UNIX files directly by inodes to avoid expensive path name-to-inode translation Vice and Venus are threaded Use bulk transfers (64KB) Cache coherence Callback based High scalability (server load at 40% of NFS for same benchmark)@@@  *Implementation of File System Calls in AFS +   ` .T3f` T3f3f` 999MMM` lff3f3޲` eoHff33Ҷ` ff!>?" dd@ ?nPd@ d " @ ` n?" dd@   @@``PR   @ ` `$p>>      (    Nff??"?  Nff??"?  Nff??"?  s *t "0@  T Click to edit Master title style! !  c $v "0  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  Nff??"p   Nff??"p   Nff??"p   c $} "Ss  P*&0(2 2  # l4 1?"  Fabin E. Bustamante - Fall 2002L!0(2 '    # l 1?"  ZCS-343 Operating Systems&0(2 Z  B޽h))? ? T3f3f 0___PPT10.LE\%___PPT92p22 nwu-2002   S K @ (    RA)\ Ha?nwu-seal-gray"@ % ~  Hff??"A  0 " 0  W#Click to edit Master subtitle style$ $  <t "0@0  T Click to edit Master title style! !~  Hff??"A   T!ff??"@f pp F 0    TT%ff??"A H"0 "  # l' 1?"PP x6Northwestern University Department of Computer Science&70(272  # l\+ 1?"P  Fabin E. Bustamante - Fall 2002L!0(2 '    # l/ 1?"P ZCS-343 Operating Systems&0(2 Z  B޽h))? ? T3f3f80___PPT10.LE\%( 0 (8(  (  ( Ngkgk v$   v* J%%JJoo ( N$/gkgk  7$  x* J%%JJood ( c $ ?RH  4 ( ND"gkgk  !  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S ( Ttgkgk v   v* J%%JJoo ( TTgkgk  7  x* J%%JJooH ( 0jB ? 3380___PPT10.aE `(    0     H*0   0  @   J* 0   6    H*0   6  @  J* 0 H  0jB ? ̙33 0 <(   ~  s *60@0  ~  s *6 0  H  0޽h ? ̙33  P0(  x  c $0@   x  c $x0  H  0޽h ? ̙33%  b%Z%`?n$(  ~  s *,0@   4$F p  n p `T @  P  l# @   ( H?"p  H User program 0( 2  ) Hȹ?" 0  H User program 0( 2  * H?"  H User program 0( 2  + H<?"@ I Client Module 0( 2 , H?"p @  MDirectory Service 0( 2 - H?"p@   H File Service 0( 2 @T  ` pP  5# p` P 2 0 N ?"  pP  1 N ?"  p 2 / N ?" ` p B 2 N D?"p p B 4 N D?"   @T  ` pP  6# ` P 2 7 N ?"  pP  8 N ?"  p 2 9 N ?" ` p B : N D?"p p B ; N D?"   @T  ` pP  <# ` P 2 = N ?"  pP  > N ?"  p 2 ? N ?" ` p B @ N D?"p p B A N D?"   @T  ` pP  B#  ` @ P 2 C N ?"  pP  D N ?"  p 2 E N ?" ` p B F N D?"p p B G N D?"   @T  ` pP  H# 0 ` P 2 I N ?"  pP  J N ?"  p 2 K N ?" ` p B L N D?"p p B M N D?"   ZT @   Y# ` 2 . H ?" 0  2 O H ?" 2 P H ?"@ 2 Q H ?"  p2 R H ?"  2 S H ?"  2 T H ?"  2 U H ?"` p p2 V H ?"@P   [ Nl?"` ?API 0( 2  \ N|?"p  YDirectory Service RPC Interface 0 2   ] N?"p   UFile Service RPC Interface0 2 T @@ k# @B ^ T D?"@@B _ Z D?"@@T @   j# @ P B b T D?"@  B c Z D?"  T    i#   p B eB T D?"  B fB Z D?"   g N?" I?  GNetwork$0( 2H  0޽h ? ^WNff30  K0C0p*˴/(  ~  s *Q0@  Q r @ ƴ #"* rrrb@p5 H N Q?"%@ 9Creates a new file of length 0 and delivers a UFID for it:: 9  @` F NQ?"%F>6___PPT9 Create() -> FileId4 " d  "    @`< C N0Q?"@% If 1 d" i d" Length(File)+1: Writes a sequence of Data to a file, starting at item i, extending the file if necessarytt      " s  @` A N -Q?"%RJB___PPT9$ )Write(FileId, i, Data) Throws BadPositionp " d     <      @` 7 N.Q?")@F>6___PPT9 HSets the file attributes (only those attributes that are not shaded in )2I " dH  H  @` 6 N@Q?")F>6___PPT9 SetAttributes(FileId, Attr)4 " d  V        @` 5 NIQ?"}@)F>6___PPT9 )Returns the file attributes for the file.2* " d)  )  @` 4 NKQ?"})F>6___PPT9 GetAttributes(FileId) -> Attr4 " d  J       @`! 3 N[Q?"@} %Removes the file from the file store.&& %  @`& 2 NTdQ?"} Delete(FileId) .    @`T 1 N,rQ?"@ If 1 d" i d" Length(File): Reads a sequence of up to n items from a file starting at item i and returns it in Dataq    $     p  @` 0 N|Q?"RJB___PPT9$ -Read(FileId, i, n) -> Data Throws BadPositionV " d   <      @`B 8 N o ?"@B 9 H 1 ?"@B : H 1 ?"}@}B ; H 1 ?")@)B < N o ?"@B = N o ?"B > H 1 ?"B ? N o ?"@@B B H 1 ?"@B G H 1 ?"%@%vj  @E ˴ #"" !U @E,  NQ?" @  If Name is not in the directory, adds (Name, File) to the directory and updates the file s attribute recordtl      ; k  @`  NQ?"  F>6___PPT9 -AddName(Dir, Name, File) Throws NameDuplicate\. " d     0    @`  NtQ?" @EF>6___PPT9 VReturns all the text names in the directory that match the regular expression Pattern.^W " d:     V  @`  N@Q?" EF>6___PPT9 !GetNames(Dir, Pattern) -> NameSeq*" " d" 0    @`<  NHQ?" @ F>6___PPT9 ZIf Name is in the directory: the entry containing Name is removed from the directory. If Name is not in the directory: throws an exception " d  +  #  .   @`  N|Q?"  F>6___PPT9 !UnName(Dir, Name) Throws NotFoundR" " d    0     @`  N Q?" @ F>6___PPT9 zLocates the text name in the directory and returns the relevant UFID. If Name is not in the directory, throws an exceptionF{ " dI  . z  @`  NQ?"  F>6___PPT9 +Lookup(Dir, Name) -> FileId Throws NotFoundR, " d    <      @`B  N o ?" @ B  H 1 ?" @ B  H 1 ?" @ B  N o ?"E@EB  N o ?" EB  H 1 ?" EB  N o ?"@ @EB  H 1 ?" @ H  0޽h ? ^WNff3   $(   r  S 0@   r  S 0  H  0޽h ? ̙33   $(   r  S  0@   r  S ` 0  H  0޽h ? ̙33   $(   r  S 0@   r  S 80  H  0޽h ? ̙33   $(   r  S >0@   r  S ?0  H  0޽h ? ̙33   $(   r  S Q0@  Q r  S ?"V@ p  Ap 4 % H?"Pp HUNIX Kernel  I0( 2I  8O $ H<?"A Y NFS Client *Z0( 2Y ? N @  9` 2 & T ?"v ' T ?"2 ( T ?"IB ) T D?"B * T D?"2 + T ?"0v , T ?"02 - T ?"0IB . T D?"B / T D?"002 0 T ?"v 1 T ?"2 2 T ?"IB 3 T D?"B 4 T D?" 7 H1?"@U OVirtual File System 0( 2  : B??"i VUNIX File System*0( 2 B < Z D>?"kopB = Z D>?"|p > H,E?"p` DRemote"0( 2  ? HdH?"` CLocal"0( 2  @ HK?"0Z J System Calls" 0( 2  @  0 [_ `4 C HhB?" 0 HUNIX Kernel  I0( 2I  8- D HO?";U  Y NFS Server *Z0( 2Y  T  E# @0 2 F N ?"v G N ?"2 H N ?"IB I N D?"B J N D?"2 K N ?"0v L N ?"02 M N ?"0IB N N D?"B O N D?"002 P N ?"v Q N ?"2 R N ?"IB S N D?"B T N D?" U NpX1?"@   OVirtual File System 0( 2  V HH?")X  VUNIX File System*0( 2 B W  ` D>?"+ 0P B X  ` D>?"< AQ  ] H``?"m t  KServer computer 0( 2  ^ HTd?"  KClient computer 0( 2  _ Hh?"` `   GNetwork$0( 2 ` Hj?"0    H NFS Protocol 0( 2   b 6l 0   H  0޽h ? ̙33  P$(  r  S  H ?" 0  2 ? H ?" 2 @ H ?"@ 2 A H ?"  p2 B H ?"  2 C H ?"  2 D H ?"  2 E H ?"` p p2 F H ?"@P  3 8   Z P  I H,?"  CUNIX Kernel  D0( 2D 2 J T ?" K T ?"<2 L T ?"iB M T D?"<B N T D?"<2 O T ?"` P T ?"<`2 Q T ?"`iB R T D?"`<`B S T D?"<2 T T ?" U T ?"<2 V T ?"iB W T D?"<B X T D?"< Y H?"  B Vice  0( 2  F   [   \ B?"  CUNIX Kernel  D0( 2D 2 ] N ?" ^ N ?"<2 _ N ?"iB ` N D?"<B a N D?"<2 b N ?"` c N ?"<`2 d N ?"`iB e N D?"`<`B f N D?"<2 g N ?" h N ?"<2 i N ?"iB j N D?"<B k N D?"< l B ?"  B Vice  0( 2  F 0 n @  o B?"c# M Venus *0( 2  p Bm?"00 CUNIX Kernel  D0( 2D 2 q N ?" r N ?"\2 s N ?"/B t N D?"\B u N D?"\2 v N ?"`@ w N ?"`\@2 x N ?"`/@B y N D?"@\@B z N D?"`\`2 { N ?" | N ?"\2 } N ?"/B ~ N D?"\B  N D?"\  Bx?"`  J User program  0( 2  F 0     B?"c# M Venus *0( 2   B?"00 CUNIX Kernel  D0( 2D 2  N ?"  N ?"\2  N ?"/B  N D?"\B  N D?"\2  N ?"`@  N ?"`\@2  N ?"`/@B  N D?"@\@B  N D?"`\`2  N ?"  N ?"\2  N ?"/B  N D?"\B  N D?"\  B ?"`  J User program  0( 2   H ?"   GNetwork$0( 2H  0޽h ? ^WNff3'  &&,uN&(   i N ?"_~  s *D0@   <#n  y u #"& tU . N?"m  c Transfer a copy of the file and a callback promise to the workstation. Log the callback promise,d&  .  @` , N4 ?"bm  R   @`3 * N?" bm  ACheck list of files in local cache. If not present or there is no valid callback promise send a request for the file to the Vice server that is custodian of the volume containing the file Place the copy of the file in the local file system, enter its local name in the local cache list and return the local name to Unix.,BH    @` ( N(?"b m  If FileName refers to a file in shared file space, pass the request to Venus Open the local file and return the file descriptor to the application,     @` & Nx?"bm  open(FileName, mode)  @`q  N(?" y i Replace the file contents and send a callback to all other clients holding callback promises on the fileBj&      @`  N?"b y R   @`@  N?" by dIf the local copy has been changed, send a copy to the Vice server that is the custodian of the fileee  @`  N?"b y CClose the local copy and notify Venus that the file has been closedDD  @`  N|?" by close(FileDescriptor)  @`  Nlp?"y   R   @`  Nc?"by   R   @`  NTW?" y b  R   @`  NJ?"by  7Perform a normal Unix write operation on the local copy88  @`%  N<>?"y b  %write(FileDescriptor, Buffer, length)&&  @`  N1?"m y  R   @`  N$%?"bm y  R   @`   N?" m by  R   @`   N ?"bm y  ~6Perform a normal Unix read operation on the local copy77  @`$   N?"m by  $read(FileDescriptor, Buffer, length)%%  @`   N<?"  NVice  @`   HPo?"b  MNet  @`  N?" b OVenus  @`  N,Z?"b   U Unix kernel    @`  Nr?" b V User process    @`B  N o ?"  B  H 1 ?"m m B  H 1 ?"y y B  H 1 ?"  B  N o ?"yyB  N o ?" yB   H 1 ?"b byB ! H 1 ?"  yB " H 1 ?"b byB # H 1 ?" yB $ N o ?" yB ' H 1 ?"B d Z D8c?"5B e@ Z D8c?"5B f Z D8c?" 5 H  0޽h ? ^WNff3r@ǪC /0 !#%0)+M]9_ %ac0dfh   j' s/-0Oh+'0R hp   , 8DL%Communication in Distributed SystemsrosFabian E. Bustamanterib nwu-2002 BuFabian E. Bustamanterib71iMicrosoft PowerPointrib@dO@PxaE@P7- GPg  R('& &&#TNPP2OMi & TNPP &&TNPP     'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee--&TNPP &՜.+,0    rOn-screen ShowNorthwestern UniversityCd $ArialTahomaTimes New Roman WingdingsVerdanaTimes Courier NewSymbol Helvetica nwu-2002Distributed-File Systems BackgroundDFS Components)Flat File & Directory Service OperationsNaming & Transparency"Naming Schemes - Main Approaches Remote File Access Cache Update Policy Consistency#Comparing Caching & Remote Service$Stateful & Stateless File Service "Stateful & Stateless File ServiceFile Replication"The Sun Network File System (NFS)NFS(Three Major Layers of NFS Architecture Independent FS & Mounting NFS ProtocolNFS Remote OperationsANDREW File SystemAFSAFS Shared Name SpaceAFS File OperationsAFS ImplementationAFS Implementation+Implementation of File System Calls in AFS  Fonts Used Design Template Slide Titles,_qFabian E. BustamanteFabian E. Bustamante  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   Root EntrydO)PicturesCurrent UserSummaryInformation(8RPowerPoint Document(DocumentSummaryInformation8