OS_Delivery/0000775000175000017500000000000012007674726013137 5ustar kaushikkaushikOS_Delivery/TrustZone_Seq_mutex.png0000775000175000017500000147547212007674706017701 0ustar kaushikkaushikPNG  IHDR)AibKGD IDATxy\Te3,*0 `d)& ;jnh3sC[Ps7&nv'`&¼ +rUq778"O3\:sa,QjHH0pdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoE@ZdoW_)Ҹq?رcȑ# R(UX4[tU .۶mg>򲳳}%F#""СCͻtR~fΜYqj)S>|-XZZFEEiDFFZZZ?Dl{{{gggoe${L.PKuEI&988lܸqŊ\ss .ܼy3::[n(C 5t۷g;vU"V-ccc???ٳg7lPH)߸qCQF5oںG񚞳g϶tR>}&LԡCAwP(>CgJJJ>}6lظqo:4޼yήsȑ#>>>wѽ!GNOOŷǎ9rvmjyzz 0cƌŋ?\\T*!yyyN Ėߦ ,{_駞fff78p*@/!!AF]~~5jڵkwﮝ p/b݂ ۷ ϟ_gϞGtuu}}UTyqqq``_=i$OOYfرcặYf^^^###kggNX`ԩsׯ c\|944T'O5SEн×,Yxȑk6n877:n\sG^^^vvvzzۓ{]~q\|QF ;e˖s=}TAAI&iƱQFbٳMMM]fff&BPPP͛}!''gʔ)SL筷㏯\(J8qӧOׯcƌaÆCرCbcccmmP(4"̙3u쐶mۮYfҤI>>>YYY;v066:/))پ}ٳN*v6ll@7{ѹsgKK6m8p`Μ9 :ujb%&&j/VV{{{[m=B2dYf͚5k۶A֭[QQљ3gto_IIwܩT* p|C ۳g7|oVFFF={\~Wj9{߾ۍ7nѢؒٳhϸVRRRXX#QX*y:{w;urю*I8R*|Add'OԩnAƎo߾VZV[lٸq >SI&M0APpqq9װV*}]dIbWlؘ:UдiS*ƎۧOu֕[^nnvˍ7LL9grȦM4hPA:w|鼼<[n? b+Գg#FԩSã짽zZfͽ{sׯ_ONN*((U7n\IIIllM/^ݵkW=K;;;GGG>>>/DT# zrssoٲEA;wܪUO>$;;{ڵJrҥҕᆱS//zꅄ̛7իV|ڶm[ZlٲA!k׮=r6l8o޼ .hΊo޼9r#F8::ݻWVԕՈCjjj=>}(w(Ç@ZdoE@ZdoE@ZdoE@Zg~5j租~!??_Q~;66܏rrr4cΚ5KP=zTd'NҥRܽ{Ǜ4iҫWݻw׫W//>>>/+KKzzz'Olaa!YPPپ}[ʻu`"jɓk.%22488xJRl466655ռA󺨨hܸq-[\vӃ-[tbS@@ɓ'|Z:u*00P[jͧfbb2}/޾}[w;АNsmڴۭ[vZw}7AI1Eə5k&/GC|[o^6666,,l޽ov7|ӢE OOOAӧOk>uvv_XXXhٳT-VPiwuڵCʿhS*ƚիWN1BabbbccT*ŏ{ѦMgϮX"11Q/SNJevv yyy^^^mڴYfӧO5UA'g~뭷Zl~۷iFǂׯn/**ommmūAزeCBB"###--K.T0b7j'fllw9M֭[#""._&炙3gNTTԚ5k?h"C8𗙙vZgg]FEE=\lwrrϽ~7zK3{+79rٳ?sPPw}Q^zрƌEV>|y?~X\ȑ#?\]]5sUHtL3C߿iwrrZti۵kDs ˒Nz왙%:thKׯ_dd ϟ? 8&&fժUog}gͭgߴibccw޽bŊիW[Ny۶m7oNMM u'3z}gϞ :O>'N6lEbbb_~z/lٲeС:th7x#**J\6,,,""]v{ՌYQ;R}VP9R)VV\\JVtJPPPtttII{!BJJʃ|}}z9=5/@ U :tR''Ν;O>]%AZjell''Gm۶bݽ{.\ ӌ stt D!yoD[@TbbZ]TT8jԨl?+bjj:jԨ+V}*w!$3Ю9`,XU~}kPCeh4))I5 ` -{+ 777 . H$;;PT2j. j܅04C .@MB@MD@Z ;w,w!$yoD6ZIIIrrrz.$JJb5{k br۷/##KBP{yomذa]tQTr@\0Tdo5… .CehٻN:IIIFF\K@C*CFFFnnnrW* @"مJ ?o [߾}ccc;] j)@Zdoeh;??ݽk׮r\k%%%rP** #C; jq)m۶]C{{OBP{KR( ֶC3f̸{nGsww߾}{ܹ߾}6o#  10Tdr̝;0--mӦMonݺk*7Thh[彞i'Ny܅` -{׫W/))駟~zA GLLR ?ˋjӦ͚5k>}*—_~٩S' J2;;[+V$&&999>>>VVV:tzjEboo٢$R)ݻTƍg L6-55uڴicǎaՎ IDAT߿;vӧH^` m5###77*OK̙믿Yv̙nZfM@@@hhhZZZ֭A$ds禤,^{ e?~xƌǏwww.ºu͞={ĈbM6mĉ#Gtwwoݺun T$]XXT*n r1RٳgfffVVVqqqLL̪U\]]|>lϞ=jή_~ <<&&&(( EEEg}mllܸq| SSSׯߡCr >y榦2d޽{H0l[lQ~܅04#F9q܅"{X\\JLIIyC޽A .))9x𠵵u=J }iXрvjԨСC+4=...((o[f>> nӜKgyoDsssݻw*ꢢQFegg[NSSٳG\tԨQ+V8y8?Y)&&& ,8sLqqKݻcMw»wnݺUMrJ\\lllׯ/w111QYYY]v_~jj]4kwQ$@/\*,_ԴUV'Nzo-~dɒ%KT*OOO ՃN<ٹs͛;lxxѣϟomm=vج,;v'ZZZo~t˛3gNÆ [ly7Ǐ|իީSٳg3Fv7[ fT*U*AF 6++ٳgru)!!!>>SZTSnذaSL=c a4hPvx  m*ww]j6m̙3eٳ.Ceh<))XB^M޸qC*do2mll&w2$]XXT*n r1AR1JNNׯ_F|||g_+oƖQNNN|I۶m-,,t ..2k,BqQݕUʕ+Ѵim۶i)Q3ȿoͧkVakkۡC3fܽ{WӳJby|J+b@"ݽ^N8ѥKR{Ǐ7iҤW^wW^_|||/^իW͛O<¢Uܼysǎ<عsg-t .BAAAdddn*΂ jXРAYfUܹs 6mt֭[_vMiEhoذeWZѰ)\k RՓ'O߿]ĖHSS*JTV뢢qƵlrڵٳg׿ծ];A\\\\\\G(;j-[:w|}{{{A(R ~m;tв* &M;vLw/,LJ+Z\w10HJRR1ddh_ݤIl˳gϞR=o޼ڍ~jj>6mZzzݻML?bee5}o6==]17o߱c֭[k_%.)RhѢ9sillwܹ׹P J)+V]CweddWBP{K[|ׯT[n еkWF͛7_]v>|ZG{}W-[񉍍?8uT`` [n}}gϞ:Ɵ0ai# XXX<{LV|}Ixx ƌ{T*6lXP:Vv*ߪUΜ9بQ#kPCeh罕JeRR8vL8Ѻ<5z뭖-[߿_mڴѱT׿Ԝp~iAA***/MOvA-[Ҳ_7n\QhӧO7nMϠAuxϞ=/,@N: XJٮE*C;mll\*m)բP(6nlffU^рƌi[ZjԨQZsƍ5jԻwrG>|5gcccN TTOqqvu),ȑ#{W_ <… V>|xٞ+W,{]V={~[jUvvu^]iE.$]XXT*n r1ޯNR5-yν{>{gφڧO'N 6L111ׯ__~_v677Æ  wU-[ :Cx㍨(kWn7ww]v?/;v… v߿nnvMMM[j5qD{{Wj_ig:Ҋ] ?. ۲ejܹs.3fÇ.?a ^\\ܩStOdmȐ!߷o_ miiyiky9o.2AM6sZXP9@Mdhٻ(99YχU+M6qUT2@%XXXT*O5XxBXh܅04^va߿-4i"w!$!>DBbdo5Ɍ3.` -{[YY%%%]xido2mll&w2$SPP`aatk sU_...;w|.\T*+_e5Znܸ+W_e7V4W5W$x)sU˖-&((~^vU%44E*^D+++''j>>j7TO_ffڵkvsAM:m4cǞ:u_ ťKNj-jҤŋ5yyy^^^mڴYfӧOA/;u铐T*AXbEbb؞ceeաCWV4(ҥKwޮ]۷o(U{{{;::o/.+ TQ{̪Ri/KKTay䉛[Ϟ=.%/_>{lW\)o/Ϟ= ?8y򤣣>}t֭[Æ 1cZ~իW>رcnnnnݺ]xΝ; Rؼye˖uQGb''ǿԺ^ZnӦٳgp7jY_t_ewiE%P~~~ ޽[BP{Z~  4}=ZnYxcfff)_~E|d14kگ^ڴiӒZ=h |Jui&ٝ9sF{E:CBBuMOO1ҥKFԺt/V]oWnԌY_t_]]Jfر*rڋke*HJJ)Ν;ׯ_kkr;\pAV;;;otY˃|}}z&BPPPtttII{QLkuR)¢EgϞ=r۶mvvv+**]422ݨjr./P(f͒f۶mrвZzBIbff"=w &&&%%%'Nܷo_˖-uP(n޼)ܨܾ}{[[ۣGKff Ϗ3fL]jmmݨc@7PEFFFZZZ.]eBp7jY_t_JE*KKT%5߿͛7ߺuՇP  P @vku0`ѢEiii ֭6lQǎſ?nܸ1xwUhӧڵko߾c4000$$$!!Ç{|4jԨ+VXj̪R*kewvI宽rBBBAhҤIDDD^^^0` Tk֬AP 5!'']  A:f̘j>fv-[ ФI &ԫW=t?0p@i kΘ1c_~ܵ0(999uԑR\s tҥʳchSN_߹s'887\hѳgQ&^CPƏocc~ AEn߾PƪU(rBCCU*U5FղBBB5o=zx6mڬ[Zzyqq V^NW<'Lj#bbbv/w-L.effKRc U%U9stTBR1ddh[OJ2))I*ڨsemllBCCLT*u/N6/?, uqqeկ.$$dҥ7m4yI&mܸQZoo j̵9}t||v9s^AիG}Լysj233׮]ܵkרϟNNNK.޽{vBBBn߾-EGG{yyif͚5O>Ͻ~:ydfff߾}uzڴiӦMspp;vS^P\t ɉ񱲲{_Ê++Je78޽{O.wH pq 矂 4lPB{ѣGru@@g϶o~ʕbcSSS -[ֱcG}>>>?[ 6c M''Ǘ]WVݾ}R{YPPPw-..ŋwQnnnb/:w1cBCCu`kA># Z.,,LJJp܅(Ms/Zyŷ?41$$D|]n"{{_~ElzjӦMKJJK.5jTvuz  /vtt,wC Μ9S]Н_n\ti~*0l޼Y &]U611a5zZpԩSgΜ٠A幺o=<<Əcaa!naaѢEg϶lAh۶hggw޽"ǍϪKٹs㭭+ڐN:կv[o}v}6bN)((`5ȅϟ֭ח/_NV\\\RRRķΝswwפ߄EFFFZZZ.]ڷookk{>5kv޽D'۷e˖jmm]jBTb+JTٍwm֬>Xs}jz˖-r|G666{쑻^doCǎ-[Fꮆ֭;`E%$$[nذaO9r?3,,յiӦ!!! %%%>|cyk׮p;vLLL7~]gΜ)..t&U.׳];PPEDDx{{2O>6mԩS5EDDk|޽b%K,YR<=='i\ǪǏe;;;??={<~xΜ9N`. =z󭭭ǎ v罼^ح:qƳgjDa`T=~O> 48~ܵ@>x*y]taڍgΜ:uŋ;Lwwɓ'O|ڵk_e۷o;jժz=_HHŽ{f̘R(cǎ} U6oޜQ}Ck`hל߿QF:Ps:utw  ]rmƍ>zUGZj51{0l[nݹs^`AAAׯodAVVVzv|35J_QuճTJz}WI޽;}%KL:O>**C 4HJJoVoժUrWQn]sss=;שSG255U*zv611ԳqY\FFF׳Bֳ *J".ű>}z|Ǐ/^e˖ٳgO07PZ655uss RK.-,,ԳӧO+zsYϞ=+..ֳsVVVQQ9''Gϟ?׳s^^^~~Ot+W._<00PN .eo'Jz#Hѹ0;;[EEEX[<}Tjɓ'zv!33SO<=zt…r? ݻvȑ#Gg I&EGGGEE=ZZPK$3 us\j܋gϞ=~xo#{I>|8%%EER͘1#88nqZ~a߾};&w-罁BV/ZH6$$dԩOY!1]XXܸqc  7PS?  69sɓU*wJ@Ojz…V?BCC {U(~~~RWꫯ222.w! x6LgYZj%w!t 8qK-(>`\GPSZ`ƍ7n8;wܹs%2ݰaä$SSS / 0TMMM}($SPP`aaQNkA-\kU ,F IDATfԩ666;v쐻^doE@ZOww]ehs$''r077WTu֕^v\ o߾rlذ!##cȑrڋ &?y+W]I PRR"ZרQ#;;;~I|Ey~m@Y999"55ϯe˖NNN&Mk޼yzVYD\y~o^jYf)Gj7V~!C888(Jgg\zwޭyQwM\OX aBE$U@D+ Z(VTuzh P׭Ve R*e7P\"B%*`šݼ599s3S`K,y䉌$#ɱ/UdΜ9N~orWX!AF2BJ;K\bddtˮJ;Ôs 3~'AƎMݥ-'IMM?ŋ{9sfذa::::}t߾}G}!MMx-]6zZ =X`v]?ѱ9::ѣG{#ի?~HA=D ,NOOJ-Z4i$PUUU]]]"nnn3g-[u1o}ȑ#޽ʕ+v/w;v9Rr?#GGGexsbD7{M:Upʔ)O>-))L =:t萚ZWDgϞyxx w5}!CXYY';ݻR!DSSsƌ{!$%%M2W^ZSUUR[__o>]]].+Z?^z9r{}QBuHUV555I4ƍ CBB+եҧ;hmaw|>;t07///H(rBd!Ço=111==P9z?Jގ+w`o߾]|qϝ;D ڽ{w1b:sݻwokk/ƋGkkk;FFFl6{ǎcnnNAdffرҒ:uiƐ;wΝ;% ÐTƍ={rŗNȎ'ӗvdؙCvp6믿ʱ/@>#H.$~iff&{SNX"33S΅ K,.Tk֬D .\X~_~?^OʨcggTQQ6lX,n3t~y:uo߾[nmZK_ggg??/_N۾7쐚ZlllTTԫWąo*-P&9`N^%*ӗvdؙCv=7$afffiioI9rZƎ%%%ӧO駟2##C>ÇO:ZLxtpp O駟Oٹs~w[kiipqq|.mddy}I"k?Db``f͚6ƐL<ƊKARd|N;shrCncJ''I&);w ƶmN81}+W믉"O'N( ?|ܹiӦ:t<''G|5!EΤDͯ_?>K9~xUUUNNxq׮];ôv:{ѣG_|YPP0k֬6sgΜ k&???d[;hР9sH>A͑v惠<}o-**}ի3fƐ2lڴi˖-AU]:.7ŸA6nll,,,~B'1cdggzoر=:s̴id쒖~b_W^gAAH$ZbE޽y<^kkбx⍩{uuu==+W}嗄A<һwdiHh"cc/bРAuy<^lQ 0|##۷ow~w͚5999YYY)Uӧ''O(; ...c)r*O_IcX,Sjj vvv~4r%e,O' }}𡹹ك_m۶_ ,Pv~/^>|;"i#==JZ;;+WΘ1{ciaʔ)n󧱸ݽN= ކ 6h ePQQ!|@7nA#AJJȑ#=<22-55Um4j|H4uiӦ=|… 666TcJJH$Y,V~~~kk/ w'}ҚԦYӿ#G<~x顡֗߿xq]]۷ow4ܿٳG|nck׮);tСCz"]ݝ,_nnn622z*&&&@[[*߰aCϵK%oCZSҚv_r%Gvwb6fϞw4ˣ>7ݮ9裏?)fϞmnnN9qℳĉ/_,~|>AF FQQQUU1cʊ ! 2}#l6ȑ#}_.IZmbt355lnnj !$+++$$d;z+WtE"xtE7\"(''GAQWW_ze%Kl)RUU6lmm N<|>ñDT5ɱѣG8qVVV!!!Tx1 i!)IJ#%& y<^nnnyyL;s Çj{| ,FO<|;AAAMM1cDFF>zŋ>T֭[YYY L&fQC ~'$lW}|www==.9v-[Š ɥMM:0|p@O]]Ocz ݬwiSHHs>m``0i$BΝ;njbbW_}wmvVu떮۶mۨ5kzzzfddHk3MIjlWK}WVVv۷'&&:;;khh|k׮mO<166, ?zeٰa˻{ր6PXXXSS V.^H}755);B555);ED/^Pv hhhxSt~MӍjjjK.}ˁ˗lӧccc*.|H6ʕ+ʎ=@ l_>qիW:⅛[LL۷ 'ɹ~СC(AZRQQ!rށ$c\׺u<<**ɩ}ׯ_744hiiaל@Ofcc#] Ômڴ%Kt~qƕfggڊp8KKbHTSSd2oܸA:w\j;"""44T2--++knn|KZ/蘒"eҥԶܿٳG[[*OKK~ccuuuo߾aiD"Qpp˥sm޻ƍ yoŒZ@@fΜy~lŋ[ZZMMMcbb222Idxرh.xb|8!ϏfbٳR__Jչqƀ$0@UUu̙'O$3dhC(:u*::‚JF uuuooo__Lig[Zr@G7vmrf555_|:C 6---leEEEQQQUU1c:@ ]\\ r;;;3̛7/55СCT{'vԆaeeess^:IZ6zaoeee 8_~GrJ-Ȩfffv޽.0%,,@TTT!Жua9s8kggd2yyyNNNKUUUqÇǏٳGrι_~rZhx!R|P( x) 2BWRR"yѻd!w4hPg,t{o]7ϢX,K:obb7|pBi5gϞ]ZZ:i$CCCq'2|}vggSΜ9*444:tʕ+%3ȨF|ȑ#ߘa'߿oiiٿZJ놆---˭MLL+~!f׮]wV̅ .\xڵy݈ns_$a nl6{f?ٸq$ UTT֮]yfexg׮]K7!DMBX,={>} ww6×.][n555UDJ7{K{KEE>Ƀݯ-W8r'''___erۼP(,,,Uvx_0L :eee]SQQajjjbb#egNt譠`׮]W\QvPBHkk\.ȑ#˝RSSر$ݽ=` =ɱcϟqe г,_ٹw+((8|@a JnkkKm/ZH]]Z@jqg&L```r]pƍv}}}RRիw|ג]tRyyW޽#""***B@2rHkk넄/_vMx{t{kjj:::4HA@!o|>w===oܸQ]]M9w m///ƍϟ5P۾իW/k֬IIIٱ3]wƍ-Ztu@ ~ԪUN>)_ 7CtջwoHSeYj޹sgdeeUVVܹs&Olll_|ˋ`xzzuo55ӧ[… ---7nܨou{ǎ;~xUUժUlmmMLLՃ"""rss[[[322nCP(,,,y󦲃B` r`2,KSSSZmmmWWW###SSSB׫WF.bccg͚vZ}}ٳgS˕wwƲemll333¨(z%0h֭[r/::zݺuk׮Rv~|>fXegNtzspp srrRvPBHkkt3=S+ d-v7\uuu:::_3P(d2eDx@[f ޾} co////x}}`0˖-666 TM.;bkklF\ <==9NHHݻw /)) 777={6!dƍm˜III<W^o&s8===ooS5e/:<ˍ7! Rv2kG} ݻŋ˗/kkkDb緶x񢰰xbwʕiӦ-Y*ٳg9HK. 7n\iiivvMrciiY\\ܾrʚ#""BCCe7ekk{)));vҒ^hó]cHvǏ޾}86 v]v);( !UA!`444988BZZZMMMcbb222D"P(p@LL1!$ B]]733m!Г>}zVvPLB>rHzzz>}K|||njSWWWVVFQP6 {{{ꥋKAAA}}=Yڎ6 +++e7%EEE|>СmʳBBBد_G^rm!gػXh oĤھ~|'NxUHH!ɓs8;;;CjnΎdQ/򜜜/)55.]Odoo#Y( y<^nnnyyji>L&ZA@!oD |P(„ 233FiMwYf]V__ٵC]repph?-@lٲKn޼YYo7o޼iӦe˖); |0 Xt{߽{I| 9+(t3@PXXب  r`2,KSSSAEyo>#Ԥ @+ׯ Wvpa =MXXСC-s7co%{Tv<O>'OVv)55}yqqNr;;vFyo& '@P(d2Җ[۹sٳgD"Qss; Y`#EB't"d*;l-[:|744411رc{!p#FX[[ggg-[ظ'''744P;r;v?fO8˗;vrvvv;JNN`X111T@ HII9ruBB˗/$׫W/۷oB.]DU(((- ,Mt[[[j{ѢE굵;;;BddGm><22o߾׮]k%%%gϖ -mK~yfqݻ333jPP:TSS`e˖QFr9sL?xd VOOҒgooojjA]}OOOUUUccN֦deCCCJ>W_;wBe#IBԩS</00gXv/C;wfΜ c- kBHQQ@ ^S/ BmZlˊ l#G痟O5^UUcnnnnn>f̘">ߥJ6y<qܹQFQw}ad#I"Ɔz9lذ7 mRedXZ됪*aggd2yyyNNNr=z'?~leeB5008y^__?''M &&&; ,6Myyy;wܹs<ƦjnnnL&S!;dgg`0>|H~oBZkkx:=У3u,YD}544&NYVVuiӦέ[L&#EDD涶VWWgddBԦOnݺ .ܸq2a„̦'O޽ÎنGEEÇ g\\u9v-[ŠwXmȐ!NlO7$%%%v/ g{(11o p!7VO,--/_m6<***(((**bΚ5kڵgϦ!?)S+'MIڮFFF//W^5JC޾}ԩSZZZjhh/_/=fۮ^jgggkk[\\,o߾`J hf,݆n*((CA b@Kt{3LGGGeErSQQ!W@(2.-Ѝp7GE"İxeГ`z"nc۷o;99*;(@ JGׯ KKK8@,|Sjj;nXGGGAB6o߾ ɓ'oE"QSSS7`,0jf 内yxx(;( .or6lp8!!!wޥ|-[lllݓcccGammrw1~x6=qė/_ر٥Ss8===ooΓnkkKm/ZH]]~ggl瑑}uuuvZ84=])@0eٷo߿w&?СC555 ,ZlUݙr\\\bbuPPЈ#\\\N>;gΜɓ'khh:u̙33gtrrs̙ՆΝ377pĉϝ;ե`b_~eccKݻpn? 潹\nAA%00p3g{Ԕ啖6j(m߾=11YCC?_v|al-Yf 80%%EY3**j֭Sv@m޻1MMMd2>\#VVV Ν;jժoVAÅ7$wٵkZzݻWA@Q0ZZZZ /@Kt{kii9::*;( О !UAVP(rk,#7oDa6aiF`0 ɜ9se7X^^3y 7$YzuSSӥKΝ+Ν;f̘6;ʮܾ}1wt2,,lȐ![@Y<l``pI_QMUU}aHHHHHHw%Г 2dΝo\zz.@ 4gΜAAAw!k}64hPAAZ05krrrX,K:j*,~P([P{@/0i&6?(;|0P,ncׯ;99͙3GA=߻P]]]A}d2Y,nУ3leZYlYMMի>\t{SL ]v9sFA@Q|o899*;HE7[QQwء ({]D&ŵ|rgggŵonc>`Ϟ= /,8&&*)))#GNHHx%U^__zpmBѥK :::6ˍ1buvv6ۋp8zzzsh>,""*߸qc~~~v:L ZvttTv P|)=BHkkB@d2ۿ%K>}իWݣWZǘK'$$BV^]TT~z]]]ٽ޽;33֖dɒlԩS&&&gΜ9s޽{O81`7v8jZP{a @{ϟD#GTvx6-n`444988BZZZMMMcbb222D"Qssbbb<==UUUmlleG ^޾ⷦL2p@55ŋ_vM<ݞiAA6 %l6ȑ#? ƍb gg碢*qW^Cv}mp8JNN˫xlll mmgggO>îГ`a'NxUHH!ɓs8{{{}}6-TWWSׯ_|KUUڐf۶mʣX,xYf]V__ٵN2eƌҒHk CCC\288X+V$&&~gZZZG=ͦ݇ &z'NL8 1v3gΜ>}z̘1>Z6eeZkГ/,,Ln-Zz;w*;(𡩨pwwoStRֶ@GGGA@{-e[GGQ)@N***VeZ @SSd*; |9hǏDe6~ze7[qrrJMMQ,~%sx>}LC:$&ˍ"""*** gϞǏ^N42S8矄Ç+;cԩÇ+;|X8eqq1r<ʕ+ӦM[d U>uiӦ=|… 666TcJJH$Y,V~~~kk/ w'61:rʚ#""BCCqƕfggnڴ~9E"QhhҥK횚&y [sΕgϞp8ⓐvǏ޾} Ҫ'&ñ())ijj $O%88xz6 ]v8qBA@Q|oP???[[[BHKKKZZZ\\iLLLFFH$ gΜY~}~<<<7`0JJJjkkב~0@UUu̙'O$466;v,::庹-^8==KbCOOO P(}/$61zŋuVVVVCCdzzzT!Ce/7 'FFFnݺuڴi}yEEE͚5KZMMͱcnٲE(VTT@zzz%%%KfQ 5O8qȑgϞXĤ sdɝ;w ԙ t{Hzꦦ۷WTTXYY9"q_ZZH$ VbѢE666)))MMMzzz2 ~f[X,K;wZYY.[쫯o@ Xj'|biiym۶Q塡2ڗ[bb7|pm٥&M244Qm:::SN9s&Uhhh0tЕ+WKfQ 5WXgiiiuxǸg /_\__O>"h…fff"(..ʪW^&L_WLHʭ[MFMݻwO١gشi!dٲefTTԜ9sAkjjݻɓ' 8o&NKKKڪtRa>DyyyUV%'''$$>}:'''22XXX(4))_OիW/k֬III|{ϟ?_dI\\\MMMii ![n޺u!&&&N,X_RоB(Biii@@CTTTvٿeG˗ݻ'''{{{+;Qw駟ƍ @EEeڵ7o^ǯ]{QYԔط"\r%,,a׮]ݯZ5jԿZ--ӧOg//xCC &$%%}w iiinHss222<<<ܤҾ^#%źrZMŅ^eee?Cjjjss38qx.ijjڻww FkGԨˡ+]x***_x㣸/]TA=X,SS={ ( ͍޺u۴6-,,l?1Ѝcשּׁ,[PP@=ChѢG1M#EEE|>Сm 5ǖ ,7n܊+:3<+++999//㵯Ν;&M_~"?." ϟ/߾r---WGGV}d<"X^[[… + /^,_ׯ~M~UUU===W$xB~]dXL&-ۙ:ut?)WVvt֭TSQQ/l)t{tFKKKFF x·ujaaaYYYIIIsrryo%TWWSׯ_dѣG=ŋ6l )))!=#66v˖-zzz*&C{fJMMMII 0`͛7}]B'|ᅬ?^[ĥ+{%Gb2/u|ZZZ߿/߾╙ 函z{kKߗ/_ʷomm-͖o_]]W^ɷo}}}kii=zT~B{dGEDDossUUU[px1z>}YYYɱH$jnn~ݻwnJ$~zggϟ_pZ T]]?߸q~}jjjӧO_nKKK?>}Hk0--M P0aBffĉwݙCu֓'O cKf̘Gn_MQ(W[Ԃ233׭[w֭ &ج]߿KwI0̝;w*$L{=bϳ~544WMMMPK=Yn,K~\XX(߾o3/ 7l ߾zzzrſWƧ` =_f}ފ:|pTTTvvIģА{{#FXXXtllllZZڵk8ЧOi /^Ϗљ5kիWxcKnػSNjRCډ #BZeQ"M٦, 0Y°} aDt:q}v~[Sǥs~?y100;vϖ]lĉr>zH09{ @#͙33##>믿Ν;|>LNé,:MMMZ~t]WWWaUUի_W__?77WVf+vttrvzouuuP)ngB.mQ[[[XXh``i1bbhjjJHH|8!Qr;vL$Ǐ;\`BH6!bihhX[[^֭[o,Xp OOOȂiGgJ(O>1&==Ȓ{͜9Sã"??_44ihhlٲ)2g\\ȑ#mmm<&/߿7ߔ?~ddի[ZZ$$@V{8;;TB7n&͔)Sڌ,--%H6RoKJJ^PLLLjjjffa} ʒ3ٳ>>>m۶_:F=o-,,_,XuAiftFijjϟ?;\Lٔ94mF0"1ہ_%+++"""##C4Y,Yrҥ5ӳZ}Y[[3]TTty/\P$)d9K{yyƺ*tڵmj`1PH]Ndvrr"˟@B~QdO555;4395N>矷o711iݻOD=~L'OL6ۻQܮEeTQQu?p<ؽ{w߾}'M$u˗/ݛjZtӧO{%+ϋ/$chjj/*8-[Os0˗\ŋ* 9'L4);;seeeO3gSRR߿]~`]]j//޽{Ϙ1~`RgtrrgӧORR<ђ1Ν;'u{G:u*n_ݝ9s,|>uvvͥ; tqqqV -Q@fÏ0^XXڶmAQPxp7t'6?E  1P{@w2`tx]b(70jQFi{:;;< @ϻfQnV455 Јi9둑ǎDo͛75@vZt%Kbcc=Ӯ9)77wտ+!wk֬Y` ox>~XVϛd[XX(ѣGsrr4>{͗BͰ +nXX؁d={,ZHu^O{zjDDUuZjɒ%tNVA f 033SnӧO)~8a֍NOOWno?Vz={(]/^ܶgΜٽ{rۺ*]{766 3f4hPN]l__7nmܸ#[/D"uk @W9pIXXAS8}qN:տww4mmx7k%YYY-^XOOO%%%LNN~isܖo$>>ڵkyyy!٨gA D.w^ss;vLEDNd)<<|ԨQ$..O>ǎ:t(S*rBLSSs…fzU^F]f֬Y ɓ'IxԲwSBΟ?:hРiӦO+K$M0aڵ L֭[mmm L?좣]]]mmmoɓ'֭ׯѣL8p߾}mRUU:tܸqT_ϟ?/9U?4a„7|s۶mϞ=D۷o3fxۋ/֊D"ggCQuuu|w FqYڝƆ꒜n߾M;t'{!,Z s17ϐcЕ޽{m:zxx۷/??3hhH244tuu]lŋy<"?T[ZZz>M;*))%k6Y faaeaaq>R]短W\@YhQss ݻt۷b7T?}4--jŕ~)ՕfY^֭[۷o755 +--ݾ}wxxxaa!gn5kS?,uB9|{y^%.v B{Gcr}F@@駟-{رD|W@;j(6;rҤIuuuC;vx„ c~M ;PM6XUVeUUU[n;\mll9"xQss!C0??+66ULMM׮]K]L6m愐y JOOoH$E000W~xi{cc/)--={HÎԅ7n=o#~ܥK\Awꊯ`jjzĉ uSNmll>>999?f?͛79sϯ^^^_|ŋ7o>zH΄UЫO>{; jo`$cǎͥAkI&eggxzzNzZN!$::Z2ҹsdLl۶ms}WZg}}QF͜9>P@Mbbb&N8k֬+VK}BDEEDEEq81cH?sرcG}~~~'쐮@uP{#o>n駟󚚚?KwP{.\0..,C1ťMcpppXX-yP{,,,Ncڳ.\r/_.gLeeeDDD||+K={WWW|sss7o޻w|X__?; ~ɵ;w⋌V UVYYYѝ Ӡ`*HL]\\rss8ҢN qqqm~/66vɒ%HVollcd.]tƌzߟ%?~we;vŋzg̘oξu떬qƽ[z dٽzyDζ[S#wr9"g[CCC9iv׮]rjM6NgŲzW\)k۷Oζ}-ZhѢEt>}ѝz(WݼysUU!dܸq6lz\ޙsW^w^'''YNv횬ɓ';::=rȥKdΜ9sѲzϜ9#w…z댌 YWv6jjj ϗ-z1ڵkӦMԩNTԃ,,,_^^Nw6P{ mӮQPP駟fggɹ^O#Ϟ=533۲e˽{/__0րF=477߾}ywۻjΝt9 422; bFB ݉޽{N*isssqN B Ĵٙ$ zzztg7X~~~; P=9jobZsܰ0Ӟ3>oaaAwx]hiiq8]]]@ŴЭXye޼yUUUw;\LǶS?OHwP555BHkk+AӮ9f 211; ~iknn1A@%i3)@UT^SSSOO,C1~of͚%222bbb'z.НtG=Ўi\ʕ+*8;bڳ8p A@%P{45594byo233Y,Ow`sVUU}wtilv``6A@U!tJ;޻w/)@pk 0jo77\ccc2P{#1666vvv;( 7Bsss}}&t52ydHEw`t@@υ@P{~jgr܈Ӟ&|Aup5{@vyFw`OOϪx@υָBZ[[Еv90P( \`Y@%<$`$Nnn.á;>0#1p8tUr_sPzMMMLm~ 81KVV5kT4'O8˗[[[={e˖xWΙ3g˚СCkoow}[l Bahhh@@fpppwssknnnާO?z}==i}bkkk!/^HIIٺu#x 6D"6Jjnn_֯_ooo?ve˖{8qBjH3f;{AܹslԩSg͚~Уhjjr8N0p8zzzt ל@7ي,--߿Ow`)STUUѝz4~ )ŠQPȒfРAYYYR_TTbŊCGDDșdʕ,ĉB\]]۴߹sGj  Bo'?Ž/ajj|G Ц}Tv50?~`` ͦ;! ] j>}zܸqiiiN߿{ZZvx<^HHƍʬ/^, ВÇWVV&''[[[˙ܜ@?.NЫW+W]fMKKKaa={mmmoqv袲^111{Ң; ׶1{/77Ą "/^>~رrBڷ(alb444LLLFҿ'O`0Gv" A Ĵ&&&VVV[O>1&==Ȓ{͜9Sã"??_44Kbhhlٲ)2g\\ȑ#mmm%W)}}իW>{K.E 3vX??9P{*:@Ŵظq5iLfdii)!Ez[RR҅bbbRSS333 lllx<^VVEEEgϞ!$$$Ͷm/XZZ4, ,PWW߻wKG Z$|~GUp$L4)443/rIooo@Ŵk_p9`Bȅ $K;YkmVVVDDɓ'Hxɒ%K,yɶm<==>|hdd$u}njC^v̿pB]oӫ^KޣpB___{t9c`` ?d{޽N%gQM%wK#[l666Gl tGhǴ'N/L%?bv=}t//$mmmY?ydڴiލv---***n<w۷IΜYYYyeY⬬K>}W^xB2Գ|w}qڵ[Ν;-[?.BaMMݻwnZWWsΎCꢲZ0ӧO|~qqp8}zΜ9rOII~lluuuuz=cƌ~A{zz:993'))INhΝ:妦^ro[n]aG:u%7nfdnn^PP y䐺i)--vl6t{bu裏דJd?ݻYee%Y Ӯ9P;w!$))Wν}Qw+6\!$888,,ƀlŊO>D Hx0Ӯ9iqqq^:K:355}'O<#/@`bbpev޻W^8l8'l;RWWf5 Ӟsfll,AQN>mbb2o<@υ@P{o\Ui\BwQcZ흙r###"EFRi.Խj'O-!v1l0&~Ǐ>|xhhhyy9p!WW!Cl߾Z<>::z„ C ޶mԩS>L #l޼/MiӦ'߽{CfѳgZܜbݼy<.\^抟`!s8~mذA*xXdd`$|o f9t1ˁ![w߽}vvvÖ-[v;;;++jȑTex<իWKKK̙|rxk׮QoSRR333 vQC^޾P(tt_,*9ͭM{>}+Wڧmɓ'˭Ϟ=RV:H愐GTKwĴު/_~ر˖-KMMzxx˖-qFyy/RRRn:bĈ7xcÆ yzz:88PΝkeefN:k֬$ʔ)}533xOO7664hPVVԮzXbСzzzr&6Yr%:q$WW6nk8xP(dXx?Sknn.mpNNN˗/xm,X@5~gtQYJ  70joSSSggN>=n8}}SN=--M[[_</$$z} wwZ eeeVVV/ӓDhhhIIÇ+++LNinnNLLtppHHH L cggqիʕ+eYpϞ=嶶WV]vutQY|(`<5."=j׊H$ZxԩSSSS]\\CBBf׺.mmرC555aaaÇstt "Țr1H/TTTLPXJ=fȐb444LLLF"@]KKʚVNHGGG%v>0^ssH$btLLLf͚EwP{w'|b*Mzzz%%%ݛ9sdGEEE~~"kihH3uٲe(++Sdθ8//#GJ^%RWnii?R]]}ٗ.]z*fر~~~= j۸q5iLfdii)!Ez[RR҅bbbRSS333 lllx<^VVEEEgϞ!$$$m/XZZ4, ,PWW߻wKG Sel]T 3iҤЗUyo(|~1>z(ݰap8҈/0`!zwgeeEDDddd&%K.]QFyzzVWWo>kk1cBΟ?/ _|tYzzz555k{544$Iu9#~Æ :Eܯ6aɓ'|>_J 2&55ȁ9rDѣC D~~WllLMM׮]ܦ ԥ^'''BH||i /OְiӦQO5?_~Βcf̘aoo-g/^=$555eM(kQE}x{k(6p=~߻â?&&&mZX,ݻO-k'OL6ۻQܮ9g[nݻwwҤIRg̬|r޽K>}W^xB2l>77ڵk[n;wn[lqssk(BaMMݻwnZWWsΎCꢲ&22ѣ׮]P{0A]]]mm->%@W0aBUU)GcyW@k !&Mή>I߿O>IIIrDGGK8wa\.755ʕ+|󍟟ߺu=zԩS?.ٸqF6=xࠠ ss+ EeM+'Lii󟎮]+00Ȉ * Ű.\`^J Q9AȨА,]i'OJJJLMM_03x=WWW?{ Wc0~o)btP6?WF  1p9t9PX[[߯07@Ν{wΞ=Kw5B YvL'.qFjǏRfs8}}}@Ŵ@wgnn?TTTӇ,...UUUti'L`n/yرcMLL*iY\A@IyV{`6|(`<5.' kkk544 =n\$ߟ &&&>AB Zyo(|~1NOOrtޏ?[199Yuw6!\Oc.44484bs{H$ l"UIChgccSTTt=kkkC;У1w;v6lKRRRSS!$888???88ٳ277gX7oT|6BǏ?|rСCC پ}{uux|tt  m6;;;##S>|&$!d͗/_~iM6M8ݻmKŧU1W1k֬@SSS+6` ޽'t~*oow}[l~Gܚ;4U~~~KKW_}5rH}ٲe<իsY|x͵kר)))EEE͙RC:;;:tI Bahhh@@##+slrvAEiUz<2% DeV{WVV斔tr&CC+WPo/Ф_~@ lvvv뺺:--2Phnn~u¢.u??7J )'Y~=}upfnM.H\־(8m]{<2%L),,;@affffff'//aĈѣG{Eccc%f6lծgmmmccSYY9}t uuuvvvQFϝ;tҥZי:t(nff#P!$U|O;z?2yP(ր.[:GGG~8==(???55U%R$k~s9@ e8qYVXtR= fffgNOOիO;/((lÇfddPQQQ>>>QQQg̘1.\h?ٶmΝoZW%R$ 9~s9@ ,LiӦ9sDDDНE!hyxx:]=b.\Нz(eeetׅրFxVs+//owpppXX-y:C־F&s >qg):i̘1UUUt w(..V|;wTdK'k.e&sPıc3fӇ,1`lڴŋÆ C TyV{ϝ;w̘1ffft%aZmffP(ր.L{yrss={ɓ~gY[]vM___\ܶ rttLNN&|>ʔ)}533x_7664hPVVԮzXbСzzzM:5 @rH$4h۩nݚ5kaâ?.u~WWW&n9qr[ {B!Œ )Ν;֭OҡC9]zU$1 W\111|299ښpԺ:ϗR\nKK7|SRRڵۄ7|SAj@xxnijj~[n|2!ollClLgΜl„  rrr3F\B::dȐ۷WWWB۷~[<&''G__*27oLmDghhTPP kB; ⒔D ;{ſY,͛7%'D/:ujjjSbbwHHHccl6ZWWW]]]ܥ=|;vHYSS6|p===GGǠ Bȴi ~GȄ3gK$x_~eٽz3fLrrرce OO\ϛ7O`1Y;H[(aÆ[ǧ﫯2dKyovV{p-[t~'OP !&L7oޣG^hQ^^ޅ 6lذqFqիo~ԩ/FFFB|~aa!5&11q/S_f;}֮]+[SN(UpppVVVZZ͛m۶sNBΝ; swy_<Nr{͜9Sã"??_\VV!˖-;pUS444ϟ@GYp!!ݻgn3=mmy߿ahhH~%>zٲe*Zޕ|>_S͛7,~zfǗRkYZZ>1++kVVV<ۛwqM\',d3&" qAX@z[AѺPrXEKY+Vm+Ȣ( +Eٓ;! 9:'.rfδ'&&ٳrĈ۷oOIIxG%911f ?o߾NVVLGGGToii9s̶mLLLOjժ$1 OMM: !9NJJ:{!CTKMMe322 }}}_N.?~\WWΎzٝ\.~ҹBEDDh*5k֋/-[&6{@W1LlRDܻo߾bbbn3s_Ç}6??ҥBy{{_paK,ӌ={t򷣽t~WC]~=AߩgQ 諯ڿ?-!@3Ƚ~{ԃޅ8A[n8q׬Ya;;;r˱QYYyʔ)-Zd uVXXWXXɜ:u*l6ŋӧO5j×.]e˖!C׋oP@tt˚5kW\I޹sGSS-%%իW!!!-zEE̙3YYYuuus} L^G*7ov}DeeeekJ%1z;~40 GFFzXWVV&($ۡn{,kϞ=-~YAAAeeBNNdb5"3K.I;I&."2k׮Q%ZZZiii䱞ޑ#G ƕ+W7oܱ}k/===..ɓ'z [C[nu EEEK;-Ƚ~{gk֬JKKSSS{5t![=lذɓ'1GZSVV immE}@koop8uuu.=OVVvk _h/##͝;Wځ}ܸqC]]?v 0p!\xxxXXdJJJ%䱒=ܻs ,011 /tvv&']|YGGgɴº7;t˽O8b"##{]vEEES%K,ӌ={|7UjaagAٳg=۬۷otu ݻwlݺz7<<\ׯVTT̜9v 7aJNNdH;4v5kٳGڱtʕ+ZZZkwtܹtGGGibӧϟ/Xz޽;xGdS IDAT[~{@?(w![9{ÇK;&@?t˽_C =NVVVUUUڱEܸq¢HڱEg5ȽŹtܹsԌ#:~xobaa"03{vvv.\H[}q?{S\./;w/޽N_~ʔ)n{Z[[%wf/88x۶mҎ O>-((xɻ7ٳgG4ifb2:::۷o' ;fkkkjjY[[+;w'**&>>,711쌍lD Ah Ł>>>.]=-bb޶m۬Y&N\YY)~LLLgϞmjjalltI@͛7bfYYY&@xk. iaUUU/_d2yyy\.dU +**/^zjQE0ycǎǞ;wwE_T ?~aKKKE|̣F*..nmmoYƍć={VEE޽{Bҧf{gZd A'Ov =n<$($$k֬YA<۷ ^MM\mooOLLܳg#oߞVZȯ̙3۶m311>}Uw===nj#++dɒs _| 秦woZpqɭZ֭[fjnnN5J^^%55UL}dƌ#  .ŕI;-xr~!&&f֭>>>3g|_5|%%%ikk9=| %%%B+ -WTThiiI r„ 䁦fuuu[[[!oA@BBBlllzz!C=-{433# DYL6=n8}}ӧO ȑ#KKK ݳo߾< Ɛ{- zvZ[[ZZZؼyYBCCnJV3gNzz'OƎf 0778w\ٿ8ʢ )Tvb$\.U3;;; _~122zisNNyPSSSRR2c 13F,ymooSQQF}H*}}}{ roÇ++SΛ7oʕҧfM81--Mh\]] wĭ[033v 0p1xQ111r劖VOpi?V\y֭,^8%%%99Mڱ@O8̌L?9i}ݻwB?e$@GeX111佪4`Ϟ=Ҏ 9 ֽ>}ZPP`oo/@+==>㾼{ro*YYY&*@`ۺ7Y> qAiajjZSSsUiroxO&Mb/^|wi~円=57'VVV)))'NO߿blxw [㓟(@@o .Hf @?tkMKKKKK@Vpc%%>@#'ݷlbjj*@ =No=AYfI;SԠ JTo;\Ix񦦦 @mݛk֬o棏>j#/_ݘ1cz:@1{{X >+WH 8rH@@~1@?t[^lA;w>}֭[g̘!XOC C[KK 7@ߴtRsswo_hǵb5\sI$ wxk׮v @$  }vddڵk+**"##_zzϳXwK///wtt\h[cA|---W^---]r]  78.[[[+##&X`ۺ7s̘1K,9w\uww5jKjj$g秦˷'&&ٳrĈ۷oOIIx ^MMmҤI=;E mllVZE&ޢ"ljjضmۨQ===%ZH/oÇY, 7ӄ MM궶6dƍ?}taaa$$$Ʀ2 ϟϟ?D]]=---))I[[Un蝟RW}ƍ<̌6c ɻdtro\n&ooo{{ 77N/|_sss sΕעϙ3'==ɓ'cǎe޻455ϟ[1ZXX0r,I'tt`[}Ao>i}U^^^ǜب'%%ol…666TWpppNN}EJJ AwlnnVTTTWWxYW{ܠA~UUO>^T s΍jjjd7щjnwUUUAAAuuΝ;nnn嚚ӦM۸qKIIyUHH{ c2SNz*A!!!Æ 322~޽{Zj]"//0rH{{{#4B ~Gee)S,Zhɒ%/jtདe2.6 ۺu7|Wڱ@w|7o޴iGt[ڻzj\\\qq"##CS:A ?piv=I[[[ځ@7![z˭ל@?/~zK;ruuuKKKirog{@h^[[{=جIZZZ6э7{ ##?.X,{Agskaa@pB@/t˽X,V\\"j{ZZZUUUO߃. W_}ի_~ʔ)E7&>۶mxnwUUUAAAUU"4>s̨Q:DÉ233onn&kϞ=4++Yf1L۷SϞ=stt`< #""ԜND]]ٹv߾}&&&IIIdQKr$S駟Z[[S!eggyF ԋ/r8O>DL Uhe;w4ؘێX\\h``Cļy󪫫/_,I} Fk MvXIIII[[T}~?wGIsstooorGI5@@ LbbwrܻYUUCYYYBW^ <ȑ#7n$OmmرcmmmZZZ7o$_޻wOOO666*++Saaarﯿ<ɽz|9bĈ/j_s%KY544dggw uΜ9bfRTB+,P|۶m#:~^}콏[hBsoQ1޶mἣ( z}nל߿>Szu~~>uZҒ]]]oɃ#FTWWfǍB>~QQϟo`````PRRB.f̘!j VVV䁎:RT+?~599yĈSNgiib> jb?a@SS(}&-_ Gȑ#KKK%oK8˗/_|iPTT,**"_X,%%%򥬬г̙ɓcDzl1755y{{TTT' T$clllaa`0joCT+͜9S]]ٳښ~uu5L U贋,ߩ~A]Jq\jUUU.=7roɓ'H;A9;;,^X)wlnnVTTTWWK}}=ñQSS+..WpppNN}EJJ A s΍jjjKD/.MXXXnnҥKV?~c3)*T;,&&&9rDZ|/=KXYY7S5߿?~zp8.roRtt˚5kW\)~cccHHȰaÌ_w^1555#""ݧMqFoooQ5¼˜LԩS^JSLYhђ%K1@KB)sμy455V.N5BCZYϢoF>~{AΝ;nnndmmm{<җ_~bcc{}*++'N(@`bGeMOOSp\33Noiz?V\y-r﫨9r>u+{uoDllȑ#?cQdddlٲ{HQDDĖ-[xHNN}-..IT<~899YNN#-%͛72447n$]yȑ#***&&&Ta\\رc9"I;1d{iA u3gl۶dVJJJ]pqVZu֭={XZZ1b)))T䱻Q坜\\\:]Z1cdee,YBr,tss;tAo޼IJJ(;v!@͊ lll ɗ'":::))ٳC UG.~---==7o Z IDAT;`Ap```@NWWW߷oߵk D?|ҥK^^^AxyyydhhUTT888444kA߹fǍwMSSM|kǏommMNN1bԩS:( FBk z9rHgddlذ!55ܷLIqƳg222>ɡ~8i,য়~244$Ç/_? Ƀ$BNN.<<<,,=Y@Z{WUUTWWK;-BPTT,**"_X,윜򠦦dƌΝ+áv%srr***ܨ~>|X|$hv̙gϞ=tw7E " @\oggpr󶶶Ç?~\44iAA,X@,y TSSv 0p-{4944$'''&&fԻiiiϞ=۰aWpppNN}Eǻ p8666jjj٩U^^^[|$B%&&Rwl?,,,77wҥgu{P,P`ݻ7==#++f8q"::ZAAAp^|Ge~~b˖-#vϟgggSqqqNz^]{'O2 OOOi]SSC!~b-_\mggf͚+WRomذ!::zĉn c2SN>mڴ7z{{So޹sGSSMHߨ1wlΝ;?ۃs \]]Ν .5!11ѣGw~fff:6mü!ѣ322?|p͚5&LPRR211ٰaS֭[`0Ν;'> lmm޽+4 Q5k׮Q5qmeee33pqBN; I&^~HdddL&6Z)[ Sx<^kkׯ_?eʔ^h]paƌϟ՝3gNrrB탂[n͙3ǏGb %%%]>~֬YL&SGGgB+ᴈx+VprrJJJ4iѣG===%+++//O}*2AT ID+--MMM8?˗/?s挛СCN0}tSG`0խ: r{ 73@y```FFFrrΝ;#""bbb>BMMM0$$$>>>22١TFGG߹sVOO/##˗+V/JJJ155)++;z9r$..X]]=<<\ G}T/{{?G"_zz={ܹsQx%1L!LJJ@RЅ >}X>~899YNNNhUUU[[UV>|ǒaee5vۈrhhhHHut钗A^^^4]~_000^M???YY0{Muc>CS__հ{ro޺'OҒv [~)/**jll$_Z[[SiJJJYYYEEEϟ??CCCxKЙl6{ܸqO.,,H&L@hjjVWWu Iɩ%%%ikk4]i?&' u6E__ ¨#G? 6R2dȐ/277jʔ)b.駟 NJÇ/_,}-ӺTSNN.<<<,,*$'?T7.33dt5zp8_v 0p-BQQS \EmCԔ̘1\CCܹsep85۲ASS}NNNEEկЛQG" 1-t/ mJOOŋ-asIOOرcl6Yߵ"~)C?rH##SNiiiQqqGll@ƦMZZZRVJ[[yi:L^#pͪP/t Ƚ }}ѣGwVuuSRRvprrxgϞ`xⅺzoo roA9;;,^z7===--ٳg6lӓ r/^蘱Q__plllԊA++Hq,-\066VBP 155܅SwlnnVTTTWWߵ"$#@MwtB6}ĉhQ#z򥳳gkO>]n]QQQCCý{kmmm-={Ԃp\\ܩS^z%fX5wE]`0.^rK^vMxmmm555yyy}YCCV B!~FŨvvv...k֬ \r%ֆ 'N8x`䰰0//0&9uTkӦM۸q7;w455;nm%& jӔW^P#b̙dss ~駒t2l0##ׯݻcגO$,5A888deeչΝ;.\FbbGbcc͛7;VǓ/t:u;v쐗3fL@@ֽ{ϗ2>F_sE!N{n \v 0pmhb/镕 ޥ N{@?3wܹsJ; EtD;00pź 7ro]]]$roq< ۭ`5qX,T =U]8::jkkkjjۓnjjb3z茌 oyFh>\f̈́ LLL6l qu1sΉ [[[rQ[n޼:f0׮]JKK#חD7zȎ m\L CCCcҤIWlmmy<˗GMM:@K[l\paƌϟ՝3gNrrB탂[n͙3ǏGb %%%]oUTTuKȄ MM궶^TGl6{ܸqO.,,XGTTc2zPiS '/G)~\6lHMMtÛ!C|嗹UUUSLquusO?dhh8uT <==>|N]7ſ}Z ?#r~#Flbdff2Ln]v`̘1Cځ}0̚Rir^QQQA !ӣΞ=+l6{߾}FFF%={v"EDDPWt-P>gΜ'O;fannqܹq8򎉎ER,,,1rssY,[B:{5 %srr***x_MT "LRR@͑#G:u0--MKKT̈=<D^GG֪* wU^^s855bi&j*#@MwtB6}ĉhQ#z򥳳go>}nݺ{}B[>{ϳN:+13FW3]vEEE.X@FF{޼yZZZ&Fǎx<^[[[MMM^^g}-aK$ޫV_ttÐ39A/_љGI@_hǎcƌ ҺwOhHz ~Ղ$:{xbԨQ+Wl_Cx_}Uaaa}}ݻwF_?VWWoӦM[z5yVff¢E^~}u//Wk7n]Tb#rwj;Cwrkjj8n}WX,VRR-,,vuV,;;|矏?;J[!Qti #2 @7֪5Jځ.WbbbK؝ kJ% L&sȐ!1?ϯIOOLQHM~ z65瑑,ĉ'UVVtgi {WVV<{Lځ$,C ]`0Lnޝ*--]zussn޼`0,,,ЇjMM @P}ƍy;6**ji˗/1c"##C˕v =nל ommml6IA@7J; Enwpps IDATg}G,**oΝ;rv5k 6LAȽ~{鑉7֭_jjjJ;@roq< cȐ!Ҏ(c{w}wɶ6S+obccuXXʕ+ww}w׿?޽sW^տKNN޹˗/_xqرcgΜ޹K.7o^^UUUEENڱEuo nݺUXXF766r8uԽ ya}gbL_Ag5JaR+VlMb"d%-]Rg"V:KHE$Ԗ3?c~53[w_\sy}q>z(''c떗y߿ܹ;eʔ7͛7;\=70 {SΝ;~,BePPВ%K444^b}}}Kh---MM͎[YYY]]ݱu{ּeee~ y{ּ/..غY޼y޽{[wȑ<cT[[ @/Ŵ{ǎGYz~H9wڵk1P{|ﲲɁMww+Wxvz%9aXl67Z1nb͘1#333&&Rxxx8ݹ@5x`sR@ڛ6;wDGG>|…t'{nTTԟIw.***HDw.[jo… oݺկ_?@]|9 СCt{0cV8p AC9iQx0>0~ˉ⪪*ۭ]V{@OgiiV}}v]]Y]{8=Ўi|~||Hwô{ඨ fӇ{17t555,K__ }t 70QQQϟ;tBH$;@A =Lvvv@@Da ,;t|(`<0@ lPx5  !l6 K1NKK 7tfCCC55&@/1qP{{jﰰ0>1@wNqvwIIINNγg7tVUU;^LkiiQSSSUUmnn; 0@ ;j4hŋEEE"eP{@o>S@7¥%<,a+))y왅 YP~0PUUD---' !l6 K***, dw1޺u+_gϞ Ћi7u uJ PZZZ tgtG^i㕔DEEA =IwFav/^liiIw.D7i% of'r@EE"! aZ PSSCw`cccHB}08 =joŴ믿tb999ϟ?;t`---tދiǽY,Vee%A9={&TUUӎ{㙛/^xذatn3\aP{@3lذ}ѝjo`?ؘ,Axi~vҒ)***HDw`PHat^iǽӧOSSScc:Y7}joŴ;44;aڽ֊srr?Nwx즦&S@Ŵ, O>70O<݈bB4` ܿ? `tniW_}=sP|>1wwwSSYfuD)))'N)$Ξ=z9@ot`ޖNNNt X GݭyAe޷oyǕ_m޼?e˖3(zBH$;0GUUP(G jW v1bK\\˗/ !yyyVVV?8źuBlmml2~#GQruu6lΝ;%&L0lذp?mڴÇS}Z$l۶-33I;777_PP ot&mDD>hР(#{:uӫkkk6djjP(:uj{iƌOM .:׮]SՊQ &&&O}ӦMw;w.֨Q233Ç^^^...rO8::eddDgϞ;v/^ ...yyyҷ|u8s7ikWfږ>K bܹCw`'O @/ջjoBHDDٳWZl2}…w1113gαc*++׭['{5!$$$$""bȑIIITchhohh(;v,uj+&&&ovZ???[!OgnK&Yj[\]]$}4A8 Fw.Fºˇ-++k{w``ի|&o[h q^\w8p Z;w.1clܸqԩt'JEE"SUU% pdhs1|||eTIuuux@7X,vttqㆤn͚51z+X,[nݺ5q:pYv:uThhYKK qSD"|PTT-@/kÇ999ͫ;tWzzz:;;GDD[t7A>}p5 jo /^Н:ѣG2߲{͑55jTvvvVVϧ; 0DYYWcl흖FwǏsܶ}Ѷmp5a\vjhhnꫯyyyVVV'l۶-33I;777_PP o3ejϛX[n\|ZեӶ7~x6mff_^%w jo`1eggWVVh0o޼w}Ν;= 7ߌ5j_bkJJJΝrJI.{uѣGO8w=ȑ#ٝ:$AAA .lﶴTĉ[ҥKrVVN۴<fgffDS+[diK,1%11Qƛ8q"!tLze߾}</((Z(--mnnp87nܠݻgnn.2g?֭[ey$[l333MMMۻ-2k͛7x#=Z~…Wսx* :Ύj711yIssZJ|||dd+W Qdhh?,]w \;Yf. Jw`kkkpppͥ^^zKՌ jA ;;;:uῄB&TUU322JJJ̙#T555H$ܖV^r% _r2277+ɓ=2d?(=EN0%!!Ao8ӧOߴiS~~~FFݻΝ+yɓO> qtt477WWW DϞ=;vXa_x! ]\\QFQE+I'Ez҇zyyEFFHi&====?~w޽p˗/ NnQr'ݒeoo,6lgΜ; ""m٫V \l䭐#Gjkk'%%Ql6{رK311 ~kIZp;wLLL̙|Nnǎ\nn#;T==={{{//>@׭[ׯ_?.gϞS+[l6\mm77K̬w|GG9|~HwxSP ;kbkkp8A)´p]M6b:u EEE79ѣ>>>tgeee&^(b! ;;z3<}4 `Ȑ!wHann9;av7|=e@w'r0L;=hРAѝ>***谪*Xl``@}x͘V{ L3xϟ?{ؘ,1srrr<==MMMMLLݩM744dIIIV]]񋊊VZeggckk`pj5kH笸kvyKz[+W|qwێsٳg[YY1",,Q:9@/z>{nbb3g ᑘ_˗/o޼BJiiA.]#sÇWTT[[[+kooMQܙ,755eeeC ]㤥۷߿빹 v]g=vuRSS[@p-.]:mڴ%66V]]}3fեUUU%/ ! p]vɜĉ.]9r$!Az?~\,߿ܸqGAgBHyX,1c=:`˗>}Z8bx;bdd/:MMLЫ0wQQQNNP(;?,ǎ#{ҫxyy)3~```iiibb/.bŊ*3fTTϨQ *:gΜW*SRRRPP0gΜV,N^36ր&L޺uuY<== !%%%Uů7"""!!ĉ %%%ݻ庻(\TTty___Bott+燇KSzel' /^ &Lhnv+PgX5tAb9xzzz/fly+ZXXB._,]Q7 TϞ?c}}}'kkcB͛aÆ'*O?]f L=II.\`zzzơvŸٶ6{tuo |h߾}[nmV@@,Uʖ\.~^%99 6Lyyy>>>466ްaCcc577SSGz-Bg/333%ô;vl̘1 Ʊϗ&ۻ딙@10L;[[[h_m744$X={̜9gZZZG&ϧO7o޼IF wG <ѣG{155X[[;99)8fˢMuMFu`V;݀aP{0ﲳq5{bqSSGݭy:=jo`NNNl6 ]|" v1bK\\˗/v[[-[?~ȑAAAeeeT{}}C\]] sjI & 6,===<[RjoIlB-gffR[[;&&Z(/2*CHv4yYOM@ (Ntz1srsscƌή^1ZѱNOOͭ9sɓkkknҗ._pСǏvZgQ &&&OL_n]~\nVV֞={DY]goo(^"/T~?+S9 l2 yyyz)VcG=4{l@]z;\zfW.{W~7#}tuuGw ^.衘vm۲'NHwި̪ P@ ô\.ƹ{.z ssҝG tLuuH$րL- Ғҝz#|нP{t/ޟ9?455511qww&%%E[uuu2/**ZjmHHU֬YbN:8 !յU+en)E2-ZtVƧ/G@o<ޅ999UUUt={YWW711̙3 HLL|/ww˗S7ox!tРAK.ё9EPPPqqÇ+**㭭 Nill&(L ڵׯojjxbssE$722ZfMWPl67Z0>ԭ@".]:mڴ%66V]]}3fեUUU%/ ! p]vɜĉ.]9r$!Az?~\,߿ܸqGAgBHۖn&!bY[[[ÇW0Ebbbzl۶ ; 0Mw0MMMQQQl^\\\XX{I7zyy)3r```iiibb%bŊ*3fTTϨQ *8pzСݴiӺu뚚$$@'0ihhXbEBt#FDD$$$8q@A${r\wwΟ?K~e!n/+++}~ᘛ߸q#22Rr~-Zo> ^0Lwؑ=a@w‚"}1KKKKc$%%In&g}vǏ=ۻZ^~zرy)O?/雟ISfKq>}2uTeWSS Q5@ ôڛ:99)>l=O䖖\.~nLNNp8Æ S0`^^Odd17lتhnnNM2[+VOO_fff2(:::O>֬YaaaC" B]v5`?zhϞ='O9'***233G,[H^}i{;֎m'NT<k_tFqppx]Эvzɓ'x{{O2ٳsUѣG>>5kV}}/.s{{{[S',,L:ƅ jK̘1ӦM^9(+gB}4h{v;((_t ]p&qvwaaaNNNUUAg+++k/BH``ի{a gmoz0{=ǽ>|حS͛7mڴqM6ѝtG^ 70/VS_Lg+0jjj;t/iW;ggg? qavƆYUWWD"}}}n h{p\@o|joŴ{ʕ|>t?L rrro}}}6]/8۷ogXk֬;0GNN@ 4hAB =OTTTTT)QD"AjoyڵJNN;uW,666)))2ߪ7۷gϞmee;bĈ_,jwJ/Z'99YAlZ+l@ P0̭khժUvvv:::!!!]^ld.Zի򦖌cnn`o?|o`?Cvv A rYggg]]3g 0#11QSSſݗ/_N-߼yㅔA-]TGGGiii|>i~znn xTQsnPwtAAAŇV k!ׯojjxbssEKs/_&=)^(a&aXbX,SK.6mZBB|3fR꒗rss \]Mxbwwj122Wlh5ĢEbbbV@Аܮ$jjjN8qҥ#GBlo&!bY[[[Ç9/E>j͚57nܰi jor555---}UUU; FL; A>{ҍ^^^yyyʌXZZ&ʒ9s6mZn]SSS'"ݷ}uuu]bKKK?ܺX[[:Tuuu111zzz]VX!s5а K+))!zY\\#""N8a`` 5΄ :2<<_VVVo-ZHUUu߾}\BV(w^."yK+Q/cnn~ƍHɣejSݻPi )3Piqo BHYQ/---zj?S<2}%}/BZXXXhhhMMMǧ(  >쳫W>~x[2]AHzOL:Uҭ95NJJʀv-) z.˗/>E@ofiir7d3l0+DFF*رcڕTUOO_fffޝ5kmXXɣxWt~+allaÆFIxWGGӧպ]ϩcbbouv y60 jG1uܛbٳɓ>>>׮]_"""ӧO7o^Xٳg?~:;;?|"=HZuhL~׮]/^PfQ+^r׬Y[[[{޽כNAw1|?L-;88K޲MNN)W&Kiׯv~OOOSSSww˗/BXBn߾={l+++]]#F{xQQѪUtttlmmCBB!ӦM[pt7Xlcc#y̘㻺XDI˩SX,ϧ^HmnnfX))) Sݻw7n(*$$ɩ;FЋisrrjjj=FppѣNÈbuWn={YWW711̙3 HLL|/ww˗S7oLKKMMM۷o/..޿ssseT\\|ኊxkkkBȧ~P[[+閖VVVG-+?>!~:tVuTRx<^>}~;vdffBC+}eٸF,'O&9s 8zȑ#@55X/5J,;99:tH,/[L]]O,x{N:ho;~ll;c```jje0aСCëtnK vvvα T; }wFrRx0WW!CtI~ߎ?v֬Ycǎs/^HRX\[[3i$===GGǻw*-類?qF331c[K"Ξ=[q…^2eʔիWKV>}zۡڎ_]]ު4**J~_,O0aÆ FFF%%%b`NNNTESS>8p!$66˫o߾:wի9ȑ#WXMHBD"QwO]w1 :Ī {{Ǐرcʕb255UY?rdEvZj?455m5reevLLLuuܸqzy=sssH$s[/_۷oVVy*OPP\[[QZZ*o:Pvfff'SKzΚ5kbfKJviSSŋ'U0~[uuu%k<-JekՓ ҍB믿JZ \EP9zhuuI&>}j/,,dXX,rw &lٲ%77ҲeȐ!/_޹sg'{kiiR 6B$/݊޼ya.׀iǽ###ǎKwx;w'N ˝_1c>y򤹹Y]CC䄄SSSoooj܊3gZYYYYYM<6??_frss%ꨗ#FtttMGuLLL:ZEkCDǏL0·~U~X,l6E[[UO Bus5 ꥥ?SqT >ի?=zwuu5!zҤIԡ~iѢEԑOqpp022ڸqJݢ#}jYGGG~_;wZ*88X +dH0L}g'Mtϻ1ƍjSMMzxx~_uҤI,mǎ.5*33Sݻ.\x򥖖>!D]]7(((##C$={dvnKCCc6mؽ{ܹs%h۶moAMM端xbKK˭[s##`Bϝ;'l38qB_?P,Atq ޽KwP{@[GGgرgI&L8mυ ޹sĤd_n]~\nVV֞={P__P6=vXhmEDD͞={ժU˖-1rHmm$)pi/jjq $CXX_̟?ŋLuuuG{}2(9!d555SL)--={7megg˗}'Ç\ M[[ǧ_~fͪ_$ӧ?!!!++aϗ~Fʕ]5ڵk?}M;KJJʶm.\@qss[n䖢 SoL}U+˗/_9H$UDwhiiɻź4e``̀]~އN>}^MUU9cFF̙3=<<ǕB?S7o/堠-[V 7<tP^[ɞ/^W@ P[G\ oݻw߿K.o۶mʕC !EGGZZZK./!KMM4iի !+//wqq7o_```^^^``ڵk'LWwرCeff9rB>}陙9}/Ʀm涣ɜT^r*///KK?C(J9cƌUV!V{ٳft^z82=lvwOӨkll|e%R[[n믿bcc[Xwꫯ***>4K,ill|raaC@%*++W\y>_SSSXX(y'O|7ㄐ3gvSNp8Ɠ&MtX,w=}̷jkkMqmoookkk---dɒ;wPoM0aÆ JBͨ5uCZ?'|pEEE||W0[ڮ;chhxpuX ?cmmNpႿСC-,,?ػ@qٗKd¤$5(H-QWۭEu.MomKimqu,]e+Bso޳cיy:׼y<ޘL&sԩ&OmTUUutt <..nĈxIII ׷FFF\S倛DZZZ !...=ꛦY,Bqww,knnKFhoot:]HttYqb``LJJΖlG[Gꫯlﵴv9DGG9sD{)*,,DxBI MNNJqN5QE#JOE7nB6}xqL&344tKssUVa555C hnn1bĩSl+<<uc 8 eee]t!x888`/O ߕE&>>>/~۷ {{{dz:eN+V8~8?8k̙L&˕{(hzzzd2ӧQ1W׆ rȑ.sKII;|0B.Gv+s^[&:6iҤ .]Bss֭[ FPrrr< 7nJJJ BHGG'**sԩ>>>xe o&,,LKK׷h5*$sBbbNg2#rrr~?iOK̙3Boߖv"ŋ\i]uQ˗B?K^s~5%%;wo!t £GR(l*.immwj۶m##(לcٞ}:HtcׇˀN `/믱cbwAdm֘1c&N(Jt?9V"(ʥK8 SSS,,,`08唎!BINN:} b+outt`W/c&L@=zT Gś-gWX? ٙ/- :XuuuεwT*522Roooi5حB <8|// 6(++Ĝ?>!!AIIIQ>}ruuY|yKK ^)@ =zt޼y/3g|!gN8JJJ]ff;::rss/^rʇ UKOO_~}MMW_}ŷ!l\\\}}}^zf՛}||LMM %g޽ΤNJpC◣c~7IA޿we˖}gÇ| #FO N\- %ޖiӰXu4_0 xlٲzzi'--ٳ333?\QQqƍŋ 9o޼9pz)uzt:b+DFFrƩ2_~EAAASS344{͚5GzxxL0wMHHԐl7l0|n̘1֜uTUUt:UְLMMW^WTT$+u222*Ls挂 #FO|ВwvTXXۭR1F344I.$&] fff[^UU;}}}inrrr7oޔv.$::dq. @ kfff'N7&ERu]ϟLfggr|(@͚5fߺuKډTYYic޽΋̶'mI)䫯ڰa7mdbbH$ҳgϤ!ds`@&߾}[YY9bivȑ?^nٲe͚5vvvyyy\ɓ'vvv!-LJ.YDHl{ F.J}yoD"mܸY]]lbbÇkt˖-|?vig1{ժU4-//Oډ~ H%o߾E>|"ٹs#Ly={턄3fÇOX!J1cƸqも*++(sssMMy={+ `0ƾ'Ob0aBQQ/mmm??+lnn>uꔃž}G`S\]mon:spp !k...~qCC"dJ2Z"۱b% Ndc잌 WKkkdc555I0"򸸸^׬YV ~:FsII iii{qwwd29==L&߸qcҥ4,66o۶-??׮]3f`0x{쉊ߴiSddd||rႺ0ڼ7`0XlYmm #.//OSJJJ)//SL*((Hm@ hiiI6&BHCCcȐ!O)ZhQyy9^B ";w2eap@UUUL//G555544tޘL&sԩ&OmTUUutt>>xeE!"##曰0---___kK{{{)Sv1sLoooigUVVqK%AB+W?zsÇ %݅$ ._d2TY :ZQQǏQWW'<"7d@^^@8qȎ۷o@Z` xΟ?W__/DENN!=c0 sLlƍ,kcG•$co@sNi'׶l2i$IE;r䈞޻wOr6.Vijk׮~ #)"Y{O8QMMMډz|(@9@LfGGGOxzzXdFGG[ZZ%$$bT*5""bƌƍ ʛO:`aao>;*{nGGGsss??GP 3f Ç駟[o={(I\|yȑǎs%HRǏOJJtBeŷ7od2s^~UUUw\m۶a?⒒ 9BPډ`lUWWc!aVaĉNS$f ɓ']5jիWKKK쬬VZUZZ·-Y &o>>>[lA:;;o߾rJ4y0cV c1yPPبXQQѡSL&X,~DDVϷŚ'Nㅂ̷1)Qd{[mۆmkjj7o߬u)22$""EPGve˖ijj5.F@܌E5yܦ&쥥%jbbÇϞ=6vXlCGG$)555))I__J\PX)Q \x|lc D"/yf%%%%u!N8AKN ƍ?~i4ӧOǏ|FSUU^feeaŶVVV5&]':''oߚ!,PNmȐ!nVUUqV{h!lTWW8pں866VEEE?nllv"^.uuu"(//ߓ ---Z---2`ϟ?qWeEEEWWם;wgee.^ߛZ]]bmmM&X,Ǐ^aaaFFFkk2DD ˷2B;s#cƌygW^3w1jԨ{m޼ѣ6 0@**Dƍ4'A=S]]W_a׮]KMMiӦBBBbbbƍ{{{)S~DuT*r8𦔞>sLlƍb˟ ?~$D y\M&9R^^.:Hֶl2i$ig!Muv?`AAALOf0pUVV䊊 ˿KVVBL& :Tzinhkk{vdС[]]-[RRrmP(fاO;wNc.]*ޱwppؾ}x^reƍ'˖-ö]]]kWjjjbcc=j``vZ|Ϟ=fffϟ+++]DQ˗߼yn֬Yd2!uȑ-_;E # 44ɓMMMɧN5jԹsG;WWWdgg㏣F͙7Fesss322WPPj Po6==ݻwSNtM&9w\,_iӦ;w8::JcosO>kkkK;@CX,eff]n޼RQQ[?~<@(++366F={o5'''''ݻw1 <++ ^ڶDFFFGGkjj\4F^^ZKKÇؼ8 iTPѧO?Kzr-BUUU޽{ghh(s ` e߿,LJJzŋ|cjjqwI+O2o<$KBII9::ٳu 322Z[[I$&+---55:$$ښL&7440L;;;MMMyMvv66:ڱcݻw;;;_x5Lg4A \QQŋsmhhVӢ3f̫W8+zj̘1O8ѓ` dرIIIܹsbbbTj?r!55I&-\x[n6lB9x +$$$&&fܸq***)))!(OOϩS ttt-Zo´|}};&Q!#tVJ !->oZv횈O2GgҤI999666 M/^سgٳg3333fܿ޽{ӧOv.AR###ܤH?b,--ⰻ޽~gϞ+{h/_J;c&$$<{ .=k@899{&7 ?~$D;,,,`PWW'zΎ0 8879m4l;66V+qo`72dH$"(Ӱ˕+WA+d2t6!''/l./d@pss[jհaä!8<~E___GGN?x!BgԨQ|w Zoۮ6mٳ{0p09rdȑ«X3gDDDMV [qㆭڅ _>b'' .())5Noذ~왓S#G]VUU[MpU322r劚Zw*Y[缰J z# ,+)))<<@AAXIACCC]]Υa٦VVV0+VHKK{捒V2gΜcq;w.Bڵk|} ;;e˖9;;߿_Lyo*:qDx0huttQ(K9sFz{ QVVVRRpBB773 Q"TTT\pAТS4;}>::`@hhh`2= yL&>}g1~D%J\EP3gĶ\r%K d+|_GG7ntMA3..lեfffIII c؍DMMf744H;!ĵ/cbb\Փ&>|('''H$Ε noobk׮~AYAAA3gDFF F/xxxؐd K${ׯ_ kbb"dǏ8qb/{-!{tz/{+,ŋұqqqBZݽ{!!!B )d/y4pH!!!׮]5jTXn322LMM 999?ʕ+;MMMJvڇ:4ydp # 44ɓjlWW+ԢPQQQGy˗-[LHHڵk܌/&ݺJ ?=z4mڴ3gΜ;wnJJJ۶mD%''c_:88466f˷և@͟?_]]̙3Fy[7mtGGGA!0`X?E$HJvOc؞ X,Bqww,knnK9|RCC#>>Mo߾b}zzz/_Q;w$Y2bĈSNa7nyyy/ )ʓ'OWdeeu9Ijj۷ouׯ_]rE]]fH$fggXǏ^txPP;|ryyyAAAFF~ԨQ^ZZZjgggeejժD6{}~NN*lu0--H$yf޽ flٲEPYa0 233_|˗/_-;Vt+|v>;{ f{@ ,_/WTT[[&jJJJnݲxg I-$ua%ׯ_7nB觟~5kVTT֮7" ,@[KPش3Bh޼y)))[n% \SSs„ x0-ŋf+bT*lb|ҥ7n HFFF7oB:b {woMMM>|E‡FCH;@ߩڴiY_.Z&m9sjkkϜ9޽{\8`~~MpMm۶ 2\H$sⱷ߰aC===l;''GNNΈVaa!677ONN"ƉwҥK7oBⅺ}/J500ZhV~ wwGN<Ƙ={VYҥKɓ'?~-ڼ2dB2󕐐Mdm0ݻwΝܽ{۷o߾=mڴЯ!=􁶶6EEšCJ;~jĉ׮]R!==u֭['&/Η??ܭN&C 6^ \Y,LrJ|ɩn~~~C O>=K. %2Gl|NOOׯ}}޽{udj!" q常8!!!eee$?ԩS/_̆0`k%voo,d`EP؃455 FRRV0##UYYD"q.ئxE sb3f̫WsnpqqIIIioof Ν;?wUTTjHիWcƌe{}|c#W^رCSS3++kEEE}$'}Ҙ޽{Rxxwxx8H2e癉R߿@GGgѢE=l3NTTԩSCCC}||:[n6lB9x gD###:d2E=)^Z]]͍i\۷o8p ))IQQq…˖-[t'K|[ cj_|=z{޽;c !bbb޼ys> ,kȐ!rrr`XqqqΥ_{={&|;Y{NDڱcGd0H\CCCGG \XXcoLTTTXXX+ï`<A.H… o߾}-cxzzN6MYJ;;;€n:66j0 rrr].driiTTZk"kcooooVXX(D|wK֮9/((勴"x@wDi')Y>w`@7СC B{{ȈK.$F;}Ruȓ'Oz) :Y ͣP(#Fv"^߲-[?^"lvGG6  9BRٳ';;NHH1cH>|O?[ɓt:]CCc„ EEE!*ioooaa|) }cFEEkjjΛ7ٳXa@@066E :fΝ#F2eʳgzQڼ3g|bnn.D#0g555ׯ_h?.))᭳m۶]v͘1`c)))VVV/_۷O[[;88|߾}!2N&oܸtRfff{%K`n5kִ=x𠤤d}tRP6=z'H;on./VĦ%?vqqѡ<@5jTzz:]MMM|~zӦMcǎUUUR!!!Bcl޼@ \zUx&!rAkjkkO0!00ݻw{y|XMM222_asjlld2ZE@ 2MM &pU8wO?8dKKÇc<<|HLL411!vI++x-[p#Z! IDATm۶:tիW^qܹCG>y$??_ȩIs˗/l6[YY $Ν;F"RSS=<< qL&sԩo>|?ٳB~~~G644?x:ɓ'l6fkk+.bݿرcmmmO<҂O>200+KBBѣ3T;wkffr|||lĉO:e&fff^V_uֈ"?GWWvNN*͙-'ON>]KKK__?""oE<-NxX,Bqww,knnKFhoot:oz99LA9OJJΖ^~킂 ѡ;g!qX,֨Q\]]y˻]v͚5طѱ'O='N1 ٭p5:k֬3gJd*m޽...|+irq6?\5JJJ.\Y{!J***.\ / 7?~Bqqq^^^666fff'N1 2dѢE=RYhW9@9 322Z[[I$&Wyyy//;vܽ{ŋUUU\uX,Ǐ&igg`0ClllY,Õ[ZZ*++ڀt{ٲe4 T._ARMqF7*77ѣGoܸٳgBB7b!n=˗2dҥݍ+<<<777%%E")6LOC/<s*//Gqb/ʺZLLLRRҕ+WTKII;|0BB*~!ooxr¿_0662m̙3LfCC8IZ1N]`ܼuaÆQ(։o´|}}ýÉD)S8ttt<==N/((i{8BСCjjj&MZpҥK{nu ӧO777[[[c/'OԄӋ򤪪jbbIP[-R1 =jjjI&cǎutt:::x'`Gx Omk׮3gNHH;E9-}hx ID"(JnpFFFMOO v@ ZZZ֭[nݧO<<<޽{;?LLLLZ|ܹ3sL!W\yfl[N_gddD|\8IwXSes0~OmX[[wyq?g!Z|7|uիW^F]~utt""""""AAAS};2bؚRGh4|mZYYikk_z_L&2hiiYYY-g5+IÇW^}E 7L#sprrJKK{VٴEIƭ^Z~### r%T=== !=b0^^^ppp$ oߎ=otl6Fѣêyۥɓ' chh8j(klvwO(6"H -`R[[(D co]CSTTtuuݹsgqqqVVVllŋiii!!!d2Y-R\DJLD!$gnnnຐ]...)))޽V8}h\"##_U@ @V͛7!tO>cƌ:ucǰlssGGaÆmذ +ollLHH;wƍl6666SLׯ_/43{lp.|*$<7oBV~mȐ!#8l__ `+++׬Y3zhQ9˛4iƈ#/^Ƿ"A''rss̙=s{qUZ]|yׯ\TYY|ʕ\9xzzrmoo744 ͛|$HǏ߰aCee(q^xfhhbii믿655uynH$PMMMo7[Nf08PdkZZڕ+WAxTjdd[o' mm횚O>}W)Y[kM~W0_:@$X  <􉼲Ҙ޽{CROO>~f@FxzzH[nI;0Hڼ7zGB&KKKgROO@yo#K`0%Kh4?#D#kל3ϟ777K;@/yotHրڼ7`0'c'&&/i4ӧQiΊ_3'...:::t:?FJOO绫oׯ_oڴiرT*5$$DHp͛7W !U.d=q VX#rXG&o߾O0IIIt:]ډA g٫V266lv{{l2iҤ^ͧܓy [[[55 .\~}ĈNNN.\PRRjN߰a3''#G\v*&Ξ=ÇD!Bmmm'OG ڲe g>)^a۶mwXb^.(W_}yfކ- lbiiz왴HAmmǎkkk{ɖ<<<|閖X/_GUWW_g̘ARܹw^333 3g`u֯_mddf'Nxԩ.3tpp033}U[FKWW!s8'O>}~DD̷PRս>oJ?jNxX,Bqww,knnKFhoot:oz99LA9OJJΖ^~킂)glfŋBۇ&''c%˻dm/_H;,_|Μ9VVVVnnn>rH?`7nyyy/ S('O`/ϟ?붶+WaVVVΝ[. ɄJwttw/\r֟9sf[[gODbvv6Ū{,(:+[PJ\gFğNk֬ .p| B+˗/#@'kcoڪ677 ¶+**:::>}d߲e V|}}l[[x&qvv~wwk.'Nㅂ:η2B vV}+S;&wEy󆳐d".^{GGGH$!WC80i$Yf]vs/WC6/P({+++/͡˞۫jii9;;_zUx|lNRccccR'DP[[=5}ȈfkkkɓsssժRB&&&>|?ٳj7gdd=?I&cǎ6ttt:::KbbҴvHԤ$}}}l,8ߎ̷P.SˆS;#d~TTTj"8_ WzzzHHHJJ @ ZZZ֭{ѻw&MQ__/abb2e_~}W\_qXs_^^>222<<86-]D"]~]ډA 1~xee|Gh4ZUVVQ[[[\\lkkkee}1L|٧!C`--->>>t:=++|ѢEW~gXͤ}jÇWx"B)--۷fff~~~!!,PR%?~Ķ?.Q|S<3"ԄV^ORRWM### r%T=== !=b0^^^ppp$ o5utt?~B[[[[[{„ G 0|puD驪СCT*522RxcoPTTtuuݹsgqqqVVVllŋiii!!!d2YAA;(((++b}1997lCCɴd0-neþp6ZZZv;;;ϟ? PaaaFFFkk2DD 8| {Y<=KJJJ{{wU$(%3#OM߁r$LKK;sLLL}g-~͛mۦ?{l\Çqqq.]r;;;9x=1o <0ӓF~Zډ &&}ӦMׯwČ7NEE%%%+ 'SL;y9uP|AA΢EDϤ}l499f֭,bQQBڵk[6BrEEA-W/r>}P4;sL```\\K%wDڷo_Qx`i#\]] |AA>\M|9x`꾗.]Z~3g FݲO>~avvÇ̙S[[KyⅢp]mDZ|y?^J@z A ]^(666jo}Uw\N\0555uvtr___C,[;h)bXpB@@@FFƵkX###U={x [P-_nݺM6YYYM4 qqqץK;o<uѴٳg={6//oѢEW^De$L*E0hjW0iҤ/^̙3gɕ??E'Od_ׯ_oظ6 3fD|󍾾>A %%%77eϞ=K,ٶm+//O.Z>|Q72Rzz],F5}~m/5owޡ; h#͛7ODBwA8500;h)\sN*6Kw.bΜ9, OE_̞= v[}gLL̿o6{~233oܸ1n8'''7I۷͛7lذC^YJJJHH/Bw $L;b IDATK$UZ+++O.\8cƌnN@ L´{ĈJnٲŋ2>裏lmm9t |"]qk@ _s^XX8m4WWZ4&&7@Oɓr|޼yt xN;h)nΝ;|T*155ӧe2فTJKK۸qѪfff߿_qƅښQU[]]]UmsٳgUmuppVuСު>~ƍ09X?V 0@zU[ 8ݏɵw~~!J 055}%AO<% Um[YYIEyN{Qͣ6l@ї KQ{o}O#ЋYf֬Y#r)7.%%EV]]]9j+u~zU[GIwСU@ ۿʜzgСR&B__011+HB }(jBt?~Lq}A߾})RCu۷wܩjk@@EML@@E}wyorr?SLLoܸQ^^H_|yPPЙ3glRRRnذamGrۻmo#.)9Х  l ۱f͢oMMw5gZZ5NgȑwI}qsskkkj+IoW68 p\|xDD… O@{]v[,)-:~xRR… YZTv 4֭[K,;1c;;;4WhQM200 _ >_Fs9rȤIi{;wʊwO*xUIV{S4"Yd2A!9`ڳZdIbbc/^LwFZw7@7C YL}}}Ǐ7=kƍtؘ{3,ȑ#t/jjjZ 7>G-((;h~7>}HHȅ i{_pqtNA L´ɉqD tttdtollp8tgmkA 8 W\Iw`P7jo}P{@@V{O:U <} A8 ӞVTTæ&@bllr Zi@76gX;0kjj}]B kpp+A@-0 Ӯ9mKw ,$Lᇦ& @&aZ=rH#@!B&A"qk@ N[|_~gٲetgmghjobZ=yd@P]]Mw1YkEEEWSSA166rxЅinboNw`Ejo}_~lIP{@sҥ AIv?Էo_96t`#G;h>hK H59h֭rO>;0ڵky<^BBA@KgwA YL'M$jjjл0~z~~T*^\\\5kR ?~3tN/][o)^/'O677}dP7B?Q//~II47*ccc.]V{k\Ԥf㈈wwwz3h'|G2ߟ?00ݻL A$&&N0Z[[رz4P8uTX,8qaF73ӦM{˗U ޓ9288xرt .(rf߿?A?,X0eʔ۷ogdd8;;޽\*m[o566h|>Ȑ!MMM~~׮]_f}aa!ɓeeeϟ755-))Q5))$R4,,,((HՑiAUԖ;UFigϞqܜL|Aڦ4iҰa>|7/P58vEĺuV{555u~(DbffKWcJ O> W燅uuuRLFWU/-Y>SRQQ'پ};cee@US6JWWW'$$*R haOOaÆǏ;@У{Wsvv D"ѨQȗcƌ p8m'''ɉ\paooɓӧ+F+--Aa8===111;;˗ޝ׈#=JzzH (Fi~矯Xbʔ)ׯwww޽{K.%W644|繹#F}7ׯ08;;1oDDOP9 H5VŅf/Yd2E̐ ,rtxBE5K.ŋ{{{geeUTT̝;WUH5O:*u>>>.\xkF>bG zٱIOO ͛7/_|„ ۶mc?ч4H=tp\gC|G</>> P{dhhYZZury+2Aߟ9s=<<:6A.\HMM}Geccp°,LӧO˗Bܼ8%%EeHt:QUQΝ;fxlnnlٲ-[TTTp޽kgg{?Ç@Gz{Oٳ={ >|ܸq I&x9s޽[WWw` wy|~llWWZEޟ,Njff6tիW+waƎ;mڴ+WΙ3mH}E'AoAUԖ;UFik׮ 8ڵkԃ>}zъ t-Œ36*ooϟϪȟ9s&Az1Ltwxm{#~+WwT42LG@>|С+VН>^~=??_*Ζ-[pO+ٷoߖ-[zfMÇ###?Nw`ccc.]V{-'ػw/:e޼y111tM_}?a߾} tC Q_CBB[3IV{/yyyuո\ի/055T넆䓖k.]4tPR@/f\.VǴo-++#'OD{k_X{ ;wY|9A@K1s`Tc &Om۶qƵ{xxДe&A =7|coo8vض[=<> Pᑘ(H8a.kmmcǎvGGGO8ܸqqLLLZE?v옷ѣKJJ(Ƨuuuuddǎ[TT;$L;=j(#@OwXGGDž N8q̘1?cVVҥKg̘ahhq[n߿_~Wo{OHHnݺ/򫯾bX}ٳg&44ԩS555+VxG}r5kŋ#S$/Ϝ9ӁkA;vlܹmߴiSAA'|2a„bSSS)W\wʕ+m@ 7t-H$l60ߴi|!==j򥭭mZZT*~:F&W]]]{߾};ceeE.,77|jjcc㄄ZJ3f '"\˗[EmjjZb|YD"E( -֭[GĮ]Ziל(( xUUUO<>}ݤIJKKGA.XXX-WvȸXr%hi@ tN__…aaaYYY2ӧO~~~YYY'7K,y+_|abb>k֬ҡ46r5 a_p8z@vz+==,Ŵ ϣG4HGG \̀z8Z^UUe޽{i ms@/ܙ LGw.vL8O666ߧe4YP{0VR.0>hK%b1Ɖ:9\.? >sB YǩTTTx{{[YY͘1{RNΏVXXhbbU{轘voxU;""Ņ͑#G,--)Ht =h.((oC\\ԩSy<_mmm\\KJJ F$%%%yzz:::߿Vmڵ+''G1Ν;|~``ݻw  =wܐ!C  111NNN&Lr;vNҕ-Ӫtν:22rcǎ-**zetm%g" AΝ#Ϗ 6lŋ߿|dcccX,W^}ڵ 5k֨߷-WWפ$R4,,,((\`)Sܾ};##yݭ|ɑdϟ?'+MZUC,>wӧ|C6P&ݝ ]i@ <888x͛7uϟ?֭[зo?ɓ{5j;N>-:4\`/]]_xmsm߾7Xzuۓ,K"||AJҕhwK.m߾}Ȑ! ,PX(Cef@ ӑ#GV\I͍\xUUUO<>}ݤIJKKN#F =JDQF/njW__߲ KMMMII3gy]J+]~vgJaa\.wrr"_?^c&aZ}ռ<};EFFfee8pߟtɄ ܹ.Hl6377Hҕj##ɓ'Ĉ⪪'Ntx(еD"P(t-WTT… \رc\bccfϞvPU?Cjj*A"hƍ=|0ErUN/LLLg͚5 ZnԨQrڵktOy<޽{Z6o駟ر?; h#,=tq555effӝãpZt'm;vxЋik/ 4t6z;###.fZi{666J$@v֭#F >͛tg, σ=z*P{@S\\Cw ܙ L´;333//Z`\ ?~MEEՌ3'UVXXhbbz`/cѣG4g~"pqqnsKK˴4r O.KRF~Ai/z/H$lY@17!..nԩ<ϯ6..%%%l#<==_[[~߶vڕaΝ^^^|>?00ݻAƞ;wnȐ!A˜'''DDvXKK+Wyyy󽉉&Lr;vhwF'Nttt k߾}|>ĉՑ;vlQQQ۝^\./));0Dtt4۵kA@[z_~ z 6lŋ߿|dcccX,W^}ڵ 5k֨߷-WWפ$R4,,,((\`)Sܾ};##ym0`A.r8\3.#ɞ?O6}aaa9\'O,++kll<iII ~ܹӧO/++KKK|)ַ;5֭[ OZ 7>jޛ6m":W]]MMKKJׯ_'Wd2u*c{rNNܲH$fffx77*jkk-gѣWKK,rH$211Q%**L Ŵe2YNN$HjF.X[[x<˪'OL>]ѾW#F ,,,=z$Jr D"ѨQȗcƌ p8RSS?+VL2e3rwwWzzzbbbvvv}}˗/ O_;99mƏO.ZOjwj"tcZ}ڵf`.s~.^E^ .((Adgg ӧO7n(<|Ν3Lڮ=\bx111˗/ AXr;;; uZO@Kq\6MwR89 ZJ__…aaaYYY2ӧO~~~YYY'7~~~'**j…QQQ\.wرljwX//ٳg]644tʕ~!55\ 155uvv9s;CD7n߿}nnÇaF]8ž}͛7nܸ 6,^X/011qww5k] F>&X <[OOY*D^rРAtg,#5OE&aZ=zh#UUUyxxZNKW{z%E"`5m}'۶m; h#\ Y~m+++ ooob̰a.]tS}}]ܺukvvv&&&NNN Axzzn޼U+===[Ν;W^ULMM4XJ,jjj(vtvm]vĈaJaccsVGfҥ :uJŋ,tLQվ-[FzmSQk-,@+nnn@᧟~?~ɩS~ǁ:u?WZE.lrȐ!+Vp8Jwqe@ԴgϞ?j&h;>O۷uZ5CA1۷owxw aaa'NxIrrСCiӦ+W%.J/|[6PuVˡ:nZUVAk~L{Z~~> oP+VMII!;vL__ժUӦM311!W+^XJK.Q`oosΑk훜ZZaٲe gΜ3gN)P CCCU ^xq?cȑAٗb٭[/~s̉}˗¾{EUؖҡ(Ҫڵ~#l. ]v{͚5ʙ3g_ZYYy)==_VVTTܽ{wܹ+J311ܸqcSSS'";իP__`jj@wމ'رc3g433SgwLZ?ӧ,tXn]MMƍZ 7>?>zٳgmYQQAD߸"_=666%%}QՆgĉ펦ʾ}ήe˖9rÃ+Pς™3g/]r{Qˎ%Njz!-[_d5Ǚc[-o7]SDjxڝ]ϡCL&;@@ OYYYHHΝ;m9h Z=e|9x`꾗.]Z~3gT=ƌD￷F˗ӋzE'QςB>}>ϙ3rp[/]4p#}n۶MGGgRgmɩݴvMI⽦x\"0EГ|}]˕FEYr666-s8KKK//䄄G-[駟D}):Re``nZU+ ׿E70 joWWWWWWSfb>|… ׮] obcc)3??ŋ/X@܂=XG͞=ٳyyy-Rlnnn9HZ5h{ݻcbb^||)PvgJ믿֭[WPPPWWWRRi&++I&RÇ/]T3[xO?nVǙjVծ};6?x`gםP{@BP$joV&Mŋ9sL<~r?J{yyUVY[[{Ç5j5:: ϟ?oսUV ƌK`xgP Y쌍kkk?c H7j?833ix{{+}XqҪuo}o^?~̙3Owjkk-,,Zaǎ[lټy677Wtׯ)Yp' KRr͍bҝ4wVUU& BCCû9I[=![7div!###;9&]v޼yZbźupQלr`<777@/z;Lr 8*pМ}رcڵ<ˡ7Κ5K 00p֭\.K~o},,,[~Xk#FPlll:u?Lwҝ BGGܜ344466;LLL:fr7}}}S? n}BގQZcXyyytnyQSf577:tڵ[lc*L+;88Нo/^hnn;AL&;$ICC)VWWDw B#T*qㆪfΜ;N"Ȉfӝ9hڵo(888<<|РAiӦ7~gtgmNO7otrr1bč7,Juuu)5ZWW7//0S %Q7ruu;h>h RsLFw`X,5J"rxHB {'bX666K.Ƞn/?=\\\/RSS;~ׯ_``ݻw]v䨊t B0& Q"{ܹ!CǷ=qDGGnj U8pرcN!..nԩ<ϯ6..%%%W!j5wyg̘1Hfffwu B Yw!7qď?X.mܸT,իW{{{_v͚5d{WWפ$rYU'O566?ԴD.?{dϟSҒ~x j5Ųxv҂ Lr파 ggݻw냂۶W UQzԳ;w|>i6ŋpvv~rr1_:}USa7oTe˖)=@.m6B jo-AK6'Np8 000r7nܐRdL&oQRiiɒ%}\.666NHHUlUs J*joZA"/eU](N+H UZ$(GEE7mD.:tHOO|ikkFqTKqZNA./Zhڵr433mTF]sZO>ͣ;h7,_ҥK}ݤIJKK[h4ٳ׮]#㥦XYY͙3[)JѣGRCƣPPP FȓG}4.NPqI{U͚8D-o_|ǛN:ekk;vXZQ ZbG;h7ñLNN=zŋwEGGGUŋ/177_|P($7<|ΝŪiEOO_)Ws( mQŅf .8A *//#BQ>D)oxu,*0{eff>XqK.ݼy… ²d2ӧOO>ݪ6/_ Ŋnݹs'==]"lgnnN1H+nnnmJ(vmhhYZZuB)UU622/_!!!6m;hVgjodU/_CjjjOt UgBǏwPVVV3f?z]U.<=uA^^P`8 ޫEDDtPGLKKSAr\*w޻ .Ȑ!MMM~oUGI߀AnnϩeG5w 'B P{@SQQA-AgYdg}F.SJ{555YXXo 6˿\.Jׯ_'חd2HdbbXn-y z IDATHrssɗrNUU(A666NHHUT5AT۷o'srrNeM1Ϗh۽_=m5 # +++[iy[RU{SVs׀Ũk@ۤ :{k:ܫ@(7m1cƐ =JO<>}ݤIJKKsNNNdǷ@$)n3fL^^^}}}ۦR55j</555%%jΜ9%Ъ&ҕOpĈ䂅b";\Wё\h=mWr8CsSyuRQ[, f~o ŋ{{{geeUTT̝;W_==7|רQ铙ήw |>Ņb~Vy\\\lvAA2;;[ p8.8 #\pZ`` 6V&&tuuRQL,rtGe*UIT<}\qFێŨ[&+[ LH/_ )))Mnnnm_ꥧu~͛=Rk}} eeedO>} ##ɓ'Ĉ⪪jeCCC??ҬSwΝ;fx#u?},\6߰؋Th.KtηfNT<ͼ}sr5:Ο?/^lڴi̘1fffg^$͜93--ٳg w(ԠpJQ70*))(22r'Nܼyŋś.]ZTTddd-ŨE444 pċQǏ7o… m/::+$$$((h͚5 Ccc-[nݺuY9@)7y!gΦMGFtvL"ʕ+Ν'tܡSêU|Ν;JŤ G :::tg^M6ڵ,Ћ GYYYѝ/;w.Aa Nc0SQLQ#)gЃ jnn~捆6Y@1>|(Nw`x.yfB лP{.Fo޼x}Aq]]]`Zko߾ӣ;( H$ ԔjjHSShii{=bo}lllbccg̘r===kjjbccmllRRR>ǎsqqݷo_MMcATTsRRRssxlDDĔ)Slmm? &#egg744immm``qIq{uuuXXؠAݻiYYY.))飏>p8/)|]J AzWccc\\ѣGkAܽ{a.\Sggg{{+V<}499Y[[I$ݾ}l֭Ӌw-keeuH󵴴~wrҥK-[1SJJJZZZ222UE"ٳKJJ._lmmC.9{ùyf[[ׯe5W^ѯ_?@ﲷ'B\dJemmuV7|fɷ/_ &&&Çfffmmmmnn׿u٘8n87nXhQHHH$Φ>;wDF]]]qpƖnjYGW]]}ȑR`=yyy AwX, D"Aw}ܸq䋁ZYYq\ۊٳg[XXXXX9q̘1d 7?^aǏommMMM577wrrի#FP Н࿄BÇg̘Aw?V^7Н{x<@uox߿Ȑ!ӧO;tIo߾K7<11 CG[[ uyMMׯ@__,Ћ&N-+F]%b MMM@M.Ԍ;:uuuTUU=70joUUUGGGS@@ =͛7Xn h Wtn_E"3A 9rCBBJQ׽jkkcbbW]]Mƍq; ׽!?

@ihhp8,ta1iP@r9ϧ; _o޼!B[[|!o6j(&1cFqqd~nZZZؼ/_.ؼ----/@sssrʏ?,¨}/^HP(ׯ>/@mm۷ol+///))Ql,bc'Op=}tG˗?}TVknnؼH]aĉ:::y1P(\rFSSocǎTra5klذAOOlw۷566655kPx޿UUUv$)\x1hРFWEE;oܸQXXذ0 Sx*6vĉ+qㆍb󆄄TTTJGXXb^xݟ"9?㨫#P{#0sPx]6mooOwE---dKvv?+WaddaÆk>$;;AVM۷WVVJYCbb۝= u^ GؼEEE-**RμA\x]F$Z[[]~_|?allISLZwgLJTԟq,XPy׭[39??jkk333Mbo޼rk@ Ȫ Diii۷o/,,?2 L|e˖?** uZby 7cbѝzjo` Fކyyyl6 @i`TfN=7uuu2ZkJKKD^^^t&8q ;() 7@bT-x<ԩSZkkk~~1ApJQ׽/??̙FFFnnnׯ_'%Ͱa233njhh5,,,tuu"""޼yC_|ѮdKYb:G'077_lYnnSw2;0̧~OwPROJHHokk^tiɺ/^4hԩSSSS555vZ{NZ'|СW%׮]x{)--=x;w LqF鬭~L[SAqEEE O'Alݺ ˖-̐_f%rQ{{.NCJqP)븤չݑ_ɓUUUɖ{X1` FscխK,QQE"ի=<~Lpܴl2UUո8w.F}*KMLL޽~ ٟ޸qCCCl/))r势?A rqI~BRTR;SiZZZ```ll[ffbЃZZZł,Q7(|A[Q|;d걙6mJKK/p˗j^A숈ZO>? %ߒgŋ3fwufAĈ:diiD_IIɵkz*$Ev)GnngƏ]SS'))I$-Z$\.wt%ި beeuƳgϚR ,,,ݿ 6lӧ۵ zzzf8p`s̱soPbouttLLLۍufG!W uݱcq I!5$qIձGڿm۶?SҼ)b8py__߬۷o8q"::\@KW^yzz.^ϯIBb_|ܹs555yyy-_W|N:]+޽;**gSQ)#gfȑK,!+##*;;[|i7>>̙3<9:w!̎)244Ç[n555uww|@0xӦM;^z =++{ڴi.]?>ŐSN=ydZݻwwuuDk׮8p#G3!ׯ_ޮիWu0aA}*BNyy3CĶm۲^zAoocNJ/0 ))IsӅ 8!KؙHkjj|}}̙x 555gWeb%&&&ϟ?; .7o444hkkӝ7߼|rݺuSN}g~-Y@17>ӯf޽r |r@|@'-]tŊt¢{ҝ ޏlCwL ŋ?R 1{y̌7ngzxdʕqqq+Vx1z{///ŋt) ׭['~[UU:T5p\`T8zht!!!\.WMMM7on{ЃZZZACCA@I1sP6tillAV{ǩN8wq2b@qBP НzLUU/2s̑#Gҝ'>lĉ|>BɩDb.ӧo߾ɉtQ˗/g̘add??tgwfs8S@$%% oDU{4 EKK˿/ɖ_5j]@ys8b:>KNN.--%_O>ƍ)))uX,VTTԻ L6|>GwPR ѣtg;v]y1>8q|p1F 8//OMM ԩS470jo555GGGSvu@jiiihhPWWrk@ }~#P{D6l;0r-[FwPRos玮.uwq>]eeennnsiIrNc 'Fs׽mܸgbbre4b/^xtU]]6h ''{;bkko߾c *,, ׄꫯn޼IQQQvvvIIIdͮ]\]]=zq:c.]>tD#Gq8~RcwF]nii777;:\PrVjii~Ǐ׬Y#n߲e׿ 6۷X}bbb~͛7' NMMWMG,--CCC#""{!ehhg9zݺu/^x?&]l}pЅQ׽@yP۶mcX;wlԔcǎCo߾=u޽{njcnn_>}?i%==}ǎ666&M NIIoTUU.\x….\XXXWWg``0vX(-///>2w7I-ZbAΝ;"Ύ|;ydEAAAUUٳ-,,,,,닋%ӧ1cƐo'L@5jBP]rϞ=bjj-}Oڽ{w\\>AɪX,Vii)V}/\/Zr,E61VAA677yjwv4uÇ $ŖhǨ{yyyϟ;YiӢ***N'B IDAT''˗On7ϸqn޼ٱ +..ɉ?НK.-**222i7$::+$$$((HruNug-[YݺucA>V*KMM]`^;u=w1~9Ǜ5kA=%??Ȑ!t:QKQ׽IX/ s;()'> ЋTTT}jo蓶lٲrJ>OwEw^VVfjj:gΜ?ҳi1yoSSӼ_KK]l';qi J 7IC% @;wwAy󦩩H$jllս{..gqFP(411ÇfffmmmEjottt ]vuLܬ-mbbq㤦dmmuV7|fɷ/_XHgL$-Z($$D$eggKM Πz1yoPW^MJJmhhssso5jB+~*mr2~xEAAAUUٳś닋ꤶ[[[ەTA1l7n\cƌ!N0aҥ ~AxorXH3F}||"""RSS͝36<bTΙ3gРAΝ; . ̚/^e``|r@@bH}[*UUU򅽽}/\`kk+١Uj<D"QQQY~ߺuKj--GDnn.Ñ36E$#?rK.ffQk577t^@ gggB`hjjN6-**Brm69_>''˗ͫ塩V^^믿JB2 OOϰ✜w5#.EZ|yxxxnnE9N?P jo`b_]Qdd &NyŋwoVWWw[pa9ש7|p''?>344'::+$$$((h͚5 p!YfDjnIIIt%bU+++KKǏӝz?Ϫ;vӝzKtttppڵkvɓ_֧ B33ÇϘ1,4c B }Rjjj|||/!QFܹѣGtBD[[AQ}ɓ's8 cccWZZJMxx%1[00joss< #&/@Q#)] #?vXrr2nB =^MMMWW,X P8tЊ 򭺺:󒔔؞CCC]ݻw*6}vggg(6vժUcƌQl3g;o޼Ç+6ƍbc'M4h >~׊244Tll}}}kkbcutt ~JOO={Y~2buoPBPVEE͛7o޼!*\l|*\\qQWVxK.9sFӧOW>v>\{Ϟ= ϛ7O ϛ؀M˼3WVVnܸرcϟ?'bԨQ6l={{޽{mkeeaaa УGVxUVM>] D]+< I& ǧEo ~$\MP1 )ݹ719/++zKn+WĄbcbbB^&"//O|dڎ>#3p/RyZddňDիW{xx8;;;ѣ~~~k׮mjj*yKx%KNQ[[aÆѣG888\ Y;'ܹs"镕ԝ X,bٲe?NKKbl.;a„SN]VUVv N*ka8| ЊQӧOy<AAAA_}UdddLLxÇn߾mddE6nٲ%))i߾}/^Ζ\=!!!::,33իWW^jUqq1A111111O>=zI9_XXr#""t,&V77?X+TWW[n޽|>h̙RWBq>Ҝ>}]Ǐϛ7Oqܹ]PPPyyyjj*-}}}}Ç˳x__q >\.^e˖NoPUU}fҤIg4Ǩڻ)??tرfҤIψΝ;wĈl6;88޽{o߾=u޽{njcnn_>}ZY=zCUSSuO$~~~|… ǃ9WX,Vsssaaa]]رcvPd;wޑ,%,H---ТSRR222 )ZYYeffRt.))r势?A ^Q`aailY-[iϏ?X QlrdwwwGq8,taT ʬq̘1 &Ӳ#_XZZfeeTUU͞=ݽxKW^ 1bϝ;w$5jB{h'99yϟ'rϞ=bjj-tyN Ip8f҈o_\\ܺu=gddTUUeggǟ9s }V2r…?cllleeeff޽{,X@֢v%$B!Ͽy槟~Z__/耜(HTn)tF`T=tмT=]]]BBB֬Y#޴iӦѣGkkkLp8NNNRmEFF.X`ĉ7o^xxҥK:.H"9ӧl"C G+Wӳ;w'|"ԍ[l166uց:N-i$9AYYYӦM+//tNzwv쬭]SSklltիWti q[Bpٲe7JNdmm-l6[?A---GOHH (_~XݜKit 0joKK˼=ATTsRRRss3ncccǎ>hׯ ;bkko߾q)SfeeEFFZ[[xxxSL!C~,<;w<9bʔ)۶m3;Z[[mllbbbD"рΜ9#)ws.Y._LA@I17(1cƐo'L'^Ύ|ciiUPPPUU5{l wwz6AOn_z500pĈ>w۷dԨQ ##ϟ B-_㭭NNNM]=(1c&M xpӿT䋦ŋ䔕fK]~:I?rK.Ճ[r42dՙ3g$Ϟ=kbbBOaa]\\W)tttLLLۍp0p@q;599ȑ#RB cǎ%I3g^<ڿs:-JU{?z}'=wKKKOߥlדb8p󾾾YYYo |XrWA\vmذaRlI<(O`W^ٳgȑ'NLLL| nmmjllvR>))iƌOƎ7i֬Yk֬&oݺrI{~ A? s̑[roⷊTwM>}v~(0v|reeeW\9s $:xHGqW!OD"ӖN\N˒%K֬Y#+29?\w wߏſR PޫV|</11L]VS 9qWD@V;@ҮsZ[[  ^c 1kkϟӝ'NHwb=罤 gggFmiiiãSRR222 )ZYYeffR MHW YXXPj0w'Aޅ2dt>&&&t2 .з;X CCϞ=?~wMM A:::kؒuttȩ嗎D_\ $&&~7 1}ZEEE{;W/RCYX Mw4lذ<--ݭxYqc.+۶m۽{=<<<==駵kג[]6p@GGGr5ӧO/^XrH$ɓ'rܡCŋ~MY[͝dm}+Wdm&kkQQ? k#fϞ-kݻw;Y[)uVBBƍ[l7nem4iҺudm駟m6Y[/]uVY[wc322em􌊊￧8^^^?`"ə5kO(vBQdX`B FAw`V>_[[KwPR̹-H$"͖y\"5448,--em522remMĀRQ\tQ(ƚϟ?_VAXYYXBVG1vĈ6muc#""dmdm;iҤY[Xvqq| 'k+nx71o<>/k:X`;0č7LGtgebi9992226mD]'/FL1''lOO]v 2dWЋQxA |˗J {J$yƍǏ|xHHHYY^[[{'''++[VTTƏoeeaaaѻwoÇS}Z$lڴ)''$?{Z2&e$/Oۚ^Kܻ~iرt,uuj)D{ꕓ_CC]ڷo_```VVAH"oߖٳ?۷ogffl޼j_$0aB}}}f011ohhFI/^_rdƌK,]zzT !8nKKƐs綵2menM.H־8mk{-q={Lo/kw=ZTTdeezFw?'3:MիAjoٽ~ZSS۽{%_EyyyGg ^WWWٳQOOڵkT{AAAss3ŊqF!*Tz 6PsrrH"]8}qZmժU"fddJ~]/!$.. Љjkk !***L6hhh LnsW[[kggG=z@ 9!!!::ɓZZZrfmmMPSS355{Ӎ'O\]]]XXHu9==Ȑ!Ǐrʛװaè?nlllk֙[d KN8pZZZǏowbbb'սI$T8;nxCyyy'Nd:tSݴիW^^6;;㩩BrҥfffrFG 666:::N*GyyՍ~FZ]]/*))ˌ!eL"֙[d K٧K]]]zzz\\/UI_m۶N>:Gn={tuu]n]aaaVVVTTԌ3FCUEEEюF9ycǞ>}jggg``#GѱwIIIG!eO"֙[t K٧g}iӦg҇RϞ=kjj~UUUo=-8 ]j7nx9s922cҥAAA-Ν{m]]]//#G|rʕ :4!$44422r᪪)))T}||֯_rnjs…sFDD̜9sر| uuk됲'-Hمåٳƍ311rBB///ѥKƍ7v؋/2tx]q+/۷w^nn.//oĉvvvΝc: tGJL9@FvvvB}~}׌ym #a`Ӛ[4~x%%%!o/ еsx$`V555wQSSd: XU{(**677755QȭRQQQSS,D" oxs׮]vvvf:tS/YZZڄ $~;u|uuuI$~TSS#q~'''L:ux<ꭁO9N[[177wΝzkS744$eښK6:?44T<ݺuX]]:,,eT:::#FXdɣG ͚5nV̙3R@խk_˖-k~uuӧOO4)99YEE|>?88z}I&U)--511YpZ[[ܳgvC XJÊ+cXXX999GGG8p@YY''>|ٳg BFFkhhزeKqqqllիWd\UV544رlwޕnV&$$dÆ 2&Uvܹsmllī={?n..\⒔D)++O6M]]jTTTTVVB׍s133۶m;w,--8pӧO322BBBH-%!u !zڵ>>>ϟ䕕 !#N$͟?8qjӧOBB}vW())ikk=:11Q__?88_mkdVfڴiK.yPêչt_9N'O<ϗe栠d%%i?m|{%Źw]k==Ç.^mMx}1CIIɽ{Z.Z%EEE//l9XV@ JJJ\.WCC M7o4u{II !Qz[\\IIIZZZvطo_ss={d޶ ~̙7<%%Νfff|>#ǏҧC4a„򪪪xñoke t͎nzp]ÅBt覺o}}CCT#us5Hiii)))R+&ֶO>k׮UPPpppHMM~Kr8e޼yWqE] lݺuҥ+V dqr--*;;ѣGF}NjIϟ?/Uj-==]3Vr$.\#(uq|o`[{>~uѣG;eҔ|ooh'''csm*\FFƀϦaP>>>k֬ ꫯd4իW׷B:CCCss#GhoUjȑ#G=[VѣG>0:jo`V666@B*g'O̼r势C"##UTTښŋgϮw__3g̟?EY~;w>y$---<<|̙>ݴI|̈́e˖gŊ~M]k='O/_W]]]PPjժOsU"DFPgUWWGEEɸ7+mݻw*GC []]ޞzSn6yJOO)S9sfƌRfKLL|atttu51|~x˗/nٲOm zzzӧ !zzz;vX`'OڝUUU+**V[[{СO/Y D|C*B6nܨػlv&(%%͛7WVV~w#sBXU{͛7.66V }[iN݄|}w7Sdùk֬:~׮]v?Vs^]][PPtx 4{lHtq{{{ww<QTTro Zf!O^.UxLaƍ廥d IDAT3g^~=!!7t!:]UUtx㋊fΜwߡ(**r\h ªا7nܰb: 0ȨА,е 2D(2/^STTN8o!;;ڵkGyp8<:V] ǿӧO3:jo`V5P{;аg: :M(((B]^SSSee"n9%&ݻ'̘]^aa1cjo΅𸷭mBB}:=Cuuuaa!D2욚*>/=$Æ uuu?~ب$>VJcǎ+=u ^雫>9z1`333mmmmYYY[IX@{ȑ`ǎL+//zrE 666:::єr%(**R/|}}|~VVVII]())577w4tSfgguҥvSo\ʸ]ٓt(P{;а}0Bȑ#srrZғH~BhJJJ}tǏ2eʔm۶ՕwkksmMKq'QE)((B$!MMM啕LnU7HgggK-Z(44422r᪪)))T}||֯_rnjs…sFDD̜9sر|󍯯/ܹso߾%{~cǎɞJ\XXjiiUUUIcuuQF}'f͢ڜisʸ]ٓt(芨 t߿M_ qpt73ݙuÔNNUwNN[p!Aeeeƭ3K@:V=c2772kwa:»c``PTTt銙r555{ˌ9@gff& /_tP{@tʕ|`=<7tI'N`:t.G%ottܩS_WWSȮHbnn&񣚚;99q8dԩSQo Opڊ9=;wج]*44޾E$){䄐,]tذajjj֭[aaa,D1bĒ%K=z$i͚5ʰ=@v555 tt3g888'''>}Z__ҤI***UׯO4JLii… ڊ={跻w2d`RPVX!¢G !?>::o>9!$$$Ϟ=KHH055mw222x<^CCÖ-[ccc^'*Zpǎeee{eXVM!L. M>D .tqqIJJZ┕MN5****++o !9s昙m۶Mʆ<==wYZZ:pOfdd?OJBHBڵk}||Ο??XYY+++SSSÇBlmmmmm۝GH$?>ϧ/=ӧOBBLpG믿Eq}+2/^d:ÇݻtXuwy{:9rE'O<ϗe[AAAJJ~UQQOKsww'|zzzÇ755]xۚVSSi+--c{yyyhA:J^^^r$y{7@;6nxUSYRRBqttoȤT--v;۷yϞ=؟6DDD?+ ~̙Coe;wI-*M0C1plg XU{geexE1:ݻ>>k֬ ꫯd4իW׷B:CCCssg_E[BSSӑ#GF-{23V$RPPr{f:tS@;¾-Z8ۧOܫWxⅫٳ={J?wРAFj>k֬ &ܹի3gΤn-ESS{衠lٲ>}Xkmm|tXu5joŪŋ</88 Ūڻ"77޽{L6!!~<֧}N:|>… :$iii?&(NNNdgghݹsG`Μ9-|rs){AMfC^xn;vX[+>...s(ͷn*K$zBpܸq'OnkGAAFkVJ$544yŊF<8s挃zrrӧ'MR>L~IĔ,\PMMC;Z?hll WX!! .\PRROٽ{7!D^t4d>}/_."5v޼yIIItKFFFYY,(FFFR=B8& BիWjonܸs%)}˷mfmmkrÆ ~CBBʨ899YYYmݺ6~x++̈ ޽{>|dllGٴiSNNNI~Gggg ֧6**j.]Ԥwt#.\⒔8bĈٳgթCQQQYYzH2g33m۶ɱ QRR255]r͛7oݺEPυ/_Ν;׮]7wqH{ĉ'OBڋ ~JJXWWW _~nٽ{'|ҧOY"BǍ7iҤÇC'|o`%o JKKKNN޴iSDDDTTѾ}vu]]]qʕ[n=}K֭[G߽{wdd۷ ^xp/eeeUTT'{kkkbZ7nХ={)ڂ t$9rHOݟl⧟~300vZtt[Ap`llLkkkܹŋ={ۼy<АNMMݻwo[^wthZ=zTرczzzVVVR"??;::Iʲ 555===revsBB[766۷:;bBHllxQ e;^p֭[GRPPسgϴi>CZıcD"A믿韪1%{ܻgϞ֭+,,ʊ1cɓ';P;;;eeeϟڙRUUU^^ػw|tȑ999oI$JLL=n=y֯_矋{nJڢ'پ}ɓ'333\СHvŋgϮ#OMPoo1t9sPJMM}٥KC111G}t4͛mVUUI榠;m4==E͚5k=]7xs"##=<<.]h"Çl_g\.w̘1-NߥFDD̜9sر| l'ܹso߾%{~WYЭ}ituuGɽSsN ]ݻ7A9] ݻw?܅ܖ2VÙՉ.3gr8d@/ oܸtXuCΟ?Awyyޙr]q NNu]~s$`%9;;;;;3:jo`Vގpjo`V޽{g:5 :$iii?8.]:l0555KKP)SC/_pN:%= !ɩE{[۷Փjx"SOO~;!֭[aaa#%.]1bɒ%=j7СC">c:tyO<ֶb:tSd%dbŊQFu^Ξ9sA]]=99&MJNNVQQ^_~}ҤIUbJKKMLL.\&q!!!Ň~YBB !qqq666w&HLYbx v}Y|!<a˖-űW^˓tUV544رlwm7 " ?Ӱav K,)--2$""իWt---3229uTꈜH$ZhH$?p@Iœw{ѯ_?z}e555}ZZZ߰aĄ2H["f333ƹs-SL%|~CCmeh=yRRNNNǏw?~իۚ\Ǐ ׯߑ#G~=zT$577ҵ\ccc~>裎`2`@7Ū' a:Ғ7mEo߾]v]rEWWÃj\re||֭[O>}ҥuwym'''/^,\/,,,$DEEYYYEEEb IDATɞd111aaaoe_|dɒpPxSJL(HYڂ t$9rHOݟ?--MJ;wLJ{;BDD|=w%H-[O%M0XIAAFkVZ;;;ѣ}k.kkkꅚifff^^޳gϦOnlllll?++ˋ>F$1Hғ7n8jҤI'O믿:;"}YhZ=zTرczzzo<$"BtttV^]__ߢd566RSGsbccOA0`{YZZ_k`hhhnn\}Hѥkjj:rѣ^XU{@JyVϞ=]]]׭[WXX5c ӓ'O;vӧvvv>>>!!!YYYϟ?o]B{/^[92''u-=DQS444/ʲt"Q(|g7={7j?P DDD0:,_###=<<.]h"Ç9_g\.w̘1FDD̜9sر|󍯯/ܹso߾FYRH믿O{ аqwwO֮\o߾fff/_޾}{넲,"9焐ɓ'gffVVVzzzN2̙3HLL|atttuڵ֝UUU+**V[[{!eee3zzz1߯_x)ycs... !@$0/:t(uBKqFeeA/{ jo`@WgϞsx(Xu{gk111c: tms(q5`{ĈD"?%䇣p*C!AAA_5#yޱdߓ>qrssNڿ]]]>O]XWWǑ<--MGZxҥK fiiJ?@[nyxx[[[SHwܑvskN8700(j|'1}ƪx˖-{3g888'''>}Z__ҤI***UׯO4JLii… zPHHHqqÇ={`jjn аe˖ثWR+!dŊ٨l G07t!:իWoH$Zp 8eeiӦS[BqΜ9fff۶m?s[[[[[vS͟?8qjӧOBBH$EN),! \.7Z*..'|"ɓ|Yf *--MNNVRŋWZZ*˜%%%k"#壶fk+ށEq8 ‚@7JJJ!-C-..nwxdddRRRjjn)));w433iiiҧ6=~}D , K?Nrv@_j4ꭑiii))){jii}Wُ=5jgEE!DMMFVSS6}SI2o޼xmƎk.@B I lٲEFFFfffGo]ֺjEEw߾}jkk:LxIII/_ݲeڵkQ@$0/:t!aaa %n*,Yt^|=h @7I\z/^y9Y;qoŪ;##-_ݞ'O駟:5LYYq+᝺Qx)1m*//͕|φ.؟~~2|G-Ydܸq]rٳg( >|8k,؁U u ǹs֬YEQVVѣǏ??tqqos~ibb|c;w\Fj*FO?1_~E]{?{vvvrYYYo !ÇrqC [KKޞRYYy ࡲP( TUUɽ9ۀ|;ǐޮ)r;0!d̘1500{nnn򍕻&|gvvv򍕻&,YDz̘1rody6AkgΜYj!D?4H+ۭ#8,͛7رp8&L6lx}3䖔=sLOnE(G[[˗Lg9ׯߖ-[?~ֻwsι7t66MMВ0--̉':::3 K@CŪܹs</44G˖-SSS*7nV't!sss}4[z5A't![(< P{@p8.tXuXfΝgL.OUUU(1)VcϷb:t.$++]v1:jo`VSLL7jommmlH+t8cW[[ګW,> 7afNKKxk֬a:^k/_͵d:_8ٳ'Abqo`xtz) ?~tXuGڴiLgN@p}&t}8 ]Raaa```DDAsH: mmm@qn;F M8@7-*//'p\@wĪ|&f͚5k,SkkkLg{t.%7t<XU{}JXYYihhL0a֭ &osssNڿ]]]>BH]]Gss4H Du8p`@@@vv69ΩS$7003gNfff JNN[N:px<^[+f/^?;v̙3mr0U7+V5CCMvܹO?88z}I&U)--511YpZ[!WZ466Pqqq666w… JJJtvGYZZٳ~{!CȾ}W 6>UwDJJ b:tyB>Pm۶Y[[;::S?  266;w?8͛7%V[[{'''++[VTTP햖?{8>9bĈ"B^|n:}}1c\~ݍG^&MrrrDm ѣG{РA>o߾9]={?&D $%%9::1"..nuuuPTTTVV^***̙3l۶mRq9ʕ+o޼y-BE"Qll'}Z[['Nl߾bͧN~n>|gE"7oikkkjj(/FDDXYYyxx礝:T|||222=z˒M6w>|8]XXHl}rɓ'm}sαl5cccss;w޽[CCѣGW\'sEr{C+oEŋ>,:fXx}Z>|,h 7roCCñcZZZvmfff]];nܸtEkw%$$޽RR///KKKKK)SGGEnxH) Ǐߞ$2 sijzzz ,ظq޽{e/~W W^^~mrCz;2d.^nݺӧO6́,Y$++ŋ/^$ow?tСC]\\{d/Io7hA_}G~ZZZ^jqhȐ!>h7t#P( rﮰ$wo޼Hݥ%YJJʲe~gkkkE]pBPA888씔doo`0{w/_$/sR %HX,lAׯOHHv4&b%%%!CNΜ9clllcc$s޽ͭ=1׏D.**2222223f AhQ=!!!66\Vŋ7AAA _ HFz4 ///D믿Rf.rOGG3,,,???55u׮]>>>!''42,((9sݻ[&݂hhhjjX,~SҚ;wM޽[RR($]]ݩSFEE;v'}wO>ٳu+';!MMMyyyOo/_Iʕ+O>}%CCFȑ#or`ϟ;w7n߾O?EGG* sѢE~~~2Uܹs)))Yؿ/R^^ޢȑ#?M`lhѢ}ҥ m۶EEEUWW#Gt@!'::}٫W^bY񼽽O:U^^~zj䭅s8Up7쀀2RҞ={LYϟ߉.[lvvv3gZ-&`L<+VX|9A:t)u LrƍW^͙3gԩEEEN8ݻw/ȕ;p9sƌ#94(..u/"%%%))Lkƍ1cׯe oݺ΋aj1wܹ\_ IDAT0Z1ձBbvxZm%''X";;ͩhB,kjjjhh477S #Z].++h@! 7~TJvرqFI r3gOtp8TGjV7%-[پ};q}3<__ߨno[]@Mhhh|?aÖ/_ @m]x` 25Eu*ܼ(ihhĒ}sDw+Ϟ={{9tPPP.h =|wk \>JCCcӦMvcc={|B |sN22I&QAyyyEEy!>oPu.]tΜ9-Zedd&&&<A36lŋUؽ{fϞmiid2mmm###_~Mۗ_~٢l[ܿ_ZW̙3J–XNQENС19JwE"?vGg/9r%K^xA 0`[osNXTxQr>!!AzH N b2Z sЧ b=zHѵn33}mڴI0aLLLt钙;3[r;;;wީQTTdee|r}}}]zѱɁ2339kʞ円k֬iQYImHT(EnnnO1*H'f޻rʋ/=/m^SSo߾l޼ fڵ]j!LZ^^^->*222466nD|3f}:ڻw@ ?y$ٰ<,,E2!wUkȽh{;vȐ!TxÇg͚%[8sϟ䴧ࢢD--P>xۻE9ˏ1̰755u+Q(h}mV b8tP$==ֶEݻw%\biiLn۲5wecck׮#G}ݲe˲###[G~;w^t)%%%,,Lz(66v999\.WvÆ /B#G ТCEoYUU5yK._> >裏233_y-[sV;׊P( TGjV7B \]]e 'O<::ɓΝcيL ::㓑qѬ/ V<6))D(~W\!r|Ʌ Zmnn>q,,,6o|)i.7|pMMmE"7oikkkjj*ۡ ӧO2dݻ2dܹg}}ŋ#""<<<3k%"HRRR: @.rrobE1ra.^nݺӧO+ZƌDsڵNdɒ.FVdddxxW:?ITt}utG___9N̪ 6nܸw^k_}UBBիWɫ-xxx?r[oEn?x&Lhƍ#7,,,JJJD"R///KKKKK)SGGEnx!!ڵkWW\r劇miic|M==5:jх  ! صf\(n" Cz#I;\+U}GG͛7SP`ϟ;w7n߾O?EGG*jUVVh"??zr?˗/Ϟ=_JOO_pnssl'{hQum۶(rNS>mB6G׹1v4?ٻw/^}v___i,W;g)222//|555 Xrӧ/]dhhX__غI~`o߾] NNNiiiOCCCSSSb˗/[U!KKKkܹ6mJNNnnn{nII A'N _ϦBtuuNU___\\|رkPVwYYYFFF{Z2eʍ7^z5gΜS>>>J8qǻw_wܑ[===]"~#Gtpp FFFvRYY٢y III-*7nƌ^m~ʧB(istcqttx,=r䈇3fLԻCPekk@V.// 333sqqn}wiii{뵹4i155ݼysg}M6-77ƍvvv۶m#+{{{{yy=z|>____I[;vl||zg8NZZX,h,YYYT[[;//…  |>_Q}6ңeff7ottt׷g0O*++-[fjjOu,Ѓp&{{{{T=?gee1Luz'pttրV׽y<ǣ: 8E"D"mmmQeeD"aXn z{wssٹsgUUY.n/E"QhhhPPY2qĤ$Hgz˗|>Y~ĉG566;wnyyydǥUS;vl|||:h *,Ϸijjo :++jÆ pBAAҥK ___/G)@.{]r7((hcV49EcPT7ֹH$266sgnn.% Ϗ LLL$ISSKNNVt:&)0<<\nerE\D&hJDn[O 燆555:::EEEʃ_vm{Ƹar_Vyy9kaaqe=MXpի $f%](Dnn:cR///iIMMM~~>'bԨQd!+))DBpNA^%w'L =wj=Zߕε篃ndzzғ:ƍsUs{DnZ[[s\.q,Yhaa$fkkk%]%$Bz޻4##@ǵigggddDL J6=x +}n~ѢE0o!VRMn+@[Wi`SSSɍ &(^SSscloA'NrΝ RsW~Xp8Xh (AԙhhhjjX,~SҚ;wM޽[RRBĉ'bcc ՝:ujTTT}}}qqtjPj``#SZZt)foowsYJ"y?̙3/^Xny;$@ZdIxx͛7.\([u]av5   v(,,P×_B_@ܛLԁҥK-Z$[p\\\_ȅ nܸfTWWo9sg&}wb&%^waKpܙ3g~'mޭAAvbŊ]vQ B?066:Z!6sLO$>|x>sO;uꔏO~֯_oaa!ګW X,k T{]@>ou{!CL6@ٳg=qϞ=Æ [|yaaajX VǎsU\\l[Tp8111׿T, M6d>|8roFB%hu9gg[nɖhhh̙3goUQ]쪪JcTOuuH$: WSSDu*(TXRR܇nذ@7B B g׮]: q:::!!!~e](Eu)!!￟7og}Fu,Ѓ pB1LmmmPy: x]W.]rJ$@ʽKKK322&L@u гΝ;Gu=.]_(400XjUpp!%Q]l | U *(..NDOOoٲek׮511!Kutt@E@+T 7~R tҷ~+ͨ[g$ b1t-[b{BqM4;͛7/== |Pu~ƪU>|sN7;::=zSVVl}BBBzn;-u8(7Pqb=zXyM]ޞSN͇SYY)Hl6[G"##L `0D޵G`Xcƌ#B(FEEںI,&M=zthhhqq1Av7nÔU[[Kw}&muVwww><,,7`ƌ IDATǎ# srr---UkV\.W(R% !B__@z!!!'NLJJDO>H$~~~ӦMͽq㆝ݶm|>*''oqrrH$zzz%IPPŋcK |HDϚ5ɓ'ɶrkZr۷ }||VZOѣ˗/|ٓ8qѣGΝ0`@^^Ynggw6j[th.KDyy9Ձ:B * 7x<^rrlaCCźuC燆555:::EEEd…W&  Bi|FDDiii&&&N__?'',ߺukD";wݼN8;w.&&&((K$\r֭[]pBwhP-N`0]__h"BoooZZZ'T(n<l6Bk@ Z@?c0MMMrjii͝;wӦMw-)) OMMݵkϜ9ŋu988K, y… )SŠOo MMM/_ 'Nƒ':ujTTT}}}qqJiB ''ɓCNNNiiidZGv|(Ê Cu {JZt~Hu ڼ%22r…7ndADGGϞ={+V_n]ttѣiiy@@@nn{:}x >?f٭넇s8ׯ+S~3gΐd2g͚5|iCc__- xJulҙPg :ݱ?ZjΝTCWW^GG ș3g>$><}N㘘.4Eui'N8p Ձ@v=dȐiӦu[\եK"##{"<Piʽfz'p8111Xۻ7ܼyWOD]WYY)Hl6[G{8p˗/KKK;@a5g*駟9)ʽ_xQ\\Lu A T5qYYYL&Sy.FchOl*l6Bk@ Z@?JsJKK{[Dԕ +**roPU߿?Q@kcuuunnn666;w"֭[|~``#GxxxX1cVn5PekkР\999B-..xO&ۼ 6*J77&%9yd7nEE)b,[3;;[Zc>o``0cƌcǎgCn5T6g @! l߾ իWS8XL:q\. rEV\qBUV|>_ DР <$$dĉIII"(;;ӧr[oڴi7nܰ۶ms?~Pϟ?p?~}ÇWWWmBss+W,YrǍs |>_~)((/ڜ.kk묬,EkQAQ?s)((HJJ1b=zte>/yĉG566;wnyyyrgCQ֔T6g @Zϟ?OOO/**: 244$LQHdll|r7//\,K$>AH$&r544X[n111NNNsI7]TD"Yf͈#L۷gT{K566={vSL믿Qmܸ|߾}홮k*9lE1{[lQ{5=˭e˖6gCr5Š$6g @-ꮸwA 4(;)<33KZRSS 5jYJJJD"QffP(?~ʭYWW@7.((V___Z4W'|cOOOi-~v=ztnnnvvvNNe]y ʧEZAQ?BP"HHQWc[[[rw„ CIIIqqq7oެC;)(%%˪bކ9PUm> KDhm$;;;## .C(\l6;%%EIV$wo޼H&ފhii(yѢE篿*y``≴‹/v=a]vJ+DEExGEE-\pʕT=NSSS,777-)++յ@?ϟS Z}`}yFFӧOz{@p8|k:V{ ssODŲ?Ӟ8]k3%T 7ŋb|u @{=EyAAAuqB{g 7={P4@{ѢEo֠A roZރ B @3ȽTUUb<sЧH$!CPHOHH+,,011y XtѫW:ԏO#9喔P#@?:>$ISSSo>ccgϞ믷nsssX,Vϝ{M444x777;wVUU`֭|>?00dymm#G<<SrٳvYYIKKŕ#Q>(..:PGʽ### XnՁ@裏 l?[Dw!wbD"dyZZD"ijjx[bݺu܍qrr"KYP%ɚ5kFd2o߾-=c;Ƴg.X`ʔ)W |ڵUWWd2ݻGoٲEQdVdȽƆ<{@@js>oȭe˖/ Λ7֭[d9mQ333KZRSS 5jYJJJD"QffP(?~V̬spp wǍT[[/\ZZZ-+ O>ٱcbcc?r[Kkkk=:777;;;''f|PBP"HJQWgU..{̙~aӦM[nݻw@}!U#>Xf|p8Ahjj+igggddtiNII4iRGeff:::qMGGG%)"AZZZbP-Z{ҥ_\ֻE _xxϞ={׮]'O&f|P #77wĈA)J;;TVVnݺ5000''Gxea5PU!!!˖-]tՍ MMM/_x~XTTԺyk6m6lصk֬YSRRr777rn{nfZPt]]ݩS]vѣzĬ޿?))AOO(i|755 o#h{ddd<{@ 2$***///$$D[[;11T}lZJT߹sϏ`$&&?Tcĉ T*/33bȐ!T7G߿_cG޻wɒ%6<.x9Uf͚ϟ{yyɦ|>?>>¨!U4}tnhV ojTUUb,V7|PW^: GGÆ :P;g!U*h{\~o}=r_~Ϟ=k]7T{;vL3f(ɽϞ=իJ+:DDzzJ.{huu%%%=RtBEGmEL ʿ"TtTfffCUtTGGGI[>kEG?訤s% pwwWrY ]i&\PCΝ: gg缼|cCB0::~ ZXXl2%k;vH PٳpF{gbbKEGx<]+3w>ꮴʽro roRmm###GF7l'ro~GGǟ~iʕ<LLL|}}E}ʽ={3 W\_s8;wR&P\ %h{f``iӦ"P(T4Asa0?3ՁKKKP1@Q%kx6^z5o<Eu,Ѓ~oȽIJ^s *gƍk,SSSnhV)ojzba5}xT>]vI$+VPI&qܻwR#{@ гh{޽166@77t><h{?{,##@7'tp8Xh (A>c0۷o:PyTV2k,Gu гp roPUׯ: Ƚh{'s133:6Ƚh{!]^zb>mB,&Iu ]xޒfdd&&&<A36lŋ{:777ŋo޼)=fq?7nPIDiɅ  ypss/e566>s +N"##%ɺuT;˽sՁ:B ]"H_gۿ LfbbKyD]]xxxN"++˗+: E"ŋ#GA".\xizzzk׮}A˯K)z9;;gffٳk׮͝;"V-ZTPPp̙UӧO///vZG0* 577Y|}}JNmddZ\\5qIJ888|g|>6n~-55_\񂂂M6=zt **JUUURHA,[,;;;vصkWg&mEGG'11ŋ˗/_lY~~ȑ#˳kun/w).AGuss#K믶|O<)((5kV0fΜN)*vAmmmDDСCnnnÇl}ddܹs#""9sZgp7ni5nܸΏ I `[aݤAMM-##< MLLN<٪7|A Bmm۷o>innD|>?00,OOO0`H$jllJNNLHuuuGn:qUSI,XzjHTSSJO4ILDQQQAAgϞL2e͚5m x= &khhL2%!!A$X,2]v닗Eܾw\.ݻ⡨{fgg655 >3f E`7onٽ 44T$ܹsƁӦMRr999tQE"ϷY$;;n䩕Uff bbb.]!i3fM~ѡCQ|l8p@"Դ_~۷oWPP)tbPPP@@ׯ[U2g,+ @@]vĄ@@1****͛7-SSS.]zY}}}Ihjj&$$C Hz: ѣGkhhv&$SSS\w'tppHKK+))qqqx>3O)z?]x1""Gw䱮sZ~ymmm###I+CDnn[XX |lv޽SPxرRMMMMMM333 >ܪ}LLLdd$yH-ڹsgK~'_|F}[|_[c̃gD{>}899秥Ud]\\|aaaSNmYudQpp֭[xe˖/3f̙M p+ @NlݺU$!7qDC@==߾k֬%Vz&<.;hР9sƎۅs>eBCC q}p>ww_~eƌ۷oo8 ϜdžBDfff/_/.=xa hĨgʲ={FD]]]}}=<,c; xرO\.-͛Ow-[ᅦkhh tݻwoذaAAAt;_ͽUTT\.Q<eeey***tG!D"VXSnٲ7)((Lw clsΝ;wt񫯾jU_nܸQOOL`F_ܹsuttLcc={Z(((nݺuĈtE= 70ro$ ]TTD#OȽTWW BUUUl= FBm۶!ؤZ[[ |9s >PMMMw522;@w]i'N;zڵko*?hĨܻ,++ٳgtUUU.րʽyX,/݁ߪ,,,roUkxxxii)݁@RPP @dUhhҥKݻGw н~&0^u?݁@A [GG7q9UB*[g@Vq<++kڴi rpp~:A 6,11ݪZISܿzzz8((͛7AmٲU㖅vvvfyƍ^ϟZRP\EUUt^]15v]b%$$;… SRR:Sgvvv׏92 OK.D?#݁y<͛7roU={_|yܸq'..~8pI┕rJΝ;&MntȐ!˗/gNq5ssɓ'd֭k9'vV)–z)("//O餾Fx(V۷QQQ&&&GiUiӦׯ+**.ZUm OMMUUUݼy;,}H w=QUD;vӧOU,KQQQOOoڵG}IUmԌpss+**:rȭ[z%łL`}}}ۙ|}}KKK$cVRRcVUjƍ9RtUPtRfaa1|pjkk###UUU :SSN?}$=]G{eee={@'>KJJmYH>yx񢆆68&L:`鵬ZhQ^:$bKWA]]),,zAGi~7nӧ*3ŋ24TUU\.6ZZ0*&?tO&Վb䩮.uן9s&9Ο)u/GˍPTT x㓨ڻ^sѡCZ[[^XXxڵV'&&8044m`m(TQQOiбcX,֗_~Iw zro+SLYdIyoW?w\kkkQtuss bÆ ;}tWUUܪ/000 hP/_wwG(;vnffFÇ l}LLLdddۭp@  @zȽ@V-_СC.]斒r-oo'N8p@YYYR/^899yzz׷nbï\2{W^eff.X@|w mGhՠmwސXëë)/VTTo;wU#F,\EkY`Tf͚y0ɓSRR^~z 2Z`I<<<7#..nΜ9۷o6m7ЈQ_3ݻԩStsvv666NOOwttJHH;"`84bT]ZZUQQAw 1m۶r\l`T yԨQv3SNXs 0ʅ ƍGw { bZȑ#ȝؚkq IQQQ[n---4hȪzyuuutG!TTTڮL2 {] ۷KKK HKKKKK;.w${cT=h $r͛7nXjرcGV(++SVVVQQ; CҥKׯ_ƍB*[@& <ƍVVVt lWnmmm fϞ_|qڵ${{{ch/>UWW_jo~h !Yb [׽nݺ@w`o޽<..@c***V*((ؿ?oVhĨޥYYYt=u{qz rJJJtQ72߿-/^8}t'' .@``-7aȽ@V۳O>@@zLMA@7b W|||:diiIw нhtI999iLL; ۙkbX9Ĩ֭[p uLMM隝^|]Qk,WW'O$''A~n*))quu]j^TK...3f(,,r Ozԩ·o^xQUUÇdɓ'%5k3jXI!ppp ʕ+t7ȶF--䖅 jjjiDDcD">GӧT$-X`djjj*٦UH0@$ձ\|msoP}mÇ:::͒lZp8MvEJ%5kko5,Ų|{9ȡl@`ccӪn䩕Uff& 9A:thJJ A/>~xccc\\ܠA۝nȑ䁖VyyP(!А,h7Ȋ3fM<&??_Ҙ^TK999"H|!ƍW%%%y{{<8>>֭[f2)@1* 277?}4݁@=zFjjjBSSSl͛l6>>T$呧mۘhjj&$$C wVX'O===JJJ\\\D*(6f@;nyƨܻ$++t=GQQm۶mFL IDATMMM+//ӧ~~~ZZZhh˥KΟ?ٳ׏=ZGG,_xq@@͛7,X'O_ZZ_\JJJ~~~iiiϟ?[EqԩHr)Sח7K깹1-,,<ٻj9,Ўp\%%%yĨڵk,>h`[jhhxyyUWWq{{ٳg^wŊׯ?pQ{qW^^gS:4|pkk_}F6\.c{Qp8f͚7oYo``/ |||+W?>))I(޹soö}ԩyyy)))&&&{ɓz%.[TTo߾O>455]zu<*$$ӧ-sm޼ɑ4]qqqqvv...NJJ244dْtqq1cFaa+W|S ߾}{EUUՇ%$wD Zff&Acƌ@(jkk߾}<}𡎎NssH$dyzzD"QccVܵ۬AMM-##< ۝K"E"hڵ֭[soo^pa'O{8[? Q/׺u(fi@8uuud]$dKڵkWѲ5qKIPHH]iӦ%Kt7wή1c&??1rHPKK\(fgg ym]WW7zhǧf;b_ vrrJdd… V 4jԨ;w|R\u,--E@8@$HPcccctܸq⪤7oVWW;88;B'Ij))N,@1c455LfBBB?IkTEE%;;y@ F}899秥RoaaNfWWW;vȑ#_~eiiimm۶mذaڵk>lggG~[!֧OgϪ}\HGYYyʔ)%@ /++oV]]-lmmsssccc]LfHj))Innn<ʕ+t7ȼ.kmm}uAAA ,غuWuuu8p~٫W]b\>>>yyyZZZ...BzjXXXlll>}f͚5y ¶[9s;s޽{KAII)&&FWWA rI"i>zڵk׮r֬Y# ̙cccaOOOqAѬ@Q 5\#''ֶ@ .]4m4cè;v077?<݁#9IVV֋/dIYYYHk֬%u q8.Dw {ܿȑ#Fw^7MS\\Mˢ.\SSSYaQCŨg@ܸq#<<>BAA I} bcc.]zU3{oٲ%33s̙t]70ro]]1chjj|r}G}a_|AK,2dׯi9_FftQ78 φ.>|ؙEEE7Hԭ9ϡCgxBMM&2|Hw {s444o``/ |||+W?>))I(޹soö}ԩyyy)))&&&{ɓz%.[TTo߾O>455]zu<*$$ӧ=2|>___?''zgg⤤$CCC6-B$Ϛ5k ./^r/_ʢzAM> _~@@1*oƌOw {زeׯ_? ~kR(jkk߾}<}𡎎NssH$dyzzD"QccVrr2u6khhPSS O#"",,,voGH$Zv!ùuxN&o߾p'O|[u/ܿ,ߵkܛbU%ޕ}|xE`3f B޻]ɓ'YYY/^; xvڵyf ΝAxV-+**ߤ|>Oȑ#B--rP-lllhYvvv]]ѣS+++Z6\S+88I<~+ .$[S4jԨ;w|VdiiI}Q@$JPԫ.w~SN]~%Sq8.Dw {\A '7x$r\. ^zHjibb N=ZCC#55O?}f***Aܼyܜ"E$BQQP<==̙oǓzݪgN<ٳgN0紛VԫW/ꋪgXyyyAKJU%bҤI&Mzݻsss)2Ü8q@~a5UVVVK,111;^ AtU.痖ӧOSWTTtss۶m[rrrSSӽ{;٬O>NNNiiiYXX%S_]]}ر#G|嗥mm۶aÆk׮-//?|xwʴ"iee)SǏ4N} %zyZ_~%AG;2%%%A 43;ZMMMtt6tЯ,Ν#{썍"ȑ#Ǐp8nn/^|w#Fx \'OxΒB544=zDv_bŸqJVVׯ{~eZvb˖-edd$^kVU޷nݲTSS8p yIP/#tX"=ɓ/^jjj tA@a޺tG] ;@Willp8n z yYY݁eeezm۷+.`w%yĨMGG(>D]2Xj` ^ʽ/^Hw QwqqqVVVee%݁fs޽{# LXTT4|p=>Ҫ;mǏ;_ r%###<<<;;ںݻwL4۷=t! @zȽ@V/]4!!UyccѣGGaÆ RZ".`TDw @E/yyytC zHˏuuu&_533wrr"P6-=Kᣏ>p8{gϤkllܿ^z@ro 7{\!ꦦcǎر MM>477777W/000nÇgffJwoܸ!]UV;V7nrt}I&Iܹs=zYԩSqssʕ+iwΝ{7t //3gΜ>}ٙX@ QRRBx"66666U3===sWJ3|gRiiiqqq}EEEYYY}_y|@ oCCr8.+]_%%%߿СCfX?&oz࠮.]_  oyfg1Zmmq 6Uy晘H7<+;qD6OKKz8kkAI׷JC xo... ta}m۶%$$L6X{+Vo Ϝ9cdd~zww^z'N8q󮬭{~!C 2es;Cƨ}΋G!-Zݻg^^^TT~nnרQ>l6Q)roC-_!3;wkkkǏiӛ7oX,UUU5}tyd՘1c,Y2f̘V}+))!?{LGGK(((Lw c WON񽵒k^^rO] &2QWVV׏Xk}O>{~ro`޽{+))I+t$,˔@ 4%%%Hߗ_~Ο?Ow {t/݋Q֭[W?ʽ>8l6b5rΨg͚Ew Y ,~WDDDUU̙3"C޽ӧA$''O0@z999馦t݋LE"Ţ;i}W^4ӧoYtst;2}o]7dqɫWVYYI]``-}1@gq {2Dxʺmmm7mdmmM@ ۷O>F|ꕤ~K---T;hР>HRm~~~IIÇ d[mm۷ol6[Ǩܛxȑ;vAׯM?رC!88XoTT}cccR/^K?Oߤ$wjjjxxZCCCqqqjǎK{j%UQVV%ٳg}+++ %R|DD]])RI6O_`C&Xxɓ'g;݄ @BPEEO>m?S&BSSsСj(4h̘1j)nz(Fkjj*7Acǎ}捤ڑ#GR8q"bR$wڒjǍGwΜ9jmll(z{{;VR E߯">|8E5kxxxHѡe___Ik׮m۶IUQQL}ݻ@?q۷'%%|}}WZAw\5ݻnݺkٳX@̟?.|yjkk{տ>o_|Io%7 FEEEYYYUUU- f຺6l@ {;a\.-{ݟ/^haaݻwS UUUUSSCw >\UULw GGGGGK.]|yteԨQK,!; ϹܛDftGkҤI&M; Ƚ@1j󢢢!CxA&31I ꎎ? ((h„ FFF)))Njee%!55UMM/}@!/_kkkkffrz?zꥤD۷W^*ee 뇄P9X,EEšCnܸ޽{'">>^$>|… O>m^OOoڵ<}sfffii)AϞ=vܹs%D}"iY>}zyyk(3{`T]PPˮ7111..nϞ=AGEEM8}ow7FGG߿~KMMWEFFx pӦMGݼy@ RUUA˖-ξ~;vՙI[ILL|˗-[/:rȁZݻdKѣGҿ-8=y򤠠`֬Y-Ø9sӧOsss;TZZށC%oGYXX >ݟTUU500RRVV;wnDDAQQQ3gTSS_{[,kܸqu-Ƚۗb5A Ο?߅c644edd䱉ɓ'[o|@ hw4P}mÇ:::" DZZZɝ `ԓRڵky׭['ju*ׂ V^-jjjTUUSSSI&s EEE-A={V\2eʔ5kִ.$$=zZ&Lfﯡ1eʔHTPPbȨvڥ/^q޽{sܻw4|ׯ߿̘1F8رc*k׮Q/K``iӨN8A5AFuuuG&O233%mv% IUTT̘1COOOOOo555{#G$˅Bavv@ LH999"ؘ,7n\g&m%))pnWYZZlTRŋ?~1..nРA'' L-7XbbϜ9Cn3Fm999Ϟ=KLL$w?zСCɨ [>MOLL8pɂ{ajjگ_۷+((ᵳׯ_cwImaذaK,ii0sYܻ***͛7GQQ.]ٳ?3nbbP@ t FڙLMMY,֓'Orޝ!--ť姜^zl,>5~xwňqǺΝk9絵$ Annnaaa3bڽ{&OBcJKK555555߭9|p111V"-ZhΝ-/]^!vM^QQm۶mMMM+//)SBBB{u~j@`kkۙ%x 7o.X@\8bĈG,~t钛[JJʭ[O8qeeeIxݽ,xbEEEjjj?ϝ;WYY٪#.\e˖|%Kc͛O>MLLܷoߜ9s:kѣ#Ftrdrouʽnj#yo8p~٫W]bY㓗rʍ7w;'7$o+ # Z[[z޸ lݺUCC˫"r8KKYf͛7]' 3g͆ <==;>ԽO%.OOON<9%%SL)--|;v:u(,,L܍ÇdnxͩIIIfɭ; ccc322LMM;//۷w8fFFF'`y&$$@CA~q3)yF $'2t+Ps1kRssqxx8 +VܹsG$VZuĉիWX=}W?-[Fw, wu>@aaaSNmYu,88x֭x~M6 2o%QȽKYY^;grڦs x{,[ȴ_HWVVnڴIOO8.F=s_߿tӧCxx g΁F]PPK.۲jӦM  dT߾}\n>}{Ϙ1… }ݱW^"Hgillݿ߼y# Vx5k֬X3sppz>qDc"t˗/_tGݫjͱ;wttt;^}ou ̽MLL 鎢}*?X,VOIIE)//oZ~f:666ǎC xȽ@1*޾}ak"iÆ ƍ;{,7:FÆ ;2yyydv-fcc})S, ?gmgro޼ihh۷/['_O) ζILLq8믿DSȶux#G#F;u^wK ;k>A(TXQh6 5uZ@@KVTj)V[Q\~VBJAATŕ, y5O.$e+9sΙ@2K4joǎ,|ժU|>իtNDm^a)U{TWW:P  7t!600;h#FHfbX=A@ڵ*00 p7h9::sM4N=7h:F]swlwww@|X,f)cggO?)TWWjwܙ;w}ddd}}=A}YΊ-r]y)eeeu9JPPbwJW4CQUeڵ,ҥKJnmm{不g Ν;o1򵓓SRR|S\311QUq jotFmnnNw/fbbryӧ j!VXAwj<|pȐ!~MMM_~:΄֭S%_k׶L[CABw)PxGGÇشqƦW~zƒfdd=zT>O? u֍3CC4].YGG TUv t$`Tjkk;w\@+++H$o:u5k$ASS]͜9uL&4iҧ~bbd{hhh~Μ9CSC*TNUxUZZc{pԩ}feeVVV*{QQAyyymnR5?hffvTSSӿEduppWd2]\\d2ѣe2;x`???Lr?}_߿2>!!aҤIÆ z%r###=<}eccccc3eʔbrȑ#\P8n8UB0`-Ñ /Η,`F%%%999t _|||(&LNN} ͛7Ζd+V0`?bgggrkdd$/_l1EƎ;c ꏶnCA U\klC͛7oԨQSKHHhO?h@qS&ljРAAL<իWov랁*Jxxoxx8vuumqAkK,ٴi?׍QAJ;7|cbb2f̘9s,\[G){c1鿱ӧO?i_~:u)S~g@=~c6P?;GCļz7ߤ;yMǨU7V+**Z|FAk֬]7d aJ|uttt3ZDb[Ǩk@@ HII; hիWٳ'***$$,u5T4joŨ{|>?33 p4j+''իWtmw^^IGGcǎulvT9VD.٘ta l6`T -[n̘1tLԤjk.ǪM]ƞ;h# 4sDÇ߳gOuu5vrJJJx@`ff6jԨP(FGGۻ'$$444_x6p@WW6wΝ;gc0qD6=`-[I& >gܸqy233MLLjkk[,Pim8VJ;+mT\:Uu] $c)S?z+W 7nZlr<X"+V0aBjjD"QwLxiӦ;::ڵUZZrwѣgcs6%J_|^lmmd2ӧO􊊊M~* cרNU=bDāvZèڻ8;; KI$++7ooRL&rd{VVVe2YSSeZZZN`ffvum\\L&D&&&zbɫ#Uرz⅑ѣG˺u=g͚qFL&lobJhñRYiU}שܵGL ˖-#b];-@a5oѣTnnӧOllllllLR[[[\\Ln9r$ҲR" Būc\HL;vlvvv]]yޞlwsskNUQ5[+sܹSN޼y{Q8 11Q*?bҤI+=?VJ;+mlYw]{ԠCT*@D"P(ڈQ75GGǾ}^tBlaaѭ:99o]󍍍X,փv=ݩ|/Jg֥;\xѣGoV@@@{ӧ|3bqjjj||yoXQqJWJGkL#@'mڴ|Wtm),,ɩEoHHHffT*}ٙ3g(&]`͛Қo߾]YYIDrrѣGj8 IDATB}}3ggffa``0uhX\QQq VAR5[w簾644r8ssEOOoѢE;wLIIogm8VJ;+mTN==bZ70Syy ZlWW׫WRdɒM6YXX?;w ';wի/_NvoLLLƌ3gΜ  zXD 6_~_ѽ?~Ȑ!cSOGaqk@+VVVt8VcQ8bЫ]/ܵk'|Bw:tJWNNΫW{.4UXu*l6 p9TTTش{nsF8VتUX,VtttO'<<==OpfΜY]]~t)Kk;vX֌ 33:̪h,[lׯ_;k׮1f[W\)nܸQ^^j*xbDHXb„ $??ѣG-&*--MIIrd{rrriiicc LMMvGGǓ'OʇJ=ztbbz+RUcUn],2dHAAASS֭[]\\ okkf7;;K.;::%%%b_J*CC۷oo?̪!44 H6bTIDjj*A'dee!/QI$++7ooRL&r/ɚ,--TK$' WZCo۶|ݢVM./S;:9Ņ(۞r!!!Z}}R_n]{ָqFW_} ARRR;aɒ%W&fddPd8806w^6bsHO>s\ FI6ZZZVVVJ$\P8n8UgDɷnnnM ׮]Jghgnߙuu Kqܺ{:4==}njӞ5/ `kkpoWS[twddӧ J֖hO?t۶m[nݸq#Y@}9)@K~oTAAAsiѱo߾$PHQ8;;[XXdddbꭱM AL0\p!...00:sgX g+C 6lhIOO7$$$33S*>{̙3S.X`iiiͷo߮$"99ѣAL:5::Z,WTTȟUSS# ⒕E]œ;g&WDTXŋϝ;ɓPgggkkvۤ@Ztixxkז,Yسu|4E}}f7U{߿?;;f]]]^J?22rɒ%6m!/b=C$bCCCayos]f߾}6mAzɓ'O0A,ڮX9/B&Np8{;h#]¦ݻwf+"j m߾|;d??zSt!|0ݻw{~eeemv Ji{M8? 655%&&:u*((HUQwPPЍ7<8j(tjŇfkLKSZSEkoyK.]~=*p<<hĨڻ8''|-h &%%ѝQCCþ}:|x<t644;h#F\GGb,,,NLLLNsR[$b#Œd,زe ] 6mڴi&SB s޼yM͵}}yCCC7nܨmw[MUQQl2n޽k9s|nǨ555oA'wqo>}*;w\yM;h:Fި ~`]v\"@Dbn]O&_?{lܹyyygϞm]xn:LcǎLm6_{f~^^Ғ1P{yo022NuҥK|~O(FB _Frrrjkk644;h#FUkw^ǎvT^^ u''M۞1-6nXUU'MeaadeeEwv:::AHu뜜zx6;7h*++|tnGqK]]]||@ 0335jTQQAB0::=!!"""&NRQQADllرcfddsά,;vxzzr܀ŋaaaǏ?vS"(11c{쩮S;8pk~~=**嚛Ϙ1ĉdcpppAAAppn-Ӫ:@!cwfggRll,A˗/oiŊ&LHMMH$=d/6mZaaazz]\.wȐ!MMM[nuqqdUUUo&~ѣG'&&xbDHϙ3iiiƭC\R ܸqgժUs*]"ooo//Ҕ.+irrriiicc LMMvGGǓ'Oʇꦨ=ko12Q70Ҿ}[755YZZ)6644]~|G2冄kkk>|(ɖ,Yzj4##Ӣ _gee_&D"ccも}ǎkoDbeeuMmQQT*U5E)D&&& Õ۶m#_(UuS[LKqz*HDwFz;&+pEBpܸq-E"3vر5Aۓ/NҥK;tA*1rH򅥥eeeD"#bذadKQO>򲱱2eJmmmqq9.JQ^^L&/M)555 `ذaooܸtvv^{eRv^bǎgǎtm4EFFbann.ڵk|>ؘ|I*..& &p8 .?L&+,,$^~uGGǾ}^tBvhQ-vbr ̔JϞ=;sLGEDrrѣGɝN:5::Z,WTTVSS# N:%%++)uԇU{7ozHdd%K6mdaa_SSCDLLܹsW^|ryИ##g }]KK8p[o'|GlWW׫Wܹsdod̘1sYp!hii5qƭ_O>a```aa7ER<ztIyW^U "##gϞzD">r՞?""qqqhǎ;v ; hF&@~(0ơCX,VPPPb߾}6mZG^~޽{RLHH1cFw.ZUUhKw5Ԝ>^ 5HJ h{{{ww}ZQQaiiyYr*//ŋ+ƍy<^DDĽ{.߿g̙xNNNN8zwrg̘qĉ Aw >$ښ @+W 7nZlr<X"+V0aBjjD"iv[xi wE/GGǓ'Oŋl6w~7kjjoK.p8cǎ~b.kggwҥ2wwwGGǠ$###XLŮKKK/\`jjZTTԎ @ok.6uV6B 78~8A-j.Hn޼I-**J2FDDYYYdMMMiiiԻSڭ۸8}*֮];l07nH]{566-2772eʭ[6nHꫯtuu_xA4hPJJ E$]o۶T>c qPPͦ;t; RiܧOzyy[jkkɏ9r$hiiYYY)HrssBqw[nnH$rvv&ߎ;600Xtuu[ GEE͜9S> G}ײFOO0??˗M...r8ۊ HRSS]VWWWSS#T;PQ{VaDŽhUwptt۷/yY5I(.圝-,,222wann.ڵk|>,UՕ"jss\ryOY#;yCMm޼?XvmeeC<<<Nw]SS# iaTFMh8kf]]]^J=Udd%K6mdaa_SSn111s]zupp˩XXXhii*˗w)}}9s,Zh…fϞ:ujٯuUT=][ZZFEE͟?ܸqׯSo_X, " Xj֭[?O?t˖-tgèsګɂ׬YCKV7t7Fw܉1bY@X[[ѝQל߽{7'' l6bT ty5{lf ڴiA@M%<@wv:::Ak7he˖}'tnGx$++.^CuSRR]õŋhmmMw <1ƃU =ޏ?~M<}2 Ǐw=s ;0xG666;ڣ?"(11c{쩮&y<ގ;<==\n@@@II ^WW/FUTTtZ݄Batt{BBBCCž mllUE<{,9yJ6n"""ݻדGEFFN4i0qD6=`-[K8qCHHHEEٮPsZ9++Wgbigr3f8qℼŋaaatuuoABP$ @3x CwS~~7ە+W 7nZlr<X"+V0aBjjD"ҽ(xiӦ;::ڵz_'Ol3ŋlwo(Bss˗.]pƎctd\m^^^?fR˗/srrT2i֭...dCM1mJJ[߯_+W_nllL1O\ZZxSSӢ"˫4%%{hosGЅoN7h* ["XYYݼy|[TTdmm-Je2ˍ ۳/ɚ,--Ҩw[CCɷqqqBQd[GGǾ}^tBlaaA=nNNNk׮|?&"jss\ry'R777ggrww;2>}wyŋ=z뭷(f$_TUUQOK~֭[vUȗ֚X,ɉb=x&[U{;`T]XXS__OwoHHHff#R IDATT*}ٙ3g(.X`iiiͷo߮lg7}}3ggffPsqq!o*VSSsȑÇ>l=͛7k׮z(ٳgÇ'WSS# N:EL:5::Z,WTTȟz644;h%Zt&G&";;  ).%% @zSg&$$L>lС+W$۹\w}G>AMMM2&L011!4nϟ?/G1nܸz}]~}ʔ)g޼y9|nnnJ+cMGFqܸqc̘1fffQl111׿VX]顦V~oYf+**>aÆĐw\Zۿᄏ|rӧ}=Ϗ׭3d \dggE80H$Zj޽{+55uo˗[lJJJ#t1ӶfϞy~׀GtPN=z``[BBB/==0NLL6lA+QwUTT'Sf͚.܋&#j65.+ +K0s`4I&tg &E"=Q9F4iL&C p>s6B нP{Vxx@wcTxb>_TTDwQ9/,,ͭ;:l6ZZ07@k˩SNbƏOwl˗/ ;h#<**N>0u555=AR jb5U-[f``bSJJ_|N믿z>}БQ\.A']\&9sf˖-A 0?ק-%tU{6sgj]SS#Hkjj?X,Vo K| ~?Vozc_VV?Fv*))Qoڵkz[n77tX,Dx< بk/}իW ӧyw$5cƌ ^xqܸqꍝ8q+WL0~ߴ'7@.**j͚5W޽{7Y@07hy?lѩj_$ZPئ&kfffۙ[8tPvZ>pOzSj&?1czc>Mڵk}}}Io Ծ^8 ^kll}vDDę3gRk`?EQԙkО={V^Ew:upѢE'Nx뭷N~#G&''m߾=...11۲eK`jjI@k1 rrr:sY)h=9p_saÆ͟?[l-J JKK!K;:::88ܼy,`5UX,y~[#F$%%EFFn߾7F#ҥR)AԤL&HwP!BonnHMZcYu')$H}V_&&& BU[fUmu֓'OTmׯ>TuРA^|޽{Nx e :::A4koYlڴ,##K  :룏>Zl~`<|7h:F]s^PP nhh*tLVZZJl*$ISS. -x7xtg P__oddDw:̿56p*x7d2 oCq8P67h݋Q|~ii)A7hF=Ν;b CP{@lUЭu,tTUUܹ uM```ccc>}KGG TJw5 Kw 4jSNCjotGAwzK444ѝ믿.ɞ?NwlqqqO>;h# 7@bT1Ykwܹ{X,;:l6ZZaÆݽ{ѝLMMWF]s&>> tCT*;u9hP㣯OwF|otϜ9#mll] 7h:F#F;(:%]^__[@q-a`` D"A@s86B нP{yoΝ1Ykw)..t~l6ZZ0m@KH>}477ӝ4?)@K dɒCCC@!B*@M@}tGhIj޹sG,1,Еtttd2T*%o6,#JP__ǭA^e2 ocǎq8+V^jٳg ۷o߻w lpUJJ Q;Gs_ÇӧO711; t/uܹs}Batt{BBysxpppAAApp˗aeebn߾x'Ntpp ?M$%&&zxx >|Ϟ=&M>|xzzzTT5771cƉ'>-Bsά6رӓ:2bbb~!CQQ\)ۿ9̙3񜜜N:Eum4L,^xڴi鎎v"OQ{077|{5>ORT3##cٲeGqeI*..vssstt۷/y}5I(E,A}!_b???@Y^^-޶!ۙܡ{̙3 S $vn%PbT}휜cbb<==Νz˗큁gΜyņ O;/**lA888={l  gٮW^m=eTTǍ~z???&ŐO~jgnK۷O,+~l6Ȉ XLuС/--2dIOҚ={61:D364i1pХK(n---wСCJ=Ϟ=۷/Y:Qyxъ+bccρ? 233-\Ms~YYnnn-^'Փ'O?~ܯ_?tjoEbNͯ^;ƓJtlk֬oN0^?~\YYieeEwTuuu I322ƏOw  :q$&&-Y$!!,u{{y}cnnNw v݊ 7mڄz3ݣ;ts3gܸqqz>@03}]>_YYIwJwnjjRlqww_u֭[}Z(잏=bgyo轮\r%saaa˖-=OyprrJJJǎݩ1999oii)^JX,f)cggO?)TWWtիW9ؘㅆRLNYv-źtu <<=%%E]]_l6;00.,,>}zaÆXBSSSl%%%ǎLLL>| !+B֯_/إ)6mjiiz*N_tSԯ_uֽQk^xΎo۶,55СC2F{BSήO>zkxHKKKqBm/ohh8|Ş={çLbaaaffr1)**p8&&&~~~;w6oGahhH]&iiiQۢwd2o.6B"iZގ@ XbKrrرc-Zب/UUUAmWUUUxH]]}Ŧb9uԚ5k455mll!'8qB ⤦YRR>{Hq8:]%:::NNNAAA*++͘ooqƍ5JVR__mnn.K}--7BQYj>|C!݃|ryroPZ'OܶmIG]]]GMӃ [[[vmkk;x۷ {wwwkkkjkذa GhѢ#G.\zظh4ZSSSQQQmmرcVe ҧEhǎġ~QBjW%O:'ZZZMMMlvffʏ=_}||!>>>!}DJP__׮]SSS޲ҥKUUU8G_[j'''a~\.֖ڵffiiImhjj><;;VVVΝ;dƌuuuԥ`BYYYG2dȉ' )=000o8 b맧'''8]ҭ D1Lcq:CuȐ!]jwСǕQOO>qӧOǏ.V~a&L ,ZѣG/^e˄/.f&fffADwԬRۢ[VkkRS}ejwժU-қT zϨL IDATw˥voܸbMNNQUUU\\}x

Dr=??Yށ@~[MMmaaa999ў£ϟ? 566f0>>>999mmm/^x<]]ݢ"rܸqo鑈$|x֬Yiii---O>V~{eee555ihhvPƁ8-wę={v4m߾}GRWW4/_Ξ=wѢE"~Ϟ=[n˭M8c -:u111?Wpkkhbsig̘1/l….\ؿg233w奢o622VlҏJI<믿zzz֖^~]ʢqJO>L&SR70|o=^ZTTի9ʕ+BBB+|y֭>>>[ne2&L{ ""kĉ6lZdݻw :.a%%Μ9#|s@@ HihhظqLMMo޼o߾>YE{ !3fήqwwΝ;'k޽K}0`y=`0Ķ|Awwc c.FVVBש,+99͛666vۼysS]\\ J?*s^^@  ylv[[/"@b̘14M𨪪w є].///++366w,mV^^o]]])0rqΝ1c;7&, !44T!@@)U};S^^}]fޑ#a(7ДsPVօo߶w,֠)Zkn߾-x@gK,w !^Ƚ@~~Yh``fm5661bDffC?LLL,--éB999 _ -$ZԮ{ ˯]&<0==]Jbkة2*)݉]G=Zz￯innvcowVǎjժOJ@ʧCRRR5O>MX,%ollx쎇 C9R{̙,ŋӹs&OrAM>=%%E]]_l6;00.,,>}zaÆXBcf/^dX---v*))9x[\_^;333_~֭kWYJo=RFqݷN(88رcÇ mڴ///5jԟ)O~V=z[%U:tRCb+CRu >}"@@ +V$''S% #00pΜ9ZZZT*B|>ŦX|9>y$Uү_Dl׵ҥKE˥-PSS4  Ԝ:uʕ+666666o=v FIII ETt~R}g7nxݫC]2,&,㲱ׯ͛UTT&O}Qeff4(::!JP):Д*>sL^^%4tPSSӟY0==BʉEEE{urrŐ!CFڮ\dC[[_FFFΛ7<<<\$>,777 Ώ555^QǵtүoESS9111..Nt󎃕9l((Д*c0zHO~h.((?zhTT^|9{l__E53F9ۉ'>UVF:ЮB[[[ ~mdde!}*^; I^;gϞ[ݿӦM1cFg.|~UUUnn\WW es/_ޱjg̘1/}[P~嗽{҅B@ (U M1cFvvvMM~XVVv9OOO)$%%_{_o[9//O ?3f-u4<<\*dee`ooB3OQH۷{khh8zַ; ȑ# ߿/YƥfŮF}_~]8(P쒒.]$mB \vM L8Qށ_F4~ kĉ999ׯ_0acx<}tɮ{w,kmm-@IMMHIIw,7(0܃ х tuueY_jkkMMM+AT~b^z%@^ܤݻw;.BލCO}}v~6m)1bDtt42pPVJu={VQQahh(X'L<ڵkٓ&Mw,.^8uTj{РA!!!˖-![_Ν'XQs%}*curr/\9 t@}FSܹs'OJII9{AO^/6HmN>VDYYٰaVX!fZss~A;zhI ~z0sȑݻwB~{>|`tqBHpppIIɱc*++vڹx"jiiٵkWIIoݺreM6F?O㛞+nT{?3Ly]Lso@b d$>>`Ι3GKK*TUUe0]Bp/^422RJG/++{K. w/^hdddgg'5mmmQ >>>_|ݻ>3{mBϛl!ݐ!CFڮ%fT{{{scfQeJ{O6b>P 4m߾}GRWWt˗/gϞhѢF9ܹs˗/oWp .߿ٳgwUwko^pA]g֭[r߿iӦΘ1C6i4ZLLN8Q]]'^'g"|~UUUnn\WW-c9WTw̌":x`PP׼;*}v~~>ϗw CpÌ3kjj?òsyzzJ9%))鯿ڻw}455lvX,Vrr͛7mllv'nIE{:{lBBBBB*!O={^x߾} 0o޼Gv|{tyyy 00?Ϙ1clmmEH%BȎ; ȑ# ߿/;sn{1ss?իW`0L&{)wz˗w,fΜy̙>Hޱ@JIIINN@sΐB6Yz5xg)uomfΜ|;v:n^ رcРA MȽ@8p`̘1rot{ny%z~d A]]}ժUݦ33M6x:@Q{o߾󭭭tcpǏ/X@ޱ;qĈO|mS[[kM h ҧOMM.lW55}va===j9х BLf6!obw"00p͚5]@'!wÇ℉7Ft:'44woj˗K,튨7R{ԩ555YYY:::Wss͛} Xvmt6 >/Z Rc֭[]6 ?^ZZJQQQoݺ)%f0L&٠O2";;EFFZZZ:88$$$455Qg߿̙gϮ޿Mrrr'G J{Zxq\\ܡC |UTT<<<6olaaSf̘QUU~cccҨW,z*%%jŊk׮޽;**gʔ)gϞYxy:( ٳgcbbJJJt7}Jޑ#GN$Y_www*nnn>ym'M$zMk̙C]p_:ۻ_~W\h]p-y73o޼ 6[{Yl٭YZZBƏOr Ԯ}^^}fƍ6LMMWe@9jmmBk7o>K[[XDv= .b!7n`X]iҤd)-9r… O>-)Twww*ޚ!DXJ{;::XGށJ>A IDAT=z!CN8QPP@OOOONN8p{nn~LL̠Ar<oĉ lmm]{{zjߧ6 ***|ؖǏ/Kk2]Bro.UX#d2e_hN F___6SZZ!~>}􌌌'O5_xzddܹs%]ӻ~h˥voܸb455ev RBBBh4Ν;(0''~IƍͥZࠫ[TT$s޽{YYYMMM~'3gvlN{{{嗗/_nmmsNEEٳŠsrr===e[KJJ!C- dɒwxxxDDDxyyM8qÆ T70͛m`$&&:fx]'zzz~~~TzjrJxTΜ9#|ؐhv]]]mmm/y_=zȑ#-w,н6n_oذAޱ1zoַo_y] ׽@)U-\z |=TTT!XQ:guyyCBf͚Erom{۷o\]|fO6… =ܵǏ{Sx`5P`Ƚ@! ^ڃ)Ub Aro.UXz ;d2{ mllMunffԩSmggsu5T7([h͛7;P`|AUUՉ'A@U)׏?^e˖kR۶mLk 7(0''˗5Jށ@}.ͷmhee\^^.,2eEvv6NjtppHHHhjjdzlc޿pa''' ={TWWSLb ;)**p8&&&~~~ i4ڝ;w!fff...ǎ{wܙKm?͜9ڝ3gNEEŋۅwM8QUWW׮5I(۷/!^ށ@|z33aÆ|Wƍ޺u]hG}tlkko* |~aa'OAPP.(((--\j@ x%mkk%%)kkǏ?uf@ѣSNikk߿_>Lm/YDe__׷뮲`[ױ5I( }ռ۷owvvVUU422jmmMJJڽ{oߞ*h4ZSSSQQQmmرc !b ;$[nKKKc0//aÆ1 77׎]Ν;#G-9r$u9]Y !MMMIIIrPNEE7t>jkke?Ғ>|xvv6+|J644Ryyy\.kMU;wɌ3ꊋӓN݆-#Iwތ ===$++C 9qDAAk.!C :Ç?|p[[ۉ'LұHTP6m_}vU}}s~JNNQUUU\\>ח9UHro222ӟ?bkkkllܮٳŠsrr=== !t:/|rkk;w*** OpppNNN[[ۋ/RSS !jjjՕTؑ!ƍ'<~u޽skkky;w?ϯc(++!!!QQQVVV}rTTի9ʕ+O>$44TOOϏ}֭>>>[ne2&Lz*!aƍ 055y}$QK,{GjjW6n(\^^^'Nܰaٹݝ7otrr'M4lذGGht)ҤI׮]ӧcw˗Lr%YSsuuE2&&+W,,,xK9%rEit&-@Jhh]݈P$ޒ(U j4mڵɓN<)@RyyIwcH^^^Զ]+Wܽ{>=zcw@ϻwCƏ?dpas+{;vX@@˗t;ДkڰA Mro[[[y= z}t:˭A=] }vu}}}h<==3-$&&ʫwnȽroP` {o vrrسgOuu5U^__futtƎ{}f߿Biii$/STTpLLL!fff...ǎLHHpttd2FFF۷oo"Z.)f1J |~NNTq?cϞ=_fMii={!6mr[lqtt,**>=sΈիWB8ΫWRRRVXQYYvڎ}EGG_reÆ ,J333ϝ;pB5jԨW^Zٳ,Ç̚5ksrI1CQWz\t&)cښtY+++BۧMzTGGGB//yB>3oooBHssɓ'WsssBHPP/6ˋpqqqssKKK۸q#Fkjj***.;VXᄆ._]S|>_Rcp9(0i4ڧ~*@@M0ӲTrs5111111cF]]]qq1x'Nx=1x >rc˫%,ѣG2ĉ}} 4_X$ =7(I&-_ߗw [0kk>}x}zFFƓ'OF/<=22`ܹO(f&Ƚ@-Xroa '888''ŋ:_^|Ν;QSS={vXXXqqqNNNttƍͥZࠫ[TTLչw^VVVSSh_?̙3kkk !IIIqqqo3tʽsrrA =o֭>>>[ne2&Lz*U'Q$QQQnnnWp8+WTsɒ%w5000008q |}}: 7n0`͛7'HLL:t(xgΜb@a]lҥK<(X@QZ:U!^ڵk'O4iRvvc^grvg͚5rzroޑ#?~,)ZkǏgXuJuݻUc;N3L,rT׽@Y%$$h4[v¸q㪪Ξ=+@7B ,'''&&Pށ@SQQ!S &11[077B\233NJm;;;;wNl){KKK +(wd$QEQٲeڵkm۶7*ˣ~ezm˅SLx MMMTx63vB>daagϞjrBB#422ھ}Žp8߯j/CCCvIPp!ϟ?5kVO<AAAl6sժU˗L&377ϗT(?.ԩSŶ&6BI133>|xzz'O,Y"=vĎ`ܿOJ ~)ׯ] 1Ȯ !|CYpp0]WWVVVF S&7oR?#\|YA>ohhxmjmmm^۷o\\\uuŽ$ {oٲ̌mMRbCMņ ~mCjG͛i&@d2/^(0`%۶m5kVD'D n{P[YZZRÇΦvǏOmp܆[[[j>//x<{ʕs5111111cF]]]qq~zzzrrsss !b ;ʉ{ӓԚG#1x >/{Hᶶ'NM2Ml >2dhСC>|(v#}޺roW{R9!xԮ*accr7nX,MMM[[[==ׯfmmݿӧO?333#L>=##ɓ'F-lGR:&y~Tx%E(v8H #ctqqillʊ>8I1 2Bӧq脼Q]BrqƱX,\=pUFFFzzCBBlmmUPSS={vXXXqqqNNNtt'!N{{{嗗/_nmmsNEE ikk{Ejj*!޽{YYYMMM ;!dܸqԣԄǏݻAx%E(v8R;`0>;w?ZMJ cƌ?E?njӱ; =.ӭw0[x[[qFBȎ;(|&9m4뛙EEE9;;0 00DX? |r׮]cƌ8q??P嵵|(@ KHH9sÃAAAutt YPP P,Iܼysƌ~ ۚ% Gt*/BHKKڑ2F)SD닍!55uرլ;v':!Uh%^"ڨ$ަM;vPI8(4www @%*@@6KK˘ꉀ˗/\] smƏ|ryNEE""!DEE%44t׮]nDDDhh軖xBh^;w|ZYFɷ;//I&Qу|]Nr7ooez޽{066~ٚ|SQQ.l.vwRvvvro֚UUUyR I^^ZbYroz+,ȑ#][m\lllei-33sԩԶs:b7NށD t_ׯ?~|ܶlٲvZj;88x۶miMyroBH~~~~~wNg22OHHpttd2FFF۷o >daagϞj>>>f;CCëWRdçLbaa-͎"""tuu]\\;&,777߶mUpppyy9Us܎툍VW^ 4h„ 7 iiivعp8EEEOʔ?͜9ڝ3gNEEŋsٳGʤ!Pmmm&@9sG;-^|d2sss|<((fzzzZ* |~aa'O{w͛7555m333SS[nIoG577:uJ[[ VTTW_7*;|pvF+ܹs=zty333(h*-ZGݽ{7;;o}eO\Y[[?~Sdю|}}ׯ_Omo޼Zʤu裐sʹs x'޾1lImu<++++!!ƍl6[xҒ>|xvvخ\R煍OPFSaccr7nX,MM7m\NX^mȐ!}=}tȐ!^ٖ>ʓ{Bp WwqZ[[y<^MM,ݻԤKa0>>>999mmm/^HMM%too/˭wܡҶYf<}466VlG쨶988%''HOOyHHqӓDfcc,uu?022\MٳŠsrr===ߢ$ eƍG=/ژ1cOѾ1cPo֚RM&.\ @@;99Raƍ 055y}[lݺdN0Ayxx'|W[[K ֶvuu]`$َADDĉ7l+z4$$$**ʪo߾iiiO?sLzzhKKK?'~ZZZǏ?… _ƣV^pV\vZdݻw <<Ft_|!I _ 6L]]}̘1˖-{9unppԩSك24nرroVWSS#csM}zJJzlv`` ]XX8}ZeeeÆ [b^֯_/zUޯ_u։=ŋ,e׮]%%%u} iGlRK3gί#G O;pÇoߞؔ90a$I񇵵۷_[Y X%99*g0sҢ UUU p"/655QӅ.].˗'OR%KLL?z2X{{{jcȑ ^>x zҥXOON7@W)))yE ]]]={VTT$K ,%%^qƖxxxOz.!!ޣ?;*,--;@ =RZZJqpp-vKJJ^{zTTTrrS׌/CK.UUU=ph!)SdśۣtGu֖-[/***wqM\'@d_AH"슊 (ZV@j ]Zk A*VPυѲUQ6Qy;$35&<߿&9癓Dy23g9aJ%ɽ9Ӽy$@#.A_.HFl˖-e_ A{o߾-恨n.rDb4ώ??OKKy&zV|ܛH:H^^B_t0++KOOʊ`NJG3:o+V`0qqqXŋZEW5Gݼy/444o߾۷obɽ JJJgH:jkk8D";v,'''(((??$44~JJJRRR׾ׯCp Kq}X`)))7n|rGGڸq9s̺u?~ŋk֬2dFp⪫_z_n߾]^^AׯO:ro+//OII)((t qOL%Ky& ˫'^… O>=z"XY=..e^^@s?Ãbx֬Y"wrrJOO/**;|pHHN|#D"ݻfnn~;vl߾AkA_)0IdqSLt, 'ڵÒ0|ĉeee!Ϟ=kkk{Is8w*((l޼Y*SRRݻwl_uu4 :|o&kk[&Lrrrp\I,x<}||ђgϒ䈈˗d2{ =00i&ssDvl޼̙3nd2\L:5--l˗y<މ'ϟ ===D")((޽ɓ<JCmmSN?}ɓ%%%>yoHNN^v;0>>`X</""ߟ5koO8Z MMMn|{ _5?7ӳpBee;wH:;j̙ RұIGv{sb`sww'H$Fmڴiǣ٥G$b`0#~NNNϟtbhĻcL>DS( I&#ɽ I$(ٿ?ù{͛$6 x /.!ٳgΜ9Ƅ3fhkk%TH||t FroLII;M ^hH$ݻ;0{zzΝ;neewutt ^QQnjj !nKYYY3CyxxǏ sBBN矅noowww p8"E$55uѢE /`.ZhQQQm">{,pppƛ7#E˗#0l6;11555m|hs#Xpa^^@yyySS)N733jjj &G`ׯ_t|[[o-Xjիnݺeccֈ7ob~$FٛYc&>]C~}w^{XI8)))lٲEҁ]ss3 zzzMUUUWWwʔ) Ç<o``@OOhjryك5鱱vaa R >hh ^***gΜ;|:nwuu)**644s-,s-Zy#8R:w^ta__FQQԩSXZ(-QUU@:ֈ#rH7wS$ t 00kE.U$ A<@`[l)++54400'D???Ѿzzz455YZZhkkY`-^$ZZZoL ޑNYY{xTUUΎa***g8Mo"gHGt}wFɓ'T*Uz{{IXXX Kk/)_VVƿ`|yt87@yo͚5kӦM~)LްaCTTTAAmiix"w}흙p?~ьsgg'vuuԬHOOo믿jhh,[/ڪ>eee*)rܜ/_FGGh4ZH޺ukppѣGwbRTT=x`MMMAA#GV^V| ,Yr;w +9o$FӛY;FbN>2ԧ0$|w&RߘLfDD]^^Nď1{`:p{bbb6lCP\\\*++uttٶmʕ+׮];{IHHXfͼy,ИL&0L6-2ڞ}M6ܼرc"ǍNJJ={Jff@-A$qqq7nϴBBB:;;7#~<<cƌak.%y޸qNc=oxqVȧ醆5۶mC;lkkSVV~&,,l"@DpuuݺugTTTGK୽'D^999 ӧ3fCd"Ǜ|%9=88X\\.$s=y^v-55Gw$!!ƆL&RYY|r{/ hӧO/[LұH9 Fx3L}}}G`deemeeeZNNNϟnvvviii#}lh4HIxȣ3*J8 pQKJ:k`HNNӻqz; dI&cv>mϞ=vvvc2X;x@Q(##SN *qvH}D-sssgى666}}} ˖-RǏg0vvvKooommǏ t:]SS[* СCt:}kk ]\\e;w,<<"<<]/EQ(Gڶp8QSdl‘awX,@oxo$N{7gϞe2/D0E͞=;** {P!-f5)޵A'+:;;$Qaaav^tsss<oK.ϷofW^}왫֭[={+0 N733jjj C/\P[[ߟ^]]g0555QQQX@??7ntUUUܹsvdd$,))_zΝ;_~^  ]ҥKϞ=:p@$wA o̐/숈  755od/tvv>d~"<ɓ'I:0Nގ ;J8޳gקQTT66.,,D=x-ν64F%''k'AlXox$@ &n/`p8:::nD6DEE]]] </Z>}JP%~oH~EE)S`9s===˹s熅uww"쌖ST%v/sFFF yyyd2X{kkktCGGm2A,X 䁋 Jfee}۷o_titt46?)))Usı %?eۋΎD"ա/Emkk^ bxɭ6{xzz455YZZb'&&} ll> bA҂n?|PdoD`¶Һw@/D!)((@7jjjD‹ Y{Xaam~GIw貺h(**uuutH&YRRR__z;wmmmlw]];wEEE6N777/++^20k RXXrۋ 󫭭qNpBmmmvvzuuk#2f9::;wƛIWZz꺺[n` N733jjj vɒܛX,2%%%Azzz&f8777UUU]])SP(x==mi4 '޳g֌NƢۅ<UEE̙3"cQSSˆ膄|W@xx!a7LZQQ:t ޻w/}mtw8ٹ\AAVҁ`\!r'l-[9rAW^.YfXΙ35<00@R z@O6ؠ/,XU兆Μ9%%%"cA Bx&E ̙3rgggΝn&.fH{@uwwx< QUUUOO#--̙3W^}76MQPP]F>V^^~ȡ===srr,--CCCjH$R]]788d=?mA@RHėIv&Gұ`"p#G\rE0aO>=uꔤ4 ,277D`Ptcf``X[[[ҁ`x˗/}'Oܵk㫨JN>멩qqqH }ŋl6[DGGgٸ...#~[bŐ^x!f/_~ٸCvro6 ښ}С Almmccc}}}%w/FIGGǏE ^/]tD#Ň( \pnd޼ys__+Wl߆;eʔ-dH&|9} 8 HׯxyyI:#H]Ϙ1/ @=FYFk1sBssb9q555F<]lوs/_fddliӦlGA UTT Яf#w#wԩ#Gfro+//߶m!@x/yAJSS={䎎5UTTF6VCCõkװ:/jmm>qoݺ /[ի#l͚5#wҥ#νGhLP:/:k֬ Vƈuss{Ɉw1##[Nd'bX sD!/ȶ߼y+y۷oߎWnnȆ?m6}F{֎l ի g̘1q͛bF6.Lq'<&TL{0tuu3|4yQCCpBb梣akk;䳻ǃ&萓'#';LB999>>>ْ0>?k~駖 M ?.Xk`={vjj6nΝ;7s5k֠8Ƚ 5f͚ZZZn:akk|d'fNNN0q7?\[[A&ϝ;%"{s8rI8{0'&&VVVFFF~ᇒ ( ,$Bv9lhMMMˉ| Etuu$ H1##[Κ5Kҁ&\@zA bfJNNt 7%;7JeX sD7%;x0J<D"iiiI:0?0d+]]iӦ|RұIGv1 Ɨޯ_vrrZt쬵p%]$''GP455%d7dN'H555  {SRR%`"3H/ȽRz۶m U> Y7%;{kkkX,2,@G╕׿222\/|}}%`A @zNM&%`B !^RRx<O>D0q8.Z2WȽI$c~)u+++GDDڵKGGGq/^ժվ~ V[[x&&&^^^xgϞū9sfHH^mqqCjكW{?vѢE"@{xK. ë]|oW{}/ZR[[ԩS_~-X7@+**\Rdddxx l6[xsn?ƫԴmnn{.^+^'O.^WkaaW[^^v}^mAAg}WWeŋ8q6;;{xW\!wxGm۶ LJ %ȟ}||r/^dddo޼)..ƫ%~*o3 zP(W HAyy7!LJ`wxߒ5kz{{VWWݻ`\ܻ!%%`_ܻ?^"^ ===x `_99>\.AA6m4}Md2jgϞM֭[j 9sf\\^-q>WK?/\b?vɒ%mmmxīKՕ f@zNҲl2k׮I:DDy<^OO۷oѝs97իWknnWK ={vrr2^sνq^6ϳouww'؜9s5<333#x|ijjx%2L=pdf&fhh(Xݻ .466nooG/]`AllC;‚Jb8{'O>sMMŋ\J R$TҁJmkkH)uV???mm8Btuu%X: u\s5---ǎttt,**B^H;''b5I֦MbW^L:::qqqwϟ72{^{d:u*ro(xv%X#;לv f% t`5`|A c.-- {tne(..a2wE$EnnȪn~֪ #::stݻwHWG @yUU0;w|pp?M\\۷o n@Rd'~򥓓&plgϞ9s_0X,XquCCCOOό %%ο1̈tӳOCCӷo߮*rիWiiifff#Y[[ۓ'O"BA={Cv~hll믿Zܼyɉ>|ĉeeeën4@xA###Ix'} ,8{loo/ZNcbb.\hccsΆ۷nnn3gLHHhoo׋-b07oތ駟6;v &&&<ܹsCFnii_ ;w"UUUtg.\PKKK__?66Vd}:99DGG-ܷo_jjw}w{t `2 ZZZRRR.]$PʕX1tvʕ3gTPP,//ollpB||_|qEߏE׬Y3}t2I!q$ׯ1cuۏD"UTTtvvjjj:88l&NēꫯDA~~H˺!-)))===;;10Ǐ777g2kkknذA 6pq.--% BP(fll ݻws?􌥉 񾹹׮]HãG}G_NHHx? ׯ?p͛7/^L-[vލn 뼼< : o΍G0uC'  dc]]]#@q;;;eeet*A߿-UPPn,XV[[իfS^^ f2 \.W8BHDZZZl陓dii*aOf۶mZG \geeEpAAAGuww'}~ Kѳ5'N V]]71xܹs 166V wN6@ @zN=eGGGt`2C\QQ555GYz5Vh{{{F&7lUPPr[ZZ3"A:;;lfEE\XX(~G"҅ 3339uTUU)++ST|/|x֬Y;u۷or:1mڴ:+55uٲefffXK.a?~e;v@ˋ,YBRu "zF}AW YbZ̜99))Ix󒒒9shhh^Ddddd|) _rA,Nat6-xb''SN wd2?#gee_73H~cff688Hп[ll?0cƌ~w@ Ƞ> "SNGEE]]] zzz<@˫i4EٳG(!!!_}{G.,,迵UEE̙3X!^",x#ʽB@~xLkkkk[[y)!F_JrD**=:g2ڵk?yD"ݻw}W(2VVV~_011ÐG榪uUܛ0#G 8TTT$d~簾&''+V~WAi4ڙ3gf$ЗM\\۷oV YRZZcoo;w.¾fff^355555]dIWWWMM ڌ弼Й3g_|d4X[[:::RԬt}}BCl,p!CB3BDQQQhill cK͍HãGݿs k? ~ڛ7oe˖/~O#Eyenne_AA!...&&͛7A}}}ŏ=DV27o:99q8Ç՝8q Y/ԱSVVƾ#wrr¾F[[[MM͂ lmm^ol6J^^ f2|RPPrÍdH999MMM*p£h---ÇG|PNLamۦ%Jzz@KssK.feeYYYQEEEPPѣGŜA8/cN>Р ȉ'UWW~_000F#UUUӛ2eʰ_b#$D"Q(---I&|o}vgϒ䈈˗d2{ =00i&ssDCy&;;Ν;gFnȨnd2;:ujZZz}^R NFHQQ mmmGYnV5o޼O?ޞF!aÆ_simmuV``@l6USS"==rvv.,,\vIH.\ z T& d2Yd",miiAW^H(g߾}ӦM377/**:vA"0&!m6uuu[[ە+W]xG^H(<9 K,M@@WCCzj#pӧO=>> Sc 1@IF1Ăl)t O>5C|MQ[/e~.0 wR Exz'; Y,˗l)tTUUAUUUѡo߾-AJ7x kqp Iފت$/9 7o400ptt466x< ^o9!MK: ;X<`x<noot `R9w ~5k޽[\\F󖖖ӧر ?K577'%%%UUUFFF<H]]~hnnvڼyv܉jժ 6ܽ{m޽! @ҨAKKKI)Ӄ  䔞^TTdggwᐐ?Ãbx֬Ysw Q+0e~xI0 H7+@z_3f̨t,x))))**?.!;mpHяF}}}dwcc@axx]&8&!Ƚ0, EQQQQHvroIhϞ=t >w\jjƍ% @*)**I: 0Irۛt!I[nёt ^{ ;R@T5AE*PN+ .{<}aT*Zc][j-*e VEJא9%C(3]LfFP(\5kdm?em0aBJJ.\xdm:uѣG={f:s挬W\Q/h|>A, u4noo߷oΝ; JHH9s&QUݽ{ԩS6,88X7n??577wӦM%%%ښdY[|zYf:s̟~IμJU[em1cڻRNJOO,u]^ȯ:Æ +))1bDZZYZi4ھ}JOO7PBsjo… o޼:hР{}oߦ:洴TU5@}iN-hٲewꫯ>www@Vu^P{ҜB2|FZ@}iNmddÓ@M8V?yxu|> <9TOssZɓ'y1Y :::]]]Tg-`P{V_BS{߻w円RTA@-hν [ZZzbTLs{f[jF۹s'A@]h/^P-dlltR333*RP_@߿"@}iN=tPgddDu@}iNmddMu +| X,A@ H$ 9sзP{-ͩ+++\;Cupk OX,PHu Fs4ۖ-[h4Zbb"A@=VGus::::DuP\) Ks9-`0"##}7/ͩx<1A@uA@</ͩN*Z| X,A@ބDZc^ek׮<\3\p7/oSLa0̙3r~'$6mD +++6-ZD֭[WZE |)S={v9;;>Wm͚5G}:dȐf9 LqU{ODϷ:}?5 zbXAVOOOrחɺpرc{=wɔڀLo_TTdii9o޼v>yfkk배%KܿߗAׯ//'''!!AСCiii%%%l6;99\Iƍw…A@<:>I@4mO?%%%999;v'N s9roܸ!>SٳgVVVů> ;w4hжmN:%1Çϟ>|[^K~ JttH$ڷoA@ڲVA ꪸӓ\xͽՕ|A_1d>$̞=~MMMQF/,--w\ffӧO׮]igg׫=OgϞY~+ ={vԩ믿\\\?;;;_9wKKKaaaii)A@u8o޼e˖룣̙K>**2$$\v={>}{ZjUJJKD'qMG!C=zhM6oMD@@ĉ %KF!ҥK.]JE@P5Ol/@?>|hΝ;πAH~^}I>\\8p@ꫯߏ19ל9,L4_*>>>66ؘT@#G,\pTg=6&&&SNRG466 JkjjRf eϕ555֭۷oƍ#""42ՉD"&_u9%)eP;v¯OPycccCCY@hɢ1cPB홙t355zwnP۷9s=F9s͛\Sf  n߾-RWW[n3U@M7PEs \ZZr,X@uxmΜ9#YxhYfedd%@͹"h֭k -[o&TOs{̼vy̙3(܉'h4ZXXA@UUUsP=9 D$%&&Ξ={Kt@րOGG PHu^GU=zҖ111---ᨽ4 Ks>:;;x<k`gggggGu _P{ҜB,=^]]]H$b2 ̬Ԕ,߱X:>d29[@T4uˍ:S=PEs\XX hő_ƍ@47h'ܹs4m̙T5VYYY[[,1V@!B(RP{z۵k@Ep /ͩGt:AO97N:D"@hZŋϟ?79[7or-:SsPEsTXXg,L& 7ZӜ~wHuPcWmm-nۑ#GZ[[}NGG PHu^Ӝk@;ZfΜ9TgoiҜ͍t@@ Ksjo:Mu P5|N$1Ln TLsjoN,=ƍ8NMMӧOZ?}Ksjׯsܨ(J7}簾B###J1N9 9P4mT5VQQQ[[kaaAu:sSxx8711:9y666Tg?-}Ksjb.d͹ZSSSaa! 06h T9P%%%4Ņ JKKkkk @u:S{7l'>رciii T>G T5͹ƍ޽[oS Ksjo///gjjJu@}iNmjjMu P5|^(2 n T oرc2µk~z,=.***jlԨQl6T^H)k@V߽{FFF{{;A111%%%111?i4ڭ[ŋ[[[??7n׷9r$ /'777>|8((˫\V$%)%%03f=zT)99yĉJMMcnn,uތ &Xn۶M|(?cC?Dy{{/]Te3Ο?ԩ;v ׻wRۿRG ={veeŋ9N'/_<((+V Ǝ?>++K ܸqѣGr"v?^YYqY33rr=qttvEjkkoݺEZxI?bBa]]]aaxCtvvRR|ߡ1bA7vvvATWWSޗ.]"" @5ӵ PjuVjjjzur111,x}yyP(촴|"z;K=""O?%_s85kֈ7u[k",''Gj/^:t^r=É#_755SyA6k׮>hԩk׮.:&ubJ}~לh*{{!Cܿ,d}J066...&\.Yx Bq˜Qh4\%9'Q$Rom…AAA< stuu%?~<>{lzzzTṬL&M:wܣGF)^K7n+wygҥ| /Yu[I3gLHHMMM %7_Q&sٻwьL{+ ={v) 6o|宮[n=yDVScc#g0%%%'NPdɒļ ,++ؘf3 seff>}tڵvvvzwnݺ~kkk@u.(jhhx?s1cƤ &Ofwءk+AַRkjj6nrSRRķCkjjȘ6m?~)yn9z;xO5kֲe˂~7(PrMOEEEG677 -**ϲgϞ@++ت*I=V;-lmmk4x Tvvv|ʹizۗ|ٜ9s"/_477:?8pGꪾ^(2 k,*7Pc޽C :u*A:thRRD"*lvuu5A@VsNsTb?!yA;gCMLLD ל@3vX5Ɍ[|]z޾C : h9]PPr?Ck3f̘)Slboosv4nll,,,:N~ ?o :b0, 7Zӣ:@hnn.++:PB՚;::Nj ]]]TPgg۷oKinn޳gOFFF\\\ll,ɤ*----,,={FuPWׯ_:h)ͬKJJFMu [9>?^foAu"[y*PHu^ڛN{{{SB MLLNjt:fnnKu ʺs&tuuϟg{4 &ԑ>>><̌ gggGu"x nܸqn+ W\9x`J9x۷o'?guttBCC7oL6gqB!@ׯ;vL\x,M H$:1///6}}ќymEfϞuVwwmP{@fJHH:4|.GQ^k׮9sF~iyBEux=BCCi`0X,n97h:nbbLuPWEEETG-9)DT7oAϑ穄B!AzMsjoNׯ:cKsjo___gnnNu@} Bgg~GGY@] Bۭ A___$Wf޽Ku:jo9wNNˍ:М744 9ե:h9 N>2((իAѤ6l؅ njnn5۷͛gooojjꚜBD@@ƍ5\m2?S:33SNlz(Emm d/ //+V<~nG@Qe4Rg[hQvv"8o޼`ֶQF%&&J SYY?j(:vn4hyyy9r hxJ (:88PjoPogΜIKK←/2n8SSӓ'OIN1b_%vtt>|RgzŋsCmذAjG;vL%9˗xRYYo4sN;vz5Y"裏>1cƉ'5׏5k)RWWW___H@ XhݻeMtҠ~\o;vLb/>tӧ%ϵJf[P^%VoFl__Ǐ֞*qTGHtcߒCrv{{իW}:22r߾}AAA.\6ݫ#k9oCP(TI|~WWA@hN کރ&!C{…kמ>}ZֹM9t%K\KNNNLLlhhPz|C{+YYY,̌\yz믿vpp#b.]o%ǿpႭm˲dm3]]]Gb2q^^ǏG\__/9ӧO/\0m49ӽ8yvHd``I@ljooȐ!?Lkkkggg9KJJ 6ԩS+g333 8ַ~)99Yd(^}/u)___GWyyi7yˋ tkkcǎ:tH~R7t^ذaCGGUt/=<joPoɏ IDAT7F/ϝ;]TTwϞ=FFFz=|̙ .?~{G.^8o޼-X@|Kr#tk";v޽[|r,/;H$^SSIGWyΞ=[SS#>?x[KEI}.&^zuqqqSSSyy'|bcc3ydLwx)ͩO.Ku ɓ'ggg744O2_~ ۻw~<O$8wqq$&''KRWW׭{YYYΘ1C!P Y^wO?T__WK=9p@pp pdd222z6ްaCNNNσ,WJebbR__feeoחXtzwI/Do'?O>}ڴiϟ: N``~ҥ^ _&͠bx7y933F0N&joPo3g>|fÇݞEDLLʕ+)#?dSAH?5@ HTWWb`0.k9ǎ A@!4->>`˖- ^47[n˗ǿ8:[ ennKu.1P;F nllܶmСC崯D(@icǎeeeeTuV njkknݺZsN4D{{G訯Ê tsfffJa٫W^l%רQn߾}-vќի+VߵkY\. 144411QhbbbhhDG:n``DG333==e7 yҵL&y߯Rzid2訫-̔߳nݺ5qĞI>u)=h} 000pppPcgggSS;::ޮDGmظ}C\?9pxu, 7ZӜݻwN%:*ѱM---S@}kX__/ XWWܵc|>_^BPMdjhhP@ hllTrϒhO> D6?P{z矫M6h (P 4/2eʔ iӦw}W__\{}@ٳ'::Tm۶ۚA޼ys…›@ jKs{x<Au .\rEp7)ͩ 7)@A@݉Oz;88_>""BDw7dAW1k@PkKvvÿŋ) Dvvv*Kfl6VӜ^D"ѩSΜ93sL.P{zyo%+\ @s9?\n|||pPPWyy9A|>ݮ ."SRR81cѣGɕ=fj# +>ϗ?#IlvvvcǎoO A<}t൚8q D"QSSD"˃`+W t:8::^vMTQQ!⢢D"Y,V~~P(+,,/$$dٕ/^p8eŋ?~|VV@ qƣGD"NZZZc^Ǐ8{Yyy)$Ymdc{{{9rg$E~F}e:YΝZUUueWWWqn888dff>z(,,L@yzzQTTDu:S{_t{ʕTm7qD:>`uMH$_N)// k֬7p8III|H CKjjj*H/+^gg˗%ioo777/(( }||\V{Ew駟OYdl# +IVҟd_9oYtzII ~rju֑;6@ Tќkɳwޥ:dɒk׮]p655 ⚚ٳgO~,++ؘf3n L{+&+^XX͛/_u֭'OΜ93!!"77755544TeW$pcc#g0%%%'Nw|RWW7vm۶͞=DK` [o \.Y@aÆ_ ccx+++sܹsΝKu 77yߙ"HOOOWWE;))PiӦ)7ӧ% իyNܼ=Rȑ#mmm.kPS{_tiՁ;v: PȨ] (={U{_ryoeiitsίZRoll,%Rl Qn^w=uvv8prۊ| hͩ|~aa!C*%>=mڴiӦ7n#ɓ'Jy?X掎Y[}tϻjժUV~TKV.\ܼr[ .Ԥܼ}3fLnnnNN GVV@Kiy>},:_u~~~TTѣm<>hР+W~@;6''?3f YzAs )**j= o rrrN:Z]]bŊ/B 5XAOs97y<ɤ:#4-88xܹ],YBu"x%@MiNd2NNHHHHHAU7 Tu(p5P1\s޷h4F[hʐ<<<;lApom233AAA666of׮]355UnW ?DǏ:I&lu4}O>zŋ_"߿r s4MOO~eeeׯ_'ȑ#_|E}}=A111%%%111AX[[_zO:99%''O89;;i큁'22Ν;d &Xn۶M~Nȹŋ;;c~d@ӧOOnaa!]߽{FFF{{;AQQQ{駟ٰ춶~~~7nx^477>|8((˫\ּJ ."SRR81cѣGɕ=f6Dŋk׮:8q D"QSSD"˃`+W t:8::^vMTQQ!⢢D"Y,V~~P(+,,ȑ#kY.ΝZUUueWWWqnp233=z&.iSN---vww߱c>**jʕRlHHٳ+++/^pijڋgee 7nSQV3蕠 Z7sK,YvmiiillljjkjjfϞ-nTQQpӌGE|@ `ٙv裏NvZ@&ɏsk׮1rHr 4h]ŭQQQt:]ր WWWrqܸq3.K| LDVVVFFF^^^ssscccPP]V ~׷z,.^HuRwցǎ;tyyUsS={Fy䰺/zҤIΝ{ш#"##崔I*HTZZJ.7uۅ066...&\›BѪEקe텧'Qd.".\?O|8::?:joPSS{xdȳaÆD'yTTTiieHHAfffs׿իZ[[ׯ_oeeXPP_o/+,1bߪU>C&)ugϞy,[]+SSѣGϝ;w}^$''/X`ӦML&3""Qμ\VLIIywƌnݺ KF9 joPS4Wt޽OPߧ: iӦ]p:u*Y@-566 333;+(({P(322f̘Au"R8 U~gH6e6-y"{@I> ;vm$oP{Ν;w\S7͹ŋ\.wT~ hN][[[XXx=J7((̌bFkzS{vB U~mvpBmmѣZ6~x FIuP Ԕ&tҬY}(<<|d7)ͩ'O{wĵ"Bb E(H/ TXzTкoť*!-UAw--]*h+ UFR 5_> $CW2sΙ眀L&۶m#vss/\pT\sfG:s[n1p͛7ϛ7hnhii![%c_%Ʌ mۖED߾}7mأGjxӧO500077˗xu4 jor1D@wPUSNp8tkՆO}>a@7]ԧ/--;(űX,6O 7FYx1; WWWQڛ|M )S8A>7A ޴tUUSSlhhۭ1c׿222~?,Y^kjo>ŋ|͛ntQڻ*?? MX,6Kw8S{ c0tU&ƍGw8@B ----$$te@ *J}P+//wtT޽{F F@hii!bvkdTjosND_T̙39?Lw8joPm8 ݟ.\tn OG X,ƍ@ԧ̈́@_`l۶ Μ9#76''`'''2m@3M:uԩt%A *J}jSݛ UP{Rڻw(ԛAb jkkX,nJ_@CL<ʕ+/_4iY@^k] 7@Rܹs|>?22 Mᖍ@_|#@7bl6nʧ>7m۶1TUJJ@ ;hFkH@sR4˗CBBʀTgbbBwP*(> o 7IMMM, [%5F@ZJ"l߾ Νp{A еP{jyoԧNKK[n;(joP9]ԧ~E~~~YYAbXl67ZS4z Q FXXA@U>>Ν;{iZZ|mntQŋeeetnd=z4 ŋ'O;hܹIwP\, * 7d2Cwwf̙|>Ԕ Tx#Q+*J}joSSSo4 ~jkkX,.Y@sPo;sA 'C еԧNMMQQQJ;";u1BǏ+92zʕ?P466rΝSNhy!uww:IyoP9]ԧ~E~~~YYAM"455)xժUfR_~_|A>ş~/.^heeե/DoٲA@qL&fу qԧ:B0::511 ТP V077g0agge˖q 6,<<.ƏooogϞji(777{{ݻws\ccc//'NmZ$bǎ999&پ}; iA^Ԗ䵑 qƱlKK˭[R. 'OL>[= 4bu}!:#:uʟ~Iʉ' *11Q x{{4D]lllpႡaqq̐NNNIII&+))inn 22ȋK6#|Aڦ8qA***h@@U /Ǐ;(ɓ' ;w.Ajv444O=*-d6_~% o; '=~֭[b+++XLW/-X`۶m2CJK>$[l!XXX[(JJFf*j^A&L%mf͚GDD 4ѣGٳgS?[l2e6s̡;ѡ;ljjn-((DÇ'5*((dm|ԩ߸qW^d2ikkiӦIG-))rApFFFbbbvvv]]]MMGg5tPrieeessiᤥݻwɒ%&MZz3 dU#-oֶܸE>%%%cƌqtt411tR?B&xxxdeeJߔ `I3PGnC„ /^|ԯ_JcSSNcc#A6lXxq"""6oެf/DD+**/@A TWW' wʤ>w())ڷokȑG (-->}]]];6A/^LKK{իnee%_xvؚPjll\TT"2I:@޽}}}cllL}!CcccEmܸ}PPɼMW?!CtH$-x+o E*˗v2dѣ=kr{nnĉ9άYvܩݷ{h\.7&&?'?,Hjkk'Oldd4pe˖I;rHS.]t֬YmCJ-(HG믿hjj9VEmyPymdy󦳳Q߾}n޼I=Hjj#yBݻǎMJ>hSRR|;ڸq]Jv޽qYx=o޼7oНntQ?}OZZYނ\sj`DFFO>hРfrcqqq\\/B_FP2;C ݴiӆ &}Ð#F~-$$رc4&5@EgϞ=zh333;Fnu}Μ9666'F@C>Y;66̙3tQ"*^$ѝBѣR /Dρ=IuuuL&[%Sڻ?~;(P(122;t)S JNN>uԜ9sEkɓ'ӝBٓ*gϞtPa999k?x< oԹ@-\rW^_~_En4?`0&L@wPUG3f̠;h9 jiϞ=QQQK.e22{J"B,͛7111mQxh\*J}js3̌ hkkSiP{R 7zC TWWd2q5P2k TD"*88ᤦ4jokO}I>7Pٳgtndlh O}joP{7n`0|A@U ___A KOO;(Ab o782@E裏ƎkffFwP*(> o 7IuuuL&[%52|D"ͥ;'99 qP{jI0P{t-?KwP*O}jgϞ痗 7(f4?~8u2 夒IbCqmHwPU`t>1&88[_jǣnsasst}בH$ͺ2*UAp( ZZZAbx%Kk`gg;yd]]]kggRRR6"())i{쩮Vo[;vɑ}vwww.x} bbbΟ??`G! \]]8n86miiuvGEE=Z:NVVŪmرcFFF#F(..zUUU}uqq}.RǏӧAobbbFuլ ]Ν;{111YbEYYٞ={Ν;7p+WFEE9r`k׮]dЪӧO %K</h9HUUUXXիW|WO?NOOonn677uJ,+WG߲e 8''‚|b qCCQnn.ѣ#Gl5fUUABBBuut#uUVI[g?SMMMK˃RO1kHb"##L.PTTDOwPU qp9#G,--mmm9iyyyAAϧMfccccc3qڒE*rCLMM+++[5(((DÇ'5*//ebaa1k,nIIIbٳzrsskA(4),,H$1cƴBo .]pN8Aw8@9::\tB*-/(( fgg|&٪ل .^ɓ\[[[˫>##رcmo6|^zݸqƎ c0="jo]]],XŋTe())ڷo+999!! {edd444s8ccJGر#==}m̙3gӦM˛7oʎLϞ====qbP;))GGGTOdddd$vqq~ĸϜ9s塡]|9-- HvZ333[[܃m>`2DEE}7nիׂ jjjj:bg̘1o޼Z Đ˝Bwܹjժ+Wر,}g'O@=x` 4 8 Px{fz˗'OCb %'Q&͜5tZZZAbܹ2i$VVVJ>(4s}wWOP; ?ӧA@F@WT}A F@W: zzztg͂{jqү_?D#97;G9Q$mG+,,dX(*G}9 {ZQ9|yzz:Fk4>罏;GwPvko;;ɓ's8ooX;;;BDIIIǏ߳gOuu}ڱcGNNt۷ss=z PꚘvqƱlKK˭[R'XƖiŐ9v^UUѷo_۷o ӧO=<<7|coo6jԨWfee-\GOOoڵwٳgɊ+٣`vpܹ\2***>>ȑ# W^v"ۄVUU>}Z ,Y_|EA®^_zr2%mg?ׯ?x`ҥP6yoL\s>{ɓ'޼yw?gΜ޽{_v͛7|ínݚ*" ϟ{ikkϛ7ҥKm466?~˖-vvv|eڞTg0 EEE555#F B^renT|hbbrҥB.CRxl>d2[50aŋ J7""ԧ^`A^^^hh(A@gee/^*3wDDDIIIVV־}] Aܻw/##A__b IDATS$XFct@Ϟ====O8ZB *J}josss''}TOdddd$vqq~ĸϜ9s塡;]|9-- HvZ333[[܃R$XCX,gg3f̛73CHNzP("]@C>|888,Y7@> d宮6X<ʤs((ʪt\s^YY_QQAw lA@O j`T՞={ G}joWxi\\ܹsʠEX,;Q4ӃBBBvAw?~MYYrRBvPc~oPQsO>ܜ TUx<uÇuD"innե]JDP677wrr۷/A@}#ngg;yd]]]kggRRR6"())i{쩮Vo[;vɑ}vwww.x} bbbΟ??`G! \]]knn~uq^^|obbql֭[۝QTT}fffwXݻws\ccc//'NHWUUEDDnowjP{@'~Z(kIToFѣ5r tRiicpppiiS %ɲe<<lllpႡaqq1wڴi>LOOr|);5D 4joPm7n E^.n:tttȧn"7[YYbE ȑ#GӦM-))rUC%VVV677{ D"ɧF c2pݻdɒI&^ٙzFc*y222jjj<<< O_;88mƌC>>>r?tA@:OGGGJiP($+Ixl>߶𶲲zn0aŋ???rWrrrBBxʔ)gΜijj'7޻w/##A__w555BظHzK={zzzFGGחK&o; lA@O al6Ez;qqww9sCCC.]Jn|rZZ8$$qs%7Dkך q9Yԭlݺuƍ6lزe Y@yJKKkkҝ_3ZfccsaSPQޕtgP^^jchh+hV^ ---DB^|NwEO @[[[,yFK 놆n i*yD"A zj qh)SXXXzxx7讯g2hР+WUWW'wܙ9s rppz5AǏ߰aC-7?Qݻ'oI{QĖUKA1 @@q8kÇ˗/:t(ɴ[zlAXYY?~XYY-\033dӧOK\t`V\g%h"ԇn∊NZrMߏ3b>}ի}0aӧ{Y?|| &Դ,Yd9]hѧ~Jwv$ɒ%KRRR-ǎϧNbȍںҧAH777/\6::Z!=<<Ο?OnݻSFCK-Z(!!̙3fj"6ӓ7 ?zIz… ׮]6lA<)ؗ`ج\2>>֭[Ϛ5+66Ϟ=駟ϝ;'m /|ے9EZyV|=jp׺gϞ 9]QQ_YYIw=z3f8}O)2BhhǏO>#eeem[1Xk655ur(Y?~ٲe~Ǐ;0B]]]BBE={Ν;ѣA;vlFFF᎝Iۥw@lO}jo eeeA+Gr…^zkCᐻw6M]-~'dN3gzxx\rEMLLZ!u޽'66~kδ-ob#G^Nj9T~~~i"R+o58k]^^-!*iǎ@-ڪΜ9Cݬ_~A}\z3gȻ_U$L/.G˛իO^ςB^>슊 ggYfUWWZν̬eGr+Wo߾vzyf--1cƴKj9Ci"#*88kMq _ 7򐐐-[P7߿):͙3gǏ>D~ j?,--[񱳳Rp4yPea˹[YYikkld2O:@}sҢEꫠי#P=zh7CSGjZ{GP{*R{yyy!!!tR]88xŋ̙y.&&_/_?~} 2`0gΜy꼼?Xz͛7-i;BbU;wFGGPOR; yڝӧOW\YPPP[[[\\n: 'U!C,\P3 ۍj):iݗc|ϝ;ώF@OmaaP]ĉ333_z5k,OOǏ~~~]_nݒ=//O"|疖|ɐ!CNj9ݪ{5ˋΠ^ Y ̙cff#;]]ݷ ~7n]VL̛Q3EhVޡ};}={ZIII~paP{.[,Y7h&P?`llȽ`tgZyyM| ݹ{dSBeNSKuGh{3fvvv~-*pP?sy\\\\\\pp;A;w :tȐ!Y޽ lmm7lﯣCw.P7>+**+**JkGIpP9k׮L?~6tЄW2/_dݺuMMMׯ_YhQNVZn<|yEEٳgȭH$.=DWS)hZ Ap)66񴵵zzzthq˲2|~駖[s[n^N} ѱYre||[E"Qjj#G?xO>ظUGymv}OΟ?_zr>111>>_d ](44(44t͚5nnnǎ#ٳgSLްaàA;v |rLfH\.wРA.]*--uuuutt .--=uꔁO"}-Q)}}?Cz-^ktg:qDmm-)444~te|'2>yݻ2w{ʕ|ӧOӪX,P(d2СC߼yceeuaÆQRR`06- rk׮1cWAx<ޚ5kΝK>1c_Mĵk̙SQQPAHxm-hjj?| ChѢ^zڵUy9V}Hپ};644fff۷lٲ}͚5뫯"˖-{!_~Guww7n%j9 LMM曺: ŅPk------N4^*kr , /|ūW{o߾Ç<|ڴi6%%%\.WMFFFbbbvvv]]]MMA'--m޽K,4iի9LF"X[[WVV677vl(x D"åy(8D\F 8fyFI>%giyy9 n_%j/:}5 nH$vkd3i9?~rK޽mv޽`&R"d:u*!!<Ą$ [xxxdeeJk &\xɓ' UBv/Pp( mQO|~Qy( mmmYx<#۷Y:K$Acǎp8.\8zhPPPǢBڰa9x A@555WLLLm_C Yp tuuób/RSS[5צF(ݻРpu)r FI~L"C#3š#""JJJױC$o[7={zzz_8W^^~ EBVKx?cQ@-;v~an߸q####22?22f\~mcmLMMw={ѣGY& l,֮]kfffkk+=ȁ޽kjjK^1113g\|yhhҥK;v-c[f}!>>t»pMzPES{[ZZ@xi[!q5P2|7K$[[[ŻxSN{V:ַP;U"t?~;ǧc#t~ޕVI:Jpy5͛9ξ}G}{f0oժU< uassto$.Huuu2Up=tw[M&vrN8An -** Y`AzQWWw1###F۟={6eE"QRRS]]Mn۷۷fnG(FGG;88&&&644E^*yS9TbbqlMPfwؑCݹ\nˉHĜ?~G.**>33'o-mٲeܸqÆ ///^F*IUgnn~uA^^(9t周8999r T="_~t%''?|… vGGǓ'OJz*>v،۷o?yD"p܁=ydΜ9AAAde˖yxxܼy/,,;mڴs\&6v<ϟ4iݻw333wnyMR/_d999bϧ27:99%%%;A.kggWRR.HKAAA+Vhw\maaaWOk0`@QQQSSW_}5rHoU$ǯO>׮]#JZvTКlʕAر qԧ^~=A[n;(UYYAte۶m#S2{555/p5k֐W Dlnn~-r{qqX,D,K=22ڻ(77|zQi9'T BUUU ҍ&(̍z\.w˖-㜜iY{SrWZն{۹kj(.N>{q6-WU*y?Ejo6mfcbbל*2d(**j+###00ׯٳgo޼Ȁ2{ѣGm?j(򁵵ueeesssAAϧMfccccc3qڒ~̘1)((DÇ+//ݎmSɛ5baa1k,hyXF'8tP򁩩t"[.ggv+H>h5mW2́sS"(~Ck/R 4joPm,+88>;(;,xxxdeeJbi˖O>|x^nܸH$GGGK.C(r\`0ȏ!ޭx<}}ivvJLs IDAT6g2]X&Lp'O <800b2VTh2{)zSn%++| JJJƌC-SK"ŋmG ʇT>|pTTA@I555Bظ(%%EkȑǏ>KGGgΜ96m_޼yTVVʋ%_xJDϞ====[y#""JJJGE޽{ ؘb2(ԱY=ySnŋiiiϞ=[zíW^$~Lr̙*~hP>,Y'tݳg=z5k޽kjj)E?xƍzZ`AMM EHH6"CX,3͛'ox1113g\|yhhҥK"(FDk׮533=x e67"T\FSdi+W6l3gV^$2BBB O>wܶ*~hP>F-GG۷oߺukذatgMG~qoA$ٓ,Y7h(c"##9޽{7@ҡ;Jw@eyS{WTTS|h8}}}6O ٙ`TҦMAXXA@&⒒J"Oaa!R|;tg@Ԅ|t%εD"ijjҴC"ԧ.\HwP.o]llɓ9wuuullKII!ۈDٳZB0::511A7**~ܹFFq㆑Q]]]wr^^^'Nn۷۷Йf8n86miiuVU$ŋAdAomwqA]t188ԩSdٲe7o,++ S'MtLGGǝ;wJJ$@-Z6jrrÇ/\`hhX\\Ln6mÇӹ\.ɤfK6#|y4ׯH$;hP{]n:::UUUSkkfss[nb"}rssɍG9rV㏗/_.Hjkk oܸA{۶mH$"bIEFF5-ovUUU ҃ ֭[GW_}Ew8s9h&\s-9|`iiikkpO ?>m4'֖(W$ >8jԨ< />~xSSӧ]\\ |wٛ7oAvpp ی3| o{C˛IKKKII5kVNNA27@A Ą$ \"}y<~AA4;;ػT9YT"֖u[K{9+:,JBKqvذYmD[BD3:qv~4Mk}|_cyuo=?6}TjjjZx[nnnyy'(++# .2ٹ_tٳgVVV~~~dCS{s84B7Ȏd涷|25sȒ܄///Inݺ駟v\ZWW񜝝 r裏⚚*++`.Qx^ﯽ7kllljj֦: Tk|A@)m߾fܹ rP{,=>w\\9z(A=#*+++_xAu襴Y,A@ЧU0sLq%Rr֭:ڒSSS E@Z[[ttt>3"eD{ժU .411:(Wʈ> oo@w466655ikkvk`ɹs|9sJ)&&fPTjoPn8joPG{TqoS{WVVx P@v:::,K[[ rS{*f0Trׯ_OuP9y&55e˖DU]@妦Du PS{~'&&&T}4117n܀ÇGuxgP{@w455xFʡO _]h#GvNu"x7??Rڹs'޾};A@~ѣO<s7 bbb ۷UV\ٯ_?s@oV*9k.wQ(puٳgggg-[իK.UWWsܻ"?? P `2 "= 7JYYٔ)SDuttD飮.2hР#G7.8555CCCIK BQf:::,K[[ rS{j]dɳg?~ڪf۷,KQ?~,ߺVVVrի=ܵ'O[w%%%[^^>|Fk7nMMͩS$-iW(I|Ag}vСԥKRڵk׮]Ku PE@ijjXM6ݗ_~I^}楥"MMMPR[[[]]]۷oxxb+7cccаiqݹ]ccc~~|cAϟ? {ȷGllldaÆݾ}[q+++;V21`(ƭ̔T]]O>N8|k5@矿}m޼y}_믿.XqƍfL&c-FFFъ¢o 0tмΝ;9P>wEEE~~~UUA@6HGGbikkST}joPYTJpp0HLL:(իWsܯ rp5Pzýs(#p @eD{ݺuK,155: S{=MMM:::Tg.P111ׯ: gUV*cbb8NFFA>wEEE~~~UUAO>p@###777ogذab544H?]tt7opqqٴiHgFQŊ3fHOO'[9d2CBBf͚O63L[ ږ.]jii'ie˖]plyN<)g"C >|̙3RbK!}WhiiIc8&`hhhXXXDDD#Ggfff֭KII=|>'N|,K>InԹL x?|;>}ZСCv}jﰰ P[yy9A۲NWOOOxb߾}%!266̄'%%ɽq黢o\={MLL߿9gl6{򋖖ׯ뛒"cE'㿓.}BJXb;K3goii料)߸ }j!C7Ȉ h!CvС ?s挤ۘ!Mn^AhhhDGGGEEʽ}]Y7./^$=33s ZXX8997nD?I!KvD:Ki߾}[n&L𨩩c\A *>7wE|СgϞn}Z])mРA"K̙ccc-$+? %w_Ҟ!qFRJLLd_}A@wK.y{{ggg߽{ z̙3/^$Dl!`0]6}駂o߾H-thoosθnNvEx=3rȥKxbUUUNNnrrٳgsD:w)}^bwfRfu?|pÆ :ud;?uԩٵ}QEEիWrԩ'O$&&wuu!!! F9frittF^~-H,3f 鳐u:gظqcNNNVVց<<<Ǝ+87`4MBqBJ؝ٱx{{Μ9Ǐg2Ϯz-jx[0hngΜQ.@~{Gu'||r(Ʈ]]o: .//%A@6rY`ի?[jfX:::TCTVo+++:صkչwd Lќ9sFC__ߑ#Gvb0z.!_|r7oLuP9Tŋuz.J<}l!;b0QQQs%7n*Yq8(7$%%Pd5{ѣG ޖ~zo>@yyy@Gi$[ZZ577KY@ ʆ>2dȐ!Tjlܸq߾}TQWWx<ˋhjjjll@S{*kllxTwŋi#("""""T@[fMhhhll,Y@:غu_~Iu Yful8p`xxx@@S@:::8s @$$$XАCCCJ"*u+@km֭ٳTNOW^8p={***K@K9]^^K@'mFnP0mmm@s/rUɓ޵ks Ɩ/_r( }{:~xCC={}75555 u.+++O{}:>9LvO(#6lXlСCw&P{rO=tP _T hnn~捖.Y@^kE@8{K_;vLz'Ovi(//wss8p9sD i IRR͎:xznIII׮]#F*4*:22rNNNƣG޽b-Y ;vܾ}\9;;577666111~~~=8u/\`nn*e1&Ob e;6Us{˖-Ν۴iܹs|򖖖7o\R޽_~k׮-//߽{Ⱥb$$$ׯ_paႃ322\+?|? uEGGȲ F߾}\]]z+Wp8R DbԢqﲲW^Q ?`͛7o߾=uԮ]ƌcjje˖ӧO/B>"ZZZ.\yf'Z*==]g-|r\TTTWWghh8vX,mmmCuP9@eP)g0{|>i$EAAAUUٳ̦NZ___RR"Y(((hll3f 1//|;j(򅑑_&]fϝ;>p@]\nLL A@hѢe˖PAs(++#{O񬭭7"F{{{qttt ȷnp8zzzdκ_tٳgVVV~~~dHl}B@mݺ5))_~TELb IDAT}Q\\\SSSee'L&744477˗Oو>Ǐ}v[KKk̙%%% ^^^2fκ"}} &̛7oѢE>QQQQQQ,͛#qq*񮮮_fMpp:՝u566FDDΝ;{[RWHIII 8pY@477yFKKKWW,ZP{oW\_$&&RT }9P{I*8?}jﲲW^Qz)---ѧ&!!JKKc0/:(%.sNʡO *+===99TEPSS#ŵ^^^6p9sts 8αcǺImZ9T?<|H)))ikk '===gϞk׮Y[[uܾڵko---ݻG]jݻw˽V^-}ܸqGj޼y^^^eee?T>>>ӦM+..ζ߹sش¬ vO:;;/[ӧ'Omjj[u%Ec\.WGG~ (FSSmhh:lmm ߩTZdɶm֛7o&_߾}{|>Q__d{TTwXXXKjwŦz1Usss>}ܹCMMM?~ش¬7l@o544ɷ׮]uDc|>O?]f ϯ700@aG˩*{?JKKuVCCC]]`ѨQFFFW[[y$Ύl4iL0|QPPPUU%|[}}}III]]vkkkMMEyAǏq̘1[GGG===[4h%42vJ$cAzzzFGGgdd:99I @W@)555-^8:::..000I`0{X {{~]|kjj7Lohhhnnn{{˗/O>-]SN>LKKk̙%%% ^^^] /tdѥHQQQnO@Iѧ~i~~~uu5A@P{&## ׯ_xq۷O__„ [hFEEFEEX,''7oJoERRӿ?\]]]ϟf͚+W^BHK,)..5kѻH -ZZZ,KWW rwȑÇ/Y,PG_ q9sCJdO<0fbbrС?,qoPY˖-MMM v3w)--moof̘Auw,11qСӦM:p5Pz_}@qwIeeׯ'Ne255MMM%?8EsΟ>}Z]]mff{QzΝ;gΜsQ@V9mffF>2h~ǽ@߼yۭzoP&gϟ:(46zjA гP{,_}ù|2A>ӧO󫫫ꫯ{@obp5P<\.233ۼyMp?d:d01A@)-^ٳ r1PYgϞ}y󌌌蔔7o0 //M6O$zPSS# ]ܹcjj)Ru=tS{GEEŽ hA̟? U7eD 7yݻW L??Q]]-Æ Gwԩr{U]|߿_qcbb[ 0Ȑ{\///ϗ{qɽǏ^Bu{jo7ohiivk` UZZy1 Dߺs8ƕܫ{\)RSS?쳃RT }{ >>\.7!! rp5Pzs5jԀD Hsy@/^w JeDsηlْ7m4@B ʈ>ql6A@888p;A&GZ~W ϟ>}n޼IDSSCaÆeff] v?^fͨQlllål\eݺu ғ"1LLL>,x`0~GF~RccsΑCoرW?=%i 7m$bJڬ0]@ $Ч!|>Uaaa&L-ޞ|`sss&9cƌK:'cÇ/Z<[(***//̙3L&S}%hnn.**344;vn;Y`۶m!~aA8;; 7o:Z|||zzŋ+ۙ3goii料)Ǐ_KoJJJW# ~_0334$III2e ǫ@=??8/0SN 4?R3ƞZ,==Z[ ŋKQVV200@b7%eP%@aX, qo ttt ȷnp8B%77|rKJJ&Mdoo߯_˗/?Ԅ䋦ŋ斗{zz jjhhw5I7"2hNNNPP_KKK211y%_1K={feeG6 -nhСC---Ϟ=+x9ccc[[[)3***NLLtqqq'ѯ_7FN%8p.4hn3g$jNqƠAƍ'gΜ9 ӧO;::v@]SSS% *˼:钻w2 rܽ{RTjoPz/^LNN&Y5sȒ܄///AK.;wŋcƌ111a2/_xu1Auuu<аH?~۷;ғB}ܹsE>uӧ9s?$ݩdee577l^e-2ę9sHOwK.y{{ggg߽{ڒfի3g.^ǧIؓß?nݺnذaSN/VUUΓONN>{luu=[b!bѢE??k׮ tro߾' t@RTfB@=||:5k\R3<<<>>~Ѻ+|}}X,cFFF ,xׯ_/|qqZRH=}tuuuDD`#+{S ΝpBYnll߿;w}ȲY,8bO :ujvvvmmG}TQQqUn:uɓ':tuuukjj?gΜǏKcǎd0`@ZZ<1vp8wqppo,Yc7GG3fyFq۶mL&sAAA>>^RTf)//deĠ͟'Op\sss6MuP)Sܸq#++UJ7عs*,466aaѣn;^kT R{A?y莖MM.݄p9(=|4`׮]0:z{I `gg J)==f/_ rsTwW)ӧOUstCpgѧp8׮]:( 9zO|GuP4 #MMMѧɓ'o9αcf{ӧ8͍|FwSSCaÆeff]Х!H...ꦦni /,]4;;[du1˗/KM6_~ QKn2 RZ`ݿ?A@7}e˖|~kk&LCI(tI&gdd\reusss !_ 077_bC tذaCkkO? h Z͛7544r{{ ̢!{uɾcXv Nu.@ JoժUIII[ggg윖Ll޼yɣG $=bkk{A?6;;;66pƌ'N -Y ;vܾ}$111~~~=fKsrrC=WX1cƌtggc9r'$$IoL&|.XtRKK˸89 0 ~'k֭[ ;{+WDFF dffzjŊ˗//))!"!!6!!ӧG=ÇlvttȊ"_G:)?8OYVVVZZ:o<ƹs>H']QQQ!ٖАjaa1bYnhh8|)Ǐ:|,ۑ1~dddDDJHc1qDG"}jo qƱX,ZZZ.\yf'Z*==]tܹ#FXjUaaaee۷oO:k׮1cƘnٲӂ 33f̟?ғ >\]]}ѢE%RX,OOT 垔m3}tA8;; 7oʤ'">>>==ŋ}G!clllbbrDc bcc? V'/ZZZdǏ_KoJJU! @]]=))ImJSB |Ч q̘1[GGǼ`/^LMM>-Ǥ#||4tPKK˳g 7;wXpXEEEމ...+zzzƚ"~8җ IDAT4hzÇ:okk;tPEEy@xرA8p@z{luuQrΝqqquuunVl%v^kʈ>wxx8ù~:Ab񮮮_fMppʕ+G+`;**7**b999K222]`￿~ŋ yzzʞD^|掛]dIqqYג{RsNԩSkkk=<<>裊WJ5ԩSO/3ΝKu9:tHRge(͏?hllLuʜ9s&00C z&11qСӦM:(P455511: (S*B Jʕ+eee}QV^,455|RytAk׮${x98P{ۻwKۮ211y))Jܣ|oPFZLLL^^޿/@B ʈ>ǽ-,,q;ZZZ455>ǽ@e8J0`9A@);wfgTgѧ^nùq㆔>MMM x (}VZZkKRRR={|Ç+8!ijjX,h >$~Wpttܲe o:A Rx<fX\.,|Ν;w\S*s-RuO0a֭nnnTw377:(ATzݯZZZ$-Ԕ^KZc'iŒ_}Ⅴvvv 477BR'''SSӞX륥_dђ8p //O@#i={~IKW^=qDIKn?JZqFIK#""]&i%- t钤3fuϞ=+i͛'x$'NuħG|299YPiiiIɓ'l[NúXWu]pu^.[mm-AT&666666e-\z}}})GLu `aa!i:XXX7NR)JʺNNNRNޓruMLLfhh(iHĜ9s$-rЛ O>d̘1J9MD``)S$-rЛ իW{xxHZ$eݍ7HZjgg'e۷[NRjmݺUк))){GPe8 Р` Zjoo?șMJJJ077_~g}AΜ9qij󽅩yyy[YY=y$((*99tZY{VÇGD{ڵ租~i'+½{>}t>$$ \\ZZkK>s9Rr, 7ZţO- MM? ---MMf5k˥:"s*++++99ѣGTEPSS#B-z!<tm"S{ڵ+//?: s%"R<tGkkk}}=ק: /*`|\ tO*7(=ˡYCCC9?LuP4^>wiii~~ׯdb*>9d2Jf\.P{sqqҲ:(v)@qP{a֣Gjjj fhhHuA:::MMMTg }{6jjjASOkkk}}=ק: TDCCե:(L6'PTjogѧ^jΦ:?Ч~Q~~~MM Ab2, 7Zţ}@EXׯ_x}R̴iӸ\.)@7999  >OuYw񠠠:(joP:&MDuY@zaÆQoFMM vimmg2(}{B j|A@\vf{{{STjo{@/G;88PS{?z(?? h8 2b2, 7Zţ}@eP5&&&Ϟ= гP{ҡO퍪@ENuP>L&[}@Ed9,,# t)Z.))y𡕕Y@L2RT}{w NjsvvNKKknn&"88(88lɒ%ׯ_71dA6667o"! رc۷;Mjmm#I{FRflR vus}5449rͭO>cǎ}JZZɓY,֠Al"e\XXHuP<.NJĕ+Wd3mڴl{{;w}SLiii֬͋Z[[n:~x}ժUnnnw-//Zz{ȷNzqKKŋ >|(6q=iPI{FRflR vuIsq|YYYmmmϞ=eWzbݾ}]zk7PƆ bȊ>wIII^^^MMM=smjjD[{<[ %_kiiUTT߿l𡉉I{{;?,,L(K,ٶmؐSz͛7o߾=p@I;Glflҧ vuIsq"Z[[~'NwEuuÇ>.ZT͈#(**:sǍקON{4663|蘗 ɓ'/]Էo_9fggGӳ.((={ԩSKJJn&Ll9++oĈC 9ݻw3QF/믶6IY$)]]\dܬLy<]fϝ;>p@\}Dž^ g555 ۩ʧST}jo988ooݺpCR!x-))4i}~._o<ښ즮NhjjZx[nnnyy )cu,M:.e.oVؘ1c훓#i RvK={feeץqB j~7>?rHl*Gko--3gFFF&$$xyyƏO^ LӧOΝ,tҹs^x>fc㚸@paCE" P\ XVEPi+,*ZZ/nXOѺRDXŢ^VR.l11敛e |͜9s9}b l粓iӷFILL6lǩؐX3jԨ]MSSӄ3f=z塡CA*, Ef'V۷oXXX}}TCԴbŊl߾ׅ @ILai?yo߾]ifQ h0H;fe1116lX~e˘Ǐ;<ӱvќ7o,**z9Ӂ lP144d::l4n#x{QQQFEQ_ &9tfŗ/_/i$oom9 XXXTTT(_by]9mwciĈsuuue:P|j7SN:(@u{ќ{L] 7ɽuh BP(d:P?f1 h͙缽233Ǎ'޽pĉ\O?x<*>]âTG;w#Iyyy"* j_511zڛ{]_- ?쳉'>~8##B,[hPD6%+wыc: ִ4>|mm{G677WWW{{{nᒕSRRƎp7PMMMqttܲeK]]Me6lϧkkkn啒B;88_ח冇ߺuKQ󣢢.\`333uuQƎ;lذwҏC||cvvvBB566}o߾:q}@`ffvUjB(ʭ,P$=G={*ˍvڵk\nmm-( }vCCCϞ=U_Qn:V7i$op}Ϝ߾}Ғ~w}z갰1cܺu~0`IzzzZZyPPsqqGLbmmmmm=a„rJ*..njjrssvGYXXH:99QݡoAJjjm222K3DBEgggj&;;[шQ$ 2dɓ'/_Ld7=++۷o h̘1,g:P?^^^555" IKsoKKSmmml6W_͙3gرk֬Yz5Ua}xx8!ť_~gΜGmm-˕[YQk޽ݼ<g``|whZ`ْKDFF㏶m }̹FMMMyy'͈BtuuP??ܪiӦyG#jݻ'*QTT\TTt "x]ԎCy&mll<{UVUUUB""" nݺemmM)--jiiݻ1!DOO/$$$:::77W(>~رc*-ԳgO5k֔&%%M>]ݡiÃz՜RQQm6///׬Y*&ǜØ777 E#&ؘ秥Iv[!͛CmEs:u*22ԩSL*Ԏ;v(,,xT|{~~~!!!Æ 2eŋcbb|}}|~SSӊ+okk[PP}vؐX3j(7 )11700pQQQooQRRbjj:mڴcǎ=}tŊ!UUUcƌmfXcILL6liFLiBBŒ3F|P!Ɏt#ЉO={ai-P윜t,spp_:Nit]AW׮]t, ƍxbVV5*A}}=622b:.s߻]tttVZi&JKK;+B VB JԲ&HMLL}f:̘1f:v{QQQK,a$4hР׋ ^A gO[GGG禶`: :LPW:+R;l6{_케Wy|ܹ<A:ꫯ~ÇO:ʕ+RGG9ɽˋ:E"Qzz:d'Ƚ@il6`5P=ɽ@ZJWWBe8hw}b={@@555Of::Ƚ@=[]HtÇ{yyszxx0vstmmm _|)M666vJS:P3f߾}R?L roP;{'''B :YHٳNiŋNiJ(uJSNi˗ϟ?! mmmҔ@ AgO?M2eLG] 7ɽr-[0 ;>}P/E=ztJSccc}E$MMM,K$c֬Y˗/G O^iB6@4';ѣSbX}픦!={씦ttt:1000ӧO4E144딦:X###6[3};w^pAW^ ,Xxq TԩSL*77w̘1^^^ӱvaɓ'Of: Lmmm6l{l6;$$dժU666@O3so<sZꭷb6*P/09k͙3a_$[BG}t$.4wYYYQQQ'ǁ3f|Ce:PWl6`5P=͹M=7B=CD(޼yڵkGA ?2#GLZGs{YnMk׮6lԨQ* 5@h}oZΝ<~8Ӂ 9wrTqD IDAT  ~@hN@kS8!B#l6[3fRSSE"Qpp0Ӂ)((0118q"ӁA jOy<UUuM4'477䱳̔{QnwYxCLL M)K.eXgΜ#U^ZZ7n 644tvvW_}(U.!>,==]Mfkk@ ˖-1buΝ;ihhxѳgϾǏ?zh^`jڵkǏP]]=xyȽDttteeÇ=zjccC8!u...w&W&,[L2E2]x㵵mڴr׮]W\)..n(Fx㍥K*] UWW;vv޽rxU #frwwz*Ӂmٲh"3o߾qqqT/RRR 3r 8@m|wNNNonnʹ\n||}XX͛7ec0`oFmȶ/K6*44T$m޼޾O>&M:tul5EC1B600P0""̬I\2q%KmϯMn:lE16֯_|6}}+WTԸP(-tJ)oo;v*0`'O<%''2j(9ʊTM O.Zh555%%%&MWXe˖gYFQeE-H~;vLfee۷N*Y>L=f˟O>>>> .ܻwouu2m&''{xx۷OS^֭[ӦM*ʢ;ehhf͚+VIsmx@6p0b,>#Gl޼mРA| uQneZ[[O:o/\0--M|t̙oG}DlE5cƌM<900P犆Bںu#MDUU!Kڭ|eN>ݷo_jǏ߱c_ff&M;w\p!$${nJIHH`mm-ooo^92wjٺ;wLJxT,LԜ;w@@ -ʊ \]]{-a+//)$LǏ?Sɳfū777VUUM6MHV I}呼O=qdazz#M|~ppmwnѯ_+WJbzM=#ʌHֱ}^QȼS>A-KKK[[[x4roP;{ٳpذaL+--jiiݻ1!DOO/$$$:::77W(>~XV[(gϞk֬)//MJJ>}:}TGuѣ}'N<}f_|) &''?>00ɓuuu|>T##ӮNQ6nܸuzq]3焐 &dgg?<((hĉΝ>ȑ#׶mzWVׯ ߿|t!===-ڵ+((h BO||dYYYrD  8O?:tF={F32eȑ'O O(O4hBG Z*w%G9bĈ>Z[\Ν;/vrr200ppp"5Ԏ{-,,DkZH5E"Q[[-[6bĈ.Ν444+//'$%%9::&%%UTT߿_HۗMLLNj6$$?qu=no>~;vLfee۷N*Y>'CQ]]}Q6[ _qϞ=666C Qҍ322rpp&''{xx۷Ov p͚5+VxUUUnݚ6mT9u_Wӧ… []]duS8@\rdܸqLZ7=٧O[[[O:o/\0--M|4 `Ȑ!l6{…׮]{˗/9yf77A}7K~PP =cƌM<900G2s̷zKWW>^9pMgBHcccZZZDDD;%nݺ+L4IfUU!Kڭv}*%;333 Wn۶MG%$$8N711ٱcѳgOΝ;.\ !޽[vp:$!dٺ;wo:[K+sǏر/33S\M  T\\F9PtPc8s;w\xIa񱱱ϟ?i:_U\o߾_|E^^޽{FTWWGUS4DZFS4' x1@{uuuݻx<'~<;77ڨ)//tqqׯߙ3g*Q[[+JWWhnn ͭ6ml6[(F+I5;fӧOٳGw:%W+++[['NH9::o۶LJ\̬GR88p뛚o>js@@=M>|8!d׮])$>ppp}@>*~\U+"PɽKKKhM%{͚5幹IIIӧOHOOaLL^HHHtttnnP(|l.D266٩G~~lM\G{,9sbcc>ɳ:ܩKdX۷oξ|rxxC{ꥨ;O< 9sfe.Ayd?CΚ5Zӏ=NNN>qӧO 7nܸuz֒ϟ?xɺO>D|_Z_WҥKʾKss &(9Dڀfs8###97D__ŋGEEI8l0}}} ۱!!!gԨQRRLMMf̘1z˗EDDNE\?x-hfJJJ}SSSɳ:)9'L0!;;AAA'N>w G믿m]zUn\/~VVl+Wdeeڵ+((h0 %%jW#G>>R^4hٳʥZ[XX̚5+;;[)ٳiFRE=zT\r$f'M$端R4.9wIIIQQы/4H$jkkSeFutu]ܹsG={o9~Gի~~~ ,]6~z Ճ7oKDGGWVV>|ѣG6664BZ[[{nB}eBȲe$r:_]tI f;͖/u{ݻ "YAjLd;O>O?{wTCWW`5P=ɽ$nݺ+%%*wpp;vaâřCSSӁ|||lRWW'蘝r'O|aNTTϏ #lذ!??_ח冇ߺuKfff⛙ԶdRRRƎp7ȍPɎ(D͛eNi={H[o>###3I?ܳg!dR^9& |رcTcuMP;"MN),,d:P5ә3gKZZZSPP@ٳÃrvCCCϞ=իW2 PH_l놅[vqqć8H|sssK 0~ ڗS}}}IKELGhERMMM|8!d׮]_8p MM33=z(U755u߾}KңGeF5ٳۈI=ƌ3uTR~7t˗/kkk?t u4'V%/C[XXHw'X,/B޸q#009>>^<뻢Ci% IDATVQrgϞk֬)//MJJ>}hFFFzzÇcbb,,,BBBsssBǏeU&zyy|#??_6D#G'Mt񶶶{8-WiiiVVVKKK޽MLLe#T#JK||uyjX۷gddggg_|9<<СCzRԣ'OΜ9YܼK.-..nhh(++/'L ӧO?z(''G|c699ĉO>/_J!;zlaСf͒]K]#s͝;Wc"/~Qhjj:t萞ܖw4|pq HII'>>^2 IL +Wɡi]#)5???Y^9&֭366^|yHHg}_Ϟ=SڀE$[...널ٳggdd_ ӦMd[[?yz?p~~[ꐅ7|#~T ]xԩSRBbX>>>^^^D &0f~G~?Ԛa* ׯ;;;;99)2@М3gxeee]z@NUUխ[dﶱX,CZS@P ݜ%%%EEE7HUU!Dj'&&>}o߾4Վ?c[[[??LfKK.!JBBx1^kkkjhm}]k7of:.&&atuu97* +("^Ev.?+@_|ɓ{HNHmߟ믿JFE{2gΜKR:::(*@BM(,,,***1ݤ$ m~˗3 !C0h#͹./՜rŁ[ZZ?,hQ(Z+ܹsy,YTw0@G}wǎ<ܼy3tttX,VrrOС7n`:.IwޕZdFܛIX@0a0EsZy<^yyy{OܴiSW@47ϿzjSS_|yС7^~]WWwʔ)]!0KWW`5P=͹$xzz]wa:. ڎxُ>ԩSh2Ϳ-`…֯_ttڎtD###Lќy΃y<۷_Y0&&|ٲeNYY ?iN󋊊߯_?jŋO:vix8]]]@4'o޼Lf޽,O?e:P?555LZG4hРs:991CWP=vt:xԎGijje:ZȽ@hNt ȽÄBa]]1ӱvah[n[vvv7od:.>9@WC е4'1cǻsӁ͙kƍ|>@p8}a::sDZZ f:P?)**b::Ƚ@ݻw/99L*C L,JKK###lt "XԎlcct jm[jGsrC20 ~ÄBa]]1ӱvќԩSx@TVV <}oP{ro9ix<^EEӁ7ts7JKKT 7(IGG`5P=͹ Z"##b3++b9@kϝ;Ύ@@Ettt!B@ԞΝ;ToќرcL] 7ɽt ȽÄBa]][ch*+++KKJcyro9w`` ǫb:9sݸq@p8h TOs{SQ_X,/ӁvӁќ֣GәTDGG" @YȽkjj*QT< #>`::T{ќǖKKKy-"H )Syٲe]+Q1ܹJ>߮çpmzP;sݽgϞjkkn啒BQQQaaa.\ź~BƎ;lذwRMMMqttܲeK]]~||cvvvBB566}ѢEW\v9rΝӧO \ DGGGDD(׌9""bɒ%ʌY\.̙3^^^...sέHMMonnV-BB;Ӂ@wGaz7v---})((v#0k׮rmFGGS ={fffW^,,,B!Uٲern:AsoH|sssE1KHrKj?~);hР+@roPro`בֿ⦦&777jwȑSSSmۖӷoLdgg>zhʔ)˹\.!dĈ򬬬z??闓Unjjz}@fN#u1p@[[[wzx9y; gk{...vx<lɥJrrr"##G[[Fͥ6jjj===]\\G=_MXB.痛[UU5m4qF!(1+Egtro4'~zQQxN/zf͚ܤӧS<<<̶" `۶m^^^kØ777 ==\Pcǎ6[___[[ell% RHᘻ(ΥpJJLL \xqTT򈈈SSiӦ;vӧ+Vv^VV֮!111Æ ?~8UpF˶ijj0cƌѣG/_<44T|H2H#Q^c)( MAAR ss󚚚7n0h|Z}[hWj%iuR]]7 4諯b:P"NMi\k sN.v4'NOOoii޽+wTTԒ%Kr]JQ_ {ќg@K\rUBa]][C fffg:.Z79!Z{O2ݻw5333Ǎ'޽pĉ\O?ԕ1kjjx|dڭ[:;;{yy{c6,::ݻTySSӁ|||lRWW'蘝r'O|aNTTϏ #lذ!??_ח冇ߺuKQ u .X̌b]~f0G/%%eرg|C4}ѣG544lhhgeee4˒=Q߿ŋ4]XC2Ԕ2h,,,LvL,X0f̘,@pڵ}YR?E'ʎOhheTvΝGa:PBӁ(KrNjw/_f;;JHC++Ɩ>}P5#α\ntt4гgj@`ffvUB(Rekaaa֭QrBӂ{ڵ\.V f>}o߾:q}>/E"Qss3ùxԘ^tI2eI^D񉋋4iȀ|BȐ!CTar@YlFow~en߾=k,jŋ}]AA1c.\p555QGh``@qvv lllmmm=z4e˹\.!D-嬬z???i"qrrMMM߿/l+} RRSSmۖӷo_GO__?==ロ7o޻3bĈb%(<<|qqq'O۷ljkk%M iڗ%bNR|oJ,"Tv4',--߿OmVBW_}E;vo~zBk޽y<!$//㉓\*)//0`@~Μ9({]]]]j9444>>~֭s̩lP({.}$ʠiA999mҏ!dǏ|2CDtRkk^z)Oa"ٳg,>@ӺֆzMjx٫V"DDDܺuښҳgO5k֔&%%M>]NFFFzzÇcbb,,,BBBsssBǏ;&@}}}mm1OKK^:>eд yъm۶yyyIfWWW6G4++w&&&LJU?ްaIΤ௿ҥK/_~o_rNܼy֭[zK$3'O3h&xg±cdž.ޭMHH3f3۾}ի HɓM6 :t{yuMLL߿ WE"QCCCJJ{קO 8qB|;vxxx5ߟ?~PPU^PP0aDr^1H-_6WԂE7nܨRH4k֬˶I3z/_1bD>}|ӧ_|]C$ !ޒcR__{1cRӴ/KꊊNDaÆ+jHHH!fg$6P#="2hH˞ ɞnZ* ~333aޥK?{weVa`p#Q@@4.< yʍSb];dˇOi!q=i̴,= bqIeYf13_> s3<1\uysuϙ3/GΎj -^x֬Yw E8)k׮]@@lF:לPT{MqrrZrkTpe o{oʕ޶6yd׷oߞ7o^hho ;?Ig;$$$''_ҥ:.??aju!11q]N:Q{"''',,̰Q۶m̙3vؘnݺWshY36&ڻK.999A RVVhe(Z]^^,C PZZjTTT<8k֬9tP v@뗓ҥK_U,XD:3~kTWW7P:YմZmiii %ByyZn4MYYY % ܹsgM} {$Bu`]SSdSvqirYAP~psskMuŋ|+22rŊǏhX`wS{W555z~5{ dxurssk E %\.wuum\\\e(jjjw^{LLLRRѣp#ڻgϞƯEL%l۶-77nݺ\r5?^P{^/..dbgcZk$LDDD\ IDAT~GYrԩSr} ۶mWPP v8>[n5ޝ;w^bEBBBsAZ;äwMMҥKg̘\+ļ7$vf3j(Ju]hf? ^__GҙԩS~~~^^^ǎ5*** U*udېμ7pߗdb`Jeaa!7l+//OMMݾ}A؈ :N Xuؽٳgw; [#555ڵ;[S8hW;ҹgϞ 8)\Rm۶MMЌM %˛eQWbHgSz^Ѹ6EeG8(Nii7lL:`ʖ-[ T*|Mʭ[2$22rڵ%%%fWQQy游8Bsʕ: RRRz9p-[TWW[꣈HNNR駟:r͛Mf8cL&1~oJL)vGPbá`<<z褤SN_>>>aAعsMX?zÇO>#|ڴi3bĈ۷7h*'''At:A7P(>5k4neeҥK۵kz̙?а}ժUSLYjRׯ4/99yԩ+W>}zYYY֭:t_}DÒcM #7|o>+:֗p'xG,>H.gܸq=%]&ɂ#ϫcl4j777WWך`Ah4WWWXTzX&l8p` ,%8!V^^-/(joba5Ztj#FTٜ?Ν;LT*#yoJڶm)y3-++K.7^Ae2N;;UXX'v8{pX5556mrssKHH;YhQttt 0C& {7ٳgϟ?T-[ 4HT曆[n2dHddڵkKJJ4bqqq "&&ʕ+us[l"LEW^f>sDD;3tk׮:-G+((HJJСC~Ο?o `jo}μ~V۶m+vf#xAAy[JUZZzuK^paڵ ,]v-[,33_4hŋ4HLL,((ؽ{waaK/tݿ/M ӼGaɡ5֦Mˮ].\099yÆ }[?555Ǐ~9sm4 7&{ ExzznڴĸQ;wʕ+;vt 6OV=zح[jBq7ݻa(LZz}xxoa:---((ԙ1VYY)ˍVZe`777At¢"p9۷o߮]&L`":33ݻcƌ >|xyyyvvv,**߿fffVVVo߾M ӼG衙lxc}F1ڳz}Ϟ= / `=TP媪C 5zaþ7oc?pQTT`z{IS{4<}J2<ΤIa(Vd999 7|#G=<<|||Apuu2eO:ݻgSsqq4ikvQV?߾}vwwѣG'%%egg:ujM #Ν;7m,G衙l6mڌ1"%%*??V ҩ R{WVV.]]vgΜ WZ5eʔUV)~?~LNrJ__ӧinݺC?W_MLL4,6֤0 |7kl>H.gܸq= `dfҴ/ڵwݻw***rWyyY@VUUܦM[nE:q( LV0M6ް=<rqq5k{K ?p:,X{ ל[RRR\\ljMDZ{>|X(JǼ7H;joV3<I;ؘt9jjjܪ:,joZtj吏zJRC:k;w@ш@T*N#yo0%##cԨQAAAqqqǏJ֐nݺ}&L`|dn}mMCSs6:tX~}jb&JV^^^رAV v8jovW.]BCCif̋/N4>2dwܹ[n{쩳8oo\ݱcFDD$''[8)O%/_^SSc6{55? MYW``СCwرiӦKTݻ ;L&}_IN8qل?|ݺufѣM6yZ,d2YjjÇǏSgGZmAPN`͚5)))eeeq&9)ݝ;w.\Y^^~ʕe˖ >Աo_爚t͟l?ӟj? F/?FE:~;Je;o>|'JKK'L0bĈCǛpΝ|;wCMOOs ~}^zMNN=Hqqqu9rN}>ӆV? QyzzL4]vcǎ]]]Mu4̛9Mi _|ɓ'v؝;w 5d)+***,,T*bg`k uրy晵k׊$K8;;߻wO,p,ҙȨ!}%;˗/׹[n2bE` )a{< ̚5w~~~A `uZC6yBCCr [`Y<<<7\sԩSmxYfEEE]z5;;{bGqҩZmttY@3Ύj i4{]r%,,Lh4Y2׶;9q;Զmׯ7P^^nX'0>4p `3ҙҖVSSS{c۶m̙3|#zI&t:P{ RåYZe5k:t/Yd֬YF P{F{Auuu JJJe(A***LZMՖ6P fJє5P i4fJV7PhF۷_~}||Aj<(N=xGzyyJJJ|}}NXťy*˛e(A Es`,oݺuߊ\bų>˪̣(|שּׁf4]sww_xqs,C9995-^^^nnn2BhA͵w %4kۼ`(4zhi0gCҙ)---))iƏظq3joܹo1yd7)ظqFykV@kh"""_nxVSS#n0,ӰH9sfϞ\{hnj(;wڣGA$utZ@z4[oթS?ի/{ɓřbG ,\` /`\VTT$lN:{pdr_y:Nr l6Z7)Sfҩ Rx@Ӊ@T*kjjN#yo8d2/vΝ;nnnbc [lIMMq4%F ;~ UUUt UQQaj/^8qbhhgDD]|֐!CVXaa*c===Gm۶:}.\(8P{w…LJ={&''?xݻw[8p@&T:cbb͛w-3;}l)qƫcyyyEDD,^N*#7`qjT??qK``}̟L-/={vYYAH3އ0`\.߽{~ۡCaÆ޽M6e7w\ϟ6lXY-yyy"ej͛7_x|[5557oڰa'~PTjwO233 FDDo36ްaC=jw7裏®^jᮛ|̟l߾ݻ;vڵEj#jof Em.\ԩ T={6==]ՊA{AAorN:~g̘XYYi2bĈ 48ZSfvO0x˗7)U.:uJMM5ܵkZZ۷ݺu=ztڶmܹ6 FӾ}#GZrMkI:͜Ғ'''NOhFSG0ޒq,Xxqcx}_|EGEIg޻W^NN9"cR~?999ׯ_7n\<̝;w.^hyyywvqix ׯO8%Ro۶~4hqcjjIzi&kH{ڵi ЦM?7naݤ m4gOB2d+gY#jo8x򤤤Kj+G򊋋R ހozȑ#r\AX{eNNN׭[k׮T8C 1|?LzK&y{{O6>2^}ƍ~ʔ) L2eÆ M0ʹ9sg}͜9'L_Kr)ݻwoBBwAc{?BBBL#jof `̙Ο|򉅧ȡUWW8Ν; P{*.]{ŋݻLmѣ~C2\~\]]}_=%%Űo[׮]'ɓoܸ??i;fMttt۶m׿:99 0GQ*ޖg%9kk˧OuV>}&LPRRbh/fGhڛc1pqqINN^jUiig @ {N.]BCCiŋ'M'Mܹshh={Z"ۓO>9n8:[pa5&&Fu~ݺu3g|뭷f̘a~4VgϞ}Z¾4/_Xz{{wF7uoXƎhf6 'PT555bvC&}_IN8qل?|ݺumڴ1G6mɓjid~{ܓ'O־3YǒTz^:w\ Ot/ 998ōz]]]}||,Y2eʔ?ς |&L1β&$$o~˖-vd&ܹs_xG}W^xyy5ʚ!XgϞx[|&ROOϒI&knرkC9r~`q,۷O?mx#H}}}J"G6mTWWWUUu֭[7o޴j@0v/rcƌ; СCk֬y{-v.{pdSL5kAWo{gϟ?/vhA`_y#Y{y  ,%yL0jmgAIII#Gܽ{={y晕+Wֹct9?{^ $o_|?qƉ@2dSA0`믿SO tyLLLll,7IXPkӾy۷06h\Z-7l{-ojKKK-oV-o_UUUYYiyTWW[޾\V[޾TZ0WWWf! {Oќ:uŅ?(XJJJ|}}Nz7)mڴhƴo* [o߾iiiw7k֬ ѣL.ށIL={Z̟<<<>;;;+ ۻ63zS+ OOOwwwrWWW+ gggvȑ#u ogg~ʕݻwՕEacҙvssS555MU?}=Y.O}@Ɵ! 鬵aXv(Fa5*)e2o-v';;`cҙƍ v6_,_\l`_$R{;997H!66VF t:?%%%:LJaK2` qowi߾Y@K-%[ժT}@bDZ..9-ǧ`cod˗|raaavB @ ;wp(p6)Xz'}@jo}H윞n5 $`_$R{dXS GÿzV+))t>>>,[ )p4-A؟H???Q{вHh$R{jJտh=D!z}FFA_B>>><`5?pp4)))2l޼yb`.\PXX$v8{ppG ;/nB @ ,X v6E /]]] Q{DjoL+v `#VRR|||Xn $ѹs缼N:вhYU*Հ@]YkMeddxxx@S^^Bk1~ٰaL&{.,,СAXHRSSFxP{u͞=… b`#"ӹgA /bccN@4|  XD0u[ )p4 z>;痛+v8joZ7)`DjJJO$֚N;q0 ,T*Yh 6)e2ɓdeevY p,FܥKÄN; s;j}Hᑞ=8jo}H+v `#VRR|||-qt׮] ; eQ{в$R{?x@R 4H %ִZmFFAj>>>J`c~L3ψ(,,|GB @ >/&t:A7)OfϞ}Y /3==Y E"sll)Oဣ_=jZBlI"7ǧpь5ӻw+WH7Z3joZDjﲲ2J5tPh$rV;qP{ ) RBk1{wdaÆ9sLaaahhAX$2 =S _prrAӉP{3gΜ9Sl;ME"wzz:l E"sll)P{ZiiVU(Ld8"##/]t=zuhY,ޥ*wAK"ki4 ???h Rd5ؘDC9yL&{':u0,,L p,LMM;qrrAӉP{͛7Ϟ=~;" EzzDG /)V]\\bccN@4|  XT* [-q9)S8hT*^?sA؟]tI p,,joR7Z3**..N %4MFFAyo`!BT*Yh 6&yop4ϟdQQQb`N8QXXأGHd{'e2D$N; SN:u)WDjo__t0`_$RƊ7jZBrk%8seee^#luhY,EEE*jذab.V322ڵk'vBP*,ȼ7p(ׯ_dݺu;sر{L p, 78q"55… b`#NNN t:`܎;fϞ?|o}~~~鮮b@ /]]]cccN@4|  XT* [-q9)S8h:wsrr :ܹsbc hͨhY߿RF)v`DZSAAAb jo`!oooR"R8`ܹxm3?HA+**z)v6$N; b`;i/]]]l`_$ιkll?.v` ViiiÆ {[ PVVVTTh"8m[… >lTVrfO=_ffAXedd 6۽{_׌ gggsD/33^zϼy۶m+v.ͣĊ6A 17߈ܹs+Vɱ.]X=ںO>u}mN2Ӻ[^^n]ߗ_~Y.[wѢE%%%]zu}'MTXXh]ߝ;wYwȑM[׷Gu}/]Ծ}{{mZ #7oرctƍ7x?W/ŋM[~[~o޼i'Ǽ:ܺu~###ܹ^eeeZСCqqqDC)++S(ޥu Zӧ333|ҥu1_:gРAusszSN-..'J9sfY^y~___ckx"Zm]߀{E/~  ---++O>bg` re:n޽+VG]hɓYb 9 ={6+>{;99_ti׮]aaa.\>}zXXXjj*؞Djvڥ8p@  >s7nܘ={vLL̮]X`K]]]cccqHFջ_ sz-PYYYQQ$R{ppހiӦ^q?~75|p??t9p nnng;0 @ @k&~STO?AK"לdddtI 7RtqH){)Nsvvvrrjbg`g:$v8"\sn͂Ê5kVllA؈ <`/dҘ&ҥKΝsrrl ^vD"ל؈L&z DqqqjY,IYYFf5ؒDFz oMbceQ{2dL&d111ͻuVT*նm̷ޱcGo߾&`T;aiڠܸc>hʒb!gs};޷oVTZe˖>(???,,իbjN-ӧ v'޺uk6jZH]]]?.2ϯo߾;ws5UYYu!CDFF]~$&&^x1111$$d U ۨQ]fyV^fz˖- R*ofߦ={8p˖-Ղ ̘1cݺu?y䑍7ZrAxw^+**6oP(bbb\bj $%%uС_~ϟdɃ<;;vcKXެ}ԩ۷5C o߾]vM0x!zdffVVV˘0==~g~ _0}ݳgOXoo~MoұO=q:, &v#8f?|VgCHSʹqqqt63Ŋ=ZbذaÆ +..~w.^X 1TT >}ZRyyy5c^zvѣGk߀4\sq9Z37oTTE,8jofY缺:##H Z5oooR"R8R7߿='_}$r95k,3{8#{Ç>\l`G$2ݡC;v0I"""g]߬,\h}zz PQQy游8Bs~mԨQ ׮]3lܺu!C"##׮][RRb^PPԡC~?~yRRRz9p-[TWW7ڥj۲eˠAJeppoicܸz괴4צ(""w:szh IDATthxxx@3f;w޸q櫯ra{TTwc:/M;wO>yFs7o]۷͛&M1c+wyO8q̘17n8|pxxWuL딕i4oooTC ҵkz}hhA;h?"1,(Z5HJ H-颲`WQAu]ZjK/iCж RAe8Bc>/\DT㯙yPj^d p8 `\P{!/P{ZR{ 5p @ W5(hGh4GBBݻw{%=?qċ'T%??wS)z> n޼ycSee%zbl6N:ؼ4Jw 6tuuD{6447~뛄ZvI^ﷵ{S^*ryWW+ūf`ؾӧS jo0˗/:=oxh;;;bǓ$IVVΝ;ԇkWUUciӦ#FlڴIeryxٳB7l֭%%%2hܯX,NKKsss "&&&==ӎV05ˎ;\UPPбc]\\RSSOZTT퐟c5"Cx~!C!ׯr}d„ A:L>?Tnyl6jժ+Wׇ%$$힞YYYxǏ+l6D&=}\=<\.)??Ν;111c(SX֖Ae"""f͚U]]]TTmF|B۱dggvvvXZZ(;;;WVV>йs^x2LH\.w̘1gϞu떯/[|[N8`0u̯XmH-,,~[tF@joDRVV<777 ]z흗GDssT*z*^SScoo/J>ʵnO\[jPm$\ZZgUFiˠc .\zu\\ʕ+{ lllvرhѢɓ'[.**J[Omw^5iҤ ,^SCS]]]=g^G@{oIO{XXɓ'@!J??Tg߬YϜ9,`D Ϟ=:ڽ{믿>k,bl6N:L4DTj~f53/jo0555}˝>}:Yc}FxL@A \vtt,++377:P~`1ӓ@|0BimmbXx%sҏ?('O܋|>ĉVK~~~VVVXCeȋzEѣGN@h"W_Q\#_ڵk|>)(`vr;F6UUU988DGGjED[[ۑ#G QSSC?x`BƍdD"suuݹsgSSɓ#G\vM=zX뛙M,33sڴil6{Ĉ6m=Pcg[n-))!˖-[\rlC 77o :Pȑ#ADEEQ΂KK˚?~\MeUۨ7|P*^vΝ;r:99߹s'<<<&&jժ+Wׇ%$$sέx"e2UDDD̚5m۶!ϛJl6D&=}\@陕\H$J/ٳ 8s AH/oPA]lɒ%T+::z[㨮.N]nrTjkk{U^&I$hOII2dHii)za///C7{?b.i4Z]]MU| rdT9sΝ;ƍ w֨`|||RNwKKX,Ql"mixxwuww/Ӷk:X\\,=zK̙3L9YppprrH$*..޵kWXX!ϛJ ;::,,,8;klTʔMcmcccǎEM>>.]"b&M`ŋk/==…W[reC7D"Y~ÝKKK٣cfPŋTgbtA FdΜ9O: B jHo m, FW/D")//:k,fAk 7`vsرYfQ jo0ꫯ}GFh4FHHH{n3 GO8\U? > Ayyyll}GolnذK$ݻaܸq[x֮];i$S&ǎ[VVvq5#/>F355p8,+>>$H\]]wԤ>\c8h}RBăfϞmmm- oܸiӦ#FlڴI@56nݺ\iiinnnd˖-[\rl`%"$$ w͛GD~~>ӧO[}6M.Z* ʕ+aaa dgVV><iuS2:99߹s'<<<&&Fϩ?~fKJJd2ӧOu Y 1k֬ꢢ"m6ElH$JNqA 7h^{,Jmmm^Jd2R r!2{ݺuoggTO奈qFr 0;@9#{@Ol6ҲÇsuppppp1cFkkH$RO&Fu=TT'???''.$$K\@56D"qwwW,++kkk#W'L@.ؐ8@ У\xgϞuuu_GSSSLc7mCzGeO>ݲeP(1PF>oaaQQQ!|@ `2r[$ wy @ \mrT*mll,))ywZ[[wENLLL,..d="LG///zN2D}~zaaaGGñ1PcĝE"Qqq]>>6% ~Yyyyuu5AGټy3N;vlllmMM͘1cM))))))l6ҥKõ s*!8D"Y~ÝKKK٣cfPpիWŭ\RiHL& wp Sjo@ 7n\YY:0H`0<==N}7NkkkWWŢTg#b ZGHH󟼼 Rc B jH}u@IuAuob{#G._|z611yU /0H Fnק;wRRR Wl0@joWWײ2&IubZ[[i4w}Hu(G&ݺuKA988h٩B]\SŪYtt믿2;w{ }[lٽ{w[[۠A"""֭[Ju.GT@UT*o:RKX ƶ.X@V_hmmӧOlʇ\c*mmjj:th d8Kr@ߞ={ZZZh4ZXX_rC qh:dȐ&uC{lGGǺutQ{dJXm4h*W*Kӝm}YXXbU?Bsssc-,,RSS:([t'?oS{azٮ]mG>*z3##C'&&j޾j*mcuדmmmӧO6d^vMf+++m[uׄ---:7KKލeX---ڶZZZضQF)VU:?k+HΝmyffom511׶U?$.0-^7=`hRnZ__Oז-["bi"ulmmնU~_d,hkksz=Рml{{9sm577?}* :qFm[hjbbpBm[r*NjzHr/" 'L|U ĉ_uD_}J1fffc/_\X)?]eYXXi݊L&`577xbx?x̘1T*-[,//!!!Tg#2 ɹz%Kq IDAT\]]jjj/uh4ږ-[QxCC -33,44bbbjkk>'Dk`nܸm6m|ɓ'o޼obbrẺL/jo@ Yk&L(++NQ0`z~wppHKK?~/L'W7N[[[gg'}kQQю;\UPPбc>qqqUUUqqqAlݺ$[lrBƍꇖ9m46=bĈM6鎪ƗҥKrYYR_R?zgmAdTЃ AL< ЏDDD̚5m۶lrUUU]]]|򉗗پjժ+Wׇ%$$(;;;WVVٵ555d;;~bYYY=&qqqDR4111&&F?~fKJJd2ӧOuDY /%\.~rdϯA@=ϳ7~!Azf ׽'NXVVva@y7L2eժU999?~U]ݝ}vwwQFmڴ)77WCBBx<h"GGG:p¼I1vXŋ={Ve,F訪jii B[T56xc$>YO ^x f2...TB"eeemmm䪛d2***>|8w\3fD"W BG}ԩ+WH & 666ݓJc9N~~~NN]HHy;kl|YzH$}γ<;mmmb `\ P-,,***˗/ &I "hԩ<ٳ \.Ą\hoo (.. U|755SIzx̙;w7N(#zgm/+GEyS~z\yfb f@C ,88899Y$ڵ+,,L̙3>>w+ٱcǢE&Onݺ(ŦjPhtܹ| $\ZZgQ5v6KGDll%Ǜ?o{ I[$y@9a|Kի111<O?: w;T^HFB(9r$##|]%@0:Z^^nnnNu 633:sJCC۷S i47gϞF=*uoy]#`!b 7:P~w:;;LFRyyٳlll7K43f5njkk8mmի'Ld2]\\tLNYf F;{$Ak}FFbU*hoV1ɏ?jkkxb wU@}ҥdG}<ǝjVcryZZA`p89AC@_.\:u*:y_~9r'O! >>\vZ```۷o;::XdjEbbb]]ݱc>|x '''yw! tw&bڵy\n/ða֬Ym D"޽{ƍo)j ywmZa^)/+V-GsQ<{ĄN+?B,J}]gggm욛 ~ᇉ'| ꓟ:uJ.{Qݻw766;T ^|yXX؋L;Tŗ^ugg/B1??U.w0kk?SWJ^ <{ZKKKF[pp0Ts7|3b:Λ7%55Usss{ ܮ/vqhРAAd2 ZC0b}y-55z;Qih{;wnxxx||Ezzzvvvff?~ޮh733#Wv۷;cǎsΞ={f̘q悂 >l9ʕ+|޼y?g>x`HH"P(|233uIMMUQXX@ )--?w zr͛tرccccmmmkjj3wmZa` B  b@駟.]4&&|=={`05K,[СC\t)YkhhPy]Aqqq|0H(foo-S@V^^.bcc@{[ZZR5f5crMVVF: 0iiiK,:`8p 3|ѣͨib233Ld2mmm_̠nРAAd2@9#1cƼۯn/r\*t}:]翺0/ȨZ[['$$m߾ohh4Ax[* rӳlTjh.|}}333;::v7N6mĉ dD"suuݹsgSSjj]]]vr;Fspp&b֭%%%=&ٲe? 7nP?iӦ#FlڴIwT56I<ٞ;wÌ3Z[[E"mҤI BG}ԩ+WH & 666ݓJc9N~~~NN]HHy㴶;kl4xț?Sjf5a0*=322hнk0r[XXTTT/_L&\-..&E"ԩSy<ٳgoA,s\ P\\\__ة-Nң3gܹsgܸqB Q;kk4xh:rUcccjS(*ݻH`$ .--A굷YppprrH$*..޵kWXXb3g-//Ucgm3}<3C:8{_ճǿ曅Rڵkw1:BCCΝ[[[{E.d2A̜9 =C ٳgTttt 2\=|rrkk۷RիW{{{LF_vFGGo޼\V{NqFrNe'O0&E;kl$7oކ ry{{;oTuuu|w;1:Tb)F6\sssll5k-ݝ\.++kkk#W&TTTTQQùs:88888̘1U$ݔ3\XX( Ǐ?zSN]rEw6I&L@.ܻwO**p8999vvv!!!ڢj쬱xgR(feedSN :tb=ί y]s:u0 0HM~XMuGp>oaaQQQAOdd2jqq1(N񬭭Ϟ={bLLLȅPNMMMe2z6Izx̙;w7N(#zgm#$AAAA텅G"݇O?)7_>OU|0@j!Cxzz; @ fff"x׮]aaagΜARR=NLLL,..d=UQKKX,Ql"2Dw322~zaaaGGñ"B[T56RONwnzEu*LMM?_~w+3779sfZZZ{{{CC!y0yX,V<[oH .==…W[rbSRRRzzĉ F^^٘f}||.]>͎;-Z4yuEEE)6TWW؄Ds!H֯_?|pgg={航>FBŋSLqtt!55uɒ%߇\+ۻw/Ś4i҂ /^z-\_Suq8P -ckkGؙ| 7vJOO: \x 駟p`O#fT_Tx9˭x85{{[nQ 6mnnNu0.rͥKh4ڛoIu`lظl2q1`̖/_[ 4 C0Ss>y䲲]vQHyyٳlllȷL43f5njkk8mmի'Ld2]\\ Q&njsNr_]prssKMM}>#2F[mmmɗx5khgj\i4GBBݻwiP{b !C<==ǎKu0.\:u*:y_~9r'O! >>\vZ```۷o;::XBۭ򉉉uuuǎ{'XlYNNNkk7|E. uuu爆 fv{8q"NB. IDATA[ZZ?~\СC ,6l\._|y@@ӧCCC sĉ)SsPK.yf^^J=q)\~ӧO߿N#F355p8,+>>f#-ˋ̇~pKu0.{gInnJϺ7o.X@q߯g_qqqo>y򤩩n 2oժU}۷"X,/'߸q#44Te*`X,Vrr뻺u {yy7.##Cidbbz^П_7od*= Un$WzQzzzNNNAAСCut svv8<SZZ/qё#G+v=}tYҥKMLLԟZm_udd$Azz-X-G@El{M JѣGA>\M\}uIIIyyycƌsС˗޽;iҤ& ??ӥKW]uLMMSSSSRR۵O?urr!"""o leg njj*//qA`INNJ_/PnϷuuuձݻw?TT˗/?zK~WPH6=z̘1w?׵y湸Q*Ów{xxqA;77ۻwgaafͩ@jo&*=i4ڞ={Μ9^TTtP矧QQQJ4_fMEEEkkkMM͆ f̘An7oޠA̙ckkHu/.\ԩSMMMeeeK,Q~s>mۖr >|O?)n?p_|rHwwaH.KƒwyRQQAȿo͍_7TzÇ$sNČ3CBBfΜy .?;;߽{uU )<<|͓H$9N'<8::_t(2\?bĈ/o񆻻soo !!!% _{LCjja>}TeG7ocǎ>|e "B&Qg4x+sfϞ?ٳTg X,&j0l׮]x'N,~Em)SYYYQA>0z/> R{[YYyzzR(3?744 >`@@H$x%_PDBum߾' } ZxP{!ПH}%@@ujo ~iyy͛7Ƌ8qB*=v׋U`7‚fAk #7׽ryWW׮];iҤWUD"rƍ}qA `РA˗/_trX,NKKsss ]\\6n8mڴ'&&&644$++uΝMMMӧOwuu-**ڱc˵ :v'..*..!:: [d˖-\.W(޸qClmm/]D.X,rYy~uӦMc#FشiƄz@A!ɨA8}4AT~$""b֬YEEE<o۶md;uttOUV\r>,,,!!Aٹ\ή,((!y<{1H$J111Gkrii)T_ǏlvIILPs3Azf ׽|Ͳ;wRӧOoܸeʔ)VQl?MMMWZuڵ۷5jӦM?nb xEtzPP… ^$IDDرcMLL/^|ٗr4Cc7}Di)^+++OOOS@?RQQ!HUoo6&Id2>|8w\ "*7 333/_"I&L@ܻwO*9N~~+V̚5+))I79 Zw$I{{}@{˗YQ\\L.466DSxqDsJJJdddJJ Q<]\͎;-Z4yuEEE)6TWW؄Ds˱<oo>.H֯_?|pgg={'@9-0%߯^zڴi;v: w;ϟOu@RR֭[lٲvZ1g/9r$A_`x1s05448پ};չBCCF5jA`INNnll: pA\l2C:\~o"{{[nQ "B` ׿dKX{a`1{ڴieeeC:0H=tPOOOS)zG"[XXqkЗ50})|vvv666䋯i37iv&L`2...III:&'YF={Vw Tڵ} >R,hQ֖|yPPPLL@\>f̘;wg8=h4kkkwckS7r8ſP}7@o\paԩ,ɓ_~ȑ#O,,, k/x>k8xRtttBR̝;7??ʔ)Ri cƌ?~yGjKZmڴ믫7vI+W3~͛7>|~w s̩^BXjCCC'Mdkk}7S[GUZZmWdɒ7|CW^]jU˖- s={;vybKjjĉo߾-.uӃǰ+}8dȐwy'<<_T{h1j?XdIqq+ #"~~~/:#f5 0ȑ#!!!9p}/\:uTvvvw m޼!CJJJlbiisk׆t]922E7nԓ'!!z}yjݻw``7ZYYEDD\xqرfΝ;5&Zpe\]]ϝ;a"FD_,`X{#))))--sdrFC Q-\PRq,1hР-[*ti߾}jj]9 N{{{Ɗox[YYP(~o6tPΝ;'$$h/k_HgϞvʕ+,Y4ck80xرn߸qõ:uA033q;wk"&&b֭{ZZCS:thРA/?'NG.AO^}(1R] @Cqwwt)$СCӦM7F0aB``fB_|񅥥I^uRPveeѣ===/_s={]t硩Ə{nYf۶mh4zvk5.\/_>oQ188877733Ӑsrrvaa&MMf2뗞hѢzP(VZw#G/[lILLYn 5jTi5:N6ĉΝ{[l9`AFw߭^:77755uɒ%#F033S(III~СC曻w獵o駟{AHUUUu 7ȤV*=zh׮ 2`#G 80''Ç۷_xqʕשSjw{nhhh͇ RRReKKKAjurr}||/^1o8.7p O-wcrJە ͝ w}Vg̘a`ӧO>} qwwT 7DqO-.((0dӧOڵb˖-@#Q*RiImǏ} M48qԡ@YYYUTTs{1c $joUԹ4bkkkh<\02Wݎ&L;vlfA(,,lҤI]O|Aaaa]{y.O999ulժU%K\Q{Fϟ?m_BBBAyϜ9E<>`:lllA()):!JG[666b).sMsssRY^sy~k`ĿUUUR`LJKKKJJlllXn IeZ/^LHH+++---׿Ι3CR y͝;>: LL]mۮY&++kfӦM=\xx.u4y-HH&~VgΜX8qb<شiS\\\c./^|h>99ԩS#F_[[[R)(h42Ykm_CCCm&uHJ;w 6m*uyoزeKRRҽ{( Aq" o27^z500^, 7XȤ0`@zzR:h<c![TC[p PUU%uƤV,0!|LP{&(//OѸH1YxJZpA`Zx!xIȤ޿Z5kAI&w~~~FFŋ@2| akkT*mll"P(^*udԩgϖ:LL1&y0M#G}A4>t BD 02_}tJ%uxB&JԘ PUU%uƤV,0!ŋ5Ae˖TK' aHB&oZ=gPLj۷ogdd\tI j666JdR{P(L2%??ܹRi IIIwܑ:×6B&s;wW^iڴY4joI=hРtJ%uxB&JLodff&BUUAҒcd0AOh4=ADJ'ujo,jo2yo`3@2ݫV͛'ujI}파K.Id FTLjoLP ʼn'DGGRi=`ذa/L 7`Q{Ljf͚I4joIݬY3 oL UUUR`LJKKKJJlllXn JKKh4z:c駟T9sH' aHB&={ju\\AI&[222._,uO5RBkhd2 z ÇL0!??Ri _uRR͛7M`…ݻwwqq: FB 02_f͚I  IDAT4joIݬY3 o0Afff TUUI1)++Y`B7L5A*j֬YRiɢ =$!oQϗ:5ɤuVFF˗@2| accT*mmm"ꫯ*K1?!uc ҹs-ZH@C7 RGبB&!C|||7XȤvvvԘ PUU%uƤvvvRg a5`vޭh$%%T3fH' aHB&wJJZ^`AI&͛7322fccT*mmm"BW_I1;vl~~E"{ݻ_&u/mҥKP{L{ݻwwvv:h<c!ٙ0qL UUUR`L߿ommmgg'u9 ހ ڶmF :cgTiӦI'Lp LjﯾJV/\P $͛R >V*,F&P(6m$u{~~ŋ"{Aڶm.uƂLL2E7XȤ:tZvqq:h<c!ŅScff&BUUA[[[5kּ[QQQW: LdQ{0!,IȤ޹sZNHH:5ɤɑ:Rd542 Ւ#//?WFVWWAظqc߾}Jۂ Rݷ~[PPkKKKsrr^y++w]?u}ׯ_~Сp˨Q^}3g9rk׮޵k/Rg~?h^^^m۶̬{)O<9 _~>|)S===O<)>ܾ} x9!{iӦ&ʪ3fL]L uE>i]}tuR˫QG򊉉srr*++]]]O:%;wݽJ_WpB!e$;ֲe˺^DNo߶۰aݻw{  ڇ3f󋋋k߾˗5͍7ڴis=9Pu 98ѡ$dy^^^FFF>}g'NtM|ػw1cܻw޾vm۶\nڴi=Fܹnoo߮]#Gxzz **%%O>0a«۫W/C&G߿'?~777嗿SNh.--M6?umӦ$ < JN 0-|߻>|||lmmO8!>LKKSb%caaQ}՟9**ꫯh =zTӧO׮]wO"\(-- 8zhvva4ނFHNAT}߿޽{^ڱcH'uׯ_+**,,,A={q7o޼Cy_k׮n̛7OPK19rd~~~*uj :z+.ٳUdA.]rJ__&޽{SRRnܸۭ[7wwwKK˰GVUUݼysΝ-***((urrLNN$`HԺԕٳ,++UTNNNN$s=ᅨNNNcǎ3gNvv cƌ?<<<R]{&m(˖-7t' Ӄ{w=%&&:tԩ'NnjsaÆܹ3g.}ܹGM.]ڵKl W*/Çkt#F3f$cHT}_RR2s͛{zz?~|ժUO]<\yueSNR1]?6 mΞ=g}UG @B!?Wyyy999͛7oժYx{`DUUUΝgiS?8q⯿*m|wi۶;w'MӬY3=|/r֭#Gl?o޼s~Rg@n޼y=dVx͙3gR1&K.3gT M62e EEE~a۶mg͚u=9 򂂂{IE&rG-K,:W}鱌1bRxRLR y 9sh4ZHmۦR&L ucX_tgϞ}bYףS16Ӱ¹SlllllE,Y1o<777 E†A,**jA(**l***d(A y)DΝ͛7tЈaJA`ZdR{k[ j EӦMd(A쬭d(333''J{{{++ xB&O\իׇ~ >s-Z(66v}YPSȤm+;vQ8ҍ7֭[Wss:th3~~~666>t d?=zэB&oٷo-ZH@[z`B&w-(YZhQv̙B jo NaJ+O84-[5jRg yodffkIx\JɒIyfZ'HdR{߸q###ʕ+RTR*,F&O?TPL8Q ׬Y#ujo2?&%%9sF  jo2y樨Q 7Xcaaa~~~-Z:h<c!ڻEހ-8`ݻgeerkhL\s@&x (Fzj0&_}J;vA`ZxԒIi&Z|r0Q>>>۶m>T՛7o0 O?mquuMII7lؠUYYP(~gϮ=ZFIȤȸzAHIh4v>}z^d޼Q5!$FСȑ#ۧs33~%%%Ξ=;--kOAPeff999u]Ggg x .<ˠAzƎknnf- P{LjI&ISĉ%%%ݺu;==޽{Ν;ڵ;rȉ'1`⬬,[=RymC i_1((H\\t!77=zD  #C&7Tgmmu+V >\w޽)))7n܈֭eXXXLLѣGn޼s:99effV{yر$;wnN6k׮o%={lmmU* u:Nˋ-#GV^dɒ#F?d<(FO#$,,LlڴI 7|RX<%&&:tԩ'NMLLҥ aaaJ^8|p1]\\.]:bĈ_|qƌ]cƌ9s挋K$1Dppkגj-))9sf===?j*=s]#4!sQ޽߿mQǏYxqDDļy{l\W2KHcǎ#F>|/@ K&罿 Zb PLj܌WJSJTr 42 @:{4#Fl߾],Ɛ!CN#k矓I@y?*2`ΝQQQ~A4 02<22R`,drյG>>۶m>T՛7o$dq hꡢX 0-2Ih4v>}z^d޼=3O7xC|WR`LvޭR"""B @ /_޹sg__ߍ7۷o.]bbb\"lڴϯSN˖-{BB+ҩS#G,])00p֭bhE;$}Wdd@}1uvpuu=| nWPƍT*,X( <غ^:hPwtt۷wؑ?a„{Oܵ~{vaѢEC ԙ3go˖-svv~w-[&_nݮ]v*B^^^jjFV;vbŊqƌ_kӓdÆ ׿ڵk7mڴu~zRR?m۶^zu7 mѢVoߞ2ejuaaX> wwwCVKL{_^VRT(//߽{󽽽_zɓ''''k?'O_\۷/Y[nZZ`Ν;e|HHXx 0bĈmZZZ:t׮]dԨQ:t0779r}t`ff֯_ٳgyyy 8~} EYYYfffQQSuv3`tɤ~zFFƵkפ@2{8q[n޽{߻wO|عsgq޾]vG9qD^^=<<<<< P\\%vFFF>쳭[o~'y ׯWVVnذACYZZvǧUVwܩ$ T-[ui!)deeT*">>>'NwjأGYYY}ڵ}.Kfnn.n=z4;;{ذaUUUSOR[ddO7n\O>ݺuZbEvv͛?_ݻի;v}xݫP(oܸQ 0-dW^Ǐ:(((...++ѣ+V>|޽{SRRnܸۭ[7wwwKK˰GVUUݼysΝ(***((urr̬~xϞ=;V֟sm߾iӦ]~}ڵ~~~ϊ4h׮]׮]Ξ={2[[[JT( 3RgT,u `SSS>2ǘ{p| IDAT)@7z(..tpp: Lל]rţ%KH h h4:co>J&u={VҥKR0uɒIgR&ׯ_ȸvA<լJA`ZdR{S"##cРA-[tqq ov]ZZХ}:wݻwO.\:u?ooogp)ӦMS(ӟD??u}=}Æ ڇ ~O?i)w>eʔFرcٳgWC'kXa`~B/u^߲eA`ZDzzzRR/"aaǎgc?L4I__TMNNN۶m'LPׇ111/_޺uk^^޶mڵkgpA˿⋮][NA>}z<^^^x5k6mڴYYY?\ұc]?GaL*dbQQQ{*F0aB```rroݿQFM4O E͵lllF|rSٳwҥOTT u .7|h֮]{\Aж E=^cǞ?~׮]:* Jջw۷;88L4IۭuҺ&..ǧƤ#!{̘1oAoΝ;k|xc 7lҤɓׯ_cȘIII={رcğ(3gVTTinn>lذƜ0/RDDE 02[l٣G777z p“ 4FlA|}}7/_ЉӴiS=vzjOOπT=/\߇ nݺ>K.~u;v5kڳ_~EEEToxI \ZkӦ禦.VM;έ[.]r5'''?vڽ 5j֬YׯǍִMZ QHHH7n\xx#:xRtttz{ugRF+22?y ֘zŊ{矛4ir޽z8F͛'B\\A<-Fꫯ9sȑ#]vv//mfffVTT|={'O/dgg>|ʔ)'On߾… {qtt>>Z̼sǍy把;vj^z~fff TUUI ڵk >>>j{{{ѣGō>}ty߾}TPP%v3777JKK==l0͟w_"##joܸr>}t-++kŊپ:~U*՞={>1cTQxqoI=~Kd :z+wޔ7nv2,,,&&ѣUUU7oܹsg) |}}233zyر$;wnN6k׮~VƍOKKV}z8Ԣ nnn=zhٲAH[DCN:5::zĉڞ]tϓ T*_xÇמeҥ#Fxg̘5f̘3gθ 6Ƴ$1Dppkגjw=uDDę3g^u=}S@=TTTKE+dɒ{w]xn=Â-X㫬tww_~km48p/uNi\M6AXHАJeV>+@*2W^nݺzkرRg {={QH@gi&kί]qu לCXZZ*J70A/_hӦͥKhK&G&sǏ񘙙 P<_5k֌1B jٲK@@xR.۷OMMչ޽{4O|zVƎV]K}G1״i ž}8ٳ O?i[\]]SRR:އ\u,0"|`,dR{[,@ZӧÎ;3ǎ666E 4i믿߿mN0vx+**TVVV_q'5-///vn:Aţl֬ٴi a̹zY`,B&vsssss:h&L,|&Mz׵ [ZZV_E]YY9zhOO˗c A EvfΜo=s ԘTK1mڴu֝:uk׮oFѬ]^uuusrر6lصkWHH!m].GrICAZꡲQ,0!29 OoΝ;k|xc >Ž{>v=쳆L}޽ 68::z{{kBCC{ٱc 62!fΜYQQaȘus K/EDDrssh4W^:cGR|C'JLLLNN޳gOӦMc|򉫫SV\)D%ҥKxxxh.WTW駟 .|aaa [Scǎ577_f!c 0 &&`}J.vvv5znZ }iiF,v-!S7ɓ7nHMM}״vQgyfŊ>]v/ Fp¡C!AHHH/,,4dX^%{ժUj?:j Zmڴ믫7vI+WƐ)]]]j}H@133J <<077:ЧO op X(ի<󌫫O9y9sn߾O?=l ,//: Ȥ~$.\X`͛+**,,,~g}VPUVVZZZZXXTTTHѨ,**ptt: LL97ɓ'_:_|ҤI.\HYXXh4 oVTRޝ4qr* %-^jUжآjmh*uWkףnk=Պ7)WH~oe9" f`|Lf>׌ɛg,\-a~a^ߨQ)S̜9C\] s++C{xxy{{Ԭ[n~-55f7mڔ~ A֬Ye˖ """=/;wqz;/J/X׿AիA`Yd2}޽^8~;w9rD77MT5;((f~;v\m><үyKRj&Zd?pŊ˗/5kVW/]x}  L8q-Z0NPz}IIRiY3ر={.^Z\\ӪU{I @vZLL̉' KȘE"_\TT7{lV+u4ٳR`VzA&ԩS'L5w~~-444//o%%%fHY7`̵֢Ej]-9sҥK7~v g@utJtk0'{L'M$u Ps\RPo={eRe0:Lj5kh4m۶Id@%;%%%!!!55U $C BRj&Zds`srr v횑!u Xjo23eF#uf9/zLh4 oQ{j:33S:;;KJd]P]:.''GR1OI&˔a0jA... :, 77 µ*LjիWk4oF %;%%%!!!55U 4JVh f&y3FijGh֬Ç^IN X8~>t999*`Ns@& Xw ]\\^~eP{lQ{ ƽ@UIgi4;wJd@%ݻ iiiRPT*ZDk037`ZnP(nܸ!uF```FFǥ"{)S:v(uf7رƍNܨLj3f?C Ljo o,7*))ζrtt: ,*AAA;wNHH: ,lQ{ \IȤ^rFٽ{A(K&ݻwҤNRL3I ,S@@BxA?|FF?OP{{:tH ̊67#""V^-ufE TR|AXXAH߀edR{{xxPx߀eJJJn 9KHH0 ;w:zҥK...{:, 7` u7 ! ˗/h4{:= :K&ݻwҤ@2*j5dR{_rCP>}Z :dddORe=YfSLiӦAjo2ѦM7JQ{~o)u`VzA&'7@udgg[YY1Iwq%;oRg<Y,ת@2G|R, =::JV3L&7LW(?A~~~A`YDZZZLLnP/P{]v=M .\ٶfOӻ?rK/d|?8{eY| IDAT[$TmЯ_G>[nEDD,[L ̊P/Ȥ={v||QTf͚յkWSTϢEfΜ)>=zt!wwgc9JQQQK,: gP/Ȥ ruuZv͚5={ܺukaa /_ MP\tӣ[hѽ{/o۶o߾۷_zuVV  /`\̙3 Xܹs򼼼-[;::vի5X 7a֭{V͛7_tرcZvӂwӧA[ܹs?JO6xW333!!Ď 0u߯G)&L5kVe?tE N| ڵ:,%ޅqqqX Ej [Ϸ_ŧ/JNf\~Uwww^o0>gPPPVO8!c*]]]OtUټ*Ge{i֬٨QQD޸qSlǟu.\֫WׯOM6G)-[qFeuת@2?cF*+$&&OϞ=hAPTz޸ӧ#""׿hMPܹsG|j9 qƇZW!C?~|˖-&L?uӥh*WСCk۶ĉMbJUTT$¼y&Oܻw ͣo􀺀QY2=zT6l8t褤3gά[.44T|K.΂ ܾ}^[~}Ϟ=M֨QY %%eǎrkkqEEE9sF?zh߾}Ɨ|+V;v,,,|*j̘1 ,8ydIIɥK~X|w .<-[ &H@q- dHKK۰a#GKnƾPgQ{OVXѪU5nP/Ei4H3_~ ./@%q;w$$$R )W*7 RVh f&qo`LP(+7222Ο?/uX{Ӕ)S4i"uf9/zL4idƍR`nzA&/X >>~ذaRfE d2%u `nKgee)J[9)`9n߾u-s,jokU R,޷oNHHHOO::MTj&Zɤ)**JP|RPoxxxdddRe 111;v:M@@ @&222"""fϞ] 5k7̑#G^z%q~=Z0 2*uS-Z4sLqTTԒ%KXP^^^AAA=AH*lعsWYAծY߿gϞ[n-,,oݺwjyK.o۶o߾۷_zuVVرcZvW_}'Nŝ`D zV5~q桒:Ϝ9s-ZԻw˗/;88Y!222==}޽ӟfΜ>}&;;ƍʳgzƍϘ1#99yՂ |={A ŋ/xȑ~sg rʕ+WJ@}r=OOOdd8vܹt~YYY7o޼ EEEXd_=Mg˗/899uYݻwg:uXt}/]ԦM-iҥKbP/P{Z^0B~~~Nħݺusqqٿ={5k6jԨsΉ+ 6kIII ܸqӳt-[4iq $!{R '~vӕhcc(>={Fw^۶m'N(B@@@ƍ>|?Z <(T(2o߾.uybRƌ`'O\tLܰaáCFGG'%%9sfݺu Ǐ/,,qqqqrrzܸqQQQgΜ=ڷoN]Vk׮uСwԀRT:`62*-[6~;;;Yaڵ9r{ ?{&M}ʋ/7nŋjugqy~ҍwHS(A͛7`* [[)S}xxxxxx=܌3f̘QzN:={|kvvvǏ?~|#FX`S^|EAN< V= N[n]XXK+p&^`L899mܸqŊRJ?SUϟojQT999(7^P^^^=Y@)))j@effz{{gff:88L:5**… /^hѢ Hd2D P*Ɖ===)<}tArrr>coos'Xe@uzV%uX{jժUs"##}߿ߢE͛߻wO, 22^'h"""RPkJJJkZiJӕ\tZi877V!;;V***˫AOHQQM~~~酅111;v숌ruu}^xFdry9tAIľ˿Ҕ^ŋ?~\XXX+Mnj J^;;;K@]9琄LƽoݺPGX~AѱZT*C4%JU;_Ҕ VVVT j)Aʧ-77w p‘#G2!P*jI ,2w2dH4P(jq ֶaÆҔR_ vvv 4րgdڴi ]v166F$z͍A;7(,,ܲeKÆ ڶm+u)55uӦM/X`ȑ˗/Σ ?PaaaRgPV\cczA&[ti||<߀\mذA{^p!$$x9}@ qoooooooSZbEVϟ?jԨsP]Bjwdr1rvvvrr̔: Z 8gJQjj[ӦM>|(uX{c_,)KşxdR{ϙ3G=zT $ø7,޷nJHHȐ:P{P*j`f2eZfB>}AW^:, 72e[o%ufUs^^yf͚ς (*Һu#GTR^^^e]\|9$$wŗ;o޼*2n"hkk+l߾̶|B8|p酕uT޿#Gzyy/[~k\ Bє ָqΝ;O>&:*ۺo޼T)Ʀ~nnn/ӑ[ouԩy/xcǎvvv~~~~7M0_iD&M9rQtq&UmSA0aefZs  6ܸqڵkU=/ݻG-wFGppԩS/^߿N)wӟdggWa'N tK,{}|||20gΜ{)))ƗliӦh4ş~;w .$&&/1iӦvڕ\ _mڵkUi-Lw?TI&~i֬Yq}}} FEEݹsgǎiiivjժ7M^!7&&ƿ}̙3aܹ{ۦ`z*~LJ&F&OfΜ-u`VO ß!CٳG\ekkSB+++kkkSAu:[of͚ʺ`ӦMk@@Rh:駟yARo {|bȪoeyaÆcƌ۷[6mty++6ۦMlXIcXd;((E X{߹sƍ#F(^{˗EddݻwݫRU; +VϹ0ۦ`bêZett6m]5ۦ`bêZeǰZrֲeKo߿ͭ}&6|1c֯_oϾ}E kĈR:NmI&}[+))ٷo_nݪ:T\tĉ͛^g~~~˖-+[~vڵyҳ;88Gͅ иqs)+CVn"d ai&6Vejp Ȥ={F9vA@ݢP(C3ԩSϟ8q7|vZq C0aرc JnBW_㏡{INN>} jAJJJJSTA=~__ב#G pӧOcbbWQicbb;6r.+++>>~e"'Lp)SoA qܹ7|377*c576l#G|gGV*|]r5k*;qCoV[9Dz*~W^3gNf `zĐ&ߚßo k:$dR{߼y3!!AJ9 8uTvvQxݣGdݷnZ~_+\_~?lڴipp^/=eJT|򉵵G}4nܸwyGjԨQ;w6!N8iӦ[n#iNڼy~C:u*]pppeڴivUx[FgϞO?4,,l IDAT…W֭ې!CWhܹO>~!?_Pdkk5f̘&M >M_>SuPx@'so޼j[jV@:ZRK|o[o+ufRRR-ud2ݪU+#>`ϝ;M6`0dff* [9dJJJT*N: x\P(|yUj...j:##%`52]vGt[nm߾}XXץB YxJA۶mꫯ&&&J LjYfi4ǏKdn:$$`0+aNڳg7{jJ@ހڼy۷a .ʵ'upAț*Kqqq۶mڻU(;;ѱ\K qoc˖-o4hЂ <@':_=}tݥTLZ4͉'RT֭F"q7n$$$Ե[Vk Zvpp:,Lƽe k&uCFFƝ;wB @>ĔH(JAzA0E&  ¬L7^ɸʕ+'u`VzA&>>>RG =~>2 Y, Ȇm~~Ǐmll꨼<{{{;;\s@]E %{ƌɓR %ƽP7d7n$$$dffJ) Zmkk+uX{?(K@akk"uX{ ovAAJlQ* z` Pǚ5kܸP/>,>>O>RfE d2#u joe0233 Y`A|W6665ϗ: ,L9΢ْIh~'7ol| ?gףFپ}wgŅ iuLj7n$$$dffJ@P(juOf0լYv*yi2.Ȥgg: GRPo4l0##o8q׍˗-[֧O۟:u*??۶m}m߾իӣ{}v+Ν;'>޺uk޽ju͗.]*Bdd˗###A217UFe++7.Vurr2dȎ;J{-w~ 2tЬ 6ٳG\ľ?q[Vf={nݺ.ݺu3F:}c^^EdaС 8p@ e˖7K9sFnݺIh믿6>BO8a0|}}t:]TTTxxυ ħӦM >|rrrhh#F sɓ'AAA۶m3 Z>w^LHHWعs1Re헎QYSF۪U߻wo̘1}ܽ{͛7H|˸}'w{{{ŋWV{ϙ3G|**==]|q1nzBGGǸ8qalll.]`?~o0rssN>]sz^zIxř`:96>ىO;v(>puu}N/NLLLKK6l׀rss.\ BvպtRkٳYfF2^Ze헉ĦL`<øǏ8qbv<==ׯʾ q_|#_4o4%%?qN:1>>x2y'O}{zxxt޽5 ڻuAAANNNR %~>jZCĉ͛7 2ݚ q"Vh0\"Wa;?tн{ڶm;qDqJ/W &L|̙䐐Ve ŝ;w*Li666ӳgj4TJ^zP7Q{+VHq ^\kk֬̊P/ȤnݺuPPPZ+{5k6|p$ ܵkFپ}Ν;oڴ<غumi߿yҁ+{\_p9ڵkG ZzR,)))ƍ܎;Vi N)g͚(>iڴÇ ۷kz>Lƽi]ޱ h5ks֭~~~˖-ӧOO:U??˗wĉׯ_WTdd˗###AXbŹsʄ֭۲eKppcΝ^*ªU|}} cqM޻ w_~iӦQQQ))) [[nN>蘗Wfê7T8===::ݽG۷obϖ,8ܭT*˿>c ӱc4ʕ+N Xr… [KJJtQQQᦛ عsq󠠠m۶sԩS{uqNw{ ݻw߼yW^}b&](-ZؿjjjDDD.] CFFͥK'MT~j/Ǖ1bDhh;wN9d;22Rќ>}Z 䠨K,ѣǴic|uԨQn8v6mXYY~bSբvܹt~YYY7o\ѣG{{{[[[2dȑ~]](oذaÇoҤɲeSRRjuHHx@^^ޞ={ßQ2.((8zE<=={=nܸj5,Ȥ~zBBBVVAujZV^'111??SNnݺϠڵkevQ|NgjILLj/BǏ8qbv<==?ޕ߅-tE|ܦMɓ'o߾x޽ݻwF(… k׮LZ ɤƍ fLJ2##?0Z``MbbٳN|jeeUM4Rz}՛ԩs~ &L|̙䐐&}{W⃬ׯ{իcccz  +WO➲G @>v#uT*A/W :4:::))̙3֭ trܹ'Rƌ`'O\t999ZgϞNNN/_.}xe?8piiigpwwOظqc۶mw>sw}ٹV1<]ݦMGGG۷oݺ%ufr//-[޾}[,Aӹ׃:Ydɭ[yढZԦM#_Z On 5~-[4H B\\?[.[L<2@'8`<=={`0zjZ 6%%%$$$33GK.6lydr9кu7n\~G,R*03ZْI{i43gH8uLvZBBBvvAHTZL&'54>T(͚5:$===##CAl߾ v2[-399988YfÇq.\Vɸ7믧:::J(JAzAX4鬭լY%Dsnܸرcޑɸ7x76mT ̇M"77Y|o[|y~|}}'Nxue˖ӧ}N߶m[߾}۷ozꬬ,qhww=zl߾+Ν;'>޺uk޽ju͗.]*Bdd˗###A21WeZ5k{u 5 _vccc׭[׭[7c/Ovtt˫؊EݻwxqU|}} cqa Vd!)))>>>++K =z$Bƍ@6mO?Ǿ~~~III:.***<<ܸ… iӦ?>99944t#F޹sɓfmf0Z}9^ sNc/;vРAW\9uT@@ʕ++ט`0Ϙ1C|accs%K&M,CHHȰan޼y1___Aؽ{͛7

~ŋ;XǏIJd/i۶AY#-KȘLjon?@ hZAjA`AdR{Op"5jԈO=rss+***,,lРY`)g|0 I&;Ch0?\#uR{TZ.,,:,Ljo뭬JeIIY<:,79rFiܸARAKSܹsT@!3rrrڶm u`VJ`0z bTNgee%uCff`pvvov0jo6??666Rg>dȤ2eF9A@]ᅬ=O>RP'ys-I&KJJJHHɑ:[.]ybJuU___CsÆ h $qo`lmm E~~~׮]=zW_}T*NzM o ܻw/##`N2AÇ7mT,̧7nX1hIDAThѮ]ıI&͙3e˖ePrsskm&Mk7PcO,J;55u6lW( .СCn޼jkcVjuͶ=sݻwkkc?&`%BCbD(m M2'Z[vOwG:FTW(aWQbWWDD%?DLL̩KoN<%o559w޶ٳĶp???zwQXXh[oddAl]~}nnmqqqGw7!!!44Զݻwֻe˖iӦ;k֬tz mx* Wz`oyf,_^ڼ_ooo޽{m!Cl'O̴wƌ5 !m}56Kk~ϳY=zmZC%ٛ @f)\\\;v|7O>} !ę3gZCm6B9bi~ým9x !"## b[[gs9rMHHXtm}y)))7nyhjjjjj6KLLLLL|gknnvuue5؍Tcر999Ǐ3fҳPLNNڵk'j˖-ٳsp ;wnlllhh߰9 3fLVVVnnnXXlNJJׯߢE_hE*4jԨ'޽{7))oٲeFQH%{޼yAAAϟWzJ7'.((9sfcccRR SZk6:> E 8u=<<\]]۷oBk'doഺw^[[{֭nݺl6bĈ#Fm*Jt7lSz {JwJJJccTI8-!bQzmF]]]ss+˭n4$T\]]M&S]]NSz8 Eu${ϝ;7((PA8:hdF謫I%@Ç@+h4J(//7,{"{PW^}HAAԩS @kQ#{P  !***͛7lذ}8qh-doS?(=]v-""b׮]C/޽{+=޽{}V}eeewܑZS7TIMMMB?xC'u-5552fwI*zTɓRՑ#GʼSRR"U n޼9//O$U]jձcǤ+W7nTu&$$JUΝW_IU?zK7##C!U]bEzzTCaX6'577[W\Sz8 doN͛k׮B477+W}| .ܼyS{!Uo\"U8qTuǎ2w@4hTyիǏ߿_&U5kLFJKK3 27>>>--M:k,jbbͽiii2^^^2ȑ#2&LxÇR%!DEEE~~T2MMM28ݻ'۹sg# }&:tTuՓ'Oi'۷owUY,ڶ?pfg}bHHHHMMz|"dwVVLe|6 9͝;W$-++644ȭ$"fCKU;v(ӫeLQd o!DLLB2!D||L]f/U۷LoJJƍZV7%%EfW^zm8 _9rdʕ'N駟>}א#GH='L UݲeӧÇfeeYkԩSG|Tu„ O\QQэ7t[<~^z%{T_\pa֭J@999ӧOBhe˖S֭۷kkk_z%gP=JJJ޽ 3fÇ7III-vңBk'do?}%{>`׮][׿>uׇ>c $j6j?Sɔbbb/77W~ǁСCJ79iٽ{~W/..6 6l?~[n߷G !=ګWCwΝO777˔?t{zڨM6-XTmۖ !4ƍo0rrrΞ=;gΜ۷'%%=Zhiaaaٳ=77n,]ܹs+VٳIoÇ7mtƍ|...&99СCӧO߳gdˋ͕)YwGX,R @[D8>do??CJE&Mɩ1cɓ<8sL 6UPP;v4L=<q2!… {=Eל1${GEE]t/8pYQQaa*ޗ.]7J@Igݻg]^mԃ 8`F ڌK.=z(=J{bĉ:GAYw}}]g)=  p|*_~lnqƤ?h4,]VB8>dSw]]ڵk7n  'x2Ւ,҃h3L&bt,Ѩ dJHHxCBB>ѣG+=ݻߗj_|QZSS(UuwwԩT… 7oޔ,7\rE륪;v(,,FFF4HĉRŋ5JjժcǎIUW\9n8jllIII?Ϥ!##C!UvիW_~egPyG? 6ܾ}[?aرo<٬Ν;RU^&U=yduuTuȑ{ٳD'U}l~\j\\+V]&{_xRh֭[eeeRU!3)9ǤwmݺիW裏Nj͛'sdY||*11޴4^///읕%;x`ٴidwEEE~~TzpDJSS1{vYHryjezkkk2!!!]tʌ$2dTU/Wx3fHUG!/dzW^-Uo*Trٳ/]ofoxЮ]'6?Ν;j2i$>>믿Zjʔ)RդǏKUccc8?KUg͚5x`jVVVqqTuԩRSNUUUIUGѧOjyyh۷k׮R6׻wWVWW{zz*= JkvܹgϾ꫻v~WZZ*ӧϒ%K,XСCg_^TTԫW/gP۲~...3g,..8p`UUU\\\ h428F#meMEEE{}ת⼽?fZ[`Wԙ\\\NzoYbEEEsh-_|ł dn@ǧuηon6 t]vg~333 dmT(`y7\\\EA&bt:? ${ {jJ4hPUUUees_uT###z؟J]\\\PPԤ (x:͍`O*yY?j[?vpZdo9 F ڌػwoQyoB...~~~J8p|do p|*ީMMMSz`odoSIWz 7d2Y,Nrk oT^////++۷ҳYpEu${ +W(=G:?V\\\TTԤ Nsssc56ж͝;WlݺUAgϞ5J'B999/^TzvŵG ,VzvE8>|;==GAO%_(߀s}?dX,:`7甜 ڌ])=Ec"{p.Ytͭ]vJ'Bdo9-\PlذAAyyyFQ+=J1BQF@`Ww8>7Pz F8>9mm#{ܹCF 0@Y,8 @"{к.7ҥK77v)=kк8 @"{к.7R__Ν*=s5jT׮]KKKN @"{к+=Ւ%KjkkݕNZ\IENDB`OS_Delivery/md5.patch0000775000175000017500000167673412007674552014675 0ustar kaushikkaushikIndex: include/otz_app_eg.h =================================================================== --- include/otz_app_eg.h.orig 2012-08-05 20:45:01.863166220 +0530 +++ include/otz_app_eg.h 2012-08-06 10:01:20.162141679 +0530 @@ -18,7 +18,11 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Echo application defintions. * */ @@ -26,21 +30,20 @@ #ifndef __OTZ_APP_EG_H #define __OTZ_APP_EG_H -#define DATA_BUF_LEN 256 +#define DATA_BUF_LEN 1024 /** * @brief */ struct our_data_buffer { - int len; - char data[DATA_BUF_LEN]; - char response[DATA_BUF_LEN]; + int len; + unsigned char data[DATA_BUF_LEN]; + unsigned char response[DATA_BUF_LEN]; }; typedef struct our_data_buffer echo_data_t; typedef struct our_data_buffer crypto_data_t; typedef struct our_data_buffer otz_mutex_test_data_t; - +typedef struct our_data_buffer md5_data_t; #endif - Index: include/otz_id.h =================================================================== --- include/otz_id.h.orig 2012-08-05 23:37:34.336029545 +0530 +++ include/otz_id.h 2012-08-06 09:59:45.553469553 +0530 @@ -19,6 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Trustzone client driver defintions. */ @@ -38,48 +42,49 @@ * @brief Encoding data type */ enum otz_enc_data_type { - OTZ_ENC_INVALID_TYPE = 0, - OTZ_ENC_UINT32, - OTZ_ENC_ARRAY, - OTZ_MEM_REF, - OTZ_SECURE_MEM_REF + OTZ_ENC_INVALID_TYPE = 0, + OTZ_ENC_UINT32, + OTZ_ENC_ARRAY, + OTZ_MEM_REF, + OTZ_SECURE_MEM_REF }; /** * @brief Service identifiers */ enum otz_svc_id { - OTZ_SVC_INVALID = 0x0, - OTZ_SVC_GLOBAL, - OTZ_SVC_ECHO, - OTZ_SVC_CRYPT, - OTZ_SVC_MUTEX_TEST + OTZ_SVC_INVALID = 0x0, + OTZ_SVC_GLOBAL, + OTZ_SVC_ECHO, + OTZ_SVC_CRYPT, + OTZ_SVC_MUTEX_TEST, + OTZ_SVC_MD5 }; /** * @brief Command ID's for global service */ enum otz_global_cmd_id { - OTZ_GLOBAL_CMD_ID_INVALID = 0x0, - OTZ_GLOBAL_CMD_ID_OPEN_SESSION, - OTZ_GLOBAL_CMD_ID_CLOSE_SESSION, + OTZ_GLOBAL_CMD_ID_INVALID = 0x0, + OTZ_GLOBAL_CMD_ID_OPEN_SESSION, + OTZ_GLOBAL_CMD_ID_CLOSE_SESSION, #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - OTZ_GLOBAL_CMD_ID_REGISTER_NOTIFY_MEMORY, - OTZ_GLOBAL_CMD_ID_UNREGISTER_NOTIFY_MEMORY, + OTZ_GLOBAL_CMD_ID_REGISTER_NOTIFY_MEMORY, + OTZ_GLOBAL_CMD_ID_UNREGISTER_NOTIFY_MEMORY, #endif - OTZ_GLOBAL_CMD_ID_UNKNOWN = 0x7FFFFFFE, - OTZ_GLOBAL_CMD_ID_MAX = 0x7FFFFFFF + OTZ_GLOBAL_CMD_ID_UNKNOWN = 0x7FFFFFFE, + OTZ_GLOBAL_CMD_ID_MAX = 0x7FFFFFFF }; /** * @brief Enums used for crypto service task */ enum otz_crypt_cmd_id { - OTZ_CRYPT_CMD_ID_INVALID = 0x0, - OTZ_CRYPT_CMD_ID_ENCRYPT, - OTZ_CRYPT_CMD_ID_DECRYPT, - OTZ_CRYPT_CMD_ID_UNKNOWN = 0x7FFFFFFE, - OTZ_CRYPT_CMD_ID_MAX = 0x7FFFFFFF + OTZ_CRYPT_CMD_ID_INVALID = 0x0, + OTZ_CRYPT_CMD_ID_ENCRYPT, + OTZ_CRYPT_CMD_ID_DECRYPT, + OTZ_CRYPT_CMD_ID_UNKNOWN = 0x7FFFFFFE, + OTZ_CRYPT_CMD_ID_MAX = 0x7FFFFFFF }; /** @@ -87,10 +92,10 @@ * **/ enum open_tz_mutex_test_cmd_id { - OTZ_MUTEX_TEST_CMD_ID_INVALID = 0x0, - OTZ_MUTEX_TEST_CMD_ID_TEST, - OTZ_MUTEX_TEST_CMD_ID_UNKNOWN = 0x7FFFFFFE, - OTZ_MUTEX_TEST_CMD_ID_MAX = 0x7FFFFFFF + OTZ_MUTEX_TEST_CMD_ID_INVALID = 0x0, + OTZ_MUTEX_TEST_CMD_ID_TEST, + OTZ_MUTEX_TEST_CMD_ID_UNKNOWN = 0x7FFFFFFE, + OTZ_MUTEX_TEST_CMD_ID_MAX = 0x7FFFFFFF }; @@ -98,16 +103,27 @@ * @brief Enums used for echo service task */ enum otz_echo_cmd_id { - OTZ_ECHO_CMD_ID_INVALID = 0x0, - OTZ_ECHO_CMD_ID_SEND_CMD, - OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, - OTZ_ECHO_CMD_ID_SEND_CMD_ARRAY_SPACE, - OTZ_ECHO_CMD_ID_IPI_SEND_CMD, + OTZ_ECHO_CMD_ID_INVALID = 0x0, + OTZ_ECHO_CMD_ID_SEND_CMD, + OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, + OTZ_ECHO_CMD_ID_SEND_CMD_ARRAY_SPACE, + OTZ_ECHO_CMD_ID_IPI_SEND_CMD, #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - OTZ_ECHO_CMD_ID_TEST_ASYNC_SEND_CMD, + OTZ_ECHO_CMD_ID_TEST_ASYNC_SEND_CMD, #endif - OTZ_ECHO_CMD_ID_UNKNOWN = 0x7FFFFFFE, - OTZ_ECHO_CMD_ID_MAX = 0x7FFFFFFF + OTZ_ECHO_CMD_ID_UNKNOWN = 0x7FFFFFFE, + OTZ_ECHO_CMD_ID_MAX = 0x7FFFFFFF +}; + +/** + * @brief Enums used for md5 service task + */ +enum otz_md5_cmd_id { + OTZ_MD5_CMD_ID_INVALID = 0x0, + OTZ_MD5_CMD_ID_PROVIDE_FILENAME, + OTZ_MD5_CMD_ID_RETURN_CHKSUM, + OTZ_MD5_CMD_ID_UNKNOWN = 0x7FFFFFFE, + OTZ_MD5_CMD_ID_MAX = 0x7FFFFFFF }; #endif /* __OPEN_OTZ_ID_H_ */ Index: include/otz_tee_client_api.h =================================================================== --- include/otz_tee_client_api.h.orig 2012-08-05 23:44:22.688030090 +0530 +++ include/otz_tee_client_api.h 2012-08-06 10:00:14.858809592 +0530 @@ -18,7 +18,11 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Header file for global platform TEE client API */ @@ -32,158 +36,158 @@ #define TEEC_PARAM_TYPES( param0Type, param1Type, param2Type, param3Type) \ - (param3Type << 12 | param2Type << 8 | param1Type << 4 | param0Type) + (param3Type << 12 | param2Type << 8 | param1Type << 4 | param0Type) #define TEEC_VALUE_UNDEF 0xffffffff #include /** -* @brief Error codes -* -*/ + * @brief Error codes + * + */ enum TEEC_Result { -/*!The operation succeeded. \n*/ - TEEC_SUCCESS = 0x0, -/*!Non-specific cause.*/ - TEEC_ERROR_GENERIC = 0xFFFF0000, -/*!Access privileges are not sufficient.*/ - TEEC_ERROR_ACCESS_DENIED = 0xFFFF0001 , -/*!The operation was cancelled.*/ - TEEC_ERROR_CANCEL = 0xFFFF0002 , -/*!Concurrent accesses caused conflict.*/ - TEEC_ERROR_ACCESS_CONFLICT = 0xFFFF0003 , -/*!Too much data for the requested operation was passed.*/ - TEEC_ERROR_EXCESS_DATA = 0xFFFF0004 , -/*!Input data was of invalid format.*/ - TEEC_ERROR_BAD_FORMAT = 0xFFFF0005 , -/*!Input parameters were invalid.*/ - TEEC_ERROR_BAD_PARAMETERS = 0xFFFF0006 , -/*!Operation is not valid in the current state.*/ - TEEC_ERROR_BAD_STATE = 0xFFFF0007, -/*!The requested data item is not found.*/ - TEEC_ERROR_ITEM_NOT_FOUND = 0xFFFF0008, -/*!The requested operation should exist but is not yet implemented.*/ - TEEC_ERROR_NOT_IMPLEMENTED = 0xFFFF0009, -/*!The requested operation is valid but is not supported in this -* Implementation.*/ - TEEC_ERROR_NOT_SUPPORTED = 0xFFFF000A, -/*!Expected data was missing.*/ - TEEC_ERROR_NO_DATA = 0xFFFF000B, -/*!System ran out of resources.*/ - TEEC_ERROR_OUT_OF_MEMORY = 0xFFFF000C, -/*!The system is busy working on something else. */ - TEEC_ERROR_BUSY = 0xFFFF000D, -/*!Communication with a remote party failed.*/ - TEEC_ERROR_COMMUNICATION = 0xFFFF000E, -/*!A security fault was detected.*/ - TEEC_ERROR_SECURITY = 0xFFFF000F, -/*!The supplied buffer is too short for the generated output.*/ - TEEC_ERROR_SHORT_BUFFER = 0xFFFF0010, + /*!The operation succeeded. \n*/ + TEEC_SUCCESS = 0x0, + /*!Non-specific cause.*/ + TEEC_ERROR_GENERIC = 0xFFFF0000, + /*!Access privileges are not sufficient.*/ + TEEC_ERROR_ACCESS_DENIED = 0xFFFF0001 , + /*!The operation was cancelled.*/ + TEEC_ERROR_CANCEL = 0xFFFF0002 , + /*!Concurrent accesses caused conflict.*/ + TEEC_ERROR_ACCESS_CONFLICT = 0xFFFF0003 , + /*!Too much data for the requested operation was passed.*/ + TEEC_ERROR_EXCESS_DATA = 0xFFFF0004 , + /*!Input data was of invalid format.*/ + TEEC_ERROR_BAD_FORMAT = 0xFFFF0005 , + /*!Input parameters were invalid.*/ + TEEC_ERROR_BAD_PARAMETERS = 0xFFFF0006 , + /*!Operation is not valid in the current state.*/ + TEEC_ERROR_BAD_STATE = 0xFFFF0007, + /*!The requested data item is not found.*/ + TEEC_ERROR_ITEM_NOT_FOUND = 0xFFFF0008, + /*!The requested operation should exist but is not yet implemented.*/ + TEEC_ERROR_NOT_IMPLEMENTED = 0xFFFF0009, + /*!The requested operation is valid but is not supported in this + * Implementation.*/ + TEEC_ERROR_NOT_SUPPORTED = 0xFFFF000A, + /*!Expected data was missing.*/ + TEEC_ERROR_NO_DATA = 0xFFFF000B, + /*!System ran out of resources.*/ + TEEC_ERROR_OUT_OF_MEMORY = 0xFFFF000C, + /*!The system is busy working on something else. */ + TEEC_ERROR_BUSY = 0xFFFF000D, + /*!Communication with a remote party failed.*/ + TEEC_ERROR_COMMUNICATION = 0xFFFF000E, + /*!A security fault was detected.*/ + TEEC_ERROR_SECURITY = 0xFFFF000F, + /*!The supplied buffer is too short for the generated output.*/ + TEEC_ERROR_SHORT_BUFFER = 0xFFFF0010, }; /** -* @brief Return code origin -* -* -*/ + * @brief Return code origin + * + * + */ enum TEEC_return_code_origin { -/*! The return code is an error that originated within the TEE Client API -* implementation. */ - TEEC_ORIGIN_API = 0x1, -/*! The return code is an error that originated within the underlying -* communications stack linking the rich OS with the TEE. */ - TEEC_ORIGIN_COMMS = 0x2, -/*! The return code is an error that originated within the common TEE code. */ - TEEC_ORIGIN_TEE = 0x3, -/*! The return code is an error that originated within the Trusted application -* code. This includes the case where the return code is a success. */ - TEEC_ORIGIN_TRUSTED_APP = 0x4, + /*! The return code is an error that originated within the TEE Client API + * implementation. */ + TEEC_ORIGIN_API = 0x1, + /*! The return code is an error that originated within the underlying + * communications stack linking the rich OS with the TEE. */ + TEEC_ORIGIN_COMMS = 0x2, + /*! The return code is an error that originated within the common TEE code. */ + TEEC_ORIGIN_TEE = 0x3, + /*! The return code is an error that originated within the Trusted application + * code. This includes the case where the return code is a success. */ + TEEC_ORIGIN_TRUSTED_APP = 0x4, }; /** -* @brief Login flag constants -* -* -*/ + * @brief Login flag constants + * + * + */ enum TEEC_login_flags { -/*! No login is to be used.*/ - TEEC_LOGIN_PUBLIC = 0x0, -/*! The user executing the application is provided.*/ - TEEC_LOGIN_USER , -/*! The user group executing the application is provided.*/ - TEEC_LOGIN_GROUP , -/*! Login data about the running Client Application itself is provided. */ - TEEC_LOGIN_APPLICATION = 0x4 , -/*! Login data about the user running the Client Application and about the -* Client Application itself is provided. */ - TEEC_LOGIN_USER_APPLICATION = 0x5 , -/*! Login data about the group running the Client Application and about the -* Client Application itself is provided. */ - TEEC_LOGIN_GROUP_APPLICATION = 0x6 , + /*! No login is to be used.*/ + TEEC_LOGIN_PUBLIC = 0x0, + /*! The user executing the application is provided.*/ + TEEC_LOGIN_USER , + /*! The user group executing the application is provided.*/ + TEEC_LOGIN_GROUP , + /*! Login data about the running Client Application itself is provided. */ + TEEC_LOGIN_APPLICATION = 0x4 , + /*! Login data about the user running the Client Application and about the + * Client Application itself is provided. */ + TEEC_LOGIN_USER_APPLICATION = 0x5 , + /*! Login data about the group running the Client Application and about the + * Client Application itself is provided. */ + TEEC_LOGIN_GROUP_APPLICATION = 0x6 , }; /** -* @brief Shared memory flag constants -* -* -*/ + * @brief Shared memory flag constants + * + * + */ enum TEEC_shared_mem_flags { -/*! The Shared Memory can carry data from the Client Application -* to the Trusted Application. */ - TEEC_MEM_INPUT = 0x1, -/*! The Shared Memory can carry data from the Trusted Application -* to the Client Application. */ - TEEC_MEM_OUTPUT = 0x2, + /*! The Shared Memory can carry data from the Client Application + * to the Trusted Application. */ + TEEC_MEM_INPUT = 0x1, + /*! The Shared Memory can carry data from the Trusted Application + * to the Client Application. */ + TEEC_MEM_OUTPUT = 0x2, }; /** -* @brief Param type constants -* -*/ + * @brief Param type constants + * + */ enum TEEC_param_type { -/*! The Parameter is not used. */ - TEEC_NONE = 0x1, -/*! The Parameter is a TEEC_Value tagged as input. */ - TEEC_VALUE_INPUT, -/*! The Parameter is a TEEC_Value tagged as output. */ - TEEC_VALUE_OUTPUT, -/*! The Parameter is a TEEC_Value tagged as both as input and output, -* i.e., for which both the behaviors of TEEC_VALUE_INPUT and -* TEEC_VALUE_OUTPUT apply. */ - TEEC_VALUE_INOUT, -/*! The Parameter is a TEEC_TempMemoryReference describing a region of memory -* which needs to be temporarily registered for the duration of the Operation -and is tagged as input. */ - TEEC_MEMREF_TEMP_INPUT, -/*! Same as TEEC_MEMREF_TEMP_INPUT, but the Memory Reference is tagged as -* output. The Implementation may update the size field to reflect the -* required output size in some use cases. */ - TEEC_MEMREF_TEMP_OUTPUT, -/*! A Temporary Memory Reference tagged as both input and output, -* i.e., for which both the behaviors of TEEC_MEMREF_TEMP_INPUT and -* TEEC_MEMREF_TEMP_OUTPUT apply. */ - TEEC_MEMREF_TEMP_INOUT, -/*! The Parameter is a Registered Memory Reference that refers to the -* entirety of its parent Shared Memory block. The parameter structure is a -* TEEC_MemoryReference. In this structure, the Implementation MUST read -* only the parent field and MAY update the size field when the -* operation completes. */ - TEEC_MEMREF_WHOLE = 0xc, - -/*! A Registered Memory Reference structure that refers to a partial region -* of its parent Shared Memory block and is tagged as input. -*/ - TEEC_MEMREF_PARTIAL_INPUT = 0xd, - -/*! A Registered Memory Reference structure that refers to a partial region -* of its parent Shared Memory block and is tagged as output. -*/ - TEEC_MEMREF_PARTIAL_OUTPUT = 0xe, - -/*! A Registered Memory Reference structure that refers to a partial region -* of its parent Shared Memory block and is tagged as both input and output. -*/ - TEEC_MEMREF_PARTIAL_INOUT = 0xf + /*! The Parameter is not used. */ + TEEC_NONE = 0x1, + /*! The Parameter is a TEEC_Value tagged as input. */ + TEEC_VALUE_INPUT, + /*! The Parameter is a TEEC_Value tagged as output. */ + TEEC_VALUE_OUTPUT, + /*! The Parameter is a TEEC_Value tagged as both as input and output, + * i.e., for which both the behaviors of TEEC_VALUE_INPUT and + * TEEC_VALUE_OUTPUT apply. */ + TEEC_VALUE_INOUT, + /*! The Parameter is a TEEC_TempMemoryReference describing a region of memory + * which needs to be temporarily registered for the duration of the Operation + and is tagged as input. */ + TEEC_MEMREF_TEMP_INPUT, + /*! Same as TEEC_MEMREF_TEMP_INPUT, but the Memory Reference is tagged as + * output. The Implementation may update the size field to reflect the + * required output size in some use cases. */ + TEEC_MEMREF_TEMP_OUTPUT, + /*! A Temporary Memory Reference tagged as both input and output, + * i.e., for which both the behaviors of TEEC_MEMREF_TEMP_INPUT and + * TEEC_MEMREF_TEMP_OUTPUT apply. */ + TEEC_MEMREF_TEMP_INOUT, + /*! The Parameter is a Registered Memory Reference that refers to the + * entirety of its parent Shared Memory block. The parameter structure is a + * TEEC_MemoryReference. In this structure, the Implementation MUST read + * only the parent field and MAY update the size field when the + * operation completes. */ + TEEC_MEMREF_WHOLE = 0xc, + + /*! A Registered Memory Reference structure that refers to a partial region + * of its parent Shared Memory block and is tagged as input. + */ + TEEC_MEMREF_PARTIAL_INPUT = 0xd, + + /*! A Registered Memory Reference structure that refers to a partial region + * of its parent Shared Memory block and is tagged as output. + */ + TEEC_MEMREF_PARTIAL_OUTPUT = 0xe, + + /*! A Registered Memory Reference structure that refers to a partial region + * of its parent Shared Memory block and is tagged as both input and output. + */ + TEEC_MEMREF_PARTIAL_INOUT = 0xf }; @@ -204,616 +208,616 @@ #if 0 /** -* @brief Universally Unique IDentifier (UUID) type as defined in -* [RFC4122].A -* -* UUID is the mechanism by which a service is identified. -*/ + * @brief Universally Unique IDentifier (UUID) type as defined in + * [RFC4122].A + * + * UUID is the mechanism by which a service is identified. + */ typedef struct { - uint32_t timeLow; - uint16_t timeMid; - uint16_t timeHiAndVersion; - uint8_t clockSeqAndNode[8]; + uint32_t timeLow; + uint16_t timeMid; + uint16_t timeHiAndVersion; + uint8_t clockSeqAndNode[8]; } TEEC_UUID; #endif typedef uint32_t TEEC_UUID; /** -* @brief The TEEC_Session structure is used to contain control information -* related to a session between a client and a service. -* -*/ + * @brief The TEEC_Session structure is used to contain control information + * related to a session between a client and a service. + * + */ struct TEEC_Session { -/*! Implementation-defined variables */ -/*! Reference count of operations*/ - int operation_cnt; -/*! Session id obtained for the service*/ - int session_id; -/*! Unique service id */ - int service_id; -/*! Device context */ - TEEC_Context* device; -/*! Service error number */ - int s_errno; + /*! Implementation-defined variables */ + /*! Reference count of operations*/ + int operation_cnt; + /*! Session id obtained for the service*/ + int session_id; + /*! Unique service id */ + int service_id; + /*! Device context */ + TEEC_Context* device; + /*! Service error number */ + int s_errno; }; /** -* @brief The TEEC_Context structure is used to contain control information -* related to the TEE -* -*/ + * @brief The TEEC_Context structure is used to contain control information + * related to the TEE + * + */ struct TEEC_Context { -/*! Implementation-defined variables */ -/*! Device identifier */ - uint32_t fd; -/*! Sessions count of the device */ - int session_count; -/*! Shared memory counter which got created for this context */ - uint32_t shared_mem_cnt; -/*! Shared memory list */ - struct list shared_mem_list; -/*! Error number from the client driver */ - int s_errno; + /*! Implementation-defined variables */ + /*! Device identifier */ + uint32_t fd; + /*! Sessions count of the device */ + int session_count; + /*! Shared memory counter which got created for this context */ + uint32_t shared_mem_cnt; + /*! Shared memory list */ + struct list shared_mem_list; + /*! Error number from the client driver */ + int s_errno; }; /** -* @brief The TEEC_SharedMemory structure is used to contain control information -* related to a block of shared memory that is mapped between the client and the -* service. -* -*/ + * @brief The TEEC_SharedMemory structure is used to contain control information + * related to a block of shared memory that is mapped between the client and the + * service. + * + */ struct TEEC_SharedMemory { -/*! The pointer to the block of shared memory. */ - void* buffer; - -/*! The length of the shared memory block in bytes. Should not be zero */ - size_t size; + /*! The pointer to the block of shared memory. */ + unsigned char* buffer; -/*! flags is a bit-vector which can contain the following flags:\n -* TEEC_MEM_INPUT: the memory can be used to transfer data from the -* Client Application to the TEE. \n -* TEEC_MEM_OUTPUT: The memory can be used to transfer data from the -* TEE to the Client Application. \n -* All other bits in this field SHOULD be set to zero, and are reserved for -* future use. -*/ - uint32_t flags; + /*! The length of the shared memory block in bytes. Should not be zero */ + size_t size; -/*! Implementation defined fields. */ - -/*! Device context */ - TEEC_Context* context; -/*! Operation count */ - int operation_count; -/*! Shared memory type */ - uint32_t allocated; -/*! List head used by Context */ - struct list head_ref; -/*! Service error number */ - int s_errno; + /*! flags is a bit-vector which can contain the following flags:\n + * TEEC_MEM_INPUT: the memory can be used to transfer data from the + * Client Application to the TEE. \n + * TEEC_MEM_OUTPUT: The memory can be used to transfer data from the + * TEE to the Client Application. \n + * All other bits in this field SHOULD be set to zero, and are reserved for + * future use. + */ + uint32_t flags; + + /*! Implementation defined fields. */ + + /*! Device context */ + TEEC_Context* context; + /*! Operation count */ + int operation_count; + /*! Shared memory type */ + uint32_t allocated; + /*! List head used by Context */ + struct list head_ref; + /*! Service error number */ + int s_errno; }; /** -* @brief Small raw data value type -* -* This type defines a parameter that is not referencing shared memory, -* but carries instead small raw data passed by value. -* It is used as a TEEC_Operation parameter when the corresponding -* parameter type is one of -* TEEC_VALUE_INPUT, TEEC_VALUE_OUTPUT, or TEEC_VALUE_INOUT. -*/ + * @brief Small raw data value type + * + * This type defines a parameter that is not referencing shared memory, + * but carries instead small raw data passed by value. + * It is used as a TEEC_Operation parameter when the corresponding + * parameter type is one of + * TEEC_VALUE_INPUT, TEEC_VALUE_OUTPUT, or TEEC_VALUE_INOUT. + */ struct TEEC_Value { -/*! The two fields of this structure do not have a particular meaning. -* It is up to the protocol between the Client Application and -* the Trusted Application to assign a semantic to those two integers. -*/ - uint32_t a; - uint32_t b; + /*! The two fields of this structure do not have a particular meaning. + * It is up to the protocol between the Client Application and + * the Trusted Application to assign a semantic to those two integers. + */ + uint32_t a; + uint32_t b; }; /** -* @brief Temporary shared memory reference -* -*/ + * @brief Temporary shared memory reference + * + */ struct TEEC_TempMemoryReference { -/*! "buffer" is a pointer to the first byte of a region of memory which needs \n -* to be temporarily registered for the duration of the Operation. \n -* This field can be NULL to specify a null Memory Reference. */ - void *buffer; -/*! Size of the referenced memory region. When the operation completes, and \n -* unless the parameter type is TEEC_MEMREF_TEMP_INPUT, \n -* the Implementation must update this field to reflect the actual or \n -* required size of the output: \n -* If the Trusted Application has actually written some data in the -* output buffer, then the Implementation MUST update the size field with -* the actual number of bytes written.\n\n -* If the output buffer was not large enough to contain the whole output, -* or if it is null, the Implementation MUST update the size field with -* the size of the output buffer requested by the Trusted Application. -* In this case, no data has been written into the output buffer -*/ - size_t size; + /*! "buffer" is a pointer to the first byte of a region of memory which needs \n + * to be temporarily registered for the duration of the Operation. \n + * This field can be NULL to specify a null Memory Reference. */ + void *buffer; + /*! Size of the referenced memory region. When the operation completes, and \n + * unless the parameter type is TEEC_MEMREF_TEMP_INPUT, \n + * the Implementation must update this field to reflect the actual or \n + * required size of the output: \n + * If the Trusted Application has actually written some data in the + * output buffer, then the Implementation MUST update the size field with + * the actual number of bytes written.\n\n + * If the output buffer was not large enough to contain the whole output, + * or if it is null, the Implementation MUST update the size field with + * the size of the output buffer requested by the Trusted Application. + * In this case, no data has been written into the output buffer + */ + size_t size; }; /** -* @brief Registered memory reference -* -* A pre-registered or pre-allocated Shared Memory block. -* It is used as a TEEC_Operation parameter when the corresponding -* parameter type is one of TEEC_MEMREF_WHOLE, -* TEEC_MEMREF_PARTIAL_INPUT, TEEC_MEMREF_PARTIAL_OUTPUT, or -* TEEC_MEMREF_PARTIAL_INOUT. -*/ + * @brief Registered memory reference + * + * A pre-registered or pre-allocated Shared Memory block. + * It is used as a TEEC_Operation parameter when the corresponding + * parameter type is one of TEEC_MEMREF_WHOLE, + * TEEC_MEMREF_PARTIAL_INPUT, TEEC_MEMREF_PARTIAL_OUTPUT, or + * TEEC_MEMREF_PARTIAL_INOUT. + */ struct TEEC_RegisteredMemoryReference { -/*! Pointer to the shared memory structure. \n -* The memory reference refers either to the whole Shared Memory or -* to a partial region within the Shared Memory block, depending of the -* parameter type. The data flow direction of the memory reference -* must be consistent with the flags defined in the parent Shared Memory Block. -* Note that the parent field MUST NOT be NULL. To encode a null -* Memory Reference, the Client Application must use a Temporary Memory -* Reference with the buffer field set to NULL. */ - TEEC_SharedMemory* parent; - -/*! Size of the referenced memory region, in bytes. \n -* The Implementation MUST only interpret this field if the Memory Reference -* type in the operation structure is not TEEC_MEMREF_WHOLE. Otherwise, -* the size is read from the parent Shared Memory structure.\n -* When an operation completes, and if the Memory Reference is -* tagged as “output”, the Implementation must update this field to reflect -* the actual or required size of the output. This applies even if the -* parameter type is TEEC_MEMREF_WHOLE:\n -* If the Trusted Application has actually written some data in the -* output buffer, then the Implementation MUST update the size field with the -* actual number of bytes written.\n -* If the output buffer was not large enough to contain the -* whole output, the Implementation MUST update the size field with the size of -* the output buffer requested by the Trusted Application. In this case, -* no data has been written into the output buffer. -*/ - size_t size; - -/*! Offset from the allocated Shared memory for reference \n -* The Implementation MUST only interpret this field if the -* Memory Reference type in the operation structure is not TEEC_MEMREF_WHOLE. -* Otherwise, the Implementation MUST use the base address of the -* Shared Memory block. -*/ - size_t offset; + /*! Pointer to the shared memory structure. \n + * The memory reference refers either to the whole Shared Memory or + * to a partial region within the Shared Memory block, depending of the + * parameter type. The data flow direction of the memory reference + * must be consistent with the flags defined in the parent Shared Memory Block. + * Note that the parent field MUST NOT be NULL. To encode a null + * Memory Reference, the Client Application must use a Temporary Memory + * Reference with the buffer field set to NULL. */ + TEEC_SharedMemory* parent; + + /*! Size of the referenced memory region, in bytes. \n + * The Implementation MUST only interpret this field if the Memory Reference + * type in the operation structure is not TEEC_MEMREF_WHOLE. Otherwise, + * the size is read from the parent Shared Memory structure.\n + * When an operation completes, and if the Memory Reference is + * tagged as “output”, the Implementation must update this field to reflect + * the actual or required size of the output. This applies even if the + * parameter type is TEEC_MEMREF_WHOLE:\n + * If the Trusted Application has actually written some data in the + * output buffer, then the Implementation MUST update the size field with the + * actual number of bytes written.\n + * If the output buffer was not large enough to contain the + * whole output, the Implementation MUST update the size field with the size of + * the output buffer requested by the Trusted Application. In this case, + * no data has been written into the output buffer. + */ + size_t size; + + /*! Offset from the allocated Shared memory for reference \n + * The Implementation MUST only interpret this field if the + * Memory Reference type in the operation structure is not TEEC_MEMREF_WHOLE. + * Otherwise, the Implementation MUST use the base address of the + * Shared Memory block. + */ + size_t offset; }; /** -* @brief Parameter of a TEEC_Operation -* -* It can be a Temporary Memory Reference, a Registered Memory Reference, -* or a Value Parameter. -*/ + * @brief Parameter of a TEEC_Operation + * + * It can be a Temporary Memory Reference, a Registered Memory Reference, + * or a Value Parameter. + */ typedef union { -/*! For parameter type:\n -* TEEC_MEMREF_TEMP_INPUT \n -* TEEC_MEMREF_TEMP_OUTPUT \n -* TEEC_MEMREF_TEMP_INOUT \n -*/ - TEEC_TempMemoryReference tmpref; - -/*! For parameter type:\n -* TEEC_MEMREF_WHOLE \n -* TEEC_MEMREF_PARTIAL_INPUT \n -* TEEC_MEMREF_PARTIAL_OUTPUT \n -* TEEC_MEMREF_PARTIAL_INOUT \n -*/ - TEEC_RegisteredMemoryReference memref; - -/*! For parameter type:\n -* TEEC_VALUE_INPUT \n -* TEEC_VALUE_OUTPUT \n -* TEEC_VALUE_INOUT \n -*/ - TEEC_Value value; + /*! For parameter type:\n + * TEEC_MEMREF_TEMP_INPUT \n + * TEEC_MEMREF_TEMP_OUTPUT \n + * TEEC_MEMREF_TEMP_INOUT \n + */ + TEEC_TempMemoryReference tmpref; + + /*! For parameter type:\n + * TEEC_MEMREF_WHOLE \n + * TEEC_MEMREF_PARTIAL_INPUT \n + * TEEC_MEMREF_PARTIAL_OUTPUT \n + * TEEC_MEMREF_PARTIAL_INOUT \n + */ + TEEC_RegisteredMemoryReference memref; + + /*! For parameter type:\n + * TEEC_VALUE_INPUT \n + * TEEC_VALUE_OUTPUT \n + * TEEC_VALUE_INOUT \n + */ + TEEC_Value value; } TEEC_Parameter; /** -* @brief The TEEC_Operation structure is used to contain control information -* related to an operation that is to be invoked with the security environment. -* -* This type defines the payload of either an open Session operation or -* an invoke Command operation. It is also used for cancellation of operations, -* which may be desirable even if no payload is passed. -*/ + * @brief The TEEC_Operation structure is used to contain control information + * related to an operation that is to be invoked with the security environment. + * + * This type defines the payload of either an open Session operation or + * an invoke Command operation. It is also used for cancellation of operations, + * which may be desirable even if no payload is passed. + */ struct TEEC_Operation { -/*! -* This field which MUST be initialized to zero by the Client Application -* before each use in an operation if the Client Application may need to -* cancel the operation about to be performed. -*/ - uint32_t started; - -/*! paramTypes field encodes the type of each of the Parameters in the -* operation. The layout of these types within a 32-bit integer is -* implementation-defined and the Client Application MUST use the -* macro TEEC_PARAMS_TYPE to construct a constant value for this field. -* As a special case, if the Client Application sets paramTypes to 0, -* then the Implementation MUST interpret it as meaning that the type for each -* Parameter is set to TEEC_NONE.\n -* The type of each Parameter can take one of the following values\n -* TEEC_NONE\n -* TEEC_VALUE_INPUT\n -* TEEC_VALUE_OUTPUT\n -* TEEC_VALUE_INOUT\n -* TEEC_MEMREF_TEMP_INPUT\n -* TEEC_MEMREF_TEMP_OUTPUT\n -* TEEC_MEMREF_TEMP_INOUT\n -* TEEC_MEMREF_WHOLE\n -* TEEC_MEMREF_PARTIAL_INPUT\n -* TEEC_MEMREF_PARTIAL_OUTPUT\n -* TEEC_MEMREF_PARTIAL_INOUT\n -*/ - uint32_t paramTypes; - -/*! params is an array of four Parameters. For each parameter, one of the -* memref, tmpref, or value fields must be used depending on the corresponding -* parameter type passed in paramTypes as described in the specification -* of TEEC_Parameter -*/ - TEEC_Parameter params[4]; + /*! + * This field which MUST be initialized to zero by the Client Application + * before each use in an operation if the Client Application may need to + * cancel the operation about to be performed. + */ + uint32_t started; + + /*! paramTypes field encodes the type of each of the Parameters in the + * operation. The layout of these types within a 32-bit integer is + * implementation-defined and the Client Application MUST use the + * macro TEEC_PARAMS_TYPE to construct a constant value for this field. + * As a special case, if the Client Application sets paramTypes to 0, + * then the Implementation MUST interpret it as meaning that the type for each + * Parameter is set to TEEC_NONE.\n + * The type of each Parameter can take one of the following values\n + * TEEC_NONE\n + * TEEC_VALUE_INPUT\n + * TEEC_VALUE_OUTPUT\n + * TEEC_VALUE_INOUT\n + * TEEC_MEMREF_TEMP_INPUT\n + * TEEC_MEMREF_TEMP_OUTPUT\n + * TEEC_MEMREF_TEMP_INOUT\n + * TEEC_MEMREF_WHOLE\n + * TEEC_MEMREF_PARTIAL_INPUT\n + * TEEC_MEMREF_PARTIAL_OUTPUT\n + * TEEC_MEMREF_PARTIAL_INOUT\n + */ + uint32_t paramTypes; + + /*! params is an array of four Parameters. For each parameter, one of the + * memref, tmpref, or value fields must be used depending on the corresponding + * parameter type passed in paramTypes as described in the specification + * of TEEC_Parameter + */ + TEEC_Parameter params[4]; }; /** -* @brief Shared memory flag constants -* -* -*/ + * @brief Shared memory flag constants + * + * + */ enum otz_shared_mem_flags { -/*! Service can only read from the memory block.*/ - OTZ_MEM_SERVICE_RO = 0x0, -/*! Service can only write from the memory block.*/ - OTZ_MEM_SERVICE_WO , -/*! Service can read and write from the memory block.*/ - OTZ_MEM_SERVICE_RW, -/*! Invalid flag */ - OTZ_MEM_SERVICE_UNDEFINED + /*! Service can only read from the memory block.*/ + OTZ_MEM_SERVICE_RO = 0x0, + /*! Service can only write from the memory block.*/ + OTZ_MEM_SERVICE_WO , + /*! Service can read and write from the memory block.*/ + OTZ_MEM_SERVICE_RW, + /*! Invalid flag */ + OTZ_MEM_SERVICE_UNDEFINED }; /** -* @brief Initialize Context -* -* This function initializes a new TEE Context, forming a connection between -* this Client Application and the TEE identified by the string identifier -* name.\n -* The Client Application MAY pass a NULL name, which means that the -* Implementation MUST select a default TEE to connect to. -* The supported name strings, the mapping of these names to a specific TEE, -* and the nature of the default TEE are implementation-defined.\n -* The caller MUST pass a pointer to a valid TEEC Context in context. -* The Implementation MUST assume that all fields of the TEEC_Context structure -* are in an undefined state.\n -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error: \n -* Attempting to initialize the same TEE Context structure concurrently -* from multiple threads. Multi-threaded Client Applications must use -* platform-provided locking mechanisms to ensure that this case -* does not occur. \n \n -* \b Implementers’ \b Notes \n -* It is valid Client Application behavior to concurrently initialize -* different TEE Contexts, so the Implementation MUST support this. -* -* @param name: A zero-terminated string that describes the TEE to connect to. -* If this parameter is set to NULL the Implementation MUST select a default TEE. -* -* @param context: A TEEC_Context structure that MUST be initialized by the -* Implementation. -* -* @return TEEC_Result: -* TEEC_SUCCESS: The initialization was successful. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -* -* -*/ + * @brief Initialize Context + * + * This function initializes a new TEE Context, forming a connection between + * this Client Application and the TEE identified by the string identifier + * name.\n + * The Client Application MAY pass a NULL name, which means that the + * Implementation MUST select a default TEE to connect to. + * The supported name strings, the mapping of these names to a specific TEE, + * and the nature of the default TEE are implementation-defined.\n + * The caller MUST pass a pointer to a valid TEEC Context in context. + * The Implementation MUST assume that all fields of the TEEC_Context structure + * are in an undefined state.\n + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error: \n + * Attempting to initialize the same TEE Context structure concurrently + * from multiple threads. Multi-threaded Client Applications must use + * platform-provided locking mechanisms to ensure that this case + * does not occur. \n \n + * \b Implementers’ \b Notes \n + * It is valid Client Application behavior to concurrently initialize + * different TEE Contexts, so the Implementation MUST support this. + * + * @param name: A zero-terminated string that describes the TEE to connect to. + * If this parameter is set to NULL the Implementation MUST select a default TEE. + * + * @param context: A TEEC_Context structure that MUST be initialized by the + * Implementation. + * + * @return TEEC_Result: + * TEEC_SUCCESS: The initialization was successful. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + * + * + */ TEEC_Result TEEC_InitializeContext( - const char* name, - TEEC_Context* context); + const char* name, + TEEC_Context* context); /** -* @brief Finalizes an initialized TEE context. -* -* This function finalizes an initialized TEE Context, -* closing the connection between the Client Application and the TEE. -* The Client Application MUST only call this function when all Sessions -* inside this TEE Context have been closed and all -* Shared Memory blocks have been released. \n -* The implementation of this function MUST NOT be able to fail: -* after this function returns the Client Application must be able to -* consider that the Context has been closed.\n -* The function implementation MUST do nothing if context is NULL. -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error:\n -* Calling with a context which still has sessions opened.\n -* Calling with a context which contains unreleased Shared Memory blocks.\n -* Attempting to finalize the same TEE Context structure concurrently -* from multiple threads.\n -* Attempting to finalize the same TEE Context structure more than once, -* without an intervening call to TEEC_InitalizeContext. -* -* @param context: An initialized TEEC_Context structure which is to be -* finalized. -* -*/ + * @brief Finalizes an initialized TEE context. + * + * This function finalizes an initialized TEE Context, + * closing the connection between the Client Application and the TEE. + * The Client Application MUST only call this function when all Sessions + * inside this TEE Context have been closed and all + * Shared Memory blocks have been released. \n + * The implementation of this function MUST NOT be able to fail: + * after this function returns the Client Application must be able to + * consider that the Context has been closed.\n + * The function implementation MUST do nothing if context is NULL. + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error:\n + * Calling with a context which still has sessions opened.\n + * Calling with a context which contains unreleased Shared Memory blocks.\n + * Attempting to finalize the same TEE Context structure concurrently + * from multiple threads.\n + * Attempting to finalize the same TEE Context structure more than once, + * without an intervening call to TEEC_InitalizeContext. + * + * @param context: An initialized TEEC_Context structure which is to be + * finalized. + * + */ void TEEC_FinalizeContext( - TEEC_Context* context); + TEEC_Context* context); /** -* @brief Register a allocated shared memory block. -* -* This function registers a block of existing Client Application memory as a -* block of Shared Memory within the scope of the specified TEE Context, -* in accordance with the parameters which have been set by the -* Client Application inside the \a sharedMem structure. -* -* The parameter \a context MUST point to an initialized TEE Context. -* -* The parameter \a sharedMem MUST point to the Shared Memory structure -* defining the memory region to register. -* The Client Application MUST have populated the following fields of the -* Shared Memory structure before calling this function: \n -* The \a buffer field MUST point to the memory region to be shared, -* and MUST not be NULL.\n -* The \a size field MUST contain the size of the buffer, in bytes. -* Zero is a valid length for a buffer. \n -* The \a flags field indicates the intended directions of data flow -* between the Client Application and the TEE. \n -* The Implementation MUST assume that all other fields in the Shared Memory -* structure have undefined content. -* -* An Implementation MAY put a hard limit on the size of a single -* Shared Memory block, defined by the constant TEEC_CONFIG_SHAREDMEM_MAX_SIZE. -* However note that this function may fail to register a -* block smaller than this limit due to a low resource condition -* encountered at run-time. -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error:\n -* Calling with a \a context which is not initialized.\n -* Calling with a \a sharedMem which has not be correctly populated -* in accordance with the specification.\n -* Attempting to initialize the same Shared Memory structure concurrently -* from multiple threads.Multi-threaded Client Applications must use -* platform-provided locking mechanisms to ensure that -* this case does not occur. -* -* \b Implementor's \b Notes \n -* This design allows a non-NULL buffer with a size of 0 bytes to allow -* trivial integration with any implementations of the C library malloc, -* in which is valid to allocate a zero byte buffer and receive a non- -* NULL pointer which may not be de-referenced in return. -* Once successfully registered, the Shared Memory block can be used for -* efficient data transfers between the Client Application and the -* Trusted Application. The TEE Client API implementation and the underlying -* communications infrastructure SHOULD attempt to transfer data in to the -* TEE without using copies, if this is possible on the underlying -* implementation, but MUST fall back on data copies if zero-copy cannot be -* achieved. Client Application developers should be aware that, -* if the Implementation requires data copies, -* then Shared Memory registration may allocate a block of memory of the -* same size as the block being registered. -* -* @param context: A pointer to an initialized TEE Context -* @param sharedMem: A pointer to a Shared Memory structure to register: \n -* the \a buffer, \a size, and \a flags fields of the sharedMem structure -* MUST be set in accordance with the specification described above -* -* @return TEEC_Result: -* TEEC_SUCCESS: The device was successfully opened. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -* -*/ + * @brief Register a allocated shared memory block. + * + * This function registers a block of existing Client Application memory as a + * block of Shared Memory within the scope of the specified TEE Context, + * in accordance with the parameters which have been set by the + * Client Application inside the \a sharedMem structure. + * + * The parameter \a context MUST point to an initialized TEE Context. + * + * The parameter \a sharedMem MUST point to the Shared Memory structure + * defining the memory region to register. + * The Client Application MUST have populated the following fields of the + * Shared Memory structure before calling this function: \n + * The \a buffer field MUST point to the memory region to be shared, + * and MUST not be NULL.\n + * The \a size field MUST contain the size of the buffer, in bytes. + * Zero is a valid length for a buffer. \n + * The \a flags field indicates the intended directions of data flow + * between the Client Application and the TEE. \n + * The Implementation MUST assume that all other fields in the Shared Memory + * structure have undefined content. + * + * An Implementation MAY put a hard limit on the size of a single + * Shared Memory block, defined by the constant TEEC_CONFIG_SHAREDMEM_MAX_SIZE. + * However note that this function may fail to register a + * block smaller than this limit due to a low resource condition + * encountered at run-time. + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error:\n + * Calling with a \a context which is not initialized.\n + * Calling with a \a sharedMem which has not be correctly populated + * in accordance with the specification.\n + * Attempting to initialize the same Shared Memory structure concurrently + * from multiple threads.Multi-threaded Client Applications must use + * platform-provided locking mechanisms to ensure that + * this case does not occur. + * + * \b Implementor's \b Notes \n + * This design allows a non-NULL buffer with a size of 0 bytes to allow + * trivial integration with any implementations of the C library malloc, + * in which is valid to allocate a zero byte buffer and receive a non- + * NULL pointer which may not be de-referenced in return. + * Once successfully registered, the Shared Memory block can be used for + * efficient data transfers between the Client Application and the + * Trusted Application. The TEE Client API implementation and the underlying + * communications infrastructure SHOULD attempt to transfer data in to the + * TEE without using copies, if this is possible on the underlying + * implementation, but MUST fall back on data copies if zero-copy cannot be + * achieved. Client Application developers should be aware that, + * if the Implementation requires data copies, + * then Shared Memory registration may allocate a block of memory of the + * same size as the block being registered. + * + * @param context: A pointer to an initialized TEE Context + * @param sharedMem: A pointer to a Shared Memory structure to register: \n + * the \a buffer, \a size, and \a flags fields of the sharedMem structure + * MUST be set in accordance with the specification described above + * + * @return TEEC_Result: + * TEEC_SUCCESS: The device was successfully opened. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + * + */ TEEC_Result TEEC_RegisterSharedMemory( - TEEC_Context* context, - TEEC_SharedMemory* sharedMem); + TEEC_Context* context, + TEEC_SharedMemory* sharedMem); /** -* @brief Allocate a shared memory block. -* -* This function allocates a new block of memory as a block of Shared Memory -* within the scope of the specified TEE Context, in accordance with the -* parameters which have been set by the Client Application inside the -* \a sharedMem structure. -* -* The parameter \a context MUST point to an initialized TEE Context. -* -* The \a sharedMem parameter MUST point to the Shared Memory structure -* defining the region to allocate. -* Client Application MUST have populated the following fields of the -* Shared Memory structure: \n -* The \a size field MUST contain the desired size of the buffer, in bytes. -* The size is allowed to be zero. In this case memory is allocated and -* the pointer written in to the buffer field on return MUST not be NULL -* but MUST never be de-referenced by the Client Application. In this case -* however, the Shared Memory block can be used in -* Registered Memory References. \n -* The \a flags field indicates the allowed directions of data flow -* between the Client Application and the TEE. \n -* The Implementation MUST assume that all other fields in the Shared Memory -* structure have undefined content. -* -* An Implementation MAY put a hard limit on the size of a single -* Shared Memory block, defined by the constant -* \a TEEC_CONFIG_SHAREDMEM_MAX_SIZE. -* However note that this function may fail to allocate a -* block smaller than this limit due to a low resource condition -* encountered at run-time. -* -* If this function returns any code other than \a TEEC_SUCCESS -* the Implementation MUST have set the \a buffer field of \a sharedMem to NULL. -* -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error:\n -* Calling with a \a context which is not initialized.\n -* Calling with a \a sharedMem which has not be correctly populated -* in accordance with the specification.\n -* Attempting to initialize the same Shared Memory structure concurrently -* from multiple threads.Multi-threaded Client Applications must use -* platform-provided locking mechanisms to ensure that -* this case does not occur. -* -* \b Implementor's \b Notes \n -* Once successfully allocated the Shared Memory block can be used for -* efficient data transfers between the Client Application and the -* Trusted Application. The TEE Client API and the underlying communications -* infrastructure should attempt to transfer data in to the TEE -* without using copies, if this is possible on the underlying implementation, -* but may have to fall back on data copies if zero-copy cannot be achieved. -* The memory buffer allocated by this function must have sufficient -* alignment to store any fundamental C data type at a natural alignment. -* For most platforms this will require the memory buffer to have 8-byte -* alignment, but refer to the Application Binary Interface (ABI) of the -* target platform for details. -* -* @param context: A pointer to an initialized TEE Context -* @param sharedMem: A pointer to a Shared Memory structure to allocate: \n -* Before calling this function, the Client Application MUST have set -* the \a size, and \a flags fields. \n -* On return, for a successful allocation the Implementation -* MUST have set the pointer buffer to the address of the allocated block, -* otherwise it MUST set buffer to NULL. -* -* @return TEEC_Result: -* TEEC_SUCCESS: The allocation was successful. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -* + * @brief Allocate a shared memory block. + * + * This function allocates a new block of memory as a block of Shared Memory + * within the scope of the specified TEE Context, in accordance with the + * parameters which have been set by the Client Application inside the + * \a sharedMem structure. + * + * The parameter \a context MUST point to an initialized TEE Context. + * + * The \a sharedMem parameter MUST point to the Shared Memory structure + * defining the region to allocate. + * Client Application MUST have populated the following fields of the + * Shared Memory structure: \n + * The \a size field MUST contain the desired size of the buffer, in bytes. + * The size is allowed to be zero. In this case memory is allocated and + * the pointer written in to the buffer field on return MUST not be NULL + * but MUST never be de-referenced by the Client Application. In this case + * however, the Shared Memory block can be used in + * Registered Memory References. \n + * The \a flags field indicates the allowed directions of data flow + * between the Client Application and the TEE. \n + * The Implementation MUST assume that all other fields in the Shared Memory + * structure have undefined content. + * + * An Implementation MAY put a hard limit on the size of a single + * Shared Memory block, defined by the constant + * \a TEEC_CONFIG_SHAREDMEM_MAX_SIZE. + * However note that this function may fail to allocate a + * block smaller than this limit due to a low resource condition + * encountered at run-time. + * + * If this function returns any code other than \a TEEC_SUCCESS + * the Implementation MUST have set the \a buffer field of \a sharedMem to NULL. + * + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error:\n + * Calling with a \a context which is not initialized.\n + * Calling with a \a sharedMem which has not be correctly populated + * in accordance with the specification.\n + * Attempting to initialize the same Shared Memory structure concurrently + * from multiple threads.Multi-threaded Client Applications must use + * platform-provided locking mechanisms to ensure that + * this case does not occur. + * + * \b Implementor's \b Notes \n + * Once successfully allocated the Shared Memory block can be used for + * efficient data transfers between the Client Application and the + * Trusted Application. The TEE Client API and the underlying communications + * infrastructure should attempt to transfer data in to the TEE + * without using copies, if this is possible on the underlying implementation, + * but may have to fall back on data copies if zero-copy cannot be achieved. + * The memory buffer allocated by this function must have sufficient + * alignment to store any fundamental C data type at a natural alignment. + * For most platforms this will require the memory buffer to have 8-byte + * alignment, but refer to the Application Binary Interface (ABI) of the + * target platform for details. + * + * @param context: A pointer to an initialized TEE Context + * @param sharedMem: A pointer to a Shared Memory structure to allocate: \n + * Before calling this function, the Client Application MUST have set + * the \a size, and \a flags fields. \n + * On return, for a successful allocation the Implementation + * MUST have set the pointer buffer to the address of the allocated block, + * otherwise it MUST set buffer to NULL. + * + * @return TEEC_Result: + * TEEC_SUCCESS: The allocation was successful. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + * */ TEEC_Result TEEC_AllocateSharedMemory( - TEEC_Context* context, - TEEC_SharedMemory* sharedMem); + TEEC_Context* context, + TEEC_SharedMemory* sharedMem); /** -* @brief Release a shared memory block. -* -* This function deregisters or deallocates a previously initialized block of -* Shared Memory. -* For a memory buffer allocated using \a TEEC_AllocateSharedMemory the -* Implementation MUST free the underlying memory and the Client Application -* MUST NOT access this region after this function has been called. -* In this case the Implementation MUST set the \a buffer and \a size fields -* of the \a sharedMem structure to NULL and 0 respectively before returning. -* -* For memory registered using \a TEEC_RegisterSharedMemory -* the Implementation MUST deregister the underlying memory from the TEE, -* but the memory region will stay available to the Client Application for -* other purposes as the memory is owned by it. -* -* The Implementation MUST do nothing if the \a sharedMem parameter is \a NULL. -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error:\n -* Attempting to release Shared Memory which is used by a -* pending operation. \n -* Attempting to release the same Shared Memory structure concurrently -* from multiple threads. Multi-threaded Client Applications -* must use platform-provided locking mechanisms to ensure that -* this case does not occur. -* -* @param sharedMem: A pointer to a valid Shared Memory structure \n -* -*/ + * @brief Release a shared memory block. + * + * This function deregisters or deallocates a previously initialized block of + * Shared Memory. + * For a memory buffer allocated using \a TEEC_AllocateSharedMemory the + * Implementation MUST free the underlying memory and the Client Application + * MUST NOT access this region after this function has been called. + * In this case the Implementation MUST set the \a buffer and \a size fields + * of the \a sharedMem structure to NULL and 0 respectively before returning. + * + * For memory registered using \a TEEC_RegisterSharedMemory + * the Implementation MUST deregister the underlying memory from the TEE, + * but the memory region will stay available to the Client Application for + * other purposes as the memory is owned by it. + * + * The Implementation MUST do nothing if the \a sharedMem parameter is \a NULL. + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error:\n + * Attempting to release Shared Memory which is used by a + * pending operation. \n + * Attempting to release the same Shared Memory structure concurrently + * from multiple threads. Multi-threaded Client Applications + * must use platform-provided locking mechanisms to ensure that + * this case does not occur. + * + * @param sharedMem: A pointer to a valid Shared Memory structure \n + * + */ void TEEC_ReleaseSharedMemory( - TEEC_SharedMemory* sharedMem); + TEEC_SharedMemory* sharedMem); /** -* @brief Opens a new session between client and trusted application -* -* -* This function opens a new Session between the Client Application and -* the specified Trusted Application. -* -* The Implementation MUST assume that all fields of this \a session structure -* are in an \a undefined state. When this function returns \a TEEC_SUCCESS -* the Implementation MUST have populated this structure with any information -* necessary for subsequent operations within the Session. -* -* The target Trusted Application is identified by a UUID passed in the -* parameter destination. -* -* The Session MAY be opened using a specific connection method that can carry -* additional connection data, such as data about the user or user-group running -* the Client Application, or about the Client Application itself. -* This allows the Trusted Application to implement access control methods -* which separate functionality or data accesses for different actors -* in the rich environment outside of the TEE. The additional data associated -* with each connection method is passed in via the pointer \a connectionData. -* For the core login types the following connection data is required: -* -* \a TEEC_LOGIN_PUBLIC - \a connectionData SHOULD be \a NULL.\n -* \a TEEC_LOGIN_USER - \a connectionData SHOULD be \a NULL.\n -* \a TEEC_LOGIN_GROUP - \a connectionData MUST point to a uint32_t -* which contains the group which this Client Application wants to connect as. -* The Implementation is responsible for securely ensuring that the -* Client Application instance is actually a member of this group.\n -* \a TEEC_LOGIN_APPLICATION - \a connectionData SHOULD be \a NULL.\n -* \a TEEC_LOGIN_USER_APPLICATION - \a connectionData SHOULD be \a NULL.\n -* \a TEEC_LOGIN_GROUP_APPLICATION - \a connectionData MUST point to a uint32_t -* which contains the group which this Client Application wants to connect as. -* The Implementation is responsible for securely ensuring that the -* Client Application instance is actually a member of this group.\n -* -* An open-session operation MAY optionally carry an Operation Payload, -* and MAY also be cancellable. When the payload is present the parameter -* \a operation MUST point to a \a TEEC_Operation structure populated by the -* Client Application. If \a operation is NULL then no data buffers are -* exchanged with the Trusted Application, and the operation cannot be -* cancelled by the Client Application. -* -* The result of this function is returned both in the function -* \a TEEC_Result return code and the return origin, stored in the variable -* pointed to by \a returnOrigin: \n -* If the return origin is different from \a TEEC_ORIGIN_TRUSTED_APP, -* then the return code MUST be one of the defined error codes . -* If the return code is \a TEEC_ERROR_CANCEL then it means that the -* operation was cancelled before it reached the Trusted Application.\n -* If the return origin is \a TEEC_ORIGIN_TRUSTED_APP, the meaning of the -* return code depends on the protocol between the Client Application -* and the Trusted Application. However, if \a TEEC_SUCCESS is returned, -* it always means that the session was successfully opened and if the -* function returns a code different from \a TEEC_SUCCESS, -* it means that the session opening failed. -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error:\n -* Calling with a \a context which is not yet initialized. \n -* Calling with a connectionData set to NULL if connection data is -* required by the specified connection method. \n -* Calling with an operation containing an invalid paramTypes field, -* i.e., containing a reserved parameter type or where a parameter type -* that conflicts with the parent Shared Memory. \n -* Encoding Registered Memory References which refer to -* Shared Memory blocks allocated within the scope of a different TEE Context. \n -* Attempting to open a Session using the same Session structure -* concurrently from multiple threads. Multi-threaded Client Applications -* must use platform-provided locking mechanisms, to ensure that this + * @brief Opens a new session between client and trusted application + * + * + * This function opens a new Session between the Client Application and + * the specified Trusted Application. + * + * The Implementation MUST assume that all fields of this \a session structure + * are in an \a undefined state. When this function returns \a TEEC_SUCCESS + * the Implementation MUST have populated this structure with any information + * necessary for subsequent operations within the Session. + * + * The target Trusted Application is identified by a UUID passed in the + * parameter destination. + * + * The Session MAY be opened using a specific connection method that can carry + * additional connection data, such as data about the user or user-group running + * the Client Application, or about the Client Application itself. + * This allows the Trusted Application to implement access control methods + * which separate functionality or data accesses for different actors + * in the rich environment outside of the TEE. The additional data associated + * with each connection method is passed in via the pointer \a connectionData. + * For the core login types the following connection data is required: + * + * \a TEEC_LOGIN_PUBLIC - \a connectionData SHOULD be \a NULL.\n + * \a TEEC_LOGIN_USER - \a connectionData SHOULD be \a NULL.\n + * \a TEEC_LOGIN_GROUP - \a connectionData MUST point to a uint32_t + * which contains the group which this Client Application wants to connect as. + * The Implementation is responsible for securely ensuring that the + * Client Application instance is actually a member of this group.\n + * \a TEEC_LOGIN_APPLICATION - \a connectionData SHOULD be \a NULL.\n + * \a TEEC_LOGIN_USER_APPLICATION - \a connectionData SHOULD be \a NULL.\n + * \a TEEC_LOGIN_GROUP_APPLICATION - \a connectionData MUST point to a uint32_t + * which contains the group which this Client Application wants to connect as. + * The Implementation is responsible for securely ensuring that the + * Client Application instance is actually a member of this group.\n + * + * An open-session operation MAY optionally carry an Operation Payload, + * and MAY also be cancellable. When the payload is present the parameter + * \a operation MUST point to a \a TEEC_Operation structure populated by the + * Client Application. If \a operation is NULL then no data buffers are + * exchanged with the Trusted Application, and the operation cannot be + * cancelled by the Client Application. + * + * The result of this function is returned both in the function + * \a TEEC_Result return code and the return origin, stored in the variable + * pointed to by \a returnOrigin: \n + * If the return origin is different from \a TEEC_ORIGIN_TRUSTED_APP, + * then the return code MUST be one of the defined error codes . + * If the return code is \a TEEC_ERROR_CANCEL then it means that the + * operation was cancelled before it reached the Trusted Application.\n + * If the return origin is \a TEEC_ORIGIN_TRUSTED_APP, the meaning of the + * return code depends on the protocol between the Client Application + * and the Trusted Application. However, if \a TEEC_SUCCESS is returned, + * it always means that the session was successfully opened and if the + * function returns a code different from \a TEEC_SUCCESS, + * it means that the session opening failed. + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error:\n + * Calling with a \a context which is not yet initialized. \n + * Calling with a connectionData set to NULL if connection data is + * required by the specified connection method. \n + * Calling with an operation containing an invalid paramTypes field, + * i.e., containing a reserved parameter type or where a parameter type + * that conflicts with the parent Shared Memory. \n + * Encoding Registered Memory References which refer to + * Shared Memory blocks allocated within the scope of a different TEE Context. \n + * Attempting to open a Session using the same Session structure + * concurrently from multiple threads. Multi-threaded Client Applications + * must use platform-provided locking mechanisms, to ensure that this * case does not occur.\n * Using the same Operation structure for multiple concurrent operations. \n * @@ -835,229 +839,229 @@ * TEEC_ERROR_*: An implementation-defined error code for any other error. */ TEEC_Result TEEC_OpenSession ( - TEEC_Context* context, - TEEC_Session* session, - const TEEC_UUID* destination, - uint32_t connectionMethod, - const void* connectionData, - TEEC_Operation* operation, - uint32_t* returnOrigin); + TEEC_Context* context, + TEEC_Session* session, + const TEEC_UUID* destination, + uint32_t connectionMethod, + const void* connectionData, + TEEC_Operation* operation, + uint32_t* returnOrigin); /** -* @brief Close a opened session between client and trusted application -* -* -* This function closes a Session which has been opened with a -* Trusted Application. -* -* All Commands within the Session MUST have completed before -* calling this function. -* -* The Implementation MUST do nothing if the session parameter is NULL. -* -* The implementation of this function MUST NOT be able to fail: -* after this function returns the Client Application must be able to -* consider that the Session has been closed. -* -* \b Programmer \b Error \n -* The following usage of the API is a programmer error:\n -* Calling with a session which still has commands running.\n -* Attempting to close the same Session concurrently from multiple -* threads. \n -* Attempting to close the same Session more than once. -* -* @param session: Session to close -*/ + * @brief Close a opened session between client and trusted application + * + * + * This function closes a Session which has been opened with a + * Trusted Application. + * + * All Commands within the Session MUST have completed before + * calling this function. + * + * The Implementation MUST do nothing if the session parameter is NULL. + * + * The implementation of this function MUST NOT be able to fail: + * after this function returns the Client Application must be able to + * consider that the Session has been closed. + * + * \b Programmer \b Error \n + * The following usage of the API is a programmer error:\n + * Calling with a session which still has commands running.\n + * Attempting to close the same Session concurrently from multiple + * threads. \n + * Attempting to close the same Session more than once. + * + * @param session: Session to close + */ void TEEC_CloseSession ( - TEEC_Session* session); + TEEC_Session* session); /** -* @brief Invokes a command within the session -* -* -* This function invokes a Command within the specified Session. -* -* The parameter \a session MUST point to a valid open Session. -* -* The parameter \a commandID is an identifier that is used to indicate -* which of the exposed Trusted Application functions should be invoked. -* The supported command identifiers are defined by the Trusted Application‟s -* protocol. -* -* \b Operation \b Handling \n -* A Command MAY optionally carry an Operation Payload. -* When the payload is present the parameter \a operation MUST point to a -* \a TEEC_Operation structure populated by the Client Application. -* If \a operation is NULL then no parameters are exchanged with the -* Trusted Application, and only the Command ID is exchanged. -* -* The \a operation structure is also used to manage cancellation of the -* Command. If cancellation is required then \a the operation pointer MUST be -* \a non-NULL and the Client Application MUST have zeroed the \a started -* field of the \a operation structure before calling this function. -* The \a operation structure MAY contain no Parameters if no data payload -* is to be exchanged. -* -* The Operation Payload is handled as described by the following steps, -* which are executed sequentially: \n -* 1. Each Parameter in the Operation Payload is examined. -* If the parameter is a Temporary Memory Reference, then it is registered -* for the duration of the Operation in accordance with the fields set in -* the \a TEEC_TempMemoryReference structure and the data flow direction -* specified in the parameter type. Refer to the \a TEEC_RegisterSharedMemory -* function for error conditions which can be triggered during -* temporary registration of a memory region. \n -* 2. The contents of all the Memory Regions which are exchanged -* with the TEE are synchronized \n -* 3. The fields of all Value Parameters tagged as input are read by the -* Implementation. This applies to Parameters of type \a TEEC_VALUE_INPUT or -* \a TEEC_VALUE_INOUT. \n -* 4. The Operation is issued to the Trusted Application. -* During the execution of the Command, the Trusted Application may read -* the data held within the memory referred to by input Memory References. -* It may also write data in to the memory referred to by -* output Memory References, but these modifications are not guaranteed -* to be observable by the Client Application until the command completes. \n -* 5. After the Command has completed, the Implementation MUST update the -* \a size field of the Memory Reference structures flagged as output: \n -* -* a. For Memory References that are non-null and marked as output, -* the updated size field MAY be less than or equal to original size field. -* In this case this indicates the number of bytes actually written by the -* Trusted Application, and the Implementation MUST synchronize this region -* with the Client Application memory space. \n -* b. For all Memory References marked as output, the updated size -* field MAY be larger than the original size field. -* For null Memory References, a required buffer size MAY be specified by -* the Trusted Application. In these cases the passed output buffer was -* too small or absent, and the returned size indicates the size of the -* output buffer which is necessary for the operation to succeed. -* In these cases the Implementation SHOULD NOT synchronize any -* shared data with the Client Application.\n\n -* -* 6. When the Command completes, the Implementation MUST update the fields -* of all Value Parameters tagged as output, -* i.e., of type \a TEEC_VALUE_OUTPUT or \a TEEC_VALUE_INOUT. \n -* 7. All memory regions that were temporarily registered at the -* beginning of the function are deregistered as if the function -* \a TEEC_ReleaseSharedMemory was called on each of them. -* 8. Control is passed back to the calling Client Application code. \n + * @brief Invokes a command within the session + * + * + * This function invokes a Command within the specified Session. + * + * The parameter \a session MUST point to a valid open Session. + * + * The parameter \a commandID is an identifier that is used to indicate + * which of the exposed Trusted Application functions should be invoked. + * The supported command identifiers are defined by the Trusted Application‟s + * protocol. + * + * \b Operation \b Handling \n + * A Command MAY optionally carry an Operation Payload. + * When the payload is present the parameter \a operation MUST point to a + * \a TEEC_Operation structure populated by the Client Application. + * If \a operation is NULL then no parameters are exchanged with the + * Trusted Application, and only the Command ID is exchanged. + * + * The \a operation structure is also used to manage cancellation of the + * Command. If cancellation is required then \a the operation pointer MUST be + * \a non-NULL and the Client Application MUST have zeroed the \a started + * field of the \a operation structure before calling this function. + * The \a operation structure MAY contain no Parameters if no data payload + * is to be exchanged. + * + * The Operation Payload is handled as described by the following steps, + * which are executed sequentially: \n + * 1. Each Parameter in the Operation Payload is examined. + * If the parameter is a Temporary Memory Reference, then it is registered + * for the duration of the Operation in accordance with the fields set in + * the \a TEEC_TempMemoryReference structure and the data flow direction + * specified in the parameter type. Refer to the \a TEEC_RegisterSharedMemory + * function for error conditions which can be triggered during + * temporary registration of a memory region. \n + * 2. The contents of all the Memory Regions which are exchanged + * with the TEE are synchronized \n + * 3. The fields of all Value Parameters tagged as input are read by the + * Implementation. This applies to Parameters of type \a TEEC_VALUE_INPUT or + * \a TEEC_VALUE_INOUT. \n + * 4. The Operation is issued to the Trusted Application. + * During the execution of the Command, the Trusted Application may read + * the data held within the memory referred to by input Memory References. + * It may also write data in to the memory referred to by + * output Memory References, but these modifications are not guaranteed + * to be observable by the Client Application until the command completes. \n + * 5. After the Command has completed, the Implementation MUST update the + * \a size field of the Memory Reference structures flagged as output: \n + * + * a. For Memory References that are non-null and marked as output, + * the updated size field MAY be less than or equal to original size field. + * In this case this indicates the number of bytes actually written by the + * Trusted Application, and the Implementation MUST synchronize this region + * with the Client Application memory space. \n + * b. For all Memory References marked as output, the updated size + * field MAY be larger than the original size field. + * For null Memory References, a required buffer size MAY be specified by + * the Trusted Application. In these cases the passed output buffer was + * too small or absent, and the returned size indicates the size of the + * output buffer which is necessary for the operation to succeed. + * In these cases the Implementation SHOULD NOT synchronize any + * shared data with the Client Application.\n\n + * + * 6. When the Command completes, the Implementation MUST update the fields + * of all Value Parameters tagged as output, + * i.e., of type \a TEEC_VALUE_OUTPUT or \a TEEC_VALUE_INOUT. \n + * 7. All memory regions that were temporarily registered at the + * beginning of the function are deregistered as if the function + * \a TEEC_ReleaseSharedMemory was called on each of them. + * 8. Control is passed back to the calling Client Application code. \n * \b Programmer \b Error \n. * * The result of this function is returned both in the function * \a TEEC_Result return code and the return origin, stored in the * variable pointed to by \a returnOrigin: \n * If the return origin is different from \a TEEC_ORIGIN_TRUSTED_APP, -* then the return code MUST be one of the error codes. -* If the return code is TEEC_ERROR_CANCEL then it means that the operation -* was cancelled before it reached the Trusted Application.\n -* If the return origin is \a TEEC_ORIGIN_TRUSTED_APP, then the -* meaning of the return code is determined by the protocol exposed by the -* Trusted Application. It is recommended that the Trusted Application -* developer chooses TEEC_SUCCESS (0) to indicate success in their protocol, -* as this means that it is possible for the Client Application developer -* to determine success or failure without looking at the return origin. -* -* \b Programmer \n Error \n -* The following usage of the API is a programmer error:\n -* Calling with a \a session which is not an open session. \n -* Calling with invalid content in the \a paramTypes field of the -* \a operation structure. This invalid behavior includes types which are -* \a Reserved for future use or which conflict with the \a flags -* of the parent Shared Memory block. \n -* Encoding Registered Memory References which refer to -* Shared Memory blocks allocated or registered within the scope of a -* different TEE Context. \n -* Using the same operation structure concurrently for -* multiple operations, whether open Session operations or Command invocations. -* -* @param session: The open Session in which the command will be invoked. -* @param commandID: The identifier of the Command within the -* Trusted Application to invoke. The meaning of each Command Identifier -* must be defined in the protocol exposed by the Trusted Application -* @param operation: A pointer to a Client Application initialized -* \a TEEC_Operation structure, or NULL if there is no payload to send or -* if the Command does not need to support cancellation. -* @param returnOrigin: A pointer to a variable which will contain the -* return origin. This field may be \a NULL if the return origin is not needed. -* -* @return TEEC_Result: -* TEEC_SUCCESS: The command was successfully invoked. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -*/ -TEEC_Result TEEC_InvokeCommand( - TEEC_Session* session, - uint32_t commandID, - TEEC_Operation* operation, - uint32_t* returnOrigin); + * then the return code MUST be one of the error codes. + * If the return code is TEEC_ERROR_CANCEL then it means that the operation + * was cancelled before it reached the Trusted Application.\n + * If the return origin is \a TEEC_ORIGIN_TRUSTED_APP, then the + * meaning of the return code is determined by the protocol exposed by the + * Trusted Application. It is recommended that the Trusted Application + * developer chooses TEEC_SUCCESS (0) to indicate success in their protocol, + * as this means that it is possible for the Client Application developer + * to determine success or failure without looking at the return origin. + * + * \b Programmer \n Error \n + * The following usage of the API is a programmer error:\n + * Calling with a \a session which is not an open session. \n + * Calling with invalid content in the \a paramTypes field of the + * \a operation structure. This invalid behavior includes types which are + * \a Reserved for future use or which conflict with the \a flags + * of the parent Shared Memory block. \n + * Encoding Registered Memory References which refer to + * Shared Memory blocks allocated or registered within the scope of a + * different TEE Context. \n + * Using the same operation structure concurrently for + * multiple operations, whether open Session operations or Command invocations. + * + * @param session: The open Session in which the command will be invoked. + * @param commandID: The identifier of the Command within the + * Trusted Application to invoke. The meaning of each Command Identifier + * must be defined in the protocol exposed by the Trusted Application + * @param operation: A pointer to a Client Application initialized + * \a TEEC_Operation structure, or NULL if there is no payload to send or + * if the Command does not need to support cancellation. + * @param returnOrigin: A pointer to a variable which will contain the + * return origin. This field may be \a NULL if the return origin is not needed. + * + * @return TEEC_Result: + * TEEC_SUCCESS: The command was successfully invoked. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + */ + TEEC_Result TEEC_InvokeCommand( + TEEC_Session* session, + uint32_t commandID, + TEEC_Operation* operation, + uint32_t* returnOrigin); /** -* @brief Request cancellation of pending open session or command invocation. -* -* This function requests the cancellation of a pending open Session operation -* or a Command invocation operation. As this is a synchronous API, -* this function must be called from a thread other than the one executing the -* \a TEEC_OpenSession or \a TEEC_InvokeCommand function. -* -* This function just sends a cancellation signal to the TEE and returns -* immediately; the operation is not guaranteed to have been cancelled -* when this function returns. In addition, the cancellation request is just -* a hint; the TEE or the Trusted Application MAY ignore the -* cancellation request. -* -* It is valid to call this function using a \a TEEC_Operation structure -* any time after the Client Application has set the \a started field of an -* Operation structure to zero. In particular, an operation can be -* cancelled before it is actually invoked, during invocation, and -* after invocation. Note that the Client Application MUST reset -* the started field to zero each time an Operation structure is used -* or re-used to open a Session or invoke a Command if the new operation -* is to be cancellable. -* -* Client Applications MUST NOT reuse the Operation structure for another -* Operation until the cancelled command has actually returned in the thread -* executing the \a TEEC_OpenSession or \a TEEC_InvokeCommand function. -* -* \b Detecting \b cancellation \n -* In many use cases it will be necessary for the Client Application -* to detect whether the operation was actually cancelled, or whether it -* completed normally. \n -* In some implementations it MAY be possible for part of the infrastructure -* to cancel the operation before it reaches the Trusted Application. -* In these cases the return origin returned by \a TEEC_OpenSession or -* \a TEEC_InvokeCommand MUST be either or \a TEEC_ORIGIN_API, -* \a TEEC_ORIGIN_COMMS, \a TEEC_ORIGIN_TEE, and the return code MUST be -* \a TEEC_ERROR_CANCEL. \n -* If the cancellation request is handled by the Trusted Application itself -* then the return origin returned by \a TEEC_OpenSession or -* \a TEEC_InvokeCommand MUST be \a TEE_ORIGIN_TRUSTED_APP, -* and the return code is defined by the Trusted Application‟s protocol. -* If possible, Trusted Applications SHOULD use \a TEEC_ERROR_CANCEL -* for their return code, but it is accepted that this is not always -* possible due to conflicts with existing return code definitions in -* other standards. -* -* @param operation: A pointer to a Client Application instantiated -* Operation structure. -*/ + * @brief Request cancellation of pending open session or command invocation. + * + * This function requests the cancellation of a pending open Session operation + * or a Command invocation operation. As this is a synchronous API, + * this function must be called from a thread other than the one executing the + * \a TEEC_OpenSession or \a TEEC_InvokeCommand function. + * + * This function just sends a cancellation signal to the TEE and returns + * immediately; the operation is not guaranteed to have been cancelled + * when this function returns. In addition, the cancellation request is just + * a hint; the TEE or the Trusted Application MAY ignore the + * cancellation request. + * + * It is valid to call this function using a \a TEEC_Operation structure + * any time after the Client Application has set the \a started field of an + * Operation structure to zero. In particular, an operation can be + * cancelled before it is actually invoked, during invocation, and + * after invocation. Note that the Client Application MUST reset + * the started field to zero each time an Operation structure is used + * or re-used to open a Session or invoke a Command if the new operation + * is to be cancellable. + * + * Client Applications MUST NOT reuse the Operation structure for another + * Operation until the cancelled command has actually returned in the thread + * executing the \a TEEC_OpenSession or \a TEEC_InvokeCommand function. + * + * \b Detecting \b cancellation \n + * In many use cases it will be necessary for the Client Application + * to detect whether the operation was actually cancelled, or whether it + * completed normally. \n + * In some implementations it MAY be possible for part of the infrastructure + * to cancel the operation before it reaches the Trusted Application. + * In these cases the return origin returned by \a TEEC_OpenSession or + * \a TEEC_InvokeCommand MUST be either or \a TEEC_ORIGIN_API, + * \a TEEC_ORIGIN_COMMS, \a TEEC_ORIGIN_TEE, and the return code MUST be + * \a TEEC_ERROR_CANCEL. \n + * If the cancellation request is handled by the Trusted Application itself + * then the return origin returned by \a TEEC_OpenSession or + * \a TEEC_InvokeCommand MUST be \a TEE_ORIGIN_TRUSTED_APP, + * and the return code is defined by the Trusted Application‟s protocol. + * If possible, Trusted Applications SHOULD use \a TEEC_ERROR_CANCEL + * for their return code, but it is accepted that this is not always + * possible due to conflicts with existing return code definitions in + * other standards. + * + * @param operation: A pointer to a Client Application instantiated + * Operation structure. + */ void TEEC_RequestCancellation( - TEEC_Operation* operation); + TEEC_Operation* operation); /** -* @brief Returns error string. -* -* This function returns the error string value based on error number and -* return origin. -* -* @param error: Error number. -* @param returnOrigin: Origin of the return. -* -* @return char*: Error string value. -* -*/ + * @brief Returns error string. + * + * This function returns the error string value based on error number and + * return origin. + * + * @param error: Error number. + * @param returnOrigin: Origin of the return. + * + * @return char*: Error string value. + * + */ char* TEEC_GetError(int error, int returnOrigin); #endif Index: ns_client_apps/otz_tee_app.c =================================================================== --- ns_client_apps/otz_tee_app.c.orig 2012-08-05 23:48:20.164030406 +0530 +++ ns_client_apps/otz_tee_app.c 2012-08-06 10:01:47.268581714 +0530 @@ -18,7 +18,11 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Linux trustzone example application. */ @@ -35,295 +39,473 @@ #include "otz_id.h" #include "otz_tee_client_api.h" +#define FILENAME_LENGTH 256 + /** -* @brief Sample application to show the implementation of Global Platform Client -* API specification. -* -* @return -*/ -int main(void) + * @brief Function to demonstrate echo service + * + * @return + */ +int perform_tee_echo(void) { - TEEC_Context context; - TEEC_Session session; - TEEC_Operation operation; - TEEC_SharedMemory sharedMem, sharedMem1, sharedMem2; - TEEC_SharedMemory nonZeroCopysharedMem; + TEEC_Context context; + TEEC_Session session; + TEEC_Operation operation; + TEEC_SharedMemory sharedMem, sharedMem1, sharedMem2; + TEEC_SharedMemory nonZeroCopysharedMem; - TEEC_Result result; + TEEC_Result result; - TEEC_UUID svc_id = OTZ_SVC_ECHO; + TEEC_UUID svc_id = OTZ_SVC_ECHO; - uint32_t len; - char testData[256]; + uint32_t len; + char testData[256]; - result = TEEC_InitializeContext( - NULL, - &context); + result = TEEC_InitializeContext( + NULL, + &context); - if(result != TEEC_SUCCESS) { - goto cleanup_1; - } + if(result != TEEC_SUCCESS) { + goto cleanup_1; + } - result = TEEC_OpenSession( - &context, - &session, - &svc_id, - TEEC_LOGIN_PUBLIC, - NULL, - NULL, - NULL); + result = TEEC_OpenSession( + &context, + &session, + &svc_id, + TEEC_LOGIN_PUBLIC, + NULL, + NULL, + NULL); - if(result != TEEC_SUCCESS) { - goto cleanup_2; - } + if(result != TEEC_SUCCESS) { + goto cleanup_2; + } - printf("session id 0x%x\n", session.session_id); + printf("session id 0x%x\n", session.session_id); - nonZeroCopysharedMem.buffer = testData; - nonZeroCopysharedMem.size = 256; - nonZeroCopysharedMem.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT ; + nonZeroCopysharedMem.buffer = (unsigned char *)testData; + nonZeroCopysharedMem.size = 256; + nonZeroCopysharedMem.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT ; - result = TEEC_RegisterSharedMemory( - &context, - &nonZeroCopysharedMem); + result = TEEC_RegisterSharedMemory( + &context, + &nonZeroCopysharedMem); - if(result != TEEC_SUCCESS) { - goto cleanup_3; - } + if(result != TEEC_SUCCESS) { + goto cleanup_3; + } - sharedMem.size = 1024; - sharedMem.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT ; + sharedMem.size = 1024; + sharedMem.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT ; - result = TEEC_AllocateSharedMemory( - &context, - &sharedMem); + result = TEEC_AllocateSharedMemory( + &context, + &sharedMem); - if(result != TEEC_SUCCESS) { - goto cleanup_4; - } + if(result != TEEC_SUCCESS) { + goto cleanup_4; + } - sharedMem1.size = 1024; - sharedMem1.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT; + sharedMem1.size = 1024; + sharedMem1.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT; - result = TEEC_AllocateSharedMemory( - &context, - &sharedMem1); + result = TEEC_AllocateSharedMemory( + &context, + &sharedMem1); - if(result != TEEC_SUCCESS) { - goto cleanup_5; - } + if(result != TEEC_SUCCESS) { + goto cleanup_5; + } - sharedMem2.size = 1024; - sharedMem2.flags = TEEC_MEM_OUTPUT; + sharedMem2.size = 1024; + sharedMem2.flags = TEEC_MEM_OUTPUT; - result = TEEC_AllocateSharedMemory( - &context, - &sharedMem2); + result = TEEC_AllocateSharedMemory( + &context, + &sharedMem2); - if(result != TEEC_SUCCESS) { - goto cleanup_6; - } + if(result != TEEC_SUCCESS) { + goto cleanup_6; + } #if 1 - strcpy(sharedMem1.buffer, - "test global platform client api: full memory reference testing"); - len = strlen( - "test global platform client api: full memory reference testing") + 1; - - operation.paramTypes = TEEC_PARAM_TYPES( - TEEC_VALUE_INPUT, - TEEC_MEMREF_WHOLE, - TEEC_NONE, - TEEC_NONE); - - operation.params[0].value.a = len; - operation.params[0].value.b = TEEC_VALUE_UNDEF; - - - operation.params[1].memref.parent = &sharedMem1; - operation.params[1].memref.offset = 0; - operation.params[1].memref.size = 0; - -/* - operation.params[2].memref.parent = &sharedMem2; - operation.params[2].memref.offset = 0; - operation.params[2].memref.size = 0; -*/ + strcpy((char *)sharedMem1.buffer, + "test global platform client api: full memory reference testing"); + len = strlen( + "test global platform client api: full memory reference testing") + 1; + + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_WHOLE, + TEEC_NONE, + TEEC_NONE); + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].memref.parent = &sharedMem1; + operation.params[1].memref.offset = 0; + operation.params[1].memref.size = 0; + + /* + operation.params[2].memref.parent = &sharedMem2; + operation.params[2].memref.offset = 0; + operation.params[2].memref.size = 0; + */ #if 1 - result = TEEC_InvokeCommand( - &session, - OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, - &operation, - NULL); - if (result != TEEC_SUCCESS) - { - goto cleanup_7; - } + result = TEEC_InvokeCommand( + &session, + OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_7; + } - printf("TEEC output buffer %p: %s \n", sharedMem1.buffer, - (char*)(sharedMem1.buffer)); + printf("TEEC output buffer %p: %s \n", sharedMem1.buffer, + (char*)(sharedMem1.buffer)); #endif - strcpy(sharedMem.buffer, - "test global platform client api: zero copy testing - inout"); - len = strlen( - "test global platform client api: zero copy testing - inout") + 1; - - operation.paramTypes = TEEC_PARAM_TYPES( - TEEC_VALUE_INPUT, - TEEC_MEMREF_PARTIAL_INOUT, -/* TEEC_MEMREF_PARTIAL_OUTPUT, */ - TEEC_NONE, - TEEC_NONE); - - operation.params[0].value.a = len; - operation.params[0].value.b = TEEC_VALUE_UNDEF; - - - operation.params[1].memref.parent = &sharedMem; - operation.params[1].memref.offset = 0; - operation.params[1].memref.size = len; - -/* - operation.params[2].memref.parent = &sharedMem; - operation.params[2].memref.offset = 512; - operation.params[2].memref.size = len; -*/ - - result = TEEC_InvokeCommand( - &session, - OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, - &operation, - NULL); - if (result != TEEC_SUCCESS) - { - goto cleanup_7; - } - -/* printf("TEEC output buffer %s \n", (char*)(sharedMem.buffer + 512)); */ - printf("TEEC output buffer %s \n", (char*)(sharedMem.buffer)); - - strcpy(sharedMem.buffer, - "test global platform client api: zero copy testing"); - len = strlen("test global platform client api: zero copy testing") + 1; - - operation.paramTypes = TEEC_PARAM_TYPES( - TEEC_VALUE_INPUT, - TEEC_MEMREF_PARTIAL_INPUT, - TEEC_MEMREF_PARTIAL_OUTPUT, - TEEC_NONE); - - operation.params[0].value.a = len; - operation.params[0].value.b = TEEC_VALUE_UNDEF; - - - operation.params[1].memref.parent = &sharedMem; - operation.params[1].memref.offset = 0; - operation.params[1].memref.size = len; - - - operation.params[2].memref.parent = &sharedMem; - operation.params[2].memref.offset = 512; - operation.params[2].memref.size = len; - - result = TEEC_InvokeCommand( - &session, - OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, - &operation, - NULL); - if (result != TEEC_SUCCESS) - { - goto cleanup_7; - } - - printf("TEEC output buffer %s \n", (char*)(sharedMem.buffer + 512)); - - - operation.paramTypes = TEEC_PARAM_TYPES( - TEEC_VALUE_INPUT, - TEEC_MEMREF_PARTIAL_INPUT, - TEEC_MEMREF_PARTIAL_OUTPUT, - TEEC_NONE); - - strcpy(testData, "test global platform client api: non-zero copy"); - len = strlen("test global platform client api: non-zero copy") + 1; - - operation.params[0].value.a = len; - operation.params[0].value.b = TEEC_VALUE_UNDEF; - - - operation.params[1].memref.parent = &nonZeroCopysharedMem; - operation.params[1].memref.offset = 0; - operation.params[1].memref.size = len; - - - operation.params[2].memref.parent = &nonZeroCopysharedMem; - operation.params[2].memref.offset = 128; - operation.params[2].memref.size = len; - - result = TEEC_InvokeCommand( - &session, - OTZ_ECHO_CMD_ID_SEND_CMD, - &operation, - NULL); - if (result != TEEC_SUCCESS) - { - goto cleanup_7; - } - - printf("TEEC output buffer %s \n", - (char*)(nonZeroCopysharedMem.buffer + 128)); - - - operation.paramTypes = TEEC_PARAM_TYPES( - TEEC_VALUE_INPUT, - TEEC_MEMREF_TEMP_INPUT, - TEEC_MEMREF_TEMP_OUTPUT, - TEEC_NONE); - - strcpy(testData, - "test global platform client api: testing temp memory reference"); - len = strlen( - "test global platform client api: testing temp memory reference") + 1; - - operation.params[0].value.a = len; - operation.params[0].value.b = TEEC_VALUE_UNDEF; - - - operation.params[1].tmpref.buffer = testData; - operation.params[1].tmpref.size = len; - - - operation.params[2].tmpref.buffer = testData + 128; - operation.params[2].tmpref.size = len; - - - result = TEEC_InvokeCommand( - &session, - OTZ_ECHO_CMD_ID_SEND_CMD, - &operation, - NULL); - if (result != TEEC_SUCCESS) - { - goto cleanup_7; - } + strcpy((char*)sharedMem.buffer, + "test global platform client api: zero copy testing - inout"); + len = strlen( + "test global platform client api: zero copy testing - inout") + 1; + + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_PARTIAL_INOUT, + /* TEEC_MEMREF_PARTIAL_OUTPUT, */ + TEEC_NONE, + TEEC_NONE); + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].memref.parent = &sharedMem; + operation.params[1].memref.offset = 0; + operation.params[1].memref.size = len; + + /* + operation.params[2].memref.parent = &sharedMem; + operation.params[2].memref.offset = 512; + operation.params[2].memref.size = len; + */ + + result = TEEC_InvokeCommand( + &session, + OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_7; + } + + /* printf("TEEC output buffer %s \n", (char*)(sharedMem.buffer + 512)); */ + printf("TEEC output buffer %s \n", (char*)(sharedMem.buffer)); + + strcpy((char*)sharedMem.buffer, + "test global platform client api: zero copy testing"); + len = strlen("test global platform client api: zero copy testing") + 1; + + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_PARTIAL_INPUT, + TEEC_MEMREF_PARTIAL_OUTPUT, + TEEC_NONE); + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].memref.parent = &sharedMem; + operation.params[1].memref.offset = 0; + operation.params[1].memref.size = len; + + + operation.params[2].memref.parent = &sharedMem; + operation.params[2].memref.offset = 512; + operation.params[2].memref.size = len; + + result = TEEC_InvokeCommand( + &session, + OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_7; + } + + printf("TEEC output buffer %s \n", (char*)(sharedMem.buffer + 512)); + + + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_PARTIAL_INPUT, + TEEC_MEMREF_PARTIAL_OUTPUT, + TEEC_NONE); + + strcpy(testData, "test global platform client api: non-zero copy"); + len = strlen("test global platform client api: non-zero copy") + 1; + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].memref.parent = &nonZeroCopysharedMem; + operation.params[1].memref.offset = 0; + operation.params[1].memref.size = len; + + + operation.params[2].memref.parent = &nonZeroCopysharedMem; + operation.params[2].memref.offset = 128; + operation.params[2].memref.size = len; + + result = TEEC_InvokeCommand( + &session, + OTZ_ECHO_CMD_ID_SEND_CMD, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_7; + } + + printf("TEEC output buffer %s \n", + (char*)(nonZeroCopysharedMem.buffer + 128)); - printf("TEEC output buffer %s \n", (char*)(testData + 128)); + + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_TEMP_INPUT, + TEEC_MEMREF_TEMP_OUTPUT, + TEEC_NONE); + + strcpy(testData, + "test global platform client api: testing temp memory reference"); + len = strlen( + "test global platform client api: testing temp memory reference") + 1; + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].tmpref.buffer = testData; + operation.params[1].tmpref.size = len; + + + operation.params[2].tmpref.buffer = testData + 128; + operation.params[2].tmpref.size = len; + + + result = TEEC_InvokeCommand( + &session, + OTZ_ECHO_CMD_ID_SEND_CMD, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_7; + } + + printf("TEEC output buffer %s \n", (char*)(testData + 128)); #endif cleanup_7: - TEEC_ReleaseSharedMemory(&sharedMem2); + TEEC_ReleaseSharedMemory(&sharedMem2); cleanup_6: - TEEC_ReleaseSharedMemory(&sharedMem1); + TEEC_ReleaseSharedMemory(&sharedMem1); cleanup_5: - TEEC_ReleaseSharedMemory(&sharedMem); + TEEC_ReleaseSharedMemory(&sharedMem); +cleanup_4: + TEEC_ReleaseSharedMemory(&nonZeroCopysharedMem); +cleanup_3: + TEEC_CloseSession(&session); +cleanup_2: + TEEC_FinalizeContext(&context); +cleanup_1: + return 0; +} + + +/** + * @brief Function to compute checksum based on input file + * + * @param file + * @return + */ +int perform_tee_md5( FILE*file ) +{ + TEEC_Context context; + TEEC_Session session; + TEEC_Operation operation; + TEEC_SharedMemory sharedMem1; + TEEC_Result result; + TEEC_UUID svc_id = OTZ_SVC_ECHO; + int i; + + uint32_t len; + + svc_id = OTZ_SVC_MD5; + result = TEEC_InitializeContext( + NULL, + &context); + + if(result != TEEC_SUCCESS) { + goto cleanup_1; + } + + result = TEEC_OpenSession( + &context, + &session, + &svc_id, + TEEC_LOGIN_PUBLIC, + NULL, + NULL, + NULL); + + if(result != TEEC_SUCCESS) { + goto cleanup_2; + } + + printf("session id 0x%x\n", session.session_id); + + sharedMem1.size = 1024; + sharedMem1.flags = TEEC_MEM_INPUT | TEEC_MEM_OUTPUT ; + + result = TEEC_AllocateSharedMemory( + &context, + &sharedMem1); + + if(result != TEEC_SUCCESS) { + goto cleanup_3; + } + + memset(sharedMem1.buffer,0,1024); + while ((len = fread (sharedMem1.buffer, 1, 1024, file))) + { + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_WHOLE, + TEEC_NONE, + TEEC_NONE); + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].memref.parent = &sharedMem1; + operation.params[1].memref.offset = 0; + operation.params[1].memref.size = 0; + + result = TEEC_InvokeCommand( + &session, + OTZ_MD5_CMD_ID_PROVIDE_FILENAME, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_4; + } + } + + operation.paramTypes = TEEC_PARAM_TYPES( + TEEC_VALUE_INPUT, + TEEC_MEMREF_WHOLE, + TEEC_NONE, + TEEC_NONE); + + operation.params[0].value.a = len; + operation.params[0].value.b = TEEC_VALUE_UNDEF; + + + operation.params[1].memref.parent = &sharedMem1; + operation.params[1].memref.offset = 0; + operation.params[1].memref.size = 0; + + + result = TEEC_InvokeCommand( + &session, + OTZ_MD5_CMD_ID_RETURN_CHKSUM, + &operation, + NULL); + if (result != TEEC_SUCCESS) + { + goto cleanup_4; + } + + printf ("In normal world MD5 output = "); + for (i = 0; i < 16; i++) + { + printf ("%02x", (unsigned int) sharedMem1.buffer[i]); + } + printf ("\n"); + cleanup_4: - TEEC_ReleaseSharedMemory(&nonZeroCopysharedMem); + TEEC_ReleaseSharedMemory(&sharedMem1); cleanup_3: - TEEC_CloseSession(&session); + TEEC_CloseSession(&session); cleanup_2: - TEEC_FinalizeContext(&context); + TEEC_FinalizeContext(&context); cleanup_1: - return 0; + return 0; } + +/** + * @brief Sample application to show the implementation of Global Platform Client + * API specification. + * + * @return + */ +int main(int argc, char*argv[]) +{ + char filename[30]; + int choice; + FILE * file = NULL; + while(1) + { + printf("Menu \n"); + printf("1. perform echo service \n"); + printf("2. perform md5 service \n"); + printf("3. exit \n"); + printf("Enter your choice "); + scanf("%d",&choice); + switch(choice) + { + case 1 : + printf("Performing echo service \n"); + perform_tee_echo(); + break; + case 2 : + printf("Performing md5, please enter filename(max length should be %d chars) \n",( FILENAME_LENGTH - 1 ) ); + scanf("%s",filename); + file = fopen(filename,"rb"); + if ( file!=NULL ) + { + perform_tee_md5(file); + }else + { + printf("%s cannot be opened \n",filename); + } + break; + case 3 : + goto end; + break; + default : + printf("Invalid choice \n"); + break; + } + fflush(stdin); + } +end : + return 0; +} + +#undef FILENAME + Index: ns_client_apps/otzapp.c =================================================================== --- ns_client_apps/otzapp.c.orig 2012-08-05 23:59:52.840031332 +0530 +++ ns_client_apps/otzapp.c 2012-08-06 10:02:10.444987747 +0530 @@ -18,6 +18,11 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * * Linux trustzone example application. */ @@ -29,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -39,21 +45,28 @@ static const char* otz_service_errorlist[] = { - "Service Success", - "Service Pending", - "Service Interrupted", - "Service Error", - "Service - Invalid Argument", - "Service -Invalid Address", - "Service No Support", - "Service No Memory", + "Service Success", + "Service Pending", + "Service Interrupted", + "Service Error", + "Service - Invalid Argument", + "Service -Invalid Address", + "Service No Support", + "Service No Memory", }; char* otz_strerror(int index) { - return (char*)otz_service_errorlist[index]; + return (char*)otz_service_errorlist[index]; } +#define READ_BYTES_COUNT 200 // FIXME: If we try to read more number of bytes +// at a time, we observe unexpected behaviour. For further +// analysis, enable debug logs in otz_client_main.c +// (set ENABLE_DEBUG_LOGS to 1). +#define FILENAME_LENGTH 256 + + /** * @brief * @@ -61,287 +74,287 @@ */ int perform_echo() { - echo_data_t echo_data; - otz_device_t device_otz; - otz_session_t session_otz; - otz_operation_t operation_otz; - otz_return_t ret=0, service_ret; - otz_shared_mem_t shared_mem; - void *alloc_buf, *alloc_out_buf; - unsigned int out_data_len; - char *out_data; + echo_data_t echo_data; + otz_device_t device_otz; + otz_session_t session_otz; + otz_operation_t operation_otz; + otz_return_t ret=0, service_ret; + otz_shared_mem_t shared_mem; + void *alloc_buf, *alloc_out_buf; + unsigned int out_data_len; + char *out_data; #if 0 - static const otz_uuid_t defUUID = - { - 0x79B77788, 0x9789, 0x4A7A, - { - 0xA2, 0xBE, 0xB6, 0x01, 0x55, 0xEE, 0xF5, 0xF3 - } - }; + static const otz_uuid_t defUUID = + { + 0x79B77788, 0x9789, 0x4A7A, + { + 0xA2, 0xBE, 0xB6, 0x01, 0x55, 0xEE, 0xF5, 0xF3 + } + }; #endif - device_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); - if (ret != OTZ_SUCCESS){ - perror("device open failed\n"); - return 0; - } - - printf("fd :%d\n",device_otz.fd); - - session_otz.ui_state = OTZ_STATE_UNDEFINED; - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - - ret = otz_operation_prepare_open(&device_otz, OTZ_SVC_ECHO, NULL, NULL, - &session_otz, &operation_otz); - if (ret == OTZ_SUCCESS){ - /*Implement encode fn using OTZ_API for encoding messages*/ - } - else { - perror("session open prepare failed\n"); - goto close_device; - } - - /* Call otz_operation_perform to open session */ - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS){ - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("session open failed\n"); - session_otz.ui_state = OTZ_STATE_UNDEFINED; - operation_otz.ui_state = OTZ_STATE_INVALID; - } - otz_operation_release(&operation_otz); - if(ret != OTZ_SUCCESS){ - goto close_device; - } - - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_invoke(&session_otz, OTZ_ECHO_CMD_ID_SEND_CMD, - NULL, &operation_otz); - if (ret != OTZ_SUCCESS) { - perror("command prepare failed\n"); - goto close_session; - } - strcpy(echo_data.data, "test data abcdefgh"); - echo_data.len = strlen(echo_data.data) + 1; - - printf("input data %s\n", echo_data.data); - - otz_encode_uint32(&operation_otz, (void*)&echo_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - otz_encode_array(&operation_otz, echo_data.data, echo_data.len, - OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - otz_encode_array(&operation_otz, echo_data.response, echo_data.len, - OTZ_PARAM_OUT); - - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation perform failed \n"); - - otz_operation_release(&operation_otz); - goto close_session; - } - out_data = otz_decode_array_space(&operation_otz, &out_data_len); - if(operation_otz.enc_dec.enc_error_state == OTZ_SUCCESS) { - printf("out data = %s and out data len 0x%x\n", - echo_data.response , - out_data_len); - } - else { - perror("decode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - otz_operation_release(&operation_otz); - - shared_mem.ui_length = 1024; - shared_mem.ui_flags = OTZ_MEM_SERVICE_RW; - ret = otz_shared_memory_allocate(&session_otz, &shared_mem); - if(ret != OTZ_SUCCESS) { - perror("shared memory allocation failed\n"); - goto close_session; - } - - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - - ret = otz_operation_prepare_invoke(&session_otz, - OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, - NULL, &operation_otz); - if (ret != OTZ_SUCCESS) { - perror("command prepare failed\n"); - goto close_session; - } - - strcpy(shared_mem.p_block, "test_shared_buffer"); - echo_data.len = strlen("test_shared_buffer") + 1; - - otz_encode_uint32(&operation_otz, (void*)&echo_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - otz_encode_memory_reference(&operation_otz, &shared_mem, - 0, echo_data.len, OTZ_MEM_SERVICE_RO, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - otz_encode_memory_reference(&operation_otz, &shared_mem, - 512, echo_data.len, OTZ_MEM_SERVICE_WO, OTZ_PARAM_OUT); - - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n", otz_strerror(service_ret)); - else - perror("operation perform failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - out_data = otz_decode_array_space(&operation_otz, &out_data_len); - if(operation_otz.enc_dec.enc_error_state == OTZ_SUCCESS) { - printf("shared res buf addr %p, out data addr %p and value \ -%s and out data len 0x%x\n", (shared_mem.p_block + 512), - out_data, (char*)shared_mem.p_block, out_data_len); - } - else { - perror("decode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - otz_operation_release(&operation_otz); - - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - - ret = otz_operation_prepare_invoke(&session_otz, - OTZ_ECHO_CMD_ID_SEND_CMD_ARRAY_SPACE, - NULL, &operation_otz); - if (ret != OTZ_SUCCESS) { - perror("command prepare failed\n"); - goto close_session; - } - - echo_data.len = strlen("test_array_space_buffer") + 1; - - otz_encode_uint32(&operation_otz, (void*)&echo_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - alloc_buf = otz_encode_array_space(&operation_otz, - echo_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - alloc_out_buf = otz_encode_array_space(&operation_otz, - echo_data.len, OTZ_PARAM_OUT); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - - strcpy(alloc_buf, "test_array_space_buffer"); - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation perform failed \n"); - - otz_operation_release(&operation_otz); - goto close_session; - } - - - printf("next decoder data type 0x%x\n", - otz_decode_get_type(&operation_otz)); - out_data = otz_decode_array_space(&operation_otz, &out_data_len); - if(operation_otz.enc_dec.enc_error_state == OTZ_SUCCESS) { - printf("res buf addr %p, out data addr %p and value \ -%s and out data len 0x%x\n", alloc_out_buf, - out_data, (char*)alloc_out_buf, out_data_len); - - printf("next decoder data type 0x%x\n", - otz_decode_get_type(&operation_otz)); - } - else { - perror("decode failed \n"); - otz_operation_release(&operation_otz); - goto close_session; - } - otz_operation_release(&operation_otz); - otz_shared_memory_release(&shared_mem); + device_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); + if (ret != OTZ_SUCCESS){ + perror("device open failed\n"); + return 0; + } + + printf("fd :%d\n",device_otz.fd); + + session_otz.ui_state = OTZ_STATE_UNDEFINED; + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + + ret = otz_operation_prepare_open(&device_otz, OTZ_SVC_ECHO, NULL, NULL, + &session_otz, &operation_otz); + if (ret == OTZ_SUCCESS){ + /*Implement encode fn using OTZ_API for encoding messages*/ + } + else { + perror("session open prepare failed\n"); + goto close_device; + } + + /* Call otz_operation_perform to open session */ + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS){ + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("session open failed\n"); + session_otz.ui_state = OTZ_STATE_UNDEFINED; + operation_otz.ui_state = OTZ_STATE_INVALID; + } + otz_operation_release(&operation_otz); + if(ret != OTZ_SUCCESS){ + goto close_device; + } + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_invoke(&session_otz, OTZ_ECHO_CMD_ID_SEND_CMD, + NULL, &operation_otz); + if (ret != OTZ_SUCCESS) { + perror("command prepare failed\n"); + goto close_session; + } + strcpy((char*)echo_data.data, "test data abcdefgh"); + echo_data.len = strlen((char*)echo_data.data) + 1; + + printf("input data %s\n", echo_data.data); + + otz_encode_uint32(&operation_otz, (void*)&echo_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + otz_encode_array(&operation_otz, echo_data.data, echo_data.len, + OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + otz_encode_array(&operation_otz, echo_data.response, echo_data.len, + OTZ_PARAM_OUT); + + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation perform failed \n"); + + otz_operation_release(&operation_otz); + goto close_session; + } + out_data = otz_decode_array_space(&operation_otz, &out_data_len); + if(operation_otz.enc_dec.enc_error_state == OTZ_SUCCESS) { + printf("out data = %s and out data len 0x%x\n", + echo_data.response , + out_data_len); + } + else { + perror("decode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + otz_operation_release(&operation_otz); + + shared_mem.ui_length = 1024; + shared_mem.ui_flags = OTZ_MEM_SERVICE_RW; + ret = otz_shared_memory_allocate(&session_otz, &shared_mem); + if(ret != OTZ_SUCCESS) { + perror("shared memory allocation failed\n"); + goto close_session; + } + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + + ret = otz_operation_prepare_invoke(&session_otz, + OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF, + NULL, &operation_otz); + if (ret != OTZ_SUCCESS) { + perror("command prepare failed\n"); + goto close_session; + } + + strcpy(shared_mem.p_block, "test_shared_buffer"); + echo_data.len = strlen("test_shared_buffer") + 1; + + otz_encode_uint32(&operation_otz, (void*)&echo_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + otz_encode_memory_reference(&operation_otz, &shared_mem, + 0, echo_data.len, OTZ_MEM_SERVICE_RO, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + otz_encode_memory_reference(&operation_otz, &shared_mem, + 512, echo_data.len, OTZ_MEM_SERVICE_WO, OTZ_PARAM_OUT); + + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n", otz_strerror(service_ret)); + else + perror("operation perform failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + out_data = otz_decode_array_space(&operation_otz, &out_data_len); + if(operation_otz.enc_dec.enc_error_state == OTZ_SUCCESS) { + printf("shared res buf addr %p, out data addr %p and value \ + %s and out data len 0x%x\n", (shared_mem.p_block + 512), + out_data, (char*)shared_mem.p_block, out_data_len); + } + else { + perror("decode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + otz_operation_release(&operation_otz); + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + + ret = otz_operation_prepare_invoke(&session_otz, + OTZ_ECHO_CMD_ID_SEND_CMD_ARRAY_SPACE, + NULL, &operation_otz); + if (ret != OTZ_SUCCESS) { + perror("command prepare failed\n"); + goto close_session; + } + + echo_data.len = strlen("test_array_space_buffer") + 1; + + otz_encode_uint32(&operation_otz, (void*)&echo_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + alloc_buf = otz_encode_array_space(&operation_otz, + echo_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + alloc_out_buf = otz_encode_array_space(&operation_otz, + echo_data.len, OTZ_PARAM_OUT); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + + strcpy(alloc_buf, "test_array_space_buffer"); + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation perform failed \n"); + + otz_operation_release(&operation_otz); + goto close_session; + } + + + printf("next decoder data type 0x%x\n", + otz_decode_get_type(&operation_otz)); + out_data = otz_decode_array_space(&operation_otz, &out_data_len); + if(operation_otz.enc_dec.enc_error_state == OTZ_SUCCESS) { + printf("res buf addr %p, out data addr %p and value \ + %s and out data len 0x%x\n", alloc_out_buf, + out_data, (char*)alloc_out_buf, out_data_len); + + printf("next decoder data type 0x%x\n", + otz_decode_get_type(&operation_otz)); + } + else { + perror("decode failed \n"); + otz_operation_release(&operation_otz); + goto close_session; + } + otz_operation_release(&operation_otz); + otz_shared_memory_release(&shared_mem); close_session: - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_close(&session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) - { - perror("operation prepare close failed \n"); - } - - ret = otz_operation_perform(&operation_otz, &service_ret); - if(ret != OTZ_SUCCESS) - { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation close failed \n"); - operation_otz.ui_state = OTZ_STATE_INVALID; - } - otz_operation_release(&operation_otz); - /* Cannot perform decode after close operation */ + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_close(&session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) + { + perror("operation prepare close failed \n"); + } + + ret = otz_operation_perform(&operation_otz, &service_ret); + if(ret != OTZ_SUCCESS) + { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation close failed \n"); + operation_otz.ui_state = OTZ_STATE_INVALID; + } + otz_operation_release(&operation_otz); + /* Cannot perform decode after close operation */ close_device: - ret = otz_device_close(&device_otz); - if (ret != OTZ_SUCCESS){ - printf("device close failed\n"); - return 0; - } - else{ - printf("device close successful\n"); - } + ret = otz_device_close(&device_otz); + if (ret != OTZ_SUCCESS){ + printf("device close failed\n"); + return 0; + } + else{ + printf("device close successful\n"); + } - return 0; + return 0; } /** @@ -351,111 +364,111 @@ **/ int test_otz_mutex() { - otz_mutex_test_data_t otz_mutex_test_data; - unsigned char *out_data, input_buf_len = 10; - char *input_buf = "1023456789"; - unsigned char output_buf[10]; - int output_buf_len = 10; - otz_device_t device_otz; - otz_session_t session_otz; - otz_operation_t operation_otz; - otz_return_t ret=0, service_ret; - - device_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); - if (ret != OTZ_SUCCESS){ - perror("device open failed\n"); - return 0; - } - session_otz.ui_state = OTZ_STATE_UNDEFINED; - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_open(&device_otz,OTZ_SVC_MUTEX_TEST, NULL, NULL, - &session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) { - goto end_func; - } - /* Call tz_operation_perform to open session */ - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS){ - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("session open failed\n"); - session_otz.ui_state = OTZ_STATE_UNDEFINED; - } - otz_operation_release(&operation_otz); - if(ret != OTZ_SUCCESS){ - goto end_func; - } - - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_invoke(&session_otz, - OTZ_MUTEX_TEST_CMD_ID_TEST,NULL,&operation_otz); - if (ret != OTZ_SUCCESS) { - goto handle_error_2; - } - memcpy(otz_mutex_test_data.data,input_buf,input_buf_len); - otz_mutex_test_data.len = input_buf_len; - otz_encode_uint32(&operation_otz, (void*)&otz_mutex_test_data.len, - OTZ_PARAM_IN); - - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - - otz_encode_array(&operation_otz, otz_mutex_test_data.data, - otz_mutex_test_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - - otz_encode_array(&operation_otz, otz_mutex_test_data.response, - otz_mutex_test_data.len, OTZ_PARAM_OUT); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - goto handle_error_1; - } - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("session open failed\n"); - goto handle_error_1; - } - out_data = otz_decode_array_space(&operation_otz,(uint32_t *)&output_buf_len); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("decode error\n"); - goto handle_error_1; - } else { - memcpy(output_buf,out_data,output_buf_len); - } + otz_mutex_test_data_t otz_mutex_test_data; + unsigned char *out_data, input_buf_len = 10; + char *input_buf = "1023456789"; + unsigned char output_buf[10]; + int output_buf_len = 10; + otz_device_t device_otz; + otz_session_t session_otz; + otz_operation_t operation_otz; + otz_return_t ret=0, service_ret; + + device_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); + if (ret != OTZ_SUCCESS){ + perror("device open failed\n"); + return 0; + } + session_otz.ui_state = OTZ_STATE_UNDEFINED; + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_open(&device_otz,OTZ_SVC_MUTEX_TEST, NULL, NULL, + &session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + goto end_func; + } + /* Call tz_operation_perform to open session */ + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS){ + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("session open failed\n"); + session_otz.ui_state = OTZ_STATE_UNDEFINED; + } + otz_operation_release(&operation_otz); + if(ret != OTZ_SUCCESS){ + goto end_func; + } + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_invoke(&session_otz, + OTZ_MUTEX_TEST_CMD_ID_TEST,NULL,&operation_otz); + if (ret != OTZ_SUCCESS) { + goto handle_error_2; + } + memcpy(otz_mutex_test_data.data,input_buf,input_buf_len); + otz_mutex_test_data.len = input_buf_len; + otz_encode_uint32(&operation_otz, (void*)&otz_mutex_test_data.len, + OTZ_PARAM_IN); + + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + + otz_encode_array(&operation_otz, otz_mutex_test_data.data, + otz_mutex_test_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + + otz_encode_array(&operation_otz, otz_mutex_test_data.response, + otz_mutex_test_data.len, OTZ_PARAM_OUT); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + goto handle_error_1; + } + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("session open failed\n"); + goto handle_error_1; + } + out_data = otz_decode_array_space(&operation_otz,(uint32_t *)&output_buf_len); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("decode error\n"); + goto handle_error_1; + } else { + memcpy(output_buf,out_data,output_buf_len); + } handle_error_1: - otz_operation_release(&operation_otz); + otz_operation_release(&operation_otz); handle_error_2: - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_close(&session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) { - perror("operation prepare close failed \n"); - } - ret = otz_operation_perform(&operation_otz, &service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation close failed \n"); - operation_otz.ui_state = OTZ_STATE_INVALID; - } - otz_operation_release(&operation_otz); + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_close(&session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + perror("operation prepare close failed \n"); + } + ret = otz_operation_perform(&operation_otz, &service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation close failed \n"); + operation_otz.ui_state = OTZ_STATE_INVALID; + } + otz_operation_release(&operation_otz); end_func: - ret = otz_device_close(&device_otz); - if (ret != OTZ_SUCCESS){ - printf("device close failed\n"); - } else{ - printf("device close successful\n"); - } - return(0); + ret = otz_device_close(&device_otz); + if (ret != OTZ_SUCCESS){ + printf("device close failed\n"); + } else{ + printf("device close successful\n"); + } + return(0); } @@ -477,110 +490,264 @@ **/ int perform_crypto(unsigned char *input_buf,int input_buf_len,int cmd_type, - unsigned char *output_buf, int *output_buf_len) + unsigned char *output_buf, int *output_buf_len) +{ + crypto_data_t crypt_data; + unsigned char *out_data; + otz_device_t device_otz; + otz_session_t session_otz; + otz_operation_t operation_otz; + otz_return_t ret=0, service_ret; + + device_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); + if (ret != OTZ_SUCCESS){ + perror("device open failed\n"); + return 0; + } + session_otz.ui_state = OTZ_STATE_UNDEFINED; + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_open(&device_otz,OTZ_SVC_CRYPT, NULL, NULL, + &session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + goto end_func; + } + /* Call otz_operation_perform to open session */ + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS){ + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(ret)); + else + perror("session open failed\n"); + session_otz.ui_state = OTZ_STATE_UNDEFINED; + } + otz_operation_release(&operation_otz); + if(ret != OTZ_SUCCESS){ + goto end_func; + } + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_invoke(&session_otz,cmd_type,NULL,&operation_otz); + if (ret != OTZ_SUCCESS) { + goto handle_error_2; + } + memcpy(crypt_data.data,input_buf,input_buf_len); + crypt_data.len = input_buf_len; + otz_encode_uint32(&operation_otz, (void*)&crypt_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + otz_encode_array(&operation_otz, crypt_data.data, crypt_data.len, + OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + otz_encode_array(&operation_otz, crypt_data.response, crypt_data.len, + OTZ_PARAM_OUT); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation perform failed \n"); + + goto handle_error_1; + } + out_data = otz_decode_array_space(&operation_otz, + (unsigned int*)output_buf_len); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("decode error\n"); + goto handle_error_1; + } else { + memcpy(output_buf,out_data,*output_buf_len); + } +handle_error_1: + otz_operation_release(&operation_otz); +handle_error_2: + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_close(&session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + perror("operation prepare close failed \n"); + } + ret = otz_operation_perform(&operation_otz, &service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation close failed \n"); + operation_otz.ui_state = OTZ_STATE_INVALID; + } + otz_operation_release(&operation_otz); +end_func: + ret =otz_device_close(&device_otz); + if (ret != OTZ_SUCCESS){ + printf("device close failed\n"); + } else{ + printf("device close successful\n"); + } + return(0); +} + + +/** + * @brief This function computes md5 checksum based on the input file + * @param file + * @return + * @Description : The function that reads a file and sends data in + * iteration of 200 bytes. At the end it computes the md5 checksum + **/ + +int perform_md5( FILE *file ) { - crypto_data_t crypt_data; - unsigned char *out_data; - otz_device_t device_otz; - otz_session_t session_otz; - otz_operation_t operation_otz; - otz_return_t ret=0, service_ret; - - device_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); - if (ret != OTZ_SUCCESS){ - perror("device open failed\n"); - return 0; - } - session_otz.ui_state = OTZ_STATE_UNDEFINED; - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_open(&device_otz,OTZ_SVC_CRYPT, NULL, NULL, - &session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) { - goto end_func; - } - /* Call otz_operation_perform to open session */ - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS){ - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(ret)); - else - perror("session open failed\n"); - session_otz.ui_state = OTZ_STATE_UNDEFINED; - } - otz_operation_release(&operation_otz); - if(ret != OTZ_SUCCESS){ - goto end_func; - } - - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_invoke(&session_otz,cmd_type,NULL,&operation_otz); - if (ret != OTZ_SUCCESS) { - goto handle_error_2; - } - memcpy(crypt_data.data,input_buf,input_buf_len); - crypt_data.len = input_buf_len; - otz_encode_uint32(&operation_otz, (void*)&crypt_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - otz_encode_array(&operation_otz, crypt_data.data, crypt_data.len, - OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - otz_encode_array(&operation_otz, crypt_data.response, crypt_data.len, - OTZ_PARAM_OUT); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation perform failed \n"); - - goto handle_error_1; - } - out_data = otz_decode_array_space(&operation_otz, - (unsigned int*)output_buf_len); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("decode error\n"); - goto handle_error_1; - } else { - memcpy(output_buf,out_data,*output_buf_len); - } + unsigned char output_buf[DATA_BUF_LEN]; + int input_buf_len = 0; + md5_data_t md5_data; + unsigned char *out_data; + otz_device_t device_otz; + otz_session_t session_otz; + otz_operation_t operation_otz; + otz_return_t ret=0, service_ret; + int output_buf_len; + + device_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); + if (ret != OTZ_SUCCESS){ + perror("device open failed\n"); + return 0; + } + session_otz.ui_state = OTZ_STATE_UNDEFINED; + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_open(&device_otz,OTZ_SVC_MD5, NULL, NULL, + &session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + goto end_func; + } + /* Call otz_operation_perform to open session */ + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS){ + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(ret)); + else + perror("session open failed\n"); + session_otz.ui_state = OTZ_STATE_UNDEFINED; + } + otz_operation_release(&operation_otz); + if(ret != OTZ_SUCCESS){ + goto end_func; + } + while((input_buf_len = fread (md5_data.data, 1, READ_BYTES_COUNT, file))!=0) + { + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_invoke(&session_otz, + OTZ_MD5_CMD_ID_PROVIDE_FILENAME,NULL,&operation_otz); + if (ret != OTZ_SUCCESS) { + goto handle_error_2; + } + + md5_data.len = input_buf_len; + otz_encode_uint32(&operation_otz, (void*)&md5_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + otz_encode_array(&operation_otz, md5_data.data, md5_data.len, + OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) + { + perror("encode failed \n"); + goto handle_error_1; + } + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation perform failed \n"); + + goto handle_error_1; + } + otz_operation_release(&operation_otz); + memset(md5_data.data,0,100); + input_buf_len = 0; + md5_data.len = 0; + } + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_invoke(&session_otz,OTZ_MD5_CMD_ID_RETURN_CHKSUM, + NULL,&operation_otz); + if (ret != OTZ_SUCCESS) { + goto handle_error_2; + } + + memset(md5_data.data,0,DATA_BUF_LEN); + md5_data.len = DATA_BUF_LEN; + otz_encode_array(&operation_otz, md5_data.response, md5_data.len, + OTZ_PARAM_OUT); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation perform failed \n"); + + goto handle_error_1; + } + out_data = (unsigned char*)otz_decode_array_space(&operation_otz, + (unsigned int*)(&output_buf_len)); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("decode error\n"); + goto handle_error_1; + } + else + { + int i; + memcpy(output_buf,out_data,output_buf_len); + printf("In normal world The checksum is "); + for (i = 0; i < 16; i++) + { + printf("%02x",(unsigned int)output_buf[i]); + } + printf("\n"); + } + handle_error_1: - otz_operation_release(&operation_otz); + otz_operation_release(&operation_otz); handle_error_2: - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_close(&session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) { - perror("operation prepare close failed \n"); - } - ret = otz_operation_perform(&operation_otz, &service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation close failed \n"); - operation_otz.ui_state = OTZ_STATE_INVALID; - } - otz_operation_release(&operation_otz); + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_close(&session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + perror("operation prepare close failed \n"); + } + ret = otz_operation_perform(&operation_otz, &service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation close failed \n"); + operation_otz.ui_state = OTZ_STATE_INVALID; + } + otz_operation_release(&operation_otz); end_func: - ret =otz_device_close(&device_otz); - if (ret != OTZ_SUCCESS){ - printf("device close failed\n"); - } else{ - printf("device close successful\n"); - } - return(0); + ret =otz_device_close(&device_otz); + if (ret != OTZ_SUCCESS){ + printf("device close failed\n"); + } else{ + printf("device close successful\n"); + } + return(0); } + #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT /** * @brief The function to test notification from secure world. @@ -588,157 +755,200 @@ **/ int test_notification() { - echo_data_t echo_data; - otz_device_t device_otz; - otz_session_t session_otz; - otz_operation_t operation_otz; - otz_return_t ret=0, service_ret; - unsigned int out_data_len; - char *out_data; - - - device_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); - if (ret != OTZ_SUCCESS){ - perror("device open failed\n"); - return 0; - } - session_otz.ui_state = OTZ_STATE_UNDEFINED; - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_open(&device_otz, OTZ_SVC_ECHO, NULL, NULL, - &session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) { - goto end_func; - } - /* Call tz_operation_perform to open session */ - ret = otz_operation_perform(&operation_otz ,&service_ret); - if(ret != OTZ_SUCCESS){ - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("session open failed\n"); - session_otz.ui_state = OTZ_STATE_UNDEFINED; - } - otz_operation_release(&operation_otz); - if(ret != OTZ_SUCCESS){ - goto end_func; - } - - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_invoke(&session_otz, - OTZ_ECHO_CMD_ID_TEST_ASYNC_SEND_CMD, NULL,&operation_otz); - if (ret != OTZ_SUCCESS) { - goto handle_error_2; - } - memcpy(echo_data.data,"test notification", strlen("test notification")+1); - echo_data.len = strlen("test notification")+1; - otz_encode_uint32(&operation_otz, (void*)&echo_data.len, - OTZ_PARAM_IN); - - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - - otz_encode_array(&operation_otz, echo_data.data, - echo_data.len, OTZ_PARAM_IN); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("encode failed \n"); - goto handle_error_1; - } - - otz_encode_array(&operation_otz, echo_data.response, - echo_data.len, OTZ_PARAM_OUT); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - goto handle_error_1; - } - ret = otz_operation_perform(&operation_otz, &service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("session open failed\n"); - goto handle_error_1; - } - out_data = otz_decode_array_space(&operation_otz,(uint32_t *)&out_data_len); - if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { - perror("decode error\n"); - goto handle_error_1; - } + echo_data_t echo_data; + otz_device_t device_otz; + otz_session_t session_otz; + otz_operation_t operation_otz; + otz_return_t ret=0, service_ret; + unsigned int out_data_len; + char *out_data; + + + device_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_device_open("/dev/otz_client", (void*)O_RDWR, &device_otz); + if (ret != OTZ_SUCCESS){ + perror("device open failed\n"); + return 0; + } + session_otz.ui_state = OTZ_STATE_UNDEFINED; + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_open(&device_otz, OTZ_SVC_ECHO, NULL, NULL, + &session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + goto end_func; + } + /* Call tz_operation_perform to open session */ + ret = otz_operation_perform(&operation_otz ,&service_ret); + if(ret != OTZ_SUCCESS){ + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("session open failed\n"); + session_otz.ui_state = OTZ_STATE_UNDEFINED; + } + otz_operation_release(&operation_otz); + if(ret != OTZ_SUCCESS){ + goto end_func; + } + + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_invoke(&session_otz, + OTZ_ECHO_CMD_ID_TEST_ASYNC_SEND_CMD, NULL,&operation_otz); + if (ret != OTZ_SUCCESS) { + goto handle_error_2; + } + memcpy(echo_data.data,"test notification", strlen("test notification")+1); + echo_data.len = strlen("test notification")+1; + otz_encode_uint32(&operation_otz, (void*)&echo_data.len, + OTZ_PARAM_IN); + + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + + otz_encode_array(&operation_otz, echo_data.data, + echo_data.len, OTZ_PARAM_IN); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("encode failed \n"); + goto handle_error_1; + } + + otz_encode_array(&operation_otz, echo_data.response, + echo_data.len, OTZ_PARAM_OUT); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + goto handle_error_1; + } + ret = otz_operation_perform(&operation_otz, &service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("session open failed\n"); + goto handle_error_1; + } + out_data = otz_decode_array_space(&operation_otz,(uint32_t *)&out_data_len); + if(operation_otz.enc_dec.enc_error_state != OTZ_SUCCESS) { + perror("decode error\n"); + goto handle_error_1; + } handle_error_1: - otz_operation_release(&operation_otz); + otz_operation_release(&operation_otz); handle_error_2: - operation_otz.ui_state = OTZ_STATE_UNDEFINED; - ret = otz_operation_prepare_close(&session_otz, &operation_otz); - if(ret != OTZ_SUCCESS) { - perror("operation prepare close failed \n"); - } - ret = otz_operation_perform(&operation_otz, &service_ret); - if(ret != OTZ_SUCCESS) { - if(ret == OTZ_ERROR_SERVICE) - printf("%s \n",otz_strerror(service_ret)); - else - perror("operation close failed \n"); - operation_otz.ui_state = OTZ_STATE_INVALID; - } - otz_operation_release(&operation_otz); + operation_otz.ui_state = OTZ_STATE_UNDEFINED; + ret = otz_operation_prepare_close(&session_otz, &operation_otz); + if(ret != OTZ_SUCCESS) { + perror("operation prepare close failed \n"); + } + ret = otz_operation_perform(&operation_otz, &service_ret); + if(ret != OTZ_SUCCESS) { + if(ret == OTZ_ERROR_SERVICE) + printf("%s \n",otz_strerror(service_ret)); + else + perror("operation close failed \n"); + operation_otz.ui_state = OTZ_STATE_INVALID; + } + otz_operation_release(&operation_otz); end_func: - ret = otz_device_close(&device_otz); - if (ret != OTZ_SUCCESS){ - printf("device close failed\n"); - } else{ - printf("device close successful\n"); - } - return(0); + ret = otz_device_close(&device_otz); + if (ret != OTZ_SUCCESS){ + printf("device close failed\n"); + } else{ + printf("device close successful\n"); + } + return(0); } #endif /** - * @brief + * @brief Application demonstrating the use of Trustzone apis and functionality * * @return */ int main() { - char *input_string = "This is a test for encryption/decryption"; - char output_buf[DATA_BUF_LEN]; - - unsigned short input_buf_len=0,output_buf_len=0,loop_cntr=0; + char filename[FILENAME_LENGTH]; + unsigned char output_buf[DATA_BUF_LEN]; + FILE * file = NULL; + char *input_string; + int choice; + unsigned short input_buf_len=0,output_buf_len=1,loop_cntr=0; + while(1) + { + printf("Menu \n"); + printf("1. perform echo service \n"); + printf("2. perform mutex service \n"); + printf("3. perform crypto service \n"); + printf("4. perform md5 service \n"); + printf("5. exit \n"); + printf("Enter your choice "); + fflush(stdin); + scanf("%d",&choice); + switch(choice) + { + case 1 : + printf("Performing echo service \n"); + perform_echo(); + break; + case 2 : + printf("Performing mutex service \n"); + test_otz_mutex(); + break; + case 3 : + input_string = "This is a test for encryption/decryption"; + printf("Performing crypto service \n"); + input_buf_len = strlen(input_string); + printf("Input for encryption is %s \n",input_string); + perform_crypto((unsigned char*)input_string,input_buf_len, + OTZ_CRYPT_CMD_ID_ENCRYPT,(unsigned char*)output_buf, + (int*)&output_buf_len); + printf("Encrypted string is "); + for(loop_cntr=0;loop_cntr 0) { + printf("Now sending the encrypted string for decryption \n"); + input_buf_len = output_buf_len; + perform_crypto((unsigned char*)output_buf,input_buf_len, + OTZ_CRYPT_CMD_ID_DECRYPT,(unsigned char*)output_buf, + (int*)&output_buf_len); + output_buf[output_buf_len] = '\0'; + printf("Decrypted string is %s \n",output_buf); + } + break; + case 4 : + printf("Performing md5, please enter filename(max length should be %d chars) \n",( FILENAME_LENGTH - 1 ) ); + scanf("%s",filename); + if ((file = fopen (filename, "rb")) == NULL) { + printf ("%s can't be opened\n", filename); + } + else + { + perform_md5(file); + } + break; + case 5 : + goto end; + break; + default : + printf("Invalid choice \n"); + break; + } + fflush(stdin); + } - - perform_echo(); - input_buf_len = strlen(input_string); - printf("Input for encryption is %s",input_string); - perform_crypto((unsigned char*)input_string,input_buf_len, - OTZ_CRYPT_CMD_ID_ENCRYPT,(unsigned char*)output_buf, - (int*)&output_buf_len); - printf("Encrypted string is "); - for(loop_cntr=0;loop_cntr 0) { - printf("Now sending the encrypted string for decryption \n"); - input_buf_len = output_buf_len; - perform_crypto((unsigned char*)output_buf,input_buf_len, - OTZ_CRYPT_CMD_ID_DECRYPT,(unsigned char*)output_buf, - (int*)&output_buf_len); - output_buf[output_buf_len] = '\0'; - printf("Decrypted string is %s \n",output_buf); - } - printf("Creating task for testing otz mutexes \n"); - test_otz_mutex(); - printf("Mutex testing finished \n"); +end : #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - printf("Creating task for testing secure kernel notification feature\n"); - test_notification(); - printf("Notification testing finished \n"); + printf("Creating task for testing secure kernel notification feature\n"); + test_notification(); + printf("Notification testing finished \n"); #endif - - return(0); + return(0); } +#undef FILENAME +#undef READ_BYTES_COUNT Index: otz_api/otz_tee_api.c =================================================================== --- otz_api/otz_tee_api.c.orig 2012-08-06 00:09:14.872032083 +0530 +++ otz_api/otz_tee_api.c 2012-08-06 10:02:48.785807797 +0530 @@ -18,6 +18,10 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application * * Trustzone client API implementation. * @@ -40,989 +44,1026 @@ #include #include - +#define ENABLE_DEBUG_LOGS 0 /** -* @brief TEEC error string values -* -*/ + * @brief TEEC error string values + * + */ static const char* TEEC_errorlist[] = { - "The operation succeeded", - "Non-specific cause", - "Access privileges are not sufficient", - "The operation was cancelled", - "Concurrent accesses caused conflict", - "Too much data for the requested operation was passed", - "Input data was of invalid format", - "Input parameters were invalid", - "Operation is not valid in the current state", - "The requested data item is not found", - "The requested operation should exist but is not yet implemented", - "The requested operation is valid but is not supported in this \ -Implementation", - "Expected data was missing", - "System ran out of resources", - "The system is busy working on something else", - "Communication with a remote party failed", - "A security fault was detected", - "The supplied buffer is too short for the generated output", + "The operation succeeded", + "Non-specific cause", + "Access privileges are not sufficient", + "The operation was cancelled", + "Concurrent accesses caused conflict", + "Too much data for the requested operation was passed", + "Input data was of invalid format", + "Input parameters were invalid", + "Operation is not valid in the current state", + "The requested data item is not found", + "The requested operation should exist but is not yet implemented", + "The requested operation is valid but is not supported in this \ + Implementation", + "Expected data was missing", + "System ran out of resources", + "The system is busy working on something else", + "Communication with a remote party failed", + "A security fault was detected", + "The supplied buffer is too short for the generated output", }; /** -* @brief Service error string values -*/ + * @brief Service error string values + */ static const char* TEEC_service_errorlist[] = { - "Service Success", - "Service Pending", - "Service Interrupted", - "Service Error", - "Service - Invalid Argument", - "Service -Invalid Address", - "Service No Support", - "Service No Memory", + "Service Success", + "Service Pending", + "Service Interrupted", + "Service Error", + "Service - Invalid Argument", + "Service -Invalid Address", + "Service No Support", + "Service No Memory", }; /** -* @brief Returns error string. -* -* This function returns the error string value based on error number and -* return origin. -* -* @param error: Error number. -* @param returnOrigin: Origin of the return. -* -* @return char*: Error string value. -* -*/ + * @brief Returns error string. + * + * This function returns the error string value based on error number and + * return origin. + * + * @param error: Error number. + * @param returnOrigin: Origin of the return. + * + * @return char*: Error string value. + * + */ char* TEEC_GetError(int error, int returnOrigin) { - if(returnOrigin == TEEC_ORIGIN_TRUSTED_APP) - return (char*)TEEC_service_errorlist[error]; - else - return (char*)TEEC_errorlist[error]; + if(returnOrigin == TEEC_ORIGIN_TRUSTED_APP) + return (char*)TEEC_service_errorlist[error]; + else + return (char*)TEEC_errorlist[error]; } /** -* @brief Initialize Context -* -* @param name: A zero-terminated string that describes the TEE to connect to. -* If this parameter is set to NULL the Implementation MUST select a default TEE. -* -* @param context: A TEEC_Context structure that MUST be initialized by the -* Implementation. -* -* @return TEEC_Result: -* TEEC_SUCCESS: The initialization was successful. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -*/ + * @brief Initialize Context + * + * @param name: A zero-terminated string that describes the TEE to connect to. + * If this parameter is set to NULL the Implementation MUST select a default TEE. + * + * @param context: A TEEC_Context structure that MUST be initialized by the + * Implementation. + * + * @return TEEC_Result: + * TEEC_SUCCESS: The initialization was successful. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + */ TEEC_Result TEEC_InitializeContext( - const char* name, - TEEC_Context* context) + const char* name, + TEEC_Context* context) { - int ret=0; - char temp_name[256]; + int ret=0; + char temp_name[256]; - if(context == NULL) { - printf("TEEC_InitializeContext : Context is null\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - if(name == NULL) { + if(context == NULL) { + printf("TEEC_InitializeContext : Context is null\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + if(name == NULL) { #ifdef OTZ_DEBUG - printf("%s is assigned as default context\n", - OTZ_CLIENT_FULL_PATH_DEV_NAME ); + printf("%s is assigned as default context\n", + OTZ_CLIENT_FULL_PATH_DEV_NAME ); #endif - strcpy(temp_name, OTZ_CLIENT_FULL_PATH_DEV_NAME); - } - else { - strcpy(temp_name, name); - } - ret = open(temp_name, O_RDWR); - if( ret == -1){ - perror("TEEC_InitializeContext : device open failed\n"); - context->s_errno = errno; - return TEEC_ERROR_GENERIC; - } - else{ - context->fd = ret ; - context->session_count = 0; - context->shared_mem_cnt = 0; - INIT_LIST_HEAD(&context->shared_mem_list); - } + strcpy(temp_name, OTZ_CLIENT_FULL_PATH_DEV_NAME); + } + else { + strcpy(temp_name, name); + } + ret = open(temp_name, O_RDWR); + if( ret == -1){ + perror("TEEC_InitializeContext : device open failed\n"); + context->s_errno = errno; + return TEEC_ERROR_GENERIC; + } + else{ + context->fd = ret ; + context->session_count = 0; + context->shared_mem_cnt = 0; + INIT_LIST_HEAD(&context->shared_mem_list); + } #ifdef OTZ_DEBUG - printf("TEEC_InitializeContext success\n"); + printf("TEEC_InitializeContext success\n"); #endif - return TEEC_SUCCESS; + return TEEC_SUCCESS; } /** -* @brief Finalizes an initialized TEE context. -* -* @param context: An initialized TEEC_Context structure which is to be -* finalized. -*/ + * @brief Finalizes an initialized TEE context. + * + * @param context: An initialized TEEC_Context structure which is to be + * finalized. + */ void TEEC_FinalizeContext(TEEC_Context* context) { - if(!context) - { - return; - } - if(context->session_count != 0) { - printf("warning: pending open sessions %d\n", - context->session_count); - } - - if(context->shared_mem_cnt != 0) { - printf("warning: unreleased shared memory blocks %d\n", - context->shared_mem_cnt); - } - - if( (context->session_count == 0) && (context->shared_mem_cnt == 0)) { - printf("device closed \n"); - close(context->fd); - context->fd = 0; - } + if(!context) + { + return; + } + if(context->session_count != 0) { + printf("warning: pending open sessions %d\n", + context->session_count); + } + + if(context->shared_mem_cnt != 0) { + printf("warning: unreleased shared memory blocks %d\n", + context->shared_mem_cnt); + } + + if( (context->session_count == 0) && (context->shared_mem_cnt == 0)) { + printf("device closed \n"); + close(context->fd); + context->fd = 0; + } - return; + return; } /** -* @brief Allocate a shared memory block. -* -* @param context: Pointer to the context -* @param sharedMem: Pointer to the shared memory -* -* @return TEEC_Result: -* TEEC_SUCCESS: The allocation was successful. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -*/ + * @brief Allocate a shared memory block. + * + * @param context: Pointer to the context + * @param sharedMem: Pointer to the shared memory + * + * @return TEEC_Result: + * TEEC_SUCCESS: The allocation was successful. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + */ TEEC_Result TEEC_AllocateSharedMemory( - TEEC_Context* context, - TEEC_SharedMemory* sharedMem) + TEEC_Context* context, + TEEC_SharedMemory* sharedMem) { - int mmap_flags; + int mmap_flags; - if(context == NULL || sharedMem == NULL ) { - printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - - if((sharedMem->size == 0) || - ((sharedMem->flags != TEEC_MEM_INPUT) && - (sharedMem->flags != TEEC_MEM_OUTPUT) && - (sharedMem->flags != (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)))) { - printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - - sharedMem->buffer = NULL; - - mmap_flags = PROT_READ | PROT_WRITE; - - sharedMem->buffer = mmap(0, sharedMem->size, - mmap_flags , MAP_SHARED, - context->fd, 0); - - if(sharedMem->buffer == MAP_FAILED) { - perror("TEEC_AllocateSharedMemory - mmap failed\n"); - sharedMem->s_errno = errno; - sharedMem->buffer = NULL; - return TEEC_ERROR_OUT_OF_MEMORY; - } - sharedMem->allocated = 1; - sharedMem->context = context; - sharedMem->operation_count = 0; - - INIT_LIST_HEAD(&sharedMem->head_ref); - list_add_tail(&context->shared_mem_list, &sharedMem->head_ref); - context->shared_mem_cnt++; - return TEEC_SUCCESS; + if(context == NULL || sharedMem == NULL ) { + printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + + if((sharedMem->size == 0) || + ((sharedMem->flags != TEEC_MEM_INPUT) && + (sharedMem->flags != TEEC_MEM_OUTPUT) && + (sharedMem->flags != (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)))) { + printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + + sharedMem->buffer = NULL; + + mmap_flags = PROT_READ | PROT_WRITE; + + sharedMem->buffer = mmap(0, sharedMem->size, + mmap_flags , MAP_SHARED, + context->fd, 0); + + if(sharedMem->buffer == MAP_FAILED) { + perror("TEEC_AllocateSharedMemory - mmap failed\n"); + sharedMem->s_errno = errno; + sharedMem->buffer = NULL; + return TEEC_ERROR_OUT_OF_MEMORY; + } + sharedMem->allocated = 1; + sharedMem->context = context; + sharedMem->operation_count = 0; + + INIT_LIST_HEAD(&sharedMem->head_ref); + list_add_tail(&context->shared_mem_list, &sharedMem->head_ref); + context->shared_mem_cnt++; + return TEEC_SUCCESS; } /** -* @brief Register a allocated shared memory block. -* -* @param context: Pointer to the context -* @param sharedMem: Pointer to the shared memory -* -* @return TEEC_Result: -* TEEC_SUCCESS: The device was successfully opened. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -*/ + * @brief Register a allocated shared memory block. + * + * @param context: Pointer to the context + * @param sharedMem: Pointer to the shared memory + * + * @return TEEC_Result: + * TEEC_SUCCESS: The device was successfully opened. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + */ TEEC_Result TEEC_RegisterSharedMemory( - TEEC_Context* context, - TEEC_SharedMemory* sharedMem) + TEEC_Context* context, + TEEC_SharedMemory* sharedMem) { - if(context == NULL || sharedMem == NULL ) { - printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - - if((sharedMem->size == 0) || - ((sharedMem->flags != TEEC_MEM_INPUT) && - (sharedMem->flags != TEEC_MEM_OUTPUT) && - (sharedMem->flags != (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)))) { - printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - - if(sharedMem->buffer == NULL) { - printf("TEEC_RegisterSharedMemory :shared memory buffer is NULL\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - sharedMem->allocated = 0; - sharedMem->context = context; - sharedMem->operation_count = 0; - - INIT_LIST_HEAD(&sharedMem->head_ref); - list_add_tail(&context->shared_mem_list, &sharedMem->head_ref); - context->shared_mem_cnt++; - return TEEC_SUCCESS; + if(context == NULL || sharedMem == NULL ) { + printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + + if((sharedMem->size == 0) || + ((sharedMem->flags != TEEC_MEM_INPUT) && + (sharedMem->flags != TEEC_MEM_OUTPUT) && + (sharedMem->flags != (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)))) { + printf("TEEC_AllocateSharedMemory : Error Illegal argument\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + + if(sharedMem->buffer == NULL) { + printf("TEEC_RegisterSharedMemory :shared memory buffer is NULL\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + sharedMem->allocated = 0; + sharedMem->context = context; + sharedMem->operation_count = 0; + + INIT_LIST_HEAD(&sharedMem->head_ref); + list_add_tail(&context->shared_mem_list, &sharedMem->head_ref); + context->shared_mem_cnt++; + return TEEC_SUCCESS; } /** -* @brief Release a shared memory block -* -* @param sharedMem: Pointer to the shared memory -*/ + * @brief Release a shared memory block + * + * @param sharedMem: Pointer to the shared memory + */ void TEEC_ReleaseSharedMemory( - TEEC_SharedMemory* sharedMem) + TEEC_SharedMemory* sharedMem) { - struct list *l; - TEEC_SharedMemory* tempSharedMem; - int found = 0; - - if(sharedMem == NULL){ - return; - } - if(sharedMem->operation_count != 0) { - printf("TEEC_ReleaseSharedMemory - pending operations count %d\n", - sharedMem->operation_count); - return; - } - - if(sharedMem->allocated) { - munmap(sharedMem->buffer, sharedMem->size); - } - - sharedMem->buffer = NULL; - sharedMem->size = 0; - - list_for_each(l, &sharedMem->context->shared_mem_list) { - tempSharedMem = list_entry(l, TEEC_SharedMemory, head_ref); - if (tempSharedMem == sharedMem) { - found = 1; - break; - } - } - - if(found) { - list_del(&sharedMem->head_ref); - sharedMem->context->shared_mem_cnt--; - } - sharedMem->context = NULL; + struct list *l; + TEEC_SharedMemory* tempSharedMem; + int found = 0; + + if(sharedMem == NULL){ + return; + } + if(sharedMem->operation_count != 0) { + printf("TEEC_ReleaseSharedMemory - pending operations count %d\n", + sharedMem->operation_count); + return; + } + + if(sharedMem->allocated) { + munmap(sharedMem->buffer, sharedMem->size); + } + + sharedMem->buffer = NULL; + sharedMem->size = 0; + + list_for_each(l, &sharedMem->context->shared_mem_list) { + tempSharedMem = list_entry(l, TEEC_SharedMemory, head_ref); + if (tempSharedMem == sharedMem) { + found = 1; + break; + } + } + + if(found) { + list_del(&sharedMem->head_ref); + sharedMem->context->shared_mem_cnt--; + } + sharedMem->context = NULL; } /** -* @brief Open a session with a Trusted application -* -* @param context: Pointer to the context -* @param session: Pointer to the session -* @param destination: Service UUID -* @param connectionMethod: Connection method -* @param connectionData: Connection data used for authentication -* @param operation: Pointer to optional operation structure -* @param returnOrigin: Pointer to the return origin -* -* @return TEEC_Result: -* TEEC_SUCCESS: The session was successfully opened. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -*/ + * @brief Open a session with a Trusted application + * + * @param context: Pointer to the context + * @param session: Pointer to the session + * @param destination: Service UUID + * @param connectionMethod: Connection method + * @param connectionData: Connection data used for authentication + * @param operation: Pointer to optional operation structure + * @param returnOrigin: Pointer to the return origin + * + * @return TEEC_Result: + * TEEC_SUCCESS: The session was successfully opened. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + */ TEEC_Result TEEC_OpenSession ( - TEEC_Context* context, - TEEC_Session* session, - const TEEC_UUID* destination, - uint32_t connectionMethod, - const void* connectionData, - TEEC_Operation* operation, - uint32_t* returnOrigin) + TEEC_Context* context, + TEEC_Session* session, + const TEEC_UUID* destination, + uint32_t connectionMethod, + const void* connectionData, + TEEC_Operation* operation, + uint32_t* returnOrigin) { - int ret; - struct ser_ses_id ses_open; + int ret; + struct ser_ses_id ses_open; + + if((context == NULL) || (session == NULL) || + (destination == NULL)) { + printf("TEEC_OpenSession : Error Illegal argument\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + + switch(connectionMethod) { + case TEEC_LOGIN_PUBLIC: { + if(connectionData != NULL) { + printf("TEEC_OpenSession : connection method requires \ + empty connection data\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + break; + } + case TEEC_LOGIN_USER: + case TEEC_LOGIN_APPLICATION: + case TEEC_LOGIN_USER_APPLICATION: { + if(connectionData != NULL) { + printf("TEEC_OpenSession : connection method requires \ + empty connection data\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + printf("TEEC_OpenSession : connection method \ + is not implemented \n"); + return TEEC_ERROR_NOT_IMPLEMENTED; + break; + } + case TEEC_LOGIN_GROUP: + case TEEC_LOGIN_GROUP_APPLICATION: { + if(connectionData == NULL) { + printf("TEEC_OpenSession : connection method requires \ + valid connection data\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + return TEEC_ERROR_NOT_IMPLEMENTED; + break; + } + } + + ses_open.service_id = *destination; + + ret = ioctl(context->fd, + OTZ_CLIENT_IOCTL_SES_OPEN_REQ, &ses_open); + + if(ret < 0){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + + context->s_errno = errno; + + perror("TEEC_OpenSession: Session client open request failed\n"); + if(ret == -ENOMEM) + return TEEC_ERROR_OUT_OF_MEMORY; + if(ret == -EFAULT) + return TEEC_ERROR_ACCESS_DENIED; + if(ret == -EINVAL) + return TEEC_ERROR_BAD_PARAMETERS; + + return TEEC_ERROR_GENERIC; + } + else if(ret > 0) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_TRUSTED_APP; + + printf("TEEC_OpenSession: service return error - %s\n", + TEEC_GetError(ret, TEEC_ORIGIN_TRUSTED_APP) ); + return ret; + } + + context->session_count++; + session->operation_cnt = 0; + session->session_id = ses_open.session_id; + session->service_id = *destination; + session->device = context; - if((context == NULL) || (session == NULL) || - (destination == NULL)) { - printf("TEEC_OpenSession : Error Illegal argument\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - - switch(connectionMethod) { - case TEEC_LOGIN_PUBLIC: { - if(connectionData != NULL) { - printf("TEEC_OpenSession : connection method requires \ -empty connection data\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - break; - } - case TEEC_LOGIN_USER: - case TEEC_LOGIN_APPLICATION: - case TEEC_LOGIN_USER_APPLICATION: { - if(connectionData != NULL) { - printf("TEEC_OpenSession : connection method requires \ -empty connection data\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - printf("TEEC_OpenSession : connection method \ -is not implemented \n"); - return TEEC_ERROR_NOT_IMPLEMENTED; - break; - } - case TEEC_LOGIN_GROUP: - case TEEC_LOGIN_GROUP_APPLICATION: { - if(connectionData == NULL) { - printf("TEEC_OpenSession : connection method requires \ -valid connection data\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - return TEEC_ERROR_NOT_IMPLEMENTED; - break; - } - } - - ses_open.service_id = *destination; - - ret = ioctl(context->fd, - OTZ_CLIENT_IOCTL_SES_OPEN_REQ, &ses_open); - - if(ret < 0){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - - context->s_errno = errno; - - perror("TEEC_OpenSession: Session client open request failed\n"); - if(ret == -ENOMEM) - return TEEC_ERROR_OUT_OF_MEMORY; - if(ret == -EFAULT) - return TEEC_ERROR_ACCESS_DENIED; - if(ret == -EINVAL) - return TEEC_ERROR_BAD_PARAMETERS; - - return TEEC_ERROR_GENERIC; - } - else if(ret > 0) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_TRUSTED_APP; - - printf("TEEC_OpenSession: service return error - %s\n", - TEEC_GetError(ret, TEEC_ORIGIN_TRUSTED_APP) ); - return ret; - } - - context->session_count++; - session->operation_cnt = 0; - session->session_id = ses_open.session_id; - session->service_id = *destination; - session->device = context; - - return TEEC_SUCCESS; + return TEEC_SUCCESS; } /** -* @brief Closes a session which has been opened with trusted application -* -* @param session: Pointer to the session structure -*/ + * @brief Closes a session which has been opened with trusted application + * + * @param session: Pointer to the session structure + */ void TEEC_CloseSession ( - TEEC_Session* session) + TEEC_Session* session) { - int ret = 0; - struct ser_ses_id ses_close; + int ret = 0; + struct ser_ses_id ses_close; - if(session == NULL) { - printf("TEEC_CloseSession: Warning: Session pointer is NULL\n"); - return; - } - - if(session->operation_cnt) { - printf("TEEC_CloseSession: Warning: Pending operations %d\n", - session->operation_cnt); - return; - } - ses_close.service_id = session->service_id ; - ses_close.session_id = session->session_id ; - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_SES_CLOSE_REQ, &ses_close); - - if(ret == 0){ - session->device->session_count--; - session->device = NULL; - session->session_id = -1; - } - else { - perror("TEEC_CloseSession: Session client close request failed\n"); - } + if(session == NULL) { + printf("TEEC_CloseSession: Warning: Session pointer is NULL\n"); + return; + } + + if(session->operation_cnt) { + printf("TEEC_CloseSession: Warning: Pending operations %d\n", + session->operation_cnt); + return; + } + ses_close.service_id = session->service_id ; + ses_close.session_id = session->session_id ; + + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_SES_CLOSE_REQ, &ses_close); + + if(ret == 0){ + session->device->session_count--; + session->device = NULL; + session->session_id = -1; + } + else { + perror("TEEC_CloseSession: Session client close request failed\n"); + } } /** -* @brief Invokes a command within the specified session -* -* @param session: Pointer to session -* @param commandID: Command ID -* @param operation: Pointer to operation structure -* @param returnOrigin: Pointer to the return origin -* -* @return TEEC_Result: -* TEEC_SUCCESS: The command was successfully invoked. \n -* TEEC_ERROR_*: An implementation-defined error code for any other error. -*/ + * @brief Invokes a command within the specified session + * + * @param session: Pointer to session + * @param commandID: Command ID + * @param operation: Pointer to operation structure + * @param returnOrigin: Pointer to the return origin + * + * @return TEEC_Result: + * TEEC_SUCCESS: The command was successfully invoked. \n + * TEEC_ERROR_*: An implementation-defined error code for any other error. + */ TEEC_Result TEEC_InvokeCommand( - TEEC_Session* session, - uint32_t commandID, - TEEC_Operation* operation, - uint32_t* returnOrigin) + TEEC_Session* session, + uint32_t commandID, + TEEC_Operation* operation, + uint32_t* returnOrigin) { - int ret, rel_ret; - unsigned char inout = 0; /* in = 0; out = 1; inout = 2 */ - uint32_t param_types[4], param_count; - struct otz_client_encode_cmd enc; - - if(session == NULL) { - printf("TEEC_InvokeCommand : Illegal argument\n"); - return TEEC_ERROR_BAD_PARAMETERS; - } - - enc.encode_id = -1; - enc.cmd_id = commandID; - enc.service_id = session->service_id ; - enc.session_id = session->session_id ; - -/* Need to support cancellation in future releases */ - if(operation && !operation->started) { - printf( - "TEEC_InvokeCommand : cancellation support not yet implemented\n"); - return TEEC_ERROR_NOT_IMPLEMENTED; - } - - session->operation_cnt++; -/* Encode the data */ - if(operation->paramTypes != 0) { - param_types[0] = operation->paramTypes & 0xf; - param_types[1] = (operation->paramTypes >> 4) & 0xf; - param_types[2] = (operation->paramTypes >> 8) & 0xf; - param_types[3] = (operation->paramTypes >> 12) & 0xf; - - for(param_count = 0; param_count < 4; param_count++) { - if( (param_types[param_count] == TEEC_VALUE_INPUT) || - (param_types[param_count] == TEEC_VALUE_INOUT) || - (param_types[param_count] == TEEC_VALUE_OUTPUT)) { - enc.data = (void*)&operation->params[param_count].value.a; - enc.len = sizeof(uint32_t); - - if(param_types[param_count] == TEEC_VALUE_INPUT) - inout = 0; - else if(param_types[param_count] == TEEC_VALUE_OUTPUT) - inout = 1; - else if(param_types[param_count] == TEEC_VALUE_INOUT) - inout = 2; - - if((inout == 0) | (inout == 2)) - enc.param_type = OTZC_PARAM_IN; - else if(inout == 1) - enc.param_type = OTZC_PARAM_OUT; - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); - if (ret) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: encoding value data failed\n"); - break; - } - - if(inout == 2) { - enc.param_type = OTZC_PARAM_OUT; - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); - if (ret) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror( - "TEEC_InvokeCommand: encoding value data failed\n"); - break; - } - } - - - if(TEEC_VALUE_UNDEF != - operation->params[param_count].value.b) { - enc.data = (void*)&operation->params[param_count].value.b; - enc.len = sizeof(uint32_t); - if((inout == 0) | (inout == 2)) - enc.param_type = OTZC_PARAM_IN; - else if(inout == 1) - enc.param_type = OTZC_PARAM_OUT; - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); - if (ret) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror( - "TEEC_InvokeCommand: encoding value data failed\n"); - break; - } - if(inout == 2) { - enc.param_type = OTZC_PARAM_OUT; - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); - if (ret) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -encoding value data failed\n"); - - break; - } - } - } - } /* end if for TEEC_VALUE check */ - else if( (param_types[param_count] == TEEC_MEMREF_WHOLE) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT)) { - - if(!operation->params[param_count].memref.parent) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_NO_DATA; - printf("TEEC_InvokeCommand: \ -memory reference parent is NULL\n"); - - break; - } - - if(!operation->params[param_count].memref.parent->buffer) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_NO_DATA; - printf("TEEC_InvokeCommand: \ -memory reference parent data is NULL\n"); - break; - } - - if(param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) { - if(!(operation->params[param_count].memref.parent->flags - & TEEC_MEM_INPUT)) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_BAD_FORMAT; - printf("TEEC_InvokeCommand: \ -memory reference direction is invalid\n"); - break; - } - } - if(param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT) { - if(!(operation->params[param_count].memref.parent->flags - & TEEC_MEM_OUTPUT)) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_BAD_FORMAT; - printf("TEEC_InvokeCommand: \ -memory reference direction is invalid\n"); - break; - } - } - - if(param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) { - if(!(operation->params[param_count].memref.parent->flags - & TEEC_MEM_INPUT)) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_BAD_FORMAT; - printf("TEEC_InvokeCommand: \ -memory reference direction is invalid\n"); - break; - } - if(!(operation->params[param_count].memref.parent->flags - & TEEC_MEM_OUTPUT)) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_BAD_FORMAT; - printf("TEEC_InvokeCommand: \ -memory reference direction is invalid\n"); - break; - } - } - - if((param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT)) { - if((operation->params[param_count].memref.offset < 0) || - (operation->params[param_count].memref.offset + - operation->params[param_count].memref.size > - operation-> - params[param_count].memref.parent->size) ) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_EXCESS_DATA; - printf("TEEC_InvokeCommand: \ -memory reference offset + size is greater than the actual memory size\n"); - break; - } - } - - if(param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) { - inout = 0; - } - else if(param_types[param_count] - == TEEC_MEMREF_PARTIAL_OUTPUT) { - inout = 1; - } - else if(param_types[param_count] - == TEEC_MEMREF_PARTIAL_INOUT) { - inout = 2; - } - else if(param_types[param_count] == TEEC_MEMREF_WHOLE) { - - if(operation-> - params[param_count].memref.parent->flags == - (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)) - inout = 2; - else if(operation-> - params[param_count].memref.parent->flags == - TEEC_MEM_INPUT) - inout = 0; - else if(operation-> - params[param_count].memref.parent->flags == - TEEC_MEM_OUTPUT) - inout = 1; - } - - if(param_types[param_count] == TEEC_MEMREF_WHOLE) { - enc.len = operation-> - params[param_count].memref.parent->size; - enc.offset = 0; - } - else { - enc.len = operation->params[param_count].memref.size; - enc.offset = operation->params[param_count].memref.offset; - } - - if(inout == 0) { - enc.flags = OTZ_MEM_SERVICE_RO; - enc.param_type = OTZC_PARAM_IN; - } - else if(inout == 1) { - enc.flags = OTZ_MEM_SERVICE_WO; - enc.param_type = OTZC_PARAM_OUT; - } - else if(inout == 2) { - enc.flags = OTZ_MEM_SERVICE_RO; - enc.param_type = OTZC_PARAM_IN; - } - - if(operation->params[param_count].memref.parent->allocated) { - enc.data = - operation->params[param_count].memref.parent->buffer; - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_MEM_REF, &enc); - } - else { - enc.data = - operation->params[param_count].memref.parent->buffer + - enc.offset; - enc.offset = 0; - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); - } - if (ret){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -encoding data in client driver failed\n"); - break; - } - else { -/* operation-> - params[param_count].memref.parent->operation_count++; */ - } - if(inout == 2) { - enc.flags = OTZ_MEM_SERVICE_WO; - enc.param_type = OTZC_PARAM_OUT; - - if(operation-> - params[param_count].memref.parent->allocated) { - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_MEM_REF, &enc); - } - else { - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); - } - - if (ret){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -encoding data in client driver failed\n"); - break; - } - } - } /* end if for TEEC_MEM_REF check */ - else if((param_types[param_count] == TEEC_MEMREF_TEMP_INPUT) || - (param_types[param_count] == TEEC_MEMREF_TEMP_OUTPUT) || - (param_types[param_count] == TEEC_MEMREF_TEMP_INOUT)) { - - if(!operation->params[param_count].tmpref.buffer) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_NO_DATA; - printf("TEEC_InvokeCommand: \ -temporary memory reference buffer is NULL\n"); - break; - } - /* This is a variation of API spec. */ - if(operation->params[param_count].tmpref.size == 0) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - ret = TEEC_ERROR_NO_DATA; - printf("TEEC_InvokeCommand: \ -temporary memory reference size zero is not supported\n"); - break; - } - - if(param_types[param_count] == TEEC_MEMREF_TEMP_INPUT) { - inout = 0; - } - else if(param_types[param_count] - == TEEC_MEMREF_TEMP_OUTPUT) { - inout = 1; - } - else if(param_types[param_count] - == TEEC_MEMREF_TEMP_INOUT) { - inout = 2; - } - enc.len = operation->params[param_count].tmpref.size; - - if(inout == 0) { - enc.flags = OTZ_MEM_SERVICE_RO; - enc.param_type = OTZC_PARAM_IN; - } - else if(inout == 1) { - enc.flags = OTZ_MEM_SERVICE_WO; - enc.param_type = OTZC_PARAM_OUT; - } - else if(inout == 2) { - enc.flags = OTZ_MEM_SERVICE_RO; - enc.param_type = OTZC_PARAM_IN; - } - - enc.data = - operation->params[param_count].tmpref.buffer; - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); - - if (ret){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -encoding data in client driver failed\n"); - break; - } - - if(inout == 2) { - enc.flags = OTZ_MEM_SERVICE_WO; - enc.param_type = OTZC_PARAM_OUT; - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); - if (ret){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -encoding data in client driver failed\n"); - break; - } - } - } /* end if for temp reference */ - }/* end for */ - } /* end paramtype */ - - if(ret) { - printf("error in encoding the data\n"); - goto operation_release; - } - - /* Invoke the command */ - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_SEND_CMD_REQ, &enc); - - if(ret < 0){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - - session->s_errno = errno; - - if(ret == -EFAULT) - ret = TEEC_ERROR_ACCESS_DENIED; - if(ret == -EINVAL) - ret = TEEC_ERROR_BAD_PARAMETERS; - - perror("TEEC_InvokeCommand: \ -command submission in client driver failed\n"); - } - else if(ret > 0) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_TRUSTED_APP; - - /* check the service error code match with global platform - error constants */ - printf("TEEC_InvokeCommand: \ -command submission failed in trusted application - %s\n", - TEEC_GetError(ret, TEEC_ORIGIN_TRUSTED_APP)); - } - - if(ret != 0) { - goto operation_release; - } - - -/* Decode the data */ - if(operation->paramTypes != 0) { - for(param_count = 0; param_count < 4; param_count++) { - - if((param_types[param_count] == TEEC_VALUE_INOUT) || - (param_types[param_count] == TEEC_VALUE_OUTPUT)) { - enc.len = sizeof(uint32_t); - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_DEC_UINT32, &enc); - if (ret) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -decoding data in client driver failed\n"); - break; - } - - operation->params[param_count].value.a = *((uint32_t*)enc.data); - - if(TEEC_VALUE_UNDEF != operation->params[param_count].value.b) { - enc.len = sizeof(uint32_t); - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_DEC_UINT32, &enc); - if (ret) { - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -decoding data in client driver failed\n"); - break; - } - operation->params[param_count].value.b = - *((uint32_t*)enc.data); - } - } /* end if for TEEC_VALUE check */ - else if( (param_types[param_count] == TEEC_MEMREF_WHOLE) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT) || - (param_types[param_count] == TEEC_MEMREF_TEMP_INOUT) || - (param_types[param_count] == TEEC_MEMREF_TEMP_OUTPUT)) { - - inout = 2; - - if(param_types[param_count] == TEEC_MEMREF_WHOLE) { - if(operation-> - params[param_count].memref.parent->flags == - (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)) - inout = 2; - else if(operation - ->params[param_count].memref.parent->flags == - TEEC_MEM_INPUT) - inout = 0; - else if(operation - ->params[param_count].memref.parent->flags == - TEEC_MEM_OUTPUT) - inout = 1; - } - - if(inout == 0) - continue; - - ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_DEC_ARRAY_SPACE, &enc); - if (ret){ - if(returnOrigin) - *returnOrigin = TEEC_ORIGIN_API; - session->s_errno = errno; - perror("TEEC_InvokeCommand: \ -decoding data in client driver failed\n"); - break; - } + int ret, rel_ret; + unsigned char inout = 0; /* in = 0; out = 1; inout = 2 */ + uint32_t param_types[4], param_count; + struct otz_client_encode_cmd enc; + + if(session == NULL) { + printf("TEEC_InvokeCommand : Illegal argument\n"); + return TEEC_ERROR_BAD_PARAMETERS; + } + + enc.encode_id = -1; + enc.cmd_id = commandID; + enc.service_id = session->service_id ; + enc.session_id = session->session_id ; + /* Need to support cancellation in future releases */ #if 0 - if(param_types[param_count] == TEEC_MEMREF_WHOLE) { - printf("decode data addr %s\n", - operation->params[param_count].memref.parent->buffer); - } -#endif - - if( (param_types[param_count] == TEEC_MEMREF_WHOLE) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || - (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT)) { - operation->params[param_count].memref.size = enc.len; - } - else { - operation->params[param_count].tmpref.size = enc.len; - } - } /* end if for TEEC_MEM_REF check */ - }/* end for */ - } /* end paramtype */ - - if(ret != TEEC_SUCCESS) { - printf("error in decoding the data\n"); - } + if(operation && !operation->started) { + printf( + "TEEC_InvokeCommand : cancellation support not yet implemented\n"); + return TEEC_ERROR_NOT_IMPLEMENTED; + } +#endif + session->operation_cnt++; + /* Encode the data */ + if(operation->paramTypes != 0) { + param_types[0] = operation->paramTypes & 0xf; + param_types[1] = (operation->paramTypes >> 4) & 0xf; + param_types[2] = (operation->paramTypes >> 8) & 0xf; + param_types[3] = (operation->paramTypes >> 12) & 0xf; + + for(param_count = 0; param_count < 4; param_count++) { + if( (param_types[param_count] == TEEC_VALUE_INPUT) || + (param_types[param_count] == TEEC_VALUE_INOUT) || + (param_types[param_count] == TEEC_VALUE_OUTPUT)) { + enc.data = (void*)&operation->params[param_count].value.a; + enc.len = sizeof(uint32_t); + + if(param_types[param_count] == TEEC_VALUE_INPUT) + inout = 0; + else if(param_types[param_count] == TEEC_VALUE_OUTPUT) + inout = 1; + else if(param_types[param_count] == TEEC_VALUE_INOUT) + inout = 2; + + if((inout == 0) | (inout == 2)) + enc.param_type = OTZC_PARAM_IN; + else if(inout == 1) + enc.param_type = OTZC_PARAM_OUT; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_UINT32 \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); + if (ret) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: encoding value data failed\n"); + break; + } + + if(inout == 2) { + enc.param_type = OTZC_PARAM_OUT; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_UINT32 \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); + if (ret) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror( + "TEEC_InvokeCommand: encoding value data failed\n"); + break; + } + } + + + if(TEEC_VALUE_UNDEF != + operation->params[param_count].value.b) { + enc.data = (void*)&operation->params[param_count].value.b; + enc.len = sizeof(uint32_t); + if((inout == 0) | (inout == 2)) + enc.param_type = OTZC_PARAM_IN; + else if(inout == 1) + enc.param_type = OTZC_PARAM_OUT; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_UINT32 \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); + if (ret) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror( + "TEEC_InvokeCommand: encoding value data failed\n"); + break; + } + if(inout == 2) { +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_UINT32 \n",__func__,__LINE__); +#endif + enc.param_type = OTZC_PARAM_OUT; + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_UINT32, &enc); + if (ret) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + encoding value data failed\n"); + + break; + } + } + } + } /* end if for TEEC_VALUE check */ + else if( (param_types[param_count] == TEEC_MEMREF_WHOLE) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT)) { + + if(!operation->params[param_count].memref.parent) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_NO_DATA; + printf("TEEC_InvokeCommand: \ + memory reference parent is NULL\n"); + + break; + } + + if(!operation->params[param_count].memref.parent->buffer) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_NO_DATA; + printf("TEEC_InvokeCommand: \ + memory reference parent data is NULL\n"); + break; + } + + if(param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) { + if(!(operation->params[param_count].memref.parent->flags + & TEEC_MEM_INPUT)) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_BAD_FORMAT; + printf("TEEC_InvokeCommand: \ + memory reference direction is invalid\n"); + break; + } + } + if(param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT) { + if(!(operation->params[param_count].memref.parent->flags + & TEEC_MEM_OUTPUT)) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_BAD_FORMAT; + printf("TEEC_InvokeCommand: \ + memory reference direction is invalid\n"); + break; + } + } + + if(param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) { + if(!(operation->params[param_count].memref.parent->flags + & TEEC_MEM_INPUT)) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_BAD_FORMAT; + printf("TEEC_InvokeCommand: \ + memory reference direction is invalid\n"); + break; + } + if(!(operation->params[param_count].memref.parent->flags + & TEEC_MEM_OUTPUT)) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_BAD_FORMAT; + printf("TEEC_InvokeCommand: \ + memory reference direction is invalid\n"); + break; + } + } + + if((param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT)) { + if((operation->params[param_count].memref.offset < 0) || + (operation->params[param_count].memref.offset + + operation->params[param_count].memref.size > + operation-> + params[param_count].memref.parent->size) ) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_EXCESS_DATA; + printf("TEEC_InvokeCommand: \ + memory reference offset + size is greater than the actual memory size\n"); + break; + } + } + + if(param_types[param_count] == TEEC_MEMREF_PARTIAL_INPUT) { + inout = 0; + } + else if(param_types[param_count] + == TEEC_MEMREF_PARTIAL_OUTPUT) { + inout = 1; + } + else if(param_types[param_count] + == TEEC_MEMREF_PARTIAL_INOUT) { + inout = 2; + } + else if(param_types[param_count] == TEEC_MEMREF_WHOLE) { + + if(operation-> + params[param_count].memref.parent->flags == + (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)) + inout = 2; + else if(operation-> + params[param_count].memref.parent->flags == + TEEC_MEM_INPUT) + inout = 0; + else if(operation-> + params[param_count].memref.parent->flags == + TEEC_MEM_OUTPUT) + inout = 1; + } + + if(param_types[param_count] == TEEC_MEMREF_WHOLE) { + enc.len = operation-> + params[param_count].memref.parent->size; + enc.offset = 0; + } + else { + enc.len = operation->params[param_count].memref.size; + enc.offset = operation->params[param_count].memref.offset; + } + + if(inout == 0) { + enc.flags = OTZ_MEM_SERVICE_RO; + enc.param_type = OTZC_PARAM_IN; + } + else if(inout == 1) { + enc.flags = OTZ_MEM_SERVICE_WO; + enc.param_type = OTZC_PARAM_OUT; + } + else if(inout == 2) { + enc.flags = OTZ_MEM_SERVICE_RO; + enc.param_type = OTZC_PARAM_IN; + } + + if(operation->params[param_count].memref.parent->allocated) { + enc.data = + operation->params[param_count].memref.parent->buffer; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_MEM_REF \n", + __func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_MEM_REF, &enc); + } + else { + enc.data = + operation->params[param_count].memref.parent->buffer + + enc.offset; + enc.offset = 0; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_ARRAY \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); + } + if (ret){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + encoding data in client driver failed\n"); + break; + } + else { + /* operation-> + params[param_count].memref.parent->operation_count++; */ + } + if(inout == 2) { + enc.flags = OTZ_MEM_SERVICE_WO; + enc.param_type = OTZC_PARAM_OUT; + + if(operation-> + params[param_count].memref.parent->allocated) { +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_MEM_REF \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_MEM_REF, &enc); + } + else { +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_ARRAY \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); + } + + if (ret){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + encoding data in client driver failed\n"); + break; + } + } + } /* end if for TEEC_MEM_REF check */ + else if((param_types[param_count] == TEEC_MEMREF_TEMP_INPUT) || + (param_types[param_count] == TEEC_MEMREF_TEMP_OUTPUT) || + (param_types[param_count] == TEEC_MEMREF_TEMP_INOUT)) { + + if(!operation->params[param_count].tmpref.buffer) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_NO_DATA; + printf("TEEC_InvokeCommand: \ + temporary memory reference buffer is NULL\n"); + break; + } + /* This is a variation of API spec. */ + if(operation->params[param_count].tmpref.size == 0) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + ret = TEEC_ERROR_NO_DATA; + printf("TEEC_InvokeCommand: \ + temporary memory reference size zero is not supported\n"); + break; + } + + if(param_types[param_count] == TEEC_MEMREF_TEMP_INPUT) { + inout = 0; + } + else if(param_types[param_count] + == TEEC_MEMREF_TEMP_OUTPUT) { + inout = 1; + } + else if(param_types[param_count] + == TEEC_MEMREF_TEMP_INOUT) { + inout = 2; + } + enc.len = operation->params[param_count].tmpref.size; + + if(inout == 0) { + enc.flags = OTZ_MEM_SERVICE_RO; + enc.param_type = OTZC_PARAM_IN; + } + else if(inout == 1) { + enc.flags = OTZ_MEM_SERVICE_WO; + enc.param_type = OTZC_PARAM_OUT; + } + else if(inout == 2) { + enc.flags = OTZ_MEM_SERVICE_RO; + enc.param_type = OTZC_PARAM_IN; + } + + enc.data = + operation->params[param_count].tmpref.buffer; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_ARRAY \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); + + if (ret){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + encoding data in client driver failed\n"); + break; + } + + if(inout == 2) { + enc.flags = OTZ_MEM_SERVICE_WO; + enc.param_type = OTZC_PARAM_OUT; +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_ENC_ARRAY \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_ENC_ARRAY, &enc); + if (ret){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + encoding data in client driver failed\n"); + break; + } + } + } /* end if for temp reference */ + }/* end for */ + } /* end paramtype */ + + if(ret) { + printf("error in encoding the data\n"); + goto operation_release; + } + +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_SEND_CMD_REQ \n",__func__,__LINE__); +#endif + /* Invoke the command */ + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_SEND_CMD_REQ, &enc); + + if(ret < 0){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + + session->s_errno = errno; + + if(ret == -EFAULT) + ret = TEEC_ERROR_ACCESS_DENIED; + if(ret == -EINVAL) + ret = TEEC_ERROR_BAD_PARAMETERS; + + perror("TEEC_InvokeCommand: \ + command submission in client driver failed\n"); + } + else if(ret > 0) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_TRUSTED_APP; + + /* check the service error code match with global platform + error constants */ + printf("TEEC_InvokeCommand: \ + command submission failed in trusted application - %s\n", + TEEC_GetError(ret, TEEC_ORIGIN_TRUSTED_APP)); + } + + if(ret != 0) { + goto operation_release; + } + + + /* Decode the data */ + if(operation->paramTypes != 0) { + for(param_count = 0; param_count < 4; param_count++) { + + if((param_types[param_count] == TEEC_VALUE_INOUT) || + (param_types[param_count] == TEEC_VALUE_OUTPUT)) { + enc.len = sizeof(uint32_t); + +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_SEND_DEC_UINT32 \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_DEC_UINT32, &enc); + if (ret) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + decoding data in client driver failed\n"); + break; + } + + operation->params[param_count].value.a = *((uint32_t*)enc.data); + + if(TEEC_VALUE_UNDEF != operation->params[param_count].value.b) { + enc.len = sizeof(uint32_t); + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_DEC_UINT32, &enc); + if (ret) { + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + decoding data in client driver failed\n"); + break; + } + operation->params[param_count].value.b = + *((uint32_t*)enc.data); + } + } /* end if for TEEC_VALUE check */ + else if( (param_types[param_count] == TEEC_MEMREF_WHOLE) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT) || + (param_types[param_count] == TEEC_MEMREF_TEMP_INOUT) || + (param_types[param_count] == TEEC_MEMREF_TEMP_OUTPUT)) { + + inout = 2; + + if(param_types[param_count] == TEEC_MEMREF_WHOLE) { + if(operation-> + params[param_count].memref.parent->flags == + (TEEC_MEM_INPUT | TEEC_MEM_OUTPUT)) + inout = 2; + else if(operation + ->params[param_count].memref.parent->flags == + TEEC_MEM_INPUT) + inout = 0; + else if(operation + ->params[param_count].memref.parent->flags == + TEEC_MEM_OUTPUT) + inout = 1; + } + + if(inout == 0) + continue; + +#if ENABLE_DEBUG_LOGS + printf("%s %d Calling OTZ_CLIENT_IOCTL_DEC_ARRAY_SPACE \n",__func__,__LINE__); +#endif + ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_DEC_ARRAY_SPACE, &enc); + if (ret){ + if(returnOrigin) + *returnOrigin = TEEC_ORIGIN_API; + session->s_errno = errno; + perror("TEEC_InvokeCommand: \ + decoding data in client driver failed\n"); + break; + } + +#if 0 + if(param_types[param_count] == TEEC_MEMREF_WHOLE) { + printf("decode data addr %s\n", + operation->params[param_count].memref.parent->buffer); + } +#endif + + if( (param_types[param_count] == TEEC_MEMREF_WHOLE) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_INOUT) || + (param_types[param_count] == TEEC_MEMREF_PARTIAL_OUTPUT)) { + operation->params[param_count].memref.size = enc.len; + } + else { + operation->params[param_count].tmpref.size = enc.len; + } + } /* end if for TEEC_MEM_REF check */ + }/* end for */ + } /* end paramtype */ + + if(ret != TEEC_SUCCESS) { + printf("error in decoding the data\n"); + } operation_release: - /* release the operation */ - rel_ret = ioctl(session->device->fd, - OTZ_CLIENT_IOCTL_OPERATION_RELEASE, &enc); - if (rel_ret){ - perror("Operation release failed\n"); - } + /* release the operation */ + rel_ret = ioctl(session->device->fd, + OTZ_CLIENT_IOCTL_OPERATION_RELEASE, &enc); + if (rel_ret){ + perror("Operation release failed\n"); + } - session->operation_cnt--; - return ret; + session->operation_cnt--; + return ret; } /** -* @brief Requests the cancellation of a pending open Session operation or -* a Command invocation operation. -* -* -* @param operation: Pointer to TEEC operation structure -*/ + * @brief Requests the cancellation of a pending open Session operation or + * a Command invocation operation. + * + * + * @param operation: Pointer to TEEC operation structure + */ void TEEC_RequestCancellation( - TEEC_Operation* operation) + TEEC_Operation* operation) { - return; + return; } Index: otz_driver/otz_client_main.c =================================================================== --- otz_driver/otz_client_main.c.orig 2012-08-06 00:23:31.448033226 +0530 +++ otz_driver/otz_client_main.c 2012-08-06 10:03:33.711333857 +0530 @@ -18,6 +18,10 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application * * Trustzone API interface driver. * @@ -51,6 +55,7 @@ #define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S)) +#define ENABLE_DEBUG_LOGS 0 static struct class *driver_class; static dev_t otz_client_device_no; @@ -77,17 +82,17 @@ * @brief */ static struct otz_svc_head{ - u32 service_cnt; - struct list_head services_list; + u32 service_cnt; + struct list_head services_list; } otzc_svc_head; /** * @brief */ typedef struct otzc_service{ - struct list_head head; - u32 service_id; - struct list_head sessions_list; + struct list_head head; + u32 service_id; + struct list_head sessions_list; } otzc_service; @@ -95,11 +100,11 @@ * @brief */ typedef struct otzc_session{ - struct list_head head; - int session_id; + struct list_head head; + int session_id; - struct list_head encode_list; - struct list_head shared_mem_list; + struct list_head encode_list; + struct list_head shared_mem_list; } otzc_session; #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT @@ -107,8 +112,8 @@ * @brief */ struct otz_wait_data { - wait_queue_head_t send_cmd_wq; - int send_wait_flag; + wait_queue_head_t send_cmd_wq; + int send_wait_flag; }; #endif @@ -117,25 +122,25 @@ */ typedef struct otzc_encode{ - struct list_head head; + struct list_head head; - int encode_id; + int encode_id; - void* ker_req_data_addr; - void* ker_res_data_addr; + void* ker_req_data_addr; + void* ker_res_data_addr; - u32 enc_req_offset; - u32 enc_res_offset; - u32 enc_req_pos; - u32 enc_res_pos; - u32 dec_res_pos; + u32 enc_req_offset; + u32 enc_res_offset; + u32 enc_req_pos; + u32 enc_res_pos; + u32 dec_res_pos; - u32 dec_offset; + u32 dec_offset; #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - struct otz_wait_data wait_data; + struct otz_wait_data wait_data; #endif - struct otzc_encode_meta *meta; + struct otzc_encode_meta *meta; } otzc_encode; @@ -144,9 +149,9 @@ */ static struct otzc_shrd_mem_head{ - int shared_mem_cnt; + int shared_mem_cnt; - struct list_head shared_mem_list; + struct list_head shared_mem_list; } otzc_shared_mem_head; /** @@ -154,19 +159,19 @@ */ typedef struct otzc_shared_mem{ - struct list_head head; - struct list_head s_head; + struct list_head head; + struct list_head s_head; - void* index; + void* index; - void* k_addr; - void* u_addr; - u32 len; + void* k_addr; + void* u_addr; + u32 len; } otzc_shared_mem; static int otz_client_prepare_encode(struct otz_client_encode_cmd *enc, - otzc_encode **penc_context, - otzc_session **psession); + otzc_encode **penc_context, + otzc_session **psession); /** * @brief @@ -176,15 +181,15 @@ */ static void otz_smc_inv_range(unsigned long start, unsigned long end) { - start = round_down(start, cacheline_size); - end = round_up(end, cacheline_size); - while (start < end) { - asm ("mcr p15, 0, %0, c7, c6, 1" : : "r" (start) - : "memory"); - start += cacheline_size; - } - dsb(); - isb(); + start = round_down(start, cacheline_size); + end = round_up(end, cacheline_size); + while (start < end) { + asm ("mcr p15, 0, %0, c7, c6, 1" : : "r" (start) + : "memory"); + start += cacheline_size; + } + dsb(); + isb(); } @@ -197,21 +202,21 @@ */ static u32 otz_smc(u32 cmd_addr) { - register u32 r0 asm("r0") = CALL_TRUSTZONE_API; - register u32 r1 asm("r1") = cmd_addr; - register u32 r2 asm("r2") = OTZ_CMD_TYPE_NS_TO_SECURE; - do { - asm volatile( - __asmeq("%0", "r0") - __asmeq("%1", "r0") - __asmeq("%2", "r1") - __asmeq("%3", "r2") - "smc #0 @ switch to secure world\n" - : "=r" (r0) - : "r" (r0), "r" (r1), "r" (r2)); - } while (0); + register u32 r0 asm("r0") = CALL_TRUSTZONE_API; + register u32 r1 asm("r1") = cmd_addr; + register u32 r2 asm("r2") = OTZ_CMD_TYPE_NS_TO_SECURE; + do { + asm volatile( + __asmeq("%0", "r0") + __asmeq("%1", "r0") + __asmeq("%2", "r1") + __asmeq("%3", "r2") + "smc #0 @ switch to secure world\n" + : "=r" (r0) + : "r" (r0), "r" (r1), "r" (r2)); + } while (0); - return r0; + return r0; } /** @@ -231,169 +236,178 @@ * @return */ static int otz_smc_call(u32 svc_id, u32 cmd_id, u32 context, u32 enc_id, - const void *cmd_buf, size_t cmd_len, - void *resp_buf, size_t resp_len, - const void *meta_data, int *ret_resp_len) -{ - int ret; - u32 smc_cmd_phys; - unsigned long start, end; - - if(ret_resp_len) - *ret_resp_len = 0; - - smc_cmd->src_id = (svc_id << 10) | cmd_id; - smc_cmd->src_context = task_tgid_vnr(current); - - smc_cmd->id = (svc_id << 10) | cmd_id; - smc_cmd->context = context; - smc_cmd->enc_id = enc_id; - smc_cmd->req_buf_len = cmd_len; - smc_cmd->resp_buf_len = resp_len; - smc_cmd->ret_resp_buf_len = 0; - - if(cmd_buf) - smc_cmd->req_buf_phys = virt_to_phys((void*)cmd_buf); - else - smc_cmd->req_buf_phys = 0; - - if(resp_buf) - smc_cmd->resp_buf_phys = virt_to_phys((void*)resp_buf); - else - smc_cmd->resp_buf_phys = 0; - - if(meta_data) - smc_cmd->meta_data_phys = virt_to_phys(meta_data); - else - smc_cmd->meta_data_phys = 0; - - smc_cmd_phys = virt_to_phys((void*)smc_cmd); - mutex_lock(&smc_lock); - /* - * Flush the entire cache here so callers don't have to remember - * to flush the cache when passing physical addresses to the secure - * side in the buffer. - */ - flush_cache_all(); - - ret = otz_smc(smc_cmd_phys); - mutex_unlock(&smc_lock); - if (ret) { - TERR("smc_call returns error\n"); - /*printk("%s \n", otz_strerror(ret));*/ - goto out; - } - - start = (unsigned long)smc_cmd; - otz_smc_inv_range(start, start + sizeof(struct otz_smc_cmd)); - - if(smc_cmd->ret_resp_buf_len > 0) { - start = (unsigned long)resp_buf; - end = (unsigned long)resp_buf + smc_cmd->ret_resp_buf_len; - otz_smc_inv_range(start, start + end); - } - - if(ret_resp_len) { - *ret_resp_len = smc_cmd->ret_resp_buf_len; - } + const void *cmd_buf, size_t cmd_len, + void *resp_buf, size_t resp_len, + const void *meta_data, int *ret_resp_len) +{ + int ret; + u32 smc_cmd_phys; + unsigned long start, end; + + if(ret_resp_len) + *ret_resp_len = 0; + + smc_cmd->src_id = (svc_id << 10) | cmd_id; + smc_cmd->src_context = task_tgid_vnr(current); + + smc_cmd->id = (svc_id << 10) | cmd_id; + smc_cmd->context = context; + smc_cmd->enc_id = enc_id; + smc_cmd->req_buf_len = cmd_len; + smc_cmd->resp_buf_len = resp_len; + smc_cmd->ret_resp_buf_len = 0; + + if(cmd_buf) + smc_cmd->req_buf_phys = virt_to_phys((void*)cmd_buf); + else + smc_cmd->req_buf_phys = 0; + + if(resp_buf) + smc_cmd->resp_buf_phys = virt_to_phys((void*)resp_buf); + else + smc_cmd->resp_buf_phys = 0; + + if(meta_data) + smc_cmd->meta_data_phys = virt_to_phys(meta_data); + else + smc_cmd->meta_data_phys = 0; + +#if ENABLE_DEBUG_LOGS + TDEBUG("Sending command to secure world the value of VA cmd_buf = %08x PA cmd_buf = %08x \n", + cmd_buf,smc_cmd->req_buf_phys); + TDEBUG("Sending command to secure world the value of VA resp_buf = %08x PA resp_buf = %08x \n", + resp_buf,smc_cmd->resp_buf_phys); + TDEBUG("Sending command to secure world the value of VA meta_data = %08x PA meta_data = %08x \n", + meta_data,smc_cmd->meta_data_phys); +#endif + + smc_cmd_phys = virt_to_phys((void*)smc_cmd); + mutex_lock(&smc_lock); + /* + * Flush the entire cache here so callers don't have to remember + * to flush the cache when passing physical addresses to the secure + * side in the buffer. + */ + flush_cache_all(); + + ret = otz_smc(smc_cmd_phys); + mutex_unlock(&smc_lock); + if (ret) { + TERR("smc_call returns error\n"); + /*printk("%s \n", otz_strerror(ret));*/ + goto out; + } + + start = (unsigned long)smc_cmd; + otz_smc_inv_range(start, start + sizeof(struct otz_smc_cmd)); + + if(smc_cmd->ret_resp_buf_len > 0) { + start = (unsigned long)resp_buf; + end = (unsigned long)resp_buf + smc_cmd->ret_resp_buf_len; + otz_smc_inv_range(start, start + end); + } + + if(ret_resp_len) { + *ret_resp_len = smc_cmd->ret_resp_buf_len; + } out: - return ret; + return ret; } #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT static void ipi_secure_notify( struct pt_regs *regs) { - otzc_service *temp_svc; - otzc_session *temp_ses; - otzc_encode *enc_temp; - - int enc_found = 0; - - if(!notify_data) - return; - - TDEBUG("otz_client pid 0x%x\n", notify_data->client_pid); - TDEBUG("otz_client_notify_handler service id 0x%x \ -session id 0x%x and encoder id 0x%x\n", -notify_data->service_id, notify_data->session_id, notify_data->enc_id); - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head){ - if(temp_svc->service_id == notify_data->service_id) { - TDEBUG("send cmd ser id %d \n",temp_svc->service_id); - - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == notify_data->session_id) { - TDEBUG("send cmd ses id %d \n",temp_ses->session_id); - - list_for_each_entry(enc_temp,&temp_ses->encode_list, head) { - if(enc_temp->encode_id == notify_data->enc_id) { - TDEBUG("send cmd enc id 0x%x\n", - enc_temp->encode_id); - enc_found = 1; - break; - } - } - } - break; - } - break; - } - } - - if(enc_found) { - enc_temp->wait_data.send_wait_flag = 1; - wake_up_interruptible(&enc_temp->wait_data.send_cmd_wq); - } + otzc_service *temp_svc; + otzc_session *temp_ses; + otzc_encode *enc_temp; + + int enc_found = 0; + + if(!notify_data) + return; + + TDEBUG("otz_client pid 0x%x\n", notify_data->client_pid); + TDEBUG("otz_client_notify_handler service id 0x%x \ + session id 0x%x and encoder id 0x%x\n", + notify_data->service_id, notify_data->session_id, notify_data->enc_id); + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head){ + if(temp_svc->service_id == notify_data->service_id) { + TDEBUG("send cmd ser id %d \n",temp_svc->service_id); + + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == notify_data->session_id) { + TDEBUG("send cmd ses id %d \n",temp_ses->session_id); + + list_for_each_entry(enc_temp,&temp_ses->encode_list, head) { + if(enc_temp->encode_id == notify_data->enc_id) { + TDEBUG("send cmd enc id 0x%x\n", + enc_temp->encode_id); + enc_found = 1; + break; + } + } + } + break; + } + break; + } + } + + if(enc_found) { + enc_temp->wait_data.send_wait_flag = 1; + wake_up_interruptible(&enc_temp->wait_data.send_cmd_wq); + } - return; + return; } #endif static void otz_client_close_session_for_service( - otzc_service* temp_svc, - otzc_session *temp_ses) + otzc_service* temp_svc, + otzc_session *temp_ses) { - int ret_val; - otzc_encode *temp_encode, *enc_context; - otzc_shared_mem *shared_mem, *temp_shared; - - - if(!temp_svc || !temp_ses) - return; - - TDEBUG("freeing ses_id %d \n",temp_ses->session_id); - - ret_val = otz_smc_call(OTZ_SVC_GLOBAL, - OTZ_GLOBAL_CMD_ID_CLOSE_SESSION, 0, 0, - &temp_svc->service_id, - sizeof(temp_svc->service_id),&temp_ses->session_id, - sizeof(temp_ses->session_id), NULL, NULL); - - list_del(&temp_ses->head); - - if (!list_empty(&temp_ses->encode_list)) { - list_for_each_entry_safe(enc_context, temp_encode, - &temp_ses->encode_list, head) { - list_del(&enc_context->head); - kfree(enc_context); - } - } - - if (!list_empty(&temp_ses->shared_mem_list)) { - list_for_each_entry_safe(shared_mem, temp_shared, - &temp_ses->shared_mem_list, s_head) { - list_del(&shared_mem->s_head); - - if(shared_mem->k_addr) - free_pages((u32)shared_mem->k_addr, - get_order(ROUND_UP(shared_mem->len, SZ_4K))); - - kfree(shared_mem); - } - } + int ret_val; + otzc_encode *temp_encode, *enc_context; + otzc_shared_mem *shared_mem, *temp_shared; + + + if(!temp_svc || !temp_ses) + return; + + TDEBUG("freeing ses_id %d \n",temp_ses->session_id); + + ret_val = otz_smc_call(OTZ_SVC_GLOBAL, + OTZ_GLOBAL_CMD_ID_CLOSE_SESSION, 0, 0, + &temp_svc->service_id, + sizeof(temp_svc->service_id),&temp_ses->session_id, + sizeof(temp_ses->session_id), NULL, NULL); + + list_del(&temp_ses->head); + + if (!list_empty(&temp_ses->encode_list)) { + list_for_each_entry_safe(enc_context, temp_encode, + &temp_ses->encode_list, head) { + list_del(&enc_context->head); + kfree(enc_context); + } + } - kfree(temp_ses); + if (!list_empty(&temp_ses->shared_mem_list)) { + list_for_each_entry_safe(shared_mem, temp_shared, + &temp_ses->shared_mem_list, s_head) { + list_del(&shared_mem->s_head); + + if(shared_mem->k_addr) + free_pages((u32)shared_mem->k_addr, + get_order(ROUND_UP(shared_mem->len, SZ_4K))); + + kfree(shared_mem); + } + } + + kfree(temp_ses); } /** @@ -405,45 +419,45 @@ */ static int otz_client_service_init(int service_id) { - int ret_code = 0; - otzc_service* svc_new; - otzc_service* temp_pos; - svc_new = (otzc_service*)kmalloc(GFP_KERNEL,sizeof(otzc_service)); - if(!svc_new){ - TERR("kmalloc failed \n"); - ret_code = -ENOMEM; - goto clean_prev_malloc; - } - - svc_new->service_id = OTZ_SVC_GLOBAL; - otzc_svc_head.service_cnt++; - INIT_LIST_HEAD(&svc_new->sessions_list); - list_add(&svc_new->head, &otzc_svc_head.services_list); - - svc_new = (otzc_service*)kmalloc(GFP_KERNEL,sizeof(otzc_service)); - if(!svc_new){ - TERR("kmalloc failed \n"); - ret_code = -ENOMEM; - goto clean_prev_malloc; - } - - svc_new->service_id = service_id; - otzc_svc_head.service_cnt++; - INIT_LIST_HEAD(&svc_new->sessions_list); - list_add(&svc_new->head, &otzc_svc_head.services_list); - goto return_func; + int ret_code = 0; + otzc_service* svc_new; + otzc_service* temp_pos; + svc_new = (otzc_service*)kmalloc(GFP_KERNEL,sizeof(otzc_service)); + if(!svc_new){ + TERR("kmalloc failed \n"); + ret_code = -ENOMEM; + goto clean_prev_malloc; + } + + svc_new->service_id = OTZ_SVC_GLOBAL; + otzc_svc_head.service_cnt++; + INIT_LIST_HEAD(&svc_new->sessions_list); + list_add(&svc_new->head, &otzc_svc_head.services_list); + + svc_new = (otzc_service*)kmalloc(GFP_KERNEL,sizeof(otzc_service)); + if(!svc_new){ + TERR("kmalloc failed \n"); + ret_code = -ENOMEM; + goto clean_prev_malloc; + } + + svc_new->service_id = service_id; + otzc_svc_head.service_cnt++; + INIT_LIST_HEAD(&svc_new->sessions_list); + list_add(&svc_new->head, &otzc_svc_head.services_list); + goto return_func; clean_prev_malloc: - if (!list_empty(&otzc_svc_head.services_list)) { - list_for_each_entry_safe(svc_new, temp_pos, - &otzc_svc_head.services_list, head) { - list_del(&svc_new->head); - kfree(svc_new); - } - } + if (!list_empty(&otzc_svc_head.services_list)) { + list_for_each_entry_safe(svc_new, temp_pos, + &otzc_svc_head.services_list, head) { + list_del(&svc_new->head); + kfree(svc_new); + } + } return_func: - return ret_code; + return ret_code; } @@ -454,39 +468,39 @@ */ static int otz_client_service_exit(void) { - otzc_shared_mem* temp_shared_mem; - otzc_shared_mem *temp_pos; - otzc_session *temp_ses, *temp_ses_pos; - otzc_service* tmp_svc = NULL, *tmp_pos; - - list_for_each_entry_safe(temp_shared_mem, temp_pos, - &otzc_shared_mem_head.shared_mem_list , head) { - list_del(&temp_shared_mem->head); - - if(temp_shared_mem->k_addr) - free_pages((u32)temp_shared_mem->k_addr, - get_order(ROUND_UP(temp_shared_mem->len, SZ_4K))); - - if(temp_shared_mem) - kfree(temp_shared_mem); - } - - - if (!list_empty(&otzc_svc_head.services_list)) { - - list_for_each_entry_safe(tmp_svc, tmp_pos, - &otzc_svc_head.services_list, head) { - - list_for_each_entry_safe(temp_ses, temp_ses_pos, - &tmp_svc->sessions_list, head) { - otz_client_close_session_for_service(tmp_svc, temp_ses); - } - list_del(&tmp_svc->head); - kfree(tmp_svc); - } - } + otzc_shared_mem* temp_shared_mem; + otzc_shared_mem *temp_pos; + otzc_session *temp_ses, *temp_ses_pos; + otzc_service* tmp_svc = NULL, *tmp_pos; + + list_for_each_entry_safe(temp_shared_mem, temp_pos, + &otzc_shared_mem_head.shared_mem_list , head) { + list_del(&temp_shared_mem->head); + + if(temp_shared_mem->k_addr) + free_pages((u32)temp_shared_mem->k_addr, + get_order(ROUND_UP(temp_shared_mem->len, SZ_4K))); + + if(temp_shared_mem) + kfree(temp_shared_mem); + } + + + if (!list_empty(&otzc_svc_head.services_list)) { + + list_for_each_entry_safe(tmp_svc, tmp_pos, + &otzc_svc_head.services_list, head) { + + list_for_each_entry_safe(temp_ses, temp_ses_pos, + &tmp_svc->sessions_list, head) { + otz_client_close_session_for_service(tmp_svc, temp_ses); + } + list_del(&tmp_svc->head); + kfree(tmp_svc); + } + } - return 0; + return 0; } @@ -500,84 +514,84 @@ */ static int otz_client_session_open(void* argp) { - otzc_service* svc; - otzc_session* ses_new; - struct ser_ses_id ses_open; - int svc_found = 0; - int ret_val = 0, ret_resp_len; - - TDEBUG("inside session open\n"); - - if(copy_from_user(&ses_open, argp, sizeof(ses_open))){ - TERR("copy from user failed\n"); - ret_val = -EFAULT; - goto return_func; - } - - TDEBUG("service_id = %d\n",ses_open.service_id); - - list_for_each_entry(svc, &otzc_svc_head.services_list, head){ - if( svc->service_id == ses_open.service_id){ - svc_found = 1; - break; - } - } - - if(!svc_found) { - ret_val = -EINVAL; - goto return_func; - } - - ses_new = (otzc_session*)kmalloc(GFP_KERNEL, sizeof(otzc_session)); - if(!ses_new) { - TERR("kmalloc failed\n"); - ret_val = -ENOMEM; - goto return_func; - } - - TDEBUG("service id 0x%x\n", ses_open.service_id); - - ret_val = otz_smc_call(OTZ_SVC_GLOBAL, OTZ_GLOBAL_CMD_ID_OPEN_SESSION, 0, 0, - &ses_open.service_id, sizeof(ses_open.service_id), &ses_new->session_id, - sizeof(ses_new->session_id), NULL, &ret_resp_len); - - if(ret_val != SMC_SUCCESS) { - goto clean_session; - } - - if(ses_new->session_id == -1) { - TERR("invalid session id\n"); - ret_val = -EINVAL; - goto clean_session; - } - - TDEBUG("session id 0x%x for service id 0x%x\n", ses_new->session_id, - ses_open.service_id); - - ses_open.session_id = ses_new->session_id; - - INIT_LIST_HEAD(&ses_new->encode_list); - INIT_LIST_HEAD(&ses_new->shared_mem_list); - list_add_tail(&ses_new->head, &svc->sessions_list); - - if(copy_to_user(argp, &ses_open, sizeof(ses_open))) { - TERR("copy from user failed\n"); - ret_val = -EFAULT; - goto clean_hdr_buf; - } + otzc_service* svc; + otzc_session* ses_new; + struct ser_ses_id ses_open; + int svc_found = 0; + int ret_val = 0, ret_resp_len; + + TDEBUG("inside session open\n"); + + if(copy_from_user(&ses_open, argp, sizeof(ses_open))){ + TERR("copy from user failed\n"); + ret_val = -EFAULT; + goto return_func; + } + + TDEBUG("service_id = %d\n",ses_open.service_id); + + list_for_each_entry(svc, &otzc_svc_head.services_list, head){ + if( svc->service_id == ses_open.service_id){ + svc_found = 1; + break; + } + } + + if(!svc_found) { + ret_val = -EINVAL; + goto return_func; + } + + ses_new = (otzc_session*)kmalloc(GFP_KERNEL, sizeof(otzc_session)); + if(!ses_new) { + TERR("kmalloc failed\n"); + ret_val = -ENOMEM; + goto return_func; + } + + TDEBUG("service id 0x%x\n", ses_open.service_id); + + ret_val = otz_smc_call(OTZ_SVC_GLOBAL, OTZ_GLOBAL_CMD_ID_OPEN_SESSION, 0, 0, + &ses_open.service_id, sizeof(ses_open.service_id), &ses_new->session_id, + sizeof(ses_new->session_id), NULL, &ret_resp_len); + + if(ret_val != SMC_SUCCESS) { + goto clean_session; + } + + if(ses_new->session_id == -1) { + TERR("invalid session id\n"); + ret_val = -EINVAL; + goto clean_session; + } + + TDEBUG("session id 0x%x for service id 0x%x\n", ses_new->session_id, + ses_open.service_id); + + ses_open.session_id = ses_new->session_id; + + INIT_LIST_HEAD(&ses_new->encode_list); + INIT_LIST_HEAD(&ses_new->shared_mem_list); + list_add_tail(&ses_new->head, &svc->sessions_list); + + if(copy_to_user(argp, &ses_open, sizeof(ses_open))) { + TERR("copy from user failed\n"); + ret_val = -EFAULT; + goto clean_hdr_buf; + } - /* TDEBUG("session created from service \n"); */ - goto return_func; + /* TDEBUG("session created from service \n"); */ + goto return_func; clean_hdr_buf: - list_del(&ses_new->head); + list_del(&ses_new->head); clean_session: - kfree(ses_new); + kfree(ses_new); return_func: - return ret_val; + return ret_val; } /** @@ -589,37 +603,37 @@ */ static int otz_client_session_close(void* argp) { - otzc_service *temp_svc; - otzc_session *temp_ses; - int ret_val = 0; - - struct ser_ses_id ses_close; - - TDEBUG("inside session close\n"); - - if(copy_from_user(&ses_close, argp, sizeof(ses_close))) { - TERR("copy from user failed \n"); - ret_val = -EFAULT; - goto return_func; - } - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { - if( temp_svc->service_id == ses_close.service_id) { - - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == ses_close.session_id) { - otz_client_close_session_for_service(temp_svc, temp_ses); - break; - } - } - break; - } - } + otzc_service *temp_svc; + otzc_session *temp_ses; + int ret_val = 0; + + struct ser_ses_id ses_close; + + TDEBUG("inside session close\n"); + + if(copy_from_user(&ses_close, argp, sizeof(ses_close))) { + TERR("copy from user failed \n"); + ret_val = -EFAULT; + goto return_func; + } + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { + if( temp_svc->service_id == ses_close.service_id) { + + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == ses_close.session_id) { + otz_client_close_session_for_service(temp_svc, temp_ses); + break; + } + } + break; + } + } - TDEBUG("return from close\n"); + TDEBUG("return from close\n"); return_func: - return ret_val; + return ret_val; } @@ -630,8 +644,8 @@ */ static int otz_client_register_service(void) { -/* Query secure and find out */ - return 0; + /* Query secure and find out */ + return 0; } /** @@ -641,8 +655,8 @@ */ static int otz_client_unregister_service(void) { -/*query secure and do*/ - return 0; + /*query secure and do*/ + return 0; } /** @@ -655,50 +669,50 @@ */ static int otz_client_mmap(struct file *filp, struct vm_area_struct *vma) { - int ret = 0; - otzc_shared_mem *mem_new; - u32* alloc_addr; - long length = vma->vm_end - vma->vm_start; - - TDEBUG("Inside otz_client mmap\n"); - - alloc_addr = (void*) __get_free_pages(GFP_KERNEL, - get_order(ROUND_UP(length, SZ_4K))); - if(!alloc_addr) { - TERR("get free pages failed \n"); - ret = -ENOMEM; - goto return_func; - } - - TDEBUG("mmap k_addr %p \n",alloc_addr); - - if (remap_pfn_range(vma, - vma->vm_start, - ((virt_to_phys(alloc_addr)) >> PAGE_SHIFT), - length, - vma->vm_page_prot)) { - ret = -EAGAIN; - goto return_func; - } - - mem_new = kmalloc(GFP_KERNEL, sizeof(otzc_shared_mem)); - if(!mem_new) { - TERR("kmalloc failed\n"); - ret = -ENOMEM; - goto return_func; - } - - mem_new->k_addr = alloc_addr; - mem_new->len = length; - mem_new->u_addr = (void*)vma->vm_start; - mem_new->index = mem_new->u_addr; - - otzc_shared_mem_head.shared_mem_cnt++; + int ret = 0; + otzc_shared_mem *mem_new; + u32* alloc_addr; + long length = vma->vm_end - vma->vm_start; + + TDEBUG("Inside otz_client mmap\n"); + + alloc_addr = (void*) __get_free_pages(GFP_KERNEL, + get_order(ROUND_UP(length, SZ_4K))); + if(!alloc_addr) { + TERR("get free pages failed \n"); + ret = -ENOMEM; + goto return_func; + } + + TDEBUG("mmap k_addr %p \n",alloc_addr); + + if (remap_pfn_range(vma, + vma->vm_start, + ((virt_to_phys(alloc_addr)) >> PAGE_SHIFT), + length, + vma->vm_page_prot)) { + ret = -EAGAIN; + goto return_func; + } + + mem_new = kmalloc(GFP_KERNEL, sizeof(otzc_shared_mem)); + if(!mem_new) { + TERR("kmalloc failed\n"); + ret = -ENOMEM; + goto return_func; + } + + mem_new->k_addr = alloc_addr; + mem_new->len = length; + mem_new->u_addr = (void*)vma->vm_start; + mem_new->index = mem_new->u_addr; + + otzc_shared_mem_head.shared_mem_cnt++; - list_add_tail( &mem_new->head ,&otzc_shared_mem_head.shared_mem_list); + list_add_tail( &mem_new->head ,&otzc_shared_mem_head.shared_mem_list); return_func: - return ret; + return ret; } @@ -712,82 +726,82 @@ */ static int otz_client_wait_cmd( void* argp) { - int ret = 0; - int ret_resp_len = 0; - struct otz_client_encode_cmd enc; - - otzc_service *temp_svc; - otzc_session *temp_ses; - otzc_encode *enc_temp; - - int enc_found = 0; - - - if(copy_from_user(&enc, argp, sizeof(enc))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - TDEBUG("enc id %d\n",enc.encode_id); - TDEBUG("ser id %d\n",enc.service_id); - TDEBUG("ses id %d\n",enc.session_id); - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head){ - if(temp_svc->service_id == enc.service_id) { - TDEBUG("send cmd ser id %d \n",temp_svc->service_id); - - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == enc.session_id) { - TDEBUG("send cmd ses id %d \n",temp_ses->session_id); - - list_for_each_entry(enc_temp,&temp_ses->encode_list, head) { - if(enc_temp->encode_id == enc.encode_id) { - TDEBUG("send cmd enc id 0x%x\n", - enc_temp->encode_id); - enc_found = 1; - break; - } - } - } - break; - } - break; - } - } - - if(!enc_found){ - ret = -EINVAL; - goto return_func; - } - - if(wait_event_interruptible(enc_temp->wait_data.send_cmd_wq, - enc_temp->wait_data.send_wait_flag)) { - ret = -ERESTARTSYS; - goto return_func; - } - - enc_temp->wait_data.send_wait_flag = 0; - - ret = otz_smc_call(enc.service_id, enc.cmd_id, enc.session_id, - enc.encode_id, - enc_temp->ker_req_data_addr, enc_temp->enc_req_offset, - enc_temp->ker_res_data_addr, enc_temp->enc_res_offset, - enc_temp->meta, &ret_resp_len); - - if(ret != SMC_SUCCESS) { - TERR("send cmd secure call failed \n"); - goto return_func; - } - - if(copy_to_user(argp, &enc, sizeof(enc))) { - TERR("copy to user failed \n"); - ret = -EFAULT; - goto return_func; - } + int ret = 0; + int ret_resp_len = 0; + struct otz_client_encode_cmd enc; + + otzc_service *temp_svc; + otzc_session *temp_ses; + otzc_encode *enc_temp; + + int enc_found = 0; + + + if(copy_from_user(&enc, argp, sizeof(enc))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + TDEBUG("enc id %d\n",enc.encode_id); + TDEBUG("ser id %d\n",enc.service_id); + TDEBUG("ses id %d\n",enc.session_id); + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head){ + if(temp_svc->service_id == enc.service_id) { + TDEBUG("send cmd ser id %d \n",temp_svc->service_id); + + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == enc.session_id) { + TDEBUG("send cmd ses id %d \n",temp_ses->session_id); + + list_for_each_entry(enc_temp,&temp_ses->encode_list, head) { + if(enc_temp->encode_id == enc.encode_id) { + TDEBUG("send cmd enc id 0x%x\n", + enc_temp->encode_id); + enc_found = 1; + break; + } + } + } + break; + } + break; + } + } + + if(!enc_found){ + ret = -EINVAL; + goto return_func; + } + + if(wait_event_interruptible(enc_temp->wait_data.send_cmd_wq, + enc_temp->wait_data.send_wait_flag)) { + ret = -ERESTARTSYS; + goto return_func; + } + + enc_temp->wait_data.send_wait_flag = 0; + + ret = otz_smc_call(enc.service_id, enc.cmd_id, enc.session_id, + enc.encode_id, + enc_temp->ker_req_data_addr, enc_temp->enc_req_offset, + enc_temp->ker_res_data_addr, enc_temp->enc_res_offset, + enc_temp->meta, &ret_resp_len); + + if(ret != SMC_SUCCESS) { + TERR("send cmd secure call failed \n"); + goto return_func; + } + + if(copy_to_user(argp, &enc, sizeof(enc))) { + TERR("copy to user failed \n"); + ret = -EFAULT; + goto return_func; + } return_func: - return ret; + return ret; } #endif @@ -801,89 +815,95 @@ */ static int otz_client_send_cmd( void* argp) { - int ret = 0; - int ret_resp_len = 0; - struct otz_client_encode_cmd enc; - - otzc_service *temp_svc; - otzc_session *temp_ses; - otzc_encode *enc_temp; - - int enc_found = 0; - - TDEBUG("inside send cmd \n"); - - if(copy_from_user(&enc, argp, sizeof(enc))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - TDEBUG("enc id %d\n",enc.encode_id); - TDEBUG("ser id %d\n",enc.service_id); - TDEBUG("ses id %d\n",enc.session_id); - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head){ - if(temp_svc->service_id == enc.service_id) { - TDEBUG("send cmd ser id %d \n",temp_svc->service_id); - - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == enc.session_id) { - TDEBUG("send cmd ses id %d \n",temp_ses->session_id); - - if(enc.encode_id != -1) { - list_for_each_entry(enc_temp, - &temp_ses->encode_list, head) { - if(enc_temp->encode_id == enc.encode_id) { - TDEBUG("send cmd enc id 0x%x\n", - enc_temp->encode_id); - enc_found = 1; - break; - } - } - } - else { - ret = otz_client_prepare_encode(&enc, - &enc_temp, &temp_ses); - if(!ret) { - enc_found = 1; - } - break; - } - } - break; - } - break; - } - } - - if(!enc_found){ - ret = -EINVAL; - goto return_func; - } - - - ret = otz_smc_call(enc.service_id, enc.cmd_id, enc.session_id, - enc.encode_id, - enc_temp->ker_req_data_addr, enc_temp->enc_req_offset, - enc_temp->ker_res_data_addr, enc_temp->enc_res_offset, - enc_temp->meta, &ret_resp_len); - - if(ret != SMC_SUCCESS) { - TERR("send cmd secure call failed \n"); - goto return_func; - } - - TDEBUG("smc_success\n"); - - if(copy_to_user(argp, &enc, sizeof(enc))) { - TERR("copy to user failed \n"); - ret = -EFAULT; - goto return_func; - } + int ret = 0; + int ret_resp_len = 0; + struct otz_client_encode_cmd enc; + + otzc_service *temp_svc; + otzc_session *temp_ses; + otzc_encode *enc_temp; + + int enc_found = 0; + + TDEBUG("inside send cmd \n"); + + if(copy_from_user(&enc, argp, sizeof(enc))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + TDEBUG("enc id %d\n",enc.encode_id); + TDEBUG("ser id %d\n",enc.service_id); + TDEBUG("ses id %d\n",enc.session_id); + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head){ + if(temp_svc->service_id == enc.service_id) { + TDEBUG("send cmd ser id %d \n",temp_svc->service_id); + + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == enc.session_id) { + TDEBUG("send cmd ses id %d \n",temp_ses->session_id); + + if(enc.encode_id != -1) { + list_for_each_entry(enc_temp, + &temp_ses->encode_list, head) { + if(enc_temp->encode_id == enc.encode_id) { + TDEBUG("send cmd enc id 0x%x\n", + enc_temp->encode_id); + enc_found = 1; + break; + } + } + } + else { + ret = otz_client_prepare_encode(&enc, + &enc_temp, &temp_ses); + if(!ret) { + enc_found = 1; + } + break; + } + } + break; + } + break; + } + } + + if(!enc_found){ + ret = -EINVAL; + TDEBUG("Enc not found \n"); + goto return_func; + } + +#if ENABLE_DEBUG_LOGS + TDEBUG("enc.cmd_id ================== %d and enc_temp->meta ======= %08x" + "enc_temp->meta[0].type=%02x and enc_temp->meta[1].type=%02x \n", + enc.cmd_id,enc_temp->meta,enc_temp->meta[0].type,enc_temp->meta[1].type); +#endif + + ret = otz_smc_call(enc.service_id, enc.cmd_id, enc.session_id, + enc.encode_id, + enc_temp->ker_req_data_addr, enc_temp->enc_req_offset, + enc_temp->ker_res_data_addr, enc_temp->enc_res_offset, + enc_temp->meta, &ret_resp_len); + + if(ret != SMC_SUCCESS) { + TERR("send cmd secure call failed \n"); + goto return_func; + } + + TDEBUG("smc_success\n"); + + if(copy_to_user(argp, &enc, sizeof(enc))) { + TERR("copy to user failed \n"); + ret = -EFAULT; + goto return_func; + } return_func: - return ret; + return ret; } @@ -896,59 +916,59 @@ */ static int otz_client_operation_release(void *argp) { - struct otz_client_encode_cmd enc; - otzc_encode *enc_context; - otzc_service *temp_svc; - otzc_session *temp_ses; - int session_found = 0, enc_found = 0; - int ret =0; - - if(copy_from_user(&enc, argp, sizeof(enc))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { - if( temp_svc->service_id == enc.service_id) { - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == enc.session_id) { - session_found = 1; - break; - } - } - break; - } - } - - if(!session_found) { - ret = -EINVAL; - goto return_func; - } - - if(enc.encode_id != -1) { - list_for_each_entry(enc_context,&temp_ses->encode_list, head) { - if(enc_context->encode_id == enc.encode_id) { - enc_found = 1; - break; - } - } - } - - if(enc_found && enc_context) { - if(enc_context->ker_req_data_addr) - kfree(enc_context->ker_req_data_addr); - - if(enc_context->ker_res_data_addr) - kfree(enc_context->ker_res_data_addr); - - list_del(&enc_context->head); - - kfree(enc_context->meta); - kfree(enc_context); - } + struct otz_client_encode_cmd enc; + otzc_encode *enc_context; + otzc_service *temp_svc; + otzc_session *temp_ses; + int session_found = 0, enc_found = 0; + int ret =0; + + if(copy_from_user(&enc, argp, sizeof(enc))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { + if( temp_svc->service_id == enc.service_id) { + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == enc.session_id) { + session_found = 1; + break; + } + } + break; + } + } + + if(!session_found) { + ret = -EINVAL; + goto return_func; + } + + if(enc.encode_id != -1) { + list_for_each_entry(enc_context,&temp_ses->encode_list, head) { + if(enc_context->encode_id == enc.encode_id) { + enc_found = 1; + break; + } + } + } + + if(enc_found && enc_context) { + if(enc_context->ker_req_data_addr) + kfree(enc_context->ker_req_data_addr); + + if(enc_context->ker_res_data_addr) + kfree(enc_context->ker_res_data_addr); + + list_del(&enc_context->head); + + kfree(enc_context->meta); + kfree(enc_context); + } return_func: - return ret; + return ret; } /** @@ -961,81 +981,90 @@ * @return */ static int otz_client_prepare_encode(struct otz_client_encode_cmd *enc, - otzc_encode **penc_context, - otzc_session **psession) + otzc_encode **penc_context, + otzc_session **psession) { - otzc_service *temp_svc; - otzc_session *temp_ses; - otzc_encode *enc_context; - int session_found = 0, enc_found = 0; - int ret = 0; - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { - if( temp_svc->service_id == enc->service_id) { - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == enc->session_id) { - TDEBUG("enc cmd ses id %d \n",temp_ses->session_id); - session_found = 1; - break; - } - } - break; - } - } - - if(!session_found) { - TERR("session not found\n"); - ret = -EINVAL; - goto return_func; - } - - if(enc->encode_id != -1) { - list_for_each_entry(enc_context,&temp_ses->encode_list, head) { - if(enc_context->encode_id == enc->encode_id) { - enc_found = 1; - break; - } - } - } - - if(!enc_found) { - enc_context = kmalloc(GFP_KERNEL, sizeof(otzc_encode)); - if(!enc_context) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto return_func; - } - enc_context->meta = kmalloc(GFP_KERNEL, - sizeof(struct otzc_encode_meta ) * - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS)); - if(!enc_context->meta) { - TERR("kmalloc failed \n"); - kfree(enc_context); - ret = -ENOMEM; - goto return_func; - } - enc_context->encode_id = (int)enc_context; - enc->encode_id = enc_context->encode_id; - enc_context->ker_req_data_addr = NULL; - enc_context->ker_res_data_addr = NULL; - enc_context->enc_req_offset = 0; - enc_context->enc_res_offset = 0; - enc_context->enc_req_pos = 0; - enc_context->enc_res_pos = OTZ_MAX_REQ_PARAMS; - enc_context->dec_res_pos = OTZ_MAX_REQ_PARAMS; - enc_context->dec_offset = 0; + otzc_service *temp_svc; + otzc_session *temp_ses; + otzc_encode *enc_context; + int session_found = 0, enc_found = 0; + int ret = 0; + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { + if( temp_svc->service_id == enc->service_id) { + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == enc->session_id) { + TDEBUG("enc cmd ses id %d \n",temp_ses->session_id); + session_found = 1; + break; + } + } + break; + } + } + + if(!session_found) { + TERR("session not found\n"); + ret = -EINVAL; + goto return_func; + } + + if(enc->encode_id != -1) { + list_for_each_entry(enc_context,&temp_ses->encode_list, head) { + if(enc_context->encode_id == enc->encode_id) { +#if ENABLE_DEBUG_LOGS + TDEBUG("enc_context found for enc->encode_id = %02x \n",enc->encode_id); +#endif + enc_found = 1; + break; + } + } + } + + if(!enc_found) { + enc_context = kmalloc(GFP_KERNEL, sizeof(otzc_encode)); +#if ENABLE_DEBUG_LOGS + TDEBUG("enc_context = %08x \n",enc_context); +#endif + if(!enc_context) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto return_func; + } + enc_context->meta = kmalloc(GFP_KERNEL, + sizeof(struct otzc_encode_meta ) * + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS)); +#if ENABLE_DEBUG_LOGS + TDEBUG("allocated memory for enc_context->meta = %08x \n",enc_context->meta); +#endif + if(!enc_context->meta) { + TERR("kmalloc failed \n"); + kfree(enc_context); + ret = -ENOMEM; + goto return_func; + } + enc_context->encode_id = (int)enc_context; + enc->encode_id = enc_context->encode_id; + enc_context->ker_req_data_addr = NULL; + enc_context->ker_res_data_addr = NULL; + enc_context->enc_req_offset = 0; + enc_context->enc_res_offset = 0; + enc_context->enc_req_pos = 0; + enc_context->enc_res_pos = OTZ_MAX_REQ_PARAMS; + enc_context->dec_res_pos = OTZ_MAX_REQ_PARAMS; + enc_context->dec_offset = 0; #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - enc_context->wait_data.send_wait_flag = 0; - init_waitqueue_head(&enc_context->wait_data.send_cmd_wq); + enc_context->wait_data.send_wait_flag = 0; + init_waitqueue_head(&enc_context->wait_data.send_cmd_wq); #endif - list_add_tail(&enc_context->head, &temp_ses->encode_list); - } + list_add_tail(&enc_context->head, &temp_ses->encode_list); + } - *penc_context = enc_context; - *psession = temp_ses; + *penc_context = enc_context; + *psession = temp_ses; return_func: - return ret; + return ret; } /** @@ -1047,90 +1076,107 @@ */ static int otz_client_encode_uint32(void* argp) { - struct otz_client_encode_cmd enc; - int ret = 0; - otzc_session *session; - otzc_encode *enc_context; - - - if(copy_from_user(&enc, argp, sizeof(enc))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - ret = otz_client_prepare_encode(&enc, &enc_context, &session); - - if(ret){ - goto return_func; - } - - if(enc.param_type == OTZC_PARAM_IN) { - if(!enc_context->ker_req_data_addr) { - enc_context->ker_req_data_addr = - kmalloc(GFP_KERNEL, OTZ_1K_SIZE); - if(!enc_context->ker_req_data_addr) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto ret_encode_u32; - } - } - if( (enc_context->enc_req_offset + sizeof(u32) <= OTZ_1K_SIZE) && - (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { - *((u32*)enc_context->ker_req_data_addr + - enc_context->enc_req_offset) = *((u32*)enc.data); - enc_context->enc_req_offset += sizeof(u32); - enc_context->meta[enc_context->enc_req_pos].type - = OTZ_ENC_UINT32; - enc_context->meta[enc_context->enc_req_pos].len = sizeof(u32); - enc_context->enc_req_pos++; - } - else { - ret = -ENOMEM;/* Check this */ - goto ret_encode_u32; - } - } - else if(enc.param_type == OTZC_PARAM_OUT) { - if(!enc_context->ker_res_data_addr) { - enc_context->ker_res_data_addr = - kmalloc(GFP_KERNEL, OTZ_1K_SIZE); - if(!enc_context->ker_res_data_addr) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto ret_encode_u32; - } - } - if( (enc_context->enc_res_offset + sizeof(u32) <= OTZ_1K_SIZE) && - (enc_context->enc_res_pos < - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { - - if(enc.data != NULL) { - enc_context->meta[enc_context->enc_res_pos].usr_addr - = (u32)enc.data; - } - else { - enc_context->meta[enc_context->enc_res_pos].usr_addr = 0; - } - enc_context->enc_res_offset += sizeof(u32); - enc_context->meta[enc_context->enc_res_pos].type = OTZ_ENC_UINT32; - enc_context->meta[enc_context->enc_res_pos].len = sizeof(u32); - enc_context->enc_res_pos++; - } - else { - ret = -ENOMEM; /* check this */ - goto ret_encode_u32; - } - } + struct otz_client_encode_cmd enc; + int ret = 0; + otzc_session *session; + otzc_encode *enc_context; + + + if(copy_from_user(&enc, argp, sizeof(enc))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + ret = otz_client_prepare_encode(&enc, &enc_context, &session); + + if(ret){ + goto return_func; + } + + if(enc.param_type == OTZC_PARAM_IN) { + if(!enc_context->ker_req_data_addr) { + enc_context->ker_req_data_addr = + kmalloc(GFP_KERNEL, OTZ_1K_SIZE);//FIXME : The actual allocation here is 256 bytes. + // Beyond that memory is allocated for enc_context->meta +#if ENABLE_DEBUG_LOGS + TDEBUG("for enc_context->ker_req_data_addr = %08x for size = %08x \n", + enc_context->ker_req_data_addr,OTZ_1K_SIZE); +#endif + if(!enc_context->ker_req_data_addr) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto ret_encode_u32; + } + } + if( (enc_context->enc_req_offset + sizeof(u32) <= OTZ_1K_SIZE) && + (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { + *((u32*)enc_context->ker_req_data_addr + + enc_context->enc_req_offset) = *((u32*)enc.data); + enc_context->enc_req_offset += sizeof(u32); + enc_context->meta[enc_context->enc_req_pos].type + = OTZ_ENC_UINT32; + enc_context->meta[enc_context->enc_req_pos].len = sizeof(u32); + enc_context->enc_req_pos++; +#if ENABLE_DEBUG_LOGS + TDEBUG("Assigned enc_context->meta[enc_context->enc_req_pos].type to OTZ_ENC_UINT32 " + "at pos = %d address of meta = %08x enc_context->meta[0].type = %02x \n", + (enc_context->enc_req_pos-1),enc_context->meta,enc_context->meta[0].type); +#endif + } + else { + TERR("(enc_context->enc_req_offset + sizeof(u32) <= OTZ_1K_SIZE) condn failed \n"); + ret = -ENOMEM;/* Check this */ + goto ret_encode_u32; + } + } + else if(enc.param_type == OTZC_PARAM_OUT) { + if(!enc_context->ker_res_data_addr) { + enc_context->ker_res_data_addr = + kmalloc(GFP_KERNEL, OTZ_1K_SIZE); + if(!enc_context->ker_res_data_addr) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto ret_encode_u32; + } + } + if( (enc_context->enc_res_offset + sizeof(u32) <= OTZ_1K_SIZE) && + (enc_context->enc_res_pos < + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { + + if(enc.data != NULL) { + enc_context->meta[enc_context->enc_res_pos].usr_addr + = (u32)enc.data; + } + else { + enc_context->meta[enc_context->enc_res_pos].usr_addr = 0; + } + enc_context->enc_res_offset += sizeof(u32); + enc_context->meta[enc_context->enc_res_pos].type = OTZ_ENC_UINT32; + enc_context->meta[enc_context->enc_res_pos].len = sizeof(u32); + enc_context->enc_res_pos++; + } + else { + TERR("condn (enc_context->enc_res_offset + sizeof(u32) <= OTZ_1K_SIZE) failed \n"); + ret = -ENOMEM; /* check this */ + goto ret_encode_u32; + } + } ret_encode_u32: - if(copy_to_user(argp, &enc, sizeof(enc))){ - TERR("copy from user failed \n"); - return -EFAULT; - } + if(copy_to_user(argp, &enc, sizeof(enc))){ + TERR("copy from user failed \n"); + return -EFAULT; + } return_func: - return ret; +#if ENABLE_DEBUG_LOGS + TDEBUG("Before returning from otz_client_encode_uint32 enc_context->meta[enc_context->enc_req_pos].type " + "to OTZ_ENC_UINT32 at pos = %d address of meta = %08x enc_context->meta[0].type = %02x \n", + (enc_context->enc_req_pos-1),enc_context->meta,enc_context->meta[0].type); +#endif + return ret; } /** @@ -1142,98 +1188,124 @@ */ static int otz_client_encode_array(void* argp) { - struct otz_client_encode_cmd enc; - int ret = 0; - otzc_encode *enc_context; - otzc_session *session; - - if(copy_from_user(&enc, argp, sizeof(enc))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - ret = otz_client_prepare_encode(&enc, &enc_context, &session); - - if(ret){ - goto return_func; - } - TDEBUG("enc_id 0x%x\n",enc_context->encode_id); - - if(enc.param_type == OTZC_PARAM_IN) { - if(!enc_context->ker_req_data_addr) { - TDEBUG("allocate req data\n"); - enc_context->ker_req_data_addr = kmalloc(GFP_KERNEL, - OTZ_1K_SIZE); - if(!enc_context->ker_req_data_addr) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto ret_encode_array; - } - } - TDEBUG("append encode data\n"); - - if((enc_context->enc_req_offset + enc.len <= OTZ_1K_SIZE) && - (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { - if(copy_from_user( - enc_context->ker_req_data_addr + enc_context->enc_req_offset, - enc.data , - enc.len)) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto ret_encode_array; - } - enc_context->enc_req_offset += enc.len; - - enc_context->meta[enc_context->enc_req_pos].type = OTZ_ENC_ARRAY; - enc_context->meta[enc_context->enc_req_pos].len = enc.len; - enc_context->enc_req_pos++; - } - else { - ret = -ENOMEM; /* Check this */ - goto ret_encode_array; - } - } - else if(enc.param_type == OTZC_PARAM_OUT) { - if(!enc_context->ker_res_data_addr) { - enc_context->ker_res_data_addr = kmalloc(GFP_KERNEL, - OTZ_1K_SIZE); - if(!enc_context->ker_res_data_addr) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto ret_encode_array; - } - } - if((enc_context->enc_res_offset + enc.len <= OTZ_1K_SIZE) && - (enc_context->enc_res_pos < - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { - if(enc.data != NULL) { - enc_context->meta[enc_context->enc_res_pos].usr_addr - = (u32)enc.data; - } - else { - enc_context->meta[enc_context->enc_res_pos].usr_addr = 0; - } - enc_context->enc_res_offset += enc.len; - enc_context->meta[enc_context->enc_res_pos].type = OTZ_ENC_ARRAY; - enc_context->meta[enc_context->enc_res_pos].len = enc.len; - - enc_context->enc_res_pos++; - } - else { - ret = -ENOMEM;/* Check this */ - goto ret_encode_array; - } - } + struct otz_client_encode_cmd enc; + int ret = 0; + otzc_encode *enc_context; + otzc_session *session; + + if(copy_from_user(&enc, argp, sizeof(enc))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + ret = otz_client_prepare_encode(&enc, &enc_context, &session); +#if ENABLE_DEBUG_LOGS + TDEBUG("In otz_client_encode_array() enc_context->meta[enc_context->enc_req_pos].type to OTZ_ENC_ARRAY " + "at pos = %d enc_context->meta=%08x " + "enc_context->meta[0].type=%02x\n",(enc_context->enc_req_pos - 1),enc_context->meta, + enc_context->meta[0].type); +#endif + if(ret){ + goto return_func; + } + TDEBUG("enc_id 0x%x\n",enc_context->encode_id); + + if(enc.param_type == OTZC_PARAM_IN) { + if(!enc_context->ker_req_data_addr) { + TDEBUG("allocate req data\n"); + enc_context->ker_req_data_addr = kmalloc(GFP_KERNEL, + OTZ_1K_SIZE); + if(!enc_context->ker_req_data_addr) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto ret_encode_array; + } + } + TDEBUG("append encode data\n"); + + if((enc_context->enc_req_offset + enc.len <= OTZ_1K_SIZE) && + (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { + +#if ENABLE_DEBUG_LOGS + + TDEBUG("Before copy_from_user enc_context->meta[enc_context->enc_req_pos].type to OTZ_ENC_ARRAY " + "at pos = %d enc_context->meta=%08x enc_context->meta[0].type=%02x," + "enc_context->ker_req_data_addr = %08x enc_context->enc_req_offset = %08x " + "added = %08x enc.len=%08x \n", + (enc_context->enc_req_pos ),enc_context->meta,enc_context->meta[0].type, + enc_context->ker_req_data_addr , enc_context->enc_req_offset, + (enc_context->ker_req_data_addr + enc_context->enc_req_offset), + enc.len ); +#endif + + if(copy_from_user( + enc_context->ker_req_data_addr + enc_context->enc_req_offset, + enc.data , + enc.len)) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto ret_encode_array; + } + enc_context->enc_req_offset += enc.len; + + enc_context->meta[enc_context->enc_req_pos].type = OTZ_ENC_ARRAY; + enc_context->meta[enc_context->enc_req_pos].len = enc.len; + enc_context->enc_req_pos++; +#if ENABLE_DEBUG_LOGS + TDEBUG("Assigned enc_context->meta[enc_context->enc_req_pos].type to OTZ_ENC_ARRAY " + "at pos = %d enc_context->meta=%08x " + "enc_context->meta[0].type=%02x\n",(enc_context->enc_req_pos - 1),enc_context->meta, + enc_context->meta[0].type); +#endif + } + else { + TERR(" (enc_context->enc_req_offset + enc.len <= OTZ_1K_SIZE) condn failed \n"); + ret = -ENOMEM; /* Check this */ + goto ret_encode_array; + } + } + else if(enc.param_type == OTZC_PARAM_OUT) { + if(!enc_context->ker_res_data_addr) { + enc_context->ker_res_data_addr = kmalloc(GFP_KERNEL, + OTZ_1K_SIZE); + if(!enc_context->ker_res_data_addr) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto ret_encode_array; + } + } + if((enc_context->enc_res_offset + enc.len <= OTZ_1K_SIZE) && + (enc_context->enc_res_pos < + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { + if(enc.data != NULL) { + enc_context->meta[enc_context->enc_res_pos].usr_addr + = (u32)enc.data; + } + else { + enc_context->meta[enc_context->enc_res_pos].usr_addr = 0; + } + enc_context->enc_res_offset += enc.len; + enc_context->meta[enc_context->enc_res_pos].type = OTZ_ENC_ARRAY; + enc_context->meta[enc_context->enc_res_pos].len = enc.len; + + enc_context->enc_res_pos++; + } + else { + TERR(" condn (enc_context->enc_res_offset + enc.len <= OTZ_1K_SIZE) failed \n"); + ret = -ENOMEM;/* Check this */ + goto ret_encode_array; + } + } ret_encode_array: - if(copy_to_user(argp, &enc, sizeof(enc))){ - TERR("copy from user failed \n"); - return -EFAULT; - } + if(copy_to_user(argp, &enc, sizeof(enc))){ + TERR("copy from user failed \n"); + return -EFAULT; + } return_func: - return ret; + return ret; } /** @@ -1245,118 +1317,118 @@ */ static int otz_client_encode_mem_ref(void* argp) { - struct otz_client_encode_cmd enc; - int ret = 0, shared_mem_found = 0; - otzc_encode *enc_context; - otzc_session *session; - otzc_shared_mem* temp_shared_mem; - - if(copy_from_user(&enc, argp, sizeof(enc))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - ret = otz_client_prepare_encode(&enc, &enc_context, &session); - - if(ret){ - goto return_func; - } - TDEBUG("enc_id 0x%x\n",enc_context->encode_id); - list_for_each_entry(temp_shared_mem, &session->shared_mem_list,s_head){ - if(temp_shared_mem->index == (u32*)enc.data){ - shared_mem_found = 1; - break; - } - } - - if(!shared_mem_found) { - list_for_each_entry(temp_shared_mem, - &otzc_shared_mem_head.shared_mem_list , head) { - if(temp_shared_mem->index == (u32*)enc.data){ - shared_mem_found = 1; - break; - } - } - } - - if(!shared_mem_found) { - - TERR("shared memory not registered for \ -this session 0x%x\n", session->session_id); - ret = -EINVAL; - goto return_func; - } - - if(enc.param_type == OTZC_PARAM_IN) { - if(!enc_context->ker_req_data_addr) { - enc_context->ker_req_data_addr = kmalloc(GFP_KERNEL, - OTZ_1K_SIZE); - if(!enc_context->ker_req_data_addr) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto ret_encode_array; - } - } - - if((enc_context->enc_req_offset + sizeof(u32) <= - OTZ_1K_SIZE) && - (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { - *((u32*)enc_context->ker_req_data_addr + - enc_context->enc_req_offset) - = virt_to_phys(temp_shared_mem->k_addr+enc.offset); - enc_context->enc_req_offset += sizeof(u32); - enc_context->meta[enc_context->enc_req_pos].usr_addr - = (u32)(temp_shared_mem->u_addr + enc.offset); - enc_context->meta[enc_context->enc_req_pos].type = OTZ_MEM_REF; - enc_context->meta[enc_context->enc_req_pos].len = enc.len; - - enc_context->enc_req_pos++; - } - else { - ret = -ENOMEM; /* Check this */ - goto ret_encode_array; - } - } - else if(enc.param_type == OTZC_PARAM_OUT) { - if(!enc_context->ker_res_data_addr) { - enc_context->ker_res_data_addr = kmalloc(GFP_KERNEL, - OTZ_1K_SIZE); - if(!enc_context->ker_res_data_addr) { - TERR("kmalloc failed \n"); - ret = -ENOMEM; - goto ret_encode_array; - } - } - if((enc_context->enc_res_offset + sizeof(u32) - <= OTZ_1K_SIZE) && - (enc_context->enc_res_pos < - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { - *((u32*)enc_context->ker_res_data_addr + - enc_context->enc_res_offset) - = virt_to_phys(temp_shared_mem->k_addr + enc.offset); - enc_context->enc_res_offset += sizeof(u32); - enc_context->meta[enc_context->enc_res_pos].usr_addr - = (u32)(temp_shared_mem->u_addr + enc.offset); - enc_context->meta[enc_context->enc_res_pos].type - = OTZ_MEM_REF; - enc_context->meta[enc_context->enc_res_pos].len = enc.len; - enc_context->enc_res_pos++; - } - else { - ret = -ENOMEM; /*Check this */ - goto ret_encode_array; - } - } + struct otz_client_encode_cmd enc; + int ret = 0, shared_mem_found = 0; + otzc_encode *enc_context; + otzc_session *session; + otzc_shared_mem* temp_shared_mem; + + if(copy_from_user(&enc, argp, sizeof(enc))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + ret = otz_client_prepare_encode(&enc, &enc_context, &session); + + if(ret){ + goto return_func; + } + TDEBUG("enc_id 0x%x\n",enc_context->encode_id); + list_for_each_entry(temp_shared_mem, &session->shared_mem_list,s_head){ + if(temp_shared_mem->index == (u32*)enc.data){ + shared_mem_found = 1; + break; + } + } + + if(!shared_mem_found) { + list_for_each_entry(temp_shared_mem, + &otzc_shared_mem_head.shared_mem_list , head) { + if(temp_shared_mem->index == (u32*)enc.data){ + shared_mem_found = 1; + break; + } + } + } + + if(!shared_mem_found) { + + TERR("shared memory not registered for \ + this session 0x%x\n", session->session_id); + ret = -EINVAL; + goto return_func; + } + + if(enc.param_type == OTZC_PARAM_IN) { + if(!enc_context->ker_req_data_addr) { + enc_context->ker_req_data_addr = kmalloc(GFP_KERNEL, + OTZ_1K_SIZE); + if(!enc_context->ker_req_data_addr) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto ret_encode_array; + } + } + + if((enc_context->enc_req_offset + sizeof(u32) <= + OTZ_1K_SIZE) && + (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { + *((u32*)enc_context->ker_req_data_addr + + enc_context->enc_req_offset) + = virt_to_phys(temp_shared_mem->k_addr+enc.offset); + enc_context->enc_req_offset += sizeof(u32); + enc_context->meta[enc_context->enc_req_pos].usr_addr + = (u32)(temp_shared_mem->u_addr + enc.offset); + enc_context->meta[enc_context->enc_req_pos].type = OTZ_MEM_REF; + enc_context->meta[enc_context->enc_req_pos].len = enc.len; + + enc_context->enc_req_pos++; + } + else { + ret = -ENOMEM; /* Check this */ + goto ret_encode_array; + } + } + else if(enc.param_type == OTZC_PARAM_OUT) { + if(!enc_context->ker_res_data_addr) { + enc_context->ker_res_data_addr = kmalloc(GFP_KERNEL, + OTZ_1K_SIZE); + if(!enc_context->ker_res_data_addr) { + TERR("kmalloc failed \n"); + ret = -ENOMEM; + goto ret_encode_array; + } + } + if((enc_context->enc_res_offset + sizeof(u32) + <= OTZ_1K_SIZE) && + (enc_context->enc_res_pos < + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { + *((u32*)enc_context->ker_res_data_addr + + enc_context->enc_res_offset) + = virt_to_phys(temp_shared_mem->k_addr + enc.offset); + enc_context->enc_res_offset += sizeof(u32); + enc_context->meta[enc_context->enc_res_pos].usr_addr + = (u32)(temp_shared_mem->u_addr + enc.offset); + enc_context->meta[enc_context->enc_res_pos].type + = OTZ_MEM_REF; + enc_context->meta[enc_context->enc_res_pos].len = enc.len; + enc_context->enc_res_pos++; + } + else { + ret = -ENOMEM; /*Check this */ + goto ret_encode_array; + } + } ret_encode_array: - if(copy_to_user(argp, &enc, sizeof(enc))){ - TERR("copy from user failed \n"); - return -EFAULT; - } + if(copy_to_user(argp, &enc, sizeof(enc))){ + TERR("copy from user failed \n"); + return -EFAULT; + } return_func: - return ret; + return ret; } @@ -1369,50 +1441,50 @@ * @return */ static int otz_client_prepare_decode(struct otz_client_encode_cmd *dec, - otzc_encode **pdec_context) + otzc_encode **pdec_context) { - otzc_service *temp_svc; - otzc_session *temp_ses; - otzc_encode *dec_context; - int session_found = 0, enc_found = 0; - int ret = 0; - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { - if( temp_svc->service_id == dec->service_id) { - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == dec->session_id) { - TDEBUG("enc cmd ses id %d \n",temp_ses->session_id); - session_found = 1; - break; - } - } - break; - } - } - - if(!session_found) { - TERR("session not found\n"); - ret = -EINVAL; - goto return_func; - } - - if(dec->encode_id != -1) { - list_for_each_entry(dec_context,&temp_ses->encode_list, head) { - if(dec_context->encode_id == dec->encode_id){ - enc_found = 1; - break; - } - } - } - - if(!enc_found) { - ret = -EINVAL; - goto return_func; - } + otzc_service *temp_svc; + otzc_session *temp_ses; + otzc_encode *dec_context; + int session_found = 0, enc_found = 0; + int ret = 0; + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { + if( temp_svc->service_id == dec->service_id) { + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == dec->session_id) { + TDEBUG("enc cmd ses id %d \n",temp_ses->session_id); + session_found = 1; + break; + } + } + break; + } + } + + if(!session_found) { + TERR("session not found\n"); + ret = -EINVAL; + goto return_func; + } + + if(dec->encode_id != -1) { + list_for_each_entry(dec_context,&temp_ses->encode_list, head) { + if(dec_context->encode_id == dec->encode_id){ + enc_found = 1; + break; + } + } + } + + if(!enc_found) { + ret = -EINVAL; + goto return_func; + } - *pdec_context = dec_context; + *pdec_context = dec_context; return_func: - return ret; + return ret; } /** @@ -1424,44 +1496,44 @@ */ static int otz_client_decode_uint32(void* argp) { - struct otz_client_encode_cmd dec; - int ret = 0; - otzc_encode *dec_context; - - - if(copy_from_user(&dec, argp, sizeof(dec))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - ret = otz_client_prepare_decode(&dec, &dec_context); - - if(ret) { - goto return_func; - } - - if((dec_context->dec_res_pos <= dec_context->enc_res_pos) && - (dec_context->meta[dec_context->dec_res_pos].type - == OTZ_ENC_UINT32)){ - - if(dec_context->meta[dec_context->dec_res_pos].usr_addr) { - dec.data = - (void*)dec_context->meta[dec_context->dec_res_pos].usr_addr; - } - - *(u32*)dec.data = *((u32*)(dec_context->ker_res_data_addr - + dec_context->dec_offset)); - dec_context->dec_offset += sizeof(u32); - dec_context->dec_res_pos++; - } - if(copy_to_user(argp, &dec, sizeof(dec))){ - TERR("copy to user failed \n"); - return -EFAULT; - } + struct otz_client_encode_cmd dec; + int ret = 0; + otzc_encode *dec_context; + + + if(copy_from_user(&dec, argp, sizeof(dec))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + ret = otz_client_prepare_decode(&dec, &dec_context); + + if(ret) { + goto return_func; + } + + if((dec_context->dec_res_pos <= dec_context->enc_res_pos) && + (dec_context->meta[dec_context->dec_res_pos].type + == OTZ_ENC_UINT32)){ + + if(dec_context->meta[dec_context->dec_res_pos].usr_addr) { + dec.data = + (void*)dec_context->meta[dec_context->dec_res_pos].usr_addr; + } + + *(u32*)dec.data = *((u32*)(dec_context->ker_res_data_addr + + dec_context->dec_offset)); + dec_context->dec_offset += sizeof(u32); + dec_context->dec_res_pos++; + } + if(copy_to_user(argp, &dec, sizeof(dec))){ + TERR("copy to user failed \n"); + return -EFAULT; + } return_func: - return ret; + return ret; } /** @@ -1473,90 +1545,90 @@ */ static int otz_client_decode_array_space(void* argp) { - struct otz_client_encode_cmd dec; - int ret = 0; - otzc_encode *dec_context; - - - if(copy_from_user(&dec, argp, sizeof(dec))) { - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - ret = otz_client_prepare_decode(&dec, &dec_context); - - if(ret){ - goto return_func; - } - - if((dec_context->dec_res_pos <= dec_context->enc_res_pos) && - (dec_context->meta[dec_context->dec_res_pos].type - == OTZ_ENC_ARRAY)) { - if (dec_context->meta[dec_context->dec_res_pos].len >= - dec_context->meta[dec_context->dec_res_pos].ret_len) { - if(dec_context->meta[dec_context->dec_res_pos].usr_addr) { - dec.data = - (void*)dec_context->meta[dec_context->dec_res_pos].usr_addr; - } - if(copy_to_user(dec.data, - dec_context->ker_res_data_addr + dec_context->dec_offset, - dec_context->meta[dec_context->dec_res_pos].ret_len)){ - TERR("copy from user failed while copying array\n"); - ret = -EFAULT; - goto return_func; - } - } - else { - TERR("buffer length is small. Length required %d \ -and supplied length %d\n", - dec_context->meta[dec_context->dec_res_pos].ret_len, - dec_context->meta[dec_context->dec_res_pos].len); - ret = -EFAULT; /* check this */ - goto return_func; - } - - dec.len = dec_context->meta[dec_context->dec_res_pos].ret_len; - dec_context->dec_offset += - dec_context->meta[dec_context->dec_res_pos].len; - dec_context->dec_res_pos++; - } - else if((dec_context->dec_res_pos <= dec_context->enc_res_pos) && - (dec_context->meta[dec_context->dec_res_pos].type - == OTZ_MEM_REF)) { - if (dec_context->meta[dec_context->dec_res_pos].len >= - dec_context->meta[dec_context->dec_res_pos].ret_len) { - dec.data = - (void*)dec_context->meta[dec_context->dec_res_pos].usr_addr; - } - else { - TERR("buffer length is small. Length required %d \ -and supplied length %d\n", - dec_context->meta[dec_context->dec_res_pos].ret_len, - dec_context->meta[dec_context->dec_res_pos].len); - ret = -EFAULT;/* Check this */ - goto return_func; - } - - dec.len = dec_context->meta[dec_context->dec_res_pos].ret_len; - dec_context->dec_offset += sizeof(u32); - dec_context->dec_res_pos++; - } - - else { - TERR("invalid data type or decoder at wrong position\n"); - ret = -EINVAL; - goto return_func; - } - - if(copy_to_user(argp, &dec, sizeof(dec))){ - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } + struct otz_client_encode_cmd dec; + int ret = 0; + otzc_encode *dec_context; + + + if(copy_from_user(&dec, argp, sizeof(dec))) { + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + ret = otz_client_prepare_decode(&dec, &dec_context); + + if(ret){ + goto return_func; + } + + if((dec_context->dec_res_pos <= dec_context->enc_res_pos) && + (dec_context->meta[dec_context->dec_res_pos].type + == OTZ_ENC_ARRAY)) { + if (dec_context->meta[dec_context->dec_res_pos].len >= + dec_context->meta[dec_context->dec_res_pos].ret_len) { + if(dec_context->meta[dec_context->dec_res_pos].usr_addr) { + dec.data = + (void*)dec_context->meta[dec_context->dec_res_pos].usr_addr; + } + if(copy_to_user(dec.data, + dec_context->ker_res_data_addr + dec_context->dec_offset, + dec_context->meta[dec_context->dec_res_pos].ret_len)){ + TERR("copy from user failed while copying array\n"); + ret = -EFAULT; + goto return_func; + } + } + else { + TERR("buffer length is small. Length required %d \ + and supplied length %d\n", + dec_context->meta[dec_context->dec_res_pos].ret_len, + dec_context->meta[dec_context->dec_res_pos].len); + ret = -EFAULT; /* check this */ + goto return_func; + } + + dec.len = dec_context->meta[dec_context->dec_res_pos].ret_len; + dec_context->dec_offset += + dec_context->meta[dec_context->dec_res_pos].len; + dec_context->dec_res_pos++; + } + else if((dec_context->dec_res_pos <= dec_context->enc_res_pos) && + (dec_context->meta[dec_context->dec_res_pos].type + == OTZ_MEM_REF)) { + if (dec_context->meta[dec_context->dec_res_pos].len >= + dec_context->meta[dec_context->dec_res_pos].ret_len) { + dec.data = + (void*)dec_context->meta[dec_context->dec_res_pos].usr_addr; + } + else { + TERR("buffer length is small. Length required %d \ + and supplied length %d\n", + dec_context->meta[dec_context->dec_res_pos].ret_len, + dec_context->meta[dec_context->dec_res_pos].len); + ret = -EFAULT;/* Check this */ + goto return_func; + } + + dec.len = dec_context->meta[dec_context->dec_res_pos].ret_len; + dec_context->dec_offset += sizeof(u32); + dec_context->dec_res_pos++; + } + + else { + TERR("invalid data type or decoder at wrong position\n"); + ret = -EINVAL; + goto return_func; + } + + if(copy_to_user(argp, &dec, sizeof(dec))){ + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } return_func: - return ret; + return ret; } /** @@ -1568,41 +1640,41 @@ */ static int otz_client_get_decode_type(void* argp) { - struct otz_client_encode_cmd dec; - int ret = 0; - otzc_encode *dec_context; - - - if(copy_from_user(&dec, argp, sizeof(dec))){ - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } - - ret = otz_client_prepare_decode(&dec, &dec_context); - - if(ret){ - goto return_func; - } - - TDEBUG("decoder pos 0x%x and encoder pos 0x%x\n", - dec_context->dec_res_pos, dec_context->enc_res_pos); - - if(dec_context->dec_res_pos <= dec_context->enc_res_pos) - dec.data = (void*)dec_context->meta[dec_context->dec_res_pos].type; - else { - ret = -EINVAL; /* check this */ - goto return_func; - } - - if(copy_to_user(argp, &dec, sizeof(dec))){ - TERR("copy to user failed \n"); - ret = -EFAULT; - goto return_func; - } + struct otz_client_encode_cmd dec; + int ret = 0; + otzc_encode *dec_context; + + + if(copy_from_user(&dec, argp, sizeof(dec))){ + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } + + ret = otz_client_prepare_decode(&dec, &dec_context); + + if(ret){ + goto return_func; + } + + TDEBUG("decoder pos 0x%x and encoder pos 0x%x\n", + dec_context->dec_res_pos, dec_context->enc_res_pos); + + if(dec_context->dec_res_pos <= dec_context->enc_res_pos) + dec.data = (void*)dec_context->meta[dec_context->dec_res_pos].type; + else { + ret = -EINVAL; /* check this */ + goto return_func; + } + + if(copy_to_user(argp, &dec, sizeof(dec))){ + TERR("copy to user failed \n"); + ret = -EFAULT; + goto return_func; + } return_func: - return ret; + return ret; } /** @@ -1614,58 +1686,58 @@ */ static int otz_client_shared_mem_alloc(void* argp) { - otzc_shared_mem* temp_shared_mem; - struct otz_session_shared_mem_info mem_info; + otzc_shared_mem* temp_shared_mem; + struct otz_session_shared_mem_info mem_info; - otzc_service *temp_svc; - otzc_session *temp_ses; + otzc_service *temp_svc; + otzc_session *temp_ses; - int session_found = 0; - int ret = 0; + int session_found = 0; + int ret = 0; - if(copy_from_user(&mem_info, argp, sizeof(mem_info))){ - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } + if(copy_from_user(&mem_info, argp, sizeof(mem_info))){ + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } #if 0 - TDEBUG("service id 0x%x session id 0x%x user mem addr 0x%x \n", - mem_info.service_id, - mem_info.session_id, - mem_info.user_mem_addr); -#endif - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { - if( temp_svc->service_id == mem_info.service_id) { - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == mem_info.session_id) { - session_found = 1; - break; - } - } - break; - } - } - - if(!session_found) { - TERR("session not found\n"); - ret = -EINVAL; - goto return_func; - } - - list_for_each_entry(temp_shared_mem, &otzc_shared_mem_head.shared_mem_list , - head){ - if(temp_shared_mem->index == (u32*)mem_info.user_mem_addr){ - list_del(&temp_shared_mem->head); - otzc_shared_mem_head.shared_mem_cnt--; - list_add_tail( &temp_shared_mem->s_head , - &temp_ses->shared_mem_list); - break; - } - } + TDEBUG("service id 0x%x session id 0x%x user mem addr 0x%x \n", + mem_info.service_id, + mem_info.session_id, + mem_info.user_mem_addr); +#endif + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { + if( temp_svc->service_id == mem_info.service_id) { + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == mem_info.session_id) { + session_found = 1; + break; + } + } + break; + } + } + + if(!session_found) { + TERR("session not found\n"); + ret = -EINVAL; + goto return_func; + } + + list_for_each_entry(temp_shared_mem, &otzc_shared_mem_head.shared_mem_list , + head){ + if(temp_shared_mem->index == (u32*)mem_info.user_mem_addr){ + list_del(&temp_shared_mem->head); + otzc_shared_mem_head.shared_mem_cnt--; + list_add_tail( &temp_shared_mem->s_head , + &temp_ses->shared_mem_list); + break; + } + } return_func: - return ret; + return ret; } /** @@ -1677,61 +1749,61 @@ */ static int otz_client_shared_mem_free(void* argp) { - otzc_shared_mem* temp_shared_mem; - struct otz_session_shared_mem_info mem_info; + otzc_shared_mem* temp_shared_mem; + struct otz_session_shared_mem_info mem_info; - otzc_service *temp_svc; - otzc_session *temp_ses; + otzc_service *temp_svc; + otzc_session *temp_ses; - int session_found = 0; - int ret = 0; + int session_found = 0; + int ret = 0; - if(copy_from_user(&mem_info, argp, sizeof(mem_info))){ - TERR("copy from user failed \n"); - ret = -EFAULT; - goto return_func; - } + if(copy_from_user(&mem_info, argp, sizeof(mem_info))){ + TERR("copy from user failed \n"); + ret = -EFAULT; + goto return_func; + } #if 0 - TDEBUG("service id 0x%x session id 0x%x user mem addr 0x%x \n", - mem_info.service_id, - mem_info.session_id, - mem_info.user_mem_addr); -#endif - - list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { - if( temp_svc->service_id == mem_info.service_id) { - list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { - if(temp_ses->session_id == mem_info.session_id) { - session_found = 1; - break; - } - } - break; - } - } - - if(!session_found) { - TERR("session not found\n"); - ret = -EINVAL; - goto return_func; - } - - list_for_each_entry(temp_shared_mem, &temp_ses->shared_mem_list,s_head){ - if(temp_shared_mem->index == (u32*)mem_info.user_mem_addr){ - list_del(&temp_shared_mem->s_head); - - if(temp_shared_mem->k_addr) - free_pages((u32)temp_shared_mem->k_addr, - get_order(ROUND_UP(temp_shared_mem->len, SZ_4K))); - - if(temp_shared_mem) - kfree(temp_shared_mem); - break; - } - } + TDEBUG("service id 0x%x session id 0x%x user mem addr 0x%x \n", + mem_info.service_id, + mem_info.session_id, + mem_info.user_mem_addr); +#endif + + list_for_each_entry(temp_svc, &otzc_svc_head.services_list, head) { + if( temp_svc->service_id == mem_info.service_id) { + list_for_each_entry(temp_ses, &temp_svc->sessions_list, head) { + if(temp_ses->session_id == mem_info.session_id) { + session_found = 1; + break; + } + } + break; + } + } + + if(!session_found) { + TERR("session not found\n"); + ret = -EINVAL; + goto return_func; + } + + list_for_each_entry(temp_shared_mem, &temp_ses->shared_mem_list,s_head){ + if(temp_shared_mem->index == (u32*)mem_info.user_mem_addr){ + list_del(&temp_shared_mem->s_head); + + if(temp_shared_mem->k_addr) + free_pages((u32)temp_shared_mem->k_addr, + get_order(ROUND_UP(temp_shared_mem->len, SZ_4K))); + + if(temp_shared_mem) + kfree(temp_shared_mem); + break; + } + } return_func: - return ret; + return ret; } /** @@ -1744,137 +1816,137 @@ * @return */ static long otz_client_ioctl(struct file *file, unsigned cmd, - unsigned long arg) + unsigned long arg) { - int ret = -EINVAL; - void *argp = (void __user *) arg; + int ret = -EINVAL; + void *argp = (void __user *) arg; - switch (cmd) { - case OTZ_CLIENT_IOCTL_SEND_CMD_REQ: { - /* Only one client allowed here at a time */ - mutex_lock(&send_cmd_lock); - ret = otz_client_send_cmd(argp); - mutex_unlock(&send_cmd_lock); + switch (cmd) { + case OTZ_CLIENT_IOCTL_SEND_CMD_REQ: { + /* Only one client allowed here at a time */ + mutex_lock(&send_cmd_lock); + ret = otz_client_send_cmd(argp); + mutex_unlock(&send_cmd_lock); #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - if(ret == SMC_PENDING) { - otz_client_wait_cmd(argp); - } -#endif - if (ret) - TDEBUG("failed otz_client_send_cmd: %d", ret); - break; - } - - case OTZ_CLIENT_IOCTL_ENC_UINT32: { - /* Only one client allowed here at a time */ - mutex_lock(&encode_cmd_lock); - ret = otz_client_encode_uint32(argp); - mutex_unlock(&encode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_encode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_DEC_UINT32: { - /* Only one client allowed here at a time */ - mutex_lock(&decode_cmd_lock); - ret = otz_client_decode_uint32(argp); - mutex_unlock(&decode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_decode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_ENC_ARRAY: { - /* Only one client allowed here at a time */ - mutex_lock(&encode_cmd_lock); - ret = otz_client_encode_array(argp); - mutex_unlock(&encode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_encode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_DEC_ARRAY_SPACE: { - /* Only one client allowed here at a time */ - mutex_lock(&decode_cmd_lock); - ret = otz_client_decode_array_space(argp); - mutex_unlock(&decode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_decode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_ENC_MEM_REF: { - /* Only one client allowed here at a time */ - mutex_lock(&encode_cmd_lock); - ret = otz_client_encode_mem_ref(argp); - mutex_unlock(&encode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_encode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_ENC_ARRAY_SPACE: { - /* Only one client allowed here at a time */ - mutex_lock(&encode_cmd_lock); - ret = otz_client_encode_mem_ref(argp); - mutex_unlock(&encode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_encode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_GET_DECODE_TYPE: { - /* Only one client allowed here at a time */ - mutex_lock(&decode_cmd_lock); - ret = otz_client_get_decode_type(argp); - mutex_unlock(&decode_cmd_lock); - if (ret) - TDEBUG("failed otz_client_decode_cmd: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_SES_OPEN_REQ: { - /* Only one client allowed here at a time */ - mutex_lock(&ses_open_lock); - ret = otz_client_session_open(argp); - mutex_unlock(&ses_open_lock); - if (ret) - TDEBUG("failed otz_client_session_open: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_SES_CLOSE_REQ: { - /* Only one client allowed here at a time */ - mutex_lock(&ses_close_lock); - ret = otz_client_session_close(argp); - mutex_unlock(&ses_close_lock); - if (ret) - TDEBUG("failed otz_client_session_close: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_SHR_MEM_ALLOCATE_REQ: { - /* Only one client allowed here at a time */ - mutex_lock(&mem_alloc_lock); - ret = otz_client_shared_mem_alloc(argp); - mutex_unlock(&mem_alloc_lock); - if (ret) - TDEBUG("failed otz_client_shared_mem_alloc: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_SHR_MEM_FREE_REQ: { - /* Only one client allowed here at a time */ - mutex_lock(&mem_free_lock); - ret = otz_client_shared_mem_free(argp); - mutex_unlock(&mem_free_lock); - if (ret) - TDEBUG("failed otz_client_shared_mem_free: %d", ret); - break; - } - case OTZ_CLIENT_IOCTL_OPERATION_RELEASE: { - ret = otz_client_operation_release(argp); - if (ret) - TDEBUG("failed operation release: %d", ret); - break; - } - default: - return -EINVAL; - } - return ret; + if(ret == SMC_PENDING) { + otz_client_wait_cmd(argp); + } +#endif + if (ret) + TDEBUG("failed otz_client_send_cmd: %d", ret); + break; + } + + case OTZ_CLIENT_IOCTL_ENC_UINT32: { + /* Only one client allowed here at a time */ + mutex_lock(&encode_cmd_lock); + ret = otz_client_encode_uint32(argp); + mutex_unlock(&encode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_encode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_DEC_UINT32: { + /* Only one client allowed here at a time */ + mutex_lock(&decode_cmd_lock); + ret = otz_client_decode_uint32(argp); + mutex_unlock(&decode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_decode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_ENC_ARRAY: { + /* Only one client allowed here at a time */ + mutex_lock(&encode_cmd_lock); + ret = otz_client_encode_array(argp); + mutex_unlock(&encode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_encode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_DEC_ARRAY_SPACE: { + /* Only one client allowed here at a time */ + mutex_lock(&decode_cmd_lock); + ret = otz_client_decode_array_space(argp); + mutex_unlock(&decode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_decode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_ENC_MEM_REF: { + /* Only one client allowed here at a time */ + mutex_lock(&encode_cmd_lock); + ret = otz_client_encode_mem_ref(argp); + mutex_unlock(&encode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_encode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_ENC_ARRAY_SPACE: { + /* Only one client allowed here at a time */ + mutex_lock(&encode_cmd_lock); + ret = otz_client_encode_mem_ref(argp); + mutex_unlock(&encode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_encode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_GET_DECODE_TYPE: { + /* Only one client allowed here at a time */ + mutex_lock(&decode_cmd_lock); + ret = otz_client_get_decode_type(argp); + mutex_unlock(&decode_cmd_lock); + if (ret) + TDEBUG("failed otz_client_decode_cmd: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_SES_OPEN_REQ: { + /* Only one client allowed here at a time */ + mutex_lock(&ses_open_lock); + ret = otz_client_session_open(argp); + mutex_unlock(&ses_open_lock); + if (ret) + TDEBUG("failed otz_client_session_open: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_SES_CLOSE_REQ: { + /* Only one client allowed here at a time */ + mutex_lock(&ses_close_lock); + ret = otz_client_session_close(argp); + mutex_unlock(&ses_close_lock); + if (ret) + TDEBUG("failed otz_client_session_close: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_SHR_MEM_ALLOCATE_REQ: { + /* Only one client allowed here at a time */ + mutex_lock(&mem_alloc_lock); + ret = otz_client_shared_mem_alloc(argp); + mutex_unlock(&mem_alloc_lock); + if (ret) + TDEBUG("failed otz_client_shared_mem_alloc: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_SHR_MEM_FREE_REQ: { + /* Only one client allowed here at a time */ + mutex_lock(&mem_free_lock); + ret = otz_client_shared_mem_free(argp); + mutex_unlock(&mem_free_lock); + if (ret) + TDEBUG("failed otz_client_shared_mem_free: %d", ret); + break; + } + case OTZ_CLIENT_IOCTL_OPERATION_RELEASE: { + ret = otz_client_operation_release(argp); + if (ret) + TDEBUG("failed operation release: %d", ret); + break; + } + default: + return -EINVAL; + } + return ret; } /** @@ -1887,38 +1959,40 @@ */ static int otz_client_open(struct inode *inode, struct file *file) { - int ret; - if((ret = otz_client_service_init(OTZ_SVC_ECHO)) != 0) { - goto ret_func; - } else if((ret = otz_client_service_init(OTZ_SVC_CRYPT)) != 0) { - goto ret_func; - } else if((ret = otz_client_service_init(OTZ_SVC_MUTEX_TEST)) != 0) { - goto ret_func; - } + int ret; + if((ret = otz_client_service_init(OTZ_SVC_ECHO)) != 0) { + goto ret_func; + } else if((ret = otz_client_service_init(OTZ_SVC_CRYPT)) != 0) { + goto ret_func; + } else if((ret = otz_client_service_init(OTZ_SVC_MUTEX_TEST)) != 0) { + goto ret_func; + } else if((ret = otz_client_service_init(OTZ_SVC_MD5)) != 0) { + goto ret_func; + } #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - notify_data = (struct otzc_notify_data*)kmalloc(GFP_KERNEL, - sizeof(struct otzc_notify_data)); - if(!notify_data){ - TERR("kmalloc failed for notification data\n"); - ret = -ENOMEM; - goto ret_func; - } - - ret = otz_smc_call(OTZ_SVC_GLOBAL, - OTZ_GLOBAL_CMD_ID_REGISTER_NOTIFY_MEMORY, - 0, 0, - notify_data, sizeof(struct otzc_notify_data), NULL, - 0, NULL, NULL); - - if(ret != SMC_SUCCESS) { - TERR("Shared memory registration for \ -secure world notification failed\n"); - goto ret_func; - } + notify_data = (struct otzc_notify_data*)kmalloc(GFP_KERNEL, + sizeof(struct otzc_notify_data)); + if(!notify_data){ + TERR("kmalloc failed for notification data\n"); + ret = -ENOMEM; + goto ret_func; + } + + ret = otz_smc_call(OTZ_SVC_GLOBAL, + OTZ_GLOBAL_CMD_ID_REGISTER_NOTIFY_MEMORY, + 0, 0, + notify_data, sizeof(struct otzc_notify_data), NULL, + 0, NULL, NULL); + + if(ret != SMC_SUCCESS) { + TERR("Shared memory registration for \ + secure world notification failed\n"); + goto ret_func; + } #endif ret_func: - return ret; + return ret; } /** @@ -1932,25 +2006,25 @@ static int otz_client_release(struct inode *inode, struct file *file) { #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - int ret; - ret = otz_smc_call(OTZ_SVC_GLOBAL, - OTZ_GLOBAL_CMD_ID_UNREGISTER_NOTIFY_MEMORY, - 0, 0, - NULL, 0, NULL, - 0, NULL, NULL); - - if(ret != SMC_SUCCESS) { - TERR("Shared memory un-registration for \ -secure world notification failed\n"); - } - - kfree(notify_data); - notify_data = NULL; -#endif - - TDEBUG("otz_client_release\n"); - otz_client_service_exit(); - return 0; + int ret; + ret = otz_smc_call(OTZ_SVC_GLOBAL, + OTZ_GLOBAL_CMD_ID_UNREGISTER_NOTIFY_MEMORY, + 0, 0, + NULL, 0, NULL, + 0, NULL, NULL); + + if(ret != SMC_SUCCESS) { + TERR("Shared memory un-registration for \ + secure world notification failed\n"); + } + + kfree(notify_data); + notify_data = NULL; +#endif + + TDEBUG("otz_client_release\n"); + otz_client_service_exit(); + return 0; } /** @@ -1960,12 +2034,12 @@ */ static int otz_client_smc_init(void) { - u32 ctr; + u32 ctr; - asm volatile("mrc p15, 0, %0, c0, c0, 1" : "=r" (ctr)); - cacheline_size = 4 << ((ctr >> 16) & 0xf); + asm volatile("mrc p15, 0, %0, c0, c0, 1" : "=r" (ctr)); + cacheline_size = 4 << ((ctr >> 16) & 0xf); - return 0; + return 0; } @@ -1973,11 +2047,11 @@ * @brief */ static const struct file_operations otz_client_fops = { - .owner = THIS_MODULE, - .unlocked_ioctl = otz_client_ioctl, - .open = otz_client_open, - .mmap = otz_client_mmap, - .release = otz_client_release + .owner = THIS_MODULE, + .unlocked_ioctl = otz_client_ioctl, + .open = otz_client_open, + .mmap = otz_client_mmap, + .release = otz_client_release }; /** @@ -1987,75 +2061,75 @@ */ static int otz_client_init(void) { - int ret_code = 0; - struct device *class_dev; + int ret_code = 0; + struct device *class_dev; - TDEBUG("open otzclient init"); - otz_client_smc_init(); + TDEBUG("open otzclient init"); + otz_client_smc_init(); - ret_code = alloc_chrdev_region(&otz_client_device_no, 0, 1, - OTZ_CLIENT_DEV); - if (ret_code < 0) { - TERR("alloc_chrdev_region failed %d", ret_code); - return ret_code; - } - - driver_class = class_create(THIS_MODULE, OTZ_CLIENT_DEV); - if (IS_ERR(driver_class)) { - ret_code = -ENOMEM; - TERR("class_create failed %d", ret_code); - goto unregister_chrdev_region; - } - - class_dev = device_create(driver_class, NULL, otz_client_device_no, NULL, - OTZ_CLIENT_DEV); - if (!class_dev) { - TERR("class_device_create failed %d", ret_code); - ret_code = -ENOMEM; - goto class_destroy; - } - - cdev_init(&otz_client_cdev, &otz_client_fops); - otz_client_cdev.owner = THIS_MODULE; - - ret_code = cdev_add(&otz_client_cdev, - MKDEV(MAJOR(otz_client_device_no), 0), 1); - if (ret_code < 0) { - TERR("cdev_add failed %d", ret_code); - goto class_device_destroy; - } - -/* Initialize structure for services and sessions*/ - TDEBUG("Initializing list for services\n"); - memset(&otzc_svc_head, 0, sizeof(otzc_svc_head)); - otzc_svc_head.service_cnt = 0; - INIT_LIST_HEAD(&otzc_svc_head.services_list); - - memset(&otzc_shared_mem_head, 0, sizeof(otzc_shared_mem_head)); - otzc_shared_mem_head.shared_mem_cnt = 0; - INIT_LIST_HEAD(&otzc_shared_mem_head.shared_mem_list); - - smc_cmd = (struct otz_smc_cmd*)kmalloc(GFP_KERNEL, - sizeof(struct otz_smc_cmd)); - if(!smc_cmd){ - TERR("kmalloc failed for smc command\n"); - ret_code = -ENOMEM; - goto class_device_destroy; - } + ret_code = alloc_chrdev_region(&otz_client_device_no, 0, 1, + OTZ_CLIENT_DEV); + if (ret_code < 0) { + TERR("alloc_chrdev_region failed %d", ret_code); + return ret_code; + } + + driver_class = class_create(THIS_MODULE, OTZ_CLIENT_DEV); + if (IS_ERR(driver_class)) { + ret_code = -ENOMEM; + TERR("class_create failed %d", ret_code); + goto unregister_chrdev_region; + } + + class_dev = device_create(driver_class, NULL, otz_client_device_no, NULL, + OTZ_CLIENT_DEV); + if (!class_dev) { + TERR("class_device_create failed %d", ret_code); + ret_code = -ENOMEM; + goto class_destroy; + } + + cdev_init(&otz_client_cdev, &otz_client_fops); + otz_client_cdev.owner = THIS_MODULE; + + ret_code = cdev_add(&otz_client_cdev, + MKDEV(MAJOR(otz_client_device_no), 0), 1); + if (ret_code < 0) { + TERR("cdev_add failed %d", ret_code); + goto class_device_destroy; + } + + /* Initialize structure for services and sessions*/ + TDEBUG("Initializing list for services\n"); + memset(&otzc_svc_head, 0, sizeof(otzc_svc_head)); + otzc_svc_head.service_cnt = 0; + INIT_LIST_HEAD(&otzc_svc_head.services_list); + + memset(&otzc_shared_mem_head, 0, sizeof(otzc_shared_mem_head)); + otzc_shared_mem_head.shared_mem_cnt = 0; + INIT_LIST_HEAD(&otzc_shared_mem_head.shared_mem_list); + + smc_cmd = (struct otz_smc_cmd*)kmalloc(GFP_KERNEL, + sizeof(struct otz_smc_cmd)); + if(!smc_cmd){ + TERR("kmalloc failed for smc command\n"); + ret_code = -ENOMEM; + goto class_device_destroy; + } #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - register_secure_notify_handler(ipi_secure_notify); + register_secure_notify_handler(ipi_secure_notify); #endif - goto return_fn; + goto return_fn; class_device_destroy: - device_destroy(driver_class, otz_client_device_no); + device_destroy(driver_class, otz_client_device_no); class_destroy: - class_destroy(driver_class); + class_destroy(driver_class); unregister_chrdev_region: - unregister_chrdev_region(otz_client_device_no, 1); + unregister_chrdev_region(otz_client_device_no, 1); return_fn: - return ret_code; + return ret_code; } /** @@ -2063,15 +2137,15 @@ */ static void otz_client_exit(void) { - TDEBUG("otz_client exit"); + TDEBUG("otz_client exit"); #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - unregister_secure_notify_handler(); + unregister_secure_notify_handler(); #endif - kfree(smc_cmd); - device_destroy(driver_class, otz_client_device_no); - class_destroy(driver_class); - unregister_chrdev_region(otz_client_device_no, 1); + kfree(smc_cmd); + device_destroy(driver_class, otz_client_device_no); + class_destroy(driver_class); + unregister_chrdev_region(otz_client_device_no, 1); } Index: otzone/src/apps/crypto_task.c =================================================================== --- otzone/src/apps/crypto_task.c.orig 2012-08-06 00:48:06.860035196 +0530 +++ otzone/src/apps/crypto_task.c 2012-08-06 10:07:39.500378187 +0530 @@ -18,7 +18,11 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Crypto task implementation */ @@ -41,8 +45,8 @@ #include #include -extern int otzone_rc4_algorithm(char *input_buf, int input_len, - char *output_buf, int *output_len); +extern int otzone_rc4_algorithm(unsigned char *input_buf, int input_len, + unsigned char *output_buf, int *output_len); /** * @brief Encrypts the data for the user supplied buffer * @@ -61,73 +65,73 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_crypto_cmd(void *req_buf, u32 req_buf_len, - void *res_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, - u32 *ret_res_buf_len) + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) { - crypto_data_t crypto_data; - unsigned char *out_buf; - int offset = 0, pos = 0, mapped = 0, type, out_len; - - while (offset <= req_buf_len) { - if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, - (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - if(type != OTZ_ENC_UINT32) { - return SMC_EINVAL_ARG; - } - crypto_data.len = *((u32*)out_buf); - if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, - (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - if((type != OTZ_ENC_ARRAY) && (type != OTZ_MEM_REF)){ - return SMC_EINVAL_ARG; - } - if(out_len < DATA_BUF_LEN) { - sw_memcpy(crypto_data.data, out_buf, out_len); - } else { - return(SMC_ENOMEM); - } - break; - } - /* do the rc4 encryption now ! */ + crypto_data_t crypto_data; + unsigned char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len; + + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, + (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + if(type != OTZ_ENC_UINT32) { + return SMC_EINVAL_ARG; + } + crypto_data.len = *((u32*)out_buf); + if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, + (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + if((type != OTZ_ENC_ARRAY) && (type != OTZ_MEM_REF)){ + return SMC_EINVAL_ARG; + } + if(out_len < DATA_BUF_LEN) { + sw_memcpy(crypto_data.data, out_buf, out_len); + } else { + return(SMC_ENOMEM); + } + break; + } + /* do the rc4 encryption now ! */ #if 0 - sw_printf("Input to the algorithm is "); - for(loop_cntr = 0;loop_cntr= crypto_data.len) { - sw_memcpy(out_buf,crypto_data.response, crypto_data.len); - if(update_response_len(meta_data, pos, crypto_data.len)) { - return SMC_EINVAL_ARG; - } - } else { - return(SMC_ENOMEM); - } - break; - } - *ret_res_buf_len = crypto_data.len; - return 0; + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, &type, &offset, &pos, &mapped, + (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + if((type != OTZ_ENC_ARRAY) && (type != OTZ_MEM_REF)){ + return SMC_EINVAL_ARG; + } + if(out_len >= crypto_data.len) { + sw_memcpy(out_buf,crypto_data.response, crypto_data.len); + if(update_response_len(meta_data, pos, crypto_data.len)) { + return SMC_EINVAL_ARG; + } + } else { + return(SMC_ENOMEM); + } + break; + } + *ret_res_buf_len = crypto_data.len; + return 0; } /** @@ -148,26 +152,26 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_crypto_svc(u32 svc_cmd_id, void *req_buf, u32 req_buf_len, - void *resp_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) + void *resp_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) { - int ret_val = SMC_ERROR; + int ret_val = SMC_ERROR; - if((req_buf_len == 0) || (res_buf_len == 0) ) { - return(0); - } - - switch (svc_cmd_id) { - case OTZ_CRYPT_CMD_ID_ENCRYPT: - case OTZ_CRYPT_CMD_ID_DECRYPT: - ret_val = process_otz_crypto_cmd(req_buf,req_buf_len, - resp_buf,res_buf_len,meta_data,ret_res_buf_len); - break; - default: - ret_val = SMC_EOPNOTSUPP; - break; - } - return ret_val; + if((req_buf_len == 0) || (res_buf_len == 0) ) { + return(0); + } + + switch (svc_cmd_id) { + case OTZ_CRYPT_CMD_ID_ENCRYPT: + case OTZ_CRYPT_CMD_ID_DECRYPT: + ret_val = process_otz_crypto_cmd(req_buf,req_buf_len, + resp_buf,res_buf_len,meta_data,ret_res_buf_len); + break; + default: + ret_val = SMC_EOPNOTSUPP; + break; + } + return ret_val; } /** @@ -180,9 +184,9 @@ */ void crypto_task(int task_id, sw_tls* tls) { - tls->ret_val = process_otzapi(task_id, tls); - handle_task_return(task_id, tls); - while(1); + tls->ret_val = process_otzapi(task_id, tls); + handle_task_return(task_id, tls); + while(1); } /** @@ -199,16 +203,16 @@ */ int crypto_task_init(sa_config_t *psa_config) { - psa_config->service_uuid = OTZ_SVC_CRYPT; - sw_strcpy(psa_config->service_name, "crypto"); - psa_config->stack_size = TASK_STACK_SIZE; - psa_config->entry_point = (u32)&crypto_task; - psa_config->data = (void *)sw_malloc(sizeof(struct crypto_global)); - if(!psa_config->data) { - sw_printf("crypto task init: allocation of local storage data failed\n"); - return OTZ_ENOMEM; - } - return OTZ_OK; + psa_config->service_uuid = OTZ_SVC_CRYPT; + sw_strcpy(psa_config->service_name, "crypto"); + psa_config->stack_size = TASK_STACK_SIZE; + psa_config->entry_point = (u32)&crypto_task; + psa_config->data = (void *)sw_malloc(sizeof(struct crypto_global)); + if(!psa_config->data) { + sw_printf("crypto task init: allocation of local storage data failed\n"); + return OTZ_ENOMEM; + } + return OTZ_OK; } @@ -224,8 +228,8 @@ */ int crypto_task_exit(void* data) { - if(data) - sw_free(data); - return OTZ_OK; + if(data) + sw_free(data); + return OTZ_OK; } Index: otzone/src/apps/echo_task.c =================================================================== --- otzone/src/apps/echo_task.c.orig 2012-08-06 00:50:08.892035359 +0530 +++ otzone/src/apps/echo_task.c 2012-08-06 10:08:07.378432223 +0530 @@ -18,6 +18,10 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application * * Echo task implementation */ @@ -66,78 +70,78 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_echo_async_send_cmd(void *req_buf, u32 req_buf_len, - void *res_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, - u32 *ret_res_buf_len) -{ - echo_data_t echo_data; - char *out_buf; - int offset = 0, pos = 0, mapped = 0, type, out_len; - int task_id; - sw_tls *tls; - struct echo_global *echo_global; - - - task_id = get_current_task_id(); - tls = get_task_tls(task_id); - echo_global = (struct echo_global *)tls->private_data; - - if(!echo_global->data_available) - return SMC_PENDING; - - if(req_buf_len > 0) { - while (offset <= req_buf_len) { - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_UINT32) - return SMC_EINVAL_ARG; - - echo_data.len = *((u32*)out_buf); - } - - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_ARRAY) - return SMC_EINVAL_ARG; - - sw_memcpy(echo_data.data, out_buf, echo_data.len); - } - - break; - } - } - - offset = 0, pos = OTZ_MAX_REQ_PARAMS; - if(res_buf_len > 0) { - while (offset <= res_buf_len) { - if(decode_data(res_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_ARRAY) - return SMC_EINVAL_ARG; - } - sw_memcpy(out_buf, echo_data.data, echo_data.len); - if(update_response_len(meta_data, pos, echo_data.len)) - return SMC_EINVAL_ARG; - - break; - } - *ret_res_buf_len = echo_data.len; - } -/* - sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", echo_data.data, - echo_data.len, sw_strlen(echo_data.data)); -*/ + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) +{ + echo_data_t echo_data; + char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len; + int task_id; + sw_tls *tls; + struct echo_global *echo_global; + + + task_id = get_current_task_id(); + tls = get_task_tls(task_id); + echo_global = (struct echo_global *)tls->private_data; + + if(!echo_global->data_available) + return SMC_PENDING; + + if(req_buf_len > 0) { + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_UINT32) + return SMC_EINVAL_ARG; + + echo_data.len = *((u32*)out_buf); + } + + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_ARRAY) + return SMC_EINVAL_ARG; + + sw_memcpy(echo_data.data, out_buf, echo_data.len); + } + + break; + } + } + + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + if(res_buf_len > 0) { + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_ARRAY) + return SMC_EINVAL_ARG; + } + sw_memcpy(out_buf, echo_data.data, echo_data.len); + if(update_response_len(meta_data, pos, echo_data.len)) + return SMC_EINVAL_ARG; + + break; + } + *ret_res_buf_len = echo_data.len; + } + /* + sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", echo_data.data, + echo_data.len, sw_strlen(echo_data.data)); + */ - return 0; + return 0; } #endif @@ -159,66 +163,66 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_echo_send_cmd(void *req_buf, u32 req_buf_len, - void *res_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, - u32 *ret_res_buf_len) -{ - echo_data_t echo_data; - char *out_buf; - int offset = 0, pos = 0, mapped = 0, type, out_len; - - if(req_buf_len > 0) { - while (offset <= req_buf_len) { - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_UINT32) - return SMC_EINVAL_ARG; - - echo_data.len = *((u32*)out_buf); - } - - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_ARRAY) - return SMC_EINVAL_ARG; - - sw_memcpy(echo_data.data, out_buf, echo_data.len); - } - - break; - } - } - - offset = 0, pos = OTZ_MAX_REQ_PARAMS; - if(res_buf_len > 0) { - while (offset <= res_buf_len) { - if(decode_data(res_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_ARRAY) - return SMC_EINVAL_ARG; - } - sw_memcpy(out_buf, echo_data.data, echo_data.len); - if(update_response_len(meta_data, pos, echo_data.len)) - return SMC_EINVAL_ARG; - - break; - } - *ret_res_buf_len = echo_data.len; - } -/* - sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", echo_data.data, - echo_data.len, sw_strlen(echo_data.data)); -*/ - return 0; + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) +{ + echo_data_t echo_data; + char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len; + + if(req_buf_len > 0) { + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_UINT32) + return SMC_EINVAL_ARG; + + echo_data.len = *((u32*)out_buf); + } + + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_ARRAY) + return SMC_EINVAL_ARG; + + sw_memcpy(echo_data.data, out_buf, echo_data.len); + } + + break; + } + } + + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + if(res_buf_len > 0) { + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_ARRAY) + return SMC_EINVAL_ARG; + } + sw_memcpy(out_buf, echo_data.data, echo_data.len); + if(update_response_len(meta_data, pos, echo_data.len)) + return SMC_EINVAL_ARG; + + break; + } + *ret_res_buf_len = echo_data.len; + } + /* + sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", echo_data.data, + echo_data.len, sw_strlen(echo_data.data)); + */ + return 0; } /** @@ -239,79 +243,79 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_echo_send_cmd_shared_buf(void *req_buf, u32 req_buf_len, - void *res_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, - u32 *ret_res_buf_len) -{ - echo_data_t echo_data; - char *out_buf; - int offset = 0, pos = 0, mapped = 0, type, out_len; - - if(req_buf_len > 0) { - while (offset <= req_buf_len) { - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_ENC_UINT32) - return SMC_EINVAL_ARG; - - echo_data.len = *((u32*)out_buf); - } - - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_MEM_REF) - return SMC_EINVAL_ARG; - - sw_memcpy(echo_data.data, out_buf, echo_data.len); - - if(mapped) - unmap_from_ns((va_t)out_buf); - } - - break; - } - } - - offset = 0, pos = OTZ_MAX_REQ_PARAMS; - if (res_buf_len > 0) { - while (offset <= res_buf_len) { - if(decode_data(res_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_MEM_REF) - return SMC_EINVAL_ARG; - } + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) +{ + echo_data_t echo_data; + char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len; + + if(req_buf_len > 0) { + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_UINT32) + return SMC_EINVAL_ARG; + + echo_data.len = *((u32*)out_buf); + } + + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_MEM_REF) + return SMC_EINVAL_ARG; + + sw_memcpy(echo_data.data, out_buf, echo_data.len); + + if(mapped) + unmap_from_ns((va_t)out_buf); + } + + break; + } + } + + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + if (res_buf_len > 0) { + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_MEM_REF) + return SMC_EINVAL_ARG; + } #if 0 - memset(echo_data.data, 'a', echo_data.len -1); - echo_data.data[echo_data.len] = '\0'; + memset(echo_data.data, 'a', echo_data.len -1); + echo_data.data[echo_data.len] = '\0'; #endif - sw_memcpy(out_buf, echo_data.data, echo_data.len); - if(update_response_len(meta_data, pos, echo_data.len)) - return SMC_EINVAL_ARG; - - if(mapped) - unmap_from_ns((va_t)out_buf); - - break; - } - *ret_res_buf_len = echo_data.len; - } - -/* - sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", - echo_data.data, echo_data.len, sw_strlen(echo_data.data)); + sw_memcpy(out_buf, echo_data.data, echo_data.len); + if(update_response_len(meta_data, pos, echo_data.len)) + return SMC_EINVAL_ARG; + + if(mapped) + unmap_from_ns((va_t)out_buf); + + break; + } + *ret_res_buf_len = echo_data.len; + } + + /* + sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", + echo_data.data, echo_data.len, sw_strlen(echo_data.data)); -*/ - return 0; + */ + return 0; } @@ -333,57 +337,57 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_echo_ipi_send_cmd(void *req_buf, u32 req_buf_len, - void *res_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, - u32 *ret_res_buf_len) -{ - echo_data_t echo_data; - char *out_buf; - int offset = 0, pos = 0, mapped = 0, type, out_len; - - if(req_buf_len > 0) { - while (offset <= req_buf_len) { - if(decode_data(req_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_MEM_REF) - return SMC_EINVAL_ARG; - - sw_memcpy(echo_data.data, out_buf, out_len); - echo_data.len = out_len; - } - break; - } - } - - offset = 0, pos = OTZ_MAX_REQ_PARAMS; - if (res_buf_len > 0) { - while (offset <= res_buf_len) { - if(decode_data(res_buf, meta_data, - &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - else { - if(type != OTZ_MEM_REF) - return SMC_EINVAL_ARG; - } - sw_memcpy(out_buf, echo_data.data, echo_data.len); - if(update_response_len(meta_data, pos, echo_data.len)) - return SMC_EINVAL_ARG; - - break; - } - *ret_res_buf_len = echo_data.len; - } - -/* - sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", - echo_data.data, echo_data.len, sw_strlen(echo_data.data)); + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) +{ + echo_data_t echo_data; + char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len; + + if(req_buf_len > 0) { + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_MEM_REF) + return SMC_EINVAL_ARG; + + sw_memcpy(echo_data.data, out_buf, out_len); + echo_data.len = out_len; + } + break; + } + } + + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + if (res_buf_len > 0) { + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_MEM_REF) + return SMC_EINVAL_ARG; + } + sw_memcpy(out_buf, echo_data.data, echo_data.len); + if(update_response_len(meta_data, pos, echo_data.len)) + return SMC_EINVAL_ARG; + + break; + } + *ret_res_buf_len = echo_data.len; + } + + /* + sw_printf("echo send cmd %s and len 0x%x strlen 0x%x\n", + echo_data.data, echo_data.len, sw_strlen(echo_data.data)); -*/ - return 0; + */ + return 0; } @@ -405,95 +409,95 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_echo_svc(u32 svc_cmd_id, - void *req_buf, u32 req_buf_len, - void *resp_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) -{ - int ret_val = SMC_ERROR; - - switch (svc_cmd_id) { - case OTZ_ECHO_CMD_ID_SEND_CMD: - ret_val = process_otz_echo_send_cmd( - req_buf, - req_buf_len, - resp_buf, - res_buf_len, - meta_data, - ret_res_buf_len); - break; - case OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF: - case OTZ_ECHO_CMD_ID_SEND_CMD_ARRAY_SPACE: - ret_val = process_otz_echo_send_cmd_shared_buf( - req_buf, - req_buf_len, - resp_buf, - res_buf_len, - meta_data, - ret_res_buf_len); - break; - case OTZ_ECHO_CMD_ID_IPI_SEND_CMD: - ret_val = process_otz_echo_ipi_send_cmd( - req_buf, - req_buf_len, - resp_buf, - res_buf_len, - meta_data, - ret_res_buf_len); - break; + void *req_buf, u32 req_buf_len, + void *resp_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) +{ + int ret_val = SMC_ERROR; + + switch (svc_cmd_id) { + case OTZ_ECHO_CMD_ID_SEND_CMD: + ret_val = process_otz_echo_send_cmd( + req_buf, + req_buf_len, + resp_buf, + res_buf_len, + meta_data, + ret_res_buf_len); + break; + case OTZ_ECHO_CMD_ID_SEND_CMD_SHARED_BUF: + case OTZ_ECHO_CMD_ID_SEND_CMD_ARRAY_SPACE: + ret_val = process_otz_echo_send_cmd_shared_buf( + req_buf, + req_buf_len, + resp_buf, + res_buf_len, + meta_data, + ret_res_buf_len); + break; + case OTZ_ECHO_CMD_ID_IPI_SEND_CMD: + ret_val = process_otz_echo_ipi_send_cmd( + req_buf, + req_buf_len, + resp_buf, + res_buf_len, + meta_data, + ret_res_buf_len); + break; #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - case OTZ_ECHO_CMD_ID_TEST_ASYNC_SEND_CMD: - ret_val = process_otz_echo_async_send_cmd( - req_buf, - req_buf_len, - resp_buf, - res_buf_len, - meta_data, - ret_res_buf_len); - break; -#endif - default: - ret_val = SMC_EOPNOTSUPP; - break; - } + case OTZ_ECHO_CMD_ID_TEST_ASYNC_SEND_CMD: + ret_val = process_otz_echo_async_send_cmd( + req_buf, + req_buf_len, + resp_buf, + res_buf_len, + meta_data, + ret_res_buf_len); + break; +#endif + default: + ret_val = SMC_EOPNOTSUPP; + break; + } - return ret_val; + return ret_val; } #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT /** -* @brief Interrupt handler for echo task -* -* This function set the variable to implement the functionality of notification -* meachanism. -* -* @param interrupt: Interrupt ID -* @param data: TLS data -*/ + * @brief Interrupt handler for echo task + * + * This function set the variable to implement the functionality of notification + * meachanism. + * + * @param interrupt: Interrupt ID + * @param data: TLS data + */ void echo_task_handler(struct timer_event* tevent) { - void* data = tevent->data; - sw_tls *tls; - struct echo_global *echo_data; - - u32 task_id = (u32) data; - - sw_printf("echo task handler 0x%x\n", task_id); - tls = get_task_tls(task_id); - if(tls) { - echo_data = (struct echo_global *)tls->private_data; - echo_data->data_available = 1; - } - - if(tls) { - notify_ns(task_id); - } - else { - sw_printf("where is the task???\n"); - } + void* data = tevent->data; + sw_tls *tls; + struct echo_global *echo_data; + + u32 task_id = (u32) data; + + sw_printf("echo task handler 0x%x\n", task_id); + tls = get_task_tls(task_id); + if(tls) { + echo_data = (struct echo_global *)tls->private_data; + echo_data->data_available = 1; + } + + if(tls) { + notify_ns(task_id); + } + else { + sw_printf("where is the task???\n"); + } - tevent->state &= ~TIMER_STATE_EXECUTING; - timer_event_destroy(tevent); + tevent->state &= ~TIMER_STATE_EXECUTING; + timer_event_destroy(tevent); } #endif @@ -509,8 +513,8 @@ */ void test_wq_dummy_wakeup_function(struct wait_queue* wq, u32 wakeup_flag) { - sw_printf("Inside Test Dummy wakeup function\n"); - sw_default_wake_function(wq, wakeup_flag); + sw_printf("Inside Test Dummy wakeup function\n"); + sw_default_wake_function(wq, wakeup_flag); } /** @@ -522,17 +526,17 @@ */ void test_wq_noset_condition(struct timer_event* tevent) { - void* data = tevent->data; - u32 task_id = (u32)data; - sw_printf("No Set condition Int Handler\n"); - - struct sw_task* task = get_task(task_id); - sw_printf("Calling wakeup task from Int handler \n"); - sw_wakeup(&task->wq_head, WAKE_UP); - sw_printf("Called wakeup task from Int handler \n"); + void* data = tevent->data; + u32 task_id = (u32)data; + sw_printf("No Set condition Int Handler\n"); + + struct sw_task* task = get_task(task_id); + sw_printf("Calling wakeup task from Int handler \n"); + sw_wakeup(&task->wq_head, WAKE_UP); + sw_printf("Called wakeup task from Int handler \n"); - tevent->state &= ~TIMER_STATE_EXECUTING; - timer_event_destroy(tevent); + tevent->state &= ~TIMER_STATE_EXECUTING; + timer_event_destroy(tevent); } /** @@ -544,19 +548,19 @@ */ void test_wq_set_condition(struct timer_event* tevent) { - void* data = tevent->data; - u32 task_id = (u32)data; + void* data = tevent->data; + u32 task_id = (u32)data; - sw_printf("Set condition Int Handler\n"); - wq_test_var = 1; + sw_printf("Set condition Int Handler\n"); + wq_test_var = 1; - struct sw_task* task = get_task(task_id); - sw_printf("Calling wakeup task from Int handler \n"); - sw_wakeup(&task->wq_head, WAKE_UP); - sw_printf("Called wakeup task from Int handler \n"); + struct sw_task* task = get_task(task_id); + sw_printf("Calling wakeup task from Int handler \n"); + sw_wakeup(&task->wq_head, WAKE_UP); + sw_printf("Called wakeup task from Int handler \n"); - tevent->state &= ~TIMER_STATE_EXECUTING; - timer_event_destroy(tevent); + tevent->state &= ~TIMER_STATE_EXECUTING; + timer_event_destroy(tevent); } /** @@ -568,44 +572,44 @@ */ void test_wait_queue(int task_id) { - wq_test_var = 0; - struct sw_task* task = get_task(task_id); + wq_test_var = 0; + struct sw_task* task = get_task(task_id); - struct timer_event *tevent,*tevent1; - timeval_t time; + struct timer_event *tevent,*tevent1; + timeval_t time; - tevent = timer_event_create(&test_wq_set_condition,(void*)task_id); - time.tval.sec = 0; - time.tval.nsec = 10000000;/*10ms*/ - timer_event_start(tevent, &time); - - tevent1 = timer_event_create(&test_wq_noset_condition,(void*)task_id); - time.tval.sec = 0; - time.tval.nsec = 1000000;/*1ms*/ - timer_event_start(tevent1, &time); + tevent = timer_event_create(&test_wq_set_condition,(void*)task_id); + time.tval.sec = 0; + time.tval.nsec = 10000000;/*10ms*/ + timer_event_start(tevent, &time); + + tevent1 = timer_event_create(&test_wq_noset_condition,(void*)task_id); + time.tval.sec = 0; + time.tval.nsec = 1000000;/*1ms*/ + timer_event_start(tevent1, &time); - task->wq_head.elements_count = 0; - INIT_LIST_HEAD(&task->wq_head.elements_list); + task->wq_head.elements_count = 0; + INIT_LIST_HEAD(&task->wq_head.elements_list); #if 0 - sw_printf("Before calling wait event \n"); - sw_wait_event(&task->wq_head, (wq_test_var==1)); - sw_printf("Coming out from wait event \n"); + sw_printf("Before calling wait event \n"); + sw_wait_event(&task->wq_head, (wq_test_var==1)); + sw_printf("Coming out from wait event \n"); #endif #if 1 - struct wait_queue wq; - /*sw_init_waitqueue_entry(&wq);*/ - sw_init_waitqueue_entry_func(&wq, &test_wq_dummy_wakeup_function); - sw_add_to_waitqueue(&task->wq_head,&wq); - - sw_printf("Before putting the task to sleep in waitqueue \n"); - while(!(wq_test_var==1)){ - sw_set_task_state(TASK_STATE_WAIT); - schedule(); - } - sw_printf("coming out of sleep from waitqueue \n"); - sw_remove_from_waitqueue(&task->wq_head,&wq); + struct wait_queue wq; + /*sw_init_waitqueue_entry(&wq);*/ + sw_init_waitqueue_entry_func(&wq, &test_wq_dummy_wakeup_function); + sw_add_to_waitqueue(&task->wq_head,&wq); + + sw_printf("Before putting the task to sleep in waitqueue \n"); + while(!(wq_test_var==1)){ + sw_set_task_state(TASK_STATE_WAIT); + schedule(); + } + sw_printf("coming out of sleep from waitqueue \n"); + sw_remove_from_waitqueue(&task->wq_head,&wq); #endif } #endif /* WQ_TEST_FUNC */ @@ -621,65 +625,67 @@ */ void echo_task(int task_id, sw_tls* tls) { - tls->ret_val = 0; + tls->ret_val = 0; #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - struct timer_event* tevent; + struct timer_event* tevent; #if 0 - struct timer_event* tevent1; + struct timer_event* tevent1; #endif - timeval_t time; + timeval_t time; - tevent = timer_event_create(&echo_task_handler,(void*)task_id); - if(!tevent){ - sw_printf("Out of Memory : Cannot register Handler\n"); - return; - } - - /* Time duration = 100ms */ - time.tval.nsec = 100000000; - time.tval.sec = 0; + tevent = timer_event_create(&echo_task_handler,(void*)task_id); + if(!tevent){ + sw_printf("Out of Memory : Cannot register Handler\n"); + return; + } + + /* Time duration = 100ms */ + time.tval.nsec = 100000000; + time.tval.sec = 0; #ifdef WQ_TEST_FUNC - test_wait_queue(task_id); + test_wait_queue(task_id); #endif #if 0 - tevent1 = timer_event_create(&echo_task_handler,(void*)task_id); - if(!tevent1){ - sw_printf("Out of Memory : Cannot register Handler\n"); - return; - } + tevent1 = timer_event_create(&echo_task_handler,(void*)task_id); + if(!tevent1){ + sw_printf("Out of Memory : Cannot register Handler\n"); + return; + } - time.tval.nsec = 1000; - time.tval.sec = 0; - timer_event_start(tevent1, time); + time.tval.nsec = 1000; + time.tval.sec = 0; + timer_event_start(tevent1, time); #endif #endif - tls->ret_val = process_otzapi(task_id, tls); + tls->ret_val = process_otzapi(task_id, tls); #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT - if(tls->ret_val == SMC_PENDING) { - timer_event_start(tevent, &time); - } + if(tls->ret_val == SMC_PENDING) { + timer_event_start(tevent, &time); + } #endif #if 0 - ipc_test_crypto(OTZ_SVC_ECHO, task_id); + ipc_test_crypto(OTZ_SVC_ECHO, task_id); #endif -/* Example of dummy driver calls for the secure apps*/ + /* Example of dummy driver calls for the secure apps*/ #if 0 - sw_open("sw_testdev1"); - sw_close("sw_testdev1"); - sw_open("sw_testdev2"); - sw_close("sw_testdev2"); + sw_open("sw_testdev1"); + sw_close("sw_testdev1"); + sw_read("sw_testdev1"); + sw_write("sw_testdev1","Sample 123"); + sw_open("sw_testdev2"); + sw_close("sw_testdev2"); #endif - handle_task_return(task_id, tls); + handle_task_return(task_id, tls); - DIE_NOW(0, "echo task - hangs\n"); + DIE_NOW(0, "echo task - hangs\n"); } /** @@ -697,19 +703,19 @@ int echo_task_init(sa_config_t *psa_config) { - psa_config->service_uuid = OTZ_SVC_ECHO; - sw_strcpy(psa_config->service_name, "echo"); - psa_config->stack_size = TASK_STACK_SIZE; - psa_config->entry_point = (u32)&echo_task; - psa_config->data = (void*)sw_malloc(sizeof(struct echo_global)); - - if(!psa_config->data) { - sw_printf("echo task init: allocation of local storage data failed\n"); - return OTZ_ENOMEM; - } + psa_config->service_uuid = OTZ_SVC_ECHO; + sw_strcpy(psa_config->service_name, "echo"); + psa_config->stack_size = TASK_STACK_SIZE; + psa_config->entry_point = (u32)&echo_task; + psa_config->data = (void*)sw_malloc(sizeof(struct echo_global)); + + if(!psa_config->data) { + sw_printf("echo task init: allocation of local storage data failed\n"); + return OTZ_ENOMEM; + } - sw_memset(psa_config->data, 0, sizeof(struct echo_global)); - return OTZ_OK; + sw_memset(psa_config->data, 0, sizeof(struct echo_global)); + return OTZ_OK; } @@ -723,7 +729,7 @@ */ int echo_task_exit(void *data) { - if(data) - sw_free(data); - return OTZ_OK; + if(data) + sw_free(data); + return OTZ_OK; } Index: otzone/src/apps/mutex_test_task.c =================================================================== --- otzone/src/apps/mutex_test_task.c.orig 2012-08-06 00:53:57.440035664 +0530 +++ otzone/src/apps/mutex_test_task.c 2012-08-06 10:07:05.901186142 +0530 @@ -19,6 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * */ /* OpenVirtualization mutex test task implementation */ @@ -41,6 +45,7 @@ #include #include #include +#include static sw_mutex_t g_otz_mutex = OTZ_MUTEX_INIT; @@ -61,80 +66,80 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_mutex_test_cmd(void *req_buf, u32 req_buf_len, - void *res_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, - u32 *ret_res_buf_len) + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) { - otz_mutex_test_data_t otz_mutex_test_data; - unsigned char *out_buf; - int offset = 0, pos = 0, mapped = 0, type, out_len=0; - - while (offset <= req_buf_len) { - if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, - (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - if(type != OTZ_ENC_UINT32) { - return SMC_EINVAL_ARG; - } - otz_mutex_test_data.len = *((u32*)out_buf); - if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, - (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - if(type != OTZ_ENC_ARRAY) { - return SMC_EINVAL_ARG; - } - if(out_len < DATA_BUF_LEN) { - sw_memcpy(otz_mutex_test_data.data, out_buf, out_len); - } else { - return(SMC_ENOMEM); - } - break; - } - sw_printf("Attempting to lock the variable \n"); - if(sw_mutex_lock(&g_otz_mutex) == OTZ_INVALID) { - sw_printf("Unable to lock mutex. It is invalid \n"); - goto handle_error; - } - sw_printf("Lock successful. Trying to lock it one more time \n"); - if(sw_mutex_trylock(&g_otz_mutex) == OTZ_BUSY) { - sw_printf("Mutex already locked. We cannot lock it anymore !! \n"); - } - sw_mutex_unlock(&g_otz_mutex); - sw_printf("Unlock successful. Trying to lock it one more time \n"); - if(sw_mutex_trylock(&g_otz_mutex) == OTZ_BUSY) { - sw_printf("Error while unlocking the mutex !! \n"); - goto handle_error; - } + otz_mutex_test_data_t otz_mutex_test_data; + unsigned char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len=0; + + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, + (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + if(type != OTZ_ENC_UINT32) { + return SMC_EINVAL_ARG; + } + otz_mutex_test_data.len = *((u32*)out_buf); + if(decode_data(req_buf, meta_data, &type, &offset, &pos, &mapped, + (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + if(type != OTZ_ENC_ARRAY) { + return SMC_EINVAL_ARG; + } + if(out_len < DATA_BUF_LEN) { + sw_memcpy(otz_mutex_test_data.data, out_buf, out_len); + } else { + return(SMC_ENOMEM); + } + break; + } + sw_printf("Attempting to lock the variable \n"); + if(sw_mutex_lock(&g_otz_mutex) == OTZ_INVALID) { + sw_printf("Unable to lock mutex. It is invalid \n"); + goto handle_error; + } + sw_printf("Lock successful. Trying to lock it one more time \n"); + if(sw_mutex_trylock(&g_otz_mutex) == OTZ_BUSY) { + sw_printf("Mutex already locked. We cannot lock it anymore !! \n"); + } + sw_mutex_unlock(&g_otz_mutex); + sw_printf("Unlock successful. Trying to lock it one more time \n"); + if(sw_mutex_trylock(&g_otz_mutex) == OTZ_BUSY) { + sw_printf("Error while unlocking the mutex !! \n"); + goto handle_error; + } #ifndef CONFIG_EMULATE_FIQ - sw_printf("Going to sleep \n"); - usleep(10); + sw_printf("Going to sleep \n"); + usleep(10); #endif - sw_printf("Second time locking successful \n"); - sw_mutex_unlock(&g_otz_mutex); + sw_printf("Second time locking successful \n"); + sw_mutex_unlock(&g_otz_mutex); handle_error: - offset = 0, pos = OTZ_MAX_REQ_PARAMS; - while (offset <= res_buf_len) { - if(decode_data(res_buf, meta_data, &type, &offset, &pos, &mapped, - (void**)&out_buf, &out_len)) { - return SMC_EINVAL_ARG; - } - if(type != OTZ_ENC_ARRAY) { - return SMC_EINVAL_ARG; - } - if(out_len >= otz_mutex_test_data.len) { - sw_memcpy(out_buf,otz_mutex_test_data.response, otz_mutex_test_data.len); - if(update_response_len(meta_data, pos, otz_mutex_test_data.len)) { - return SMC_EINVAL_ARG; - } - } else { - return(SMC_ENOMEM); - } - break; - } - *ret_res_buf_len = otz_mutex_test_data.len; - return 0; + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, &type, &offset, &pos, &mapped, + (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + if(type != OTZ_ENC_ARRAY) { + return SMC_EINVAL_ARG; + } + if(out_len >= otz_mutex_test_data.len) { + sw_memcpy(out_buf,otz_mutex_test_data.response, otz_mutex_test_data.len); + if(update_response_len(meta_data, pos, otz_mutex_test_data.len)) { + return SMC_EINVAL_ARG; + } + } else { + return(SMC_ENOMEM); + } + break; + } + *ret_res_buf_len = otz_mutex_test_data.len; + return 0; } /** @@ -156,25 +161,25 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_otz_mutex_test_svc(u32 svc_cmd_id, void *req_buf, u32 req_buf_len, - void *resp_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) + void *resp_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) { - int ret_val = SMC_ERROR; - if((req_buf_len == 0) || (res_buf_len == 0) ) { - return(0); - } - - switch (svc_cmd_id) { - case OTZ_MUTEX_TEST_CMD_ID_TEST: - ret_val = process_otz_mutex_test_cmd(req_buf,req_buf_len, - resp_buf,res_buf_len,meta_data,ret_res_buf_len); - break; - default: - ret_val = SMC_EOPNOTSUPP; - break; - } + int ret_val = SMC_ERROR; + if((req_buf_len == 0) || (res_buf_len == 0) ) { + return(0); + } + + switch (svc_cmd_id) { + case OTZ_MUTEX_TEST_CMD_ID_TEST: + ret_val = process_otz_mutex_test_cmd(req_buf,req_buf_len, + resp_buf,res_buf_len,meta_data,ret_res_buf_len); + break; + default: + ret_val = SMC_EOPNOTSUPP; + break; + } - return ret_val; + return ret_val; } /** @@ -188,10 +193,10 @@ */ void mutex_test_task(int task_id, sw_tls* tls) { - ipc_test_echo(OTZ_SVC_MUTEX_TEST, task_id); - tls->ret_val = process_otzapi(task_id, tls); - handle_task_return(task_id, tls); - while(1); + ipc_test_echo(OTZ_SVC_MUTEX_TEST, task_id); + tls->ret_val = process_otzapi(task_id, tls); + handle_task_return(task_id, tls); + while(1); } /** @@ -208,17 +213,17 @@ */ int mutex_test_task_init(sa_config_t *psa_config) { - psa_config->service_uuid = OTZ_SVC_MUTEX_TEST; - sw_strcpy(psa_config->service_name, "otz_mutex_test"); - psa_config->stack_size = TASK_STACK_SIZE ; - psa_config->entry_point = (u32)&mutex_test_task; - psa_config->data = (void*)sw_malloc(sizeof(struct otz_mutex_test_global)); - - if(!psa_config->data) { - sw_printf("mutex_test init: allocation of local storage data failed\n"); - return OTZ_ENOMEM; - } - return OTZ_OK; + psa_config->service_uuid = OTZ_SVC_MUTEX_TEST; + sw_strcpy(psa_config->service_name, "otz_mutex_test"); + psa_config->stack_size = TASK_STACK_SIZE ; + psa_config->entry_point = (u32)&mutex_test_task; + psa_config->data = (void*)sw_malloc(sizeof(struct otz_mutex_test_global)); + + if(!psa_config->data) { + sw_printf("mutex_test init: allocation of local storage data failed\n"); + return OTZ_ENOMEM; + } + return OTZ_OK; } /** @@ -233,8 +238,8 @@ */ int mutex_test_task_exit(void *data) { - if(data) - sw_free(data); - return OTZ_OK; + if(data) + sw_free(data); + return OTZ_OK; } Index: otzone/src/apps/objects.mk =================================================================== --- otzone/src/apps/objects.mk.orig 2012-08-06 00:55:40.784035802 +0530 +++ otzone/src/apps/objects.mk 2012-08-06 00:56:03.196035830 +0530 @@ -4,6 +4,8 @@ apps-objs-y+=task_control.o apps-objs-y+=crypto_task.o apps-objs-y+=mutex_test_task.o +apps-objs-y+=md5_task.o +apps-objs-y+=test_md5.o apps-objs-y+=sw_testdev1.o apps-objs-y+=sw_testdev2.o Index: otzone/src/apps/rc4_algorithm.c =================================================================== --- otzone/src/apps/rc4_algorithm.c.orig 2012-08-06 00:57:18.448035932 +0530 +++ otzone/src/apps/rc4_algorithm.c 2012-08-06 10:08:25.349442248 +0530 @@ -1,4 +1,4 @@ - /* +/* * OpenVirtualization: * For additional details and support contact developer@sierraware.com. * Additional documentation can be found at www.openvirtualization.org @@ -18,6 +18,10 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application * */ @@ -34,6 +38,7 @@ #define SWAP(a,b) (((a) ^ (b)) && ((b) ^= (a) ^= (b), (a) ^= (b))) + /** * @brief the function to encode and decode a buffer using rc4 algorithm. * The output buffer has to be atleast the same length as the input buffer. @@ -47,8 +52,8 @@ * * @return 0 if successful. No other return values are expected for now **/ -int otzone_rc4_algorithm(char *input_buf, int input_len, char *output_buf, - int *output_len) + +int otzone_rc4_algorithm(unsigned char *input_buf, int input_len, unsigned char *output_buf, int *output_len) { char *key_seq = ")*(&$%^!@#~`+="; /* key for encryption & decryption*/ unsigned char key_seq_len = 14; /* length of the key_seq variable*/ Index: otzone/src/apps/sw_testdev1.c =================================================================== --- otzone/src/apps/sw_testdev1.c.orig 2012-08-06 00:59:19.952036095 +0530 +++ otzone/src/apps/sw_testdev1.c 2012-08-06 10:05:30.468926016 +0530 @@ -18,6 +18,11 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * * A dummy driver application */ @@ -32,8 +37,8 @@ */ static void sw_test_dev_open(void) { - sw_printf(" TEST Device -1 open call\n"); - return; + sw_printf(" TEST Device -1 open call\n"); + return; } /** @@ -41,17 +46,39 @@ */ static void sw_test_dev_close(void) { - sw_printf("TEST Device -1 close call\n"); - return; + sw_printf("TEST Device -1 close call\n"); + return; } + +/** + * @brief + */ +static void sw_test_dev_read() +{ + sw_printf(" TEST Device -1 read call \n"); + return; +} + +/** + * @brief + */ +static void sw_test_dev_write(char * ptr) +{ + sw_printf("TEST Device -1 write call %s \n", ptr); + return; +} + + /** * @brief */ static struct sw_file_operations sw_test_dev_fops = { - .open = sw_test_dev_open, - .close = sw_test_dev_close, - .sw_dev_name = SW_TEST_DEV + .open = sw_test_dev_open, + .close = sw_test_dev_close, + .read = sw_test_dev_read, + .write = sw_test_dev_write, + .sw_dev_name = SW_TEST_DEV }; /** @@ -61,8 +88,8 @@ */ static void __init sw_test_dev_init(void) { - sw_device_register(&sw_test_dev_fops); - return; + sw_device_register(&sw_test_dev_fops); + return; } /** @@ -70,8 +97,8 @@ */ static void sw_test_dev_exit(void) { - sw_device_unregister(&sw_test_dev_fops); - return; + sw_device_unregister(&sw_test_dev_fops); + return; } SW_MODULE_INIT(&sw_test_dev_init); Index: otzone/src/apps/task_control.c =================================================================== --- otzone/src/apps/task_control.c.orig 2012-08-06 01:02:07.232036318 +0530 +++ otzone/src/apps/task_control.c 2012-08-06 10:08:38.115056264 +0530 @@ -19,6 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Task controller implementation */ @@ -41,6 +45,7 @@ #include #include #include +#include /** * @brief Process service @@ -61,40 +66,46 @@ * SMC_*: An implementation-defined error code for any other error. */ int process_service(u32 svc_id, u32 svc_cmd_id, - void *req_buf, u32 req_buf_len, - void *resp_buf, u32 res_buf_len, - struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) + void *req_buf, u32 req_buf_len, + void *resp_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) { - int ret_val = SMC_ERROR; - switch(svc_id) { - case OTZ_SVC_ECHO: { - ret_val = process_otz_echo_svc(svc_cmd_id, - req_buf, req_buf_len, - resp_buf, res_buf_len, - meta_data, ret_res_buf_len); - break; - } - case OTZ_SVC_CRYPT: { - ret_val = process_otz_crypto_svc(svc_cmd_id, - req_buf, req_buf_len, - resp_buf, res_buf_len, - meta_data, ret_res_buf_len); - break; - } - case OTZ_SVC_MUTEX_TEST: { - ret_val = process_otz_mutex_test_svc(svc_cmd_id, - req_buf, req_buf_len, - resp_buf, res_buf_len, - meta_data, ret_res_buf_len); - break; - } - - default: - ret_val = SMC_EOPNOTSUPP; - break; - } + int ret_val = SMC_ERROR; + switch(svc_id) { + case OTZ_SVC_ECHO: { + ret_val = process_otz_echo_svc(svc_cmd_id, + req_buf, req_buf_len, + resp_buf, res_buf_len, + meta_data, ret_res_buf_len); + break; + } + case OTZ_SVC_CRYPT: { + ret_val = process_otz_crypto_svc(svc_cmd_id, + req_buf, req_buf_len, + resp_buf, res_buf_len, + meta_data, ret_res_buf_len); + break; + } + case OTZ_SVC_MUTEX_TEST: { + ret_val = process_otz_mutex_test_svc(svc_cmd_id, + req_buf, req_buf_len, + resp_buf, res_buf_len, + meta_data, ret_res_buf_len); + break; + } + case OTZ_SVC_MD5 : { + ret_val = process_otz_md5_svc(svc_cmd_id, + req_buf, req_buf_len, + resp_buf, res_buf_len, + meta_data, ret_res_buf_len); + break; + } + default: + ret_val = SMC_EOPNOTSUPP; + break; + } - return ret_val; + return ret_val; } @@ -112,91 +123,91 @@ */ int process_otzapi(int session_id, sw_tls *tls) { - int ret_val; - pa_t cmd_phy; - u32 *params; - struct otz_smc_cmd *cmd = NULL; - void *req_buf = NULL, *res_buf = NULL; - struct otzc_encode_meta *meta_data = NULL; - - u32 svc_id, svc_cmd_id; - - params = tls->params; - if(!params){ - ret_val = SMC_ENOMEM; - goto ret_func; - } - - if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { - cmd_phy = (pa_t) params[1]; - if(!cmd) { - if(map_to_ns(cmd_phy, (va_t*) &cmd)) { - ret_val = SMC_ENOMEM; - goto ret_func; - } - } - - if(cmd->req_buf_len > 0) { - if(map_to_ns(cmd->req_buf_phys, (va_t*)&req_buf) != 0) { - ret_val = SMC_ENOMEM; - goto handle_err1; - } - } - - if(cmd->resp_buf_len > 0) { - if(map_to_ns(cmd->resp_buf_phys, (va_t*)&res_buf) != 0) { - ret_val = SMC_ENOMEM; - goto handle_err2; - } - } - - if(map_to_ns(cmd->meta_data_phys, (va_t*)&meta_data) != 0) { - ret_val = SMC_ENOMEM; - goto handle_err2; - } - } - else { - cmd = (struct otz_smc_cmd *)params[1]; - req_buf = (void*)cmd->req_buf_phys; - res_buf = (void*)cmd->resp_buf_phys; - meta_data = (void*)cmd->meta_data_phys; - } - - if(cmd->context != session_id) { - cmd->cmd_status = OTZ_STATUS_COMPLETE; - return SMC_EINVAL_ARG; - } - - svc_id = (cmd->id >> 10 & 0x3ff); - svc_cmd_id = (cmd->id & 0x3ff); - sw_printf("service id 0x%x\t cmd id 0x%x\n", svc_id, svc_cmd_id); - ret_val = process_service(svc_id, svc_cmd_id, - req_buf, cmd->req_buf_len, - res_buf, cmd->resp_buf_len, - meta_data, &cmd->ret_resp_buf_len); + int ret_val; + pa_t cmd_phy; + u32 *params; + struct otz_smc_cmd *cmd = NULL; + void *req_buf = NULL, *res_buf = NULL; + struct otzc_encode_meta *meta_data = NULL; + + u32 svc_id, svc_cmd_id; + + params = tls->params; + if(!params){ + ret_val = SMC_ENOMEM; + goto ret_func; + } + + if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { + cmd_phy = (pa_t) params[1]; + if(!cmd) { + if(map_to_ns(cmd_phy, (va_t*) &cmd)) { + ret_val = SMC_ENOMEM; + goto ret_func; + } + } + + if(cmd->req_buf_len > 0) { + if(map_to_ns(cmd->req_buf_phys, (va_t*)&req_buf) != 0) { + ret_val = SMC_ENOMEM; + goto handle_err1; + } + } + + if(cmd->resp_buf_len > 0) { + if(map_to_ns(cmd->resp_buf_phys, (va_t*)&res_buf) != 0) { + ret_val = SMC_ENOMEM; + goto handle_err2; + } + } + + if(map_to_ns(cmd->meta_data_phys, (va_t*)&meta_data) != 0) { + ret_val = SMC_ENOMEM; + goto handle_err2; + } + } + else { + cmd = (struct otz_smc_cmd *)params[1]; + req_buf = (void*)cmd->req_buf_phys; + res_buf = (void*)cmd->resp_buf_phys; + meta_data = (void*)cmd->meta_data_phys; + } + + if(cmd->context != session_id) { + cmd->cmd_status = OTZ_STATUS_COMPLETE; + return SMC_EINVAL_ARG; + } + + svc_id = (cmd->id >> 10 & 0x3ff); + svc_cmd_id = (cmd->id & 0x3ff); + sw_printf("service id 0x%x\t cmd id 0x%x\n", svc_id, svc_cmd_id); + ret_val = process_service(svc_id, svc_cmd_id, + req_buf, cmd->req_buf_len, + res_buf, cmd->resp_buf_len, + meta_data, &cmd->ret_resp_buf_len); - if(!ret_val) - cmd->cmd_status = OTZ_STATUS_COMPLETE; + if(!ret_val) + cmd->cmd_status = OTZ_STATUS_COMPLETE; - if(ret_val == SMC_PENDING) { - } + if(ret_val == SMC_PENDING) { + } handle_err2: - if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { - if(req_buf) - unmap_from_ns((va_t)req_buf); - if(res_buf) - unmap_from_ns((va_t)res_buf); - if(meta_data) - unmap_from_ns((va_t)meta_data); - } + if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { + if(req_buf) + unmap_from_ns((va_t)req_buf); + if(res_buf) + unmap_from_ns((va_t)res_buf); + if(meta_data) + unmap_from_ns((va_t)meta_data); + } handle_err1: - if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { - unmap_from_ns((va_t)cmd); - } + if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { + unmap_from_ns((va_t)cmd); + } ret_func: - return ret_val; + return ret_val; } Index: otzone/src/apps/md5_task.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ otzone/src/apps/md5_task.c 2012-08-06 10:07:55.768240207 +0530 @@ -0,0 +1,298 @@ +/* + * OpenVirtualization: + * For additional details and support contact developer@sierraware.com. + * Additional documentation can be found at www.openvirtualization.org + * + * Copyright (C) 2011 SierraWare + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * + * Linux trustzone example application. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +/***************************** md5 start *******************************************/ + +/***************************** md5 end ********************************************/ +/** + * @brief md5 task entry point + * + * This function implements the processing of md5 commands. + * + * @param task_id: task identifier + * @param tls: Pointer to task local storage + */ +void md5_task(int task_id, sw_tls* tls) +{ + // sw_printf("md5_task created \n"); + tls->ret_val = process_otzapi(task_id, tls); + handle_task_return(task_id, tls); + while(1); +} + +/** + * @brief: md5 task init + * + * This function initializes md5 task parameters + * + * @param psa_config: Configuration parameter for the task and its get called + * before the task creation + * + * @return otz_return_t: + * OTZ_OK \n + * OTZ_* - An implementation-defined error code for any other error.\n + */ +int md5_task_init(sa_config_t *psa_config) +{ + extern struct cvs_MD5Context context; + sw_printf("Initialized md5_task \n"); + psa_config->service_uuid = OTZ_SVC_MD5; + sw_strcpy(psa_config->service_name, "md5"); + psa_config->stack_size = TASK_STACK_SIZE; + psa_config->entry_point = (u32)&md5_task; + psa_config->data = (void *)sw_malloc(sizeof(struct md5_global)); + if(!psa_config->data) { + sw_printf("md5 task init: allocation of local storage data failed\n"); + return OTZ_ENOMEM; + } + cvs_MD5Init (&context); + return OTZ_OK; +} + + +/** + * @brief md5 task exit + * + * This function gets called before the task deletion + * + * @param data: Private data which need to be freed. + * @return otz_return_t: + * OTZ_OK \n + * OTZ_FAIL \n + */ +int md5_task_exit(void* data) +{ + sw_printf("Exit from md5_task \n"); + if(data) + sw_free(data); + return OTZ_OK; +} + +/** + * @brief Process md5 service + * + * This function does, on the basis of svc_cmd_id, calls process_otz_md5_cmd_parse_data + * or process_otz_md5_cmd_compute_chksum + * + * @param svc_cmd_id: Command identifer to process the md5 service command + * @param req_buf: Virtual address of the request buffer + * @param req_buf_len: Request buffer length + * @param resp_buf: Virtual address of the response buffer + * @param res_buf_len: Response buffer length + * @param meta_data: Virtual address of the meta data of the encoded data + * @param ret_res_buf_len: Return length of the response buffer + * + * @return SMC return codes: + * SMC_SUCCESS: md5 service command processed successfully. \n + * SMC_*: An implementation-defined error code for any other error. + */ +int process_otz_md5_svc(u32 svc_cmd_id, void *req_buf, u32 req_buf_len, + void *resp_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len) +{ + int ret_val = SMC_ERROR; + unsigned char* res_buf = NULL; + if ( ( ( svc_cmd_id == OTZ_MD5_CMD_ID_PROVIDE_FILENAME ) + && ( req_buf_len == 0 ) ) || ( ( svc_cmd_id == OTZ_MD5_CMD_ID_RETURN_CHKSUM ) + && ( res_buf_len == 0 ) ) ) + { + return 0; + } + + switch (svc_cmd_id) { + case OTZ_MD5_CMD_ID_PROVIDE_FILENAME: + ret_val = process_otz_md5_cmd_parse_data(req_buf,req_buf_len, + resp_buf,res_buf_len,meta_data,ret_res_buf_len); + + break; + case OTZ_MD5_CMD_ID_RETURN_CHKSUM: + ret_val = process_otz_md5_cmd_compute_chksum(req_buf,req_buf_len, + resp_buf,res_buf_len,meta_data,ret_res_buf_len); + res_buf = (unsigned char*)resp_buf; + break; + default: + ret_val = SMC_EOPNOTSUPP; + break; + } + return ret_val; +} + +/** + * @brief Parse data + * + * This function parses the data for computing md5 checksum + * + * @param svc_cmd_id: Command identifer to process the md5 service command + * @param req_buf: Virtual address of the request buffer + * @param req_buf_len: Request buffer length + * @param resp_buf: Virtual address of the response buffer + * @param res_buf_len: Response buffer length + * @param meta_data: Virtual address of the meta data of the encoded data + * @param ret_res_buf_len: Return length of the response buffer + * + * @return SMC return codes: + * SMC_SUCCESS: md5 service command processed successfully. \n + * SMC_*: An implementation-defined error code for any other error. + */ +int process_otz_md5_cmd_parse_data(void *req_buf, u32 req_buf_len, + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) +{ + md5_data_t md5_data; + unsigned char *out_buf; + int offset = 0, pos = 0, mapped = 0, type, out_len; + + if(req_buf_len > 0) { + while (offset <= req_buf_len) { + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(type != OTZ_ENC_UINT32) + { + sw_printf("Returns SMC_EINVAL_ARG \n"); + return SMC_EINVAL_ARG; + } + + md5_data.len = *((u32*)out_buf); + } + + if(decode_data(req_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) { + return SMC_EINVAL_ARG; + } + else { + if(( type != OTZ_MEM_REF ) && ( type != OTZ_ENC_ARRAY )) + { + sw_printf("Returns SMC_EINVAL_ARG \n"); + return SMC_EINVAL_ARG; + } + sw_memcpy(md5_data.data, out_buf, md5_data.len); + + if(mapped) + unmap_from_ns((va_t)out_buf); + } + + break; + } + } + + perform_md5_algo(md5_data.data,md5_data.len); + return 0; +} + +/** + * @brief Compute checksum + * + * This function computes the checksum based on previously parsed data + * + * @param svc_cmd_id: Command identifer to process the md5 service command + * @param req_buf: Virtual address of the request buffer + * @param req_buf_len: Request buffer length + * @param resp_buf: Virtual address of the response buffer + * @param res_buf_len: Response buffer length + * @param meta_data: Virtual address of the meta data of the encoded data + * @param ret_res_buf_len: Return length of the response buffer + * + * @return SMC return codes: + * SMC_SUCCESS: md5 service command processed successfully. \n + * SMC_*: An implementation-defined error code for any other error. + */ + +int process_otz_md5_cmd_compute_chksum(void *req_buf, u32 req_buf_len, + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len) +{ + md5_data_t md5_data; + unsigned char *out_buf; + int i; + int offset = 0, pos = 0, mapped = 0, type, out_len; + + compute_checksum(&md5_data.len,md5_data.response); + + offset = 0, pos = OTZ_MAX_REQ_PARAMS; + if (res_buf_len > 0) { + while (offset <= res_buf_len) { + if(decode_data(res_buf, meta_data, + &type, &offset, &pos, &mapped, (void**)&out_buf, &out_len)) + { + sw_printf("Returns SMC_EINVAL_ARG \n"); + return SMC_EINVAL_ARG; + } + else { + if((type != OTZ_MEM_REF) && ( type != OTZ_ENC_ARRAY )) + { + sw_printf("Returns SMC_EINVAL_ARG \n"); + return SMC_EINVAL_ARG; + } + } + for( i=0 ; i<16 ; i++ ) + { + out_buf[i] = md5_data.response[i]; + } + if(update_response_len(meta_data, pos, md5_data.len)) + { + sw_printf("Returns SMC_EINVAL_ARG \n"); + return SMC_EINVAL_ARG; + } + if(mapped) + unmap_from_ns((va_t)out_buf); + + break; + } + *ret_res_buf_len = md5_data.len; + } + + return 0; +} + Index: otzone/src/apps/test_md5.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ otzone/src/apps/test_md5.c 2012-08-06 10:07:21.681292163 +0530 @@ -0,0 +1,426 @@ +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ + +/* This code was modified in 1997 by Jim Kingdon of Cyclic Software to + not require an integer type which is exactly 32 bits. This work + draws on the changes for the same purpose by Tatu Ylonen + as part of SSH, but since I didn't actually use + that code, there is no copyright issue. I hereby disclaim + copyright in any changes I have made; this code remains in the + public domain. */ + +/* Note regarding cvs_* namespace: this avoids potential conflicts + with libraries such as some versions of Kerberos. No particular + need to worry about whether the system supplies an MD5 library, as + this file is only about 3k of object code. */ + +/* + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + */ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif +#include +#include /* for memcpy() and memset() */ + +/* Add prototype support. */ +#ifndef PROTO +#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__) +#define PROTO(ARGS) ARGS +#else +#define PROTO(ARGS) () +#endif +#endif + +#include "md5.h" + +struct cvs_MD5Context context; + + +/* @brief + * @param addr + * @return + * @Description Little-endian byte-swapping routines. Note that these do not + depend on the size of datatypes such as cvs_uint32, nor do they require + us to detect the endianness of the machine we are running on. It + is possible they should be macros for speed, but I would be + surprised if they were a performance bottleneck for MD5. + * + */ + + static cvs_uint32 +getu32 (addr) + const unsigned char *addr; +{ + return (((((unsigned long)addr[3] << 8) | addr[2]) << 8) + | addr[1]) << 8 | addr[0]; +} + + +/* @brief + * @param addr + * @return + * @Description Little-endian byte-swapping routines. Note that these do not + depend on the size of datatypes such as cvs_uint32, nor do they require + us to detect the endianness of the machine we are running on. It + is possible they should be macros for speed, but I would be + surprised if they were a performance bottleneck for MD5. + * + */ + + static void +putu32 (data, addr) + cvs_uint32 data; + unsigned char *addr; +{ + addr[0] = (unsigned char)data; + addr[1] = (unsigned char)(data >> 8); + addr[2] = (unsigned char)(data >> 16); + addr[3] = (unsigned char)(data >> 24); +} + +/*@brief: initialization of md5context for computing md5 checksum + * @param: ctx md5 context + * @return + * + * @Description : + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ + void +cvs_MD5Init (ctx) + struct cvs_MD5Context *ctx; +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * @brief: updation of md5context everytime it reads data buffer + * @param ctx md5 context + * @param buf input data + * @param len input data length + * @Description Update context to reflect the concatenation of another buffer full + * of bytes. + */ + void +cvs_MD5Update (ctx, buf, len) + struct cvs_MD5Context *ctx; + unsigned char const *buf; + unsigned len; +{ + cvs_uint32 t; + /* Update bitcount */ + t = ctx->bits[0]; + if ((ctx->bits[0] = (t + ((cvs_uint32)len << 3)) & 0xffffffff) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if ( t ) { + unsigned char *p = ctx->in + t; + + t = 64-t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + cvs_MD5Transform (ctx->buf, ctx->in); + buf += t; + len -= t; + } + + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + cvs_MD5Transform (ctx->buf, ctx->in); + buf += 64; + len -= 64; + } + memcpy(ctx->in, buf, len); +} + + +/* @brief: final computation of checksum + * @param: context md5 context + * @param: digest md5 checksum + * @return + * @Description: Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ + + void +cvs_MD5Final (digest, ctx) + unsigned char digest[16]; + struct cvs_MD5Context *ctx; +{ + unsigned count; + unsigned char *p; + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + sw_memset(p, 0, count); + if(((u32)p & 0x3F) && ((count & 0x3) == count)) + { + while(count--) + { + *p = 0; + p++; + } + } + + cvs_MD5Transform (ctx->buf, ctx->in); + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count-8); + } + /* Append length in bits and transform */ + print_context_buffer(ctx, NULL,0); + + putu32(ctx->bits[0], ctx->in + 56); + ctx->in[56] = (unsigned char) ctx->bits[0]; + print_context_buffer(ctx, NULL,0); + putu32(ctx->bits[1], ctx->in + 60); + + cvs_MD5Transform (ctx->buf, ctx->in); + putu32(ctx->buf[0], digest); + putu32(ctx->buf[1], digest + 4); + putu32(ctx->buf[2], digest + 8); + putu32(ctx->buf[3], digest + 12); + memset(ctx, 0, sizeof(ctx)); /* In case it's sensitive */ +} + +//#ifndef ASM_MD5 + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w &= 0xffffffff, w = w<>(32-s), w += x ) + + +/* @brief + * @param buf + * @param in + * @return + * @Description The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ + void +cvs_MD5Transform (buf, inraw) + cvs_uint32 buf[4]; + const unsigned char inraw[64]; +{ + register cvs_uint32 a, b, c, d; + cvs_uint32 in[16]; + int i; + for (i = 0; i < 16; ++i) + { + in[i] = getu32 (inraw + 4 * i); + } + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[ 0]+0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[ 1]+0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[ 2]+0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[ 3]+0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[ 4]+0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[ 5]+0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[ 6]+0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[ 7]+0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[ 8]+0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[ 9]+0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10]+0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11]+0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12]+0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13]+0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14]+0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15]+0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[ 1]+0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[ 6]+0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11]+0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[ 0]+0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[ 5]+0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10]+0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15]+0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[ 4]+0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[ 9]+0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14]+0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[ 3]+0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[ 8]+0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13]+0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[ 2]+0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[ 7]+0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12]+0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[ 5]+0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[ 8]+0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11]+0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14]+0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[ 1]+0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[ 4]+0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[ 7]+0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10]+0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13]+0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[ 0]+0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[ 3]+0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[ 6]+0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[ 9]+0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12]+0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15]+0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[ 2]+0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[ 0]+0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[ 7]+0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14]+0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[ 5]+0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12]+0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[ 3]+0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10]+0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[ 1]+0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[ 8]+0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15]+0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[ 6]+0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13]+0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[ 4]+0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11]+0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[ 2]+0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[ 9]+0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} + + +/* @brief: Used only for debugging the md5 algorithm + * @param ctx + * @param buffer + * @param len + * @return + */ + +void print_context_buffer(struct cvs_MD5Context *ctx,unsigned char* buffer,int len) +{ +#if 0 + int i; + if( len > 0 ) + for( i=0 ; ibuf[%02x]=%08x ",i,ctx->buf[i]); + } + sw_printf("\n"); + for( i=0 ; i<2 ; i++ ) + { + sw_printf("ctx->bits[%02x]=%08x ",i,ctx->bits[i]); + } + sw_printf("\n"); + for( i=0 ; i<64 ; i++ ) + { + sw_printf("ctx->in[%02x]=%08x ",i,ctx->in[i]); + if( i%4 == 3 ) + sw_printf("\n"); + } +#endif +} + + +/* @brief: performs md5 algorithm on input buffer. This is called in repeated iteration till End of File + * @param: input_buf input data buffer + * @len: input_len length of input data buffer + * @return + */ + +int perform_md5_algo(unsigned char *input_buf, int input_len) +{ + + int len; + len = input_len; + + print_context_buffer(&context, input_buf,input_len); + cvs_MD5Update (&context, input_buf, input_len); + print_context_buffer(&context, input_buf,input_len); + + return 0; +} + + +/* @brief: Computation of md5 checksum. To be called at last after perform_md5_algo() has been called + * for all the data till End of File + * @param: len Length of md5 checksum + * @param output_buf contains md5 checksum + * @return + */ + +int compute_checksum(int *len,unsigned char *output_buf) +{ + int i; + cvs_MD5Final (output_buf, &context); + + sw_printf("In secure world. The checksum computed is = "); + *len = 16;//MD5 checksum is of length 16 bytes + for (i = 0; i < 16; i++) + { + sw_printf ("%02x", (unsigned int) output_buf[i]); + } + sw_printf ("\n"); + + return 0; +} + Index: otzone/src/arch/arm/armv7/include/sw_syscalls_id.h =================================================================== --- otzone/src/arch/arm/armv7/include/sw_syscalls_id.h.orig 2012-08-06 01:08:37.892036839 +0530 +++ otzone/src/arch/arm/armv7/include/sw_syscalls_id.h 2012-08-06 10:03:57.027669887 +0530 @@ -19,6 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * + * */ #ifndef __SW_SYSCALL_H_ @@ -29,6 +34,8 @@ */ #define SW_SYSCALL_OPEN 0xfff0 #define SW_SYSCALL_CLOSE 0xfff1 +#define SW_SYSCALL_READ 0xfff5 +#define SW_SYSCALL_WRITE 0xfff6 #define SW_SYSCALL_MAP_NS 0xfff2 #define SW_SYSCALL_UNMAP_NS 0xfff3 #define SW_SYSCALL_EXE_SMC 0xfff4 Index: otzone/src/arch/arm/armv7/exception_handlers.c =================================================================== --- otzone/src/arch/arm/armv7/exception_handlers.c.orig 2012-08-06 01:10:31.308036990 +0530 +++ otzone/src/arch/arm/armv7/exception_handlers.c 2012-08-06 10:04:39.550397946 +0530 @@ -18,6 +18,10 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application * */ @@ -53,38 +57,38 @@ */ static const char* data_abt_fault_string[] = { - "INVALID ENTRY", - "Alignment Fault", - "Debug Event", - "Access Flag - Section", - "Instruction Cache Maintainance Fault", - "Translation Fault - Section", - "Access Flag - Page", - "Translation Fault - Page", - "Synchronous External Abort", - "Domain Fault - Section", - "INVALID ENTRY", - "Domain Fault - Page", - "Translation Table Talk 1st Level sync abt", - "Permission Fault - Section", - "Translation Table Walk 2nd Level sync abt", - "Permission Fault - Page", - "INVALID ENTRY", /* 10 = 0b10000, */ - "INVALID ENTRY", /* 11 = 0b10001, */ - "INVALID ENTRY", /* 12 = 0b10010, */ - "INVALID ENTRY", /* 13 = 0b10011, */ - "IMPLEMENTATION DEFINED Lockdown", /* 14 = 0b10100, */ - "INVALID ENTRY", /* 15 = 0b10101, */ - "Asynchronous external abort", /* 16 = 0b10110, */ - "INVALID ENTRY", /* 17 = 0b10111, */ - "Memory Access Synchronous Parity Error", /* 18 = 0b11000, */ - "Memory Access Synchronous Parity Error-2", /* 19 = 0b11001, */ - "IMPLEMENTATION DEFINED Coprocessor Abort", /* 1a = 0b11010, */ - "INVALID ENTRY", /* 1b = 0b11011, */ - "Translation Table Walk 1st Level parity", /* 1c = 0b11100, */ - "INVALID ENTRY", /* 1d = 0b11101, */ - "Translation Table Walk 2nd Level parity", /* 1e = 0b11110, */ - "INVALID ENTRY", /* 1f = 0b11111, */ + "INVALID ENTRY", + "Alignment Fault", + "Debug Event", + "Access Flag - Section", + "Instruction Cache Maintainance Fault", + "Translation Fault - Section", + "Access Flag - Page", + "Translation Fault - Page", + "Synchronous External Abort", + "Domain Fault - Section", + "INVALID ENTRY", + "Domain Fault - Page", + "Translation Table Talk 1st Level sync abt", + "Permission Fault - Section", + "Translation Table Walk 2nd Level sync abt", + "Permission Fault - Page", + "INVALID ENTRY", /* 10 = 0b10000, */ + "INVALID ENTRY", /* 11 = 0b10001, */ + "INVALID ENTRY", /* 12 = 0b10010, */ + "INVALID ENTRY", /* 13 = 0b10011, */ + "IMPLEMENTATION DEFINED Lockdown", /* 14 = 0b10100, */ + "INVALID ENTRY", /* 15 = 0b10101, */ + "Asynchronous external abort", /* 16 = 0b10110, */ + "INVALID ENTRY", /* 17 = 0b10111, */ + "Memory Access Synchronous Parity Error", /* 18 = 0b11000, */ + "Memory Access Synchronous Parity Error-2", /* 19 = 0b11001, */ + "IMPLEMENTATION DEFINED Coprocessor Abort", /* 1a = 0b11010, */ + "INVALID ENTRY", /* 1b = 0b11011, */ + "Translation Table Walk 1st Level parity", /* 1c = 0b11100, */ + "INVALID ENTRY", /* 1d = 0b11101, */ + "Translation Table Walk 2nd Level parity", /* 1e = 0b11110, */ + "INVALID ENTRY", /* 1f = 0b11111, */ }; /** @@ -92,38 +96,38 @@ */ static const char* prefetch_abt_fault_string[] = { - "INVALID ENTRY", /* 0 = 0b00000, */ - "INVALID ENTRY", /* 1 = 0b00001, */ - "Debug Event", /* 2 = 0b00010, */ - "Access Flag Fault: Section", /* 3 = 0b00011, */ - "INVALID ENTRY", /* 4 = 0b00100, */ - "Translation Fault: Section", /* 5 = 0b00101, */ - "Access Flag Fault: Page", /* 6 = 0b00110, */ - "Translation Fault: Page", /* 7 = 0b00111, */ - "Synchronous External Abort", /* 8 = 0b01000, */ - "Domain Fault: Section", /* 9 = 0b01001, */ - "INVALID ENTRY", /* a = 0b01010, */ - "Domain Fault: Page", /* b = 0b01011, */ - "Translation Table Talk 1st Level sync abt",/* c = 0b01100, */ - "Permission Fault: Section", /* d = 0b01101, */ - "Translation Table Walk 2nd Level sync abt",/* e = 0b01110, */ - "Permission Fault: Page", /* f = 0b01111, */ - "INVALID ENTRY", /* 10 = 0b10000, */ - "INVALID ENTRY", /* 11 = 0b10001, */ - "INVALID ENTRY", /* 12 = 0b10010, */ - "INVALID ENTRY", /* 13 = 0b10011, */ - "IMPLEMENTATION DEFINED Lockdown", /* 14 = 0b10100, */ - "INVALID ENTRY", /* 15 = 0b10101, */ - "INVALID ENTRY", /* 16 = 0b10110, */ - "INVALID ENTRY", /* 17 = 0b10111, */ - "INVALID ENTRY", /* 18 = 0b11000, */ - "Memory Access Synchronous Parity Error", /* 19 = 0b11001, */ - "IMPLEMENTATION DEFINED Coprocessor Abort", /* 1a = 0b11010, */ - "INVALID ENTRY", /* 1b = 0b11011, */ - "Translation Table Walk 1st Level parity", /* 1c = 0b11100, */ - "INVALID ENTRY", /* 1d = 0b11101, */ - "Translation Table Walk 2nd Level parity", /* 1e = 0b11110, */ - "INVALID ENTRY", /* 1f = 0b11111, */ + "INVALID ENTRY", /* 0 = 0b00000, */ + "INVALID ENTRY", /* 1 = 0b00001, */ + "Debug Event", /* 2 = 0b00010, */ + "Access Flag Fault: Section", /* 3 = 0b00011, */ + "INVALID ENTRY", /* 4 = 0b00100, */ + "Translation Fault: Section", /* 5 = 0b00101, */ + "Access Flag Fault: Page", /* 6 = 0b00110, */ + "Translation Fault: Page", /* 7 = 0b00111, */ + "Synchronous External Abort", /* 8 = 0b01000, */ + "Domain Fault: Section", /* 9 = 0b01001, */ + "INVALID ENTRY", /* a = 0b01010, */ + "Domain Fault: Page", /* b = 0b01011, */ + "Translation Table Talk 1st Level sync abt",/* c = 0b01100, */ + "Permission Fault: Section", /* d = 0b01101, */ + "Translation Table Walk 2nd Level sync abt",/* e = 0b01110, */ + "Permission Fault: Page", /* f = 0b01111, */ + "INVALID ENTRY", /* 10 = 0b10000, */ + "INVALID ENTRY", /* 11 = 0b10001, */ + "INVALID ENTRY", /* 12 = 0b10010, */ + "INVALID ENTRY", /* 13 = 0b10011, */ + "IMPLEMENTATION DEFINED Lockdown", /* 14 = 0b10100, */ + "INVALID ENTRY", /* 15 = 0b10101, */ + "INVALID ENTRY", /* 16 = 0b10110, */ + "INVALID ENTRY", /* 17 = 0b10111, */ + "INVALID ENTRY", /* 18 = 0b11000, */ + "Memory Access Synchronous Parity Error", /* 19 = 0b11001, */ + "IMPLEMENTATION DEFINED Coprocessor Abort", /* 1a = 0b11010, */ + "INVALID ENTRY", /* 1b = 0b11011, */ + "Translation Table Walk 1st Level parity", /* 1c = 0b11100, */ + "INVALID ENTRY", /* 1d = 0b11101, */ + "Translation Table Walk 2nd Level parity", /* 1e = 0b11110, */ + "INVALID ENTRY", /* 1f = 0b11111, */ }; @@ -132,15 +136,15 @@ */ void print_data_abort() { - u32 dfsr = read_dfsr(); - u32 dfar = read_dfar(); - u32 fault_status = (dfsr & 0xF) | ((dfsr & 0x400) >> 6); - - sw_printf("Data Abort Address: %08x\n", dfar); - sw_printf("Fault type: "); - sw_printf((char*)data_abt_fault_string[fault_status]); - sw_printf(" (%x), domain %x, Write not Read: %x, External: %x\n", - fault_status, ((dfsr & FSR_DOMAIN_MASK) >> 4), ((dfsr & FSR_WNR_MASK) >> 11), ((dfsr & FSR_EXT_MASK) >> 12 )); + u32 dfsr = read_dfsr(); + u32 dfar = read_dfar(); + u32 fault_status = (dfsr & 0xF) | ((dfsr & 0x400) >> 6); + + sw_printf("Data Abort Address: %08x\n", dfar); + sw_printf("Fault type: "); + sw_printf((char*)data_abt_fault_string[fault_status]); + sw_printf(" (%x), domain %x, Write not Read: %x, External: %x\n", + fault_status, ((dfsr & FSR_DOMAIN_MASK) >> 4), ((dfsr & FSR_WNR_MASK) >> 11), ((dfsr & FSR_EXT_MASK) >> 12 )); } /** @@ -148,14 +152,14 @@ */ void print_prefetch_abort() { - u32 ifsr = read_ifsr(); - u32 ifar = read_ifar(); - u32 fault_status = (ifsr & 0xF) | ((ifsr & 0x400) >> 6); - - sw_printf("Prefetch Abort Address: %08x\n", ifar); - sw_printf("Fault type: "); - sw_printf((char*)prefetch_abt_fault_string[fault_status]); - sw_printf(" (%x), External: %x\n", fault_status, ((ifsr & FSR_EXT_MASK) >> 12)); + u32 ifsr = read_ifsr(); + u32 ifar = read_ifar(); + u32 fault_status = (ifsr & 0xF) | ((ifsr & 0x400) >> 6); + + sw_printf("Prefetch Abort Address: %08x\n", ifar); + sw_printf("Fault type: "); + sw_printf((char*)prefetch_abt_fault_string[fault_status]); + sw_printf(" (%x), External: %x\n", fault_status, ((ifsr & FSR_EXT_MASK) >> 12)); } /** @@ -163,46 +167,46 @@ */ void fiq_c_handler( struct swi_temp_regs *regs) { - unsigned int interrupt; - interrupt = gic_active_irq(0); + unsigned int interrupt; + interrupt = gic_active_irq(0); - if(interrupt != 1023 && interrupt != 1022) { - gic_ack_irq(0, interrupt); - /* sp804_sleep_timer_irq_handler(SECURE_TIMER_BASE); */ + if(interrupt != 1023 && interrupt != 1022) { + gic_ack_irq(0, interrupt); + /* sp804_sleep_timer_irq_handler(SECURE_TIMER_BASE); */ #if 0 - invoke_irq_handler(interrupt, regs); + invoke_irq_handler(interrupt, regs); #endif #if 1 - if(interrupt == SECURE_TIMER_IRQ) { + if(interrupt == SECURE_TIMER_IRQ) { - if(sp804_read_mis(SECURE_TIMER_BASE, TICK_TIMER)){ - sp804_clearirq(SECURE_TIMER_BASE, TICK_TIMER); - timer_interrupt(); - - } - else if(sp804_read_mis(SECURE_TIMER_BASE, FREE_RUNNING_CNTR)) - { - sp804_clearirq(SECURE_TIMER_BASE, FREE_RUNNING_CNTR); - sw_printf("Update jiffies \n"); - __free_running_cntr_intr(); - - } - - // temp_swi_regs = regs; -/* sp804_disable(SECURE_TIMER_BASE); */ - // scheduler(); - } + if(sp804_read_mis(SECURE_TIMER_BASE, TICK_TIMER)){ + sp804_clearirq(SECURE_TIMER_BASE, TICK_TIMER); + timer_interrupt(); + + } + else if(sp804_read_mis(SECURE_TIMER_BASE, FREE_RUNNING_CNTR)) + { + sp804_clearirq(SECURE_TIMER_BASE, FREE_RUNNING_CNTR); + sw_printf("Update jiffies \n"); + __free_running_cntr_intr(); + + } + + // temp_swi_regs = regs; + /* sp804_disable(SECURE_TIMER_BASE); */ + // scheduler(); + } #endif - } + } - asm volatile("MOV R0, #0\n\t"); - asm volatile("DSB"); -/* - if(interrupt != IRQ_TIMER2) { - do_context_switch(); - } -*/ + asm volatile("MOV R0, #0\n\t"); + asm volatile("DSB"); + /* + if(interrupt != IRQ_TIMER2) { + do_context_switch(); + } + */ } /** @@ -212,44 +216,44 @@ */ void data_abort_handler(u32 pc) { - sw_printf("data_abort_handler: dabt at @ pc %08x\n", pc); + sw_printf("data_abort_handler: dabt at @ pc %08x\n", pc); - print_data_abort(); - u32 fault_status = (read_dfsr() & 0xF) | ((read_dfsr() & 0x400) >> 6); - switch(fault_status) { - case dfs_translation_section: - case dfs_translation_page: - { - DIE_NOW(0, "Translation fault \n"); - break; - } - case dfs_alignment_fault: - case dfs_debug_event: - case dfs_access_flag_section: - case dfs_icache_maintenance: - case dfs_access_flag_page: - case dfs_sync_external_abt: - case dfs_domain_section: - case dfs_domain_page: - case dfs_translation_table_walk_lvl1_sync_ext_abt: - case dfs_permission_section: - case dfs_translation_table_walk_lvl2_sync_ext_abt: - case dfs_permission_page: - case dfs_imp_dep_lockdown: - case dfs_async_external_abt: - case dfs_mem_access_async_parity_err: - case dfs_mem_access_async_parity_err2: - case dfs_imp_dep_coprocessor_abort: - case dfs_translation_table_walk_lvl1_sync_parity_err: - case dfs_translation_table_walk_lvl2_sync_parity_err: - default: - sw_printf("data_abort_handler: unimplemented data abort type.\n"); - print_data_abort(); - DIE_NOW(0, "Entering infinite loop\n"); - break; - } + print_data_abort(); + u32 fault_status = (read_dfsr() & 0xF) | ((read_dfsr() & 0x400) >> 6); + switch(fault_status) { + case dfs_translation_section: + case dfs_translation_page: + { + DIE_NOW(0, "Translation fault \n"); + break; + } + case dfs_alignment_fault: + case dfs_debug_event: + case dfs_access_flag_section: + case dfs_icache_maintenance: + case dfs_access_flag_page: + case dfs_sync_external_abt: + case dfs_domain_section: + case dfs_domain_page: + case dfs_translation_table_walk_lvl1_sync_ext_abt: + case dfs_permission_section: + case dfs_translation_table_walk_lvl2_sync_ext_abt: + case dfs_permission_page: + case dfs_imp_dep_lockdown: + case dfs_async_external_abt: + case dfs_mem_access_async_parity_err: + case dfs_mem_access_async_parity_err2: + case dfs_imp_dep_coprocessor_abort: + case dfs_translation_table_walk_lvl1_sync_parity_err: + case dfs_translation_table_walk_lvl2_sync_parity_err: + default: + sw_printf("data_abort_handler: unimplemented data abort type.\n"); + print_data_abort(); + DIE_NOW(0, "Entering infinite loop\n"); + break; + } - DIE_NOW(0, "At end of data abort handler. Stopping\n"); + DIE_NOW(0, "At end of data abort handler. Stopping\n"); } @@ -258,31 +262,31 @@ */ void prefetch_abort_handler(void) { - u32 ifsr = read_ifsr(); - u32 fault_status = (ifsr & 0xF) | ((ifsr & 0x400) >> 6); + u32 ifsr = read_ifsr(); + u32 fault_status = (ifsr & 0xF) | ((ifsr & 0x400) >> 6); - switch(fault_status) { - case ifs_translation_fault_page: - case ifs_debug_event: - case ifs_access_flag_fault_section: - case ifs_translation_fault_section: - case ifs_access_flag_fault_page: - case ifs_synchronous_external_abort: - case ifs_domain_fault_section: - case ifs_domain_fault_page: - case ifs_translation_table_walk_lvl1_sync_ext_abt: - case ifs_permission_fault_section: - case ifs_translation_table_walk_lvl2_sync_ext_abt: - case ifs_permission_fault_page: - case ifs_imp_dep_lockdown: - case ifs_memory_access_sync_parity_err: - case ifs_imp_dep_coprocessor_abort: - case ifs_translation_table_walk_lvl1_sync_parity_err: - case ifs_translation_table_walk_lvl2_sync_parity_err: - default: - print_prefetch_abort(); - DIE_NOW(0, "Unimplemented prefetch abort."); - } + switch(fault_status) { + case ifs_translation_fault_page: + case ifs_debug_event: + case ifs_access_flag_fault_section: + case ifs_translation_fault_section: + case ifs_access_flag_fault_page: + case ifs_synchronous_external_abort: + case ifs_domain_fault_section: + case ifs_domain_fault_page: + case ifs_translation_table_walk_lvl1_sync_ext_abt: + case ifs_permission_fault_section: + case ifs_translation_table_walk_lvl2_sync_ext_abt: + case ifs_permission_fault_page: + case ifs_imp_dep_lockdown: + case ifs_memory_access_sync_parity_err: + case ifs_imp_dep_coprocessor_abort: + case ifs_translation_table_walk_lvl1_sync_parity_err: + case ifs_translation_table_walk_lvl2_sync_parity_err: + default: + print_prefetch_abort(); + DIE_NOW(0, "Unimplemented prefetch abort."); + } } /** @@ -290,7 +294,7 @@ */ void undefined_handler(void) { - DIE_NOW(0, "undefined handler, Implement me!\n"); + DIE_NOW(0, "undefined handler, Implement me!\n"); } /** @@ -304,60 +308,80 @@ */ void swi_handler(int swi_id, struct swi_temp_regs *regs) { -/* int i = 0; */ + /* int i = 0; */ #ifdef CONFIG_KSPACE_PROTECTION - int ret=0; - struct list *l1; - struct sw_file_operations *dev_info; + int ret=0; + struct list *l1; + struct sw_file_operations *dev_info; #endif - switch(swi_id) { - case 0xbbbb: - case 0xcccc: - /* - for(i = 0; i < 14; i++) - tz_printf("swi temp regs[%x] = 0x%x\n", i, regs[i]); - */ - temp_swi_regs = regs; - scheduler(); - break; + switch(swi_id) { + case 0xbbbb: + case 0xcccc: + /* + for(i = 0; i < 14; i++) + tz_printf("swi temp regs[%x] = 0x%x\n", i, regs[i]); + */ + temp_swi_regs = regs; + scheduler(); + break; #ifdef CONFIG_KSPACE_PROTECTION - case SW_SYSCALL_EXE_SMC: - __execute_smc(regs->regs[0]); - break; - case SW_SYSCALL_UNMAP_NS: - ret = __unmap_from_ns(regs->regs[0]); - regs->regs[0] = ret; - break; - case SW_SYSCALL_MAP_NS: - ret = __map_to_ns(regs->regs[0],(va_t*)regs->regs[1]); - regs->regs[0] = ret; - break; - case SW_SYSCALL_OPEN: - list_for_each(l1, &sw_dev_head.dev_list){ - dev_info = list_entry(l1,struct sw_file_operations, head); - if(sw_strcmp(dev_info->sw_dev_name,(char*)regs->regs[0]) == 0){ - if(dev_info->open != NULL) - dev_info->open(); - break; - } - } - break; - case SW_SYSCALL_CLOSE: - list_for_each(l1, &sw_dev_head.dev_list){ - dev_info = list_entry(l1,struct sw_file_operations, head); - if(sw_strcmp(dev_info->sw_dev_name,(char*)regs->regs[0]) == 0){ - if(dev_info->close != NULL) - dev_info->close(); - break; - } - } - break; + case SW_SYSCALL_EXE_SMC: + __execute_smc(regs->regs[0]); + break; + case SW_SYSCALL_UNMAP_NS: + ret = __unmap_from_ns(regs->regs[0]); + regs->regs[0] = ret; + break; + case SW_SYSCALL_MAP_NS: + ret = __map_to_ns(regs->regs[0],(va_t*)regs->regs[1]); + regs->regs[0] = ret; + break; + case SW_SYSCALL_OPEN: + list_for_each(l1, &sw_dev_head.dev_list){ + dev_info = list_entry(l1,struct sw_file_operations, head); + if(sw_strcmp(dev_info->sw_dev_name,(char*)regs->regs[0]) == 0){ + if(dev_info->open != NULL) + dev_info->open(); + break; + } + } + break; + case SW_SYSCALL_CLOSE: + list_for_each(l1, &sw_dev_head.dev_list){ + dev_info = list_entry(l1,struct sw_file_operations, head); + if(sw_strcmp(dev_info->sw_dev_name,(char*)regs->regs[0]) == 0){ + if(dev_info->close != NULL) + dev_info->close(); + break; + } + } + break; + case SW_SYSCALL_READ: + list_for_each(l1, &sw_dev_head.dev_list){ + dev_info = list_entry(l1,struct sw_file_operations, head); + if(sw_strcmp(dev_info->sw_dev_name,(char*)regs->regs[0]) == 0){ + if(dev_info->read != NULL) + dev_info->read(); + break; + } + } + break; + case SW_SYSCALL_WRITE: + list_for_each(l1, &sw_dev_head.dev_list){ + dev_info = list_entry(l1,struct sw_file_operations, head); + if(sw_strcmp(dev_info->sw_dev_name,(char*)regs->regs[0]) == 0){ + if(dev_info->write != NULL) + dev_info->write((char*)regs->regs[1]); + break; + } + } + break; #endif - default: - break; - } + default: + break; + } } Index: otzone/src/arch/arm/armv7/sw_syscalls.S =================================================================== --- otzone/src/arch/arm/armv7/sw_syscalls.S.orig 2012-08-06 01:12:45.992037170 +0530 +++ otzone/src/arch/arm/armv7/sw_syscalls.S 2012-08-06 01:15:05.184037357 +0530 @@ -19,6 +19,9 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application */ #ifdef CONFIG_KSPACE_PROTECTION @@ -39,6 +42,20 @@ bx lr .endfunc +.global __sw_read +.func __sw_close +__sw_read: + swi SW_SYSCALL_READ + bx lr +.endfunc + +.global __sw_write +.func __sw_close +__sw_write: + swi SW_SYSCALL_WRITE + bx lr +.endfunc + .global __asm_map_to_ns .func __asm_map_to_ns __asm_map_to_ns: Index: otzone/src/core/include/sw_modinit.h =================================================================== --- otzone/src/core/include/sw_modinit.h.orig 2012-08-06 01:16:52.336037500 +0530 +++ otzone/src/core/include/sw_modinit.h 2012-08-06 10:09:24.951626330 +0530 @@ -19,6 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * */ #ifndef __SW_SYSCALLS_H_ @@ -52,20 +56,22 @@ typedef void (*mod_exit_fn_call) (void); #define SW_MODULE_INIT(fn) \ - static __mod_init mod_init_fn_call init_fn = fn + static __mod_init mod_init_fn_call init_fn = fn #define SW_MODULE_EXIT(fn) \ - static __mod_exit mod_exit_fn_call exit_fn = fn + static __mod_exit mod_exit_fn_call exit_fn = fn /** * @brief */ struct sw_file_operations{ - struct list head; - void (*open) (void); - void (*close) (void); - char sw_dev_name[20]; + struct list head; + void (*open) (void); + void (*close) (void); + void (*read) (); + void (*write) (char *ptr); + char sw_dev_name[20]; }; /** @@ -74,19 +80,33 @@ * during Initialisation */ struct sw_devices_head{ - struct list dev_list; + struct list dev_list; }sw_dev_head; /** * @brief * open system call for devices */ -void sw_open(void); +void sw_open(char *ptr); + /** * @brief * close system call for devices */ -void sw_close(void); +void sw_close(char *ptr); + +/** + * @brief + * read system call for devices + */ +void sw_read(char *ptr); + +/** + * @brief + * write system call for devices + */ +void sw_write(char *ptr,char *ptr1); + /** * @brief * This function is called by each module for registration Index: otzone/src/core/secure_api.c =================================================================== --- otzone/src/core/secure_api.c.orig 2012-08-06 01:20:15.324037770 +0530 +++ otzone/src/core/secure_api.c 2012-08-06 10:10:06.310936381 +0530 @@ -19,6 +19,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * * Helper API's for Secure kernel */ @@ -35,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -54,133 +59,133 @@ */ int open_session_from_ns(void *param) { - int ret_val; - int *svc_id = NULL; - sa_config_t sa_config; - pa_t cmd_phy; - struct otz_smc_cmd *cmd = NULL; - void *session_context = NULL; - - cmd_phy = (pa_t) param; - - - if(map_to_ns(cmd_phy, (va_t*) &cmd)) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } - - - if(cmd->resp_buf_len == 0) { - ret_val = OTZ_EFAIL; - goto ret_func; - } - - if(map_to_ns(cmd->resp_buf_phys, (va_t*)&session_context) != 0) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } - - if(map_to_ns(cmd->req_buf_phys, (va_t*)&svc_id) != 0) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } - - if(*svc_id == OTZ_SVC_INVALID) { - ret_val = OTZ_EFAIL; - goto ret_func; - } - - ret_val = sa_create_entry_point(*svc_id, &sa_config); - if(ret_val == OTZ_OK) { - ret_val = sa_open_session(&sa_config, session_context); - } - - if(ret_val != OTZ_OK) { - sa_destroy_entry_point(*svc_id, sa_config.data); - cmd->cmd_status = OTZ_STATUS_INCOMPLETE; - } - else { - sw_printf("session context %x\n", *((int*)session_context)); - cmd->ret_resp_buf_len = sizeof(int); - cmd->cmd_status = OTZ_STATUS_COMPLETE; - } + int ret_val; + int *svc_id = NULL; + sa_config_t sa_config; + pa_t cmd_phy; + struct otz_smc_cmd *cmd = NULL; + void *session_context = NULL; + + cmd_phy = (pa_t) param; + + + if(map_to_ns(cmd_phy, (va_t*) &cmd)) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } + + + if(cmd->resp_buf_len == 0) { + ret_val = OTZ_EFAIL; + goto ret_func; + } + + if(map_to_ns(cmd->resp_buf_phys, (va_t*)&session_context) != 0) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } + + if(map_to_ns(cmd->req_buf_phys, (va_t*)&svc_id) != 0) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } + + if(*svc_id == OTZ_SVC_INVALID) { + ret_val = OTZ_EFAIL; + goto ret_func; + } + + ret_val = sa_create_entry_point(*svc_id, &sa_config); + if(ret_val == OTZ_OK) { + ret_val = sa_open_session(&sa_config, session_context); + } + + if(ret_val != OTZ_OK) { + sa_destroy_entry_point(*svc_id, sa_config.data); + cmd->cmd_status = OTZ_STATUS_INCOMPLETE; + } + else { + sw_printf("session context %x\n", *((int*)session_context)); + cmd->ret_resp_buf_len = sizeof(int); + cmd->cmd_status = OTZ_STATUS_COMPLETE; + } ret_func: - if(svc_id) - unmap_from_ns((va_t)svc_id); + if(svc_id) + unmap_from_ns((va_t)svc_id); - if(session_context) - unmap_from_ns((va_t)session_context); + if(session_context) + unmap_from_ns((va_t)session_context); - if(cmd) - unmap_from_ns((va_t)cmd); + if(cmd) + unmap_from_ns((va_t)cmd); - return ret_val; + return ret_val; } /** -* @brief Dispatcher command function to handle the Close session request from -* non-secure world -* -* This function invokes the close session API and its get called from dispatcher -* task. -* @param param: pointer to struct otz_smc_cmd -* -* @return otz_return_t: -* OTZ_OK - Session established successfully\n -* OTZ_* - An implementation-defined error code for any other error.\n -*/ + * @brief Dispatcher command function to handle the Close session request from + * non-secure world + * + * This function invokes the close session API and its get called from dispatcher + * task. + * @param param: pointer to struct otz_smc_cmd + * + * @return otz_return_t: + * OTZ_OK - Session established successfully\n + * OTZ_* - An implementation-defined error code for any other error.\n + */ int close_session_from_ns(void *param) { - int ret_val; - int *svc_id = NULL; - pa_t cmd_phy; - struct otz_smc_cmd *cmd = NULL; - void *session_context = NULL; - sw_tls *tls; - - cmd_phy = (pa_t) param; - - if(map_to_ns(cmd_phy, (va_t*) &cmd)) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } - - if(cmd->req_buf_len == 0) { - ret_val = OTZ_EFAIL; - goto ret_func; - } - - if(map_to_ns(cmd->req_buf_phys, (va_t*)&svc_id) != 0) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } - - if(map_to_ns(cmd->resp_buf_phys, (va_t*)&session_context) != 0) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } - - - tls = get_task_tls(*((u32*)session_context)); - - sa_destroy_entry_point(*svc_id, tls->private_data); - sa_close_session(session_context); + int ret_val; + int *svc_id = NULL; + pa_t cmd_phy; + struct otz_smc_cmd *cmd = NULL; + void *session_context = NULL; + sw_tls *tls; + + cmd_phy = (pa_t) param; + if(map_to_ns(cmd_phy, (va_t*) &cmd)) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } - cmd->cmd_status = OTZ_STATUS_COMPLETE; + if(cmd->req_buf_len == 0) { + ret_val = OTZ_EFAIL; + goto ret_func; + } + + if(map_to_ns(cmd->req_buf_phys, (va_t*)&svc_id) != 0) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } + + if(map_to_ns(cmd->resp_buf_phys, (va_t*)&session_context) != 0) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } + + + tls = get_task_tls(*((u32*)session_context)); + + sa_destroy_entry_point(*svc_id, tls->private_data); + sa_close_session(session_context); + + + cmd->cmd_status = OTZ_STATUS_COMPLETE; ret_func: - if(svc_id) - unmap_from_ns((va_t)svc_id); + if(svc_id) + unmap_from_ns((va_t)svc_id); - if(session_context) - unmap_from_ns((va_t)session_context); + if(session_context) + unmap_from_ns((va_t)session_context); - if(cmd) - unmap_from_ns((va_t)cmd); + if(cmd) + unmap_from_ns((va_t)cmd); - return ret_val; + return ret_val; } /** @@ -199,51 +204,51 @@ */ int open_session_from_secure(int svc_id, int *session_id) { - int ret_val; - sa_config_t sa_config; + int ret_val; + sa_config_t sa_config; - if(svc_id == OTZ_SVC_INVALID) { - ret_val = OTZ_EFAIL; - goto ret_func; - } - - ret_val = sa_create_entry_point(svc_id, &sa_config); - if(ret_val == OTZ_OK) { - ret_val = sa_open_session(&sa_config, session_id); - } - - if(ret_val == OTZ_OK) { - sw_printf("session context %x\n", *((int*)session_id)); - } - else { - sa_destroy_entry_point(svc_id, sa_config.data); - } + if(svc_id == OTZ_SVC_INVALID) { + ret_val = OTZ_EFAIL; + goto ret_func; + } + + ret_val = sa_create_entry_point(svc_id, &sa_config); + if(ret_val == OTZ_OK) { + ret_val = sa_open_session(&sa_config, session_id); + } + + if(ret_val == OTZ_OK) { + sw_printf("session context %x\n", *((int*)session_id)); + } + else { + sa_destroy_entry_point(svc_id, sa_config.data); + } ret_func: - return ret_val; + return ret_val; } /** -* @brief Close session request which is got initiated from secure task -* -* This function invokes the close session API and its get called from -* secure application task. This is to close the request from secure application, -* either for IPI or secure to non-secure world communication. -* -* @param svc_id: Service ID -* @param session_id: Session ID -* -* @return otz_return_t: -* OTZ_OK - Session established successfully\n -* OTZ_* - An implementation-defined error code for any other error.\n -*/ + * @brief Close session request which is got initiated from secure task + * + * This function invokes the close session API and its get called from + * secure application task. This is to close the request from secure application, + * either for IPI or secure to non-secure world communication. + * + * @param svc_id: Service ID + * @param session_id: Session ID + * + * @return otz_return_t: + * OTZ_OK - Session established successfully\n + * OTZ_* - An implementation-defined error code for any other error.\n + */ int close_session_from_secure(int svc_id, int session_id) { - sw_tls *tls; - tls = get_task_tls(session_id); - - sa_destroy_entry_point(svc_id, tls->private_data); - sa_close_session((void*)&session_id); - return OTZ_OK; + sw_tls *tls; + tls = get_task_tls(session_id); + + sa_destroy_entry_point(svc_id, tls->private_data); + sa_close_session((void*)&session_id); + return OTZ_OK; } /** @@ -260,19 +265,23 @@ */ int sa_create_entry_point(int svc_id, sa_config_t *psa_config) { - if(svc_id == OTZ_SVC_ECHO) { - return echo_task_init(psa_config); - } - if(svc_id == OTZ_SVC_CRYPT) { - return crypto_task_init(psa_config); - } - if(svc_id == OTZ_SVC_MUTEX_TEST) { - return mutex_test_task_init(psa_config); - } - if(svc_id == OTZ_SVC_GLOBAL) { - return dispatch_task_init(psa_config); - } - return OTZ_EFAIL; + if(svc_id == OTZ_SVC_ECHO) { + return echo_task_init(psa_config); + } + if(svc_id == OTZ_SVC_CRYPT) { + return crypto_task_init(psa_config); + } + if(svc_id == OTZ_SVC_MUTEX_TEST) { + return mutex_test_task_init(psa_config); + } + if(svc_id == OTZ_SVC_GLOBAL) { + return dispatch_task_init(psa_config); + } + if(svc_id == OTZ_SVC_MD5) { + return md5_task_init(psa_config); + } + + return OTZ_EFAIL; } /** @@ -291,19 +300,23 @@ int sa_destroy_entry_point(int svc_id, void *data) { - if(svc_id == OTZ_SVC_ECHO) { - return echo_task_exit(data); - } - if(svc_id == OTZ_SVC_CRYPT) { - return crypto_task_exit(data); - } - if(svc_id == OTZ_SVC_MUTEX_TEST) { - return mutex_test_task_exit(data); - } - if(svc_id == OTZ_SVC_GLOBAL) { - return dispatch_task_exit(data); - } - return OTZ_EFAIL; + if(svc_id == OTZ_SVC_ECHO) { + return echo_task_exit(data); + } + if(svc_id == OTZ_SVC_CRYPT) { + return crypto_task_exit(data); + } + if(svc_id == OTZ_SVC_MUTEX_TEST) { + return mutex_test_task_exit(data); + } + if(svc_id == OTZ_SVC_GLOBAL) { + return dispatch_task_exit(data); + } + if(svc_id == OTZ_SVC_MD5) { + return md5_task_exit(data); + } + + return OTZ_EFAIL; } @@ -323,11 +336,11 @@ */ int sa_open_session(sa_config_t *psa_config, void *session_context) { - int ret_val; - /* session context = task id */ - ret_val = create_task(psa_config, (int*)session_context); + int ret_val; + /* session context = task id */ + ret_val = create_task(psa_config, (int*)session_context); - return ret_val; + return ret_val; } /** @@ -345,9 +358,9 @@ */ int sa_close_session(void *session_context) { - int ret_val; - ret_val = destroy_task(*((int*)session_context)); - return ret_val; + int ret_val; + ret_val = destroy_task(*((int*)session_context)); + return ret_val; } @@ -362,34 +375,34 @@ */ void get_api_context(int *svc_id, int *task_id, int *cmd_id, int *cmd_type) { - pa_t cmd_phy; - struct otz_smc_cmd *cmd = NULL; + pa_t cmd_phy; + struct otz_smc_cmd *cmd = NULL; - *svc_id = OTZ_SVC_INVALID; - *task_id = 0; - *cmd_id = OTZ_GLOBAL_CMD_ID_INVALID; - *cmd_type = params_stack[2]; - - if(*cmd_type == OTZ_CMD_TYPE_NS_TO_SECURE) { - cmd_phy = (pa_t) params_stack[1]; - if(!cmd) { - if(map_to_ns(cmd_phy, (va_t*) &cmd)) - return; - } - } - else { - cmd = (struct otz_smc_cmd *)params_stack[1]; - } - - *svc_id = (cmd->id >> 10 & 0x3ff); - *cmd_id = (cmd->id & 0x3ff); - *task_id = cmd->context; - - if(*cmd_type == OTZ_CMD_TYPE_NS_TO_SECURE) { - unmap_from_ns((va_t)cmd); - } + *svc_id = OTZ_SVC_INVALID; + *task_id = 0; + *cmd_id = OTZ_GLOBAL_CMD_ID_INVALID; + *cmd_type = params_stack[2]; + + if(*cmd_type == OTZ_CMD_TYPE_NS_TO_SECURE) { + cmd_phy = (pa_t) params_stack[1]; + if(!cmd) { + if(map_to_ns(cmd_phy, (va_t*) &cmd)) + return; + } + } + else { + cmd = (struct otz_smc_cmd *)params_stack[1]; + } + + *svc_id = (cmd->id >> 10 & 0x3ff); + *cmd_id = (cmd->id & 0x3ff); + *task_id = cmd->context; + + if(*cmd_type == OTZ_CMD_TYPE_NS_TO_SECURE) { + unmap_from_ns((va_t)cmd); + } - return; + return; } /** @@ -415,55 +428,55 @@ * OTZ_* - An implementation-defined error code for any other error.\n */ int decode_data(void *data, - struct otzc_encode_meta *meta_data, - int *type, int *offset, int *pos, - int *mapped, void **out_data, int *out_len) -{ - int ret = 0; - int temp_offset = *offset, temp_pos = *pos; - *mapped = 0; - - switch(meta_data[temp_pos].type) { - case OTZ_ENC_UINT32: { - *offset = temp_offset + sizeof(u32); - *pos = temp_pos + 1; - *type = OTZ_ENC_UINT32; - *out_data = data + temp_offset; - *out_len = meta_data[temp_pos].len; - break; - } - case OTZ_ENC_ARRAY: { - *offset = temp_offset + meta_data[temp_pos].len; - *pos = temp_pos + 1; - *type = OTZ_ENC_ARRAY; - *out_data = data + temp_offset; - *out_len = meta_data[temp_pos].len; - break; - } - case OTZ_MEM_REF: { - if(map_to_ns((pa_t)(*((u32*)data + temp_offset)), (va_t*)out_data) != 0) - return -1; - *offset = temp_offset + sizeof(u32); - *type = OTZ_MEM_REF; - *pos = temp_pos + 1; - *mapped = 1; - *out_len = meta_data[temp_pos].len; - break; - } - case OTZ_SECURE_MEM_REF: { - *out_data = (void*)(*((u32*)data + temp_offset)); - *offset = temp_offset + sizeof(u32); - *type = OTZ_MEM_REF; - *pos = temp_pos + 1; - *mapped = 0; - *out_len = meta_data[temp_pos].len; - break; - } - default: - ret = -1; - break; - } - return ret; + struct otzc_encode_meta *meta_data, + int *type, int *offset, int *pos, + int *mapped, void **out_data, int *out_len) +{ + int ret = 0; + int temp_offset = *offset, temp_pos = *pos; + *mapped = 0; + + switch(meta_data[temp_pos].type) { + case OTZ_ENC_UINT32: { + *offset = temp_offset + sizeof(u32); + *pos = temp_pos + 1; + *type = OTZ_ENC_UINT32; + *out_data = data + temp_offset; + *out_len = meta_data[temp_pos].len; + break; + } + case OTZ_ENC_ARRAY: { + *offset = temp_offset + meta_data[temp_pos].len; + *pos = temp_pos + 1; + *type = OTZ_ENC_ARRAY; + *out_data = data + temp_offset; + *out_len = meta_data[temp_pos].len; + break; + } + case OTZ_MEM_REF: { + if(map_to_ns((pa_t)(*((u32*)data + temp_offset)), (va_t*)out_data) != 0) + return -1; + *offset = temp_offset + sizeof(u32); + *type = OTZ_MEM_REF; + *pos = temp_pos + 1; + *mapped = 1; + *out_len = meta_data[temp_pos].len; + break; + } + case OTZ_SECURE_MEM_REF: { + *out_data = (void*)(*((u32*)data + temp_offset)); + *offset = temp_offset + sizeof(u32); + *type = OTZ_MEM_REF; + *pos = temp_pos + 1; + *mapped = 0; + *out_len = meta_data[temp_pos].len; + break; + } + default: + ret = -1; + break; + } + return ret; } @@ -488,35 +501,35 @@ * OTZ_* - An implementation-defined error code for any other error.\n */ int decode_ipi_out_data(void *data, - struct otzc_encode_meta *meta_data, - int *type, int *offset, int *pos, - void **out_data, int *out_len) -{ - int ret = 0; - int temp_offset = *offset, temp_pos = *pos; - - switch(meta_data[temp_pos].type) { - case OTZ_ENC_UINT32: { - *offset = temp_offset + sizeof(u32); - *pos = temp_pos + 1; - *type = OTZ_ENC_UINT32; - *out_data = data + temp_offset; - *out_len = meta_data[temp_pos].len; - break; - } - case OTZ_SECURE_MEM_REF: { - *out_data = (void*)(*((u32*)data + temp_offset)); - *offset = temp_offset + sizeof(u32); - *type = OTZ_MEM_REF; - *pos = temp_pos + 1; - *out_len = meta_data[temp_pos].ret_len; - break; - } - default: - ret = -1; - break; - } - return ret; + struct otzc_encode_meta *meta_data, + int *type, int *offset, int *pos, + void **out_data, int *out_len) +{ + int ret = 0; + int temp_offset = *offset, temp_pos = *pos; + + switch(meta_data[temp_pos].type) { + case OTZ_ENC_UINT32: { + *offset = temp_offset + sizeof(u32); + *pos = temp_pos + 1; + *type = OTZ_ENC_UINT32; + *out_data = data + temp_offset; + *out_len = meta_data[temp_pos].len; + break; + } + case OTZ_SECURE_MEM_REF: { + *out_data = (void*)(*((u32*)data + temp_offset)); + *offset = temp_offset + sizeof(u32); + *type = OTZ_MEM_REF; + *pos = temp_pos + 1; + *out_len = meta_data[temp_pos].ret_len; + break; + } + default: + ret = -1; + break; + } + return ret; } /** @@ -532,650 +545,650 @@ */ int update_response_len(struct otzc_encode_meta *meta_data, int pos, int len) { - if(pos <= OTZ_MAX_REQ_PARAMS + OTZ_MAX_RES_PARAMS) { - meta_data[pos -1].ret_len = len; - return 0; - } - else - return -1; + if(pos <= OTZ_MAX_REQ_PARAMS + OTZ_MAX_RES_PARAMS) { + meta_data[pos -1].ret_len = len; + return 0; + } + else + return -1; } /** -* @brief Helper function to encode the data which originate from secure -* application -* -* This function encodes the data into a encoder stream and this function gets -* called from secure application. This will be used for IPI or secure to -* non-secure communication. -* -* @param enc: Encode command structure -* @param pmeta_data: Meta data which get populated based on the encoding -* @param penc_context: Encoder context which contains the encoded stream for -* request and response buffer and its details. -* @param encode_type: Encoding data type - UINT32 or Shared memory -* -* @return otz_return_t: -* OTZ_OK - Encoded data successfully\n -* OTZ_* - An implementation-defined error code for any other error.\n -*/ + * @brief Helper function to encode the data which originate from secure + * application + * + * This function encodes the data into a encoder stream and this function gets + * called from secure application. This will be used for IPI or secure to + * non-secure communication. + * + * @param enc: Encode command structure + * @param pmeta_data: Meta data which get populated based on the encoding + * @param penc_context: Encoder context which contains the encoded stream for + * request and response buffer and its details. + * @param encode_type: Encoding data type - UINT32 or Shared memory + * + * @return otz_return_t: + * OTZ_OK - Encoded data successfully\n + * OTZ_* - An implementation-defined error code for any other error.\n + */ int otz_encode_data(struct otz_secure_encode_cmd *enc, - struct otzc_encode_meta **pmeta_data, - struct otz_secure_encode_ctx **penc_context, - int encode_type) -{ - int ret_val = OTZ_OK; - struct otzc_encode_meta *meta_data = NULL; - struct otz_secure_encode_ctx *enc_context = NULL; - - meta_data = *pmeta_data; - enc_context = *penc_context; - - if(enc == NULL) { - ret_val = OTZ_ILLEGAL_ARGUMENT; - goto ret_func; - } - - if(encode_type != OTZ_ENC_UINT32 && encode_type != OTZ_SECURE_MEM_REF) { - ret_val = OTZ_ILLEGAL_ARGUMENT; - goto ret_func; - } - - if(enc_context == NULL) { - enc_context = (struct otz_secure_encode_ctx *)sw_malloc( - sizeof(struct otz_secure_encode_ctx)); - - if(!enc_context) { - ret_val = OTZ_ENOMEM; - goto ret_free_mem; - } - sw_memset(enc_context, 0, sizeof(struct otz_secure_encode_ctx)); - } - - if(meta_data == NULL) { - meta_data = (struct otzc_encode_meta *)sw_malloc( - sizeof(struct otzc_encode_meta) * - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS)); - if(!meta_data) { - ret_val = OTZ_ENOMEM; - goto ret_free_mem; - } - sw_memset(meta_data, 0, sizeof(struct otzc_encode_meta) * - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS)); - } - - if(enc->param_type == OTZC_PARAM_IN) { - if(!enc_context->req_addr) { - enc_context->req_addr = (void *)sw_malloc(OTZ_1K_SIZE); - if(!enc_context->req_addr) { - sw_printf("otz_client_encode: request addr malloc failed\n"); - ret_val = OTZ_ENOMEM; - goto ret_free_mem; - } - enc_context->enc_req_offset = 0; - enc_context->enc_req_pos = 0; - } - if((enc_context->enc_req_offset + sizeof(u32) <= - OTZ_1K_SIZE) && - (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { - *((u32*)enc_context->req_addr + enc_context->enc_req_offset) = - (u32)enc->data; - enc_context->enc_req_offset += sizeof(u32); - - meta_data[enc_context->enc_req_pos].type = encode_type; - meta_data[enc_context->enc_req_pos].len = enc->len; - enc_context->enc_req_pos++; - } - else { - ret_val = OTZ_ENOMEM; - goto ret_free_mem; - } - } - else if(enc->param_type == OTZC_PARAM_OUT) { - if(!enc_context->res_addr) { - enc_context->res_addr = (void *)sw_malloc(OTZ_1K_SIZE); - if(!enc_context->res_addr) { - sw_printf("otz_client_encode: response addr malloc failed\n"); - ret_val = OTZ_ENOMEM; - goto ret_free_mem; - } - - enc_context->enc_res_pos = OTZ_MAX_REQ_PARAMS; - enc_context->enc_res_offset = 0; - } - - if((enc_context->enc_res_offset + sizeof(u32) - <= OTZ_1K_SIZE) && - (enc_context->enc_res_pos < - (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { - *((u32*)enc_context->res_addr + - enc_context->enc_res_offset) - = (u32)enc->data; - enc_context->enc_res_offset += sizeof(u32); - meta_data[enc_context->enc_res_pos].type - = encode_type; - meta_data[enc_context->enc_res_pos].len = enc->len; - enc_context->enc_res_pos++; - } - else { - ret_val = OTZ_ENOMEM; - goto ret_free_mem; - } - } - else { - ret_val = OTZ_ILLEGAL_ARGUMENT; - goto ret_func; - } - goto ret_func; + struct otzc_encode_meta **pmeta_data, + struct otz_secure_encode_ctx **penc_context, + int encode_type) +{ + int ret_val = OTZ_OK; + struct otzc_encode_meta *meta_data = NULL; + struct otz_secure_encode_ctx *enc_context = NULL; + + meta_data = *pmeta_data; + enc_context = *penc_context; + + if(enc == NULL) { + ret_val = OTZ_ILLEGAL_ARGUMENT; + goto ret_func; + } + + if(encode_type != OTZ_ENC_UINT32 && encode_type != OTZ_SECURE_MEM_REF) { + ret_val = OTZ_ILLEGAL_ARGUMENT; + goto ret_func; + } + + if(enc_context == NULL) { + enc_context = (struct otz_secure_encode_ctx *)sw_malloc( + sizeof(struct otz_secure_encode_ctx)); + + if(!enc_context) { + ret_val = OTZ_ENOMEM; + goto ret_free_mem; + } + sw_memset(enc_context, 0, sizeof(struct otz_secure_encode_ctx)); + } + + if(meta_data == NULL) { + meta_data = (struct otzc_encode_meta *)sw_malloc( + sizeof(struct otzc_encode_meta) * + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS)); + if(!meta_data) { + ret_val = OTZ_ENOMEM; + goto ret_free_mem; + } + sw_memset(meta_data, 0, sizeof(struct otzc_encode_meta) * + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS)); + } + + if(enc->param_type == OTZC_PARAM_IN) { + if(!enc_context->req_addr) { + enc_context->req_addr = (void *)sw_malloc(OTZ_1K_SIZE); + if(!enc_context->req_addr) { + sw_printf("otz_client_encode: request addr malloc failed\n"); + ret_val = OTZ_ENOMEM; + goto ret_free_mem; + } + enc_context->enc_req_offset = 0; + enc_context->enc_req_pos = 0; + } + if((enc_context->enc_req_offset + sizeof(u32) <= + OTZ_1K_SIZE) && + (enc_context->enc_req_pos < OTZ_MAX_REQ_PARAMS)) { + *((u32*)enc_context->req_addr + enc_context->enc_req_offset) = + (u32)enc->data; + enc_context->enc_req_offset += sizeof(u32); + + meta_data[enc_context->enc_req_pos].type = encode_type; + meta_data[enc_context->enc_req_pos].len = enc->len; + enc_context->enc_req_pos++; + } + else { + ret_val = OTZ_ENOMEM; + goto ret_free_mem; + } + } + else if(enc->param_type == OTZC_PARAM_OUT) { + if(!enc_context->res_addr) { + enc_context->res_addr = (void *)sw_malloc(OTZ_1K_SIZE); + if(!enc_context->res_addr) { + sw_printf("otz_client_encode: response addr malloc failed\n"); + ret_val = OTZ_ENOMEM; + goto ret_free_mem; + } + + enc_context->enc_res_pos = OTZ_MAX_REQ_PARAMS; + enc_context->enc_res_offset = 0; + } + + if((enc_context->enc_res_offset + sizeof(u32) + <= OTZ_1K_SIZE) && + (enc_context->enc_res_pos < + (OTZ_MAX_RES_PARAMS + OTZ_MAX_REQ_PARAMS ))) { + *((u32*)enc_context->res_addr + + enc_context->enc_res_offset) + = (u32)enc->data; + enc_context->enc_res_offset += sizeof(u32); + meta_data[enc_context->enc_res_pos].type + = encode_type; + meta_data[enc_context->enc_res_pos].len = enc->len; + enc_context->enc_res_pos++; + } + else { + ret_val = OTZ_ENOMEM; + goto ret_free_mem; + } + } + else { + ret_val = OTZ_ILLEGAL_ARGUMENT; + goto ret_func; + } + goto ret_func; ret_free_mem: - if(enc_context) { - if(enc_context->req_addr) { - sw_free(enc_context->req_addr); - enc_context->req_addr = NULL; - } - if(enc_context->res_addr) { - sw_free(enc_context->res_addr); - enc_context->res_addr = NULL; - } - sw_free(enc_context); - } - if(meta_data) { - sw_free(meta_data); - } + if(enc_context) { + if(enc_context->req_addr) { + sw_free(enc_context->req_addr); + enc_context->req_addr = NULL; + } + if(enc_context->res_addr) { + sw_free(enc_context->res_addr); + enc_context->res_addr = NULL; + } + sw_free(enc_context); + } + if(meta_data) { + sw_free(meta_data); + } ret_func: - if(! (*pmeta_data)) - *pmeta_data = meta_data; - if(! (*penc_context)) - *penc_context = enc_context; - - return ret_val; + if(! (*pmeta_data)) + *pmeta_data = meta_data; + if(! (*penc_context)) + *penc_context = enc_context; + + return ret_val; } /** -* @brief Release the encoded data -* -* This function releases the resources which got allocated in encoding function. -* -* @param enc_context: Encode context -* @param meta_data: Meta data which got populated in encoding -* -*/ + * @brief Release the encoded data + * + * This function releases the resources which got allocated in encoding function. + * + * @param enc_context: Encode context + * @param meta_data: Meta data which got populated in encoding + * + */ void otz_release_data(struct otz_secure_encode_ctx *enc_context, - struct otzc_encode_meta *meta_data) + struct otzc_encode_meta *meta_data) { - if(enc_context) { - if(enc_context->req_addr) { - sw_free(enc_context->req_addr); - enc_context->req_addr = NULL; - } - if(enc_context->res_addr) { - sw_free(enc_context->res_addr); - enc_context->res_addr = NULL; - } - sw_free(enc_context); - } - if(meta_data) { - sw_free(meta_data); - } + if(enc_context) { + if(enc_context->req_addr) { + sw_free(enc_context->req_addr); + enc_context->req_addr = NULL; + } + if(enc_context->res_addr) { + sw_free(enc_context->res_addr); + enc_context->res_addr = NULL; + } + sw_free(enc_context); + } + if(meta_data) { + sw_free(meta_data); + } } /** -* @brief Establish session between two tasks. -* -* This function used in IPC functionality to establish session between two -* tasks. -* -* @param svc_id: Target service ID -* @param session_id: Session ID as output parameter -* -* @return otz_return_t: -* OTZ_OK - Session established successfully\n -* OTZ_* - An implementation-defined error code for any other error.\n -*/ + * @brief Establish session between two tasks. + * + * This function used in IPC functionality to establish session between two + * tasks. + * + * @param svc_id: Target service ID + * @param session_id: Session ID as output parameter + * + * @return otz_return_t: + * OTZ_OK - Session established successfully\n + * OTZ_* - An implementation-defined error code for any other error.\n + */ int ipc_connect(int svc_id, int *session_id) { - return open_session_from_secure(svc_id, session_id); + return open_session_from_secure(svc_id, session_id); } /** -* @brief Disconnect the previously established session between two tasks. -* -* This function used in IPC functionality to close the session which got -* established between two tasks. -* -* @param svc_id: Target service ID -* @param session_id: Session ID need to be closed -* -* @return otz_return_t: -* OTZ_OK - Session closed successfully\n -* OTZ_* - An implementation-defined error code for any other error.\n -*/ + * @brief Disconnect the previously established session between two tasks. + * + * This function used in IPC functionality to close the session which got + * established between two tasks. + * + * @param svc_id: Target service ID + * @param session_id: Session ID need to be closed + * + * @return otz_return_t: + * OTZ_OK - Session closed successfully\n + * OTZ_* - An implementation-defined error code for any other error.\n + */ int ipc_disconnect(int svc_id, int session_id) { - return close_session_from_secure(svc_id, session_id); + return close_session_from_secure(svc_id, session_id); } /** -* @brief Send the data between two tasks -* -* This function used to send the data between two tasks. We need to call this -* function after the session establishment. -* -* @param src_svc_id: Source service ID -* @param src_context: Source session ID -* @param svc_id: Target service ID -* @param session_id: Target session ID -* @param cmd_id: Target command ID -* @param enc_ctx: Encode context -* @param meta_data: Meta data -* -* @return otz_return_t: -* OTZ_OK - Data sent successfully\n -* OTZ_* - An implementation-defined error code for any other error.\n -* -*/ + * @brief Send the data between two tasks + * + * This function used to send the data between two tasks. We need to call this + * function after the session establishment. + * + * @param src_svc_id: Source service ID + * @param src_context: Source session ID + * @param svc_id: Target service ID + * @param session_id: Target session ID + * @param cmd_id: Target command ID + * @param enc_ctx: Encode context + * @param meta_data: Meta data + * + * @return otz_return_t: + * OTZ_OK - Data sent successfully\n + * OTZ_* - An implementation-defined error code for any other error.\n + * + */ int ipc_send(int src_svc_id, int src_context, int svc_id, int session_id, int cmd_id, - struct otz_secure_encode_ctx *enc_ctx, - struct otzc_encode_meta *meta_data) + struct otz_secure_encode_ctx *enc_ctx, + struct otzc_encode_meta *meta_data) { - struct otz_smc_cmd smc_cmd; + struct otz_smc_cmd smc_cmd; - smc_cmd.src_id = (src_svc_id << 10); - smc_cmd.src_context = src_context; - smc_cmd.id = (svc_id << 10) | cmd_id; - smc_cmd.context = session_id; - smc_cmd.req_buf_len = enc_ctx->enc_req_offset; - smc_cmd.resp_buf_len = enc_ctx->enc_res_offset; - smc_cmd.ret_resp_buf_len = 0; - - if(enc_ctx->req_addr) - smc_cmd.req_buf_phys = (pa_t)enc_ctx->req_addr; - else - smc_cmd.req_buf_phys = 0; - - if(enc_ctx->res_addr) - smc_cmd.resp_buf_phys = (pa_t)enc_ctx->res_addr; - else - smc_cmd.resp_buf_phys = 0; - - if(meta_data) - smc_cmd.meta_data_phys = (pa_t)meta_data; - else - smc_cmd.meta_data_phys = 0; - - otz_ipi(&smc_cmd); - - return OTZ_OK; + smc_cmd.src_id = (src_svc_id << 10); + smc_cmd.src_context = src_context; + smc_cmd.id = (svc_id << 10) | cmd_id; + smc_cmd.context = session_id; + smc_cmd.req_buf_len = enc_ctx->enc_req_offset; + smc_cmd.resp_buf_len = enc_ctx->enc_res_offset; + smc_cmd.ret_resp_buf_len = 0; + + if(enc_ctx->req_addr) + smc_cmd.req_buf_phys = (pa_t)enc_ctx->req_addr; + else + smc_cmd.req_buf_phys = 0; + + if(enc_ctx->res_addr) + smc_cmd.resp_buf_phys = (pa_t)enc_ctx->res_addr; + else + smc_cmd.resp_buf_phys = 0; + + if(meta_data) + smc_cmd.meta_data_phys = (pa_t)meta_data; + else + smc_cmd.meta_data_phys = 0; + + otz_ipi(&smc_cmd); + + return OTZ_OK; } /** -* @brief Helper function to send the data between two tasks for single request -* and single response buffer -* -* This function helps to send the data between two task of single request and -* single response. This takes care of session establishment, encoding, sending -* and decoding of data. -* -* @param src_svc_id: Source service ID -* @param src_session_id: Source session ID -* @param target_svc_id: Target service ID -* @param target_cmd_id: Target command ID -* @param req_buf: Request buffer -* @param req_buf_len: Request buffer length -* @param res_buf: Response buffer -* @param res_buf_len: Response buffer length -* @param ret_res_buf_len: Return response buffer length -* -* @return otz_return_t: -* OTZ_OK - API success\n -* OTZ_* - An implementation-defined error code for any other error.\n -*/ + * @brief Helper function to send the data between two tasks for single request + * and single response buffer + * + * This function helps to send the data between two task of single request and + * single response. This takes care of session establishment, encoding, sending + * and decoding of data. + * + * @param src_svc_id: Source service ID + * @param src_session_id: Source session ID + * @param target_svc_id: Target service ID + * @param target_cmd_id: Target command ID + * @param req_buf: Request buffer + * @param req_buf_len: Request buffer length + * @param res_buf: Response buffer + * @param res_buf_len: Response buffer length + * @param ret_res_buf_len: Return response buffer length + * + * @return otz_return_t: + * OTZ_OK - API success\n + * OTZ_* - An implementation-defined error code for any other error.\n + */ int ipc_api(int src_svc_id, int src_session_id, int target_svc_id, - int target_cmd_id, void *req_buf, int req_buf_len, - void* res_buf, int res_buf_len, int *ret_res_buf_len) + int target_cmd_id, void *req_buf, int req_buf_len, + void* res_buf, int res_buf_len, int *ret_res_buf_len) { - int ret_val, session_id; - struct otz_secure_encode_cmd enc; - struct otzc_encode_meta *meta_data = NULL; - struct otz_secure_encode_ctx *enc_ctx = NULL; - void *decode_out; - int offset = 0, pos = OTZ_MAX_REQ_PARAMS, type; - - ret_val = ipc_connect(target_svc_id, &session_id); - - if(ret_val != OTZ_OK) { - sw_printf("ipc api: connect failed\n"); - goto ret_func; - } - - enc.len = req_buf_len; - enc.data = req_buf; - enc.param_type = OTZC_PARAM_IN; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); - if(ret_val != OTZ_OK) { - sw_printf("ipc api: encode data failed\n"); - goto handler_err1; - } - - enc.len = res_buf_len; - enc.data = res_buf; - enc.param_type = OTZC_PARAM_OUT; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); - if(ret_val != OTZ_OK) { - sw_printf("ipc api: encode data failed\n"); - goto handler_err1; - } - - ret_val = ipc_send(src_svc_id, src_session_id, target_svc_id, session_id, - target_cmd_id, enc_ctx, meta_data); - - if(ret_val != OTZ_OK) { - sw_printf("ipc api: send failed\n"); - goto handler_err1; - } - - if(get_task_tls(src_session_id)->ipi_ret_val == SMC_SUCCESS) { - - if(decode_ipi_out_data(enc_ctx->res_addr, meta_data, - &type, &offset, &pos,(void**)&decode_out, ret_res_buf_len)) { - - otz_release_data(enc_ctx, meta_data); - sw_printf("ipc api: decode data failed\n"); - goto handler_err1; - } - - if(decode_out != res_buf) { - otz_release_data(enc_ctx, meta_data); - sw_printf("ipc api: wrong response buffer\n"); - goto handler_err1; - } - } - else { - otz_release_data(enc_ctx, meta_data); - sw_printf("ipc api: target service returns error 0x%x\n", - get_task_tls(src_session_id)->ipi_ret_val); - goto handler_err1; - } - otz_release_data(enc_ctx, meta_data); + int ret_val, session_id; + struct otz_secure_encode_cmd enc; + struct otzc_encode_meta *meta_data = NULL; + struct otz_secure_encode_ctx *enc_ctx = NULL; + void *decode_out; + int offset = 0, pos = OTZ_MAX_REQ_PARAMS, type; + + ret_val = ipc_connect(target_svc_id, &session_id); + + if(ret_val != OTZ_OK) { + sw_printf("ipc api: connect failed\n"); + goto ret_func; + } + + enc.len = req_buf_len; + enc.data = req_buf; + enc.param_type = OTZC_PARAM_IN; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); + if(ret_val != OTZ_OK) { + sw_printf("ipc api: encode data failed\n"); + goto handler_err1; + } + + enc.len = res_buf_len; + enc.data = res_buf; + enc.param_type = OTZC_PARAM_OUT; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); + if(ret_val != OTZ_OK) { + sw_printf("ipc api: encode data failed\n"); + goto handler_err1; + } + + ret_val = ipc_send(src_svc_id, src_session_id, target_svc_id, session_id, + target_cmd_id, enc_ctx, meta_data); + + if(ret_val != OTZ_OK) { + sw_printf("ipc api: send failed\n"); + goto handler_err1; + } + + if(get_task_tls(src_session_id)->ipi_ret_val == SMC_SUCCESS) { + + if(decode_ipi_out_data(enc_ctx->res_addr, meta_data, + &type, &offset, &pos,(void**)&decode_out, ret_res_buf_len)) { + + otz_release_data(enc_ctx, meta_data); + sw_printf("ipc api: decode data failed\n"); + goto handler_err1; + } + + if(decode_out != res_buf) { + otz_release_data(enc_ctx, meta_data); + sw_printf("ipc api: wrong response buffer\n"); + goto handler_err1; + } + } + else { + otz_release_data(enc_ctx, meta_data); + sw_printf("ipc api: target service returns error 0x%x\n", + get_task_tls(src_session_id)->ipi_ret_val); + goto handler_err1; + } + otz_release_data(enc_ctx, meta_data); handler_err1: - ipc_disconnect(OTZ_SVC_CRYPT, session_id); + ipc_disconnect(OTZ_SVC_CRYPT, session_id); ret_func: - return ret_val; + return ret_val; } /** -* @brief: Test IPC command for crypto operation -* -* This function helps to test the IPC functionality by invoking crypto -* operation. -* -* @param src_svc_id: Source service ID -* @param src_session_id: Source session ID -*/ + * @brief: Test IPC command for crypto operation + * + * This function helps to test the IPC functionality by invoking crypto + * operation. + * + * @param src_svc_id: Source service ID + * @param src_session_id: Source session ID + */ void ipc_test_crypto(int src_svc_id, int src_session_id) { - int ret_val, session_id, loop_cntr; - struct otz_secure_encode_cmd enc; - struct otzc_encode_meta *meta_data = NULL; - struct otz_secure_encode_ctx *enc_ctx = NULL; - char *input_string = "This is a test for IPC encryption/decryption"; - - char output_buf[256], *decode_out; - int output_buf_len = 256; - - char decrypt_output_buf[256]; - int decrypt_output_buf_len = 256; - - int offset = 0, pos = OTZ_MAX_REQ_PARAMS, type; - - u32 input_buf_len = sw_strlen(input_string)+1; - - ret_val = ipc_connect(OTZ_SVC_CRYPT, &session_id); - - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: connect failed\n"); - goto ret_func; - } - - enc.len = sizeof(u32); - enc.data = (void*)input_buf_len; - enc.param_type = OTZC_PARAM_IN; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_ENC_UINT32); - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: encode data failed\n"); - goto handler_err1; - } - - enc.len = input_buf_len; - enc.data = input_string; - enc.param_type = OTZC_PARAM_IN; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: encode data failed\n"); - goto handler_err1; - } - - enc.len = output_buf_len; - enc.data = output_buf; - enc.param_type = OTZC_PARAM_OUT; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: encode data failed\n"); - goto handler_err1; - } - - ret_val = ipc_send(src_svc_id, src_session_id, OTZ_SVC_CRYPT, - session_id, OTZ_CRYPT_CMD_ID_ENCRYPT, - enc_ctx, meta_data); - - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: send failed\n"); - goto handler_err1; - } - - if(get_task_tls(src_session_id)->ipi_ret_val == SMC_SUCCESS) { - - if(decode_ipi_out_data(enc_ctx->res_addr, meta_data, - &type, &offset, &pos,(void**)&decode_out, &output_buf_len)) { - - otz_release_data(enc_ctx, meta_data); - sw_printf("ipc test cmd: decode data failed\n"); - goto handler_err1; - } - - if(decode_out != output_buf) { - sw_printf("ipc test cmd: wrong out buffer\n"); - } - sw_printf("IPC Encrypted string is "); - for(loop_cntr=0;loop_cntripi_ret_val); - goto handler_err1; - } - otz_release_data(enc_ctx, meta_data); - - - meta_data = NULL; - enc_ctx = NULL; - - enc.len = sizeof(u32); - enc.data = (void*)output_buf_len; - enc.param_type = OTZC_PARAM_IN; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_ENC_UINT32); - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: encode data failed\n"); - goto handler_err1; - } - - enc.len = output_buf_len; - enc.data = output_buf; - enc.param_type = OTZC_PARAM_IN; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: encode data failed\n"); - goto handler_err1; - } - - enc.len = decrypt_output_buf_len; - enc.data = decrypt_output_buf; - enc.param_type = OTZC_PARAM_OUT; - - ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: encode data failed\n"); - goto handler_err1; - } - - ret_val = ipc_send(src_svc_id, src_session_id, OTZ_SVC_CRYPT, session_id, - OTZ_CRYPT_CMD_ID_DECRYPT, - enc_ctx, meta_data); - - if(ret_val != OTZ_OK) { - sw_printf("ipc test cmd: send failed\n"); - goto handler_err1; - } - - if(get_task_tls(src_session_id)->ipi_ret_val == SMC_SUCCESS) { - if(decode_ipi_out_data(enc_ctx->res_addr, meta_data, - &type, &offset, &pos, (void**)&decode_out, - &decrypt_output_buf_len)) { - - otz_release_data(enc_ctx, meta_data); - sw_printf("ipc test cmd: decode data failed\n"); - goto handler_err1; - } - - if(decode_out != decrypt_output_buf) { - sw_printf("ipc test cmd: wrong out buffer\n"); - } - sw_printf("IPC: decrypted output %s\n", decrypt_output_buf); - } - else { - otz_release_data(enc_ctx, meta_data); - sw_printf("ipc test cmd: service returns error 0x%x failed\n", - get_task_tls(src_session_id)->ipi_ret_val); - goto handler_err1; - } - - otz_release_data(enc_ctx, meta_data); + int ret_val, session_id, loop_cntr; + struct otz_secure_encode_cmd enc; + struct otzc_encode_meta *meta_data = NULL; + struct otz_secure_encode_ctx *enc_ctx = NULL; + char *input_string = "This is a test for IPC encryption/decryption"; + + char output_buf[256], *decode_out; + int output_buf_len = 256; + + char decrypt_output_buf[256]; + int decrypt_output_buf_len = 256; + + int offset = 0, pos = OTZ_MAX_REQ_PARAMS, type; + + u32 input_buf_len = sw_strlen(input_string)+1; + + ret_val = ipc_connect(OTZ_SVC_CRYPT, &session_id); + + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: connect failed\n"); + goto ret_func; + } + + enc.len = sizeof(u32); + enc.data = (void*)input_buf_len; + enc.param_type = OTZC_PARAM_IN; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_ENC_UINT32); + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: encode data failed\n"); + goto handler_err1; + } + + enc.len = input_buf_len; + enc.data = input_string; + enc.param_type = OTZC_PARAM_IN; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: encode data failed\n"); + goto handler_err1; + } + + enc.len = output_buf_len; + enc.data = output_buf; + enc.param_type = OTZC_PARAM_OUT; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: encode data failed\n"); + goto handler_err1; + } + + ret_val = ipc_send(src_svc_id, src_session_id, OTZ_SVC_CRYPT, + session_id, OTZ_CRYPT_CMD_ID_ENCRYPT, + enc_ctx, meta_data); + + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: send failed\n"); + goto handler_err1; + } + + if(get_task_tls(src_session_id)->ipi_ret_val == SMC_SUCCESS) { + + if(decode_ipi_out_data(enc_ctx->res_addr, meta_data, + &type, &offset, &pos,(void**)&decode_out, &output_buf_len)) { + + otz_release_data(enc_ctx, meta_data); + sw_printf("ipc test cmd: decode data failed\n"); + goto handler_err1; + } + + if(decode_out != output_buf) { + sw_printf("ipc test cmd: wrong out buffer\n"); + } + sw_printf("IPC Encrypted string is "); + for(loop_cntr=0;loop_cntripi_ret_val); + goto handler_err1; + } + otz_release_data(enc_ctx, meta_data); + + + meta_data = NULL; + enc_ctx = NULL; + + enc.len = sizeof(u32); + enc.data = (void*)output_buf_len; + enc.param_type = OTZC_PARAM_IN; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_ENC_UINT32); + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: encode data failed\n"); + goto handler_err1; + } + + enc.len = output_buf_len; + enc.data = output_buf; + enc.param_type = OTZC_PARAM_IN; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: encode data failed\n"); + goto handler_err1; + } + + enc.len = decrypt_output_buf_len; + enc.data = decrypt_output_buf; + enc.param_type = OTZC_PARAM_OUT; + + ret_val = otz_encode_data(&enc, &meta_data, &enc_ctx, OTZ_SECURE_MEM_REF); + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: encode data failed\n"); + goto handler_err1; + } + + ret_val = ipc_send(src_svc_id, src_session_id, OTZ_SVC_CRYPT, session_id, + OTZ_CRYPT_CMD_ID_DECRYPT, + enc_ctx, meta_data); + + if(ret_val != OTZ_OK) { + sw_printf("ipc test cmd: send failed\n"); + goto handler_err1; + } + + if(get_task_tls(src_session_id)->ipi_ret_val == SMC_SUCCESS) { + if(decode_ipi_out_data(enc_ctx->res_addr, meta_data, + &type, &offset, &pos, (void**)&decode_out, + &decrypt_output_buf_len)) { + + otz_release_data(enc_ctx, meta_data); + sw_printf("ipc test cmd: decode data failed\n"); + goto handler_err1; + } + + if(decode_out != decrypt_output_buf) { + sw_printf("ipc test cmd: wrong out buffer\n"); + } + sw_printf("IPC: decrypted output %s\n", decrypt_output_buf); + } + else { + otz_release_data(enc_ctx, meta_data); + sw_printf("ipc test cmd: service returns error 0x%x failed\n", + get_task_tls(src_session_id)->ipi_ret_val); + goto handler_err1; + } + + otz_release_data(enc_ctx, meta_data); handler_err1: - ipc_disconnect(OTZ_SVC_CRYPT, session_id); + ipc_disconnect(OTZ_SVC_CRYPT, session_id); ret_func: - return; + return; } /** -* @brief Test IPC command for echo operation -* -* This function helps to test IPC command of echo service. -* -* @param src_svc_id: Source service ID -* @param src_session_id: Source session ID -*/ + * @brief Test IPC command for echo operation + * + * This function helps to test IPC command of echo service. + * + * @param src_svc_id: Source service ID + * @param src_session_id: Source session ID + */ void ipc_test_echo(int src_svc_id, int src_session_id) { - char* req_buf = "Test IPI echo cmd"; - int req_buf_len = sw_strlen(req_buf) + 1; + char* req_buf = "Test IPI echo cmd"; + int req_buf_len = sw_strlen(req_buf) + 1; + + char res_buf[256]; + int res_buf_len = 256; + int ret_val; + + ret_val = ipc_api(src_svc_id, src_session_id, OTZ_SVC_ECHO, + OTZ_ECHO_CMD_ID_IPI_SEND_CMD, req_buf, req_buf_len, + res_buf, res_buf_len, &res_buf_len); - char res_buf[256]; - int res_buf_len = 256; - int ret_val; - - ret_val = ipc_api(src_svc_id, src_session_id, OTZ_SVC_ECHO, - OTZ_ECHO_CMD_ID_IPI_SEND_CMD, req_buf, req_buf_len, - res_buf, res_buf_len, &res_buf_len); - - if(ret_val == OTZ_OK) { - sw_printf("ipc echo test: %s\n", res_buf); - } + if(ret_val == OTZ_OK) { + sw_printf("ipc echo test: %s\n", res_buf); + } } /** -* @brief Helper function to handle the task return -* -* This function helps to handle the return functionality of task. This function -* puts the task in to wait or suspend state based on the return value and also -* helps to set the return value of secure call or IPC call. -* -* @param task_id: Task ID -* @param tls: Task local storage -*/ + * @brief Helper function to handle the task return + * + * This function helps to handle the return functionality of task. This function + * puts the task in to wait or suspend state based on the return value and also + * helps to set the return value of secure call or IPC call. + * + * @param task_id: Task ID + * @param tls: Task local storage + */ void handle_task_return(int task_id, sw_tls* tls) { - if(tls->ret_val == SMC_PENDING) - suspend_task(task_id, TASK_STATE_WAIT); - else - suspend_task(task_id, TASK_STATE_SUSPEND); - - if(tls->params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) - set_secure_api_ret(tls->ret_val); - else if(tls->params[2] == OTZ_CMD_TYPE_SECURE_TO_SECURE) - otz_ipi_return((struct otz_smc_cmd *)tls->params[1], tls->ret_val); + if(tls->ret_val == SMC_PENDING) + suspend_task(task_id, TASK_STATE_WAIT); + else + suspend_task(task_id, TASK_STATE_SUSPEND); + + if(tls->params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) + set_secure_api_ret(tls->ret_val); + else if(tls->params[2] == OTZ_CMD_TYPE_SECURE_TO_SECURE) + otz_ipi_return((struct otz_smc_cmd *)tls->params[1], tls->ret_val); - schedule(); + schedule(); } #ifdef OTZONE_ASYNC_NOTIFY_SUPPORT /** -* @brief Send notification to non-secure world -* -* This function sends the notification message to Non-secure world. -* -* @param task_id: Task ID -*/ + * @brief Send notification to non-secure world + * + * This function sends the notification message to Non-secure world. + * + * @param task_id: Task ID + */ void notify_ns(int task_id) { - sw_tls *tls; - pa_t cmd_phy; - u32 *params; - struct otz_smc_cmd *cmd = NULL; - - - tls = get_task_tls(task_id); - if(!tls) - return; - - params = tls->params; - if(!params){ - return; - } - if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { - cmd_phy = (pa_t) params[1]; - if(!cmd) { - if(map_to_ns(cmd_phy, (va_t*) &cmd)) { - return; - } - } - } - else { - cmd = (struct otz_smc_cmd *)params[1]; - } - + sw_tls *tls; + pa_t cmd_phy; + u32 *params; + struct otz_smc_cmd *cmd = NULL; + + + tls = get_task_tls(task_id); + if(!tls) + return; + + params = tls->params; + if(!params){ + return; + } + if(params[2] == OTZ_CMD_TYPE_NS_TO_SECURE) { + cmd_phy = (pa_t) params[1]; + if(!cmd) { + if(map_to_ns(cmd_phy, (va_t*) &cmd)) { + return; + } + } + } + else { + cmd = (struct otz_smc_cmd *)params[1]; + } + - invoke_ns_callback((cmd->id >> 10 & 0x3ff), - cmd->context, cmd->enc_id, cmd->src_context); + invoke_ns_callback((cmd->id >> 10 & 0x3ff), + cmd->context, cmd->enc_id, cmd->src_context); - return; + return; } /** @@ -1193,26 +1206,26 @@ */ int register_notify_data_api(void *param) { - int ret_val = OTZ_OK; - pa_t cmd_phy; - struct otz_smc_cmd *cmd = NULL; + int ret_val = OTZ_OK; + pa_t cmd_phy; + struct otz_smc_cmd *cmd = NULL; - cmd_phy = (pa_t) param; + cmd_phy = (pa_t) param; - if(map_to_ns(cmd_phy, (va_t*) &cmd)) { - ret_val = OTZ_ENOMEM; - goto ret_func; - } + if(map_to_ns(cmd_phy, (va_t*) &cmd)) { + ret_val = OTZ_ENOMEM; + goto ret_func; + } - ret_val = register_notify_data(cmd->req_buf_phys); + ret_val = register_notify_data(cmd->req_buf_phys); ret_func: - if(cmd) - unmap_from_ns((va_t)cmd); + if(cmd) + unmap_from_ns((va_t)cmd); - return ret_val; + return ret_val; } /** @@ -1229,7 +1242,7 @@ */ int unregister_notify_data_api(void) { - unregister_notify_data(); - return OTZ_OK; + unregister_notify_data(); + return OTZ_OK; } #endif Index: otzone/src/core/sw_modinit.c =================================================================== --- otzone/src/core/sw_modinit.c.orig 2012-08-06 01:25:04.472038156 +0530 +++ otzone/src/core/sw_modinit.c 2012-08-06 10:09:52.637776364 +0530 @@ -19,6 +19,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * + * */ #include @@ -32,7 +37,7 @@ */ static void sw_dev_head_init(void) { - INIT_LIST_HEAD(&sw_dev_head.dev_list); + INIT_LIST_HEAD(&sw_dev_head.dev_list); } /** @@ -44,7 +49,7 @@ */ void sw_device_register(struct sw_file_operations* sw_dev) { - list_add(&sw_dev_head.dev_list, &sw_dev->head); + list_add(&sw_dev_head.dev_list, &sw_dev->head); } /** @@ -56,31 +61,55 @@ void sw_device_unregister(struct sw_file_operations* sw_dev) { - list_del(&sw_dev->head); + list_del(&sw_dev->head); } /** * @brief * open system call for devices */ -void sw_open(void) +void sw_open(char *ptr) { #ifdef CONFIG_KSPACE_PROTECTION - __sw_open(); + __sw_open(ptr); #endif - return; + return; } /** * @brief * close system call for devices */ -void sw_close(void) +void sw_close(char *ptr) +{ +#ifdef CONFIG_KSPACE_PROTECTION + __sw_close(ptr); +#endif + return; +} + +/** + * @brief + * read system call for devices + */ +void sw_read(char *ptr) +{ +#ifdef CONFIG_KSPACE_PROTECTION + __sw_read(ptr); +#endif + return; +} + +/** + * @brief + * write system call for devices + */ +void sw_write(char *ptr,char * ptr1) { #ifdef CONFIG_KSPACE_PROTECTION - __sw_close(); + __sw_write(ptr,ptr1); #endif - return; + return; } /** @@ -89,12 +118,12 @@ */ void modules_init(void) { - sw_dev_head_init(); - mod_init_fn_call init_fn; - u32* init_fn_addr; - for(init_fn_addr = get_mod_init_start_addr(); - init_fn_addr < get_mod_init_end_addr();init_fn_addr++){ - init_fn = *(init_fn_addr); - init_fn(); - } + sw_dev_head_init(); + mod_init_fn_call init_fn; + u32* init_fn_addr; + for(init_fn_addr = get_mod_init_start_addr(); + init_fn_addr < get_mod_init_end_addr();init_fn_addr++){ + init_fn = *(init_fn_addr); + init_fn(); + } } Index: otzone/src/lib/libc_sos.c =================================================================== --- otzone/src/lib/libc_sos.c.orig 2012-08-06 01:29:19.356038497 +0530 +++ otzone/src/lib/libc_sos.c 2012-08-06 10:08:58.592812291 +0530 @@ -19,11 +19,18 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * */ /* This file contains those libc functions that may be needed by other apps */ #include "libc_sos.h" +#include "sw_mem_functions.h" +#include "sw_timer_functions.h" #define MIN(x,y) ((y) ^ (((x) ^ (y)) & -((x) < (y)))) @@ -112,7 +119,7 @@ } s32int pthread_mutex_init(pthread_mutex_t *mutex, - const pthread_mutexattr_t *attribute) + const pthread_mutexattr_t *attribute) { return(sw_mutex_init((sw_mutex_t*)mutex,(sw_mutexattr_t*)attribute)); } @@ -164,10 +171,12 @@ s32int sleep(u32 seconds) { - return(sw_sleep(seconds)); + sw_sleep(seconds); + return 0; } s32int usleep(u32 seconds) { - return(sw_usleep(seconds)); + sw_usleep(seconds); + return 0; } Index: otzone/src/apps/include/md5.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ otzone/src/apps/include/md5.h 2012-08-06 10:05:59.070618053 +0530 @@ -0,0 +1,106 @@ +/* See test_md5.c for explanation and copyright information. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * + */ +/* + * $FreeBSD: head/contrib/cvs/lib/md5.h 54441 1999-12-11 15:10:02Z peter $ + */ + +#ifndef MD5_H +#define MD5_H + +#ifdef __FreeBSD__ +#define cvs_MD5Context MD5Context +#define cvs_MD5Init MD5Init +#define cvs_MD5Update MD5Update +#define cvs_MD5Final MD5Final +#define cvs_MD5Transform MD5Transform +#include +#else + +/* Unlike previous versions of this code, uint32 need not be exactly + 32 bits, merely 32 bits or more. Choosing a data type which is 32 + bits instead of 64 is not important; speed is considerably more + important. ANSI guarantees that "unsigned long" will be big enough, + and always using it seems to have few disadvantages. */ +typedef unsigned long cvs_uint32; + +struct cvs_MD5Context { + cvs_uint32 buf[4]; + cvs_uint32 bits[2]; + unsigned char in[64]; +}; + + + +/* @brief: initialization of md5context for computing md5 checksum + * @param: context md5 context + * @return + **/ + +void cvs_MD5Init(struct cvs_MD5Context *context); + + + +/* @brief: updation of md5context everytime it reads data buffer + * @param: context md5 context + * @param: buf input data buffer + * @len: length of input data buffer + * @return + */ + +void cvs_MD5Update(struct cvs_MD5Context *context, + unsigned char const *buf, unsigned len); + +/* @brief: final computation of checksum + * @param: context md5 context + * @param: digest md5 checksum + * @return + */ + +void cvs_MD5Final(unsigned char digest[16], + struct cvs_MD5Context *context); + + +/* @brief + * @param buf + * @param in + * @return + */ +void cvs_MD5Transform(cvs_uint32 buf[4], const unsigned char in[64]); + + +/* @brief: Used only for debugging the md5 algorithm + * @param ctx + * @param buffer + * @param len + * @return + */ +void print_context_buffer(struct cvs_MD5Context *ctx,unsigned char* buffer,int len); + + +/* @brief: performs md5 algorithm on input buffer. This is called in repeated iteration till End of File + * @param: input_buf input data buffer + * @len: input_len length of input data buffer + * @return + */ + +int perform_md5_algo(unsigned char *input_buf, int input_len); + + +/* @brief: Computation of md5 checksum. To be called at last after perform_md5_algo() has been called + * for all the data till End of File + * @param: len Length of md5 checksum + * @param output_buf contains md5 checksum + * @return + */ + +int compute_checksum(int *len,unsigned char *output_buf); + +#endif + +#endif /* !MD5_H */ + Index: otzone/src/apps/include/md5_task.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ otzone/src/apps/include/md5_task.h 2012-08-06 10:06:19.912192077 +0530 @@ -0,0 +1,150 @@ +/* + * OpenVirtualization: + * For additional details and support contact developer@sierraware.com. + * Additional documentation can be found at www.openvirtualization.org + * + * Copyright (C) 2011 SierraWare + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * Open-Silicon Research Pvt Ltd + * This code has been further modified and used as a part of TrustZone + * SDk as sample Application + * + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + + +#ifndef __OTZ_APP_MD5_TASK_H__ +#define __OTZ_APP_MD5_TASK_H__ + +#include +#include +#if 1 +/** + * @brief + * Global variables for the task should be defined as a member of the global + * structure + */ +typedef struct md5_global +{ +}md5_global; +#endif + +/** + * @brief: md5 task init + * + * This function initializes md5 task parameters. This function + * calls the cvs_MD5Init function to initialize md5 context. + * + * @param psa_config: Configuration parameter for the task and its get called + * before the task creation + * + * @return otz_return_t: + * OTZ_OK \n + * OTZ_* - An implementation-defined error code for any other error.\n + */ +int md5_task_init(sa_config_t *psa_config); + +/** + * @brief md5 task exit + * + * This function gets called before the md5 task deletion + * + * @param data: Private data which need to be freed. + * @return otz_return_t: + * OTZ_OK \n + * OTZ_FAIL \n + */ +int md5_task_exit(void* data); + +/** + * @brief md5 task entry point + * + * This function implements the processing of md5 task commands. + * + * @param task_id: task identifier + * @param tls: Pointer to task local storage + */ +void md5_task(int task_id, sw_tls* tls); + +/** + * @brief Process md5 service + * + * This function process the md5 task service commands + * + * @param svc_cmd_id: Command identifer to process the md5 service command + * @param req_buf: Virtual address of the request buffer + * @param req_buf_len: Request buffer length + * @param resp_buf: Virtual address of the response buffer + * @param res_buf_len: Response buffer length + * @param meta_data: Virtual address of the meta data of the encoded data + * @param ret_res_buf_len: Return length of the response buffer + * + * @return SMC return codes: + * SMC_SUCCESS: MD5 service command processed successfully. \n + * SMC_*: An implementation-defined error code for any other error. + */ +int process_otz_md5_svc(u32 svc_cmd_id, void *req_buf, u32 req_buf_len, + void *resp_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, u32 *ret_res_buf_len); + +/** + * @brief Parse data + * + * This function parses the data for computing md5 checksum + * + * @param svc_cmd_id: Command identifer to process the md5 service command + * @param req_buf: Virtual address of the request buffer + * @param req_buf_len: Request buffer length + * @param resp_buf: Virtual address of the response buffer + * @param res_buf_len: Response buffer length + * @param meta_data: Virtual address of the meta data of the encoded data + * @param ret_res_buf_len: Return length of the response buffer + * + * @return SMC return codes: + * SMC_SUCCESS: md5 service command processed successfully. \n + * SMC_*: An implementation-defined error code for any other error. + */ +int process_otz_md5_cmd_parse_data(void *req_buf, u32 req_buf_len, + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len); + +/** + * @brief Compute checksum + * + * This function computes the checksum based on previously parsed data + * + * @param svc_cmd_id: Command identifer to process the md5 service command + * @param req_buf: Virtual address of the request buffer + * @param req_buf_len: Request buffer length + * @param resp_buf: Virtual address of the response buffer + * @param res_buf_len: Response buffer length + * @param meta_data: Virtual address of the meta data of the encoded data + * @param ret_res_buf_len: Return length of the response buffer + * + * @return SMC return codes: + * SMC_SUCCESS: md5 service command processed successfully. \n + * SMC_*: An implementation-defined error code for any other error. + */ + +int process_otz_md5_cmd_compute_chksum(void *req_buf, u32 req_buf_len, + void *res_buf, u32 res_buf_len, + struct otzc_encode_meta *meta_data, + u32 *ret_res_buf_len); + +#endif + OS_Delivery/TrustZone_Seq_crypto.png0000775000175000017500000207237712007674672020057 0ustar kaushikkaushikPNG  IHDR 5'~lbKGD IDATx{u?Ĭ,嶹Kr7r" E[Qn)Զ]Զ[")VCVlZF!RT5k|ݚq/3C g|9?9sb233@ z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z zS^ryۿq/8wܶmۖ(Q"&&&sR֭~װaÄ+^y啯ڡCNƹy8ܽ{wLJ*uʒP@wѣ+WaÆW^yeܸq=zq٧Oƍϙ3hѢM<:묳u6p˗/ԩӘ1c|?;3||?}+]C=zZHSBg @x\r% ஻TرcGw+Eׯ_?eʔK.8b9[n]^.3f(Q"k|ժUiii'ǧPB;vz:tг:+ƽ뮻}7nҥKʕK,ټy> kСCK*g]qK;zѠA .Ҙo=4sժUW\qYgU\v}7y,5~믿tM6}׃ ;wn֭˔)3x͛7v <8vqoժU'?lٲoJ*ng:?lѢEɒ%k֬9rд<{ P:!!W}xnqʕmۖ[N#:c/T-[ᆱ]%Kt2jԨK/4{sk׮m6j>x򗿄k}wO>d~aƍ?C_WCt322'|ݺu7n]wոqA+:u-+իwyqkX /5a۶mZϞ=8v޹s 7pu׭ZꪫnjC=twW5kUUoaæLҭ[s5\r?sI875ᑞ{7˩_~gy뭷ٳ/([lݻw?sxŋڷo}w]weSL ʖ-[RСCccc zQr|_m ӧO>}Aкu+y_~eՃ HLLի׎;<.d޽^y;sذa#GLLL _ n˚A"=S۶m6mZ߾}J,urG5pCC۷oh 7zpdN/M6-^x͚5g͚uApvڅ:ː;X"W^yefff~-[ UATTVZ~ދĴo>s9sjժ* K8ϥrnСC ?tЄ ڷoggsee=nӦ￿}#W>ƫ[ogѪU1c< @3 <&M{}O}7n; 5kl޼yWߟ/]PB7>rc/]?\2WRuǸ>}111-[;wnҥk_ :E6mxȆ >Ӌ/B {Ν?yبQGydܹz:r‚ ϟ?I&J D۱cGc󓓓G;ӎ} G_~Fڶm{eϟ|֭['Lp >iӦUV{w=jԨ{ŮR /лwڵkw֭F۶mg̘1vؼӧϭZh[n尗-:qO?}cƌYtQB/ժU+33c۶m-Z~xW^yy\rIWǛ_dɚ5k>:t8p`"E^{KLfff3@4i~ d:tĉp J75_g=_~a12:c~-]M6Gw{SD3D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@D/1@Dn!8&ӦM w Ą;*333HS8{X N:;Q۶m?pfϞ]VpvP iw N:Ng֭ w n޽o6lw +=..nnݺǫWnӦͮl6nXr޽{+V,}RRR֭;q^@W8ݻ5\3mڴHJJJlll`BbccAz;jԨWgϞ9a„MnݺL25jt.l*Tc s۵ku5k ۸q ;w|VV^>ҤIƍ裏J.ݾ}/Jh"TR 40`-[r;urr/|. j3ްaC͚5>z~>ziӦ͙3dɒY֭[pan݂ ֭ĉ333^m׮_p{՛6m{r2~QؿڵkM6UV믿>켙~I&mܸTR\A0a„ ˖- =駟֮]{=䣓Cq߾})))u֝8qdȗ}N/JdWP;._E:(qVZڵ+Cu=lNҥꔔ ;u=zApS>So~Ϙ1#'*r\ (NWQFծ]Yf'O޻wohFO>d˖-WޣGo&4= "F8; .KܹCW\qƍzn!CNwߍ3&O&LСC T=z}ٓ'O;dȐѣGשShѢ3gZ3q Ǐܹ^XZ^z)I&7>*]t" _8ҢE/zۍz1eʔC͞=dɒ͛7`ժU۶m+UTR/|YۑcNS'+D~ϟ?}#F<>l^zik֬IJJ>|xh0{Doy*5lp޼yyL?~}ӧO3Ν{H…o~o~hѢ#m/yP I>˗/ϾCqݺu .|ǂ ֭ĉ z]v~w}a6mp"~Q[nY'G:x35j5RPg^s5={\hQJJ-_nRJ9m){7.\XF  ڵkתUApM7m6= ,XPN .駟¼'c/XJƍAеku-^8ڵk+VJ*K.͏(y~iŊ]tٽ{w ҥˈ#~ݻg v{Yl١C̘1#_| jժ뇞6jhʕ{ =UVAҥ}Ƞ3NOd&MqRJ*U*h„ Y-[zO?]/ίk(OVZW^eʔꫯz=zM6\raúu6lذƍV2| Q^UV._<99Xbu+--zIOM}|嗿hG_}Ν?zSN`ݘE>DNKʕ+?W^f,Ŋo漗N#H"^{#M7ݔG{<]t}ݎ;E});'LСC T=z}ٓ'O;dȐѣGשShѢ3g<%|ѣ[lپ}{キ_~};{/&#wPp>#Klٲyrʅ;)UFÇk.A.j?#Errrjjʕ+6l,gD̙o\{B|F  zWp_~e#3^:c3^:c3^:cU8N:7vӧOoNӦM wm۶H"NA6oGQnw,P^~w rpGധN lٲ%)8w|3f̘Aw}Ý *b{ wԶm>lٵj wT|pG5f̘pGd8R:uʖ-iSNlllNk" (W\*U_W\qErXb#+1Dy;B>+_-[͛!"A ׷opG:#~}D6N8N)))+W @ov^f̘ Nܛo߾Dl5jw b^zŋرc,:c1@;Wtiii;#99yժUD6mڌ7Ώ)r:ѣG'%%=#Duiذalll'ڵkSSSw @]vϞ=4i NpxpGN"8"g1pz:czso길p /k׮jժ;.\8mڴ.SNPDgy{0`ȑ#Ý`qoj =@ntKg "3HKKKOOw8?99w ]veƍԩS8?3IIIÆ w$SSS3228);v;jժճgϦM# IDAT;@91 ڷoaÆpN 233 Bg p錁Ӊ> "?^tqqqD$l#G\r%\ @Zxq^^}p(p ;@0`8~w^#>?~|"Enpg(X"g1 3o tDg "3HKKKOOw8 2$99y…D-[7Ώ)r:#G&%%=cD\pAÆ 8)֭[ @ zy;@S8~S;p<9ӝԋ8>>>11ѯOʕ+۴i @zw{+;@c+ƎۧO޽{?sPD>cܸ=@ntKg "3HKKKOOw8=#s w 5o|ܸq]t w'r:㧞z*)) ӢERJ5h`[l9Ւ_~׫WW_ͯip}?s'}p"P͚5{٬Yp(p"3G<׮]oڴZj_-5x.(㝚š`曓pN 233 sSpᤤFM:5!!ӧLҢE5k9rǎA<3M4:|ٲe w`Ĉ+Vٳ'%%u%JhРW_}ۂ)S̒%KBW\z}#MrRJ 8pÆ #Gڵ׮][Z RRR:vfyVZ裏^zk֬)^xn x۷0`;wo xg{。Cx㍡i*T?~ z뭛n)99ZjGN;I!8 3pE>ĸ|_UViiiv:xԩSz7yg̘Yt髯:%%%{N:G-r?x˖- *Tvrgٻw5kvug6h i:u\rll5\Ӿ}3g9I<8cƌFAPnRJWZZZ:k222-Zr-jׯ_d> ` fWB?ǟ~1&oӦܹs7o\Z}υ >tPqFF-Һue˖mذcǎY=\iN 1p||ȍ8駟VXѥKݻw?Av{Yl١C̘1#tHlll.]Fow5 .ܹszw=xg}?ԩS_z㫯z̙߲eĉEݻ7>>>))3 _x+VvJKKk֬ٙgf͚iӦe}Z!ӝ8OpIMM˖-[t֭[/Y$wy={uZj+VFC c! y7NA-/sQB^z)bbby睬EW˔)3k֬S*UA زeK6~|-c"XBg|Bz뭋/8!!a ,(_|6mOZnݿիWifW67n\r޽+)׿+۶m{WTA۷/%%nݺ'N A <8{ի_zРA߿ڵ?MU_g[=/=inMp8effk6mZh$%%%66]w]BBBhPBYO z|[os5jTعs9s{:uAP^ze_gϞ9a„MnݺL2yLȑpK3gСÑ.\8))QFSN-_|͛ww68###---==׹뮻Jdƌ\~~6`vnݺf͚c9W~6n8}…s.K(ѢE{ҤI7n<5Ǐ߹s /Zj&}R%$$<#YP;._T _5*99yʔ)Df͚7ow'r:'|2))'zZbż2!C̜9{fɒ%|-[\tE:tرcGn_|*U4n8][nywd~nӊ+sάpÇ6lXi9ZhQbbb}v9.I C׳g>(A"&&&O#zU2'Y?ZbŊ{믿}p֬YeʔYfXfMΝnjӢEcVT;r-Ck4h ^xYxrrv׾;YO/^\\ fӶm5j ><|#Ǔ;v_߹sǏ=zԩ'Omk[v횑5^H?gu֧zK.UVݼyرc˖-{9sm۶bŊ:+42}n߾׿uny<=Ư~3$馛Zj /k?~ꩧ:ut?ϭZ:l033;wozݻw?쳿4@r{y>|x-qZrri>z/޽?|F]s5?s'x"66jժz*SW_} 94eCOַoߕ+W#A+%%%A  piժŋ-ZԲepgN'&M~w뭷 w%r>cg\PlڴYf oQr_{θP%Fg "iii'''?>AԴiqu=A 錟|ɤ#F;pUVaÆŋwRSSl @VZϞ=[h {S{.Ng t((t^tqqqoիꫯ qBB/OGʕ/ۘۚٝ%v"`>FEn+Wu]De˖kҤIPD:tСN9\^p8VXQD5j5Et~lٲe˖ w 2]vzk,6jԨڵk7kl{ _~k֬ׯ_Jwp UL>,նo#/_qƫWOOO2eJ-j֬9r;vA34i$kβev#VX߳gOJJJ֭K(ѠA* Qc=v饗֩S{ٴiSQC|ɖ-[V^G|/:Q `m۶Ƿ1AdEoar<;ir9O_۾}޽{o۶{g{。Cx㍡iYjn~իڝw޹o߾%K|}?#G*Uj6l9rd׮]vjժAұc#ZGK׬YSx< 4iҤsVZuĈ۷uyK/RʠA>qc?Q `&L߷1ksPr##2 {(Q? =_z׭[a}իZzzzBB'|z:lذbŊeff8pL2Y_}U :ٶmx 333###11qš9 62eJffK.f?Q V^{ =޽{w"E6nܘիWB+V([/:Wfff~g}mZ3??lZ 6y np(p"iiiˬZ*==~5Zr={rꫯ3fܹ%KqYcz?_uiE(E*(Ff!4!omKlKVG sz7ڜx{˄Zf4QzIA^>^^_rz=^q{>_۽i+}"[%33sіÇEJJ {-++;r䈡A&H$,`NPUWWK./__gϞ%%%%XA>jժ/f~~)5%&w^X TsDD3JuzAAAR;IIIҷW^ź f^r~SM$=|PV ^;;;'O>D"xȑϟ߽{iӤyʕ+TAIIIqqqQrmz-ك2Vـ_t_JMpI+EjDOLLl-ӧOewԵkWWWWehvTgBijj5* %%%>>~'N~ԧOk׮I[w<;v-[  {VXX%/++ʊ}G;wnUk{xx|/^,--uVFF 'N8|ӧO/_`nnxڮ%_VV/րb͆Rj\KZ1RغuI޽ڙbҥKM @ӓMyy򅇇/Zo޼y3g޹st„ +W4˽{uV==}7S6hdd'ܹsܹs5NfCCӧ/ |^zļ6kYKcǎiiiI6eTajV$fC;wszY@3DHeY> \v~,PuPPرcDa̘1Ǐ6mZ3֮]+U,--N=zcǎ=6uD/44tѢE6mRvxS>c---###mmmeA=ƨ-Zdll,«W[++I&մ裏 v횯;Qʕ+srr.] M$==ݲ"Ͳeˌa}UkE__O>-++;tP^|}}>|(羵jk۶PA[dd Q{SWdɒz}뭷YD___MM>D"a=cnݺE455uttY\UAm>WUGGGSSEZn^"/^8p`nnnVZ?~ݺuݻw;v#G>::Z2eJ׮]<==Ocw6m,]?sġ[''3gK[[[鸮n.]._lee9zhY/^HS:hjjQRR&55uƌ,]lrCCÚND"OYT[ .cNۧ \NXKKH[[[Aھ}v1yd67={{{mm IDAT$X,իWbk/m䤤mɓ666uXcǎ]Z]]Lvԕ+W|}}O8aeeUSeCC+W 81j{"U4;vT|~Khbb T׷oާOYf); @:^zuNNŋ@^zڴi4BSSsԨQ)))7o8q'N>|ӧ˗/wpp077/++ʊV|=zo]O>׮]h}z^^$=~ 33SζlP ~PhuPPرcfYYmddKm2^xq޼y7oޔ<'O 2d…3gTSSSvA8pɓ=<<߯, MUVk֬ٸq<6mZfMh `ff6p@___''cǎ jМNϸ@"*;@I&էBzze!!! y^ߊ+444GݷoǏ+rbq@@@#&gVvfGuMz/?_jh,GNNNΝk̙3'""BG˖-2eUٳgӦM۽{wdjժ'OV;w(8U+EoZ[n_zzz N}뭷d-[sW^I޾}{[lFY!қo/@@{SHZZZ NVpz-]]]'khh)8Y]]u NVSSWprV , , rc_qFi1=chz$u'͘1CrssR')ŋg/..Vp˗/\PPPPPdV{n2D6N􌵴%C?i˖-G6BŻEEE/..WpW^x䒒<'>\eee N.//왂AH$O~ǏWQV:udbbRqpĈ <@cHLLtttQvEuzk֬YfSVqjud9\]]\ҲG44=22rĉ*Q17Z?GZjf͚w}WI3В@ b kMMM__EuIU3В3Z/^|Y55ɓ'Vv(@5Z);@)((H$O?TMMmʔ)nڷo XX|Ǝ ÌRq``_ QΝܿ.]pႿѣGe8СC:uJk{tҥKo/I?} "?~K.K{{{{{{—^_Yfڵ+&&&Z?TTSSsΝ?o?tkVs?핮a>cmmm###?H)!!gm|ajjq*;ɓ'ɊT{ѡCի &4F/^۷ӧ FFFzxxӧ[n JKK~մҮ ZZZ'O޹s w;v~M&LpZevjݺi^`w}ѣZwH==+WzxPkO6> Ѻ&ڴi_,--Z~111۶mrss;}kV]!5k,55A6dbbt088ӧֲkrTjJ^<<{lN1juQҷ:uӧ/_#ŋo.\(qt=S^ŋk׮{ǎ]tqvvaʔ) Hմ̱?VZ/xy##֭[+AcgϞ}ƍӧOwaU?駟Z~|իW?~ܷoO[u׆zPPP``eA)tP[[k׮krTjJ^W@MSNVVV?cÇ9099c˖-}5رUtttcz뭷7СC Ho,ٻwoA}w-5k>sLJKKPcuuu\]]߿k׮˗/>jݺ_ڷo/dŕUU]!k2fkk렠 HP|뭷?"9~MA΁Z!=c- ;TK$}7'N|?+<<\KK5jڴiSL)ڿdD"ѷ~;qC奥]rE`AJKK+Q$UyyyII˗/ ?~<33ʕ+?cvvv U622ܹsGMHH:uj=ӦM;{O `999׮]裏^xzۣG3fT:Ӳ2E'O,]4))ŋ[jUv.?C_R*,,Lv_69߾P큵:Z]C4H$jIIIbn4>|˗?>~{ѣGgϞ8qC8lٲE_ꚐP^^|mۺ=zT6!((bgϞ6_|a``b //9sߎ?w޲m۶ݳgOM I;ѣC9nnnUڵٽ{߻]z+WΟ?_J_EHzxxif̘1׿444vE!prr9r˗/e#uAm$r}kuj_dgg1wܦ\Eve˖}WK.Uv%(((::zJuҥK&APձc\]]Q}+VHHHa *? k<P[@sLzU(7UM2m}jYWUy0~x++93~ nևn ^7nqf3677r3()guUϨk ZZfǏ,XaÆ˗hii5%%%}*v%˖-o u|$gmddԀ$X^vء ZI&q=ǿ-[j[:((hРA666/_.((ػwmllBCCsssӲo>k׮I_ٳgFFF۷_~ ~~~~~~ӧObT-UQղ <}>011t*ij nڴ{#GeС͛7ke)}+4CM4o=o<QF;vV5KJJbbbAXp۷MLL/^ܡCPA7ny/^A,/\+;;k׮gΜϟ?OMMݻ +V}={3!![n_Ɖ'שKOO^FШ75hNZTT͈#4#"P)VZ(;EPVV֦M̊k׮566eǏ/t8p̙3zaCݴiSQQٳg_ޱcǎ;zyyV*"pvyԗ޺_CRUM4i̘1 |']J_9=&&fʕ_ӧO_|sΝ;w2eʆ 95PO@s?|R)A.^ouڵVW")))33sѲ^x"HAO>U>|믿;w￿|rYYw޽b EJU$}aaaQRRr 9˽vϟ?gϞW幹2J]\\^{RA3޽{KKKv U^^3ehFʪ} i޽?:[o߿ cAԤ/LLLN|x@@yzݻw?~⢭mll,x>}]6yVZT_RU,[өZ2yyyd6lX.{_h@5Afcc'&&>}TA4D9;@?[mm ޹s' ߯9;;I#""udɒ?# V\٦M++ׯ73g޹sTڬ"*TSdLMM7m4iҤ~Xbڴi]w֭zzz}7n@+;CXdIHHƍ/^,ˢEBCC7m,^RRR޽~geg:u>]|Y'YnsΦ_Tg1hD" * mX@@=44)ׯ_OMM-++;uԞ={FdKԓ<~3N8q֭ *koqzz ={ֿ׏=3ԍ􌵵Qn@m۶5Mu͛{ƍ7nܸƨ T֭O@#b"ڴmll@)a,£G"##O:dZ x3uEԄ1hI!Pӧ Rc/{+'}֮]1c9ۍ7j&gϞs $Iaa:zX,0aPA=z􈈈?ZyyWLXv%Kde˖W:""Gin:e@5Nx[nUvѱm۶Q%&&޺uKA #F@kkm۶1xԨQ۶m?xtNAA޽{lcc$,,v{)**4h ɓ';99"]rE__???_sI$yY[[oذյ{ߗ_rrAv 3g ?vXΝwܹyTСCgg7o7mԽ{w#GFEEIfv ~aFFƅ j RWvA4O!!!666^^^ rrr:sL||3ƌr۷o,^8---44Tc:3wL٦۷I$:ܾ}G رCWWWSN 0@Ԯ]=ڥKKm߾]jWټyKVX1yJcHdhhqFA$˫ P՜9sRSS͛'777?}ٳg===bqnݪfv "ӮN@Et4O&M1bDN<==o߾_v߾tRiiBBB,,,֯_-Lǎ[nu,X ,A0220aΝ;A?x̙3snݺյk׊iLҵkW555OOϓ'O E PIaaӧ׭[׹sg77)ST;w9r{LLLMWi]v^4zg yӧEeoӓ233Gmiiiii9|/^(xlAAt)!!Avϳ6` IDATg٣A={}^zu! gggxjjjǎ+ٳ􅩩iFFFIIUTSJnܸQ^^nkk+}"nǎ9?W[AδN:*6P􌵵ԑEBB? TPrroXXXW3119y䃿H$ݻ+rvRRիWbjjjߌ?sΊ{|;v옑QUZSkDJʞg\XX8m477 &~Cb9Axq9h3srr>ceu(! (===22Rz憥_VVౚF HII߼yĉk<{WN:U6أG~Ϋڵk P{VXX%˓H$ 000HNNxsL~>P4,@M^^^FFFqqqh"??y4swMMMe׮]*3gμs玩 ^[UmݺUOOo߾ƍnڴiҤI[bŴid+f3Mׯ<9@mxd wܹÇ6ٳRG%%%}݈#deeeܔŋ͛wMi4 @ e˖N:[jf͚7*+@ٴiӚ5khTg˗/ttt455ӧOGٶm'N(; U8qC#GTv022عsX,QYYYzzzǎ8@zz*M[xqcHKKg @cP… ¾ (; ㌌۷kNY4t ssG); )75$""B,QHw/@@43ВOTNX[[HKKKA@$$$>}ZAw6lYkkÇWÁDMvETg_*;FD@ihh8::KA?322ĉMܲeҗo@Mg?F^^ QQQ~ӧO?ooK]&}{n777}}޽{߻wO΁/]q  :m۶{<&44477V5 g %a1hJn!66ŋC yfaaaPPP"Vڱcի%ݻ[nȁ,][_ ݥ+WܳgOhh3g\Pg 355=|FFD"ccc۸4iҘ1cڷo'd}}+; Ucmm!*W 6eʔ?yE:I"##D]YIII_~U+?PkO>]v|Uffѣes^xҽ{-Z"gb ccHeЈڵkX"&&&޸qCA5:4666666333**ڊ`hhxʕGU%$$H_޿ɓ"HhQ17Y̙  80==~:tH$ruu Q~ŋKKKoݺ4KWuرǏgff\\CC?>>,+++::@ E44Cfff :Tz#}+M:u͚5ӧOk+YdɦMlmm544bbb^^^FFFqqquZ(7o,.?n``,PWvmdd tuuԔ JII ֭ŋyQ}P?pႲ4/<5g o.zRWvˢ"MMMeguQ\\ܿz맟~Rv[nڵSvfGu/_oUvɓ'h,N@k?TvƍzzzUڵk7f̘Iboo~[Xo>6m۶cƌ9~;Ӱ@:=co={pe(D" Jaff#G(2իW `ٲe}l۶'O9ҳgπzZIj8f,..N:!!AExϞ=422j߾륃{]k׮U cii$޽M__waӦMݻw7009rdTTtϮSJug Z:zZ 9sF,?<55U:r۷o,^8---44T9sťΛ7j;vD"CCÍ7JG:3w%KH?ھ}{LL]:v:zh.].]}Jm޼ҥK+Vcmmm###---eЈ'UV ]hЀ߿W_5H5HTTTg``лwoAJKK8`aa~ӧO[snnnSLymcǎ[ں ,8xW0aʔ)]vUSSgW@cSqpppNNάY@#g 6H(m@Ȉ|۵k7~x/$%%eff=r/^HIIqFyyXOJJ*((pppurrJHHϗT={J_fdd/U+III_~ϟ?vȑ#?s}ή)!*@MgYYY׿l|ذa'N?u-ɓ'E"t^$=|Pz`3^[[;))IիbXWWWVMMMrJ)^ʕ+ M6aEM1}}111^zٺw=|QQ ^^^eeeYYYт hii{aaaQQQ]TSSsԨQ)))7o8qb)էOk׮)6VWWO/^XZZz֭J͜9Ν;&LPTPPԩS׬Ychh8}}/ڷooeeell,{^Ç<خ]_vMZ<33sіÇEJJJRRD"ׯ_W[|77߱C 'O\\\䟲lnܸQ^^nkk+}W 1fcSSSNJJzX,խCaÆ8q?֭ vvv&&&'O|Dҽ{wCC+WT`nn%}믿VJ :4666666333**OYPE"Çҷ>Xuu2! ua"f1DSSsԨQ)))7o8qbܽ{EEE hhhxyyǗeeeEGG 駟^x֭[ |111^z۫] 80==~:tH$ruu ≯{GEEU;O>׮]NXGGHSSSA4"I;|BBP5񇯯o?"<<}ѢE~~~ͫC+Wi|t<00+009..N:4u5kN>=//O__֭[ٍ;v5US͊tuu,,,A:tχ RS޺u^߾}ǍY휙3g޹st„ u[ԙ $22'""BY@KrUggg''xegh^Tg1ԄԄ1hXͥ ˗EEE:::Py#F:uꔩP)mڴQvfGu޽[A4"GGN:);rW^);UӦMc*;@: Ǝ? @S}@3Xo߾&.~ ==FZ4O@3B(//owoNXGGHSSSA@ťkNA~=zÆ ݻwt\"0`Ϟ=EEEAAA |mFall>cSSӾ}&L'=)Ne˖O?tʔ)bgTv4iҤ۷@puuvիWt"vhtg1@"37_shfԌ@ BԌMLLrA4!I;qDzzA7nFDDѝ޽;i$hBԌggg,J@ߛ7o޿AZݩ:y5cO иZ>>>D"ھkgΜ?++ϯ}FjIwjJL 7b~M t]lloإKVTT>}Z__ʔ);ܼy BTEwj3gT(;w;&P($vM?&0m۶!!!cƌbD"wtt\`+W~gAJJJv'osa''[&[dduN IDATϜ9sĉ@_:tPShB'***ڶm K,|rTTռy󲲲>3DbiifըzlْгgOA/_~9s@k;f Q(|?`hhx={]W^vvvoncƌQAX|ŋS1hAhNzĎ;nذAԜ^zqС׮]5Ps}]k۶m4PѝMLLrA]ov3v$cPGJo>h \ޡCŒ;vGEE婮ի ؜>}Z!%%T-22rgΜQ7g]֭suu>|]\rРA=z3gNvvիϟ?_wzVH_84ٳg?~+???==]u}ɒ%/_7o^VVVTT K.MMM]bŠA4Ͽe˖={ 0{z611ĉ&LC=zsΫWT\Q]>cD")++KKK+((ݻ ߳gڵk{eggo>_~eDDG4?fUXݜ7nT*>|BBBuѣv?k֬K.Uo5K@W>㢢rLf`` vM}ƀΛ66V.?(BqiӦ -۷ojjjNNK/TݭڵkJ o߾tuu;*))iΝ+***((nPdgΜ?~|K>jZtg ŗ_~)vM¢O>:u;r파b5r<$$dر:pȐ!G?t,BϞ=;vJյW^gϞ5;wT嗚Mzzz欛4((/999+++ tɪw޽v}.ui@+;5cwJJJttA4Т\r%))XPXXX J̙;w۷O}}ǿ[n 0lذ7onٲޅYWAARHKKۻwo֣G8p௿ZhQ^lmmk ߳g϶m45cЂP3Т,Y䩧rqq7mڤ.wiI&;'O.((!44̬gϞG~WԭnZ׭[7nܸ/^8((fEbbbzabbR9վhH Z!M6888..n۶m'O; Ұaþcǎbg'[ddѣ0bh4&&&rP @{[n-..;]s666+V; @ˢ;@+Wt~;KCegg{{{׺6o޼zhGw:Ommm_W\i,@;@4ԌҝqQQR,//;ޛorI5ڵ ;@;5zKPٳG P~~ @S(,,;]cii2nܸf^kΝ:xzz޽[fά,??ۏ5J/^hjjHNBbb>z{ĉf@K;5c罼M&vME"PUU%vQG-\o߾x9cccmlln޼yF_H~ +V?9sV\)R.Z j$Heee999M@k9x`ww3gΔر=***//O-77w嶶 عsgիW?^z :t!,,,---,,qɂ VzsZ588W]W*ׯ޾}{YYYV|7bbb>u 6<3ի={ܼJ%tر_~.]n:WWW ÇڵKunzK]O77+W4GsήS8yR|UoGy֭oVrlٲeJ2..L݄gZ6& 4w.^aժU=ܩSŎ8w^رcT*]]]===~7Uy r?K.<< illz{9///}95_B8r֭[m2V%H233Uog\ZZ痜PSACZ4LNNV{kjUoݺU͛7kUhmx<_{kygJeAAC *ٳo*++ˈ___===:h>Uq4LKa:6]Hqݻwoʕ;w^jUAAcǾk-Zoz J̙;w۷O##C._ƍNڹsgݱW\IJJ*++366V(O?USukpĈ˗/vZrr Ǝ[w݇:ujxxs&M?~N JEZZZñkfЭ==zkѢEz5[nP[n Ubq$%%r33!MC ]]]gΜrʃZZZ<$JBS%NUgZFGGO6^XhQgT&%%m߾ܹsEEE~~~u4]H]v͛W޽Qǚ 2DZ^PP`nnU"XZZk555nQFi-EGGkAݻsJmӦv ߿xx3gF Bll gkk[o{,Yʕ+fff شiol2kkk__}_k111۶m777 {W]W$'O^tȑ#5tcbbkhhꫯmmmnݺqY[[UoA]Z4L(¢EbbbBCC_yz}k^56*+***//dbgT{w4[`A߿߱c^z}W~{Q;vܵkWTTO?]}zٳ+++۷o0hРMXײe^~eA>0Ò'0޽{V:x`ZZjܹs_}UAJKK;u9rH S*Jkvk`H͝;֭S;> 66T"ݻW=Z]kUUս{Ե>?;4T+5АJ{rZZZ*JƊyZA]C 矵[Dpz-566P׬|۶mڭ+J5jׯknuk~~ݻͫMgʕ֭[zfSYYikkk}Npssxxxl޼Yul?cƌK.γuҝ}ơ_|Ν;'N(vM̬O>]tblUUUeee~~v 65\bE߾}sss{ՆTꫯ^۸qc9ǏX~k۶mMgϞ.aÆ%$$1Ν;[liGr͛7XJ6mXf7 ם;w222 To۵koYfÆ /_޽WXxvud2ɓ' CXXXhEOsq ?u<EiiӦO>ڭa#Cݿ_s}ݻꚴ.r PVVX\u͸844TZ׌]\\[}OyHHv4ď?P(?}Ȧ[mܸ^;H#hӦ;SfUxݺuc@+;5cA޽SRR ~РAW^رI!z-Bii>:uJLL322Ν۽{wLh" ,X@";vLsA|||j]r#}RyLrܹZkͯ?T`ccsYYlݻ@XYYƾ{bhqtfP('vM… *ĉ455?~xǎ oddT??3g^_tiȐ!5ܸqiڴi2%̙k׮ݻw;;;k\򸸸={nٲE͝AXpa>^_r}||f͚߸q!sn޼yO?t.]m֐!OZTTuVgg]jtK,hh@3f Iu1߿XaÆꙕ%w͋](&&f޽G-!!!88O>qqqKLL9##o !00p˖-֭[W]wttOC>itt?q6m]ꭃU-ZЩS'=---O~ܹ7ow̘1g9;;O'fdd|:uju]~OC>j+11_lCZbEzz& hDK.;@;5͛7߽{7 @ CCC-S(j...j^cmԂ :̙3cƌyoܸqĉcjϞ=ƍng?SF*))/Ri3cƌݻwuvm߾]CȚ1tJ IDAT'm<Ë:}v*vvcڵ3wȸwASSӐW_}U -i}*7mڴ{nccMכmhf;@ ڲeqhB5c:*>>_LNN ;M@3ӝe2\.700;=x`Ν~᯿*˻+O-^7T(bkJŋryddYZ xZΝ;&LJbGbζqYZg :|{wyA-Zov=\JRznyjjvc _~eƚ?nlqq9skllز2Ξ=[nT*=zvc߿Eyzzj7޽{ڍH$ڍP3#$\.EUVV֪ڍ}[ee_떗o޼Yu,^Xu7Nuxyyi@i}v h Ԍ_Ǐ_V\o߾ \rڴi/.ZZZ<==]mڴz]LvI>΁Ʊڍ}2EkllRtرڍdZۦM>}h7\uAx.󌋊e2YҥK ժh֭[G͝;wbgS L6qD,]ki^uB$<JJJ.\О=zػwٳgGQPPj*{{ŋkV޽{w;]#BBB(ԥ;5cAFFWۯ_Ç?~_~}4!$HAЙsPf I]1iСgϞ=zѣ&A 6lذabԌ>cL& ]paذa۷;} t)11ަzȘ;wne2ۢETmmmmVݭR"|w/_wtt455,..S+ҕ+W4Pw\xԴ,??ۏ54bڹsc2dHvFuȑN:5-$@͜93==}֬YbkBCC.\(vGwj[n{ѣ"pĉ?~cǎC 722*̙3U/]4dȐnܸ4m4LVsܵkWNNݻo򪨨XfMff槟~zTM ,\f6WWW (bccmlln޼y&RUUUQQZpa߾}s͛7k޽#ZCyrY.)..޼y.KXtfrTUUM6m{ݻw\\ĉgΜYZZj===TzmbbWdddk_%92o޼=zd2OOЇ ;|p@@@۶m{hhRΩ"Hh`uֹZXX >|׮]VZ→._cǎtR x㍘Ç;99mݺU!Jr۷o/++N9x`ww3gԜD*%%%;vqww!::}MMM AXzU׋{}Uu8}:==}ƌu'$5kTWiӦ̟?_մe˖={֚D*K,|rTTռy󲲲&Npk׮>l\\\@@@㬗.]bŊAP9rٳ~^>Ɨ%w͋w#GXZZj薐'%&&jVIeݺuVptt!ƍ$JP4qΝ;M0رc &&&\oĉ?vC>rJ77̚5k޽խcƌ[0Vٳv^zEDD۷zذaqqq ٳ'88֜_~eDDGMUKc];5㢢"RY^^.v^ӧO׼zylbbE:uꤹϝ;w;}3FuΰL&ϯz-TK;&S^?95%%%w?SuSU/oݺUYYyŪ*jfAbHjjjIII^Toy晔"z6nԜ^zqС׮]!88xǎ<8x𠥥e:}jjRy Ic#.:Ouч~(v<66^ҝqppB8tA?5/8p]oܸǧYYY-[LuB #F[:޾SN5JCꅙ?:t9C%''geehyzzVč2855Uܹs^^^2LVOOرcT*]]]A>|xiiiRRR\\\PPPӿ{eiiyٚ5LHkqӧ[nbT222rss@טѝq!H6mtǟ9s槟~ /bbbԍG4qꭧ޾}{W^]ti*„ O>ۉk׮7n\6m$͛O<I&Tݿf !XRmaaVz=ׯ/--޵kCZ 1441b˯]aÆcjT* 3gNrrܹS]JիO<9ys?w߿믿޺uKÄ}JJp43jMbСgΜ3f?ƍ'NhAٳ?ظq?lbb7~zjԨQ%%%_|T*k޽?5k&O[57%%j̙:tx׻u:YC 5#%%% !X5kku֍7/ z_0aBC~Z ;wnXX،3^%<<<000<<\.ׯN'O0ɩ9###'M;XZZN<@󄏤CDg&;v}hi͚5 ,?>/vF#rANoaa!v`fffk֬; @ˢ;"55uo/(vu1,,l޼yD999ڵ{ꩧ/,X+V:t ^~]ǥFMݻzC Z]gw߽gΜAP,\p馦bIiiiIIV###cctf\TTT^^. e˖&M211ɱh۶yrssյj_eggkm׮Z:wի.]RڣGu.]JNNVڣG~k=~o߾Z;vL]A ɓS:dȐuޱc֑#GN4)o޼Y]رcCBBԵܹ3::Z]k``ٳյnٲ>P:eʔ%KkݸqᆱuƌZ׬Y`uյ~GW:o޼5k֨k'O ЂYllAZݩ߿NJHHJyyyW^zuuO5-[h]ڹscۧ#Gh=ɓj:ujj㏫VRZYYf|% W333 5k׮ǫkP}YYY_֞={k᯿pႺV c222Եj=B2RXXA###\… &*((ȸsA### wfS3V111366...411円5( 3XZZ:;;k<]v}Qתa ~~~Z5l2uرZ5l2Vjۙ }]h_4(22R]O?a!Cbccյj#GWڥK&0aZA5۵ka)S^~euN>_Wתyμy͛uO533St@#dnjM6ZJKr><,{{Lh6m>}i>#@FMlѢE ̙3=wRR<6 :_shfS3drJu8::Ɔ1-ĉ@Ν;W -Mٽ{bbbJ!CN8!v"ζqY$77ʪm۶YZg{{O8ġ@;uЬ͗-[&v 㯽3ԥ;5BRYQQ!vM}ƀ΋wqqYxALn:8S3 R(G;&$JӣGh*999bk CBB&O,vu=*%%E @3ӝ}@P3fF Ԍ2L.hT tMqq9sLLLвH@ݻwO.[ZZ*J,M @q=:Ԍf Ԍ JeEEA92k,5ƱbhqtfP(;&vM… ?A4⌌۷o100 ;@/vx^^^ "77W,D"J Z>c$@k͌1hA@3ӝe2\.700;&D1 y/BzzL&;]SZZ:k,##׋ePz˳wY,??_,- gS}V5cO и@;5BRYQQ!vM}ƀKJJrqq:uACCؘ8S3~W EbbA4!==>}xzz@S)))ȸuATk;<ShB'Lw@5cЂP3f;gSrT*vA)// 300ذaYZ xbLfbbRTT$v>P1^ԌҝqaaR;ٳg]\\@H؍7ѝ+P(N8!vM… ?A4?S t~HH믿.vG_*** IH$A3PLt̨xPLttljSSS\.JO>}G}$vE>OUVV|]TvSѝ}#77wǏOOOW]_d˗͛Uogu3iӦ̟?_մm۶C9;;/X 22r˖-w 6:ujů[vvE``[\]]+mbb'&LեKb?$|:~#E) ahs:M,NZ3٘L~*s)6E,454P꨾SG#p:|ޟ]\|8g4ѣG٥ &..n֭￟PWWFUUUU~5kGdnϝ;ws9xڐGh(""̙36.Pa̙={4444iҴiilc>$WWW,VVVIII;wQ<9++pʔ)Ǐ/++QYm*>6̙3劏S\ܺuK.7 yzbcccbb---vwAb /Bݿ曟~IBnl覜GGW^yE M6mnˌҟ397.99ӧO@@ ...bsvnQ8++KԩSnnn'0T*U|D,Yj#vhxpBIlʪ PAA1c~7[n;.ҟs>>>VVVG;H}gϞ8qbΝmllAӫW_?//oҥ355uvv 0˗K$jN"G˗/aggsNG\.H;ĉommm) o߼ySٳꍏaՆ4h%AׯZ` Nsf>'Ma5.Ϝ9cbb"v-BuϳuP]]… 'Mhٵkŋ_}U333E k\o8::nܸQ%%%8~ApuuuuuU|M]]Gqm[[[ Ahwܙ[D"J ׵kŋ:tHssL8^|AUyMcttt||,--5tKLL زeWJJyyyGwǎ|TT.noo؍ 400غuc{;Tsg6uR-ץf!!!xb|͠ ~P<:11u&d2Lݻw!--M$&B=4ߛzС^ziiii[o[݋y󦅅Ο}A;wʕ+=:vX ϟ?_V6miIIZR422r~~~W*5Pmرڡ4L4T v i~PПsƭ&((RKz_6&%%Wٳf͊>ʕ+er֊õ a횇577S.]6ycǎ)?=zK.V3uTggH $$$ 6T۶m؀Mͺ3n5VjneeUE"l޼yʔ)fZxqttt\\ݻ۵kݛp@aaaffTnJJʢE:tXm۶U{*wΜ9cǎݲes֯_?s̆=׭[Xs]]\./))z6ma5 OJJ:w\fjqθd2:&&& ;?>==g„ 7n8|34oΟ?߰Ƀf͚ձcǩSVTT|y>>> Rfԩݻ5䉌T[||ӧ]]]?#իW76lذI&=|P>044ݻwPP+WTȭe Nذ5L7/++633kb <%ggcǎڊYQQСC;t萙)vfuuu}f|xΜ9nnn}ٴiyٳg7)Ν;:88,_<22rǎگ[~~ͭ$77WSi-6lׯqß(SOjkk[/]$OItA:dnn={lm رӧ7opjEM< sss/_,vzhѢEAAAb-4ggHoooPظ]vbg!sTR5{ ˖-ޘϦ\011x𡱱Yt3.--R, 琣 bobbbrAt3'Ma5.=@k٘d2TVTWWpI&+ZvehhxW_}Lh```hh(Z.7nT;EIIɁ?>`A\]]]]]UGh87|SWW}#Fܾ}VCgA<;w&&&4V"HR++aÆuuŇ4O„'%%;wN%XNNN]]Aŋ?z(::H,:DwwwoZz=_k6z{{߾};;;[oܸj۷Xd7nh3mf͚5dȐ>}>MEUWWki``0}SNZ1bS"z?߶m\.;nџqΩ3qz=AWV|~c'?pn[lqttJII9//ȑ# ر㱅(e]h``u;vlqqqiigϞmZK5CBB-1@3ҡ'9?+d2L&ӦgAHKKS-I УG:tW^{ZZZ[oֽ{|||n޼iaag}0|pAΝrʣG;VWMFd`jjZRRV}T*?d2sssT;vv( jzagjqθɂ,QXG_jcRRm߾}5L=k֬Y[[\JQnH.+a8\;h Ao߮yXsss?uҥn'O>vѣGt2x`>SNuvv0]MMMBB°a@m۶ ؤڬa Ќqii\.777oտ%22rժU ۭH$͛7O2e֬Y/666۽{wv޽{'O;wneeȨo߾~_w޿͛;w<~x#8p033Sy*7%%eѢEEEE:th,OMMjm۪=;gΜcnٲܹsׯ9sfÞ֭kxN.\zueee6mjj Nذ„'%%;wI_~/^466; ]]]mdd$vݢ?_}U++H&٩cbbҰKJJ|||&LpƍÇϘ1Cqqq[LL ;аwAAAW\Q}"4P;icj?jԨΎfׯ_k8\Yw7oƂ [y?pر1cƈرcb=׾}Ғ^'@M ˗/ Z5gFAA{e˖=1z1&d2TVTݵkN+1zܹs<@[dIeeƍ۵k'v?3 ,,,JJJ|a x<[\\\.\p6ɇ~pviXծEa[tϵ}@mHeXs5k(333;w\/%h9l=ͻZ YK_U \x.^***8lذy敗}YlllLLɓ'---`+MMM L,''IC*SSSw}ԩR//YW~666nݒ卽aYffҰkXjҦ;xzD:sAglnn.ɚjllx)777EQ**{|xZZZ1mllfΜK/;~~~ʯTCjD{j3ףa oװ~O@q9;;GFFz{{ 2K=Dѱcǻw؈@p_R4R\nnn.6^l(yFck%A^y啜CG,G}TYYinn.vݢ?Ϧ1bɓ'O8K/@ |ryyY.\߿Y@ljϘonnn.\;"HAЛf t 5chMԌ|%4C7HOOaڴi>>>{+++ڿ[nNҰMdҁrss_x7˗/ *));nџw}w!C4?+kkk| &ܽ{799ή'RZbСC[b'v#G߿ڵq߮]?yyy-^Xq}…qƕqFϞ=.\hjjvׯ۷066AǗ)=zOqV]]G]~}ΝR;nuuuZZT* a۶m'Oܹsʕ+Ur<00P>4! zk׮FFFboݻm6 ?4x>O͸}ůcee7ƌӶm^z 4HsQQQxxx׮]Z,سgG߾}7lA>^zI'##LQ]vmff|׮]^^^۷4hЕ+WP7}ݏ=!888;;;88ȑ#vH$/^Tn…&Mwww4hЮ]ΝxJ?*MLL _k7pttܸqڜ%%%XlـLMM]]]A}ݬG677ol@ ߴiyٳg+(.|}}oݺ:sssU?zbܸq###džocɒ% .֭]*;v? _urr W^} J;w477wvv_{7|tyySLq.^ػwoǰ*__ѣG PXXhooʔ5kkܹ[jjj֯_?pnݺ uuu666'Nܵk = 7\./}OOOwҥo׬Y>%&&lٲ+%%E>o޼ӧO+>ݻk׮ʩnjtmmmlr P׮]{gggEѺ^;;Ĵi?9cf?b\\v]qÏ?xӦMW5jիW?ީS's_yȑ)Sۏ?,''G={~7 +YYYŪ<`+**8lذ3gΔ]illlLLLrrrʮbT{ySRRBCCҭ:u͛7x涃_;vg*G*<ϝ;ҵkM6)ۍ{Z;wRRR.4iӦ9::?^ ͺunھ}{7ٳ5`oݺJUUU {=ztxxիApuuH$sX[[Ty'OTm0`=YYYNrss355A**{\!#z6@dd_UVYZZjhOOiӦ-]488xѢEy]tf EEEaaavr FR?~|zzzIIτ nܸqaeZ~-&&)&&&<5kVǎNZQQ_(_ܶm[~-003g-^K.^|Ɗw^rɓ'SSS5ITw%jК$zÇ:u*##cذa2`mmmmۦ|?رcsxb$<#G8q"==}Ĉbg';@177dRiM6V裏Ú˗Ŏ'IxﯬҥA??; џs-{bѤۈA^l(y4hV]v; f @@6b1>Ӯ}իFFF?65JgtDo.r\*E[ǎ}ĉ:tW^yE,ZSSSo>vX++++{Cc;̙3Ovss;._N <޽{o^ Zʝ;w@߼bGES3ظq,ABZ5c[@kҟL&Jy6϶-[7N ʕ+ݻ'v"灃o׳gO9g92a ''0޽{[zWW'1;yN<=jƍ}7'Lpd;;VtŊCmX+oK]]]uuugBBB֬Y#v 7ƍcƌi۶m^ ݻG-ɺt++**ѷo 6Sꫯ޺uѣv uߗ8{uzݓdٳgK,駟g̘o7ֹgܹs_~K.[N윓#CBB͛XFpqq/;vlUUՓm={ή׿5d ;x9Ǹ_rEBtjVXy'j-^o;}o߾[@9cOOO++7׀aaaUUUGÇѣG٥555qqqׯ8p`n:6o׬YͶhΜ~NNȑ#5 J???//ӧ+Swݻk?#@1&jYXXZJy晚^z^˗/>zBCCC__ߐڻw&$$4Ym*##ɓ'dddlڴiƌMZ x ׮]qwwW=<<յIۢ9srrrRRҝ;wBCChgg؎SZZZ\\naahՅ 믿MZ=@kҟL&J5ի|}} 0eʔKzzzfggWTTuӛ7oV!Ɇ&΍*::sڴiK. ^hQSͻt钍tAGդmќ9444::z&&&ݱzlllfΜK/;~~~ʯTS'ӧ=<<:)@ܩSYjUPPPaaAtC(((h>e˖iӦnݺ=].5P3vvv׮];&|j%v{; Tq;@))))..;o~-Sx;;}f͚[vQ Ejcƌ@=KK^z޻wiqpp}{I@=Ԍ5Icƌ?~|Ѣh׮qsuc@ݜ433344f@=_W^ݥKQR)+))杣?;wDDDtI,:DjƪN81ydmzq322211ѦE6<@۶mMMM}fhhhff,Ǘ4|˖-d$W\|Yt~֌ETQQQYY\5qj~wީvvvb1ZRcccmE1JzÇv*//fjʕjwiŊAAAZӣf Hzk?aٳ۶m+J*_()))..$GEEFEE~~~(DDD8::ڵK MDD֭[;u$vݢ?Gu…0@,O ם;wVA1&jZI^jhhPL5ϳ۷o/ @W_} +W&v&<<<((֭[b-sbG8:tA,Yҹsg9g 9AQ35c4#ԈbCj?6r\.:}o߾|@344,//^RRqٜD̙3}ؾ}#GdIP1bÇoݺճgO]Kaaacǎ}䉆NNN2,;;[JR7jP&''We* WWWSSӴXdee?~F###__ ={޽{ڵkO>566633355}ٵ׼yM6F*,,.a-~={h?Eun@}f ՚1cիW}||TCCC'Ou AAA:t7lPi^#FFF]vP(j _ 4h„ SN~VWV&;JѣGϟ?oӦY@}W… @۷/??L,:Pu__\kI@=ɹwYԋfffKnjqoj̪U+uE& 7BGjАhd(&zshHS3nӦ\.700:E1 {~aFFŋ@߬\2 ͛R-R3O:m۶m۶)衸/~G]t: џs9gѱcqa${{:/ !!a:]i&E )::ZرcPhd^fiaaqhӿio5Z?gɒ% )jAh{`+V_@]f uxƌ֭֭[AP(aaa}quuݱcӧOŞ!!!oCRR ;v6l\.ԩʕ+ѣ۷o 144sϞ=Ε/..޹súu n}^u2 K.o_niiY^^^\\lbblf駟+CCotrZ_paEEEQQQ֭Ϝ9S5#BBB4duQvP55_b:99_rΨf\TXb-Gu ,x,ZSN}qRSS'uqq9jjff۱cGooo}z]tsNYY z:p@JJrԼcZ[[[[[9(==]<ڧOСC[:u533Sͭn|-rf͚k׮ҽ{veUsfddXYYiꢪPn{_+/%EukWk׮ڏ2-5cMqjjܹsέZjĈuVϞ=5_RRqٜr|GGۋw ) ;;;'''L-v[ _kߢ7xСC[n1cѬܹ|[u'5DU횿 _}њgy1R?n߾Ef 1&y^^^˗/OOO?{lDDĤI4_rڵħOj\XXP(\]]MMMbccv322]`ٳgݻo>AZhoٳvˬn|mhf͚|ܹ_m^{~_ꢪoLL̶m۴\|њg[Ň+{oZ-f Ijmڴ 'NpO>Ds⠠:6l<44tC Yl_u=}}}rO:%&&& 0a܋M>իcƌ177W]yvRmT.jZ;_YPu3cƌW-?[->}zFF2g@@@NNAtC<WVVfii7ߌ5Jm>}DEE>˗/@8;;_p : џs _k׮Nu5k??_|ECBCC1>C=\ޥK[j.N<_oTWnnkE5#""tr 1e) m5kʪKKˬ>#54soG)ϟKh[[>L ͧ~ٵkW9g}Zbaa_]}%hviQ3D@#SŤR-;/YdРAGǎ:t޽{=ڹs#FݻE;w#F(Tqnݺ͙3UV5BO?---SVV6sLe%KT'R>@)CCC <{l펎7oA*j]v/~]k4tԌ۴i# @w)>}رӧb+ ַo ;wtsssppXn]AAHHțojgggjjgO```ZZZ``AXzurr ZƍPi؈gΜiӦxZ9sxzzƺӦM;wnIIɟ -[400P~ԢE>6,,S}d2MPPЕ+W~W]9HD*[[[/^ڵk.]RNwM6>>***//O EjZ׌={v+Vۿ͋U~:~^zΛ7˹ϟ?Yvm~tr})vtt_O<[nFFF'N|QNIM֣GS@.lݺUǏΘ1֋R/3zJ=srrApuuUmfggk/BxxxllCڶm[]m/-,,,--/]~fnʂrƍO>ݼys=33ĉ n޼YҴ܇3gDFFh5]j~o]\\Ο?/Y>}/Zjecc7vXkkkkk#GgAP}2qbb^82Iz-077sNYYf͚k׮ҽ{veʏj(%\nN2 `ee%©STŷ]v՜]=!!sΪlbcc#i233Ogdll*=w6gϞ_秧:ѱ}GB)^RRqٜe6CC&yJþfffںu!Z,J) :E]vݿjc||UM2ennn׫ZxW*]ۺukeSNv{ttmےA(++on޼)߿ 6mOqƉn%k?;џG ϥ@G5okgϞ4iÇK.ׯ Ξ=[^^~޽OPPVU\l9Z111gVv֬YΝ{UBBBUL&۰aÇL{-ZT{yyM6D_ϟ_x>o :t(//̙3sQQQYjr͚5aaau2ZMulmm.\(u&(((22ҭ?5cggg33L_;w0`E- www8q… ?GK. ۷o˖-$ t`yhhɓ l2???G3f̸zIvW^3fU^aȑIII=~o޼y1U𘘘}ץKΜ9i&oo+ꫯر('Od.Y%?C gϞݡCY-瀞zoC,nǏ:H-YZZ~7ϵmBS߾{SNݳgY@9ch֯_ߵkwyG @ݨc`(uK]tٺuXfkrss]]]+5.ZH< .YԌ!Ͻ333ϟ?occ#uP{EEEyyy&&&}zȐ!Rg!<.jtQ3|k׮jV˩*.\=ztǎ=<iiiӧOa/Lj*www;;;7nh-&=q,,,d2ٕ+W*caaqD1((hǎ֭;z3g/_#<<իnnn ߟ3g·~.BDDCDDDVV۵Om۶433ҤoV<<<2G?:3;;;##c„ Ǐ{nZZ6 y޽{ vhӦۼy曛7oj3fTTԔ)Sسgm۶isK211Y|yPPPs9997n_&t |||Ν;W< TTTJhdj]LzWXaooϛ7/66V{ehh8o޼˗/><&&fڵҥʕ+ۧQ|=ynݺnw IDATyzzN8%6mZ= N*>#T|8###mJ3LӴBSSͶhd?:bZUNN .-<<<66СCm۶-..ƍ :gff8qW__͛7Pe]ںv=gΜi``(n›oYuZl EaaaMc5chHԌ42.&O|rǏo#hժMRRRjjj^^رcGYTT$AYz:p@JJ$ݻΝ;eee5>|XsT{fff񱱱;vlMV(odee%n"m׮]5+!!aҥqqqݻwܳm۶sn߾=h ooo ޲eA6mZffɓ'5?k,e]ӵihh#e ?Sաjuru5BԌ!OT.7k?+PSSSŷΝsvvnժٳC:::oȑ#YR({;/JJJ<<<Ξ=,t4KҤgΜ lmmeiiy=/e#F>|֭[={Ur[4oR@@@[uڵU-,,4(--mʔ)ׯwssrAh߾g}ٳJV2[LM4ۺuke]SN9n8++ݻWwEEEMsqqE>|xFF 7 jj͚57nܐ:nџ u&u7o|gFDDL4IÇ㏥KwgϞ-//w^J  4--M9pecI^r-fee?~n8|r'''ѣJKKo߾yfmfvZbbӧOLMMNh!!!WS&mذSLIJJJII߽{wxxx-[MVB?fw]xqjjjQQ?ӎ;9Rȇ;snTTUTT'''{EEE> l¢#Z}TTݻw[f xֆO8q…|K۷e˖'=Kjnn:y!C,[Oь3^jnn}\{APPAy7[vtt?~ᆱAAA:t7lPujEMԂ 92))ѣGo͛7;*￯_tR-[,((2eJƍW\\{i&oo+3;vА'$$D5Fbbb{xzz>yD~sv/k&[# >6@xX %$$$((hٲe׿jLǏu?!N@So:uo;p4qR4k׮I 7uAABx'h^ԍQnnuk׮m KNG#1ҩSlmmO.ufőOacc#ub;w1uܭeVVVӜ]r:|ѐJJJ233::7vX#"h"OC@5 @?P3DjАfljj*˛5ӟh,wڥS;99EGGUq…ѣGwԩS ޽{BBڏ?~v̅ ݻUVK.0xŋe2ّ#G4'ͭR{uvss|-N>">>^OO3f^XQQѽ{uUͦvp 3do~7{n7k׮ HOO:nџ kJJJ~~A49K,4hP;vlС&&&{=zhΝGw-Zcܹ˗/1P͛7u6gΜVZb{ˋ0 Ϟ=۾}͛AY%K汳fڵ[xqYf)[N}\]]wS~ժUvvv7nܨBSHϛT_EZ[[O>]P;;;SSSOO={VVVNEEŜ9s<==ccc]]]}iӦ͝;OFFF-[(?jѢ|`kkvG:thѢE}mժS@@  .***6mtwj,E$ɴY̙3322*{yynoUl޼y„ ڵSM{2%&&dܹ5d5隱$^ɓΥ_|EvvM.^#pE0{׮]ѣGAAA;vXnѣGϜ9|:W7{^:444""BѶmۢBBBoQYYY۷o2!!s{rVv+*裏ګo߾J=322&L8~w殮i7oݻPm6mڸ͛7oy6cFEEM2e={Tݝebb|򠠠RvCC>@yXP߿֬YuܹsФ[@ز}v##s3FyOyLyuYY6W'''''={ŖvEGGWTThH|[)LӴ4mAxyLLѣG+W[j;mTٳ8q^y}_OM֣GAN:nܸ[TU'O_xzzN81...((R [?ϪNaffV%''GWWWFmvvvuQcccϝ;׶m[ v޽qƀaÆ}w뜙yĉ+VyKj>:qF񵉉IVVJ3g OTg̘ʕ+{޵kWΝkMÇW[C(r-7nTjd>n"ccc;v-9555//oر#G,**JOOWYm~o]\\Ο?w}޽w)++EU߫W/++TSVT&-QYJݶEۮ]j^WBBҥKw﮹g۶m?sݾ}{РAne 0mڴ̓'Oj֬Yti͝U?zH歷oٲe̙ȦAbb\.o㔔[[I&IYhQdddϞ=[fdff&kӆp/\<wС߸qGBBaũ|}$ U$ZstG^^ޅ j#F8|[z/c9'B!ڽjw?wsu޽{_~֋P;4%%%~~~gϞQޟ@PV=vjkk~x  +JKK2eܴAڷog={RZLEIM4ۺuke]SNaܸqUC>{]v:u_eRuӧO333oݺ%uf̘1gرAtԌkJpZR=y&nժ8O?Tu( .@N:eϞ=Ρ5ڵkO>566633355wgϞ-//w\^6j޼Ϟ=ƒ111'׎=:..GbQ 8099Y* WWWSSӴ4j궢+xyyU)6lp)S$%%޽;<tP^^ޙ3gTFEE߿v1h͚5aaaƍk֬ߘ1c,,,V)FՉ***󓓓{「"gi7:k_:5ݚ༼~G'OԩӀw^NSQQ#p՝{<@ԺT\\ԡC[[۟yÆ b{ppopp\.>^|кukGGǿ/3f\z<44tC YlrnmE%ߛZ#G&%%=z߾yc4cbb~_.]ڹe˖SLСøq㊋wmddvM6y{{_W_ݱcáCjmȐ!ߕ+yyyj]Yuww?|EEܹs;u^ׯu Py"322;7ׯ_:nџssKA溺Vj \h$y,_Gbj筷JLL}Cdxyy>|СCRg!14]Ԍҟ6kF!FҥKRgWrrry+++wΝ;oرY#B)mll^iӦu֏=: ?hd;駟J@}d ͯf =~!Q314$CSSӒfͨzb322vC6ltҜ9sCf|U#hԌ'lllN@=zf StQ3pQ3Kg\PPP^^njjڬp@q{ϟ?ٳAzzY9s0cflggܽ{W_: z$ `cc#uE&effK`o-u]$ӛzԌ͚5dRg [=4$jtOT.C@FFFFF)蛯: ŋR-|XQQѶm[ "}9c)0`Ç/\жm[g1bĀ[fܽ{ܿ]vRgPڴi3`=zH@=!2 IDAT~ϥ@1BHjK@`x19ԌP3:14mV. 䌌vI^ٴiS@@Dg| #ѵkW#C'N>|Yt35ch@ӥ?5* o޾}[ ʬY"##y1@%2))|\.u&&&vvvRgP_v횓mee%uss@<{lG2L6eԌStt)^RHgg]vIGUNNGǎǍW%$$ >^Prww?vXQI~P3-Zv^dɠA56̑o>pWb_kqa-,X`Ŋ 3@5ch0S3n۶\.YB֧OWW;v<}T@kkӧ8qO2ʕ+ڏ&+ ַo ;wtsssppXn]AAHHțojgggjjgO ^:99IVZnggƍve2ۇ>>O6 OMMqFXXQ``ŋjkkoݺgϞ޽{W.>oY5Ię)O}ߴo߿I£px?^&MkΜ97ona9-ҲLshOOO__%K.X@l3g΅ SRRn/6j4A¢ Ծ}{ ׬YfT:bĈcZYYEEEM6mȑ˗/ RR }=q$O}ǏfZˉ'<<<$<ً/3i>uz套^7o^޽uuY=T*5n-1""GA\[[;p8777 ݚj-^`ٳgŃhIr\*:߿nn睜t3M6V2EEEZN$%%ٺ@7x =C]x6qhhҥKui4yӦM5jTӽ{ u̚5VZկ_?]'Т@џgSի777uM࣏>Zx mڴr |hkk۶m[]g?mۖ5{#F: @+?5cz{...Vxyy_ruua* ڱcGBB믿,3Jk׮߿Çk.\U*=3sGg_zUR[[_|9hz[3իם;wt@sgΜd2]xVOXqFAqqǎΝ[ZZzA ƀ75cԝ;w>C^xᣏ>?ϟ/PI5ch1>czFyȸcǎ .\xCh!ԌO@3gݻw###V$σtMA۷=z488xȑЊO͸P4]vZjΜ9_ZLxP->}#GR3P?5c7022u F@ c4!jҟ;wr9G9cy0c Lvq]Wf͚yQF:@?5ݻ[ZZVTT:ebb/:99:윘s=AZ-nx]vRAyWAZC]ݻwvvv̥P(jjj4\Y{ܑʳ!(-F\.߸qgΜ SSSA(gffd7oN4I9½{ģÆ S'$$;vݻ^^^Odbյkjjj Xu$&&=zBz,KKԏ>h_TwCImѰJRT*6Ix ]G~O?tذannnЊ9c9gggc\]]E֬,񢴴4//m;w>p?re-@ ʺr势򘬡ammmc}t y K. ħP5f |ԌŴu@џsڵ @QIqqq߷uzeΝG _,3?JKKMLLt@f <۷o ʑ#G.\ Ԍ@'OJN޽ުP;~AA%K `jjap+˖-H$МD: YٳsC yw^ZnqΟ?kgggff6pkغ5cϘ9g|!77733vmܸqwpBٳƍW^755U;ŋ wuD{{{ oݺU͝AxT8884+VTWW}}ߔwՎ?VWW?),,ܲeӧsrr4lLZy1hP(ϟ?a„$%>>h…h```dd(򺦦f2lƍj(//߷oߑ#G $߻wBزe˨Q_nmm ["H ---{nݺ-\omhB1o=v:@ys9Q=bޞ={dJ+NNN >LΝW\CZ_MMk!CAزea;t`]jѣG{>|qzѻwo9ު EcNͨ@1jժ햖 H$M6M4) `…&&&ѻwNHH066nh۷oO81((h̙UUUvډ5-Uׯ_|lڴfjG޷o͛7?ޥK%--m%%%:uj(ϣGTcm۶c ҥK݋X[8 b…]v}7=t7nϟ8q+v 9|.Nx̟??޴io,343'Q\\^144tҥa f O˺NZbgCOOOK._EBBѣRi׮]׭[9j*uFFxmffV|mU熶z_W~~it^ILL uuџs׮]u-AC844$99t7o&ڶm~z___~ 6tyҥW\ٰa֭)))͛iii1ck߾}cbb9|ӧ7*ۿk{{e˖EDDlݺU%%%]]]vQvnh&dF쳆o\?'|+B u &333..nЊ9cϹ~7k׮utt5jԢEw}||ghhhѢg?zhݑ...ݻw_nݞ={h???`,´izedd4a__ߔI2s>}̘1u+H8w}B3s999...ÇgggWTT(^gffܼysҤIvvvvvvǏw^^^mذaʑӃףG{:uJsBI  ^XYY]vFIII666~~~y膢=FiϚjJRV?r3Ԍ gggc\]]MMMŏYYYEiii^^;w|b7񢪪*((+^ IDAT++ʕ+rammmc<ָq788X Qwn޺uK_xQnbj ҟ\.N5tθ]v'N\zu^^^VVVLLԩSwߟzƍ0[[[##ŋgee޺ukϞ={\.www777U-::ƚ{۷ 믿?x\ 흒R]]}U-vP$ rEDDSgĉFkd;w:2}͛72c:f /XZZVWW:ehh/*_6*::wɒ% ,P 4hP/]fM``5kR#222iee5mڴ#G._<((HykΜ9.\>Z~mjj ]td'Nشij;74B!$$C>}/6?5MJJJ t^qss7o^uu?j۶muuÇt@ ؿi<%9g FCO49C]bww:K.I<@џgS 7n|pMMܹs ߩSe˖5h2l˖-@L6mcǎuPգGjjj t@3iӦjB? Ėx## fffb 뚚ٳgd7|߾}G4h Ϊ#|޽ b˖-F~΂ oOJAH$ᎎϟ߿Ν}???ͳ-C.`֨QF3ѣO2E빹ڌZTTlhi:vhѢm۶i3f\\\@@СC}vmXگ>ׯ1V^^]]$!$HAP(1gLC+W(~,,,|III-%%%88O>d^^^iii: nݺSG~GֶgΜmӦcǟ;w͛5'Z5ch1Ԍ=z(~ٳ殮[sO wyرcW^6l_YYYC?S{{#F0ŝQo?jhRq7n+ڌohhf͚r!@ZԌRT*u ͮJRϞ=e2W_}ژjmma܀Xctyʕ>SUa-2d [l|N9cWWWWWF}ɓ666VVV^^^ TUUIݻwZZ[ Mqy___;;;33FDDܿ_Yã,V~:55UClPVQZZa:`ɒ% 055utt ӼaEw>wcǎ=ٞ74r[[ٳggffֿUg H$ ( ]G;t萛Yrru6nܸdccZpx}qUQTTԫW盚tuuSXXe˖ӧOhSAlԩӲetB*.\)-^p׮]7oLLL׼v "AVXQ]]}ᚚsjWh`5044T)"jb+DP( B? Ėx## fffb 뚚ٳgd764ży󼼼SNڗL4w۷kh׮]CPsS*//߷oߑ#G $kAH$ᎎϟ߿yE yC-[u3g }geP3i9cDiӦdff:u*88?666n[oߞ8qbPP̙3TT"}w{-++~וW=z:Htƍ޽͒y+a„]vvvvf">>˫cǎC xƍޝ;wtGS;iCɕܹ1k֬N.+W_}ڵk?,h:Ԍꉌu.Ahٚ/nW|dիW3Ԍ荷z+'''##cݺu|A%%%ndddii cm۶m޼ԩSVVVbmZZ۷ϟ[o sxAVX駟\R.wACBBΞ=[UU6sN! nnnFFF~wA$[ZZ.hF|S5_ݮ51PUU٫W^z͜9?G"=??+{ 9p@xiB,ٺciidcc|`R555!===88_~=zػwSꏙ#GYŋݻ_vFTC򸸸nݺϵCu̞={k3;hnzR3nӦMii۷u4:[YY:rĉY"([>cUƍۿѷo`e{VVxQZZVUU啕u# kkkk 9ū:IJqF++I&ݿ_lѣǵkTzj*2=@kcll/oܸx׮]<011477Wڿjj7\\\lmm޽+ssszqkhhÏ=:w\zcФk/ر+r]AoNo߿Q@3f ysN911Qy155UGa[LC>}?y򤷷WFF UUUuzVEE ,Y2`SSSGGǰ0A&L0gn w6l??lCZ5Cfkk;{lq~~~VUU 0`͚5w>wcǎi؇vx|fffÆ 2eʌ3w ҥL&;qĦM¢ Ծ}AM6r˗);ϙ3… VVV DDDV5kX՞h M! FFF={垞ĉJowxx=x/By᫯QVÇ UҧP999O9۵k7u#G***&&Fyk۶m7o>uꔕD۷o͵|[FGG_pa˖-'O?/zŊ~ʕ+ry|||4[onݺ>@m~:{ӳ0??ʔ)>>>ׯ_&OhhhQQQrr;vXhѶmۊ톆g޺uQ.Wo W\tLQUje犊۷wQAAAZpppdddMWTT|g{&47n03ty湸:H+R\\lWOddds5m4ZL:9fOB眛Huu %ur-<811ի666Bٳw}P(^|;v({y6~Ʀ%%%۷߾}{YY̙3Nj/֪\߃:vx g}6tPeŋk׮]QQQCӉ׮]+?~){ʞ'O^bBJ?خj++ÇNaCUVV)fϦ.---R?UU|ʖ_~yҥ'ڸqo6ꀱÆ 322;v~+K$_~EPDGGd2qԦjcƌ155}ڶm+JŹD߷?~/+ IDATT6gǎ |ғs?KK_>\޽kjjjTZZZ&%%OQɹyIē:Ǐw^^^TVV*@ ><;;B8p@>33n /2ޢ;vݻb̘1"UariB\~C?;TjN)C FcϞ=5IKK KIIH wyرcW^6l n{{cNJG?ӹs犇ũ'Ê7<}tZZZnTOGu߸q#--W^&C7DP6<x44v~~8p͛7w5j(:= kkkfܸq?,;w|j;lbb#~##^{m}ݬYw044 ~G;wڵkOXcc_~yƍUUUŻvR-"":'NS"lڴiN ϣq'͜9Jח-[s޽/Xfɓ'i&((W_V|}}[VV׾sgϞ ilڴ?la'MaÆs믿 ٿ.zR3644,--y󦮃h =hjj:bkkݻ 0v^z~9s\p_+++ût"N8i&}͚5k֬J#F6ԹhOOO__%K.X@y+,,,::zРA۷OII0~mjjjcwߍ5W^j;DDDV5kݻw ?6336lؔ)Sf̘Ϧa񙙙~~~/rQQѡCT+޽5_gΜ߹}eee]t}t }% EMM/5iMNO]YdIA߿Ν;=z\*^[n#F8{}ǏF-Jvn:qڵG4hŋ(ss &(_jgg'0">>˫cǎC xƍޝ;wtXYYc'' 6)3DDD3)33O6[C Ts率ǬY<%&GϦnꉌu.xַԩ;C8011Qz뭷rrr222֭['>w}722… [۶mۼyS|}}F[[۴۷oϟ?!&&)&& XO?]r\.Gׇ={*""Bl OHHذa=zje[FGG_pãNͦa 9@ӟgSrARhv⳩u cccӿFbM ұcGFMLJKK{U^^^.<<7hӪ +M.;;ԩSC i233 $ڵk?CԮn```iii7m4eʔ;*%BEEEN.]dkk:~ppCxx𿏉ڵ={Fqʔ)׿A8rH@@իW=zdkk{A1d^^رc\"H'O6@ ϦVfӰi{s=tVҁR(fSP!i+:dE "ۮXKU:v!ZD[DMT:o3f455suw5;rHttʕ+ i u޽RÆ kkkt.שּׁ~~_;UUUWK ۚykϟ? ٿtted=थZl~ g|Ͷ$?:99R{ 5kVddy3PEE877իɷonnnnlltss㍙bM{kʔ)䅁AuuuGGǃjjjΝT\\lnnN'aM9Z ;)=EKKKjƃ L\,aH-[_x#gccCPƌCܹ388dnZt)AuuuNNNAAA #..N]]}ŊyKAqGVCC͛lҵ:]ZpO* ws9sFYY;r}1JJJڎA"ۅۚt{{;y{uuu_&Li&7PTT9sf\\ܿׯ_8qOQQQUUJUWW̜6m͛mmm_zbt:LKKsww';O<9/// @FFFNNoٺu+N#tuu&)//uVׯ @I&` O^hٳRSS[ZZ{^UUU3 ssIy)o*==`…*Y3wۍ7hmm3nܸ{d(++h/yf! !gTVV8~xׯP(ϟni"^>>>cƌQUUd0o߾̛yy 9חڵkLĝRo="˗߾}[; N̞.--ꫯ&NB"##奔8?TaTUUϟpB---QQQ#G411s9"##㭬322֎6m_lٲǏkkk^gEGGkhh,YQ@۶m ܶmԩS =iO X A)))FFFnnn,… ?սZ [*ijj5J҉|pMLLu%fsssIIIuu$]xQAAO?ݻfN^777wtt4r;vlhhhOS\zUQQq޼y?ׯ?6l N>}ӦMgEٸqc{{{]]Ç+**8cڴϟD=e啞7o߸q@fΜ<O4[bnZ`JqqqOsq۱B>%KL8Ӿa_WW>bGGGNQF9sΝæQp y2]i2^Ν[r/"Dbnn/ )9zذauuuCRRRB^O<9::ˋ(,2eeecccqdlvhhgZZْ$//>gUUUQVVV^^ uGGҥKMLLzbŊ| g܈#&N(rVAP(999MMͥK~.\Xbٳl6/^Yr۹s8٦޽`˗׮]_8ĨT)SRSSG~af~8**FN0 n?J˗=z4##c|MVVneeE .o #Jw^bb9s$ @t111AL6yyysc̟?ŋL&SaaarruW^^^RR"K@{USS_|iLLLlll<~x3nٲ%**o>|˚5k9RQQ޵_8¬Tīr ݻwK:/Ԍ@t?KٳgK:A ܍DzOKKŅw^{w}GPԂ~sssʕ+A:tݛ7@O.ˏ9O?-_\p?bQcyD{}8ώǘ1c-MVV-###88411qss^eC]QQ?n:I⁚1ƍN qw#H؜Ȍ _Nׯ׮]KǬȗݶ]~}֭'ccSxk׮ ^o>666#Foeddz93VGbŊ|2'' d;? ''`0mihh^UUU ,hhh^e $X,%,>,k"~.ƘFFF&&&gΜnѱ0d۷'&&&Nꏬ G͟??== crAӼَ77n/_w-[LpSNM2E+#RQQ6lXjjjvw޼y4`֦M޽{) _pz9pxyy8p/3V*"\[YYK:bIP?w\p%%dEEŞF~+((hŭv6S(zzz~~~~fbX7oGQQY쎎wݽ{k׮%"++&//oȑd/vĈ|'611gɒ%...O>[j⠠ SSSއC&͛gϞ޽)!!')X~pnaذacI>c^x{E՝1cFOkjjG7skҤI&Mt3ǬY_~-DE^W3f}͂ fΜYQQqҥO?TԿk߾}Jz]69j(77_~Ӂ`pǩoV;v쐗WWWWZE,X`gga[[[>***nnnÇN&fjjj?8RpnL۞"(++7449r޼y---?3K{/8+}o0x$'';::%ˀ?~Λ7O\1%''WWK.I6PXhmmURR>c^uuuUUs~믿Θ1y^9p9sxO755޽ŋNgथؘ%ڦMʎ;'KZ ٳgMA/mι` 0x?s͌3|}}'MtAwY,V\\%NONNnkk#i4ZLLUDDDee%r1 ={444pܹ<88ٳg=͘쬩}vav۸k׮.J$-[ܹc>|`0Onaa+ ?8{l*?h4HOY]毿bfϞM~3gNuukz ޓ7?⒒ގ;)g֦P]]-\ߍ=ӓt./ZZZqt:[cXXغu$`m_SZ?S`ٲedYo;w.ggϞ=1]V}Ɓ{쩫 ׿EF{]vv]233Ɋڵk wڥnݺѣGٳOP~cc׿yСC֚^x͛7%%%vvv=۹k׮ (a$b=FuttdddX[[ oaa8eʔ7޺u?SPPoV=-󫯾%Ktttvޟ5)))-5jT 0Ԍ= JI'γgϸO*=sLWW͎!bɓ'GnmmmÇsÓ'O&#""릦&O<'knnC򝱶VYYѣ ƞ̷fO4رc]0Ie˖[|Æ <7jkkɏ+߹f2 wKLLGO ywޝ;wnѢE3f?E '''[[℄r353)*ޘMMMfc[cc ?7otvv7۷oݻwb_uk|A?@| V BֳSSS[ZZUXlWpBiӦm޼V__ [:88^~W􊊊T:A|̷QE]' &<}ӧO'L|͞={fϞ~zaÆ'oHI͘BАt.'yyy>>>555 #GWX%PQ-[p7W/k%%% .\ݕQÇpnEFFLJddd۶m;}mrss̙ӫqKKKTTTQQ۹)! IDATB.J,;>2]]]wΝ;۶mm|oo׫']^HFoߪ(++ww N^^^/^ёt. ~%()))**7xc)jjjrrbRPyÇseen'?x)͎*--EѢfh4-DeiiD׿˂ fR>(YYYNCZZߤIv8Ν;[0bddd{f1 9-' .G&BAAXfI&}^^^x%Nwk [nDk \~~~uBBx@Cu 0"ÛRNNL^^tI|$ OmذAYH0O@p[_"#""bbbę@1fXNѣG&&&͓t" UfϞ}oooI'2jkkl2zSpwڕG^''';;;kjjm߾lh111VVVd{ll'ư0&6f̘%Kܜ6|p;;'O=_|ᡥ39F;iOs׻,Yw'@vjnnΝoJ+Ś={6sΜ9׮]{`Б۷oTѣ{I:/Nʕ+?VϿqwۡvڵwﮫ{֑#G8p}mmmQ__?''סV*..&"!!"!!IIIAlܸ~ڴiJJJRSS#ڵ+$$`͙7IdNDYYNOJJ:zhbb"ɤRt:NP )'' 6RR3}yyBfK:!5'''&&fرnnn/CPژLfcc疷֬YSPP@n5;vOFFo̎'On߾UVVROO7o<==իW?^ȅT@ߧk֬|ܓŋ.\P=zdjjbjj#!z[y4N>=|ٳg766jjaR"b„ O> &שG˼MJjuuu仵`6l۷oK:?:88̟?…ZZZFibbrΝsnEFF[YY)++֎6m_lٲǏkkk`0>h %KpIdN|JJM WWWӰ s王 y}…̾O 0(بC㋊?~L$ v튌ܰaΝ;%@ ,--ɷD_~/,(( Bd1|Pp65HLttO~F"9I'kHJ:ޭ1,,lݺu ???GGG:!!$BJjl6BhhhH:諒3f\tIҹ9s2`}}ϟ)ddd k#%5㦦&*In„ JJJNKgggiiC kkkxW0I:_8`H:P30#1 Y...7on?~'III|hb +=͛t:=++ ma /w.]m %5c !D@ KJJ]&rwﺻO0?cn0t!!!Nt"f%lݺ_hc!pDDDH: #%5cUUպrI'b //olll`` X&p)S\|yذa}k 11֭[N;vbϞ= d;Fc0ӧOGXX 3f̒%KƗ/_zxxhii?{LBƚ{zz8q399YSSSOOo׻,Y_eXg9477'%% >ɓ'B@@)S8o޼9|f[LLUDDDee%UX8KKK:7X>,s̩WKN ǝ;w6nxe ֭[-zUXXg--u֕ٳuС kkk ֮]S7RBB_sk׮C}W СCg)~NNK.\hoooffV[[vڋ/ۿy󦤤;HYYb t:<_qɖ7oݺٙdu{,kх&L ⧟~WQQ!9r$;;t׮]>>>yyy MOO ?ϻ^ 䔓#%Cvwww˗/+++GFF>`` Allj355uݶ۷o?uU , Ƃ 7o<==իW?^P~~~cǎ B1Fuuu;;;N5kpv>zԔFӎ'On߾UVVROOC=|0Aiii˖-?~ܚ5k ȭ޽{wܹfvw[/ѣGB߰;vwuu)((|QQQ:?ػwh;::]V>mlEEL:Uuuuhc555E$UUUG)XVX~zɓ'555sjjj*..&w:88Ma<!իWo߾FJܻwohhY"##9 '&&rMDIIҥK{bM{ +V2n-XZZ***ƹݦhiir갶:(!quuu DPAAA #..N]]}Ŋ,^__s`&I?~|ܹgΜQVV&А͛7k>RYYYdLĭ[Țt]]]qqSU())qm{{ b_>_UUU=`RR3~ JUWWt.?~ 5 i]]]mmm߿˖-YYYΝ[jՆ ;:: Bi7}u5mEdʕl~*X AhjjN4I"o2&(~0Y4666V AݻwOG%K|```DD֭[jkk_+Zɓ'"B566X,:d2 (**rrrRRR"gӧ-Z4{쬬,55 &<}曭[Ǐ1BWW+md29333Myf[[[BϽ //-[%$$vؗwOf (}Р1bҤI߿w@TUU=ZOOrd0'N6lXppptt4>?:/gSԱcNJ6W\\\t:նA3@ O>}\--9s搧h4MwnڴݻNcǶɉ?QuuSWZUTTE̙sҥO<ɹz;RSSN|ŊJJJ|555yg޶mۼyzz& 5czP3zzzzUUU1 eiiH-}}#G̞=[Z__e?xjErM:|Err[i4GXDGG}o>##Yf%+ F)y1B>|1.))ms wY]]ݗ4rJZZ'|'\>8~~~}i``paqZ+++tzưu։% = f<|:Igl &LHNNniiKJ DeeeԌ aX,EEE AljzP3)))I:A 5cj0`1HI͘fXzI'bP__obb2i$I'RO>9p9c7666)))UU~!)STcccI'a&MRVVt"ЏJKKKKK%u=]]]mmm777nJgܸq999|o577j ͛뺺:GG3f455rʕӦMI7l Pl6],II>(G{ĉ۳ԩSҥKNNN/^=z{zzb?낂wwF.cǎ UQQݺUTTt##,Jk׮]yyyurry;777'%% >ɓ'Ah41}t ܖcǎXXXٳknny 1,,d3fɒ%A4v˖-G:ujAAA?T$@sƍ/_2}tmmmIgl6;443--lIJJ3gp++++//]\wtt,]$..N)F&9sL{?2vڵ/^MII o7oݺٙdȰ&bڵ{Zn]yy={׿t… ~: wU޽{wƍ/r g Ҧԩ/_VPP tFk PVVVRR2|Foo/^0La"UTT0Sܽ{>/P0Bikkc2vvv:ttt$ѣGpwŵݵиy&@YYYZKKb[[[nݺU^^9ANNKp RVVFv>4R>X}ݩSdddFs+WܹsQl6{=ݥP(ۯc/LLLΜ9iѱ0d۷ťSOWvvvr *'''%%%*ޭ7|uV:#Fr غuCmm}}}Y,NWWWg2iiiɓ'4\QQq̙qqq_~}ĉz(08f CX}}}LLLFFFIIիW^"yb,XBٿܹsÕSSS{k//ŋrxXBNAvSTT>}˗ɗ@OZZZۇ`FGG盙}z۶mZZZs֎󓕕 &/[lӦMڮN; ~!>>AAAaѢE@`p,߿usαlEE ,YJN4I(. 0c1BݻwoVVV[l裏;̚5kĉ=_~'??ƦS۷7m?\xQs !!!<<<,,,>>^ҹ "RR3f ECCCҹd0LqĉaÆoٲXy(޽{7~aÆ=~Xҹ(,,͝0asDf\[[5bĈׯ_K:wOl0yywI:)'#zmʕeaa7wcǎYZZ>}t ߰+l*++ؽ{#'ٳJSE_ IDATSSIgIB!I㖖I 5c#%gSS(MMM I'W$%%~NOFFx]~=$$ĉN`p}T*NYK:6rrr-t.3 Ԍ`A@\P35cqz !\@ :;;eee% H XXXH:EJjƵZZZ^t.$ϟwuuf baa1/)eNNx1 F ԌDdcchooTd"d+P{yxxjkkݸq V ?ƍ{oүjĉ***4-22R@pr)gBK"ipzjii٭].oB1cƨZZZ2o xt}f 00fLP455544$H6.d 6888k>b4v%'''UU/====]QQnnnuAA{#cdž"""ĉ555)))ݻ$kkC!3A6lܼnܸ~433{).8׮]ooo<|/+&YRR~ %"%5#Fqj>@,+..ҒN'''4-&&*""loii9v옋Ş={8 -,,rssccc===O8A c2aaacƌYd Av{o&;wtuu577~Ym+WCGGBw/L0 HOOa...k֬9rHEE01'OlffvQa@VV?{׷[;Bf:xݹsbbbh45k8wǏ/''f͚ݻwl߾ԩS7.Xښ;vOFFF_2Yx… 6m۶ݽ{7##C^^^g%Bikkc2vvv| X?d;v<,Ws+//'Ns7޻,2MLLrrrt.--rJ`` Azwccc9u1cƼ7m?b566|ӧO+£{t r[ZZlmmɏSLYlYss3ZKKK]EE877ĤfܹMMMV]w^z599jĉvmmꎎ #to߾7oT*533s޽f͊caK~~̡)LnAܸqfImdd$xlNNNdd ƍ'իW^ TUUO?O: ŋoڴڵk+VX~=y-#Ӌ/o]zUSSSMM8Cxk"{߾}NMMU###СC^TTtն6%%%*_=Eȇ`0խ'BٿvvnnxEEŞVk//ŋr{/֯_ɓ7Θ1o䬬7orNLL>>gϞmhh{g}z;5EYYYiiigggOǯ\>t"ԌvZ{{{ޭ񮮮>>>_}UXXؗ_~ɹoeeymmۦ9uT{IcccM_qn-[ھg""pOzԩڨ('Oq…LHHw@@0SDEE9Ν;Z"CGYY3rss߼y`3gVTT\tIpU>55ڷoÇG9o޼Ea>:W "5jȑ#_|)\yyyegggeeyzz ӟF1 ooN hĈuuuT*UҹH33>/``I:񐑑t`6b ֭['K Y Icw^ggqƍcǎ>Lҹ "RR3Ҫt0@z?}}ϟK Y Ic222t mP3` /Ԍ>\ЃMB"%5㮮. DbcchooTR{" wۍ7hmm3nܸ/--ꫯ&NB"##'_B?^p&Atk:p+%q,_ڻ'Nsss>D8t2cnf\SSCRi40nܸI&Dl6]6lppp|^}.]rrrRUUMOOxѣN^7r;vlhh )"""N8QSSbll, 8A޽KJJ>tA;a|{RN7_~c1bS֖ {\rN`p1|PwﺸtkgXqqqt:=99lh111VVVd{KK˱c\\\,,,9F1ӧ[XXƚ{zz8qd2ƌd vڕLvjnnٳ7BI\ ѣnq555o.x|;mbutt8S޽oJ?!j== ѰPOOϴ4:nggxV˓ʲ[K.511;ś7o֭[geebccBDO 8{,>xs^x!3Ay|VJP(rrrQQQ=*,,%%%s{we\Ppd4TR w GOIhNVh*[Xaup 5EEdq`$X~#|af@Ǜ~@3u c@ ۳gO~~ܹssssx u׎;zzꠠ u=rٲeW^\hQVVVttz֭[.BnnnrrÇOqǏ/]tڴidΝwrrZxqTTzg#gҚwpp{, {:]XXT*/\`m34>[[|j:~j|Ɩ-[&MT%33ST._vmۖ֯_.<<<;;;%%X?fff~~~ϟ;wn@@]sM:;w\ti4WZ\\}v''^z鞳}˗/_lرcMLL\:cQ^^~+V4hw?~|^ϟ圜kzzz٭\2!!:5qDuX)S8::3&((:J2cƌ={M>]|ǝݻW]i!ҊՕ}/ݻWQQ3_nڴ)))~"11q]v8qzu 8Xcc^j0Zc>5?5r&59޽ 5m뾮䈈{CȎ;gΜ{&NcKm۶9990cƌcǎ_:uJ\z$''51GEEEFF {)J݁N:Hfܹsׯh<<<ڶm~{oooSSS۔[ZZ|~?7(jߙF~jjuԤo{{{B_nLLLݻ+JKK:uM?[KK˷zNFEEŎ;ՋzkꞶC5uqm\s=X7N@qAm Oƍqqq?A Djкu˗lܸq5III<511 ^`AJJJUUÇO[TTR|}}j ecIZjǏߴiS-w)׏=ZVVֶm[ f .\`Oy5A=z޽{㏻w6i"վ33uE:#e2͛Nzɟ~)$$>iӦ+_gΜ9cƌZ4|ŋ>zƍof׮]qo&775z뼼<wv _x+m~ tOM4f @:bbb.\>o޼}k׮ѶrGbM++uM2^Xt̙3kfϞ}5++I&5>S^K&$$-[f7AoA())YlYΝ Źs6oެ56\lM~iӦ5hT4Sk@a'O,,,8q#>/lڴuҥ۵kWPP0uΝ;7>'Nد_!!!]tٵk}FDDmmmwY3B&W^ rpph߾[TTϯNׯЄf͚P(@}`X$R3ζpww;H ro~Ϟ=֭۰aӦM?kח/_6lXQ-َs555x dff~繹_~S;Y&33ŋSSSuw dɒ\\\tx`hZ^^^bЌ߿Qxz "44_;aIcsL{{۷oEٳ޽{k̙/7 IDATiF2r>}Y Fo566?P.?~|РAulmmW\R3ɱcdžz:iA%|}}W\٘:ȑ#:Vںu,;<jjJ.޽ 'Nݨ~koo䈈{CȎ;gΜ{&NXPP iaaa0kSSS՟JG/|ON@[; m߾]T< .ʼnHflgg% 믿ݘhmmݻwoM:uӦM~~~?[oU^^.K5ǎ޽{=^]]KCvӳvrrj׮AHGFFF\\w}'v"1L&m޼9))iԩ'O駟BBB>쳘6mh;_ 9s3JkѸ/^ѣ7n]v>| ӧOlrkN2UV2,..ȑ#AAA+((8?SNRv*mt!c{ >ɓ'N1bDvvÇ'O_~eӦMm/ ۵kWPP0uΝ;7>311{ΝXfͬYyQϟ~lll?.AjG:z:߲$$$LuԴit_j=|?_ٳN0a۶mz9l2mÇ^??zK[snݪs{ڵkիرc*^[Bx>xۥK777mO]bm=)5c_\3^pY֬YiӦ~M&̚5kРA:4hݻ8o߾QQQz{XWW׈m:}c mzc'>K5cA:u曛7o^jӧO>{ 0@!vvv :KwaXwww݅a Çd>ٱӦMӱX[xt;lذk뵰qߑ#GZ[[8z c{'P(:R8K.zu,2&&&r\[o 44.UUUZ2776H]9V/Q @Xx5k>7xC,… ۷n:OgrÇ;88<&$Iy!򋅅u t!""ƍK,155c`Ku>(**;ppp ` PDjƍgeejժ{EEEY[[?D4;f.-f^s|- ~КZ۶mŎ4f !qVrA@JePPAHǥK6o,v"c`߾}Ǐ7n\bbY Dnlz5ch@%qUUJ*((;h׿ _|!v;w\c4 Rܳgthvw޽wM׮]b b08Yg Eٲe֭[d2AG"jԌ<{$-r333*`9,,lӦMb0,;99?^ Շ@K`ii4̸CHf f  _;Ј1gxzԌH͸RR>${ bb nnn;a1;@Ӹu떫xyyuU Q~~~FFo&vѽ{PSԌ(s̙3g)4/v@b~P31DjFFFrL i,]TTb W\ ۸qA ;ZovѣF:xY Dnlz5ch@%qeeJ*,,;h bӦMb ?|llk&vb,vq^z^vM,ܹcmmݭ[7h.**##CRtمHd1?޸qA4#L&BuuA@xPIZ~@?CDC"5c###\nff&v@% h ^{5R9| 6Hfܳg3gΈ>P3Z\$@:rrr<(v"14f | 5'_uBz{{zΠϓ&''yߏ1eɠ(Dc~D>I`$R3TTbѫ?,Y2`q34w}7PzWFä$[[f=!|O`+V;b1lٲEP|b {?A Dj7nܰxvZJa777__]v 0k֬O2ʕ+MWW+V 2o߾ ,Q|'~~~{.((5t޽{v++{UTTk!ɐ#jc4淰HLL\~ܹsG1`(ʗ^zI￯_ܹs}122__tK.ڵ;sd>OurgΜ~;++Kٳg޺u>y?X'177wrrԩAHǝ;w⒒`X$R3n&111AAA . 7o}׮]4iRBBB^^޲eltƍǚM}kn޽H\sĉsZYY[nʔ)/ҥKgΜYU;d}bg4͛G:feeYYYu]ԌѦMOj߸qY@؛ZlY6mAx 뗘˞={WZ%vFH5i| 5c[ns̩y[rnH5c<$[۷okZԕckkkJ uԌ@?$R3622fff ܾ}{˖-b'ҷҒS[qqqyy)JөS5c 0a„V23f1B;4k:;;/ZH,D&;Ǐ2d)C>}m6`g?w131**J֦MmۊBLMM{9S蛹yYV[]]ꫯ޼ySc/xs7Sb{$X3;&cWWo۶MPP0xJ[zv،Hf\YYR $%%]rE>;{7Lƒ@KgBtRggEHdoWҥKbg/_.o=mڴP[YYyyyu]|ߣG222rss@:v*v #1ٿIIg}6uT##:Ǐ?~( ; ~P3`\R{m115co߾bG 2jr333۾}{[n}=zXxY ;ZǏ2/? E`{@EZ.Ԍ+++U*UaaA@HJJR(AHG=bcc/^,vb,v?{zzzxx@˻}vNgddrzt󩮮011ۘԄSuD@[l5jE```AA-[\]]=<ի|ԩS;utkzzz٭\2!!:Ɯ}ƌ={422>}(//?p+\]] 4e2YYYYZZZQQy~AН|ĉ XYY=?,>>>$$_|ʕ+lll IDATtϯMiiirr+f̘ј0dRc_~%,,,**J E"5}b`@~accP(,,,j䤦;a=JOOo̱9{>}/ݻWQQQg@jjjIIϟ?_\\\{Ebbݻv:qD.к0𐐐O>j߾};v:th * ίŋoЮ];'''kkkܸDԌq[ZZ]L&TyĦQ3B/X %%Ç кu˗lܸq;w pGm_z#Gf͚UԩS㏕W\wޓݙ6mڌ1bÆ 999OԌ\rĉzpyۿ[%%%˖-ܹB8w͛7yHHȑ#G q@TT?~cǎf***zk裏ڷo?` &L>nL;UVV43f|gbg ;w?~Y ŋΟ?/v~S*;vT(bg\JKK322w.vѹsPS9v옷ŋE9{NNC=k׮%޴̫d2  DhQĭ$޾}[Se^5EuQ3:cccc\ޡC*I@KпR٦M7; :cwwcǎ>P3Z6m899؈t<|0..믿;aHD駟еkq'6I]x}Mu_;H"{ShQ K,=&66ȑ#KQcҊ5'&WW-[5"00`˖-wV)))Oz]PPc[zٳgkfXjKHHȭ[A={vLĹo.Jڰa]Ok׮!Cr+WNqix ^{^^˻use]0Yg\YYYXXhdddff&vͮ׮]ӻwC8СC)))/ҸqZnlٲWFGG[ZZ.Z(+++::6rΝwrrZxqTT֭[m&:vf𼼼={ϝ;7777ި=I^^믿~!ooBRnט\`m3Ԧ#Fh_y'N(y58ҥKAAA_}YH}llA DOb^^^ B)S5~W^NکSǏWVVǯ]nʕ 5uh6&3zidd4}P^^~+V4h1d"ss~ -499yŊ3fh̽4*//;鰴 ;aH@ׯ=666 ¢mNNNjjjnnرcѣۘ}Qw^EEE%%%<|qqq1wڵĉ?kKqh*xbuus =ԌP'J⢷m۶MMMU=s挷iaÆ KJJs玳sHHkk|(L~4~P3B/X %%Ç кu˗lܸq;w pGm\Gr5662hӦ͈#6lPZZ?T5cԌryY)}||N8111AAA . 7ooMLLdٲe;wV(Νۼyk11G}Ծ}L0aO3Z^T߿_ #;;;,,lʕb0,2h RSSO?Hd1Ʀ1999u-Z$J}jTQ3ckk{mS%_;R%qEEEQQq͛7Gٳgd;;N:Hf|@+,,y󦙙YϞ=mڴ;ԩShh) N+c;s挷*vH& P]]-v8j=YIOu ڵqv7c =ٛDdcbcc9._uuuEE(goV1D:>4e˖QFYXXlٲc1%%%|򉟟_޽ l}W>{l Vwqq u gώ9pAPT6lpssݵkWYYYiO8~}v2d\.YreW5t޽{>>/_nKóIT9rD Ν;aaab0,Yg啟/v zՇk׮ݻwppСCxС^ziܸq[^lիW----Zc s;99-^8**j֭۶md;v\fzLxxx^^ޞ={Νo4.,,T*vWuֽ{MNN=|ӽAxWO8T*͛W3^[{c. ('''S}; :coʔ)F>}իW?{{Sv㕕k׮[reBBBMZ93zidd4}P^^~+V4h:V!Ҋ'+8qoה)SMLLƌw^AJKKWX0c `m퍼4@#3Т4WQ(5osrrRSSsssǎ[3ѣG... ۘ}Qw^EEOnjjjIIgϞ]\\ljjׯ;wȑ##""  {N=߮Gڵ̙3EEE \xM=f4P'JꇇG۶mSSSoϜ9]`lkkC}ذaIIIwqvv "##I۴t̙)))YYY&MRC&eff>~ΝףG޻wqݭ[_~ѲmZXX75EEE*<--fS6mڌ1bÆ 999vH[NNB:tAHGnbccy1@;wbĈb:trvv~y"#####rω'$^-\0<<|޼yo611Q:,,CǏ6mdٲe;wV(Νۼy 'Znݔ)S^xᅥKΜ9룏>j߾&L0}!a5YXXN4I E ӧ  /:uJ, deewޝ14+3$d,vxi _h(y?ӷ f !\.СAH۷N]R460w}wmlly<tzj>}+Ws{d"$D%AAb G9rBω.4*RҦSQAHpr[Q$#[t~Lf&cqkky^׌k9zwyxx :t߾}֥? ZZǭ[|||Νkkku1$$棏>q֭[ssssrr LtҺ;tdzb}zvqeS[p7v}={8pŊ555RTU# >S?ݶm[׮]vu T~iiu-B$k73R9wܑ#GZ KKvvvF KKKSAԏ ̙3u-~aUKc5LK͚5kۮ'J.Td=rj%%%iiiǏٳ H$R{ɒ%۶m;|PP7ou떗o?.\oQwiJOZ]K~O4ڐ\gP(ryiiA7n7nرcݻg nڷoTK67o_&LѮ....n555Jh(o۷[n1Cyyt~RRRA/Ǝ۾}{C7z`c6؛"??}pssKNN;i1ӧ^~eh gϞuݼyS7nhpxRRRjjjZZ>y l]u_5kErrѓ?BDEEm޼/<<<==]Rݽ;;;߽{O>i?f͚~ge TgϞm0DDyo߾LGmmmAA|d'I@r…_:u!33niΝMOOw8馚租~j0.g?\%T_RRb*7}ԩuh]Q"lٲرcǏ?tPqqqvviԗ>~$gP[[?LLLlO?wKwޒ%Krrrʮ^b 77aÆ=Qnݺ͜9kӏ=`Ts3IOkz&^76lhZ5chfR3J2^ LΰaN8QRR1|[n=zTݻ lk?dȐlR9|ww_[nzRPwGi 萑ѡ#Gߍ=(Bw׮]ɓ'wq̘1_~哆wO}{Rϝ;'v޽{sYrALwݿ~:uJ,sǎn:h*//Tە+Wvpe3@kù7n;m4h͚5 _!X{0ŋpL![ dhm6ߊ~~~qqq9XZZΜ9sΜ97n\b̙3Z۷oHHș3gQt颺SNT4W_rE,&LMP(ryiiAn, mU=yof͚ ??ݻ9yg`Z:^x!,,bg._5u剉=z ۱cGUU IIIIIItmG1$$$ 4(00ĉv]XXzؼ , IDATy#FU\\y怀TjXG^{H'Ol߾}yyyCo`J| b AJlJrΝyĉz-U>}ܹSXW{TWW_zUT>|P&>}ѣGgϞ?I]AAA_}ɓ'GGG>UujS˗/_>qDPPЇ~j^xqN@v_nn]O0aǎg=r‚bbb_gϞv$2VBQQͿo͚5KיCt I͸D Z•+WA;ս{w__r=} dkk3ϴmV&]xQT* WWϫ\zӳVYȪO]3fT* ۵k}bNRfl2~tՌS3j߾3gTOSRRzfu ]Ѡ>FUKuEE=>>^WxŊǟ~T*-,,T=:v옞Smp#R9mڴE)ʲ2{{'O֏ QRR{n37uffѣ%X[[ӧ[nbм_^PPP[[ٳsss=<<֯_/BNNG=lذk׮OFFFTTT׮];utСs tT77 YH+݌޽P(JEk<=rrr***zΓzA1Y׮UCmRWIOzHϞ={׮]555 s}LL̔)S`Zb'ֹslShvx={z=}~9;;9r$00Pר }*++O0{l\ziСC}њ5ktMA*6X6p*=ӳnppMNNNHH N }%ts XXXy$ɍ7A{ j̩?"AxRRR L3ZnfΜ{YZZFFF.\0++謫Oii\. sppKMMUrJFFFUUI4W3z8.ZYjԨQqqq׮]Z~ĉXB]ǨA׮XYYyݻwzo':ٳgǟ:ujڴiEDD' >>222>>^&fffוּڵk'M4`e˖M>]չb;v;sƍL!::...&LސtOIIIC ?~Ebcc͛g:tzӦMvvv7n\c$ܘS5f̘qW_}X$O&+33s<|Y@Ӹ~zmmw6| &MPxzz~#F; ),,\bEI'|W_eee.RHvΝ_.v";d^^^)))Mwh ƓbG_L3V(R^,iÇNrvv; s䔜lgg'v"1_x饗?bg쪫/^ضm=z@3ruuݻ3ψsNHHѣyI$A~[pp={t=}"4nlnn+ȣ1ĈT9#ڵIyfxxۘ1cT4}JMxܛ@Ҙ2؟jK. n]]];H4HT* KK&YRi46)5LxPFZ C]aȑwV5z{{Ϙ1C㩮Q ۷ݻիWU+/+**v9xu <<ӧO`@@5k _w#jIIIIII3[@@@BB AO8auVz{p۷o?z)ifff:dggklݐIi~'L6zhh 7nSNbмnܸ_SS޽{ ^j ꫯ45^x!##CP\p_U*_'O`sݼysĉo}„ G.((8v옿myN/_|ĉAAA~aCtҵ3=|P&>}ѣGgϞճW*}ٹsgvBXpz#uEGG/^5t.o߾O^#F3?~\̙3S݁. RYTT;u/BQQѡC%p1JtW*S&M񱴴9r8`ZG)jC ѣ1c|#G{~ǽzZzJeeeezzU|||çN`ÇZ* _`AjjHe܁H$R޽{ڝ[tSN},,,LވqdٵcvU*.X… K!| KcnU˷l_I@BZFFFTTT׮];utСs=*''G.0~xyyݽ{WPܿÆ +++v=z80999zR]^^tmM?''EDD>}Zv޽ꁋz#W~ܯzAiWug='oH*=5rVBhEӇRYY9}𬬬7oN0A_TZ[[YQzrtt~ʁjjjܹm۶4Ԍ \./--;u@+1x`??[nvI& 0`ٲeӧOW}e &h<3*!!aڴi_g̘񑑑2,44433Sվi&;;~7nʔ)ZjKJJ2d-Z;o޼<虡b;v;sƍ~g5A1!'޵wy'))gϞڵSx70֏ߜ9s탂Ǝk՟!crr5k`Z$Qt_z^,݃FS,_AAA~~Y0vXMF*vxb...b츩3750?Ԍp10QԌa\"vIR&ى4~K DqqҥK> h ޽v~@f `*rssֆvhV.'&&#,,lǎUUU  |﯎tۗkD]vȑ#wޭn/,, pBu>q℮ر_dW۷ONN`Z$k^ǎ6lСC=*vNP?^*@3ٳŋ/\УG]}?~YZZڿ+VdeeEEEVVVo֥K>ggŋ{xx[֭+**;wnddoP(8$=<<Μ9ӭ[7Af͚%Hnݪ555o߾G2eJvvv.]A8qbuu'|?o޼۷o҂ h]aas=w߅[kcsyfr1V8$$䥗^;%HAhm&M1bDΝLrҥ;w>>#G?~ALOO_jOxxԩSUuk,kw*//AUԌ<} ,#xo߾~~~NNN꧷oɹѣ VVVv5VTTKؿlM0{]v۷+44~Ό]vСCΝ!77WT/8pꁮvunnnOAk#P3&I |ȑ Q==uTHHꩅ /䔖"ӧgeeݼys„ }K$7nXWzv7to_ҥKTTFԌ---e2A3Z]6fKKȅ fee>x`5jT\\ܵkײ֯_?qD]gϞԩiӦT.988qmmm=|۷o޽[rJFFFUUFU)--3gWf&5Aj@+keey###e2Yhhhffc 2~EΛ7OW3f\|W_uqqڵk'M4`e˖M>]ҦM7nܸ)S4n***/_ޱcG??3glܸQW#ЪTTTlٲeΝb0-.:=dr\, >b;vtqqYL\g U:c&hÆ ;w~OF*vL&JIIQ}"fR3)++; fu@+{`4[O{{dkkk3gddÇOOO; fgaaѧO[[[h^w)((;3amm#v c&5cmvv)4;n*-f -10QԌIR&ىIݷo߲eQRSS#vf|Μ9-;ips{yyymڴ9|LBaas>|(vb&@eeebbԩS(v.`*=VR@cUTTlٲ?u z6r6mZ @xׯ_vAӧʕ+L~ϸN,ZBEE֭[?#յ666mڴi۶'Nڵq -^XV۷ʕ+ݍ[ѣu[,,,ڷoF100~#4`Wm1Vo>U]666&Mrtt4nK.i|P \W2{ɢf #HAP*ӧO2eչsnܸ Ti֭፟eTk^^^F#]wuCCC=<<_+++ו+>4dlUUnݺʕ+ƍ}O0uj̨xkƪ111QQQ۷o{ҤI={|&N(jRs`aa!44ҤIvBӧ5ת^wѢEEEEƭۘ7=00ֈujjj@ǿ~&M OMM; fWSSӶm[KKjJKK׮]+-,,}_{nEE[{t~ kNy&3hU T*ѣG֭{ƍ[80Y=d 5f cTjaaP(Ŏ=; i#vxbg Q3Lj555rL Zٳ222L$'''b0-R4G5jȑiiibg飪0c/((;aJ۶mcbbN`r̤f UH$b츩3750?ԌP3&13[ZZd2;;;&iӦaÆ3g΂ `Z$\5(--m߾}IIYL\g q{@EZ/32x={W^qsssqq Rͳ>r]K\tivvv=zHHHA| . :[n̝;V?cHHHMMG}tƍ[pҥuWwaɒ%6(F/gຂ X_B5kV'ꟙ)J/ ڶmW!z k_ZꬱS ޸qc߳gq6:cii3sL j۶mSͩT*Ν;r% IDATTU_|aii9W_}Nhaaaii~*B9s_bb%bbb>jСÞ={ /~k,6k֬۷8p ""nz? +++]H$F,gւ H$T|򀀀K.uMɨ{{{/Yd۶mϟ Rt!Ru޽{!!u DǨs PRRv={ T-Ljo2nܸ?nܸcǎw^^^!3޺uk߾}Roܼy_~0aFj4;;˗4r*h]vՐ˷onoonܲeɓۥK۷7aH!֝o~ ,oݺմ+6jx*5G%͛ mT=qFÓRSSuQ3h C]u_5kErrѓ?¸uUO?WWWOOoذMQwrrڼy?leej/(("##Aܶm'?'Ov g_Zigڼy_xxxzzq6j̤flii)L.^:u!33niΝMOOw8馚租~2:ٳs?}I*&$$Ǘ=h.[WTu[zz#t===c>744TSMRx·CWH=3Fg=;utt|7O:uΝ~EDDnǎ+VfzΜ9b0-fR3>|xQQW_}%v-9>ܹ_]zMqĹs碢ˤ$kkk]>|8jԨӧO:$ɖ-[;6~CgggO6M}ǏNR>FDG.tipwƽZ'2ݺu9s{'BZZO֭[G8q!{aZ2$;;[TΟ?_֭[^T&$$ԝѣG5:dddht߿ȑ#wc? Х5?A}ݓ'Ofddlݺ5""wKiy;vp6O҈CRfzvڮ]ɓ'wq̘1_~ 0eidkkᅲkN, gua̘1UTTkƦ_0'frqMM\./++;_2eJ޽>/h̜T*MNNO`Z̤f:99M6M ZϞ=P(PJ2..NZ{ʔ)oF]TTTPPѣܵi&&&f֬Yb0-1ҟB'''0ȡCvmK$A hVԌ@Kxbjx*QI:={|!I`&5md2[[[&bŊ7|Cb`&jkk?ifӦMbg0!OpHS+ڵK ZWA|}}w͵'$$'ٳ牆4͛7ƌRݥ[lٶmAL\g f -]488ONNvuu=v?hbZ\g Z¸8 .+**v9xuOlll^^^ll3AN>"{cǎ*U{@@5k /_N褤Çi;vxe2իƮ:cO%Z7x:333??޼y˗_tiݺu΋/yu4j~Ǐ/[^\lllaa}Ν{~[ۿ__%K$$$Կֱ}D"qtt裏 raa[ow߅ [kL3eeebM?ۼyF{eeezzU|||çNj޽{?^zyyy^z_.1ÇZ* _`AjjթS>sSL9r}"*//wZ6m$''oڴI LjƇvrrRݒ@kԧO%ѣGEEEJGT=ɹѣ VVVvڵc !''W^.//W=޽ꁋݻw cSSS"""7~>@k&HbbbfϞ-vb&5cѣG }ppD"q9rr߿X=}Rimmm666999N 5d [СC_K.QQQFZԌU3>|xbbbee۷wޭj\paVVVmm߯1VO}>}~jԨQqqq׮]Z~ĉ BcjrJFFFUUCغԌU3aӦMvvv7nܔ)S񑑑2,44433X]}/_2a!IIIC ?~Ebcc͛g.3˗w̙37n[WCa:iiiӧO5jԎ;\.2L&9P*oD"ټyYLԌ@?R٦MDZ-M Us{֌1^Ԍ2quu\.///;h2~ڵk|$'''''Ioqrr;rųgVWW@3*...(((,,;#v b&5cͫr]hFDRٴoyfxxۘ1cJHHȮ]?.M@k&;vT3%99رcuՔJB|ٖ.]ܤ]iMq'@,\g •$'}ڵ#Gܽ{= `͚5C _T텅qqq.\?atttRRÇ}||RRRTS%$$ 4(00ĉ;wR7n۶AAA [.]Znŋo޼n:A/_]TgϖJ?׵!66p߾}EEEsνo5m]qRRR```ddAweee͜9s̘1VVVzb78Vk$.]֭x'O_` x RyfF@4Jx PPP v1cwcUV>}MTVTTٝ?^okk[ŋ/]TXPgzgmmvR٧O;wOekkj_fMTUUU۷?siJJJ߾}Ŋǟ~T*-,,T=:v옞 )iӦ-ZHT۟}zBBBbbٳrƍނ h=c,,,T9XCMMvC+˗/gΜ&'''$$DSN4Ϻc`l='& /䔖@Skg;ZR\+++o߾{']222r…YYY<ؿvCX[[6,..֭[ǏߵkW>VVVFvZVV'N ߎ!(ٳO:5mڴL̤f\]]-LJJ￯vI& 0`ٲeӧOopM6oܸqSL1"L|||ddd||L& n.]IJJ2d-Z;o<#Ciƌ/_~W]\\"56mڔUcH*}M4iĉ ^i<7֭[_Y4ķzk|YݪU)) OO?|Ĉbgg _@3П9s۱cGBB؉؆ :w/>Ԍ2۷'Lѣ~գG;QSd^^^)))ɢf L׌Ǎ7n8S4\.v|3 JM@I!mjkb('CӶ&KζʶW3N)9Rɒ L!&4jNB S8:zz8=T&5֭[4qƵmV ԇgϾkMMM4jkݺuyyyYYYVb1BJjrI͸H ˗/ٳG^TLLD"YfA*""BKKK ͈Ԍgll<|h"Ν+..~̙1c%RXX'vc-jJM@g%^JӦMʒ16441!DZx'/''' `llbŊ{@\^5chԌǏ{yyQ-5chjR3nݺA4"A|||A211رc\\\\\_|Te7lؐZ|СC7w׮]/_ٳg۷~sۗQ'Oݻw:uާM9K.oD"i߾}ov檁)S=P ŋ[T;^:=ϗ~ח7iҤٳN{?\:vI^qqӧO۴i#v悚1ŋ/\`kk+Bvvƍ+b 5cZa&/nݺ\tiٕv߿7߿_",[L GxxxDDD_ԤfollpBh"666P^vܙdɒ1cCxӧO޽+vc޼y-;@3JvޭKgϚ2Ơ!h@RMMM#xQԌ P35chjR3nݺA vvv111~moZoH Ps΍7SN'OD6={LLL-[֯_?}}}kkk%Kihh>|XyA_z;v}8qlSNze[ 4߿}l,X m\v:7Ula⒙Pnɒ%^^^bhFԤf斟eP+UUU*^bСC5OzKJJ5jA\\ܑ#Gt2f̘8]]'pvv^dKƌDNNNN=[vޝciidqAʢmmmAP>X+V籲}СիWgdd|7{?eȷWϻeQN__Ҳcǎ*:m۶-22B ͈Ԍ@;88ܹSu^{JۋwhcciӦG=&99988ʪ]v...wIOO񱰰3g ׯOMM3deey纖j/033?cff&} WgH?˧iΝQΝ?ZWۢ&OUUKllàAg͚dɒhjjjkkK?ijjʺtuuΝ+HBBBj\|켼AP ﯪڲeˁ޽| ) z܊ dffګelldȐ޽{˿MQZG555Lr̙T0#Gn4 J15QVVvuY[[9rҥI&GKKkҥ.]}ٞ={6n8p]~'{Vyڴi=zvqqquuUIf͚իW/MM3fH}j <{l||*J9 'OknРAS(2}مH򲳳Apppo~uV{+yfD윘dpVV/.{TTTu`Y]¢؊,X@SS3""ΑzAA'Oo?wnuɇ;voJMjeeeEEEb J6ٳX߿x䴴zbر҇eA?رc}֭ϟ?"I'`jjzΝZSTB5111R^UqBBBlllNZۢ&F2gnݺ {۶kݕ_Wbb|||Ϟ=l߾{w̙۷o:M+njii9|pAf͚uq/\PV?uꔢa?}~?YKK+(((00P~X;fdddhh<|L5J6U񺪅QѣwQe0"444""7XjR33669 %zs˨vvvmڴIKK~=s挽"1j([[[ÇGAAΚ%%%)))SL=EUYYY3$PBMO>?H$Z277?3СCW޽===[x[d//tu%ɾ}lll\QzzU YZZB kõgl٢|YCCCY]sΊ?ĉǏܹL8Qz={waÆ@u֊T*U3rYYYwQq<iܹ-j7s 5hiΝkoo/_?~|@@@FFFJJJXXԩSeJHHw͵}}}SRR*++߿_\A}zrr===P]]]EW{xx̚5DN/{_ZZZaakV^ݩScֺN>-{622r߾}>Tr={&<aƌ?͛޽qiӦjU⋐{***SSSgΜYXX(uSE* `ggd#&@ urrruu]lŋe] ӓhdd4|Z%555 6mڈ#V\!?+WLMMLzMUVv ?SBBtI~mU...^j+"H~֪Unaرɏ?vss{7rrrWsƍ6ŋk{_y啉'wG۲e۠Ad===;vsN%yc;va݆ ̙6l0O7~gڽz233vU D*ZVIW_}UFԌ ha;wwYf}bgFySN1N4 P' 8t]\\<ؔE;@hݺs uU233k}gҥ%%%!!!J5hiԤf%K/]4f̘'rrrrzƯh ـիW ,XB~#+++'OҒ/BYYYttmTT JyCvOd 趼x =4jGAAAHHHvYZZ*m^nk6`__\i{qq]mll6m#ѣG$''[YYke1>>>>>>_>55$׫]Be† &=}t۶mO>EOUUKllàAg͚dɒhjjjkkK?ijjʺtuuΝ+HBBB걅tU˗/KeJI닲~~~W^xlWUUmٲwAU@f @}$&&ŭ_>888,,Lֵ}ϛJWZsM69rQQQW\qtt477OLL|;3!BXXMXX͛7UOcǎtcc㠠j-OV"ݺueO>Eɼ&ٻwon̜}Ȑ!{ޱc* `ժU*>h|c%ȑ#_S@PQTtfee-[_~vsssrEEEƉ'_/_jaaa``пO*RtځTYYف֭[gmm=rȥKz'MԧO--K^t)77ٳg{ٸqv'ݻWVrss~6mZ=]\\\]]|TyYfKSSsƌ#u0222eʶmA(**?~/J>PqU-|[!44466۷W4F-K333ss/j/`YB6]:xͧNёgee/ GEEXT>,X@SS3""B5j-cǎU1X1lذN ԇZ@Pi7oN__[n޽;///&&ҲTǏ///߰aí[lr…4]3,G09KKK+..pxo6`A|hbb"e˖_]yBCJM8qƍ5:H/@9is:۶mt۷䨲fvvקLR]CCCIG0?~|@@@FFFJJJXXԩSeJHHw͵}}}SRR*++߿_4_Atӓϟ?w߅*?c֬Y%rj}tz5,;wܵk pӧO˞ܷoÇ!⋐'OԹl_|ZoK@@ԦE׌NA===7o,H/+z%U}رc[lqss4hz===;vs:7zÆ sqqQ̚_pZoKvvb$@b_VVVTTԺuk*͛7{k.x&&&bgh.9C+) kg52hAI͸fիWMfeee˖ʕ+db>6lahh(vfDM3޽{ܹs===o.kOo^^^=gΜ7|SĐP^߿߶m[hDYYYb><<<ĎI͸?s͚5񕕕ع4P#htՌ333Ĕ.Z>ڵعPVVV답Zn[XXW^Qԛ E=zP{?CQY~fgg9sFQon݆ 733_~Q+H)rʏ?O>oދ/~zmmmg̘R;dȐ 4䐐EFZtǏgzV^ȑ#k֬Qo|駊zjԪfڿVZo3a„/R .TD~̙zg̘{n%2JJ*IIIJ*8qsO:UﹿJj/^\rJjW\ϕUrEz?~"ssrrjjj*߻wVkbbKs)ի5chjR3)..}O<9޽{J)///((P[XXdڊ(y^==FkhhhiiWCƂ 3fcǎ*@3gffv޽w*=6EjR}իWAѣʕ+͛&Uj5;@kժԩS/_kmm} //^zh8(&5KI+Ǘ.]ںu͛7׋ 5y7bE ڵ+88ѣ:ujxnݺwرcbg&ۧO鉝Pmϟ?o޼[@S%IdeeI$KKLRwSPo~~~Ǐ;Fıf14j^JT0tttL.]233h?}bgh.4xvhʔ){uss; xitWΝ\nj/%X h)3x)_%vQZZS===7bĈW^ybg&>󢢢ۋQwelltRh"dPoUUUYYY7n;1k֬EQ1ٳgnj#v@f )jf14-4 ###===cdd)vcʕAAAFFFbgh.4xv@ ѭ[]rQ3RpP:@MԌRqiiiA IDATAӧO_|);;_QU iooߊGq & %AbhFԤfmll+vSUUU^^+V :Q{ll_57o;wÇbиN@}̜9sѢEbhFԤf\!!!wppعsgii >>>>>>s_aff ֭{ 뛛+m/..޵kͦM=z$4zh`++vڹ޽[:ZHA֯_Zg?ղ)Zz-/[Uzu_~#dSRR %qΜ9GBS裏>,vcG h@4>>>>~+Wa;wT_Mڵ}Ck2U._i&˗gggoڴI:>***>>^μDss󤤤3fݻfHر Rtsj\-￯jnnn^ZkYj^ݬYVX!(::zʔ)gJ%Anݺ5nܸɓ'' /Q3&B3.++;pu묭GtX%Ϟ=M4O>ZZZK.tRnngٳqƁvO>ٻwnnnM֣GmmmWWYfKSSsƌʟάZ6Pt%עռ:SSqEGG PZZgOO:.]*-H$4**I@KthjR3122Sq|ZZZqq_ v٢ZĄ:t}Xiiiyyyoرc 322=v옧g>}uϿuOΝ;֩Z6Pt%עzuvܿG]]ҥ/ tuu333/_,vc^^^>;@3&59s`;;6mڤI9s^___--JӧO{yy "1j([[[ÇGAAך%%%)))SL=hU-ITW3sl/t%עRRRrرhjRHH[oƈӇ@Kaii٣GP}dd'OЌIy?> ###%%%,,lԩҮ!CJ+7oޜ4iRxxCVСC 8poJJJee[s'O888k.==]!UO P~ 5+՗mm3g_ѣG%~m۶o'O< 5cBkƂ :99.[g_rtʔ){}UqڵZM tww 422>|ɓ'kijj}'v0={ֻwoMM͌ P~'OLLLЌIxǎ󎗗͛uܚg,_Qm E0J=GwdA\]]dsKJJ(?k׮ ,8s挒 'ya {{{W&&& zo߾;::]s]իWeN433KHHhsW^U~.MNNNIIIJ8iXZZZZZ|A5>f{RRҨQ 9ҥK1c>%K/]4f̘'rrrrz_Ǐ///߰aí[lr…4iիO<`A"##O>cCC5kȏ_+**,X$g=X[[oݺU68**O>ӥgdd|7{?U#x޹+VVVV:Vmں΋D n:;h=ZPPoVkvqqDGGkkk/Yd„ FMMMmmmWAd+**Ν+HBBBjݺjѢEt!&&FvX_TTŋmmmm6}tGG7nDEE?^SSS~U/_ܷo_E97͛srrvz޽Ǐ㏲6lϞ=]tYdO?=\Eײ`;v?e5޿ĉUؚs ?a„e˖?~IKGSjhO5GuVffɓ'MttUVɉҪ$})STkhǎҧT{xx̜9sƍ5_4]TTm6KKj+Wg]]ݷ~{۶m DGGO4m۶VԜ2eʙ3gT s VZU^^..Sb 1jԨD%cԤf\ZZZPP =UEG^jggg (z֭: =x`3zhEK333cc͛7:uJGGGھ~{Y[[/\xss/jua۷oܺuJO>|*[D{ҫW?Chl666T ĺu"""^y4#jR3޶mq+٭[Ɠ'O7Jv]5']h… /\إK0Y{6mzտZ߻w/11۶3 vvv:t[j5j( ;vb8WzRN |Q[0aEj[D{ҽ{:%;;ܹs;uͬJPoE8Rq=tΝ;5ۻw.H'ߘ`fffccdӧ;::ֹuϞ=[]vSLL̎;/(ߺukFj~ٳ{6ITkhhhΝ;W8quPPE[Bm[D{rZ yNrk}?kkhh|ׇ>}zrr===P]]]E=x`f*Sϸ544"##=G={v;wڵk_bP1GRRҢEjPUUUQQ:sBg^{޹Ϟ=5;/BBBd/|V߿ŋβ[D{۷aE[˭;995vǏ999IIISNUڞ={nܸxϞ=[UUdɒΝ;ϛ7o߾9r͚5O>vX=QEwvv%~}v^̮]/27((Hּ-Æ sqq?Z[}ggg3P~^O~:e$;46 !m>ymذA)^&N!vz_/^|%iZxW_}{@#yfee|G رY 5yU/ ЪU?5jԄ NQ~as(WTT剝h,,,,--)h(A-iڴi#Gl-rss5,_Q=̋լnZXB/$,,k׮bA޽+u E׌[jխ[F͛2̋լnZ4Gyf///i嘚1@M#F3ӧ6m\lٽ{45<}T _iXZ9֭[RRء4K$NP#""Ԍ_d(2x`gggײWjȑ#w1ƖUQQ!vjbڴi-j߾A}1ДJJJN[lѣG[*++>,HVXaff&V6@cS5kS􊋋KJJNNꈈŋYm۶b'А@cSqqqqAA)A]]6mڈgϞշoQF6q$1465,}~(I6mtuuN.&&fƌ58884}$M̙3Ϟ=311;5pΝN:_UUݥK  t훞~e4j1?4j@g 1N1bƠ&5ҧO鉝@C_7z~sbg :u$vfDJ ,,lɒ%>>>bgА*++[jU{n.]̚>&caaq֭7ov],j@QkXP{{;w6qMLCCC7h拚146j^JԤfkddԦMtĉ̮] 믿Ќha,\p…btxh!hX{x.]P4Ͱflgg#jooߊGu.\000; ԕD-m>xs***Ub ;;ƎԢpKh ҥ/]Tvu.[kk͛7Ǐ͛bcc'I> (&>}TGGGOOO, {{{}Ү۷:tW^ׯwuuV"WZuM6,_<;;{ӦMQQQ񶶶 %&&'%%͘1޾waaaʕ+~Jcǎ/(((**\%jz괴?Zzza7w)++;ydffŋܮe ظqchhѣ vȑsN8QGGGQ7 /cfff&%%I$P}Q~~>Uj/aҥbDoݺUрҶmү۶m2dsaaNNNNEEŋ׮]377_bE̙3>~e]޵kWI֭['کSj+OUsnyy鯿UUUUUȖ W]*`eezj篾JKKÇү]v=z$皅 /_;-5y@Kd@ZZZqq_ 6"}}}A/m׷LNNH$yyyolŒ +++A*k?vΝ;Ϝ9STTgggQ'ׯΝ;ZZZs97--`Ĉ#]pJvF|Ǐ+_VɾC ~ܹD"166}U~Ty=Ep1dggצM43gK˴ H?gdd57QPP - )PRR윒=eY)KKKy( ###%%%,,lԩC%$$ܻw)))߻woe|ɓ'kijj;@3;Zkk렠I&4^p!--N,ͅ;tq]zzzoe w.\ vcmm}5S̫W.,,|Acgg7o^|||6mCfߚϝ;W ȭ[N8qM]7o͕db',,,Cf ILLtuu;%HAbE+IH'N8p`˖----===:$L&T>==[ŕ.HRSS-{H$6lP-++H$UbooSՅ >}ڵk+ ޽{iiiHjA͝1cƛoibb~J;w)""BjwIy...}cͫXwFoHtvԌt>}۷u^^^R3gxyyo߾}ppIU888]Vs͚5:uRLMEٳgرcÆ 7myqA~'ayyy[l{nrrmsAWW+V%&&:u*++K]3gNiiK7n/_V5+^Tjfffll,v\.4hPJJ%))(44tF###OAeee&LVի۴isΝN>?xjPE'';~?~%K_=ڽ{.]\wܶmۊ@W9O>`ҥbPG᧟~ڼ2۶m+3///''gذa>>>odTCCuG*5jݺu $%%4iҤ3gZYYuvڴi/k&MO6mZp+W >\B w`ǎ"ɋwFϴjJqZ ݻ'v'5cM]֌.]z2, 6*~UPLLLJJݻ5kVm?|ڵ5x*DEE)666 ݛ0aR&OKK XzgzzzTli߾}.ׯF1^plm 5B+.kfff֕iԨQ\:tHQ]vWIOO KKK$4hЧO[&&&=RT\:¤IÇ+333W\9cƌٳghMɛ5k6eʔcǎݼyG~~~>|NŖoj٥8`ffָqc3j1Tc*hRvo߮ڸc++>y%KL8\/yVZu]l7VÕߎ-));vy"##w>eU;RΝrvڶmkoo_ &AUTγg϶mֳgO3ԈeBd2YIIT*566; P#""⋊SZjȐ!111[nݸq޿{ܸqcƌd^{MǍסC=zk=zt~V^sԩȑ#G6hP_z 6lР/ ٳg 䔚:bSi2ݻw###?:矫Vjٲe5S"$$$ 8w/_OTWK 򲲲G]r%22DZ"cUѣG?~￯jjΜ9߯3^jyXYYu޽uu=0`@~~Ynzո8uiLLL<==4iR5%%wvv^bϟ_cFDD~}mܸqƍ XYY}~۷5jC-Z :dFFF5#33S.j?ܹsnTTK ,]ȨC'Ox/jigɭ[rssKJJ@O5o\ :DR7j[TT̙3g̘)vxxx/ћӓs@/~ғq㆛[Ɛ3gG/Ҩ@mӓT*533366;4׮];E%>X]"k+mӦM%%%-[;=W_]v-<.8q[liiiy!Ad22*.. mڴ s挗Wh e9s攖eeeٳg.ԱcG244T/ӧOvfA]9IIIw}rʇ*GDD1###**cǎM64hЖ-[}BBBCBBlllƏ/ˏ?^me˖yxxt1 ʕ+ܴ={T=rH&MukPڑ JIIqsssqqIJJ3fLhhL&3QF[Rt„ vvvZ,#H mmmϞ={9ErQDf֬Y.\8}r;w]vݾ}[!srrҴz{{7nWYfذaD!;;w^^^[liذ}o}A -Z@I@}eWWר(5}BBBSSS/_~'OZZZ*7nܸr}9rdk֬9uzz?K. {ڵ$͓lذ!!!!;;<""rӎ;?PH׮]<[ӇROWf۶mz 6LUIV秦VA%׭[gkk۩S'M...ްaCƍ ooaM0 5?TXCC &(D PXX}I&i)33wOu0"\.;-j^IՖ>}k׮E988{ڴi)))ʻ>>>:u2446mڙ3gnܸٳ[FFFv֭M6/޶mr~??]*Gپ}{##AV{T}1ct`ъOaff6|u P\\uۚ>ҥKOUfz^~]777Fϼ<AIIIٽ{wfͪ|󍕕ӧ4/RU_:onnzÇkܟyر ;v͚5&5܇@xM,'NϞ=+¦MZna#G4h`ԨQjt5cmԌ觬nݺ)~333SgA&&&YYYw2dM?~8C,ꗉ8ЩSmܹɓ/7T\XZZ޺uLl&MڴiSiiijjj6mzꥼUӇR233L2 жm[A:ڨٮ];tdI&:uΝ;|( އ.מ޺ukCk׮U1crss<)4)aDD… =zɴkkk{)]600PQR$Ҕ)Sܷo˗/vjt5cmzR3JfffbPG-#9;;gee)~;vUG*. .]ԧO]6o|޽QXXرcGE7ŅL&7nѣG_>|peCCϟ4IM;޽{ݺux(ɓ'7yhvm߾]qǎVVVj";;?..]jsJ7V[jlWHNNްaCFF eeeׯWuqq!11Q}ѣϟ?w^ů PTTTXXִilժ[ouecI*uVu+N;iҤ ;v죏>RCEDDwdժU{8yd@@͛cbbRiUs}ooqƍ3F?>Px,:w>>Y[[_^SCP7z}ȑÇbg3WL\\\v}}`(vC&HRccc ~X_ifݺuxݸqͭ\cHH̙3ES#Sqqq@kaaawܱ;ѓqLLLXXٳ-[&vuEݻwoӦc/\ԙJ_Ňv)T=|wǏ:ttԌ7#G9r)ԺzR3|.jPۨEjԌRA_ʟ6m崘\"N81p-[ZZZzzz:tHL&}zzz+?77wƌoCXXCf͚%Hݫ> ګtU=Vڱcs|}}mllLMM"""͛Ն}999b'ɓ'_rE :DOjơ ,;}&KKK5<{=z^ڞ߿O>kݺWjjT*-ghh̙3^^^E*۷olbbRӧO۲eݻwmmmL.ӧOvfAwa٪y:vXVb֬Y9x𠫫kii+O:fc̙SZZzҥoƍo˗ Zhakkkjj*vz?OBB۷Cf FGG;99mܸV;88,Zwҥoܸh/))W\Ce}:::fddDEEuرiӦ ڲeOHHHvvvHHAX|ǫMl2;TzJy433SY9S7fffZZxq 5|E;r<88xРA)))nnn...IIIcƌ d000022R\7j@yK*N0.::%=z{3gvyɂ T5 ;w剉vRTtA٢xyrVq<==w5|p ^z%''[)K$CCCss={nݺ4440z1|򨨨Xǟ>>oBBBSSS +ФIwwiӦ_>??_9z7xcÆ yA ,/wrW\>|x[g``0|cǎ=C~z]-ZлwiӦ(tpڴigΜqƳg϶n٭[6m,^x۶mr\ϯk׮#GohРA(ɘ1c:t```0zht_D"￳6mRi7MD(-]TejUׯ_MQ3//GIIIٽ{wftKKK Xzgzzι?رcA;v5k*>`9QQQʺv= UзoߊSiu+,,,**il@'5cLVXXXRR"v"++[n={,..VtrrR\fdddeeݽ{wȐ!666666 _>p@@@@NڶmsΓ'OH7|Sqaiiy֭vss;vlϯWXk E̺2ʗ9+mV۶?۵kl֬ٔ)S;v=zyڵkmmm{%˜1crss<~I&)֮aDD… =zlTloVq*-fff7il2{l;;jrhh֬Y_ @'5o|…bPG߿ 5'S?;jbbyQEAAKӵk͛ݻ? ;vf``dƍ}ZԪTVVxLvbbi7njJCU|-[Ҷm[{{5ݺgϞm۶gϞZ)U4dȐ +++=oodɒ:k ,tѣGcccGgϞ;vܹs',,[nFFFcǎ>}ѣG?~޽u;A ܚ6mZ}뭷?^l>InݪJKKo޼f͚6F… ᅪ͛6mZ1DDDwdժU{8yd@@͛cbbRiUOt}ooqƍ3FҗH߾}{֬YYYY?x9sZlٿJg޽{ݻw9<}gϞƨ h믿VD%IBB?s·fff~GdryYYYAA?Ǐ~<[:E"P Zf I)&&wƌ!!!SNU ҥKF]pرc.\hff֫WJOZZZFEE9Ǎ5q[ZZ>\$vء]sF>|ߢECl޼Ȩҙ\\\^7ZٳA==[ŕΟ;cƌ7|!,,Lnmmae2D/(~;w)""B˪nt5jtߋԌ/\7/VA)UH CXؿ>}LMMSSS׺uk//TTZOOP3gTo>88Ĥ%Oe˖w&''V+VKLLf JOj+W477_hQM^~]777FϼjĤ޽Yfj^3==][[ QQQacc>@M¢{W<}AlR :DOjZk۶ RmTl׮aaaiii{6klʔ)ǎyf=ѣGnkҿ[ũR4iҩ>|X}흙`]Tj[}kn;v찲rttT30;;?..]7o>wܧO*޿[jս{mo۶p\qhժն .jP{X"ZjϞ='O ؼysLLT*jǍ7fJ۷g͚/Ι3e˖a?իo߾9r H$wΝ>裏>bgϞFzyU@GP3ڦ'5cccc3335U^5#??߿Ĉjlݺիqqq;7jÇ-Z:thII͛ApuuMIIߝWX1~+FyxxdffVZ}ǝ;w֭[ DDDF:p@U@G|999Ǐ;=5y/@H8x8?O,BOPOkΝKMM}޸qæȗbk?Kڵk/qBUzrX&铝=z={O 67n\Yl]BBAӧ;88@I822|ɒ%ܹsrrT* qƪU^!cuĉW^;UPP_ jժAtZ&jA5j2sLJ)..~vcMLL6lBښi7ѣڍիW6mO?j7V[l9svc?.]h7vʕGb`~~ѣGGk4WD"A.֌/_`ϟ7hРe˖۷?qć~m޼y}n{j7666vڍwءuhnJJvcn:rHƆʕ+_d]kƉ/5;wj5Gj7VԌgѣGaaa;vP'f??sҤIZr=σi'O>wkgv^ֶ{ڍ: o% kkkl֬vc. h7IuO>|p->|oz] jP$a/^ԩYtԌ]lٺuʌF_ۋ IMM9r#~6?߿K,jm||ŋrw}8nܸ+W D5cE833׷srr:{عhOfеk״+Wb'1IX&hYq~Tj猁z"&&.::Z ĴiCf_W166<jYmmmv_b' ԺukC6뗙)v @mӓs@/Q3F.jPfllllff&J^)S̘1C DLLɓϝ;'v"z>HOO} =9g 5c@'5cLVXXXRR"v2Y;=߹sg=/[|ٲebPG>|xĉ+W@zann@O|AAAmڴ;ѓ1vI$ArA@oQ3J1]Ԍ066633JbPG(#Ą  ҴiSqqqԩS+ٳ >s#ԌziӦb'_.v'5cx%qॠf ԌKJJ KJJp'6olgg_:uj||AtԌ-[fnn|r#M4޽{v޻wO Զm[C6~LSuTj3z16j@wQ3ڦ'練Jfffb/ӨQ{ƍXjӧv*v]!zbСv9d M 5c@'5㒒BL&v2m߾_A]@I2778qҥKbP?~{]  j׮AtԌ7'Otuu ;%HAbE+2PO;6j@wQ3f(vC*@C 155;=ߞ:uO?uvv; Гss)((׿%vu1POڶhB ď?pU=@+s/59;;'''JNz_ytuuݴi>6d޼y۷J;w4iҝ;wӧOwttlܸq~V\s~)8qb-[|XyjǎkW55=d2fϞݣG s挗WTrΜ9kYYY``ӧIII]v]fM:dhh_(k*YSN串rʙ>}E4>1POM2E '|߭[7=/]|Ŋ/2IaaattƍoABBBCBBlllƏ?[J"={JJJ;wwwGGǕ+W>|Pl2;\rE^\\٤I/VI,Xuֽz:sLVdee8+Bffˏ?&j gϞM6СC֭y-Z|G ?XXX ˃ ⒔4f̘PLf###uF R 좣J$CCC[[gϞ;wN;w]vݾ}bYf]p[jFeff pΝ5JMrsrrTJu5Mv޽cǎbP>>=ѐ KKKݒH$}IOO|6ץKLncTj5]v-ZwӦMKIIQ…iiiFFF>{l֭ݺukӦŋmۦcƌСѣ-++/^a``ԪU"dEos̘1,Q+5bĈ'NlڴԩSݝ7oޭ[KϳgvAq}uAT+~U/&&&%%e͚5So>}t\\\ rssc 0v5k֨ի>k)Տ!00pϟ?_vmZk"00 >>:Tu5cmԌOVVVIIf={,..srrr\\ܞ={*Ufeeݽ{wȐ!666666Kw|MŅ[ʲ ~mM":uJ.+GES1j݌?/bժdϟ|Aۜm*ʷd+(~kN}4{{jdҤINsNzzk׮ի cƌU}zzz֭ǻ%4hќaDD… =zTVvrrrj:!@mӓT*533366zgggcc㬬,cǎ`hhF GU ܹ˗dժU{8yd@@͛cbbRiU߿=nܸ1cTh~ mw=rȩ$$$l߾zvy„ |Ըqa袢"˗/wY9ըQ#[[[+++?SBBBnnAtԌ___3fL:U>q[ZZ>|۶m<ŋ+m…cǎ]pY^ʽ~>/h֬ª"}=z6lѣXtɍ7ڵϨQjQ"H9ҷo_;;O:588X+&&۷766666V8~rgdd|YtQ4h_XB /A066~w###qIIL&366VZrƍ6 y+D7nh۶˝V7Vx_ަMzU3!...$$EfOMLLN@ۄ }׋>^վ}{ =ϝ;wҥK,3gY2͛ T?y5ԩ1Ԯ} HOO; 'M @GIҹs*޽;k֬-[~ ϟwuu裏D)^ t5c?nժgQQѲe:vb L&PFjP O矫( sr#ԌIX*+~<8##CHzǥb*WPP ٳgcbbLb`` v"O>9999i$WWW ^qww_N 4lP0\êMմiѣSWԨQnݚ/v]'ٵkWYY)^yFFFb@}7{쯿\￿gϞS0xY3nܸeeec5+ V.@[) ,WUFXVdmmaϲ2D/T5yo^*vyҤIwQ>}cƍrϟW帺nڴIq윜࠺SNVuW5Uj*xCf @¢W^ɽ{0riE1LȪbVy {g|]ڳgO[[ۦMvСuĉN-|||>5k֔3%%k׮P###ŧl٢._ dgg،?^1Ν;l޼y@@+W*>KIIw}Э IDATrʇ*-[ѱcGձIIIM4qqqxb +z>ÇWvpppvvNIIQ | ZnݫW/@5U5cmԌ joaÆ6ܾ};;;[BBBSSS +p+W >\,5SS TBu[Q{Og㢪o*0TsD@QQ1H-PBÎ4ЊJJDA3 )yaD20?803"= _3k{-zamO<񄍍 yJܹsnnn5}}}/]tmA=xqg}zhWW蜜8UUfϞ}Ųک}k9raaaK[nMKKJK,ϗ.]*ڵkWcBm"##ΝRPP0lذ#GZyy zJJɓ'W\GqW7J145[XXH$sss͵kAި(?={A f|~[ DӵkWAN|xѢEѣny~z5kV~LLL"""߿_UtoEWۣQXYYUU ɓ'/[lƍ(;w;xĉO:u3f|֭;w3fSL)Fc(66|8PPPpܹiӦOVVVV 5:.^:**;x*yG3iҤ~iƍ7o<|pdd tZQQq֭}}s166a޼y;rc=VVVß~ܯg522`'%%սlljj:uĪ۷o~Pĉ/_~K. k׮[P#G*++ݱcGӍ4j Lj#N:uW^yeȑׯ_ƏcȮ]^~zu}}}ϝ;T*Ν۩SO=jDDDIݻWcx 5: 8p%%%݃{+tBk|<^^^w>{ǿ_w:ӧ e˖zkΜ9 ܻwoݺuwZƓVVV:tҥ >y=tGR :ujxxD""""Ml2;;@U߿uakk7nҤIM: <a*---++q8SO=7߈!HHHr3<ӣG 9g&J׭['vͤ,99;\0>>5CBBy睦#чl͐Ah?)###A (hD7>dk LESIQ3f Ϧ1459glaa!HPFZ mۊزeKbbk-v}aD@KգGgg+WӧO߶m[||i/x65TkkG}ƚMi[`#Ne0{%4v͐v Zy65ֆgSpBS4RT(6 `qv Z0|۶m>|ڵk T...|򉯯L&1c1qqq~~~666}h ryTTO|||yyݻw:w}Ň޴UV%%%鞭*>>駟H$:uZrC1l0WW4H=ObbuQQQj JcgרN[1RRh&ق t޽.͛wk׮?Vd2LBj;wСC ŋoܸN2eԨQNrww_zs@@vv?(ɬtߴ~m۶MlͳWwܑH$IIIUUUKNN~]SSSJ[LMM322T^ Jcgm3T_:mw'++ϯ)& %$$dff@H  ݸq_~/C{*:\pA5##JTd+Vړ:vT*+**?ޤ؜={VuW*Uu87M]6[ݻw---nZPPPǻ,\P^ZdR,++H$ǎ@Z^i쬱iܸ;Vo={lJgSh:utܹo=SRRnݺ8bĈL޽{>)\^M1aJJJiiϝ;W\\:bj2dH]nٚmRwݱcW^yELcw0`z3mVUUu;;aÆqo ~4vX#Ɵ:mwꍗ@Sf oСC92L[OOO;;ӧO7)))gΜ򲲲022?Tw>Mw8[.{7nٳ3zcccѣG%$$M>]U;|hVW;kkF?uWͣXQ3F hjj:uĪ۷oݻW$&&&'N\|+++/]'®]nX3&,,,333111::z 92**,77wǎ[ٚm._P^^naa!Jmmm.'O^jՏ?Xa4vXy7j flaa!H@L׮]:thSK$oo'O'""bڴi˖- ,,,߿#Nn:__ߗ_~y!!!o  0nܸI&{gk*--}wqggg~gz3f㏃޽{^imϣXt5++رc5!Vn֭gƈ; ?ܡCUݱW^{[nٲ3Z-@|Z ثGŎ@BZ\!!!(y{1h=@K#vzT>Ҳ2 sssFs!CtԩSbg`~ÇS,DzeˤR駟~*vͤ"99ŋbд*++0Ç` PϦ"ݾ}˫SN7n; &ddd$a<34)55Zw;w6Oھ}oG~Z4jԨZ5RYQQ!v hEԌ-,,$A4em۶ >uڵvO>W&͘1ʕ+⸸8???}fddԸݻw:w]k֬dGޱc1$$$---$$100P[7=C&NBնoMX+V<} }haÆ:uJG7>Rt̘17ntqqؽ{ƥI8pӧmlludֶ9}VVVbbAٳg:uJ D -͛7Ax'7Λ7׮]?~ojd... "444((H>wܡC&$$(/޸q]GLfeejߵkWvvveddݿKpmݴi۶m[&NBնoMXLֽ{? 윚n=z8tPNN{pppNNΝ;---4QVIϷtkPP̙3ugֶ9 aӦMb#ԌHk C.\P}pppR*2lŊ;*ʊ {{ǏkEiizp>HFX[7=ZQ'סB4˾5be2YhhsQQu_pa]ָdO?ݻ]t5P'aڴiWk׮ӧudֱ9f P~j?:%%֭[ꖢLL&B޽Uyyy "%%E.4H-T'PT_ ̙B???3Ա[o&&o =VǾ5b7rrr:uĉu0`@]ؿՇN:9;;KRWӤu5kV@@@DDĞ={t#ݽ}gre6OOO;;ӧOkadd[VV6}t??k׮K&&&UUU<2yum֐}XZZ۷Fݪ$Z_|E{{=kgՂXXX<ӑź{*W6O0oذa<:>~SO̟?ڵk֬ ; *;v\xqԌȳ.]aÆ?7; 2gg?zcUWUUiQ O81uԡC@_HQ?x@-Xllŋk?=P?gώ ; 0;<ѣG>}Z-^QQQEE)TO׿dɒ7|XD`hy r)A++mۊS*zbdd4p@ooo Фhy㒒rKKK333:{n -FFF/߷o_UKEE˗E 8q"==}Сz; h#vƱdTqFh&ɩbPꂱs8.dggggg:thpp0cx65˫]v; {Mg3220@hm(#-]dddQQjeھ}XwTkkvعs#\cZzsݽ{W._tUwOk .kZ 9glaa!H^FdÆ - ЦM:7##C\_^^bŊ~O> DGG8P=ӧmllAXjURRz'|+f̘qUݻw}vG~KKKm6|pWW׵kS㢪Sݴs/^TYF&ڎ=zǎGG@={kOm=cǎٳg?~\ z@jq~~ٳP3Z6m@ttXdtR\׮];ABBB>gϞUVY&::Z˖-111ϟA:uo→:|'N}[ƦI҈UY~׈UVi ǯ]ȑ#O =EU믧hРXYY999:uJYfm߾bϞ=]tx޽{>)TAzj߿Ɛnwttttt1bDQQ\o95.TR^Ȑ!Cԗf̘ѫW]8p&{O˯R;@?Q3-ӧ7zxxXXX9sKDՇLUuСRۼyCyxx(t׳g޾}CM.dGZTM>/11ڵkĤ.=Iiu<d 5㒒\^^^.v̈́s@!ɜkiU1118qˏ?^YYyҥ<331cƄeff&&&FGG?^=믿-Zj5kVxx3gMVx#F ~'o^ԩSB IDATCCCn߾w^sj\ vںu#G*++ݱcj`aa\.񱵵MKK\'%%껺{>y@L<9&&fذab#R3^xT*;fҦM~ ]z5;;[DDDL6mٲevvv [_?~HH[ohѢuҲK|_|E{{GJӳgOooo񆝝]>SN H$'O=E}Wuذaƍ7i$U5k&L0hРŋO>AAA{> :w>>>b#FqJoܹ֭ ; hLfff<(//o۶mgsqq;vlK a˖-?|_bիW7o܀Ь 10T,wmԨQ:ٳYYYUUU}||ѣ"4<5cDҥK͛7nHrssݻ7x+W7EBh"R3H$b,--MT5l/_.=qƍWΝ;;ꫯ@_BBB֯_[o@_>ch@ExxxܹS...攚jmmOw hL8JJJ---SRRlll΢_nݺ7JRPֻCk&\ې!CG … RM$'''''@ή֡t۶mÇwuu]vmAAO>d3f̸r努8..Ʀo߾M.GEEǗWHHHZZZHHc``SM?ekXdˊ+t{XQQc""" zԩړmwu;>>^ =/^n_fL&=z;TwCc7@ǥߐ!Cz)Ax7AX~A4UH D"!??_[y?ڵkǏU2%33SPΝ;tЄBq7nhVc)S5*==ԩSW}/ww/Q<(H^Oj^CeeѣGg͚%Jud2_t҇nsjjmW^y%'''!!W^VVV& e2]H[XS=Cxxƞ}Cwz7=uq须D>c`AP"5ܺu_RTT)Aݻ>//OPA龩n))) *..x/uD}7׬Y3f5lݺ^S}}IOOxbZZڽ{ԗbcc?ZwumrR"mS꺹VlBBB||3g 4PnzP]ZyD"177;hdYYYvvvoСC9 FvvvO}S<<<,,,RRRT_Ϝ9*kcbb~ӧO0a‰'8q3Կ__~Ȑ!׮]Qw/))yvumxxx%%%iJ?P}U3l~~~׮] PnVT]۵kٳG fz h>0ݺusrrV355:ujhhhbbbUU۷ݫc6'._㕕.]˫c7331cƄeff&&&FGG?^w'%%*:nٲeӦM?_^{xm˗/ѣ/`?ÇWQ쫯y u6ȑ#®_/l߾] QQQeee;vPr[[۴ݻwkLjS[ݗ`N>o@H@+DJxxԩS%ɓ'u6mڲe mݺu/CBBz- JOOѣׯ߽{ٸq&O]ݿnV<`x(h*++۴_@~; 1@Ùq[ZZ4_O<h ywv7v?Jń \]],v=b Ϧ~7?O?tΜ9bgLXYYyccchB7nܹY9cЙ3gĎ9 zhR5jФFԌ---%A@#;qDVVVN<<___L6cƌ+Wڋlll훑qZryTTO|||yy{8::jkooo>TSL8%KX"++9w%""bذaNvwu;>>Z۟] Znݷ~۽{wGG1cꫂ ?SN+WԱއn#`!==sκ̛7׮]?~ojd... "444((H>wܡC&$$(/޸qCM2eԨQNrww_z{zADr'|P*++=:k,T:p7o6d2ggTw xWrrrzeeem!v5((wQ}oUܹ#Hݻ;m? b#Ԍ@?c=]6m۞={jT(:tpkFFCUURd+VP'%%uQTVTT?~\wmllΞ=y>k:* ;ֱovɶ#FߚngT.\{Qֿ>V3ֱjw޵ܺukAAzflW%%%喖fffbgի?S5v裏.]*BVV֫zYUT*3%%֭[ꖢLL&B޽Uyyy "%%E.4HwBRRRJKK===U_T\\lee^5^ج;of͚1cƨa֭R~ԴO>/^LKKw^ʀt/J.+JWWW^iJj$J{Μ9FZhрt- @&0;Rt˖-b|RRRi]~=;;B[DO;ҲFOww:t(or\GӺjaaaz///MALLLLr&L8qā41c723333::ڵk>>>M3*ƺaddꖔmz =oܸѳg3f^omA4hPppAԌBC*--;edd$:,[?SN MLL}޽{u7118qˏ?^YYyҥ:v3333fLXXXfffbbbttu߿굻nٲeӦM?_^{xm˗/ѣ/`?ÇWmL bnn>rȰׯ/۷o6C=v RVzuo#`ֈ5cAçN.HO<DDĴiӖ-[fggXXXXn֭}ϟ[oWPPPzz}@@G]~ݻƍ7yI&)k;v{cǶm۶vwٰaCϞ=,X`3<ꮖ?ٳg?3Ito#`7ظq ^uh&ڵ+***,,; &ꚞ֫W/9h- 䜱D"133;ӸG~!++Y }fϞ?@qDFFFFF4>#>>>5CBByQFM̙3=z1bYԌB3rrrNqg<<>cǎï_^?s.]7o߾999{yGGuvvήج,'''}kѣGVVV^rYƍ;wo _}qƍ5J,@]vڵbϟYWBVRRRֻzr~c+++}_;;;DR3V6}/BϿ6,In߾]ڵ}.\x޽!cA7V}XΝ;;Ԑ۽{wjjr@ks> 11Q[[[XXT3dȐ-uwҥiƊhZw}7""?^xY􅁜3ڌ5jԨQN6mڴk׮9s,ZVåVViZ!C|'O3fLaa'|ҭ[ŋӂ tʕ+b&L{~@:` 9g/^LNNVuxṟ̏?c`egg!0`@pp0cx1jȑ7oСQjjK!1220z@@ubGh@f e&e ϦH$fffblǎeee;v;CpCK/Y􅁜3ϟ6mA4DNxݐ ypC{ܐ-7~xx||r \v-22266W_]tL&;Q3_׮]233Νkllm6WW &x.NX3VҥKTToئM={'(((??_h/ f\RR"kc֭٪3ǎk׮( @?A_|1&&f̘1b#R3~뭷R;4^U9޴ii3gD.]\E[negg! ۷AO=z!v fܸqW\_m T*@CE5c-e$/;4)[ZZJ$333h>V":::++^;Cw͞=o;1'O,vȞx '''+++0ɱb#R3 qh45c-5c3qqq\.A@#?3&&&_;1o)JKh>O=T~iݹs';;b`ܯ_?@=ٳG&e f M1kԌIHR"ZS ϪU^y) IDAT0={G fgbɩ]vb`Ο?{9ꁚ1^Ԍ2qqq\.A@#{K0G;1o!Jw%v'===99D ݻw xzz_ z@jZ)Sxyyedd@222AT 5cר@f e&e 5cKKKDbff&v²M&vógG fq &@!JoF AJJJllٳgG f f pԌf 1@H͸X.?x@ }Λ7o;CČ;V z@jƳgϖJ{;ӫW~YZZ@Ӓr\ GppGL'v́@2sPQ3&E5jФ flee%Hڶm+b;w@TkkkShugyF599^رɓ'A(++3ҤGxXХK3g9sF}iFFF^;uT uCyyyiۇÇ{Շ:tؿ곯?m0$- ;CpȑٳgWb#R3?~AZRYQQk}?U!CX[[ٳȑ#;w~cnn^7??s>_x+ݻw3g;.Y b̙ŹoڴIc'O?tiӦ^z}[{ hbŊO-T*urr;Cp…27'\ػCGDr&P"Bd˹IF{53Cb[;ϬU3Rl,, cRN(L 9rJSzݮu=c]RiӦ߾}ׯ_|Yݥeĉϟ?!ƒ?>e-ʘ={vZZڞ={w=޽{Ǐj@yԌ_|||llg}vڐABBBCBBn߾9t꫶dɒu:t(11100PbffjlٲtRBٴiSMAx뭷O:z?2-*>>;w[ouMu͛7lؐZk~WUiV-[xzz...U޹s'--mc7)))eddJݺuoxxg>}:wQM٩2222e֭[A7nIeBE&.YmD2pʯG<{,..nժUvvv xwbbb :={ ڵk͚5={lӦիwޭT*UӧOԩԩSU/-**ڹsի b``ЪU+MWZաC77ӧWeL<''G}[n+**JNNV(LK.)JU+s2;ӥKm۷ŋꮾ}YY۷o/,,mӦ=--m۶ϪN*kv* x={tQHUK.=x >>^X-[X[[RM>===U[n>Y 8::6o|Ŋ 4P*O*=yLWv^tAs֭[gcc*v`Ĉaaa&L;ѓY}^7NNNV}=s挓RD=211qΜ9}zann~R(b-BϞ=5kXHD}6W>_4??-))ݻOe33oݺU}Xm޻wO]v666}kiiiooigAHII U=+---6lZTTm۶ sssss^z iӦ2 PY*g裏J ;veOu~qƅ rrrf?=;}УG??~@I͸4jhԨQ7oLJJ 4iO>gϞUo߾=nܸ2X.kIII%%%ݻJ˗/?qDqqիWݻ)ш#֯_cǎhvvBpqq155MIIJ :š3ԍ]vT%W_}uOOτ/|6l022tѿ{ԨQӧO/E3ۿÇ/+<<*3k׮oƇ~XYއd>gggnߺvZ5&+ +t f6l0dȐ &,\VϚ5+55cYYYK,׍7*\-((+((H.;;;y&sy3fXlYffΜ*"jqFLַoO:E/jaavɓ'h5sѣG[XX rYÇ'$$;Q3%я6mΝ;wQ2 TTTdeem6+UJJJëzĉo+WT}Ѯ]{E{|'N 45AAA+VX|ʕ+zHOriBCC۵k7rҍ 4Xl_|!Vhڵ˖- -Zv… 駟JӧO׭[֜3xyzljwnnnϞ=o.\XXX(P3x93j\~~~^^)갅 O:sl`` BVVH􁞼877ٳg 6T,]tƍyyybiԨ;StR_[o@wʕݻ;;;@W9ٳgGGGܹsʔ)<-ojQƍNQ=y򤸸.6mڴ#5OZl)ƍ]ttԩS˷:400ť#MDPcfܸqcNvz@T~'eb wwwQ"eԌFm~\J@ғ\.oذAT'RLfϞ=~xSSSG:tɓ+fy͛7@5S2Z sT_5<?,3tk\~]~i,KK˽{j]a2* -w#-*B]$ @"}:w> \ZnnnDDDӦM*U#G6mϚ5k4=F@]U޽+KF;w>>fff?AԞ;Դv.׮];t޽{---LLII uuu~mvqe+iӦVjժUޱcWr5Mo߅v/z/h۶ms̽zaӦMƖC HHHQ<;}еkW??@I@=f͚3ːH$_}Ձ<==.^nذHӬ{ԨQӧO/‚D" ?rȄ Ϙ1C}"W(3̀?|/يޅ&Ͻ ٿÇGÿ2#vo|)UE-?jPYÇOHHxĉGqI&ik׮=44u 2Jr޼yZz7vڳgOUopppE2 8vXswwiUѾB]y6m4q^z2h"**K&&&P&ԌFI_`'M{X7x{{Ϙ1Z;\.oذA@5?~|ZZL&;}pĉ;v k8pf޼y"eW\]]¦N*v'5cooo33@IOOpB;322ZtiUk׮Æ ; O>MOOH{{{???*{ׯ;N8uU^^^~~)>>e d+Vի iii"WN<4hbgzR3;xaׯ_߾}i}{{{upDB@MOj!D"SOrg11PݺukT@\ԌUԌ>rww_|9bԌsrr e2Y/\#;ꫯnڴo ҥAtHT3f8p@ jOzmff&vUa``P gMGPt?AtԌCV:k&v5@f t5c''۷uJtL&>1::̽WaY:EOg 5{Q>;P9cccc\ްaCj6hРm۶ifbbҫW7nP(֯_UPPlggjժAu} O`bbInn }ٳgs?!CܺuK՞hee5`۷Wx7//oquu_nǏYMh֭\n_v;T)))۷9sae|o۶US IDAT:u&LpY//ŋ_vk׮ lٲظ"""~kk뀀͛7 +JO>}~K,vںu-ZtuiY›*z٩SJ_*>>SNurrܹsHH/O2E0\>gel; _^RR2c =9g ꭢ;w^zȐ!ZzY\\ܪU ;Ĩ7K.Rw޹rJff\.غu 111fͪrӧOԩԩS<(B~~ÇW\ٶmAyyyU\\k׮5kٳM6W޽{׬J/jժ:M>]5y:O0aϞ=H%i2o;Dm ezگ_ϫ5-ꃱuBB ۷o/,,mӦs֭ꃅŽ{.]$B.]T}0ÇnjӾ}><''͛֬JtRT]ǎҥK۶mw W0^6l;Dm={l֬YbbbFGGƍ'''9sI餤$ՇGݼySUpcff[j:d\!GGGRzܹczann~R(/tSe.*Hܹ~q~~[RRݻw=<<ԧRiIIsjvIOj999 P %%%ؔ~rRs'N(..z{5j4jԨ7o&%%L4I={}ŋ{ieej :s h၁ˏ144Z`ARRRII_{n-kVxS ڵ+""Bu#F_>???33sǎ 4%%sYU}W˰UzY0^f PԌ*|}uΝ .bP -cg̘lٲf͚͜93;;[ 6 2d„ ./^aÆݻ7iҤ{|gΜ:zh  ֹsgggw}5kV~LPPWPP\.wvv>u5+q޽7nd}?~ԩSUk׮>>nRFFFƍ.[0B~z-OIIo߾FUaL ={3f+^|`ggjժ4?Μ9Pv<>!!"ehZ'+++00uQQQZyuڵkmmmMMMwءj,hjA o޼?ǎ+**rQ>}ȑ#SSSzkV=vܨ5k:uꔝ]2=kff֯_߿[[K.}v\tI дĉo߾}ر.]kZc̘1GUܵkWzzgߴi7nTiڟE@]D .ЫW/M,--/_z ++Rikkj*Uٳg[lT* -,,N8+((0119w֭[\ᵔ̩%R ҥL&xkjϞ=6mWue˖YYYUf{=-W)=@:yyy2ڵk?XSX5RBPPP#gΜ?w7JN=RS-E@]$3vDRi@rrÇnjnɹy󦭭 ݺuS5ZXXܻw(99YP_u+׳gO~͚5+77ظkI2ӵDvQF/#""7P}.!ݻwOMMrJJJ? /hk}[4P(Jz4-::p@uױcǢΜ9V iZ "ѓd2\nhh(vP4 ѣoKP*ٳgf_a7NNNV}=s挓`T*-))ynbooɓ'/p!CܺuK՞fbbҫW7nTl \\\ \?%%߿}3g533bϞ=ƌ3} ٭Z*--6w.88x غukgg稨(L'XΚ5kÆ qqq:th߾Q?~lgg7eA $[jzj-m􏞜3%K\vmݺu-{uT]?u@@@pp͛AW\9hРMVlbcc=z4w܇/2VVV^^^{_~EAO/#<<۷oNM٢EA6o޼gϞ=z0 [o)ӧOpWl"H5k_YYY?t萓ӓ'O% !%M-/;[͛7o޼yf4h_eFYZZ^|YƍVVV%%%JvժUg϶lRTZXX8qB{ ;wNu֭}Q}ZJG;w|nTRХKLvEKOٳgqqqӦM355>|Zs;{i>>)))Z6Btؑ1@ U4Ϙ1C jYlzyy-X ))䯿ڽ{Rs'N(..z{*9QFF yfRRRHHȤIӧٳgUK-Qm۶y7|3##/_ޱcǓ'OܻwoӦM)CUFqIӃ+T]~c 7nlfffjj~o#V5cArS1cƲe˚5k6s۰aÐ!C&LpB~[f͚jaa)ѣGCCCcbb5j4~iӦM:Uu2ƍČ7aÆ3ƍ;weռ%K+666Νꫯ'ѾT_?ʪu֙bgA-t钋KNNAzAOg,rA@5kѢEZZT'@\Νۼys>}fϞ-v]'#vP#R)...e-Z$JQ;V&?y1Ԍj۷NqgUfZ@P3KOMSXX( @( \.v Uѣ>};wN,>}؈@HJȑ#:?b%{Zjղe }G999W\iЀ*uUVVyoڸqӖ-[w%$$3̙3gZZZP]$ [n+G8pѣG[l_fddtI\1(=y1zL˖-KHHe˖/={ܪmѢEN<ܶm ԌIX&rCCCArrr```\\R466vwwכ4irAgg6mTm~)==jsܬ6wǎW\iӦu޽js׭[X ,߿.Yȑ#U' 6js|ͽ{Vm֭[ǍW111Uk׮ɓ'WmyDի|贴4JZ\p!<}P(6U9qۢE*|ݻwe2@&Mf &I+W.X`˖- 4h۶m.]d2Y0`@.iӦWmS۷U;f̘.]TmnRRRFFFy*nry>{js6lXQNHNN3g_-v'3&N8a„={@W9cx.wP5c@%;@),,dG*ʸyڵ ;*[n* Uֳgϰۋ@HU^Æ 駟9iZrʋ/ ԯ_Zݿ?lݺY, xD TzQQQݺu;vŋmll"##{%v./%"")44T jx~=y6&~~"˧NGX}ԐPsf\ZlmmbŊZ?}@So&M5j7++ǚz7onjj7##Çz۴i+hqFFF^[[6mK.oz;uꤩW^;`nݺi=z5:ISo\\\BBѣG8PS];W_qAM>>>ޯ;w/"::ZS;eMVԻl2M]5c9zR3dr\]>tЇ~6jԨA=?KO̙i_^S_~;& IDAThx@ܬtM?7nP*R ]|ѣܹs+^K,((vjhhW~Vjr&TM4z2ZSmڴݻ^-AussӲr utt4i^-A0` C522ԫeA=zt˖-5jzzzk߿>>>Zwtt2wܹZ;w-1c^6-[6ob))));vyܹskbb"r9cN/Ook*e*sܹsxxxqq@dzR3V(EEE*ǿ Zj=zC^3O@ףG0^f PԌǍgffvI-c6l0jԨaÆZ<5E{;wΝtkoĈb!87tcǎ=zW_; fO}Z jE޽۶m+v5.333==ٳgbPi^;T.jǏ;s9cǨ@͡f t5c9zR3nڴ\.Jy6z觟~JKKСAy)))sY~At#;Ç1b; Гs\<~x~~sRgg}5 jhh*ƾ⋊ӟ_ܹW|| :#66Vbyxxt2{+.-ZHGGĉJ̜93!!ƀj:pĉ:::jBE666QQQrUkѣ NR36f vvvڵtyqMhAffSUUUVV>{O<>uСC 8pIkkQF8p}EZ`x|QFUsݻϟ?@ՌK.-+++//={h''[*_]Rt۶mӭ[[>Z[l +WTs;@[ߜF͸nr|;w| AAAiiiAAAgΜΕ+WVRRk.uRO?H$7nۋwuUA vss+'mڵSNƍ۳g]*1!!!Ʃһ""" !11X|r|ر TUU͟?ܸq111]`Aiituu;*.o~̙ׯWsӳ[dɕ+W~WA9RUUe˖G޽{v[[E]vҥKKj2eJJJ۷Aw޹s^{5Uԯ]ZTm JNNιsܮ5/ӣf\^zڵ DDD888DDDܼy3::zȑz%і,Ysu֝x`ofzz֭[7lpUJ_Ҭ ۶moł߭[222&MT=ĉ޽V۷8P/...޾}oddπzU-GEEIREڷokm߾]' kMGGgСOv;-FG]rT*2d… cbb MII9t萾~_fK.]tҔ)S*[̚5Kʕ={YYY W!޺uKV6ls1=?sKKKK.mܸgx`^^ޒ%Klvux/qm3fX|I@@@QQH_~'M4}NjaaviӦ <>+ ի򊅅399Yq:z脄)S3ۧNRڿqҥK,–-[Lү_?ŏ,00߹sg˖-KLL<{l=2002663\pw@@G}T.\-Vqq_]9~m5ch::ױcǞ?o4hرC aQeecdd{뭷._,WZ__~Y|wVzw)--R 5kwtBKjh>{&%%(a۷o5OW_6m<4GG>}X1hǹs4fTkqPPP yy♚ve5.UVVfggwڵZ7[.]Ec*Qyxx1t1*--o߾*)Q3 ϯz˯cooY^^`DK3.***//7225TVVj:E?5=|P)Ͻ{BBB~Gy{{kNj7cƌ~i׮]C t[NNѣG;w+h: @K%5!C$&&O>}}4@spwwݻhZ^^^gΜF,m4u޽N:u־UGGD)S4۷Os]v}饗"##?C56I|v4ZX3^jժU4@#={vq^¦LrȑHjH@[@֌h]vUoڵ%KxJ@#@ђ, ׿?~,+SCڎΝ;k:Vƍ}Y=-Z,-YO<SVVS3KNNNddaè(hIYj%o91篿4hІ W/ӣf ر̙35MxFGQQ\.///t͇猁cܹgΜt^=6o̗T%5QFϚ^A4{effk:Vrܹ&LtwSh %-F5cZ~;wlaa/Bii2=z􈍍UzIpɓ':::_ xxx|5:Wo1˵k?.KKÇ4XJB*LtuJ34hu*-9qmllfΜPKJD"۟}E&oU\z{5ɣfW?~u.]ZVV7{z^=`dddbbbTT^##e˖5`#al-]./=ztc Ș7oի5ђӧ Z7.&&ݽ_~Ѿ ,(--5xܱcG]]]ťϜ9~;wѣG}Y77} 2!S(A={vFFơCjWiB*l\#GlrѻwVgkkhѢk׮]t>jhnn} ޼yܹs[nݵknbbb  gnzdA҂lmm[ݻ/޸q2KJJvnݺ]*~駞^^^~zvJ6m;v 6m$JcbbBBB b KNp@ݻw/22ȑ#ЂhIuVFFƤI7N8ݻiii!((P7nx{{hWEaHHȒ%Kʞr(hUjO'22gzR< \]qqqTTT*%Kz``5kjʕ+̙3qqqȑ#pppyfttظzy]|4<<*,Ysu֝>>,,lժU*dw@S]Q3Apww(޺u7ls1U}qF!׮]k7[[fϞy'\AV<*k'33̙3~~~ mݺz ?433۴iO?Ԯ]:/pݓJs̩ٳ999rΜ9#(+5mڴW_}g/fbk֬qqqҥKXX|}}{쩫;}t{yzz:::ZYYUPMiӦ;[nӧO_ugKKKcccW\ٽ{w///__:&“h6Ԍh] _Q<֭{cccC~:q~CΙ3'o?SKzzzᡡO[~}QQQ6EYN5[Q*TsuO9vXnnnbbQo&//F>}̜9?=HKPÇggg#G\fS0 99ec}}}??त.WbŊ+W~UuSnj~={4]5fff>| s꫚ЂhI@):z脄)S3ۧN:uoܸt)))UUU ,z7"^ >ȟYΞ=[àAƍ_k;TSWJ{5?ϖ-[Lү_?ţ́?Ν;kw^lYbbb/5h ,--t"ȑ# _|=g͚uU oo,Bhh_hh[>cƌ˗Uoj:Ǘ_~ihh8pI&M>INGGGh'hǯ_x…d1zO=zQN:,W_}{n___Mgms9ch:z8LMMd9jH5}ݦN-![3dh ˄*Yfs5ڦ=<<{|ZnjmЙ3gFwi: hΟ?6hР$Mgh)x75wF@k|5chf\XX(+**4@ik6.WWݻw7h-6PZWBnњbǖ,YbooӸhlmm7o޼dMhA4q92%%… ߿W^Ң-^Y)JUUUyyҫ@-ث:5s|XcJRYic5ԩܸ;PmМ9c%K֭377w֭['^kgghѢ[ tRL><--Ȩ) ;p@~~sss{=A|Ǐgdd[T U5^'Otuu-,,Ȩs[:tc޵~4ΪFNէNUݱf MJ+pႦh---/]$^~ƦJ"\RlONNܹsUUUYYE\\\#cccm߾}UUU%%%CCC OZ[wڥff۫;FEEsŋ+zK.*--555=w\* JigרS*s7o 6mjaUUUZnj###SSS==L&͝0aѣ>|.^} rL&˫)d%%%...ARRRSSSCgRUTl{effvᘘΝ;O2E|Y=00p׮]G1111bDJVJig52+ԩܸ;222O#hknݺ5o޼UVi:@ %5g;;;k:ĉ7&%...&&&M:sd2xzyWWWggg[nm褊Y֤KaԨQǏ?zX,{ǍWZZzhMuh#{UkTSRUcOظGܿ?22otDKjPCHHH# NJJ bŊ+W]vǏ IOOOJJ:u ۷3fKKKdڵkgϞ}Q:uԠY_իW>}: ^):U' jf @;eee 6v{hh_hh[||qg̘|r"AÇ76lk<{nfϾiIh}Y;;N:i:V_ ZR3Z42M4!6jZ+-))ٵkúu vT駟zzzJ$7n^^^~zBBB._h_vD"ԩӸq#6FSUڷ&]T*]r]g#F888$$$iӦcǚ?`ӦMR9&&Fj|""" hll\\\&T@딜,€^]pŋNoD*Ϛ5Kl_`aΞ=[^^~?ƀ&L<}D"100ߟcǎ]~]lwrrڻwvUTiߵkד ^Wվ5b%I>ŇDMx{{:ĉ7otwwwrr;w͛7ױcR?Ꞔ:\rE<5kٳgV9'#ApvvtDKj\pAWWڗ---/]$^~ƦJ"\RlONNܹsUUUYYE\\JJJ *}ZJŋƥK.]>}Z5> 3fxw`FFFj2ٜ>/4@͛7x`UsO:::CU\:{Ν;ϟ?_\\\TTtzvkO3?ԾW;5b%$$ ?pq⁕T6i̙~.]loofs\)5@Ν;W)Z@kջw]vվdnn.CX$Ք\\\LLLUupvvѹux^R//,oo謹_YOOnJ5z.Dվ=Mz.6))Icƌ˗ >|X_8pҤIӧO-,,֮];mڴg͚uU ooo5ݲ  fp5 QE=e,߰aC߾};vxС5W \zW^޳vf)~Xٳ?޽{%%% Ԍihǯ_G/) ZT[ZZj:VJ'Ntmllv1vXEc ܤ***Aܹŋ͛סC}r\.755555PLZ? ^bZq\\\~~>cεk(57n֭K/ -nHHxܥKo655` EFF*^AkjhVvvm-k֬tė-C4mڴ^z)N|[5<uPj{}k?oVpppN?/˚RP3Њ-XN_=tVT)ղefϞCYnԌjtQXXXQQall,OnnnffShr{ァ,Z7kk͛7i:@ %;99]|ҥK}tͤ$>>GҺuر]vNuС}Nъ}ϯ?,[lҥ|Ig%hnܸ1zh- hիWhׯG}+㏂ h@KC@k#PC֭[o޼8-vwwW5cIeee}x\}@ђh>Ԑ|G&LQ-͛7oԩ&&&sleeGi: @K%5ck)Ԍ-ѣk311` Q>}P3PВ1hy晨(@Sojf wththI͸P.WTTh:s@۱c{{0Muy!!!ЂhIxСfffW^tͧ}ӧhrkаY hܹsN -g MIIt ASXxs3OBm|x߾}A4hbDccbAV^O?H$7nBBBlll {nڵaݺuTI._h_vD"ԩӸq#6VCk=mQ3-ҥKm۶l2\mdd$BPPPllV^vڈE;vl޼ŋ'O_~_۶m100=WTTTdddZZYxx8gΜ~)<<|J/YdΝ֭;ydbbb/RU:EUodUV)mllbcc`iiillʕ+w뫸4mڴݻ7nɇRzvSo;rܽ{w޼y-ӒqBBB~~~޽54>ccc;;;ss2L.~~~III?x`C%Inj~={7rwwN:Urb}WM>mВQ3Xxx3/_nbbPTT$† <=='O;[ ۱cpW^y¢A6oܫW/77{LLLj 555ussE};|嗆4iF kN6m|bYf]z[M>vd:ZŠ ccc]]]MglK.Yjӌ#J'NXRyy͎;Ǝ\߾}SdдϘiӦi: @K%<Uv[n]~~{=5s9;;T IDAT'Nx_iӦ/־~߾}ٳ믿+:HҊ 6888 4hҥIIIoF~~~vTE1uLL̀lllN:5}^z=Р}iIիiii{t$77_o5@ڻw믿>}VTT؜hР5kּ b)S|' | .w ]vݾ}Hj H$K,Q @+{MT}L&͝0aÇDt*ENNNyyL&V?n2DQ4hЬY ΥWv5Q]vk9sx\c{˗/矊K łx>RugϞݹs狋TV3-'nM..y*$&&Ni7gg:d2󮮮bX==:VTTO6uiiWRRRVVv5cҩ'%%UVV޿jYbE\\\EEŕ+Wrrr٭]vǏ IOOOJJ:u HNNjرc֭o۷k^ۊ+z?,Z(''g˖-FՓHէ.**:uJKKZ-j:h|ƍذaCK~~~nnn 1cMLLmÆ 'O~wz-s͚5իު9sfƍ111ڵ4ioaĉw܉8q?ITQ{էXvi?\@ y-[LAZ.̴tBK3:z=@[^1((wHh~Ԍ@eccsMMMҒwS Mᄈ7oh7o'h:@ %8׮]H$1BY4+33ݻ322;wS,ZR35iPUU jH@ۡ߻oj0gg}iFAARSS h5cҩꫯjD-NnnfTUUi6諯nmi-ghITWWWA43OOό[ٳd׮]֭+((ۥR駟~)Hoܸ!GGG{yyJUM._}Ν=R3WPPPZZZPPm@@0aukXtT*]reFFFsT* 1bCBBYv9|pSSS++0U?>q Ç۷opppvvخj9e||xxW85V{kJ$N:7nϞ=kkk77˗/^Dh\yyy[t$U: `jj 4?wt…^^^/^ʚ:uo-K$T^^^S?޽{zqSS}͚5={,**Rz{ gΜ3g٠A֯_hg$}jjY~رcFFFׯ_۽'LyiD"΢Ήиn޼)Bn4f f k喖.]O_nccSYYYUU%HV\)'''wܹ"..NJ=z… NsUoWMԪEŋ׌?~|_SNG_ng/^~Qyyy;v*((s`Çڵ}V3ljƪƩ:ZP ,:ޭ[Aڵ ZnjmPL&͝0aѣ>|.^} rL&\簵dtРA)))ŪjP#GT_CTTj\۷s.]Ϧ/111;w2eJrr;;U[ݠaP3biJ={600w]v=rŋAVbСL45j@K8998qrD"Q$11QJ9;;wA&ϟwuu500P3^eeeQ+**M?9rD큁?Ttwƍ⒞t;#խsQF:~ѫW@5%%%CUVdccs}_~QGJKKş$ -V^D@3Вqaa\.t͇猁#!!_}7}}}??त}rk:uVlll@@@vZhr˗wQ&;wO>QsKFEE<>>^y[iۄsZYY? `ڴiʃOOqÆ SN6lزejO?|Pڍ=yؽ{h7v̙ڍ_1cԌeH ׯO?7Ο?߭[7h%ڵXnʌܞz) :׬Y#˵… WnܸO>ڍ JKKnlLLvc/99Y?{'NhwP*,,\du+ dŎ={VyP*޸qƍϟ?_ki]onl{w}W&^Z%@* kkk##@[P(*w>w :uy*\2n8\~ao=/̓+ fqƍnݺ@+=zD"IJJjOrrի~~ҥKbgC#;8NI$w}ϱc['"HA0/is;99sfԨQ#F@akk+vMBZNSL6lرcǮ\ᅨh1ٛȨ-[v1e7x#""޾u3-u=##]vbz-++>H,BbKv.\555TіTTT4jaaӔw-))iSNfffy;N'۩S;޽{W,`kk׮ݻwoUUqもj۷oN;ӧk:th.]k=vXfffc~W\iu„ r}]t3fׯm۶?~%nܸ155օ 6{~huʕ#Glu}]c׿FXkDDđ#Gkݼy?X/XΝ;k m5&&fԩP޽{;vttt; 0k+..PVA*../:=ל6nܨ^f}vcԌۧflnԌk5cf|q5c{95uߦ=}t\\\c'OVS3_[7hΜ95 Νf{|'XGY;[^^fqQKKK5rMLLZhlNYd,4 \g믿111 B*:;;>wŊ?>uTcokݾ}{ZZZcsn)kF>s2%6e=/fSAțqnnÇkرecMM:c f\XXP(T6l]^^nbb2mڴwyG"Zy󦟟_׮]O<)vlϞ=fff!!!bgR3֭q ww:M++Wٳ14Ǐ[^^ΗEP(233KJJ@@H@t!#h lD-y@Q3C:jr dojkkk[[[i A066;ѣ oܸQ,B’mDAAM~~Yt suP5ch@%;@(,,T(FFT04%%%tYGGGkN :DbҥKNNNvvY~rȑ&&&bgЂ>|heeeiiY\\,v04@4q<[[[hADvr1je$;ٛںȈ8,##CY9(++[`٦M+$,֭[Y)S؈@ 122H$ B,`h d1)..NZ@a'gh=Rch!7uii%p ׅ*vm޼Y,BzmģG,,,KJJ+X `{@E.GaaB62 ݻwYY˗@DGGK fa V\nggߌZB_|yjy󦿿Ν'L v!ǎ+++;wƍLA Rixx/,vuKMMMUU&,YґK9::モH$p@cfΜyͬ]@R14;YgM6gϞ= DDDGDDKǏwD"_5? r|ڵ|G֭4i|˗/oܸaѢE7oܸq;/BnnnbbkRRӽ{Y?Iv7xxx,^822rǎݜd 裏(A֯_իW#G2ѣOb IDAT5kք LMM-yb 댭mmm3]V.>|Y&--->>-՟- ੧J ,tRNNNuuuLL ХK{}ʨSN֭ɸq&Mߔy͜9GӧO?r䈚4%yꌚ:uرcܦO~_nnnAAA?ڎ_~%##\ [UUܹs_{5Yg|M]ptʷC ={vIIE߲eKjjg۷򸅅GJJL&:Ç]\}o߾]UU%67%y4h򅳳L&SUúCpww;CP]]m6SSbgXC^^^۷p3gLTP(T=SSSΝ_d2-&ӧ/]6bĈ;889r䏿v666V(++ ?}͛7'O ai46 5cD@}mfljj:~իW_vӛ7o2eiРAgϞUVd㏀-[hw6A>pݥK0$88x…OV(;p@X[[չvH͓hN-u \۪ 7iҤ7|3""_W={o8yfݻիWnjjժaÆ 233322<<\HZ_Nrss޽۱cGAa1^IIIEE)Z[QQQ٠u2,##Ac*@:ch!޽{W^uttT9wܘ1cM=z$v =s֭8pAj777cccc W_522O+ f\_jj*K vډuСMUM lrww_lYhhi+zD*VVV@Wl͸X\@3())sgϞ^``(ީJUUUbg}{yglmm{j8nvjjj͛7nܸX޽{̙/++򵹹l֬Y2lӦM ^СC-ׯܹsAh |555۷o?x;wwAuDIs1%T*uww_x+W.^] ȈעU555syf̘aooߧOz>$(@ 1_h"""֭[aÆ͛7>~qҤIʃ˗/߳gƍ=zjU;vDEEoߟ7o+r5A6oܫW͛7w<ɮ]mۖngg,o~~o0Qs[T^}U8pNϬ'>pΝtMf'JСC__ |ٚs۶mAAA ٳg-KIIɮ]r&---W^|׵oդ͛7322&ODgddtE [MMܹs_y_v-//A Zu\v\.>| bccUO=T*]`Krrrcbb֯_?`.]{P<00SN֭ɸq&M̜9GӧOW>L$IyyyzzzqqD(յݼySo5y4uTTTllClllt ݺuL&OLLT933 ر㱋Y7lؠ;99mݺԩSϬfllEc{*o*d;.]xxx۶m۶mNC f mR_3pBiio VRR|۷o_  .wwwwww=zÇKoA'N>S]v'9'ӧ򅣣۷64.!!!66s΁maD[[[׆6sVڵ ݶo+11qҥ-mؼkgΜulgyxx :T3gfff|wڵ#Fȑ#%??SX,$$7oޜ|?ٳghhhNDmQ;wMCjVrssd_}U NNNzR3-[VjaŊu*UUU-k[=Rŝprrۿ]RRRǏ߫}cǶnzΝO:Ȩ?M67xNjzJ$۷?~|ʔ)qqq7oLMMU)R3.((g9uDEEM47ߌxUMK.ׯ9k֬ ^fСC\aÆS6lٲe!!!ٳgo'Oz饗VZUȐ!CƍѣOU}O??Kv_P|7LDcƌdׯ_;aY>>uFDD,ZH},,,rҥK{Q|7nݺ>OG"ũz9rD"x{{kw-UWWYfo3Yq f JJJ1be\\ѣG]\\FgffV+__tiԨQŵdggwm޼y ^ɓޕ}QVV .hpɒ%/&oic'JQQѡC~~ ܕ$T*2dHLLg ܺukvvv.]޽{Ʌ ~7Z\vwwŋرŋol?33Ʈ3.((g1qܹ"""҆sׯO 5CCCn*UM2g}6??~&  g}Vg7'dgguSNOV͇>?333@͙3'<<_f0R36EDD5ʕ+p] \򭛛K.޽n:9s~˩Sj7I5ki}~%P^;s̭[@ĉVVV4UF3JLLtqqټysړUx{{O/x(j777LW_>ԫW/5Ӄl]v޽׼Hfeegg:&L呑1oEg +VTTTM{uu ` ?9{l_KovJIIQ5՟lcJ= =EZ5cz5kHO>9|pPPPJJO?wި(33Fݿ!!!3g,d۶m}ݤI´_|QjI꟡NBQÇ~i&5!kBx,ݹsg.\xիW~Ν;=)s;{3>|XgEoYk2gZu{֬Y+WT??of˖-\B/P3b 5c[[[IE=:%%(00p̘1IIISLQ3$&&ƍi.^`??;;;˽{0`522I?ĽN'N0dȐq=zH{Q+Ϣ1yaaaPPPǎ'LPZZw^711ѣܹs^fpMeaaߡCßZuX"55U5'[Cycbb{UMgddxyyޛ7oܹs+$zԩaÆ!n1bD@@ƍn2ݳvUVVVTTx:cm{ rvv>v옵uVVYcǎMMM;]3FqԩÇ9h"QԦ КWׅ-޽{_zu̘1VbԴ]vbg Ԍ1#F_|QzѫWr EQ3@.((ϧ ޙ1cF߾}s:ݦO.Ξ=RT @jvvvEEEbЪ omm-v322Zti#)))njs);wdff>z04aaaFFO!ƍŎPRRRQQ!vVTTT]]-vV2x`LQ`RRRRRѣWZ5|pD"{@f @_;wn̘1bhm嬳D?s>@ f @_UUU狝¢]vbhm:t066;E+((h}ʔ)1115chݫ{QQѡCh%UUUbhmbYnnGIII={|n߾]ZZڹsۋx+++lbbb"v` 5cV\˗ j߾}YYYiiYt5c nݺ)vyٲerju:@-FbmWAA͛׭[pBQ ϟ;w,BYY!ݻwOLLl#U._zH___XWWYf0iҤ@ز>}Yv.]9sFMNũz9rD"x{{+ߪ0p7x֭[jnʕ+[gFW\Q?uꔪSBB.Ꚛgg+WlcS7<2Vnݺŋ[XX9{lL7{#FXZZE n IDAT=zeԨQqqqfff?KFU\Kvvvn͛N<]YYGeeem߾pႲ߮LNNJaaa l۶-55u׮]VVV+V~ SS0r>SuޱcSO=U{׮]Osrrzkxt%KjgOOOq{{ŋk1gϞС\.dN-[DGG@WnnnEEE:t; O? 8N,1g##vL5 ySSS3o޼q*޽d/򠱱 UUUf͒d6mjT߿nD*/^xǎ/^߿Ν;|}}oܸcǎ~ظv˗˗/ݻO&00p֭]t{ɓ'.\7ߨΠݐ!Cbbb\\\ϟjrtlcs ۵kW|||U̮o_=aM&[۔_~Y@h,Y2j(,zGÂbȘ8qbwIOO qqqRi_Ży'O\rF*%%%vRR2cƌ@dΝu0fffӦM۹s wP|QQQi<#GldgguSN*[ݻr|Μ9^xq˖-5 #BXXP(>3j<Śg| ^'qtttׯ?x`СLtm <Z@П] \򭛛K.6y6aΜ9?sbb͛U۷oߣG}6ݻcǎUIeooj*###F?'lmm(c3U:uT&Tf͚"AqouBB /XidOM~NHֶ}`DGGgdd7id2W_}U`BBS^ LOO ڲeKtڵ{s\Uprrۿ]RRRԟPٿ]viF),,ٳ՟C "&c\\u„ r<22RuD[BC?591xϟ;wnyyAtԌ[@h;<<<͛O>9|pPPPJJO?wި(33Fݿ!!!3g,I$m۶}w&M ^|: gAݻYV\ټs"LHHHRRRxxx3TUU={vƌ>U'[]]]*:>M66|V߻wŋӠ~S?'oΝ۶m;011=ztJJJQQQ``1cLfHLL̍7l]x~~~iii555wvv~{=`=WXzĉ晛a,,,;tPobbңGs:99]zUMYֿ-C 7nܣGhvJ{<_{'tmZ 5f̘G=Z,k„ !!!bi[lR]]޾}'heebKK_Xg @ F /͙|yYTTT]]݌'())i PXXP(^,((h첲f/7 KKKʚlvvvEEEu.[l֭˖- jtRRRmaa!v<Ξ=MF"(Z+..jtСCj?beee6m2331010<Ç;cXZZ69;t`ll܌'l׮]N/BZ[[5XLMM͛ 4uo߾O(m}UyW3227 4hժUƍsںΦm{S5hР=TÑP`%Kyk񚚚GWsn/_V>xry%SSS\9r^zoڴo߾>>>{)//W[n;v n*˽bcc1@0u55548#,Ynݺ@ 555 ko?B>ر#>> ?x ...//o޼yo룢z|O:uرnnnӧO|/77 {{ɧ Ђ f mZzQRRR=G}9wU0gΜҷo_AlpBiio VRR|;h gggLfggzr` {SF@2beeZ򅗗W/\-™3g-,,Z!@b1=F h;@ט?~׮];}͛L"v(m:cSSݕ_|A轅 >zhƍMu# ժUd2_|!vzoÆ bR4Ν;@ׯ_AAAǎeff{饗Ď[ f mzwĎ=ٛ6jZ+7Oc͆@1ԌITVV* ;3*vzoѢEs}nG oذzܸqSܳg3cPAAA4442eJ@@@ff zzz 555bXtoo+W+755}qqqnnnvvv<8x`llرcW\8e޼yC ן;wCE9sX0/Z"L6f̘VuuuQ kkkݿ/↍MeeeSSʑH@Q3 ZZZ??@E?;;ڵkCU~zbbʹi߿r|OOOKK˓'O*7zxxN211igNMe$tf,d2S:99h;.߱cC{9b9F&y{{[XX+|܆ccc+++ FFF}Ijjjڎo``0{7;v󕕕FFFSN.))ONN5kVsݻsNuPӑՃ@:W_}uumd2YYY_BBB,Yҳgχ\p lllmllƌnݺO]]]ddd>} o߮}ХUTTx{{j _zV(ӑD"eիW/\JAtyoݻw{=ssNT*^|Ӧx$:R3~#;+++ ݻw߸q#&&3kO3g f F@+Ԍta/:OvL//={(vsrr^xqȑ#3d2L$%%999%&&j;.۱cy\.oll|q5klDDDEE=>>~„ yyy2,11;--AV[[k.???ss#F\tIݻwnݺΝ;b紴K$;;8 m ^\\_K`kkwyA-,,L'<7o|iqѣ2lҤI/\YY7ߴs̘1|SS{M] 7|Sqk Ƴh=dȐ͛7( WUU۷zٲe7o~~M6?Lȟ~i֭֫W.//ߺukUUoqa//w Q?nݺ9suJgggARiNNT*=rܹsKooogAƍm޼yk֬)))G޵kW``i4$MG31>}a V\y9Eu̙buqq;vʕ+322AhjjO|}}욛ݻeOOO{{r==⚚ #F-uԉ),,444!((hSL |+?~Ȑ!-C o_Vfcc3y]v аwް4$1 777qdРAyyy-EEEuuuQ kkkd237oޜ6mĉݻWRRbeeѯ_3gwllK]ӷmۖmii)憅 6gΜy+:88( 0@aaawnii9p ѐt4K$D,[t[vҥKo߾ݞFuuuIIɸq]}}}qظH=uꔗɓ'Gsww>t?d2׮]:t6\ AKKɓ'.]g999-!!!~~~偁_Qw -[*hʔ)v Q}mۼd2ooo V~>Vn矇6᫯yG9 h:R3'nڵIII>l^Խa7))7 `ժU˗/ϟeiiZSS#BLLLpppLLD"=z'AӧSAA5>R ^p&00pUUU?\t&!!!((h̘1֭ ykm삂!Ž=:v؁=9 hz< @!J]VQQѿ=]\\O9*77ǎ[|s>z<z QQQ ɐd H$m"55wYhQdd}ZKKKmydo#^Z+yA ;vloo$qHƦI___Yt/VTTHRmgб޽[VVk;.o޼yyMR˗;gv^{=mrx65.,11/vN|ة\.v5Ԍ@@:5c]5$:Ԍ%D"v }FEEi;.oݺuK.dOvX#==][@[ni;@N@|'W^ݰa:}'3n>>>[ns^[[k.???ss#F\tIlqɓ~Q&%&&y{{544+<<8<<144Tggg )S|'iiiǏH$vvvqqqƹ}Ohhhccrg {f UO?mݺz[naEEE6m?~|qq VOMM!<׺ L͸wVVVkt7~~~ݻw͛{W,YbjjC.A&9;;{zzZZZ|ҤI555 ݻwΝtCԌ@@@狉 H$G>q?(KKP@NRRo@@U×/_… /\`cchcc4f̘uօ}"##TPP}v  'ɾˬ?t7zo=z---?(xE}:EGjƽ{UUUԌI555n233v]뫪[Y :R38p˗WGGGnzj0vFR˗C󈯳yK ԌґL&dN:oj;.;i 5c\neeջwom~篾ʕ+֖ݸqCAtys]dt8%++Ch^xA=rn tQP3m}QO!\ب6mڤxEDDDllvP3]5c%66v>lDDDEE=>>~„ yyy2,11;--AV[[k.???ss#F\tIݻwnݺΝ;b紴K$;;8 m ^\\_K`kkwyKrAqɓ~ Tj{?nj萟ojjz=u=*&M$+++VZG 3v!?2d͛N>-fff \UUo߾e˖ݼySuEEE6m?~|qq4ȟ~i֭֫W.//ߺukUUoqa//w Q?nݺ9s5JgggLrAؼysBBBjjUSSSEj;k7oޚ5kJJJ*®]MMMe/L7nܸ___.H;C}D"h;(/rii?OmmذaҥnjOӧ6`ʕΝS]gΜ)}Z^|y۶mpuhԊk444|W7o|PQ]ÇÇo;?$5c]vڤg}W^*$%%Z*<<|b{||󣢢,--CCCkjjA H$G>q uuu}qrr*((ؾ}G p .߿*22RK.MeBuZpaaaG;v*3zpwAAO!t"AH$S_w?,:VNN믿K/޽;gsss=]\\O9紴O?vϝ;'~<VVVMMMS v ;vloocЭP3]5cŋڎH˗/?iw=z888ۊ ~=@Ӂ{mnn׿u떶qׯVYtm7nqFLLL߾}੠ 5ch'gg璒K. :TY <tמ={gϞ555}>3Gzzz{Fym__#GD;~g}6""Bl߼yӧێ2:UUU=zs폴2,11;-- x**<<8<<144TÒ=zT&M4I}+++qȑ#[nհht-dd2A$w-X`bbbn߾ݷo_ݪxÇ{yyݽ{Tl駟njmmzrv~M6?L *lK*H#G̝;KV?8;;{Ȑ!7oPY*Vx'N._\HK^UUo߾e˖ݼySQo+++""BúЕȻ>an=zTAtÇ 0qDm]TUUkΝwQ4655KRiKKKccͱcZ ҷoǏ&&&ⶳ5k4Є?FDD322z\.vDuiU355Uċ⑖ܼ@裏F'o< k駟XnGccc'Onx65.liii=UXYYeeeeddo̙mEEE7oޜ6mĉݻWRRRTT$ƌV7ʳrss† p3g(&&& S7#={\.W >n8ͱU^TTTWW)5QouƍkzzzJVݻwΝFGG{xx:gϞ/bbbb}}}EE'|9N]RRvڤg}W^mO/4-//_155}g̘1w܇V9xRRo@@U×/_og< kp .j+>\Gwڥ.]⢢6l,kpuupBqqaôqqq>}c>T]ZKK[JJcǎ-_ܹst>cϪxR.^HXGQQQE XYY=3 S 8IAtQf͚O]̙M@7sȳnf @+~ɓ'ĉ 2xjkkUӪfbWROnnnW9T*ݹsbIOOogٰar3jXA6l0p={>|7nύpuu533{nk:5cP392n8SS}>|ٳgVX!n;w߿FիWl2uYFgggwoS//ʕ+~ٳgzUΨbAx嗿7nٳDq{vQZZbŊ:?U]SSF_~%00Uy C݌\muT.=f6Сtf OVyy ʍ+WzzRRRFF_|aiigBB-ZH__ǎʍ&Lhe<"3j6k֬~aϞ=gϞݴiS6lܸq 0jvA'N(7 |nNNڵk333</>^A|||LLݻw}CG(.n{5366JjTT||oF <@k prrϕlmm]]]5X\\<{m۶g"333ھbW^qqqW888 cݖ}t A ***[5^ Mt.Ԍ$lԐٹgv]^lllEEETTT*IR˗@W³+++@gf t<̠A:@WeffTUUi;Bj?1.P3~ɓ'ĉ 2xjkkUӪŋmVVb~ ptt455uss y뭷:rvT`R9`@@̙3Gh\]Ѕ\.dov_Aty6lرcC{9rdܸq;|p׳gϚ?XB>wW8pٲe&&&fYf)b{޽z-|7^^^+W>ógvrwwOMMmuh'N000XhQ;0%%ɓ;wTkffo*YYYKݗ*{{{????aeeeSV\lٲ)Sddd-v244\b/ljj*6*vAPl755-X)11QDNWXhΝ;333[K,;xһwt ߢ;p\.ǎ{u[[[!===GGǷz+55tww衶Z[[Gg_SSSϜ9tp1nkG}׵@:ٕ+WJKKg̘8}ׯgW۷|U4:::22Q_~ l_sRٳg9rС[ܹť=TK/aaa[la„v] } *Y>zHÀ7oqㆋŋ< .1N ‰'h>7''gڵvg+200{Q}e IDATkAF-¼yʾV?99m4 hllKII5w۾}{vvٳΜ9+))gϞߧN2o޼z%ܬܳU{/11F,%%ѣsNaa[ݣ,/n޼yIŭ)))yUUUÇ_` |.DjM81//ݻ3g|^zȑYfi8e޽mیQ)=sss[u5jԔ)S߿h-,,+V{׆v?p̙#FPַoߴ~'O |]}xyy=<t>>>zzzzzzRtʯT#==#sdkϞ=4x++:#x"PDjr\&ݾ}[A@G~Ӹqs7668q`ѢEO$\.oll|cv7CuYs_~; i3 PQQƖ-[@WB͸^Atk׮}W.\vˏ9[ouE uuuwquuݺu;wA/..wtt ĉ8ⶋK|| \]]\\\}]___gg簰_~U#'$$8;;[XXL2O>i>>>* 6~xDbggv?mKR[[k.???ss#F\tIݺiRAnܸ1ydkkki2,11;--AGPUU-JǎgE锩\v~$g4uΏC?Su͛7>}Zhq;OJ@@%K;h|R6V^ݵ:K`jj :ێ;AXdp {A&Lo{EFF+W9s|֬YoO?U޷oǏ&&&ⶳٳg...%%%MMM .l{-++{_|affv%P˗]]]---oNR3ULLLw}WGr:㌦rU]c%jHGq;ljݖ r\At'xg?99Y7oN6M|ĉݻWRRHöz_qƦI鹹aaaÆ spp8p3gRRRxVVVYYY9sg &&& kO"L6fzF%n+/b <== kkk xYA &9=ӉT۟GMjDOD'BjzzzRA@G.--=uccbbbkk뛞sNևRS&9;; ```Ң8W*޺uK<#P>$$/??<00P4hcc3mڴ !vvk׆r|qdܸqG%w֬Y'CB@ExO<#HF} … /\`cc(ҥKݧO>gΜǙZyd1cƬ[.$$UgCCd2i"##TPP}v]6))gիWfffϟ??**244FuJۿ>IIIV _|خGcǎC=7?~Fݺ#񘣩\v~ڳƟC{tNg2ݫW/7&Olmm/7oV<>--m...Թ*::GV[dD777ooﴴwuvvVNXWW{nWW׭[޹sG嵗G߾}#""***AHNNV<]'O}h|0i$++S޹s>pqqP|eVQ),,/..wttƯ2jEE:mڴy橼&$$8;;[XXL2O>QԼo mllT9:B{RG `m.?vڣ|T=uT;⋫WVnqvv4hPVVֵkfϞpB۽{\.%x۷ᇶ>RiӦ=zDl7oK/tI"KIIISSSDD"ʕ+Μ9S^^>k֬7x\A_tȑ#ryuu> .\hs,>}ɒ%/_NOOիW}}\.۷kqwwOC-H~-[ 2m ݻ_|񅙙٥K4, reWW׷~[ 3@VPPPZZ_M2Eۉ^y;;_СC544XXX1BP\__;p@???ŝ<8x`llرcW\y 2D__ܹb{nٲ>..nrUk6m+ҧO D(~]6##c…VfҤI ;wO?; 0`ٽ{>~CNf}V\\;{xx]rEs+gall\TT%©SLLLnmm}Сݩp ܹs_~_⋏>HM!Joݺ%nV<4jsssHHHPPÇ8+HyD ŋd2OLLܳgϴi>s{Up1nkĉG}뭷@/644YiC;_LLLOv##SFGG'''Ϛ5KD---nڿʞ/n޼.JŋĜ:uj]6&Oo*G)WXs蚚?855^zdŊxkX|##>|ҤI555z.1..22O>NNN۷o?cjjϘ1cܹ$__߀UV/_\sD2z'No&$$^p_<K.533sww>}9s .pႍM``_m222f̘ꫯΝ;ՃUhcc4f̘uօ}4/azz%t^kjjy65:޽{fff$J?I&i; xt>c===Dbii իT͗Byy_~4񹸸dee=1Ϟ=kjj*n{yyٳQGHOOs?+z$Һ%?ҥKʴٶmۀ^z%mO<N:P= رѣ⓮rySScѓ]f'2𒻄pqqP9׍|PQIH'!ߍ Sb3F{m &> ofqmd3?;? ""U$E|8z9^u]:z>gݻ  ~dDDƍ=<<꫾}5o޼Mvŋ'*((ذao۶m.]k[HHHRRRHH%DEE[T:99-\8999Ǐ/***?K4|GGGU۩ˌ&J-^ҫZ[׫ zyy]vF$~. ,ݻwBCC322ri/I\x[ e9;;,1/F P;L0aƌCwwwJuy1cxʕ8OOϯZm߾}7o4i͛77mdiiYXXXfwwwWW۷o5j„ 7oNMM}={4hp5}P}#F:tJws6l}:uZ>wܭ[}iӦݻ篿?4J%%%999gϞ'ܱc͛7۶m矋MQf=ŲIҸqcǎ>9sFeF[JsݬX)S曱/^}1I|IZlTTTK.o4iףGAN8!w}>| O>ݽ{ <<W?MZBp_%ss++͊~FmN}/_5..nԨQNLL|ѴMXXݻwy1)3~𡝝AT;w>|rP EjjjJJʫLcǎOLL:u[W0~% ǍVoݺ5bM;vT(iiiC3=4[GшeKJJo޽onݺuPPe˖988>~X"~=%N"u/]dpJRfbwɓeF0&?&/I||Cvvvrr?#K !CL4qr.Lf :r䈟ߢE) A^ƫ[n@@y󒓓WX4MRRR_T^,[0##cƍXXX;6444>>۶mK.wJzjll'Oׯogggccnݺ6lo=~%N" Ao^TTvYF?ٳg/_ᅪ oIKwwuٹ7o^nDZ@ 5c5XeאTU|}6l!!!~+!""bȑ=z={q{w}gmmݵkwyg̟?رW*ݻw?~h&Lr劃È#̙3QF*̙3V*=ŦMZhV5se+D xzz:{͊ [[ F7$% [|y,--KXoi1 ȝ@ڴiѣ{_U,*VSB(Xc:tA`LaBP*rPg  "%%rP}@\@Æ N@ԌZU5@FFO!!!3f̨AS+**:~G}jjEEEvLƘ9sfdd$/33qNNATƍ@UyfjjjIIIͨP(]\\fΜy .PPPa__߶m.]477W xq8 M}i۶m\\W_}շo_wwׯEEE[: IDATT:99-\|y5mڴ{/^ԟpww߸qdx!G,X$1W;;;-i[ݻ /}98i$GGGTr{7:$w UDG [A ̙3?\t3nݺt+V;vls\v===u֭۵k̙3׮]5mڴx{{?|0%% ӧO?駟;;;8;;}rbLa1 f:::}'N[g6o޼dɒN:5kl…۶m{HÇA3fLVFo>A œ'OlllʌPXX`-[1cFٲeK aÆm߾`cI)Y"A+ip~͛7ݻرc%9r!C>$P35C׌'NxMXB{ѣG/4l׮]KkN...޲eK&M~2#?^߫W/}SlllPPP6m7oss`L7>3KD2Hz% /B6mtt"1xnt5k\: P˙BXP(J[[[JԫWfrtt۷M֭[iooo߾hA077/egg>_tfffϝo޽onݺuPPP֎;*4ݡƍSn1b^:D7=cIJj\;]t9}x9hР۷efft^ɓؔP^,[0##cƍyyy&))i˖-KJǓgLc"XI?o޼cǎo 0ݻW^01@eO<;cΟ?_Tv&Lr劃È#AnРСC{`Μ95RTgΜYjU>}u׮]yѣGN:88DDD9Gg7nxcL$ b+)&22uݻw׿S2+E)ٳgW\kɝUg7n?#wj\qsرCver'B:s挝]˖-8.wѣGb9--FNTӳ¿·.s2??ӧ [d``Ν;+6/@Mg 5cVP((SN>LLLLII5kÇA3g| w:T#Fs…LyR|MQ2㱱qss \re̫hʜܹsXXX捉yo_wUy/^Xvk ׌ SSS+v-)Ԍ_ȝ@z;v(w.--Mь7n%%% 6 yV=~Ν;ڤI{ҥ+WFؼp{?bص ڻwoŮXzuŮmԨQ.^zJIKK˺u9YZy۴iSaF[D 痝?,S<ڵʰ|@E@ W2&&33ouSkkk;;[n޼977WѣGEEEo}*6ݙ3g TkXqvviЪU](u ۷/]S|y6lXyjujquu^aaaQFATkڹsgAAѣG}!g*nܸ]vu_|񅏏ϲeԩT*J%cFڻwիo߾-wj6P(>}Cuv/RR͛7/''GtPSQ3Pjɓ'w啕_.\PPPSQ35B:thBBž={|)Sȝj*SkZFC)Z}@ҳgOJu]B͛ @!w\5jp=RZԩAT􌌌"PB@եKCɝ@PL6f 1@e0BP*rѣ)))M6;o rA u?tP->c@P3ڋ1^P3j&''G jJu ٦Nٶm[Trx߿߸qFݽ{W,F9{RܹYTԧO@/w.\|S^^ޢEΝ;WTB!V;Sg 2X@ _jU^^ѣGcbbdJf 1QPP߇߻wO^z͘1CP^jPLf\NRicc#wUM_@zaDDʕ+A3gNϞ=ꥨѣGbb999)))b*J5333..NɩW^bׯ_߾}XkV &z…UVzzzN,֪V###Zw5dV??ݻw;;;uc,_?2eo!wjjr ]8==]R=x@ٳgKT*Ǐܹ#jii(ϋ:88xzz8p@E krZ۴i3~xքŋz{{Ϛ5KѣӧOkݻwDDXkLL/:p7J\(:x]v;vמ={vȑbwkzٳ%敨ߺukJԌ>,Z~}&A RSSZ333%SDkݺu]]]%:1;P311ɓ';wƍ t}ܹ׫WoС/SSXRR"jmm-Q8lԨĵ5Rb:tE&Mkm߾ĵmڴ kxز ;w޲eXt7LHHk~@%-aaaQkHd%V<<<$~FҚ7o.ݐfoo/fiin`APs?~7lРA^^ i>c333KY LoʝZQWSh4\jwYYY_|񅋋˼y P0jT$٦LˌLf|=;;;w:0IjۻW^w>qD@@Ǐ/_ުUSfffʝ+ZXX(w5o=iҤf͚0gS߹sI&Yѣ ,8| ڵt܉gϞMHHܹYt>c(wއ8pয়~*wq&nP*EϞ=/w 5c ϸN:JF ر#%%CrP\288WH{ݳgYSg رM?sMyn/ٳ jҤZ>~  Cbbb 6?55uڵ \w̙3 ž}[իW 6mZfffÆ sqqn߾}xxǏ%%11SNnݺM0!??_N\"+++WW׸8Ju޽@=JNNֽcccN:{tB$ڵӝwppᅨ6Ԋo'O>֭[#FOmnn^RRR>trvvK ۻw۷[nT>A/88֐uZhRvQdtt!FrJ___?O]Fqqֺݷ=k֬AddgϞm۶[n4oͭ3Z.1әjP0Au 7o^rrr||+}]}޽{޽֩S'ggg cdžǗܿ|%Otаavܙ8q˜{$f juQ*bO"`$ H˗/۷aæO駟–/_ޡCKKK}ϟ?v+ݻܫ1r=z̞={ܸq &\raĈ'1hѺ 4:t{WsAA9s5jRΜ9jժym"(JgC,--w߿\\Ç>`JW7o|ƍ+W.\PennQ5j4dȐ_~k֬>|>sPPPƍ$򄇇+sѢEZ vttvZko߾ Zvʔ)NNN?x ݓ̟tlܸ1%%xV 6,:jD//N:;wK<<<ÇZ@5dȐ]vܹ300P,Ղ)3Txi푑SdHHȌ3ja ^!jjW|MSTBl꒒F+wU}@R;&w5ɓ###===P]>f͚9;;˝@jРZvuu;pΝǏ@6`#T/P3Pk:tH` ϦuqӦMCooY<*;^//e={vРAM4qppPǏPa[LL|㧦N>]vVVVaaa.9sBطotA|}}˜x;яӬY>ԩSeΗ_wĉ_gQ5c Ԍ(Zγfڵky߾z֭hڴ֭[ի_jzʔ)/^+%==e˖'O28EhhhZZƍݻi&WWWAx===׮]+tgAf͚U: ݩg}VTTGb3g|?)Ԍ2B͸N:JULwyݺun Æ sqqn߾}xx}bMbL9# IDATFYlY}||}ڶmnccqF] xӧO?7W_}շo_wwׯ޽{+J'' JG5WQ95!!ںT4rŖbZɓl~1cL2,,,t---MU*ղe N={̘1CVVV;v AlpAvܩj׬Y{;wHwAFGWd};Q(殮s̹|)=G}}<?[0y}]ppP]B);;tesS9rۻoIKK[f^b* BBBbbbnݺx∈+V~s988 6LwrΜ9QQQK.=pɓ'͛v˗_r9&&'O㏓AXbE۶mWXqdݺuWNJJ /saVVִiӖ,Y}ʕAID5YlWb F*FOM!۶m+3---%%w)}rСwIJJ2BBBӷnjnnnCÆ }}}NO?3իGեK֭[ãa㏮mڴz޼ys1~;~8:: P1Zz7PmhkJ5lذ''LXPP?3`3fHVꢢ"rssԩWiӦ?SA8rHII[@@@MZO>$ɓ' 6`"+VhƍرCz)@.?)vZz!uGQBhM,@5WbbbAAANtݺuKHH?O}VVVqqq tqqqqq߿Gt{[A(jؠ6m4o|ΝΝ{$ڵ}pppᅨK_kgge˖&M >\g;dgg'''~߾}7K.Caaqju||[FjuM%%%/{֭[ |g*u/]T?5`[ClRg-T*Վ;Jvttl۶%%%5jʕ/]{{?ӧejzźGK5kH۠A}]`c^{ {tH@b 5㒒F#OKO=dVVV^>[YY>zh$t  BۀnݺKNN_bŻᆱoݻwottݻw:ulaa1v٭ yyy&))tѱK.O._6Nb͛uzjll'Oׯogggcc#XT |UA4hۋ233׮]+}X h:S lH@@@ bժU{5jT\\ܹs炂~˗׫WOzڵk}Y&Mop={ܻwɓί^zǎYYY+ٳ1 )Ce˖IS1'OVTqdd10qFF]S=dȑ#NNN;wn޼[RVh}%ۀLJ6˗wذaӧO OMaaa˗/Сu'ϟ?v+ݻppp9rd=fϞ=n8}ӄ \PaI ڿtt siԨJ:s̪U$,6+'Bppp <=={I_#Ԍ6 { ~A:͛oܸrׅ w5jTF RPP/XXXy͚5Çg jܸqTTD1bcc v9~n?~ܡ*ݻǧ@ҤI@ap#Tr֭-Z4oܘK^zI4cܹ_{{ %+ڵkW^5݃sZT#Fl߾}۶mÇ; SgBdCe˖3gto?~۷o߄V;e''oqyM^b^hsPSn1P0%[v횑ϸddd92c YTjr$ƫ2rȭ[nٲŘhd 5㌌:8;;_xQ,_պuVZ%''˝@{n~~~ƍiܹAAAܹP}=zHZ5'''%%EVRfff꾨999K۷okmժհaZ/\j*VOOɓ'8qbܹb=z?XÇZjuddX] "sNV&1TSשSAYYY}q'N7Ǐܹ#jii(ϋ:88xzz8p@E krZ۴i3~xքŋz{{Ϛ5KѣӧOkݻwDDXkLL/:p7J\(:x]v;vמ={vȑbwkzٳ%敨ߺukJԌ>,Z~}&A RSSZ333%SDkIID+x/A j5k$$$L8[,B_|w~~~IIIÆ Mjkk[OllĉFׯߚ5kZ3x`V^lllVy%=5㔔JZ;wn*ZPP Q3~ٳgZ4i"$³g4֭[WTJفRܹXĵM6}wZ$uss kSbGo%ѣě%}뭷$dKs@@{ 888P0~͛7׏1Nͮ-Yd۶m裏qGkkkaF$mԨZkСĵ-Z4iXk%mӦMxxXÖAܹ-[ZofBBXĵk|||$2KX+i?#i͛7nHNJ.@. wƍEEEE=}^gϞ2ψ`J{͛7oڴiԨQrgLfs%KXu>|_~٦MsF!嚢DѼkiiismР֭[۵k7xs_|JڸqAl'NezP3NKKԩ ͻrJhhhzӵk .ȝ@xÇ;&wU>;ޚ4iJ;@ua 54iqƍ3gSD*ŃF-wUAP`2j\QF/;JD U`f juQ*666rP( ʼyRRR>~ӧO0gSh";;[d@UNƋݸqc>}v*wj*1}/1^P3.))h4rPg *-RT?Al&LezrxnܸR_.wU^SնrPSSSsrrfׯ_~NPB@ekk{!S"yA Sfgg'$$&jEEEb5˗_~K?0`\Sк͚5k׮f *JUT@^ڵkr.Lfl$FlٲDEE=yDoP(._lpy5mڴ{/^ԟ/((ذao۶m.];~zZݰaC///?QTˋpww߸qGxxx>}ڶmWU+V֭~'O6l0??QQQ{V*NNN .O`޽{w!444##C:Ci4~[wXXXާO^{˫t<K(61V%ŋO>$_}U߾}݃_.#~g^Zc̘1rJ\\_;믿߯_OmĈrwwҝ:uZ>wܭ[}iӦO27ߌ-..x۷%"m޼955ӧ{iРktU* *;;~/_0aG}dp(ӧO={V?K˖-wE: &ѿ77 \,ؤƬWs6lxnf̽T\s|R  ᧟~;@uQ[jOk,}SC>ӧkG5hɓ/ʲ\n]nnnϏ=[nzztJ=gϞ;o<774V{-ZK| &uK'Y`ӧ4ibpW}ѨE s98"Ϟ={𡙙YÆ $&&tIwح[ &[YYiӦ+W733311Q:zC>|deeUtkӧ/611;wիA3g͛7ZsU[ՏVU ~׮]ؠV۶m#G@KZKX-[xyy,^800p…sIOOݿnnnpp՟222j>3448p M<"f̘zjSSSB:x5'O4hgΜYQ?==}رuPRR+t-%%O?U ڲeK~ڵkwպVu]ׅ }?ooo??~7nAAA^^^iii*ք\pRU$"!C4tF5ch-kFF΢˭7|}Ə*++/~nfM~KKK@lܸqҥK,C3ёdbf[n}Wx TצM IDATիWScZ7o}⸥e||bŋ Z[[ `gg:t~-Z(''Ak믷oΙ3g˖-ڵktts/dΝ{޴iӓ'O֯_ekk;k֬7o*;Orj$ H@¯<4j`Ǐ߷o߆ #""T4ݻwDDĭ[vء8_FFFO>>> ^ӆ }ݫWpSL7oޭ[y*iӦ'N$&&V}gLLLTTTZZYXXD"qww?~sGMA6Ԍuttd2AТ={vP;;oۻwoC?~|^R+W( nqƽ[JXXXjjPQQ_oܸɩs֭ۿjoCGGgڴiǎSѣ?$$U>}zfffhhAh]v;wN Bj=zKNN;ZTjjjIIbŋ ^a```cc\\\=zxRSS=z4n8kkkkk#FݸqCqo߾ +v_}& \ 4۹s碢.fQ__?55Ul`` Ǐǯ^"J+++˻qㆻ{tEƓ'On޼zspp077?vح?ڪu޽.]4b:­/14U۶mnjv7n$%%EDDL4IqjԨQ(++w޶m۔]\\\.\P{C=|0((ʪAk:|#G=zz[hQRRReeǏ^K>}1:sΥKNCmٲgŁ .T022rpp?~ԩS̙naa8e˖~k ^ҥKuuu;`d277vIIIltԩ'-EHRQQQPPcll,vh;;NjY9sf…W\QT5с|}}%رc?LGGMh_^,4عsӇ ҫW/m(ddd 4H  _zAqpp~[oU=-@+**zAh!C̟?16Ԍc]ƍg@AYCI$5k(UTO8wq1,zhR~z:ZYYݺu 4 tҥiKJJbWQ9oCCCčQ3栝5㴴S(\ᅨ5c_}رk֬0`(sӇ &v U=һw^zI>>**ё16Ԍkڳg4<ۻh6b:g+ڵ+991@hk*wz~[GGGDF3/((;?9sF]FGGϜ91К;v[nb٦Oˌ>t{{}^zU,Lhhʕ+uuujv銊 ///ɀ+..zAh6Sm>oߞ>}̙3UTƌk׮eD"A. 5cW_3g)j}Z3jH@;4mXGGG&!ȑ#333 @ٳSN; ZІq^N)h({{{j <f>cAff "lԌ^6Ԍ+** ӧu6w\lSNeJR4k׮988bgҼtttٕdeeىfswwwww;ц1bGBx=4mx65h @sf 45chljLfll,vЌ/v믿2ek&v 5>}剝4/}}}SxQQQ{f f 5chf\QQ_PP vЌu6}tl'O|.bhW^urrrttLMM; vgϞ :^; UZZչsgl}T@kkkOuܵkvʕ+%%%;wݻMc۷///o=ZtiDDĹs/_>uTE3eEٳg񙙙 .TvڦM͗,Yi&AVX:4--MhZ#5b𚬬?neeuiӦ9;;Sqj۶mpppѣ]֧OAo>e{'Npvv.((T/=ڣG 6\pAEZת5GEH(4γg,,,{gggA>LQtttZ3V ٽ{wRRiJKK-,,'Bhh닊***N88~ƍ_=;;cǎ:ts#5tpENYf `gg[o_^qn]fΜiaaq:}offfbbvX F()) ~Wu떒駟*Omٲ_~ڵ;pj]z^;@}P3 т? 8PqwYP_VVV_~oоvvvaaaǏo`PW^ӧO6|ݽ{ʪSN999bg T*Ɍغu뫯o}ꫯ***@-o>33bپ曀cǎ@]hC)//;HXװqFsWēd?OmyYFmddGT*^PJJJTTTjjAԅ6<:vѣ۶W:uF[ju֭\R,jA3F5p@vFF]vq1@Sf @VȘ1c͛>}*V* Ϧ.///,,JFFFUJ TTTBUVV>yDڵk5ڮZjڴi<h%󝝝e2ŋ@899@-hC8995))Iq$%%E<[jҥ[#Unn/oTB*d2Sh<cccSh6mژB<|SEEEްa[8&HAЂZΚS^^)4wv޽橒@AC*ᥥU۷/11[&@sІOUyܵ_fO6|h333/=ztܸqG; ZІx56l*wmڴ;?FEEuԉ16Ԍh|Ͻ1f @M8q"66GQ@sf @MקmJR###RZZڧO==k׮;vlN.f2xA?^,Z)_Z,===Sl҆1l֭bGBx=46bj@6ԌRL&mh7T!vȑ#;І剝4/Dbcc#v Сرc>c@P3֋1^P3.///,,;?Q:t`aa/Bii6ݻw?~xڵk>>>ֆaaa VָAOOj\~]y^R`Ժ*"//Ot^]{ݻwj+bUl2DrرZg={vBBB}N:ĉgKKKRkŋ.((ڤ;w;wnrr*Aҵ=zt֭f}ƌˌflffo.^xԩ] ՝\VV߾}/tRjjj=UU嗗-[V؍^ WZbEYYٍ7>쳜={/Wٳ;v888l۶RܹsyQQQ111ʾFFF+W5ϢEn߾{GٳƦڤgΜ)//WNZW~PׇdeeeeetҀϟ?` ,Z(>>ܹsbgr Fw^ő;vcǎ544TU .//={vn6o\>|/g\^ϐզV;wnLĹZ5[*^muU#HR_ݩSw}?la|\./KKj[[[/[l۶m/_vppxGGGO2_ݶmO?S3LAA#GΝ;ׯ_?A山 vZ>}juhO)>K3us &T=8~g;w۷O*=7ov\Yjm4CCõkP&__ߪdyLҳgO IDATUT3gΜ>}Y6nX#===}wܩMqqqttM^ꚮ%. E5cM= Hق TY{v߲e޽{9bjjZW8Æ ktp?Y[[W=5w\Fz)^*^/,,T\A۶m[Տ'|biiiff矟?m۶=b 6<|n޼y*"8p`֬Yynݼ?^mR++˗/oݺM6uMuPin+MjRT&ԳԥKATꫪ?~<((uKٳ9o޼K:|SR4,,,$$+^+<۷oqss:}bǏw)""jǺNP__G#Orr{8q'OTÇǏ7ULuPinuqرoF BjƮyyyS^}nݺ}gªW^A\\\G?z)T_E]{u }n=,--322>/bĉWq;k֬lrĚ\TUv-?biiiiii O ?]]]CCÆJo޼944tԨQMhC͸P*h\\\Zl\RRҸ1[sGM"ѱ.׮];r䈛Ǐ,,,p ʛo/;::@]HMgϞ6lСCϜ9#v--55577_; Auvڰa*++ӛ7o^PPPNG:t[ZZ6M\h>cʕ+;v7; A]]]L֠. 5 DYŨ1%''>>bgP P3͋4ȑ#MMM.fyihi%%%bܹUVV&v1@UP3К@qx1ԌQ3&)H$ٳTwttܳgOdҥKj2x}קM g]wոHU6j:ԴS j䴡f,Je2Y=VXQVV/JΝ۴r^B :u*33k׮b@]hC#//bH$Rzٲeׯ_| %%%;wݻM?neeuiӦ9;;ٳzڬ*\zV>?Z͛7O*?֭[l~6lm۶ŋ+Z#9I 6}/L&z\.///|MFFUee\.wpp׿޾}s)SRR ۶mhhb… :t幹ڵyIJJJ 1BBB̙3UyqJJb7::ťվ>裏ֳfuڦEgܹfU+AZZ٪-gϞUtV?aɒ%bPljP7ͻt;u!BjjGƍgmmmmm=bĈ7n4hj۷bfffڻwo&Nx6rU.]]wwwF]RSS TuԒ'''Ůŋ:x]XYfիK.|O?Tէ65>UxϨ*Z ЫW/q*6:wޠ h mkϞ=111 ǎ|[[[ARieeǏW^:s>|ѣG޽۳gYfU;(Hn߾UxNNNOMMU&'';;;4t'pii̙3}}}rTTL>mIj?b?T|l&)))ue\G֭@ ><22W BjgϞ533?~AիNzAjקOٳgZJWWoѢEIII?޿˅ QF8p޽{ }>}offfbbRȑ#7o\ZZ{nI)SY̙3?۶m;f̘k޸q#)))""bҤI \XXabbw^e멢R}' U#=gTM]Fv;w;wn׮]fh999YYYϞ=; ֯_绹@]hC@k:|gϪnVTTeQL+WLLL dnnnsIOOP`dd0~S6hW^y[n)))~i6}'L0m4ⅅ͘1cզ:lٲgŁ .lun` ɓ'4h3gT*)էM=װ.U#gTU]KWȞ={-]i $ 4D 믿kYɓ'۷o޽[]kzG}]TTs-Khh诿-vtҥTGGG>cMM~ثW-[۷-*%%%33?OllѣNĸTM@WWW&wo^\\,HƌbŊA hv999׭[7n85Ç?}SNb{'O; ZІ!CN@n: ݱcӧO%ɤIV\ jFL0a„ bhFTWFEEk׎16Ԍfʚ7n `llܡC~؄ζk׮m۶u8qK=sLFFFuvvڵk}qaaaU}3jѣGwޭ(/~/l\_[[F׌wyoˣ=;y׸aaa&Mj\?<..3gtwwoܼb}'ۿ[浰022jܼGfSg{ϟ4hP֍1moڴO>)((!<<|ѢEbxϟOHH}T9slٲ]vE1{Nܮ\ܫ(..ޱcq322ꚷվ>mmmMLLF{nXk3IZ |ڵM6/Y$;;{ӦMΝ[|ԩS;m8؍omll-[m۶{ĉ5R] 0oujڲe bPpqYYYQQje޼yAAAnDDDdddjjGƍlSTTt [[;p}UlXXXܿСC|ɂ x㍠j]R.]W^...**6:w.^jjjII9s ҥKr^*  TkWQׯO`Abcc kz67cƌܹsbg^{>}@]h333kϞ=111 ǎ|EuV*VVV*ZYY=~X}ժKKKgΜ흔+.f!--ԩS;?C 4X>}ϟ_WZ'mk>}̞={ժU~~~-JJJ|m\\\.\,5eeeݫ`ծ_S}}}333UDވ#֮]{ΝsڵKy%EK5kxyy >|֬Y!!!ӦMpȆ ̺v:lذ1cTq-Xb„ /_Ts7\U 7mtʕF޽~:~%/no@o]cbb{=oo'NEO-^޽{[l;ɓ7o޼iӦ@u?~iO IDATxttt~:BIR333藋/&&&O۷o4h؉o֭Ah_588G'CԀ>}B臘9=zXd؉Q-W7o.vZƍ|Y4.Ԍ!aÆ 6L5cjх{S1>cЅq~~B;]AAA2;-֧O1cƈ@Sccc߯_hko\.oٲAԅO&%%bYD4cƌ\E3f̈4hAnG5N7kƷo5jT۶mW^aAj.ܛԯjyyy>>>b518566vȑݺukڴ={ׯ4{֭[/??_͓5T><11QUL&SѣgϪjٳֻw8p@UÈ#T޼ys۶mZ~ &jtҲeTϝ;WUSf͚W^+WT @g>>j\322޽AUyUVVVnnnZ?ֶ_~ZSvڷ~cǎ}ָ jXx?PUk߾};UU:xCjӧOWy˗GU7oOՌUS3{ҥKՌUx}T䨩gdd\|YU&䭷;w͈DB@IkƏ?^bņ ^zU^=33^ZU>@Ukwڥflk{NR3êZ\GppjjƉj>>>j)))jƪ'OTZ~}UM z*))IUʛ~;T*Uժ~'EΝUd,V5 0o 6T3ǧiׯ_zzzƾjꩯUO}Y=unPZ<숈Ç 899-\ϯ^ze;Wt@xx)S7n(v5cA ETTԊ+ܹ#̙3Lbbb"v:Pcf̘qoF̓@7o>}~wٌuN<[oEEEݼy322)99yƌڵ[zuNNԢ۷ocЅq~~B;]2,22R gxx83(f(vp A9rD,Zvry֭.%%%eddsrrrrr;х1},v u@Ӆ{S=Aj5c5@ӅT*533;]/NLL@o۶m;Ѕ{bJ۷#""'L v UC5c_P3W(bk2l֭bzÌDGG<СCbgPݻ'ڴi#v.===))bNAta1}{{{ڵK D"H ;Aj5cڍW 5c###Tjff&vPBCC'O,vZ,...88;0;@ ߿zz)M^iҤI&MN@ݹs'"""''gĉbg>f PԌ@Q3g PP3W(bk2lÆ bźw vMa(vO? 2bgPry6m.<<)))==] X۶m۶m+v 5clǏ;:½f 51ԌBH*Ԯ3f$&&pBpp͛)$?~cܹS,A1/jtfP(233je2ي+@u-<<|ҤIbbG6lСCGk߿{YԺ4bo@I>۽{-[.H$A1F +@f 5cqt营e@@A'O}Aԅ̤O bP3|85c%M qչٳG(}Νu.Oݷo?s~:T7%Q׉'j;Ib1@uP3zEEE{ʕ+ k.eR!AXlم *LtR///GGǀw諸22Z>azJK,Q?ILLB0`mNN΃zmll;Q?~/\+d3g;-֩Spf ޽{A5jT-?v߼yٳ_򸫫ݻ߷o߼7ѱM6 ?t<>}t\￧͘1L&r޽{9ҨQ۷os;v0ӝ;w fΜʔʠ*jɓSn?S*^p/_V?IٴãGtWtsU5;r\._jAԅݻw t5 6nŋʷ[l)."[?P(t6GGǙ3g*_gff}.\\TT[[۬,] ]x˝41G;Cqw9kN:)v-000++Դl={[ܹsUEyٳ2ӧ3dff޹sQčݾ}糲^|)˫:(7mU3ǫZar[ZZFEE}7SN߿yvfĉ'*zoxb }ݟիoVÆ ϟ?3D;wT4 3Unnn 4W=ghhXXXXܹs?#ɪ0 qqqwٳձcEPWa /rrrƏ/RRRFYR!+3G}avԟu֏?V744?{p/R>E=zԺuʟDDj.ԌRiꝕabbp;wŭ]OԥKvAСC׭[YA8zhTTԓ'O͛שS'###3g>{le}B477OHH,n*I2QUQ֭[ 4477WV677IT&j}T m֬L&xbT… /rǎ}}}g͚5o5୷;-v'N@SHprr :tAXaaKDDDϞ=<}iӮ]+;xСC %v z-X`b&+W\` BCCo޼)ve(vZ!!!g%OuhZFգGSԖ ֮]۪UEvvv:t=z,v"] 266655; ׮]z5jT}v`\.v*99㶶; FЅ{S㏖bP󌍍ϟ/Baa={\\\ƌPѣG'Oqxԝ줤Ǐ ` PLjt[@@u'y5'_ׁf @%(+۷@ Ԍ=zbk/_,((;E]S(bGk_~)NQQQ K?y?,wOԌBX*:rJQ"3իW322Ŏv'11aÆbuֹL6M,A;ubcc/^(v֨Q#CC]S7"JŎP 7n,vѣI&~D")**H$:uǍ}vmqȑ>|X,A}۷)Ԁ₱Z,_~yƍNj@;T֭[;w,~[^q]~7]g @7,]TX" c@={V&qGzѱc>H Bj4hPb-Z}6u/777))ÇbZnԿh M @s~z֬Y...j۷o߾u 8]g @W/7ԌQ3Z18]7T*555;]ݺuKLL_Ahׯ]C!!!bgv? p1hM 1/jtfP(jW||L&9rAh:@SBx߾}b O޽{LL̢ETuprrڸq,--}||2226n쓝cǎ>}8;;Z*##cZlم gXtc@@ݻwA \fÇ۴ieA ի]\\<==oߞ[v۷K*Z[[/Yaaa{vvv޽{{e˖wi׮ ۶m9rdEϟ??>>G^5j~~5Lw̙iӦUvs!b IDATضm3رce;>|xNNN=z>}zM$777!!˗ ꓏1ByM8p۶m ݻ7 w^dUɉ^xq6mrرc+sJf 5Nj&&&RaÆbt|amm-,--ߦ?}̼sNeV:tPhڴǏ Juԩmn.]UeTTTddd-F %.cǎƒZXXݻlBQίʕ+W\\\o{YހCbb@ݺu+882wP35jTzzƍ@+ZYY;v_ cpsskРA||MMMKu>zÇ۵k(>AAn۶mʝ%uܹs%VʸI$d[gedddooߪU+b>8zA4.Ԍ:gΜWXXٳe ޹s'..nڵ~~~ʦ{nݺU[n6h}˖-0aBG/~ׯ__~U2ׯիsrrRSSwU+@m.P3aѢE-JgΜk֬>|YBBBM^IKKoҤINԩ̞=%\54ǽ{۴i$v>tR]ǧ~TtjhD"hzbj~Q3Z18]7T*mذAW u`Ν;+Vh׮ٳta￟~z֌wܩOJJ\.oѢŐ!C&*I[ٮ\bffVSg>344oݺAhGEDD9rD m:PΝ榾Oxxxcbb5oU&XP4ĥ  qXZZdddlܸ-22R';;{ǎ}qvv^jUFFFǖlٲ .ϰtR///GGǀw f͚Çif˖- (իWxzzn߾=77۷oիT*^dv.`ɴb מp–-[zxx\vM .}+VXf޽uv񸸸'2$44ƍV={vJJʪU*9³oݺСCs ۴i͛%˕}BBBۗ>uԧO~'%'IKK1c_x<^nr;$51ʮ…O2%//̙3ӦM?.3S(YYYb ^rԨQ 3f̍7ڎ=I&O~޽{WXѩSVZ-Yd[cǎm۶1c;VC^^Ç/^ԣGӧ,Hrss^|inn;*y=XŋiF.;2 гgd2AhvڅϞ=[ Bjƻvd,--ry hI]tQdoSSS>}kggggg{eff޹s2c+CM6}qAAAٝ:uR֭ۥKJeTTTddd-Fv.`cTR\RTT|۳g\+BEEEIII;-֢E@SB>sss믫<ձcEP8::`H4h|{ywwwSSRݼ=vO^oH$ʷ<52j̙3 ={ `bbp;wŭ]Oٴwޭ[ p֭ XZZI^nrV2Fԯ__~WIMMݵkWJf 51-_hT*8sLXfg͚R|~)**Jf͚d/_^Mr;21fÆ fff]v6lؘ1c3P18u}ј1c[Zd[[[Vw̙#v 5cӧOw=uY4@[zzz:2{lQ%}^;@q{R@ܿ_c ]gellljj*vP:vhjjz5V͛7;sl8iҤ͛7@]{K,,,eeeffftnܸ=c ww;w"[h1dȐIծ\bffVaD7pojL HsussSGyK̘eWTTTPP`dd$k/ Fc1Vaiƍ ظq[ddOvv;jժʏ-kٲe.\(aҥ^^^w!00p͚5nӦ͖-[AP(Wvqqܾ}{nnni7o~K.ݾ}{^R%K*\QXXX޽Ϟ= kʕ ڵkW񴴴 lãkUpi Ԍ>cTڰaCP+VXf޽uv񸸸'2$44ƍV={vJJʪU*9³oݺСCs ۴i͛%˕}BBBۗ>uԧO~'YZZZڌ3?ŋDq5+ڴiӁ\]]5rDGG؜8qb̘1ڵaʔ)yyygΜILL6mZqU+4D6 ˖-ds; f(mv9A<<-yGG V&a/6mもCN:)v-000++Դ---曩S޼y]vU]/Wllϟ?K\.•+W\\\}z|RK@.e>^e 666Ϟ=S?{{{=zÇڵ *ZAu?~\.KII9rtssH$n-Vu\K@?Q3gΜWXXٳe ޹s'..nڵ~~~ʦ{nݺUzѦMoݺ۠AKKKss^QNKBinn<^~~^:'''55u׮]*ӅqnnBxAFn/h"EIR3gPZfg͚2m4~)**J:88QFC}CCC5k&.^~:XQ N޴iӕ+W5{~㋛6l`ffֵkaÆ32m۶b͛'vM!сxmڴ?}>RKӧOܺuoV}O?x 3deemݺQFNNNjկ_߲e ۶m:thƍ+3V'mN^=@B877WP( JIIӳA Y&22ȑ#(ݻwC\/vvv%&Ol``^ɋ_ظqL&M%nee͛[ZZnܸ~311Qɓ'7o.{/kYJNu Ӫ:Hj> Wڷo/rrr@[م@SBx۶m3g;dffKJJVV&%FEE5oYѣG[O>OѺuk:^7j/֥Z VTQ)ʰ˙%nccc``PiͽٳuֳgVxɓ' ,ۤ:~*cc Ӫ:H%>m۪?S)fϨnI$=ztgϞ~5kԯ__ը?gcǎ)I$ÇckkI&o߾SNְ<RbccKu֭۠AvB*Tpu 6=ztf͆ ?i>ܹse/N)rqF-5UP*SWWyuΝoZ4ԌfItW۶m9s VZ%vu...:t?hGsСKB!J+vvvo"99?Y4.u„ pu@%Y[[A)_/{޽{%V]O>D"L8ٳܹmϞ=o6US꼕"[h1dȐr*ʕ+fffz @B877WPzJ D%g|۷oSN<. E̟????̙3'OŸgܹ]v9Û7oѣ̥)j,Aچϟ?_ Bg2eʆ :99.]T,AƍN_oР)QF_Dbaa!v266655;5lD NNN111%/򋇇,BJJʳg ʝD"͙3gӦMW^uuu޿͛>}N4ܼ@U}V\sر|7m4h`ԩI$$$|駽{޶m O<8p |||>sLUֲef̘Ѯ](33344QF999EEEӧO{JJߌ3;wckU}ݛwȑFݾ}?J.\(,,|˗ORݻ:::GEE=|pсdoˍW%;7o<{_]8{CT]U)2*d+W_ȑ#}}}bbbMMMFrtttpp8v===]]]߿gϞ &TfTr 4~z՛e˖'O*JA Ş={V^=uW^ye]td"v{ssYw)LuQ0'N,++3;e3S^m4*JՆ{a*UΝu/ZlP(o Akfjnɓ###333}||uffa5cggg\޸qc}7c''E<==^kǎ:u7n\.]<<<ljP}4͸q㒓SRR&ORtׯ_~wYlYtttnnptt6^ʌL&rrr"""A8ydDD%߭=fQ 3߂D"|mA-wIA^|EBo߾M6M8ѺxҮ^7@Hu`„ o^bAZ%Koe2ق kAhӦ*Q۷0a»4f̘YfeggWWW߼ys׮]M)--UT={tsstÇe2Bpss3s;w=Lx /exuvv4hP|||^^^vv5kFaFV-Jh onFXv}K<.M<9!!ɓcǎ.*[n;1􇌝&O/^|ĉÇ'$$3&!!A.wѣ;rʑ#G .7nZk޼y@@ӧ׭[g"&NxEOOH3-)F㙙755o߾Æ ={vlliӬSXU_յK.Cz<-a.?ŋ[4@KvD ;ޟ}ـΝ;#v`3ZVVRܿc,lڵk۴i+=3.//sƍك,ܫWk׮_jժMXA.lڴ)""B,0x͚5>|Yl=Ԍׯ_?uԷ~%Z}1L֣Gx~_~[X@ׯ???_,D"؈FbBhhSu1=Ԍryƍ.??u֖ ۱c$((hϞ=֍=wCY`gm۶:ԕ+WJe- bAwvڔ)S`+yoo)v !laaaur4//(V[YYT']*:ܥNmkwqҥbg p@CFʕ+}v]clllnnnll ޚ%BYYT*6mکS?W_ujz֭} ^jUII8>>UVݺu;|̵T={nٲCL24W۲eK^ry˖-̬h- ,_ԩSצlٲ}\EM'NLMMݻwߦM_-99wǎb̬Z/(((11W^;v5kVaaSNIj?//G:9suK! `H ٕ+WA;ܹb߾}M4k / ޚ5}_|ÕϟvV ߳gϵkF5qD]3f(ʕ+#F9s=22r tqq ѣ_y啋/;v,44?|SL-nݺ%O:U]]}ΝgϚY]Fk?[n5YfWa`ĉsyv;w3rss>>ׯ_)**>>///;;{͚5#F0?3b .]:|pyyL&S(nnnVgs[@ Yw5Kv̪ |7{,Xm~-IbW_ݽ{~7־S5Q3ʕ+G /,\pܸq&NxEOOOݱšo͌JNN;v%KǏ_ZZj&UBB˜1crynݎ=k_~k.]etAԾ}6lٱӦM{,ju\\\N>n:3p,rV\͒L RSS;vظqcÃ%IM2I&oQO $~ӦM{w֮]+vd?~رY%''b=3Jr\&jz֭} ^jUIIcU*UJJJHHHϞ=lR^^ܻw7xk׮H'NhڴiYYAԕ+W 8pVZum9cLn˖-z-[LJJ21OȊ+RSSnjӻw]8p ;;{„ C qvvpªU<<<̙sʕUVY8666833SN-**;wnƍwRZju… 駟5 wVV~Ѷm[Az뭊GO6MT{ͩA9sfϜ9wh#KR\.@3]v燇tȑ hӦMTTԅ >6mڌ5YfGڹs+}||vڥ ؊{&&&u}ƌǂ >\W呑6m,##cĉFs999 8pذawAdee%&&)ѣG:j7$Iyyynnnii[NA047nܘ2eʟg {O<˖-;P3-[KRvY- @P <_w^^^cjVݵk3go:ݥK}ɓ'o۶>>>ݺuڵkݺ_ p9VӣG SSZBسgOFFF-~)A6 ĝ;wk@g5cKzxx߿QT d999'OtA_T(۴iCfܸqJ2;;ʕ+_| H$/_u?TfVׯ_oڵkm۶74j7圜ƌ3k֬7oڵ±΃ ^f͈#LurH{8gaBh"RӧA<%ׯ_/((Pb1gڵmڴyWww zbzASxzl)rgӦM`k*@b ׌~sRT.d2'n֭jEbP_-Yy扉bg h8~駶m>yyybg ܛ@- P314\P3.//WT;x&Mw߉@}ռy󴴴D {[NPb C>|X 7nbִiӘ7xC QX'(  D"AՊ=3АQ=@ݢf ~z44e5cT*e2AT*u֔)S/^,v[!zg)//;  `1G<f ~}5chfhT*Z;phhbcc/vGZZ{'v[a5u)w}W D HJK/$vOIQQQAA{jҤILLLTTAl4jbpw[p4ԌnQ3`JJJ׿@f ujRT.d2!o^tҥK}jW*..2eʢE`+$`g]矗K$E ؄˗/i_; Mp;ԙW&%%m޼QFcǎ;wnǎl0@=vYQQ0vwA\{S._|M6i4D(j 8}u\~}ƌ>mԨO7ohݼn(Jk?iӦJ۷n^ؕ+WڴiӺu˗/&9cFVQ=TDYZZj,w̴nl۶mo#Gnl``KhhaСC/]ԧksεn?~ܠ:99X7/`]v-[,22R,%B*v[a5kΛ7oܹ~Y{uTZ-H^~EiZlaӪwy]]]GaШEƻwVUUlzڍF4T*gyyU*Uzzuc_r_~֍ xuc駮]4ZXnӦݻ͛+V0CӦMM}ڬYI&Y7FpA뭙͛[ 8WWטS{h^y̞={ʕ)))8x&MԮ>kONPPP'XXvrrz^//4S7ky7nT* juyny+++k-t}-..^luc۵kgu_~nlڼD"k@]f ~4o<99w裏233w=|𤤤mۊޓJRԠQ.jݺm۶}A߅<<}r%}c&`nUܾ}tFWgW`>>>&M:y%;#H'Lp1͛'H/isL}k&uÃT IDATQ1ڹJ fϞݡC Xr)ݰFQTjZ ķ~ۣGWWjժ_~RJuϟ?߯_^7uTS|w<裏._';w.''„ϯ9]``Yf3l&[af/^z: aѢE믵Z'|ҽ{7nxyyY]4ub&#mεW*ݻwwȑ; Kw;q111b!p@7t~ݻwNvCl|oܸkbcc^i}ʕ922Ҡ]_jk|||\\܃Röɭ򯠬lӦMڵeee7onҤIPP1==}ԨQ;wn۶͛0u_ѐuJ6mڧO3f|gW^Ϙc01\"BϞ=k6^|SSS322n:{:ʕ+=׷G&Mrppߊ_uޮ^~XvmFϙW(6l8~ǘ1cA3fƍ-DZsH_fefV{ 6(ʬ,}j@ݢf ޫR֭A8zhF6mژ`ݻw?sfꐓ'O>?ǏcrrrBBݻwxUX7n~軙]{VVVV֬YoOu&ѣ  )2dHPPPrrW3V<*Wg1kjgtcǎ͛7;vLJ uh;u$'|RW!u,:4.jwp/iާfΜ9SN;tʔ)s;̙3o߾tRG:H$֭oFuر>::/HMMJFݺukРAƍ=z$Izz _9sfرsUUU5/R  :|)))ي”κkL'L o߾'NҦWŏ9nffVzƍyܻw?ϢEZh/[P(fn[VC@W7}嗏;vÇի~# ٹs/vZ~0ڿo߾gΜjӧOoٲoپ}pݧ5/r>lСk׮{_*Ly:3 ,^ĉOީS'Qg}v˖-#Ї4.Y6nܸdԨQ͛72dZ/,Ow= V(..uVf!,Y2vvډ@u͛{zz&p@i!qppСCTTTnnqvQ3h4*JV ֲb s md OY\rmѭ[ޱcGHH5k^ `4iGV8\rŋ-z@{.))?զx{{b0B.6''ETWWر###cȑK, d;w n߾sWR4&&F6hvuA777TttrlcnGu1xڜ.]ZEW9n߾}~Μ9cf,5c[pojXbŗ_~)v @>3:|ȑ#-ZR{ 5c[P3dr\*h Ϟ=+v uzΝo;?u7x]l@YYٳ]\\V\)v ;pբ"SxW^ҷH$V+H?9<<\xXqqGfnݺ%v`G5kc]X!CP-q{Ԍvҥm۶6jOS\\\vDL 5c%''s'j]#FRjAO_|D"2dٳgHO?4 r 7+WVCxŊ ;q=zСCF ,{ 4ȊjNIIIAAAqq!pvv?~AlPOz+W|||!ΝۡC HAju 4{8g ) ԌQ3PQ@@ݲL&RT _dAs\]]͏ضm>aaa;vx!ʕ+JEC 1aߟ2eʬY`+yƳgϞ={)C@Ԧ?~XXؓ~ZZuhP***WZ%v`4pԌ8>>UVݺu;]VoݺO>V*))=hX__ |SN醨T={nٲ\lٲ}FGGϵ3:vĉ{۴i֌e˖^z-[&%%]==3 [oUQQqiӦ.\j*9s\riB}֬Ysȑ -..̼}ԩSΝh͛qFK~>p3g|\&) 77ڱM#ׯ_ڥKCFEE$$$3&!!A.wѣcĉ/^i0$55o߾Æ ={vlli,8ckRqqq͛78}uj6ɵ^KLL\t%K7N%cF2ر7xk׮H'Nhڴ)l {O!R󏼷wVV~Ѷm[]͛7o7o^rrƍAx뭷***=?mڴO%G}oܸqݻCCCA9s VZ1gΜ+WZJ8>>///;;{͚5#Fx/i 'O;vP8-4L+W9r /pq=t]]]t2tШ(+&MHH3fLBB\.֭ѣGͷ["--m۶ݺu;wo^Ojjj߾} 6{iӦYXHǏxkY1TYjFJ2L,Dбcǔc:uj׭['v/lڴI u>0`YAM69::bg pxٲe bb ^xAT>= /((qAӧ󫫫oٲeb'ck׮mӦ+"vcbb(9WZZ<=w;;wt=))ib'KrgӦM/ f :tСbxRT*<=ܛ4W3q9cT*e2AT*7n,vUee;&H8(//JF,6{Sh@=jpQ3`ZW_}?vCXVT*F@2==6l؂ Ď.9r$ ::Z +GGǴ?X j|B@N:tݻwA/¦LRPPЪUBꂂׯ@}ըQI&V8WllS9rUV]|YEEEE999@]H$ PWA1bč7A JHH>|xFp+@ݢf ڶmۏ?(77nlٲ˗>}ںjQFY7V"ܹy+BrrcӭcLǎ1gϞzǪT*rjP$vOG}hѢs犝Suԩwy̙3 4jHwXQFUUU]b+Hj.hZd3oYfV[\\l;wz^3V_.Zha4povF֯_/v`5c \v.]{1a„C>3VjvnD"z˗[=޲z 6X=(繫tbF:uy=<<֭[V[~qtrrrtt|Yl5c^O8~;vcܹ7; >-=*GGGJj=]/¡C/^; 9gΜӧd23[AV!HAR}WZիWNbtYf]|yEEE;v7sqA***>Ѝ7 ` ϯ'00Њ}h֬ټyL}hѢ_m۶?SSjǏ:˚HwepjSLy뭷`+fx۷oϙ3G lJJII ٳ-[uAAAzرY ujz֭} ^jUIIrrr޽;r@77n߾]'66677766w ,_ԩSMlٲ}FGGϏIxD"%j5 IDATmp///1\AΜ9{]3mm[lի\.oٲeRRZ-6:ZvԩٳgN>ѣGO>]ѸuƍI &ݻ3gNǎ]\\¦L" _kO>d޽7n0Y}죚4iR~~ݻ~*H E׮]w:}tlwvv~IM]L0WߪU+ˇtS {@MYYY˗/_r5k}giiiatqqq[lYjՁN8qԋ/;++֭[SN}뭷AXfMpp5k~?$7oNOOU(ɏI_zQ*;jx̙+V}ŋ_}Up[loaL㤗/_:th_ƍ.66իF;4mڴO>3fϮ^j5GչsmּУ'O|Z{-{Wq*BNBi̯kZkZPcbq%bTR,FkZ1Q ѥ;vns>yޟnO[4AVݷoߊ+>dU͟?̙3W^}]֮]ҫW+W޽[% Ǔ&M۷Ej&6mZuuuN*}mK{h.**ɓ̕j:::555yyy妦 3-'Y棏>UiZ^QQ '\С%''߿K.*nذ3##CE#G y懖"bbbduq++Vf̙7n|h˗_~\uKKÌ3&44OUrss\\\ 2cƌ ;kMLLlllJJJ^{5Yϗ.ՕofffRR+**o}$ 777~z}}}{hbΝ ٪333KKKO̙-<<\ᛏՙ\,#H$:z-±cKͷތo_~[vw}wo߾3a„?Ta?zС L6?z/Yf 3JĤLQz,o@OO/::z֬YG)H:u:nݺ)JCW0i:㪪jQnndݻwGԵk\Kii+=)**"khhhiKfgg666 u~S3Wzzk (=)h5E$wQ>}ٳGdZZM<9!!ajN ]v}kkken^tqtMMTw۩S'ً{쩬ٸq{ǣG^o3~xU<w2dCȟС=Tq5"yyy666?vaƍNhCxʕfff111b SN>|ݻ 7.222???'''>>~ĉiii7o wqq ihhuV P^^^ZZnjj'_==}YYYN ꫯ ƍ 6mZH߸q#,,,77/^\dI=ƌdggNLLܳgϝ;wTc(ANz 6ܸq###cڵ&Mj~O>Ynliw8q7޸K ‡*VEHggg[[[[XXxՖ SP3΅yyyҏqqq , ;wexxx\\ͻQQQQQQdС גL4iذa/ߏwƌϟ777kr$jRփCw}Ν΋/ ߦIwgʔ)<*""[n666??ZiQg%"3&++l„ jqqCTWw$$$ӧO7olll|޽ɓ'wmUUU_}Eoڴi„ ́ݻwOJJR'::Z>Ffffnnn?5kO|͆ ]YY)>߿ppŋwV3 [a^z%#C P|G׿,Y"v"xW2339}t}||Z0갳-,,l'''GGG~@Kv…WZ6Ԍ %A]zۈA Yp?]tmdm$F-((СAhwyqÆ ?Chaoj휗Ç;OOO gyF,+j5c p 1׾LjUUUb9;;ܹS/lnۂ_~eر=z077#?Kٴh?Ɔx}ƍy16|Keff駟8\]]===̞Puuuj6^hы/СC#FرcJJ{9//CCxzzΛ7Oz|//r9}3gI!kdɒ~~̙-|cǎɷv۶mNNN7oA(Zg SbUg)-P___XXXTT$vl֬YAAAҭJ 5cw߹I?[=))FznŊ#Gttt z|UUGmoo{=YQFgeeښz{{رC&$$$///$$j ^ĉMj*[[K.5Qn "ݹsgjݖ466Ι3;99u۶mӦM7o^uuuǿKuuue z-u=#mttt#""Ξ={9yCdi{++ .>}Z{666nڴi߾}7nA(Zr̙jέ,f6uQ3mBBB222RRRV^/e˖7:uWz2""")))66ّ7o;ѣ---322n߾=gΜwy'??_x{{˗/o۶M$[nMLL333nrcn7Y?666{?faaaoobyyy'ONHH=z :4SNwϞ=e=<>~ĉiii7o wqq ihhuV P^^^ZZnjj'_U}-''&6kDҫW/BFz{!!! .%SD=x𠰰Z 4̙3ŎІhC@;|{?^E3^aYZZ&bxᐟ(B 5ch]Ԍh< H@¯<.m؛H">~ر:yҔ]/|||]ABCC]:t{.]0:h"eWUh7jкt+e˖%$$DEE͝;Wz?޶m[]]3<}ܹ [n;vT ˗/?3VVVbg͛WSSg`` viCXJA<==WXzY$ױcNJP暱ԭ[Ɩ 0bĈ_~Y\A@׌իW'&&VUU>}ZThN:ݿ\jڏR3qƚ5k.^o>5cyP3622244; xmmm.^(vj˖-uuuoYħ 5 Ĭ]vbg g޸qcРAbgՉ3buxtttAЂ?z61$ԌuQ3(  к $ASPP v m֭D2. `IIIoY055-++w^Ν >بQ3оgx|  8;; .닝FOkkk&h:>;q<󞞞=z;?(,,dw,000((Cbha1v.,,,,,LvV @BZ5ca@+҆$ApܹFVVV@|:Ю޽{W"@|M 5c EG/=ʚccc'޽{N255; SSScbb"v6A/YlÆ b >|ڵkb\|A 4ӃS)mh֭[~xJx)"j@P3VDƣz7@+;@+022H$b G@{sH$T .ڵk;v(vPe̙g_~bg۷nڵY45c1hzh{{{GGG5>+++&&{ǎ6MB z'N<4ɪU<<DvEЊaqK۷oŊvvvÇ?~rrQQQ'OLMMUs|||73g\zvZvK^V\{nٷ&LVOA4iR߾}}}}SSSg\ӦM߿ԩS8晛dS=ʫ+Wzxx:88Sѩ+//755uuumsm5chEf[UU"8dȐ'OVTT(ls΄.]{3lo``0nܸ'J/ <ĉҊ˗}||7An޼biip֭ݻw7ﶼ4//O~i'Q_MBUEnMsbg_;]g @TVV<]zCBB.\D$((aTЦ9^{ܹs|?/viժU]t;@ {Sϙ3>[~ٳ@Ν;g̘1ex^xSN/bg s3f̘1c)<=H CZ5ca@+҆D"100h]/#G^}USSS[[o3*_>8;;ܹoӢL8tГNgϞGGGT/.--;@ 55kܽ{n]~?OqCC;ꫯ޺u+== ljѢE/Sx#{XWWf3{+V;/=uK\ dvؑx} P3~}]iiwQFuС_~򍓒F)HzrJɪ۷=>66޽{*+diӦ_WWwԩP8=4uT}}}TL' 8POOogΜz0a`,¤I뛚"a^ YP3,--H޽{nO/_>}^zҥK?cݍҒ{1aܒ^{j̘1WXIyUUU...ҏC 9ydEEAׯ_o>=4s΄.]"Ӣkk묬,e3&m&f{޽NR^>}.HZ=~P3V߷Ξ={Æ };C- #Fx4oaaZEGGJom?0w3gPQTT˗-[=z?ǧ 댍%<3|5k\* r…*C111|cxvQPP0dTK, sA=k׮]wM4iO"u Yp(y4˓^z=^.m?gywbh1KK˗/B .A'1{H͞=*,,{P3xdڰ75hѢkZ[[/\͛MR3-xGx+++cbbUf\YYYZZZSS#vOʕ+K޽{ ,ڟ@Q 4տ7vU m6ԌCCC̶m&vOcmm `333OOOxn޼YXXXQQ!vjԩAAA:u;@'vZZ`Azzz⪪X##wygر m @+Κӧ[tmmm/*//oqtݺuIII555vvvV𰵵 tRŦ'O-BBBBBBO.BLL;76ol*Mcc9s]]]m6mڴyUWWwXWWWv޲YnG߿…&&& (\{666nڴi߾}7nPX)鿫# ܷo߳>;tН;w>fF٠9sfAAAjjjg͚+>AZJW@5cZΝ;ڵk޽{yKO#""bcc<䅄ddd^:&&&>>^vi֭yyyfffOnP/_޶m oߞ3g;3©hb]ٽ{wW\)((xOܸq#//Oх)lйsѣGϟ?˖-8y0`֭PEEE.]kr^aYx̨?;FFFFDD5SPP<ӆqeeeiilR!rSSSWWWAWEWЋApww?)xʕ-...99y]tQ,55500pÆ 666*9r_͛7?t1YLL.neet8FRݕCgFA͜9SWWwƍ=ZO?mFgmpB:@DEEmܸ{bhfbffW_8z9`33=zL0AsnnnIIkfeeeee5f̘+lܪ*!C666{?faaaoobDyyy'ONHHUG׮]&XznE5vIVٳ6{ׯ_ݹ-bVf:(AƏogg'y޽mllzZ5cZ… 555FFFfff 444ܺuKZiSXIyƍɉ8qTv풽Uwرuuu͛yP <ĉzpyyyiii^^|qWh"::"ƍkRGGg'O:uT``W_}ghhlDo7n\@@iӪ(,޸q#,,,77/^\dI=ƌdgg '&&ٳΝ;*f1d%&#MLL|}}{޽'O曲uM:Q=3-'|nݺrYM69rdĉ)))EEEޯ5@+f @ UUUEDDt^~|TTTTD":ttAz`sN^ܩS'''')S<Πf̘qysss???ss󘘘I& 6l} IDAT)&ߛZ1cdeeM0W_-..>t:]㏄u捍ݻ7ynݺ?ꫯWM&L*ؽ{$ycdff*lqy~e7iѠ ]YY>~ڴibgOܭ[;u$v)22둑=z; f 곷?|^^ >=z{!!! .%SFFb@;w^,{FhC͸V illlv!v*22rƍ=z;@ 5s皙1n]vϟ;Ν;;M5qĠ D"v6Ajڹ{yy[N ;w}tss/[۶_~;vl====;&Buu"PxE=z^z͜9M\pA[oYaaa:::P= iWK.U?O?$;caabVϝ;keeձcGU酅 ,4h]xx)P::: 4665cTlhѢ_|šCFѱcǔ>s^^^)))7o̙3^^^r;g=B`ɒ%uuu?C}}̙3e-Z$ [[[ǎӓo/Bmmmۜ6o,Q4>=zͭn͚5W\ٴiӯҟjhh+WvQRRsNkkN&f 1zTZZn:wwy;;+V9144իUUU۷o=z}lll[;;QFgeeښz{{˶ >} W>qCZ600ҥKMդ!CȮfggwYZz4sNNNvwwwuuݶm۴i͛W]]/cccc]]]%CC÷zF٢pՏӳ8{se pӧeۻwoccMw A!gΜYPPάyzz۷g:tΝ;STVV :::8;;U6E1"mK$hCBBB222RRRV^/e˖7:uWz2""")))66ّ7o;ѣ---322n߾=gΜwy'??_x{{˗/o۶M$[nMLL333nrcn7Y?pUgSO>w---U۬YvYRRwN: 4HyRJթ@fA:w,©S*TvEu}uME3u5kօ ߿?rȊ,x/wر&ﯾZSN%4qԌ4zUk-[LMMU899)㜜>tP{{{33#G\.ٳCaa{rrrVV㕃镕Uͦ:I*u/>|믿ɸR3gIu*VҥL&ۿœ۷U1I&mٲU|B"oҽZR-,,ٳcǎ$AJKKOoVlׯ _~xT;v}*zܹsnݪ> Mnffjժbe%&עTDj޼5kӓ7o}ZE޽O{ p>}Z6<<|=R=J]C޴iSnn8sν}z{-]4555//+WС\"@Ӥ 5|\^\\,vvPhhŋϟڷo_CCC |}}RA*=W|Æ 'N>>S߿]vT=z777sΕ/X7ݻy_Ǔ&Mj۶رc vڥ5L&ꫯz:v(vAG cǎiӦ;g1w߭Y^^^/ PZZjii7T|ocPWK.Y1bĈbxAlҥKW_}U x)h5ch4RiNkEQvvvt2 `ɒ%yjAԌ4-׮];Bj7IYZZ޼yS/TC44P*6o\ EXlYFFƜ9s 3gNvvAhR.^x{{{Oꇚ1hÞ={NNN;w|~գJ ٳ_GաCssswwSN PXXSnݺW{)??333/^ܧODbccs-K.9r$ V:_ˤ-;u4s̔J+o޼ѣGGGG;;;/""bԩ ,(,,4ⳡR-O.6mTO<9|%K+H̙#BM p/СCSXNjY[[XW\Q݃ҥK]vEeWoi޼ꕬ7sݾ}[m۶d2wwx333O8+k} uq+++-?[ZZ^xq˖-͚5S݃m~͛W;诿JM3g~7eee_}U'W^>HGGUV~~~_|EϚVQ3U8::*xܹ|šD"NJJJMM}1cz+B7'&&իs8lGݻϰ illlttt|||jz:Q,JRԲ:ʇ9+uYӶ]tQ=}uMuK~;%%?0`GjWփ aԩ'OTYu_~֖ߏ9rd=(wرS+bggJM6m|͚5:tkjժ򢢢?!X:f Drpphٲejj0%%I"(rrrӇjoooffvȑ ~~~YYYǏWꚤV>T|]qqqwѣՄjND(͙3Ǥ:wT+tE&߿ڪQZZڤIl"`ffjժJUR#`{KݶjJYPR"o@ٳcǎjo100Pg%U0s̏>hƌX_~yܸq{U*&iCP*Vz&jy枞k֬IOOONN޼y Wbcc߿hiihѢ䲲V} r8--bMgΜZ6VZQQQ7Ȏ5j߾}%%%Yk׮%&&lظjB5'沄\g:::[n4iRRRwڢEfzzzM:j[tijjj^^W\١CÇWÇ9s(mo۶-''gĉb jwy{{/^8 `K}544T7((7((H*4ڝ6l8q/_秼4cƌW?]*TѣsiժɓY+VmV&={v֭U?uEgS 0|𤤤'O1ǏW]G߷lxbƆ?4iR۶mǎ[PPk.}}j{/}||߮]HyBBB*HLLTѸ=Z*:JVۛD"qwwoݺuœoll|r__߹s4KփT*J @7<Yf͛7W^᯿rqq9rD"vE޽[&o))):yQ?377~?OMM:tK ,[l~j P`(UHS `iiyMSLhj֭[7gΜe˖@r?K.bhfm۶d2wwx*6lX.)lذVVV5/5c jƪtYSNU<8g񁁁֭&&&ovJJ1`Ǐ HdΜ97o;@ 5㰰 &hg[M4)))v mѢEMw矞~~~SN-P[tijjj^^W\١CÇ 0eʔ~۶m݋_~ĉ5k}Ǐ;w7_T\R T= IDATӊj "266nӦA4VAm?WÇOJJz䉏ψ#n߾}q騨}˖--/VmlhhI&mvرv)::ٳ}ٴi>]nnnΝ+//_`śoٻwoGGG՗A )11*:M]O<ٲeӧOW^-v8p3gRRR  v믿BCC7mڔchh[o D Ϧϗ^?.\hiixzz&$$R0ζb/> ڷ~+֬Y#vՊ+¬ h>Yf}ww2eJw (**љ0aʕ+iiiyMFÇ/^hnnnoo/v/BnnnffÇ;@ Ξ3guxxxqq RSSE,x~N> #ByyA@h>ru6oޜ/BfݻwZ-**200߸666%%%ڵkwȑ5]J*tuu7U>}Z{?z};sf#׻2ѯ_?Emrynj #O=hՌ[haaa!J5:mr { dffֻf,N8Qqw]q׭[VZpppkͫ|O^A=nqqqЮ]F7o T@SC4HjD**l2 `ܹ}]pp7A wɰVׯ_\[8zqURwV?}e3f2cU??u&&&?o rrrD￯#)2eG֭ ߗ/_޵kWOG,%%%}݇~)B>}?KM h z&'o{oчMcФP3 f jAljD"J ^// ###h֭[l2L&vG@윔tԩC@|<.j^P5chf/ˋ^#Gdh.]֭[74P3~7MMMccc@r_333ݻ'v՘1cfϞݾ}{4P3]pcҥb"R j=G@Sßz jf 'v H$R@ Ahj!H~w}{bg63srr@ԌF"X[[kN C߽{W 6ԌC@>cP'@EԌ҆q~~\./..;qUhjN<)fΜ)vՒ%Kz!vAj;q;99 RXX@ck͞=CbhϪO> bt mg jAԌ@#C4HM-HRA/gddlR  6\~}={; tأIyWN<&vljhhZx-:@EԌ҆q~~\./..;xRRRd2믿.vբElll hCb 'O|gΜ;(33Ν;bXyzzΞ=B 6Ԍ5aϞ=bENNN;w1OEYYY:t;vY\~cb"R =(///--WewZ)2o>!!AjޥLըM @>c\i&;;;ggȢ"AMv o^GG&MppK߾}-Z8_PPߺnܸ!!!Æ MJJڰaCϞ=G{nEJ!AXna*|nnn={qFM+,mllBCC:ԵkׯZu3ٶmȑ#MMM===?~m6&1h63H$R@=ڻwoNNμy>SLqrrѣGՐj&ٱc.]}Y2Ϝ9>5OŻAX~}hhaxرӧ;y~#y饗222Zh!v~wyW^bg63eqqCmll pB՛YΝ;o߾j7//^z-\ҥKO>Z~cN֮]r(˨'Nڵѣ,:ujuuuLr}޽[ZZW,S+>XXXd2SSSr7De˖Ô'''E!SOOLs+ћ Ɋ999C733;rrSuuu ݓƏ=Y)IWuS]@ PQӪ7os͚5ɛ7o0aRϜ9޼yk˖-M:::ZZZ.Z(99Ç111U͕iii\1IW)MjyyyrDơnnnދ/?3^jnn>~GXׯ_So PB⠠ __ߠ T:hРSNU|Æ 'NסKJJllٲ<~X>$$dذaIII6lٳѣwޭh`ee5m4A֭[w̙Z|nnn={qFMJ8q۷ѹ|Tz...Rbڵ/ф '99(//ҚGDDnݺ_~ׯ_WUjokw=ye>SLqrrѣ͛˗O}}}TNQQQZZZnnb Kdnn>jԨA+ ]ZZw߭]MWWBuU)GӍݻwW/۷=<<|MxARoxaqdddL>]Ϟ=ۧO]]ݗ_~ĉ/^l׮aJJJAAg̘/HASH$III2:奧+V| obbbdddJJJ~~~nn̩*GqݻzzV=TgϞ-[>}DE*իghhϛ7W_ 0`@jjK` 6ryMJ9bnҥΝ;U ^K\...ʓW1~)GΝrݪДQ3 ҆gSIROQVݻolll}wUtc/~ݻ:BS pCT*##ĉbXmٲeΜ9 hCx׮]999#GTۙ3g|o߾}njx@774ABCCܼ/^0|十}544T8((7((H*4ԩSUoذaĉ^|Ҍ3^jnn>~JwHz8hLḶGVXaׯ /WSXm۶2ٳ[nU ҵkjW6116mZnnn~)gϞuuuU[h_{:tjm1[[[wI poԪ,eeevvvCw'666!!!^^^ ֐۷;~_t\={V^z>T~ [=w.^Fhxzz>|xbg63f͚^>;Hcr5 6lXz5_icƌӧOddӧO<&W3aĉ6m;󒝝mU%.H=^& MYjUj}ZZڴixA Ϧ+))122; PSUʕ+2ƍ @Cv;Obg(geeꫝ;w; f~XE#""[nݯ_ׯWj 7mdggYTTT0MHHȰalmm'L0x`e?FFFyyy [̙3*fN0]=zh͚5;v4hХKjf͚Y[[[YY@cᅨAІ}£Gycǎ999=y$##Cq~ŊW\ٸqْ%K6nXSV\jժRGݻ7''g޼y|رc=z1~ϋvFܹsO:1Zi>cM}:::EEEiiiF1 IDATӧQQQׯwttԩڵkcbb˫m\Uiiw}vZ777]]];;; :lcc3dȐ FGG5Lg^ssQFEDDPTTΌ VUaaa|||ppp׮]ݧN=5cZ4666::C>>>'>x`̘1VVVVVVÇKOOqUr6(((pttT8ܹsu SY(n0`vo&&&Æ SgF… vvváCnĥ 5㼼<\^RR"v}qqqwѣbّ#GnC.ٳU9::>}Zl8LIIqrrH$u SYwх~~~uFj:w[n)y1BLֻwohΝu@ 5'~b wwwj^v-11e˖Ƃ .Z(99Ç11155JOOoҤI?˗/߽{b͛{zzY&===99y&LkAvQ+׭[0m45g~hbĈ6m*,,޽{wugϞmee%vAj8TxapU+Vh۶L&;{֭[烂|}}RAN:qU!!!oիMLLM[Ahhŋϟ_0 =z4667V0dȐ]?#/0220`qL-@tt[Gu#G9R,+))100/..; 4z3 @FFFRT___ PvvsK,%X41CXX̙ӯ_?OM 0aBLL޽{Ǐ/vljh@E.mhꜜv)vlzp႑FA޽L&+++;Fiaaa/A=h;?bAii?*vgٲe 7@ӧb(yxxц}|//DFFHR k*N|7n|޺u~]~R\i&;;;ggȢz,=nݺ3gΨlcc駟ƍ5-K=zf͚;4ҥK5ԏ Ԍi>cMѣGycǎ999=y$##Cq~ŊW\ٸqْ%K6nXSV\jժRGݻ7''g޼ycZNGG(---77ظ_~ <}4**j:uZvmLLLyyy*--֮]榫kgggaaQAqqCmll p躆,jZMNڽ{w]])S9re/,,ڵԩS:f 5c###T/vP]:255Сɩ<3fӫm\Ujj\.}(>߽{/D… vvváCnյk222?/̙s94P3yW@n7sN=A733;r={V۸*GGGӧO4C˖-SSS)))NNNa4; SStttnݺ8}и]Z[[+@]8q"<<\K(m ׮]KLL,**jٲ -JNN.++{aLLLMӛ4i?>}wޭؠy枞k֬IOOONN޼y F;vhdNӢE#Flڴ0;;{ V#²@tOoZvՀ=^`/8I7zYYY~mAt 80 B"t#GС믿t ʫZ/SSSgΜ/v=77w̙mڴY_999^xa˖-]_ի{;]v.1wo۶nZrw{-]4^zizUucǎ\rvBu݊(W6xj]tʕ+yofƌѯ=GY+r۶mONN?~|͗j$z$XjUaaaYYYAtGO0hiCUTT&%%UVVwy'pc=VuOII O:ԪIII)))߆B>쬬[o+++'LVر3*++c̿Ə?}'xbԨQ5GE[Ѻu뺮"7`j%%%=oqB(}vWT;lݺ^9{q%s=AT$#i&[K"3Z(ʕ+ FY'W_-_<'Mz3g&'G6VOG]k"55k+oŏwC o~3mڴիW7f~3 6L>=--wQϖLg Xt@"[jU(:kvʕ;=n{Ǟ{5j:!oNգG/?>)))//W~+~UDOuY߳rrrfϞ]Re|Mͼ_.]toٺu(Dx]-$BgDRRR#Ju{BQ\|ivw 2${gϞ=Ǿ1--m֭v1wSNqD?*bѩSj֭-ikq|MC}sԮ].] :tƌӧO_`AK;NRW}'*B=333D7wO>$ B"tu wy?i-Xw=묳~nM6uwߝxƍ;36Pk_~SN9駟...^xgY$;ΰ݀x㍷zɭUeWW_]r%K.---]bŕW^ٵkc=k>~+ם~s7|?u***j3q;Hp{ JJJFuqǭ^^3fLS}>;:~С/ uv9|pիSN9ɺu;}snAN8ᄍ76ߊWQ^]۶mO;vmĈ6mzᇫ?M`k>~;Q@}srïꪷzzpԌt!<裯Z9HQ@jժjfY֬Y3xO>[n : @7n܃>yAg^"3^~}QQQYYYAu+ddd\2,Η_~ݑCfeeZ*<@;=Р4 c3gΫzGƱ[YYK/??|&MEcx5<-o=iҤN5g}>O>gϞAoAh/R{?i9d24i  ԹsN:CkN<Ī8 plj ]{Phɒ%Ç0`ƍC:cƠ3N>䪯,Y_Bz<\q/:H$tGtUWm_~Ayz>}ĉz뭠4 alڴi͍5駟>{k9餓+jugO>}ڴiguVYtƷu֧~qܼyMw⊊Fp۶m8a(*--ݶm[#NXYYnݺF0i<ō8aywG|qH@6l8SNBP6mvuƚm֭6lvlZ1ve1c4{Uhժ1?W>%%%55' Bڵe]qp8ܾ}F0ԂߝԔFUV8a㪨۷˷;޾}/KKK $@\K3^~}YYYZZZr ֓O>9jԨGvu?K.m݂Jģ^{?2dȾt%Bg*++>VZUTT̙3gСw x≹[l :c5kVUaܮ]w} BH$\qOg 4wSLi׮_\XXx7V}s<. p>Hp8=+??Ҫh,F"DaG؎9ܚGy-[t=H@\{,X0nܸ xг>AG~DZmib7o޽;p@1@>c@g 0:c &:h"GZtiAtg~AhNҥKYfE-G1a„/ B"tcƌ]n]A&CPee꥗^ꗶnztAsOnܹsm۶niʕw}{キtҪW{}V{kݪ}wu~'1.]sQ[zE\Gof̘Y}⥗^ZիWwG'k B;vK[cuƕw 'cUSRR.“N:)55`RRRJJJP벲>;++[ok_WsLFώ;p NզMP(#g}5կ~U5駟;찯K.!&LygΘ1V5ի|sν袋yuaРA>h/󟱬;͹(t֭=oqBs{kURRR}XcӧO'F=93C#8Bc֯\`ȑ5|_}caҤIW9sfrrjժѣGJKKz衯#>i 0`}>}zVOwL[uCP6m~w}P?-))iov2rNsn'-MOO2do~iӦ^i;C]c'k+ضm[.&:㴴H$R 88ϪUB^`շ+Wvc=sϵo߾1U 2ۿ՟CRO iiiƍ뮻\XXꫯ;6 ;{W^5QGeMVQQq?>G}tQQc˹i'8묳gee̞=z7zQQZ?>)))///[<#'N|׃,$Bg /]C :ҥKfff۶m<{g(?~̓U^ϝ={e]ODi穮&O\ꪫܲe믿?{offfտ8¹sFΛ7/ʘ;^s5Z) {o歷ު՚SO}.Tk_~SNy駋/^|gnvܸq/҄ v*ڵk-Zt駗~;'yNs~W\rҥKKKKWXqWvcuwGcoֆ=Cg $;c,XPRR2jԨ;n/Ҙ1c裏~gwqǮC]xqeee]TTT<3NZsu4՟甔/|رCw=jԨ~Uj=묳v}x uv9|p1ڵIOO`ĉtbŊns떶m۶NmFiӦ~8%%̙֩cPTvРA'pƍc| ]>;NeeeeiiiAgѽ{5k|<5H'N|Wrrr4O=ٳ暝{`˗/?ã?H}?:tȏG.h"_uaa 4#Ç7o^^.?|„ c*x;ut4'=v%\kʴ?dvW[jJJJKKKN{_~ћc$³? ̟?Ag)SO=#G : ЌTTTwUߦ_|qΝ Мg ğ\VoKKK.o 0@sqZZZ$INN:D΂;. @sꩧfgg~͛6m}ƍlח>"EEE(..}|}o-[6nM6m޼96lغukc6lk}m۶wڵko .=@7{7o[c_^^^RRV[n۶-%%%屏_n]VXqŋw! ͈{7o˃NALb.k.mڴu]c߶m֭[>>555%%%Z`"H[jmڴ}|vveǧy4Ǐcƌꪫ:I&ž.@qu֗]vY㓒cV['%%>}p8-{k 4wyUl ]tE<-2|ß}o9)Sva5,X>'gr3Z:wdm1@}%³"HrZ.47tSAAȑ#4#]t0~G'N8gΜ;@\H_ :Фvmv-@z뭷sG x>c@g 0:c &:h"W^yeVV֣>t .zyyysLA4ܷ~{… : ;'?I۶m4$ @\:;찠S4w}AG'4Dx65?:cƒqZZZ$INmh)O?= @\9sĉ_y啠4 гAGTN:ut ^-\0??W^999Ag^"3at-JxEEEeeeAǬiӦKG :@1ӡCK… _yҠM/,,,..:~ӟN0o߾Ah3[PPtP(TYYt3茁D=o=@cI8---$''h"W\qEAAĥ'xbĉ/RADY_}ՠ#Z;v1@z{y x@g 0:cKg $&:㒒M/KVV֝wt .5*//χTI:@#8裗,YxC9$,@0 D҂4¢qiРA :@s1#MK"<hitEg 1@cI8---$'{6'O.((4iRASOM8qAhg;wn&D"H)xhѢ: @a1 3ht-W"t%%%EEEA]wݕuM7K#GaU.Y_~Agxu߿}Agºu ׮]t . 8pAh.a1ɓsss?M$Bʠ=1tEg $4~K"|qZZZ$INNkF{-̈́ F#́y_x#F 6,,K^ :Фڷo0ws=u!Ϧ} 3at@"4L"t%%%EEEAӳqiĈyyy>JrQG{-]4;;;,@09H$t~wAҀ t ":cn)@DzƒϦZ1@cGg XH$))) @93K'xI' xAGf!4iii c,YߵkW1@ȳĠ3h1@˥3} qIIIQQQyyyA&feeM<9 @\:|1@4׿uFvv͛;utlذ믿:9C9$E"t]w]&%M 4:cƢ3$³#HRRRA&2lذvK/O?=lذ#F x/X @j׮]fff)xn:cgSd:cKg r%Bg\RRRTTT^^tYYY&L:N8ᄼÇYH:@#O|>O>Aglٲom݂47A|H}]w]nny4p8 *++t@41Gh,yH$))) @2dHAAA۶mĥٳg?Sȑ#Dz뭠#ZmfffWK.ر @b4>cIθ< @y7<̠qg?Y^^'tf!9C/_~F߾}w= @ټysaaa=ĥS4\yW^ye)%M 4:cƢ3$³#HRRRA&2hР6mK/O>yqǝr)Ag^"t . :Фڴit ^۷<%\:c+>ϸ<===))),@SxFO?w\:蠠4 8pŊ}Q^ck֬ӧOn݂4-[v9 @\:蠃<H7tSnn/tP(TYYt3茁D=o=@cI3NOOD"IIIAH߾} Znt .ˏ?xnnѣD-Zt `vBKӺu̠Sjٲeiii:cgSAg 0:cKg $&:㒒MdŊYYYÆ :rss|1@4'>t }֭[A&m۶¶mKxt ":cɓ'O<9@DzƒϦZ1@cGg XH$))) @ٳgAAAJJJAꫯ>cs̩t%Bgx#M*%%%333@׿߶m[1@ȳZ21@˥3h3....**:DV^5dȐqcaU•AgzYPP駟feeƊ+V^ݫW'Agg}{ %>cof :Dp(J?}?:cƢ3Z%9 ###j[nɉ/͝;wƌCt%i]dIq-Mrrrfff)x;??u:cgSAg 0:cKg $&>ϸ"##U+8}ݠA:uo?G}t^^tf!:>>+,,{cc}s=4ҠqiWTK׿SM9Gg Xt@ipg\RRru=?B(ϦȈD"Zh߾}AAARRR짔vmrڵk{9rz$_G9ꨣN?/:KhRIII1?w}Z:3/r1d|A~~~rr 1@jpx̘1W_}t.fDg $kp ߪ۷oй+W7ܽګ-[m۶{4g}v ;NjӦMν;6lаs/v5?OׯoعW]uUZZZΝ0aºuvn~~~vq7_|cǎ ;CopbIIIVHHʠ34o[o]vm(2dȔ)S8∺wjZ_~e.]vu[5ktڵav/n;_o > a$>⊊VZh 7n۷o۶mm҆ ⋪-Zs=w}(S!{ףGm6o:{ ;79t>|xQQQmݺu׽ ߷C҆MơP(//#Hם={vwԩ[ ۯ駟zR=@DgܣG+W?kO?ӳg=zh 6lHMMm׮]]7|s7vm6m 'p~5qN\ L6-77G :D6Gӷvmԩ+Wvu{'tһۄ1?;팫tܹ9k5; Hԩӵ^NAhAGf14p833'7xcˇ~8㌠\ Fg r錁D`1@$WTTdddjgϞpO? : <ȼ/ B"txUV\{FVVVNN{t SjST '\k/14J(<K:cF3Q$BgDZJkb'ϟ8q>tf!9`ٲeAGZfffxGWTTyAg9@2dH8Ý:uׯɓ׬YӳCE=cƌz޽{Ϛ5^3TpiVVڵ#~l {復zx?F3ٕW^m۶?wO>$PK/8p`,ץK5khjj^XҦM|!C[n)..ZL4i&Mѣ/XP(_6SNgu֧~{nEU}y䑑H[nk]w1)**[{?[l B{mw_,w) :th^j^ ~XuCvC$Q:uQGէO Yuk [w'jgqFh oݺuk׮-//:t̍7FsQG]uU5H7999Uƌ3yrȃ>}Azںմ)z̜5k_|qi{OU3a}]$YhQEEźu,Yu38? tA7xcs=/>וW^{.k 89s攕-[/ѣ^XX/ի]v;]4++1g֭+|o?D>쳿/v#^4 PhAg˟|IAӶmP(aÆ(cv쌫~u߯:bŊ=أF eL/ʰv/͛׵kا3۶m;}֭kL-[;Uw} 8J^z]wuU-ZTu۶mܹv]]]nڴ)55z)STuKwYu _YK.oRSS}3m% IDATv@lj <#ӦM :tp(Ys̉D"iiiK.oޣG=z{챥q}؎ TO~/SB:̚5ڵQX]1K.ݴi\p6lnp@;wƢ[]o߾Uˢ~s֭+|㏏9[M 9a_^^W5tPN^x>}5>ʘ䊊u]guw\1ղwuץK? o׮]#f>۷o[oy;]7;;;\GP/׍?Ʒ|ܸqz/O1bC;{;ig ĥ;ʲk.ZO/--CPJJرc/袅 VTT|?vF3`qNKS꣏>3gΖ-[vu:dddn]cnOk? ~cƌn}3'''viW_}믿^^^/k6mwqz͛?Gy7^F[׮_~ڴis9眳zOM#:㌌H$ҪU"\ 0C lٲ[BCП甔}gĉ]tYbEϞ=^2eرcLD=xz]c=?sΣGqNK,SjӦMW\qn햕;y;[טnCr)o'Mttf:ug??۷/~(u]9r/~rn]by_};kݺȑ#O?_U7ߜ8qtf!b__veSN : M6s9ᅠ\Kg $Ϧh1@˕tFP\\\QQѪ Z(0`ڵky:3vX^^^^,$BgܧO5k|ݺu : =z3 @Yr~[^^t Ka P-:c1cƌ3&@Fa@\!qvv3^z=k֬{復4^,;凤 :P dq|KN"gddD"VZ-\sQ|ͽz8y䑪&MZ|Iz_ro:+ mذIOOׯߊ+Æ ԩYg駟VܴiӃ>8dȐ>}r-Uǿk{zev̼c[oo߾~nԩ_ܽ{[n% 3f֭_ .?t;v-];v~7U~}y_RRRPPЯ_Nup]3cǎrE{>{ĉ+W0*L=K"TWWKRuWD:EyxxEDDcx=|>|… T*'Lж~ܸq w666痕͞=uڴi555/^liiQO40*_sֶ;TڳryVVVFFcXXm&,9h9RaooTWW[RRyܼYSo_m̩}}}첳oRH$7oTq<~~~VVVݳgX[[Z=z۞ц'-7a23R*gyݽT_AuuR J/@3fL^^w277_`o_655]|ݻNmaazgff `ii9}人뜮O>f͊-,,MII7o)JիWsrr뭬rT*50QgAmF^XM0!55iLg-@4nϮ]&v]m6 &lذ!**Jshɒ%W\ok`Vbb /?vEFFdǟ>}Z=sNc>s:綊}5k(+V;QSiT7:88;wnǎ&,ַ6cx<<,dyyy͕|Mۄrssʺ} ,Yb86ؚm}ZWۢE~^r̙3K,Yvmz}w-f'|ү_k׮i/^hgϞ]\\|I///kk붑 }ƍ@__ߘ7n8po߾uuu7f[} VVV/_ܽ_|Q Dg ^c/:uRnjjJOOߺuKBBBfffՌ1P&H RѣI89s899-_<;;:=j#G{{{O8qʕk;pע:t̙3CCC: 5puuuǎ:thppE?~!CDDD|_5dȐ  0ԩSoṆod2Yxxڌ%KXc=㜜L֯_ٳgN6Pؘer<+++##1,,Lh4/4vqq{ncc1tz *_ߨlmEÇ<.\kՏ&M/՘1cNNNr\[ZZj;-K/o߾i"//矯III"22rչl5@͘1c_5Pv՜z+++\.J^Gc/g֬Y))))tV*R@ߋ]ӓJKKo}0r}c<-z饗Ξ= /t,*]v;@` =c}6olaatҁ^vmذaCqqqqqq2lOn;]_͒%K\booLRmܸܹs;vh~u1&N28ۃBCC׬YP(VXѱSdoom۶O0aÆ QQQ*]Ν;mllƎsEDD q}c/^|ʕg}޾QM_`Fgg>wY8p ""b…}Ysco2䷿AC *++[ZZlmm%Y@ oA&?j74f̘Twwwt 3~YYz;w8991B,۷T*Ŏihnj!!!_먟lii;lZG@/_|@D:)mmme2z'ZG@/YTT߁~~~зH:6ŋ6663F)&co>SoYt]-BϸN DC腜,--[nرbWqq]>3t 3i۶m^^^Rt̙W*BxVf P[[׮]S߻woƌvvvׯ_WT{N2eĈIIIUUUA?ҥKm3ͣT*}||۝򨩴M>{ĉ+W0*L=K"TWWKѣGXWh"33ul)+++J%ТEsss DGG>|p1+뜕T*'Lж~ܸq w666痕͞=uڴi555/^liiQO40*_sֶ;TڳryVVVFFcXXm&,9h9RaooOĈ[0aryEEA188ܽ{XR+ -)) ssfMY_1|}}첳oRH$7oTq<~~~VVVݳgX[[Z=z۞ц'-7a[LLLppASiggW^^?0@,|g'Ok6776DZZJrtt;'??w >Sx=,,,44СCbg3ދ1^2qeeR*/.v=jj/,vnznnnrR Ds޽>;s޽Z5SLH$nѫVsN+۷p߁)p)YYYf̅aС111!!!bLg ?/v]G"F6m;wzzz]YnرcN3` l0%FŗH$r|ܸq666Jڻw)SFTUUvBQPPP(\]]/^lRmp޽3fEGG_~Tiii'OdNNN ',9e˖---yyy?|MMMJJ Wmnn~fffjƌT)իWsrr뭬rT*50QgAm}5kVlllaaannnJJʼyzzm޼cҥvڰaԇ"##d2O>v%K\r><<ȥZMѧݥT*ƍϝ; Ή:mAAAk֬Q(+V0x`x,V!^sΝ3gNVVYtB2c an޼y!CL>],3VUUUVV}"^>88W 2dHLL) SĉO<)v ]@{Gg 1@oZ]]];k֬#G@|z/z{3zƕJ3Ы_=33S zQF._\ ݂:mii~Ӳ>Jz7۷oRRա?''GJ777}se2YEEJR.; 0Kmm[{ijj~7>>~֬YW€VV_|񅾹s7}M!v=!vN0h \R@4}[K$g}ٳN:ujyyo9dȐ+WODYJeqqR;9&&fƌbLg /_ Yz>ѣ&L޾}S2!N~__1S`LH"̘1㫯??!,,x,@0;tGjM:uԩ9ǎ1t SxV&q z5k-_\ zW.]4))I ݂)o߾]QQaee%vqCnnnbܾ}{׮]G;@` =cg 1zC:߁41a;^oue0)+++J%Y>> kkk773g痕͞=uڴi5552ODGG>|p¯I2rHݻw򬬬 GGǰ0,9Y:Hjg?5}Z:.Æ ;vC:/..^fȑ#ׯ_o`q_]"dggN"”)SZ̳={4/,W_i80++K9ѣWZuM_|EO{b'շ0/^\TTo@sK;@` =~';Hg|ĉI&C__ݻw `Xui}0`믿M>|XXXsROO~AsT_~ԓ[pDRmbܽ{w׮]G;@`.vyZZZ-[6š ȇ~haaꫯ>666A333 ͮ :OO>ԩSFO{>|wߝ8qO?4p@ł _|qϞ= k{T"qƥ4W_O h7n8 )|pYxxٳg]1͛7_eƌ*KJJA T޼ym߾=##O>5PvСwy=88رcFFF {v;۶m]]]ۍϋ/hffnԩSJeuu|ͣj^zJRT:9cLK߾}[UdžV]jF+׎=Zw}ŝ͚5/~NNNO?v͜9s )33sܸq'-\W0jjj8p`LLٳ-&,C 9y\$11QrՈD"ٱcٳ,XꫯZYYm߾====--R?Y-ZTWWӧ9im?֭[y۷oرqڴi:WO#ǎ[bEyyijjҎO>H1uwygܹ/^ܺuV:uj\~}֭555)))'շ0:Sx:aڴigΜyAXXoݺuĉyX?==|omq߾},X0gJBnXXѣ5zꩴ4yc, 8w_ŋG۲q͜9_~ܼyҥKx57r'շ0@oZ-,,>|hncދ/dɒݻwz0S;884663~~)**ڲeu >S@VZZjPP] |W&M8q3g >9;;߸qC%bO z{BXT*JS.'t{jju-B^.755hT*g}v38p@o>֫[ŋ666u'Z[[8sWF[;穧3gAs@'sNHHYZZZ-,,)^n +x]yvvvVy֭[挽D"E гsuT*}||'O5jիKKK*j޽SL1bDRRRUU>11g1bę3gm%JgΜ~uB(((P(/a˖-yyy&y뭷u6&O,ɜ GYskZyyyllAƏ%}S:lƌwqq=ct萯 eeeǎsvv>qDDDD@@gJJʩS6lذp¶ $ٳg'&&޽[{byyU?"Ψ:/744>}hŊ:k^y啃w= =cL&dbн4449r$>>{ĉ+W;wW\yҥҦ[$$$dffjzQaaaꆱ :t̙3CCC:k,Z,""";;\DR___PPP]]-JG-:uxm;v,>>~С-Yy拺̘1S+͚5(99Y zqҥbLg| 333M U*zwܸqϟU7Μ9_VV6{lWWWWWiӦƎY9'''::z>|  g3dȑ {{w666jϕYYYaaaEYskŋ---Itd2g]۪rϞ=1|j<666nnnb󔕕ڵ+++K ݂)m*??_{ـkkknnnzpҤIvvv7ETzyy4*.***88877$<<\sRss 'iWHHѣGo߾-m xmWH$7oTҥKmu~Y-::_: 3` 3k֬ܔyi=z4++޽{ׯwvv\zunnnss333۞ZTJ҂&1cڶ ')==}Ϟ= \z5''J.KRAEYsд`ii9}人,KLLˬY=ESSS]]ÇApZ=c&kAAAk֬Q(+VZ~Gշo_"##d2O>vM{{m۶͟?„ 6lZdɕ+WÍOӧ~~[Jڸqsva b}+pSΟ??f̘sΉ@|:߁41a9^'fӷŋmll:tb˜u=H&n]TTbŊv:u*::7͞={2dHjjAYD"vb?y_~=ҿsΩw1cƨV^ޮӧϭ[ߪǯ]ܬ_n.^xm__ߏ>Hs駟޻woIyyy///۷={4,9(JwrΜ96mjiidyl>^-R*F3+..Z 'N!$$D гnj2$$d޼y|J7nkkkջ>>> kkk773g痕͞=uڴi555겱cjVɉ>|>| '9rzݻsryVVVFFcXXyh}Qu%^;wÇ>3m)JWX>/^lii'Md=D"E г3` ڶջgϞ V7*** 'Mkgg}_JLQWW[RR9NҮG޾}3::ZQ%u'A9sf]]]NN·~!j믵 D"yzz)0M}5kVlllaaannnJJSGʺw-,,"##W^|̶VWW+@TZPP94f̘mcItJOOWի999VVVr\* /bk߲eɓ'/^ܶ|oƗ_~tw6KKӧ'''Օ߿)@0L&db &۷YFPXBsh۷o5jT߾}:dǏ?}to۶m&LذaCTTВ%K\booj$:}YYY T7:88;wnǎ,ַB)::ɓ'N:t΂^xOŋi}m;w;vs=ats&L(**ڷoA}ܖ,Y"I҈#O^Nsqqٸq͛7ǍץKss޽{U;[~P(Ο?_~uE űcj;* ;;~͟?5@@f q8poqtt=pqo|||Ν?~ov]v5kY ߳gOJJ޽{%I9ssrrʻ>}:))_Y\\nݺ۷_vիuy"[[EUmEEE}{ddӼ$Iovqq;wmۖԽ{_~iAkFEKXZVNtf1b-}J;wQʷU644TTwY.?.))6mFٴiS:rș3g#I$I#G׿5sL}ȗ_~V|WS{cEmƌ;v숊^%I/t:_xYVP(J۷qܹ_uG@+kdd$:U{=Yē>7 ۿ#Gkk4h}/_| Iv8x[4\Ɍ3 +tǸ'ON2E)SDFF6d!Chz@=@EԌSN155ԳSN$={beΝkKtt%K\\\jimm={/>x~~~$9;;K|Ɍ3S=uEJ244tժUYYYk'|sI4y丸ӧONR5cSiqΝ;k4CUl<|}=jELLĉl]`vvvNQQQy:00p׮]gϞyf@@SN...UW~ITcƌqss ^%%%u+xO۷^~PGg $v`<~Q@֒*5[146uU*գGDg LAAq~~,HQQQRRR6mDg 3>^tV'L :@Ro+58p ==}֬Y))) .ԟO=ڭ[?pܸqen޼qF;;z+!!aƍQQQ$DGG;99?~|ҤIݻw߼y3g.]ꫯVWK;v|΋- l6o3+++66V -XldBZEEE_}ի^xy߿رcyR9o޼ׯ'%%۷o}ر5kuT@@3<өS/lH^zڶmÒ?ÇߡC??˃bQ3FjjZVNy011zŋ===//\?HOOs;oZ… Ǐ/W)ʲMDNNN?UG~&bu166$''XBtfA56mڤ'''y1229rʕ+ܹs…͛7O0ѣG>ѣ%KIRM2%$$… eee?>x`aZULLLU}K.U-מZ۱cxQQQ|Xdaa>vW_}.lٲvi4˗/oݺjº?H]*R[hhرcEbܾ}֭[ĺ1qg}{;v%`nnre˖WlW*ӦM+Fj:T^?nlǏxbGP3B4|ڵkUgz&$$HUQ2>>7 ۿ#Gjߋ=*** ?h4>>>ѵt;y)S$I2eJddߊ 6Żtf̘ahh^}/_q$Ivrtt}gΜY^?|+R*VʪK/'3f둭NR-FVVF۷ ]vWY}8??QtK>>>"eYW|r;wh4xa{{=zr'nٲۻy睢JUr%%%%'Ik¢.P<$3-44R{``]Ξ={̀zgIii PʼnN@~,--_}UA9zhG ]|yvJ- b֭G8qܹsMLL۷sNccOMM9rɓ ۍׯ_ku[nССCȑ#))).]j׮%::zΜ9iii5)--M6OAC 8f̘ٳg5޾.*Ũtw_>''guω+0Kצ$iСΝ6lXbb'LPwޖ-[L~jgSS̉'kn̘1wVTՎ}v??~gh߾Ν;kZ1ƩSj}{*0`#*6iU IDATfԩݛ1cFUQukתTnݺ߾}zf B!噙6?˯^ZRRrJ//5͖-[?W=cffV=..n˖-Ǐw^ǎnjHf$TӧO뗱yԮ]Ns /PTM Խ{w77RZIj:P(֬YSIJJ[o48F+: xT4[ؕ+WVl;v'|ӯ_'x…j ƒ$YZZz{{ϛ7o֬Y>>>;v| w}w++N4ZM @999믢S446DHkS7I*Mӿaaa?rHeGEE|'::a4hS۰aotR{ @֨W֩S'IΞ=[Qsε_dɒ({Z[[Ϟ=ŋ<߿_ff$IfffYYYfff[:T-fΜy7ϟ=@MZ$׌u:Vh;wh:T=z˜'nٲۻ{we#G~wgO>?SN...tN7xb;DIIFquuمY}877ƦwU([n=zĉϝ;?޽;,,ظRSSG?y #-99yѢEW^ɹ}oݡCCJ4iҤ'N|ׯW  EDDķ~;nܸ/"33ʕ+_Ο?_)JKK+F*++)@-;qDII BXXXN4ItfA5СCϝ;7lذǏO0Kw޽-[_?SΦ'Nl׮ݘ1cwޭR$Iܿ˗=<<֭[7u+VYPP)))۷ONNH.]߿,ÇE 3mڴ | d$((h٢4 h|||N~ꇚ14kjJtEױŋ/6Cy.\?.++{7 G:99n_z YzPŋ@~x㍠ >t qNӯ]j6mݻΝ; %I  ҥԩSO<{{{Bqƍ&Iի_|>}$%%?soo=zlܸ133hhAzqܹ 6ZYY1bϞ=>BJ^tI>ܽ{wRVTSjKs_|QV;88YA*oZg˂Aiť_~-ҐoQF=|5 8;;[[[@~oA@$Izh!!!㜜##Ē{{~I~m''2}j{SN]vm!˓'YzҥK:tͩ7OLMMwؑY~\tʕ+]\\u:ݣG:wے( v]zë@ %I*))@Z޽fffΝh4)))G.!''Ν;$UԩS;wxbnnnvvOCW^m>|D<իWk>深9|G}4k֬?OK,߿]n$IRlliyyy}˗{ehh?ɓ?SMMM/^b( vܹ]j ~eeeZk?&&&W^տx񢧧T*{~AAA5M=F$… ;w 8رcFՖG&$I*((pBBBuV)d]yڣާG~x#I:uCqqqR,**$wߝ9s/r+V<߮<ԩSMfӦM&,,Ltm۶p DoccS>i9rʕwܹp͛'L?ڕ$_;v-[7$IG=|G,Yҷo_'''J5eʔ .=~Uj^^^VVV111/?U1dݓC]ԧn:uTaaUo$IRϞ=Ռ3/_ I޽ۥK'4_~ٳSݴDGGWkwƍ'N$''ީ4Z6..NՊ@~fΜP(DO5cQ}m۶Ǐ?x`ZZڲe˜~sM%K4**J߸jժ)SZJV?sgϞ:f۶m7l+77бcNJB;""b}Q̙3fܿťO>˗/7n\MkHN""Bt 4/J¢FP*GR7P$YZZ6Pmڴ133k$I20h{m۶]hћo9{l<%׌n $I0a[P(e(ILMMemfffmڴi ---e(I[V^]`bŊ ;|A``%KDg 3?변&?ܻwEܽ{W @c آVCBBϟ_qyϞ=}||:t&:1cͅkZm۶ꏭϟRuŋ/^vpԌ4kyyy֭$b޼y ,PբCh.@Q3Ьm۶-77wҥ .@BN5cZ]uZ-@iiRw,ӧ;_Ü9sl٢RDgLIAAA~~,1V Q3K5㲲2V):hjvh4+Vlٲ%<<\R Rt޽{nܹ#: ~?3h"YYYqqq_]tB@>=z ۑ@Q3rE1  ' j tB&M0w°0###Y}9==]t %c377wÆ ԌX@ `wޭA~m}j;ܹ_Tk֬q\mc#>S1cFlllTTTÇBkh/^,: g3cI4ݻw\]]oݺ%: |||/8>k֬ O}G֭ۇ~8n8}etٲe7oܸq[oqF}Ȩ(wwwIRRR?>i$OOݻo޼̙3K.}W%Ɏ;KggEFFFV<""ۻwoukM8}iiio<==>Nk7|dǎTJRãcǎ111$>|x:tϙq\mcCjک:5iJ244tժU033آ?633iԌh<<R 0q(;H(~_WC,6:k~@ڎn&MKHHHMM5jRP(JKK_6IEe6>x`ƍHNNLMM\?p,IR5˩عW^sBBBZVfz-͓78qBڵ޽{ Af }X___Ti֬Y@@@xxxrrrBBBddѣW8 xxxX[[%$$>|p޽Qfff嫞=z8w\ŲqIj??uԼy7o݅WPP`hhhnnnff&IRU˩s |srr-Ǐ?z_|q5k֌3IYIII~94! TTk̜֬93$$P3ʪx*FnÆ #F={vhhӵ,XaWW-ZhHlٲe˖)޽{Wrڵcƌӧ… 'M4eʔׯ[ZZ5Ij"00޽{сM6}j^^ޢEZnmggw>Tڹjk p6F^ 3mWttW^=y>H{5""°ݕ6!166mݺ g֭QQQq͉ǁ̲>>֭{䉶DDO>vZGGG33aÆ}ך>666'O$iժUΝ{a+W:::okŚ*VVV.\066ּ.۷0@TknŊuֶM6m۶EEEi]hd4fffٳ'++kڴis\ꫯ8ХKUV1BSX]hѵk֭[gaa1gΜuioٲe߾}nnn$eddZ[[>|x^^^?… ǍW1X5InwΛ7/""b˖-?uĉ]vٳK.&L;vYf:t+;;[S kk,[?3 ˗;99w̙ګ]vU(3gμrJZZZIIݻ׬YѡC+VݻW[~9r`,IҘ1c:wl``0lذ#F۷O$'Nҥ}ŌÇ <ӧɚn={ܵk׎;~KOki^XZZoݺU e``ޡCǏm$Icbb۶m;rȪbu}͸DVgggqww744xٳg4oO@JNNׯoAV;::jk^O4/!!!55uԨQI eT\m6nد_?ToooUkkj^5E+'NM2EtvM6U2@!7#:tשS'I5k9zhmܻwo)rrrjYbbbS{qܹeć~hooԩy楧o޼ǧ.C۷޽{>CCCsss33bkx?I^^^JJJzz g_5k&:xƔ)S92n8 61b١ӧO\` \]][h}Fe˂-[T*{_q KK˵k׎3O> .4iRٯ_nii9jԨ>UM w^ttt```ӦM+v 111qss .zyyy-jݺ?쳊bkr? #׬ݺusvvv,d)"""00PtСC!CbccEgb1+J___TQZZss]WT9s<}t͚5Ƣ&eYZZ>zÇxQ3@t-jxɾf\RRVEIyСm۶󋏏$)??_2^ͭtٳgkFFFNNN ,fpG͛wH\{RRR1nݪ}[\\w ?ULLv OOYfݻwO۳ϵO:UӸdɒ|U [i¹sƏ/:YzMLLLDO5ׯOt=z4%%E`ÇxϞ=j߾={7o??3fh^_r?wvyڴiFFFNvΝ:##c׮] .IRaamܶl"IR%I?~Ν;*.xĚz={(J;̜9󫯾{nMƌ;vl=ʟ&266_hQQQQ=Guٺa;yd݃OEtG@'\СC뙚*IwF;wp 6DGG߿e˖t۷o_pp_|agg甔cǎIe˖ޟkj666/]Soڴ= VsrrP~Ika1l2T*MMME0)JRY;v$)>>|I2>>^N:U lٲo=Zvȑ#ݻgffVi߶{$iĉ| TMTwEFFFڷP("""{I&U8RibbR}[tj&ẞ {*ǑxO_ 3ڵkVVӧE ؟0$$ee٩S';;o|cLLs5S$&&;vƍ>>>5faajkl$ikbbbvU- ĉڷǏo׮]y뭷"""d޽zzaM6j&ɺ*A׼ys[[jV*;v숊@<3?ftҊ|gÇ;v3 7lذ{۷W ѣG&M8qb~~Yfw5kL0K.g}ֶmW:322Ν;ݕ;}VZU|MV+w //]f͚1cT'T\VVV\\oYӧ/NZհՄ tK~1hI5cRi]-ZTحW^Æ {Y]t qFkNZհՄIMM߿ oI4 +VXt%K/_.: '''NXYYSm@gSdgg뛚@$v v%%%_]\\bbbDg 3|ɳgԌ]Z9Ν;ىR;Ҽk 3gN#T0%%ET@~DG/d_3 &L0AtZcmm}m)K *0k":+f f 䊚1NgS+JSSSA@]svvVTM6,X+Wlٲ,~qnݲ~GA4jvҾڹsFiӦ֢;wFEE={Ltd_3QVVVTTTٳg̛Q+T1IV_{v''˗05,,,--MӞcggu=yD?""bΧO^vٰaþkMPɓ'Kjժsν0ʕ+}}}JxbMfJUsSGFFK{̙3p6oI4HAAA֭ʚ6mZPPܹs%Irrr*,,777I{amm}_pA$ww 7N3׬YOwΛ7/;;{˖-RZZzĉ]v۷K.&L;vl6mOV۷onݺI4uT==͛7hجۋ lA#˝;sh]*3g^r%--dk֬СÊ+ݫ#Gj ƒ$3sÆ 1bľ}tI2q.]?ФIAEEEݿɒ%gϞutt2dիW+vV*F/%I͍2e+/T*E ?+WܴiS˖-EO!:~Www/@;wܼySN]txb^^R^Lkdd$IvvvÇ׎dGGGI?8..ngϞ>UI^{5MezzzqqΝ;}]Ms[WWׯ_r%11t IDATǕ{5*""bϞ=:tݻ.RRR6m*:8qƞ={$Irww744)ٳg4eZI4/faaqPںE~~IRSSG-*ҊORQppp<ظqc~<<<###SSS+/o2~#Q3@/5k, <<<999!!!22rڞy <<< JKK>|wފSjooo33Lܹs'?ԩSKOO߼yfUM{-[ٳN^y@EtG@ôa__#F̞=;44tK ,ذak-$^lYPPвe˔Je޽+iiiv1cg…&M^2e---GU$5x޽J8ɓ_oZZZ -j;=_8pɓ'Eg ڵk̙3{5kT)"""00΂սbkk믾766***{ADg 3 .TJRt%++Kt Pkƍ:uzEtSݻK,f 166K/5:t:uٳgk}͛wWjɒ%5O?i[bbbZ \U @9|p~sСٳy91c+Wsʹ{nΝMfddRSh;,^ɓSNնϟ?D+%I*,,ܶmۖ-[$If/UVͫsUu[ Ԍ@w?ꉲiӦ 6,::ZӲm63fƚF}}}[I}];;׿͛7$IOOOP.Zڵkݺu$I4mll͛e˖˗/i.}eee7o۷YK:u֭[7rȚ۪>WtRMA,j;3V(JDt oQ{>Ν;*.xĚz={(AOͧ/mmmvZsssnjbbm;vl=nZqj8<<|ѢE5| mU$I۷ɓkbiFR?~jh!!!'kVV։'D0TC>355U$oo򍚷wyD6l޿˖-S)>S+++kk˗/oܸIkj 666ڏk?Sf4)))ǎ $)((h˖-5Y0uT}}M6d̪>Weaaa5 mmm;u$:#:xJTZWEر$I5o_XЊ]`}V){K.=x 667vӴkߔim߾}ddm޽%I8qbJJǫ_ECJP("""-[]a+\UjP>@WSNvvv|MƘ+++ggjHLL;vƍ}||S)6mgMLLvi5}}}wڵuӧOKT\\W_ݽ{WS͛7W!5z-'' [i<U#3K.nnn\g}6|cΘ1pÆ w޾}{ͫѣG&M8qb~~Yfe>FIII6m=Z[n%K?sεnZs566v陙Z~ ' 4\ޖ𘘘K.<%}%%%jG˪Ԓ$ <#G2dݻw>}D crr7DgM\xȐ!gѣ$IjȨiӦ6rnnnaa}yy 8//o͟|IZZ$Iyyyٵkرc_mq޽>˼˼bӍ7Eg!3600P*ږu٤hddT*_˼+v^h~qqqqNNB011ѣG-ZtI:wpQ(rF$99Y___tr1cƴlRtd_3>{l޽{ꕐP}O*@vWZYYk; 1&??9r֭[!!!QQQŢǎ@ӓ$I5ٳgt֭[ӦMSTCԍƉ}Qc}222Μ9ӺukYɇ~վ}{AӓilOׯ_||,Dz˗---DgPwڵk~޽mۊ~>@≤#jF@>舚11j#׌ R411`ԍ*Jt2|򐐐4AS^zeeeN@c+f `19~rТf g\\\P(LLLDg iРAw܉ԩ,dɒ%:t@<׌Ϝ93`:uJt"YXXNݽ{7%%Ht23rH ׌@gϞG@]32FtD5cБk BT8rJ IMM@<=hlw/Ϟ&}WF@@@W999 DtP_]@N/^ѣN: k? pIY/{zz@fF!:@}K.ϛ7Otu'h #j@ƨd_3V(JDtQ7NRuMt23$$ۢ@W}xԌƩ}#oSN@032j'-jxɾf\\\VsrrD ivvv dfѢE6ma$)DU||Eg R˖-\\\DPݻ/: }4\\\9":#ٟM 3j#j@ƨd6BP*Ƣvڕ߮];ALDDĭ[.\عsgYc_ƦO> gΜݻ,q654^Ԍ4:< @14^ꜜA'O,X`ӦM@WN_2hРcǎ@sΙStu'===%%%//Ot2[oP_~qrwwߵk.#\t>sN]fccc }{ر!C9::~wU}>%f_Sce%%%NDR5zdϝ;W󺴴 X[[3֓|r)P7'@GfVׯ_}IBCCCCCmll&O|1?XYY]z233۷o߻w+Whvnݺ'OH駟G'!!ӧ$Zܹsm۶zzz޸q+U_x$Iھ}JevVXQB$I:rZ~74o޽;pM{zz˗o~ j#?@TAǡ{ʚ6mZFFܹs###Dž 7N---M"(((==ѱ0>>^RM>]۾hѢk׮[bΜ9֭8q󓓓$IڶmۨQ*_xŋ?$&&T5`* @ffY:啝RY$I?$hbƍ;uT۶m]@OO_~GhgϞYYY@fVZRϟogg': heOAA5o=zh^}V+-//˚˖-322*+++..Ҷ߸qں쭷ZxqYYY~~R<~OwQVVVTTdiiyU3s*x-Zغu'Oj2DD… }||ܹSVVN:ûˇZqdrIw.:~I/:xl/yxxh… v޵kƍ8вeJ;\tEV',Ç2lذqqq۶m4ilg--[9sfjkx?~rjرczzuQQB(,,$iɒ%$ 0UV+WwI/{iK8?9h5}͚5 ONNNHH=zR=Ν;޾};00pƍՌּy!C_>???--믿ִ%$$>|p޽K&LXjՑ#G&O\qLB1v?ɓ%%%W^MOOf|&w )))..̬t͛fffSN]tijj$ISL1224Ezxt2yfn* ׌juNNK}jÆ #F={vhh5SL~Qݛh"?ܸq>scc={Ǐ׶/[,((hٲeJwKG۷oΝ+3""wYti˖-'OY`5/yyy-jݺ?9Z㣏> ruu>|ٳ,X뛘X?_ϟjp=v SHHѣGE 3۴i ɽrQ??#G蔖DEEiOxz!C @1訉200P*Ƣ){zz~7ԇh_RT df!!!7o@<=.dwuu]t#4߾7pSN\trߧm۶CR IDAT@0T?>dȐ:t={=zV&*++{q %Iҳg je'OP$P%%%ٵ2$IO>@<'%%eʔ)[lD{aJJJ-1F7}͸zgΜB011LLLjk?kn755ׯ6mjddT+CIdff֤}וᅾ?F'xxNNN2^˖-ke(IZhѬYZI&ȨiӦ2i %IAm[|yłq֭322͛'$!x͸O>}@mݰaCR6tP///M@At (J?ѣGfff}ѭ[.]u#YzJzE 3k׮ q Q_ #Ϟ=}̙3gϞT*5/xA?~<..Wt?<77w…smժ8Gl([nYXXT3M@5c?sL)&誨HV?}Tt[h/^lgg{nALXXئMDO^!CƊ@-ZkNtu*333%%ɓ' ׌@]vG@]БϦ5c5c cԌ@G(JcccA˖-ST'N|!!!ׯ_@<=hl=z???Y>c+f iZԌ}͸HV?}Tt ++A̙37m,:x tuѡCH͛7@JIIy dfذa#g >0a~kΝ&66vРA׾hDR5c D}sռ [|<@V@hDrssmgjjyƍ:׻x{{o߾@Ӿ}(vڭXBӘcggu=yD~Zoh޾Ǐ%5cБgl``T*E XMF/x<`D:fffٳ'++kڴis̜5k֡CU*E]n: 9s椦[N~[G_~l[honn.:Y~}bb̙3EgL5c??,)šqqq߽{0@$:~ǎsrr$i̙ܹs <==%I*))ٽ{C\]]%IZb_k]z/Ktr̙^1I$sss ^?pС#FP3ljŋju>}鐗y۫W .暛DGGmvȑΝt>|>},IJرc;uݝ PP3@pG˖-nhhxE۳gzyyI!88X$777 Zvtt$cǎGwsUd OCТf P(cǎO|p޽quv#߼y[nuP qQQZ~ nwygcã*@ XP A-(Qqa jf"]nVQQ"U-ThZmTI%,y`^&|ʜwssf;97ؠA+r;=aҤI]tի׵^;lذ_QmܸnhԨQff|0y'r-]v-ܒޡCwyt{.]J_]>ܹ>zqwgff}1çLG]Q%%^z=z{/b,@Hk֬Ș1cF$۷ooݺunniEћo_zҥ6Wnݺp³>;7onWr6!X`A85jxwuW{oTC$''m۶}vC7w$ 1׷o"s 7|嗽zjӦͳ>}Gu3jԨqG}GXd qa 2$KN>}zYs3kժ^nAʘ1cԩS~%wqO=ԶmF7| s:B/ɺ`iGq:QC{/K/u=tC֭[ׯ_~[]mٲp*um۶m쪸h*ktr8Cjժe˖7Xbȑ&M7nW\6{Z3fkdW۷o_v>UEEEEdWmm۶[n* BحAM:/KCUŋsssC`\^}zjժ[>UEx`͚5ɮRRRɮ(_~5*-[<37ou=zW_O&@qU=sZvvOvԠA}(RSSk׮OvUF}2---%%ef͚x>UEu֭U־ݵ0nҤIΝ/^_^}n:t37oy͝;7t [ɝ;wرc8TTT4iҤ5jȑ>3<?$s9'tEw u֠AY}졇K_ȑ#GUI*Hg Tz#6lp]wEQT^#F\{e3k=PQQј1c~tA;*(;Zj׭[7t 0TI۶mKNN^lYÆ w!CݻA Ht>ҥK_p _x[n],Ν{yXFg TM 9r(33޲eKAAAaaa @`V Agffz뭡 k2eAK_ȸBYfVVV.]B*ڒ%Kw~衇|YYYNE6mJڝ-[Λ7oCEEE_\tEZ꫿ҡΝ;?~SM)=bjjjݟz꩝=:))_qc?իWf֭ۺu'nذ츳f*{/tI'aÆm۶9r~@;F۹M6}nݺ5))7(ջ[6ڸq~5mt-1Ni۴`~~^{ǧj믏As8!w{h?ޚRիW޽iӦ?[noO>6= q&ziq=O~gyq<@51@:u,X^TI{pviu֝5k+raum֬YuYYYYÇ/{ҥݺu[+W6okIKK!^vmݺ[o]r>c#UƎe˖}8p7|S6T\\O?:uޝ=餓lr]w-_GO>VZM6SN~`C}7G}=}z9ݻ?r?{G5wܲ=h߾3;Ç/ٓWdNϞ={E;YfG:u꧟~Zv houֽo 'EQ6mڴii#h=dڵk?ٝ;w^lԩS?裚5kƚXG3qϿ&;ýJ@d1~3^|y^^ޅ^ .`ժU_|Şbذa+W5kVrlbŊ.hcy§z/~Q1777;;O>wzXb?]Ӗ(ԩs?Q=\pko5kּ袋PQխ[nl9EEE?xzZjgW{x;w1bc=r.oXX9+K/߿w]zEXct*9QSRRc](.첼o9VXEQNvXp?I&͜9_lРAsΥ[T~{RRRz⊇zZe]Ee]6um38#scm߾}ڴi?z3<`{a̍h5k֜2eʮC{oƍ322~w}veCsOh֬Yٳgfffee͛7Gsz 篷݆\dIw}]VָǏc$ę'/-9ܓ=СC?}iU^wƿ/׬YOphѢaÆpGDQ;츱GͻgϞb~|҇#G,pt){jܸq%%%7o~7o+cO6E:t_~zkڷz+sڴisAM0FvZk {87--mݺueK'N[v|Z!C|';]J^ 4կ~rJ޽׮]ez [} ٺuҍpQGU0X'!=yi$?~nn_'jK #<233q?߸qc=6/";;([~GRRRN? /p֬YQmݺȥ5۶mEQ~z״-[5N|4(޶m϶o~=ze_&MknٳUV'NinZZZƍt2}|ѢEeCkM4FQ԰aqTjj#hXv} wc$ę'/],))i/RvvE>?ӓ&MSNY}=~mn#}5kWXx;GQm۶'JJJnݺaÆzs^(zW^x%=?6mnn z5gΜk~ᇗ_~NK?캇`k֬_z饗r̽K.\Zj޼yw}w߾}kX> 0~-;۷;XjժUG ꫱czguVW4d;}"q>6On'K۫sX(1PŝuY-Zn]޽>+WΟ?O>q̘1cٲe<ק~w?,))9䐬۷ϝ; 'Nq?4wQV3.ꪫ(zGzݶm۲%?C|XvM48pqw'N~JJJjԨ}Y9+DQ>r#Fԯ_ϧ_tEg~g{eH ҫL01bw}:@UkS@Ҷmnݺ=,**ګU@^xaѢE4hР VZu u(RRRHOOx֭[VPGOJJjРAC3f;k 4hرrH`%ge˖X0 /0r;/)){ ؏ddd=zذam,Xlٲnݺ5o޼W~ /лw^z͞=;t nݺ\T 6ZjȐ!7w߬.ѣ(****.. ы(,,ܲeKuum۶mC|Zvݎx]kj.;c2leڵk׮]C*?]v&Lѣ 1\o}Z?~_\f H`:c?졵qJJJzzzZZZ @/KjoޫŹK,i׮O a$Y$sٳ-kԨ{Ξ9s3S$H Vos-X +++t@g $iӦcm H${ub~T~?(...(((** W_ H0C 2eI':@x ϝ;7##k .ܾ}{ @ٸqc~~/t t5'''333t\:=M6mܸN:I*(ՙt@ա:j)))iiiᩎ:3RSSC̴i׿4SN  $ PemذH{ׯ_gy駟KCg̵:c31U`o%|g\\\\PPPTT:ロy嗇$AM2SN  ץK5kT͛7 H0gyfNNN˖-C/9t}fΜ9#E*(ՙt@TP_:%%%= 8 IDAT==---t SN9%//N: { СCYK.n?O>_: @`M P}/1@qqqqAAAQQQ @|Ifff޽C̀LҡCAKsFFC{뭷.\X\\:PyAӥK:*tCg._W>Cg*IRRRE%%%$_g Tg:c U!_| JkSpծ];t </߿ǎCg,k͚5SN rCj׮ݢE;,t 曹_}U %|g PFg t՗:3[ W_effv=t \ySL9SC/;ٳggdd 2$t _YYY)))g֭+VH0;w9C/9t}f#E*(ՙt@TP_:%%%===---t ̼Zj$'|rѢEW\qi: @`IM6uAkST_:cKg P}%|g\\\\PPPTT:ʕ+333;w:`.)St)t35kVFFСCC[h… 7n:Pymۖ|Asgs11@/[nV ,t \zmڴԩS %P!O}Сz %PQ_|_:_-ZN$EnݺK.Uu{+g\\\\TT: PJJJZl#t \|ŭ[>B/;㧟~z xGCgk߾}FFFzB*ORRR~~~@93(3yJJJJJJJ/P^q?c 9@EĦ3k׮:5_5@e1cСC_{AK(nFy}{#F 0+r/1Pmڴo~:~'9tЦMN:q5kּꪫ:С# poܸ8[{y(ڷom)R}=cO=AK*)) B}A 8pڴi}k׮=ׯ: Py֭[TTTXXXSN9o `?ʌ9w]h5CP$%%EQT3=owĴ/(((-Zog}wߕon֭9]pa~~~feehѢ|sy晥Ko^z 'onnn%K77'']v{m;~38|s /o߽{Ξ9sfΘ1o߾ PUVoٲG[W\EQ֭W^5jn ǽۂGqϙ3m۶m;W_}ڵk;>l…;dȐMhM@aaa[/DOAg T;5~qqƍ֭[5j*(ZhQ^܁(:֬YS5*q4hP.(K۶m[[.qsrrvZ`DQ4~rWywY\M>}N~O?awv駿;ovNBg*_}f͚ըQcg?~FQԼy1c 809c֬Y .ӧj _~k֬Q@լY-Z^F}6ṣ>zٲeC=sssn:)yrss}k$;c2M ms|QGiv31xҥ'O>ÿ뫮ꫯ `~@ա3vUvzРAӦM/;Љ/ o޼yÆ kNMM O^f|9)))W_}ues]t1ӱcAKkS1bD @x'tRVVV B*Պ+ݨ+;viݺu %:c2wuW@KP t3"3]vzzzjjj @/kԨQ @"={СCϟ:@xIu]wѣCg,Pn:cKg P}%PQ7oްaCڵSSSCg837|iӦ w-[l߾} %:'x"##cԨQ} .ʶ[[n:thTOmʕ[l H$۷:@x uFQTXXxw4o|„ SN?:SIJJ$t31c4idܸqk֬ѣǢEZl:STD̶mۢ(7nEQVV7|ꩧEe(***..5k4?? h-c{+W5ڡC?<… cfeeh"O?gׯ_֭cXxqQFu11c.\ktĉYYYF 0gΜX=XϞ=cw֬YF7n+;ڵknݺ{7ߌhƍ]t[:usV^]XXkrHZZZP9sX={lժU%K2dI'kn+=5~38# 7ܰ`Xwygnb8矏5裏^pqΜ933ktر3f̈5:}X{oN:53fΝm6Ng{_{3|v6n{iӦ8skԈweosΉUs=7o޼ /s  +2t -[̽;~)N:uɱFwSN:uj'q~;bĈ#Fo\_:t_ ѼyobiiiDHr? ؾ}ٳ PTTEGq:N:naĉwy1cBg,E5Sz?|Ŋ#G<ヘ7NJx6lƓ'O;wn۶mW\9rf͚*s:H.)S1@T:{,##7M @x'xbVVVÆ ;_O=~իW;믿߼ys @"9Srrrڴi:@xɡ3zk5kׯ%\2k֬O?c  I^c$t+bɒ%ݻw?C>ବwy'M6%N˖-͛ۡ???k=Zjuחnoڴ?^[&%%?^z5k֬nݺ[8qb5uc uyH_~eCSF;#t'3ϟ?N[Y^y;[nfͪS>|xK.֭\y\sMZZn1jԨ˗?3W>}z-~4믿~I'mٲ宻Z|#<'|(vv1 P`TD_v驩{5k9sgΜY'U;ZunYfZFQT֭[ y}֭{~N8!6mJJJrrr^x-tKJJ >)g_|iӦdΜ9/rϞ=w: @` xk֬j.7^pV/dÆ [rYw߻x;w1bc=r=+\tE;mOJJ3ko#Ϛ6mڢEAD]:Kθ|VXEQNvXp?:}ҤI3g|4hig߿?5o޼-=gWC瞆ѬY6PUU#wqc#<2y]gnٲeg6hWߞr){^vmEiii֭+{Ziii~뭷vURC ?}bmjy䑙=܎ƍ{q&~<@Νp 67n\qqqi-ݣG7xl_oҤIv8∖-[>;M/))3TGzG&M@5͛ 6lذW&OK/egg/Z裏>߿O?=iҤ:uĚ+ׯߦ;Zjѣ?¯jرzYgE%\p‡~xժUͻ[F kΜ9k׮/w}7Pm۶c۷ '$^zeff~駡gϞSL޽{ %|g3K.5z饗p F? 5jԨ;|XǏ?3b>^5:iҤs=7hvv̙3cΘ1o߾qgӳc~3f(qrg~gm޼yW_3k׮q:?|…Fk(_q>ׯ3@9,Y$77C$|gwyn{W(:G}5Z4瞋G} .5:pS?wԩΝg'3~g͚kW^q:NIE:5{qF7nLƙ{ 'F5jgnǎ\5"(.͛=cڵk8qEƍS n:I&qF+vUu:u=SZN:c+w7nXPPk?6mszꥧMNw>CuYYY׏5'RE^z''UFݻwǙ;nܸ8g}w?Oǽ7wرcǎ-ܑ#G9|s/K.|sv3u85j؇PLD˖-;|5jgܸq;S4P|7tӄ nYKx6l]tW^}=6l(++[oСCOeȐ!#9tCgFfg IDAT5jԨ)jNg P:c *";:uꤧpa;Cɼysυ^E9@usw;n;Bg,Pn:cKg P}%|gy悂 61f̘Yf$_SL B/;ɓ'gdd?>t j…+W T׿ׯ_:Hڴis)^wexnݺ͙3'tR%%%EQTRR:@BMg P:cAP שS'==;H$СC?^ruW_}աSk zjذaÆ Ç~۠A^zX¯3(3[:cKg T쭄7mTPPqA0n'|2t }SLq3c t>`FFƍ7:1uᇇT~!??ڵ?yNNNC/9t}檫ꪫB*TD¯391@EĦ3ԩ~1~$  :g  $rfҥ 'СCYT_ mjMg P}/1@3t՗T_:cKg P}/1@3t՗T_:cKg P}?{v zK#/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 匁سAփ\13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13dʄ IDATr_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 1Ğ13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13rѴ IDAT_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13 @@ F3r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13rg4r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 1ag5 IDAT3r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_=;o=ȥ_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_@ف A.|9c/g 13r_|9c/g 13r_|9c/g T IDAT13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9cb[ri|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 𞓾~ IDAT13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g 13r_|9c/g {wh!Au !_ N$8¥UrR4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c=j ql۶{Ԍ4c. a1M1@f Х$1izbK3ҌlSpti 8Ќ4c. 8Ќ4ch]xGy>;;<-M Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti뺮뺿m.=y׏?1@f Хticimh]1@f PaK3M f Хtig f ХTئ}'|rqqkcRlSti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@۶_4cO?tYf Хti]1@cm/1@f ХTئD3Ҍ*lSpti]1@pti89;ruuu{{{vvz]<HM Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti/^X۷?_?h]1@f ХT1iڶti]1@mjN4c.65'1@f ХT1'1@f Paj糳S)Gxg Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti/_\͛7/\K3Ҍ4c14M۶_4c.K3M f ХTئD3Ҍ4c 3D3Ҍ*lSpT<}tG_1)ti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@ͺwww믿^~h]1@f ХQqtv+fC 8C JCHuLBmdor>#1Ʋ,qE3Ҍ4c 8i]1@4c.K31'K3pf Pu]qy4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.Ç}v.1@/m_=K3Ҍ*˲1K3Ҍ*ܦtinSpҌ4c.4c.mjN1@f Pu]_x1qy4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.qh۶m_~\4c.K3c,r\4c.K3pf ХTM I3Ҍ4c pҌ4c 8i]1@պsHK3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ*}f PlE3Ҍ4c1Ʋ,qE3Ҍ4c 8i]1@4c.K31'K3pf ХT\]]z{{;qy4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.Ǐyf.1@_mۧ~:K3Ҍ*˲1K3Ҍ*ܦtinSpҌ4c.4c.mjN1@f Pɓu]_|9qy4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.f Po'E3Ҍ4c1Ʋ,qE3Ҍ4c 8i]1@{w[G`x>; R vf6DYKaY%؆X2`_ެ y{s>L3Ҍ4c ptinSpti<___UbK3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ*u;}ь*~eYK3Ҍ*4mvti]1@i]1@i]1@f P=c4c.mj4c.b盛ӗjRti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@Ŷmޞh,f Хticim;}ь4c.mj4c.mj4c.K31g1@f P65g1@f P1Ƙ͛7/ Ş1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@f ХTl۶ض#!>ׯ_{nbK3Ҍ*4f ХtinSptinSpti]1@8ӌ4c 8ӌ^|?3˗/OxP5)nSti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@Ⱥ뺞ƱmG7|HOOO=c2K3ҌB4m۶1@f ХM A3ҌBܦti]1@8h]1@^|?3icjܦҌ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4cu]mqɞ1@f Хti!cimGK3ҌBܦti!nSpЌ4c. {4c. mj/>yml/^8mPcK3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3ҌBu]}ԌBeY޾}1@f Хti!cimGK3ҌBܦti!nSpЌ4c. {4c. mj1@ȧ~:˗/q6g Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti!>j!~,>j]1@f Х1iڶm5c.K3qf ХM A3Ҍ4cpЌ4c8h!WWWj]1@f 65K3qf Хti!3ti!nSpЌBy~>154c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c. a]}ԌBeY~}Ԍ4c.K3cLӴm>j]1@f 65K3qf Хti!3ti!nSpЌB^~='|q @=c.=y5 IDATK3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3yxxXq5c~aYq5c.K3ҌB4m۶1@f ХM A3ҌBܦti]1@wXzTmNݝ x<~Q u}^)8i]1@mjN1@Ͳ,9//K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3ҌB޿mۇS3y麮Ϟ=;NK3Ҍ4c9cԌ4c. 65'K3M I3Ҍ4c3ti!8i!˲缼8;c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3öm߿?N ٳg>}85c.K3s1}?NK3ҌBlSpҌ4c4c.K3=cN1@f bf Х\__/rsssR @w]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@f m޽{w1@ȯ/r1@f Х9f Хti!8i]1@mjN1@f Х1'K3M I3ҌBeqJ55ti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@Ǐm{qj!ۺ?qj]1@f 2c~1@f Хئti!8i]1@f {4c. 65'K3Z9/+xg Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti!϶mo߾=N _~:NK3ҌBc}ߏS3Ҍ4c4c. 65'K3ҌB|f Хئti!_,<8yY;c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3m{qj!Ǻ?qj]1@f 2c~1@f Хئti!8i]1@f {4c. 65'K3ꫯeyqJ55ti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@ȧOm{qj!纮?qj]1@f 2c~1@f Хئti!8i]1@f {4c. 65'K3w޲,=:yY;c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3m{qj!׺qj]1@f 2c~1@f Хئti!8i]1@f {4c. 65'K3{,?>yY;c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3ݶ˗ǩ~wǩti]1@Ȝsqj]1@f bf Хئti]1@pҌ4c4c. Ν;˲|79/+xg Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti!۶|85cϟf Хti!s1ƾǩti]1@mjN1@f bf Хti!g I3ҌBlSpҌ4c9,O<9J55ti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@Ⱦ۶x8_ټ~Ǐ=zL3ҌBcW5c.K3M I3ҌBlSpҌ4c. 8i]1@mjN1@׽/|˲\]]e]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@f вm۶ms/kl}sΜvxg Pti!s1+ƚ1@f Хti-IcK3ҌZlS0f Pti-g 1@f b1Ƹղ,>}:sclSti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@ˋ/m}1?D<|۷o޼yw]1@f Х9L3ҌZlS0f Pئ` L3ҌZ|14c265cqK>'O9xn ;ҫ()$4Q( B!P( *x#@*>!֜-8~M Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti-/_<͛7Լi]1@f в֚`~m4c2K3ҌZZ3she1@f bL3hM f Pti-3`F3(ӌZlS0Լ۶=zhf w]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@f f P믿f Pti]1@ZkfL3ҌZlS0i-ь4c.he1@mjf4cwyg۶Yscti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@˟y?31@G}/21@f Хti-k9s4c2K3hM f Pئ`F3(ӌ4c0i-ьj?m̬˹1A4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.寿:?L3Ҍ{ IDAT4c̜91@f Хئ`F3(ӌZlS0i]1@ь4ch5ϟ?߶ߞu97 ȝ1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@f Х01@'|O?41@f Хti-k9s4c2K3hM f Pئ`F3(ӌ4c0i-ьj={mǏgf]΍rg Хti]1@f Хti]1@f Хti]1@f Хti]1@f Хti-q<<oߎf PNz4c2K3hٶmfZi]1@mjf4c26531@f Х131@f bL3hx<G3?N_|he1@f вm̬F3(ӌ4che1@mjf4c2K3h?cf4c26531@Em۶g}63D5A4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c. |>Z~ /O>ti]1@˶m3#cK3ҌZlS0i-ь4c.ь4cheK?4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4cnoo/..r>|m۟ti]1@cY9f Хti9nS`g M 1@f Х1va1@i9a]קO9ޏ`v]1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@apn?~p3믿m?4c.K3c,2Ԍ4c. mj4c3ӌ4c3 L3q;c0 p811K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3:ϟ>}z1@mti]1@cY9f Хti9nS`g M 1@f Х1va1@i9?^_~sν>4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4cߏ?>zH3~gϞM Хti9ceY朚1@f ХM 1@f 65va1@f i9nS`g 0末/=}65@f ХtiEcf PtiE4c.65@f ХtiE3ӌ4c"uɘs5lSti]1@f Хti]1@f ^IDATХti]1@f Хti]1@f Хti]s9W_c۶65@f ХtiEcf PtiE4c.65@f ХtiE3ӌ4c"us5lSti]1@f Хti]1@f Хti]1@f Хti]1@f Хti]?7末/౽y۷o4c.K3(c4c2K3(M PtiE4c.K3(1@f Х٦ӌ^|mۘs53Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ`޾}f Хti]1@i]1@mj:K3(M Pti]1@4c.65@f Pt~~mۘs53Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ`޽{f Хti]1@i]1@mj:K3(M Pti]1@4c.65@f PŋmƜs%1@f Хti]1@f Хti]1@f Хti]1@f Хti]1@f u\} ;cti]1@f P48he1@f PdN3ҌlSi]1@f P?c:K3(M P=|۶1\} kxg Хti]1@f Хti]1@f Хti]1@f Хti]1@f ХtW~wE>|]3Ҍ4c.hqЌ4c.65@f Х٦ӌ4c.u1@f PdN3(zٶmcιK3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3:>~>~f Хti]1@i]1@mj:K3(M Pti]1@4c.65@f Ptvvmۘs53Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ`뻻;>}f Хti]1@i]1@mj:K3(M Pti]1@4c.65@f Ptvvmۘs53Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ`뻻;>f Хti]1@i]1@mj:K3(M Pti]1@4c.65@f Ptzzmۘs53Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ`[|f Хti]1@i]1@mj:K3(M Pti]1@f Х11@f Хn6末/` 4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4c.K3Ҍ4cX;c_tiEcf PtiE4cvaػHl@f PM PtiEu1@f PtwSnIENDB`OS_Delivery/TrustZone_Seq_echo.png0000775000175000017500000316704012007674700017436 0ustar kaushikkaushikPNG  IHDR#iBbKGD IDATxy@7@e &- * E XZ nEX]ZzErPAK"c~70!,_3'<j'@6; B~}}O?---]xŹs4FI1O  #~`DDN$ );kll\^^~v!_j]JJܮ][TTT ;'O$>322%РZXXXVV0y.A\]]#@E̙ ***|}}555NE$ҹ{3tuuWXhmmMĔ)Sh4ɞ3f2d<<̙3֭455M>]QQq׮]<GH@p***N8榡taÆd7fdd>GİaèV"""߿O.hlly'N BD}}UVZE᧟~ZRR`0 uDSLܵ#",,ӧC%? 7((($$ ŋ饦:99Ir 9_߱'76l@V^IV^H8sL1a|~VVִiӨnƏBϟOn9rȑ "+/AL<^vCԇ255vɍ}ʔ)TԶ˕+W$</;vT__ԨQd ͮ=w಻<իW+ń}Mccĉ'MtqjWhmmm%b_p͛7M1mקvL"ɁP|~ҲMBSSNGm:  `4mmm\lj RMөe\:5a]F9;;_xQWW$booH_2Kׯ_EFp ADllܹsM>СC=z5k8޽{te6oWAO>]CC#&&g0s̩vZ|||u }/AFFFEEE7oNII=x` e˖u*ɉ׿{n]Hnݺ6-w tұc :|k5I^'|s賰  C(/2  C(/2  C(/2  CNsh4S|y# R :6vXUUUygЧz /+bX:gcc#,=Exx۷otlΝz+Uѓ$nܸ!,c{(@Oqĉ*ygQ|.KHH]=N>Ç1'7oP|wUd; zUѓ$P|____Yp۶mCz>dcl? w}/2  C(/2 9f6l͛7 hjj cjj*z*uh4ڥKwX +(t•+WtzRRo6|ӧ'%%)++5$$ܾsTTTjjjd游8 Ç@@?swwӧO-qqqJJJ!!!s̡dKr.]jbbw^C?\OOlg2~~~iiio߾6mڵk Ĵ@τ;_$UVVy 6zzz>HIIIuA &3;v۷oΟ?v$݇]kkЪ*QSX'Ntߡ@φ⋤ pttl$w:{锔MMMѣGW^'|>sرWsNeev./oC oܸ3f[ZZ֯_?q<2{'_!CER#G$B~SSS#G5Ύ ??GeddPjjjFRxʗ7IaaGGGkk븸8??&?tri4mbb"N !?b2QQQSN533̌%￟4i!;;Ns8 SSS#4T5Y }/2444119{`s ,**ٿ`;=vXEEy3A:dggo޼)--upp"mO.\x9d2o>eʔ?0,,%)((x{{P--..?_~~~ii)MaÆ={oYYY[n z>Y fknn;dܹٙ`>xlUBER4~x񢏏Off۷XeeeQ^z5{쀀??&|>?%%:++<{ׯɱ/^~F1]#_:-33kƌW\Y`!?޿?:emmmCǓcccc?CUU3gP1E5kdp{ZZZ䮨x<555NJDAAAuuán#hnnpۙLիW7zhE+ʉ/Uӝcccse1RSSwWZj*=/^ئEQQQ#F(fddD5vk˗ůiӦ k9HxaaIzkmmMNNZtww_rezzz\\\@@F#BGGҥKB z8 QPPheeE.[\fdgϸ\naa!Yإ"]!.Ý/m5k0فs7or8EQRRNKK[d ^|,c9***nNN/U}6 @O @[=g'2>,LvoFw޽M"SZZZvvvmHB 8p[n---޷oPJo̹5.'ӧN͜9sС:::...ׯ_oaƌk׮v/قYf-\PplKKȑ#cbb|>uvv2dHHHHYY&!!AG9=AbccCD^^p3gA䘃^ƍ7iҤG644 ٳgǏ9N||G}4hРQF^;3z5~4~Z~|LwA >ӧ7dFEEyzz;kRboAq…?7|pcG2 UrVRR"@p  C(/2  C(Ȑ &$+/K;A)M{ h<O޹ŋ@weUUU[yرc坂744;5kl۶MYpv8З|΢bbb ֬Ycee%\dT)t+_w Rm۶o;~-..-u}y'З !_-! 2ǎdB@P|V|> ֵNNN4FX[[VUUu9uĉ.zpKKSNI@K/qƖr̘1ZO8QuOpbΝԔw"  Nz:_zmkkHCBBȏSSSC?i$jxvv6Np8ADGGqqq wmݼyˣ`Lc ,YBDLL pww?y$9}7I+W5}U@@***w"Uӽ7Uذagkזٳocƌ!"..ۛ*P6nXPPm۶)S i~:44~cX>$b߾}7n܈nW\Yh3fLn2J@ZpKfZ[[wmee5bĈ;v$''|]]Yfݻ6A\/cgggsss}}}Q?gݻ: kkk.\hll>3gδ#$ŗ-==]KKK]]͍ᔖΟ?9u6A lIdI[[ܹsO6lǎ;r߾}}% -(bɶAXXX\t?l6 ݽ)===... 455d``Kr0ӧ_xӧcƌQTTxvSSS@@kvvvyy7u?`7 #_z>r߼ypGXXXvv6{err29DII7:::--\ EEEڵkw}왘Ǐ'g͚u̙ÇKr%%%޽SQQ 'LKVlFQQӧ$ kL&FMMMމ@OK/*))=:((HOO޽{GZZZvvvK LKK7666**j[l\dI]]/_>wnaaI-+^cc  bbbr֭~l_lYqqnLL… 'M@ &d*!!!//oرNz:V' ̙r…ٳg;& C( UVV{nyM"""lycG2bĈʊ yjjjLMMR@ߠ(zↆcǪ;#i@ǎ" b;P|!_Yf 6LWW͛A455ф155MMMQ}}=ZfԘLfxxuhK.τ ''6%%%B0008~8ri4N?OΝ;GnSSX[[VUUQ=E%Ц}d͛v8B ŗ>ʕ+t:=))~>|ӓBn߹sgu***?s555SݸqcKKKii?XYY9f̘SJ@wg'V|2KaݾO&[└BBB̙CF%%%j j.]d޽BMIIqƇ~H`ϟ?:doos===1 h˗/?~3gJmmmre tIE  R7tINNnӳÇl|WTT$%%)* 4iǎ$}||&L0fdNoݺuÆ ---{*((x{{tݐ ɴu(ŗo-f֬Ymz(Hu8QllӧSRR455t;sL``O?dbbꚚ*G^OÇ|4bbbQi|rtŅfՉO@=??Jx\m&!!!//oرNz:dL*qIzz  w&AAAP P MLLΞ=+x9===3331S߿Ittt6mLwrIA:tH|Xuuu6{lF }}}>se2QQQbkmmMNN0>@T@QJr\퓁oʕx$Ý/ITTԖ-[ڷkkkih?OHHJlllbbb||^={v@@_SS>p@֦w;zOÆ sss9%%:77O$55/xE*| >EOw^pavj r<ؽ{7ٷo_gC褢ŠOz)қhiiھ[fffmm׌3***\`1?~~שׁZSS3dȐs666JJJB#:tښ900pСb򉊊L#==]h7u[nYZZ~wK,wuwwohhloFw=$L@ +>h.z 핔3L<]`XEEENz:lj ׮]_cOt#;| D$7sL ]v...By{{{xx~%Kmr;$$d\.Ν;O>S`0ZZZ &Id2KKK\nXXزe:5Wc|YffO`L^hE nwJg"-//w" yyyGމ@Gq%y'RK]ŗw 4֭[ѣG/۶mc0l6[hF:dՀQ300x|>ܹ7nMMMZZZd{KKk'Pd0aaa68p`EE cd{nna:5|>CmmmibJB (|ŗ.R_0aAN_*"466ZYY˖-WSSkԩS盛,TOSZZJ>l}kjjN:}l6[;uTjjjF411ydgϸ\sKĹs̙3`)F*t/Ћ"iKAh4y'"KKKr7''b_y<3+++((_511Fb%:::.]z6M~vwwojjJOO hެ455 &7޼ySZZ y!jq)FRB/(]8mR 4pٳgoݺ4;;{߾} , ?0aBnn.ɓ'wttMYYyƌ{mjj`0bcc RVV&>UqYrAH>G7otOcҽB/w;{JS:{,^F͝;R }|Ú/}˯{NYYydz,&)D Νcj733r4믿% (>>L޹@1k֬˗/_t@ǎz:9sѣg|筭e %yyy@P|髬4jgHk֯_/ECWߦI-E 5x[#lGic''ny=vbBCCEu㏥;oR(,,tttp8Ŏ@-'Ȼ`̙yfr}Ms\%%NZ~9z{#jy'"S2:qDΒbJ]|9&-SN533lllLHHprr233۳gOMM [n500?qN'ۣsss)Shiiر ࢢ`###ra xŬYttt|ݝ;wtŠ㛖zUV w6--MAwx>T|zbb"^.bJ]syGGG9& /yyyGމ@WM3 Brwծo.//_`Ahh(>o޼ ]v\MMl+--\|C׈/Pڄe0F:wӧO}||-[&~:DLLL|QsssJJ:` OǣG u@󫪪۔],,,Μ9]͛~qqqMMMd;ŗdr֭[ 0YRR%X&HOOo_|W\5k_#*~4DԾrYrANйW^]d 1bwgO#Uz*/ _UUU***RА 'Oݻw u{Q:`0m3p ۾};ٞ+_ӧOpjm۶1 6-@ZZZtuu]֦]h G!=qfC_ H[%'Xehnn2dݦOcc;_(l6;""bرTY|6i %H0,_DDtKhÇ'$$y^^^9t:={P|I`]bΝd٥`xXOPPPheeEד䆚ڨQ233 =<<8Nii)m䆮gϸ\n>|8rHInԩSx񢦦aٓ&M(hhhCI055x JJJaaa<˗A(++mݺƍBz/))IOO6Ʉ Uė0 =EcَEEEOԼ3fػwoSSSeezb]YY۷ QvQ,--UTT ݜFfggo޼)--uppѹtғl!t#G|YS+** 믿lee%I]86)=*]EFFGFFjiiݼyl?p1c> 7l0d[ndeˊuuuė$6a;{8pI&EDDtvNO8q޼y-3'[ofhI]_9MFFFeeeO00pJJJN _/A زew}'Dz-[BСCY,… L!tռyjjj._ @A,\p޽ҨݻwK+Þ9},X Y(""b7otqqqvvqㆼ3> ;BCC m&MڰaÜ9sa(ɓ'9/Nƍ޽0ڠA$쬮(ag:.]jjj|zѣGp̙۶m8qAJJJL&nP|}}gϞ;BYYYEE{o瞓#""<ؾaFζ07~+555:::== c---#"">crbQ^^''N<|r+,,tttp8 ܺ a]no޼smmmkk\9NKK뛛%)MMMMMM )ӦM3g͛'L tz>rKm۶-[He[ZZKKK!뾇m߾hILLw sU_%ݻ ;777KعE_ɺܙIعV<F|>۷v&fK۷~[SS$ܩJP|>˗;1Ͽqƅ ؘ|ȑ+V|'eXrɱ/_633!Sʚ1cƳglG}DetԪI&m޼T,EEESN 3f̲eN>=`cc㯾ĉBh^~o߾C1?cbb8sGGG???___ AsYfMFF$wPB.]*W#GD 6Ζub0.]z䉣ʕ+zjWW۷o/X 44T~~~3g,..̴صk5ĤyFEEݻG˖-[|9l2lLfii)H, 5&!!eڵ䶘xQZZPSS#=zܜ~=9֯_%~'N ;'Nx…W:::/5.ZpG}dhhhѢ_oܸښ{n++#Fر#99677_paL&~էO򲰰 BKKѣAן>}zٲedw=Z0[??ѣG+((,ZҥKAEbh)55uƮ~~~XII}gΜuEu=zݻw;9(@m6j#>?{7n̞=[UL ^u=L6[YYYPPP]]adddddpJKK%heeE6QO $nŊ'NhiiIJJ1bÑ#G f;~xrCWWٳg\.W,@:䮃Qzzz``رcGy۷o Ç;6(@Ó'Oۓ'ONKKpBv9~x^^'!-"l!XKKKr7''bQgɓSRR=*xȑ#;|ãY%\KTheee;wȍWWrooo t#M @544h4 @v윑quWWWyg sJJJaaa<˗8pٳnZZZo߾ bŊȜŋSƍ~g0aBnn |///*~SS###Ť'z uhb.t2#&)x), ;#@τ @W0L)ʕ+t:=))~>|ӓBn߹sgu***?sQYeddp۷WTT$'';v YQ6n |'Gqqq `X---}]YY١C OL#G·;vp2r̘1ߗpΎ%߼ySQQq_^1 3",,ɓէN5j13O[NG]AmD0:~8MDu]v6f'NS (t+>O o}?7~xDӧBBBPPPPRR"UUU.]jbbw^QSXbڴiΝ|8o$J%?6Sˈݻw_|IիW]FnO6tΝA6nxȑM6츸8uuuIJ2ugEGG_'7lgϞ~-++k֭]  /(ʢEV\I Fyy9AnYYYcccO>)ɉrV| FSWW;=ztU >L,!2ԩSY|cx<ޑ#G:|Ņf~zzz?1p@꣘gΜ 駟LLL\]]SSS;̶&)8 ?B'_xd2WXaW_I3PCu;x]S^WW<==ٳgl6>z* Ν;W__ժUma"/;vpvvVPP077חd$Swܹs UPPPYYښ{n++#Fر#99S/7rH Wv ŏMMM ?s?q?JJ>Ymڴ{ڵk۶mz:rȨQ{QFFiɓ'ϛ7\OʐX[[!>[SSٶ[˿e˖ښL}Iƪ9;;:uRWW7y+A.A:::6mjnnnSh&)ܹsL&]A| @Ab f$օsmMvիWWWW*G|>mhh~J.АR]]E}pgϾ~ZDB=x`ZZϟ?_SSx6w1\reʕ#y&77חHr{7nҥK_Hy<$up8{mܸqذannnsh?cIk׮{R\uUF\}'ANZa2eJee寿:m4{nQTTꫯ]zgϞu]p7dÆ JJJaaa<˗-_/]tR_I+[fffmm׌3***\`1C?~~%E6yyy|>?<<|С<?!**J0۷o;oURRЈO 8t萗5uA``СCEM$&ې}}O>dܸqVVV}ȗN&6z蠠 =={IݴiSVVVzz#%;$UU՚!C̝;VRR'){CC҅TsşQ;uhfgg7b MV[["yŋoٲESSsɒ%/S_Ę+))Q܊Ҳ0eS}}=NWSSp8ˤIeMxH73f\r~']p |%%%NIQ /jjjds ^v\;}zYD?̚>ŋoܸD#cG Bkkk>q1cǎ*oTSSSN>}zk׮4IAAummm ܺuСC!իWW)Yl!>>>ׯ_\peݻׅ/_ee凎jmm(O+))yy ё<EVVXj u{>`|i6M عs'<,Bqww>|8!dܹ3g|oBv777`ڴiNNNb]['EܶmuBBBcc#!߿_GGgOyЈ!!! ~:~߾}vvvUUU_Ulyyyj̖-[\Bs\EEѣG ($M6،5*00&U͛Y,9ŋFFFɗ.] !DUU5---))ISSٙU~~~yy3tttttt&MT[[[\\\PPqƽ7~~~~}})u:f̘:f`׵՟={BWVV/gffzyy1bȐ!ݵ1Rϊ!?===99y˖-фhCCGO8\.w„ ,Kho6??… aaa?#=888!!!22ĉ.]6Crww-..ǻ˷f͚}ڵԲ1z{婫;99ѤJ۽{waajxxxG3|"""޾}K] \\\xG67n=S///Bڱcb0ǏS.\~~>uze( %##Ar*++_tIӓfgg7?>jӦMl6* ))f@hhhNNNjj 7mڤrݩvjm֭[MMMէNOillLLLFD- 622}J78k֬#F\~>2LZZzܹǎ' ~!&&FMMM҉Ĕgeeedd\~;.S677Wܹs'33QNNNUUUWVV#000;;˗f4}/mPZZzNڧOGGǐhWWW enn~ʕ_ddd̙aÆsν{͛Ϟ=VRR*,,']xwZu۷=zTYYYhQkDm#xyy۷СCʶmb ]6Fpd2#cutW_}뫨(D{%t=))gvKF~~~ Ƴf[__<`}}Wرj  UQQpվsNyyy ٳgϝ;#FEE;99-__6$*۷]\\:*<<|޼yׯWVV?~MMzDDرcW^L 444(**^zx={Sfff/^TTT<ec4۠_-vѴ/^jkkw<2|ݛ_Ejjj\]]ϦvmHJIIP{֪ZFȰ1mЬ 5jT~RSSߛ*@'Qe==ݻw755$%%Q}O'l5kΝ;G߿!ClllVZ%^4l2.Q&&&W濈nQYYƍ ^;c͚57n{?l``?|p1BZĤ3>=;vN4￷wPUU;ׯp#X777ի.͛7=6((Hḃ]rsskff&JǪ=-ɓ'C_n?nOIp]vڵӖN<:}mBB#"""޼y"##---C.]d2kjjx;xڸ'*((޹sGT6jի6m?~xeeeMMM6x%Kʪ :ӓmݺ@QQqԩwH=ݻwݩO|w?_'Tc0bgy?:b^E[[ѣG}hJw\RVVVRRzGz#iiin݊TSS[bEIIIddU !...mBY&??ƍ666 v>튊e˖8qTWW߿}yӵO<9w\c``о[7% ywܩcL&󽝇 ~iϞ=;wqvv 300`0Y"6љ+3W:3ogV㉽z3{0x;;;CCȪ*.>>***=qCNNE6 ɗdllL/]TVV[H0fEEEHHȠA,--_ uttϟO3 ]xkGaÆB޽!k֬inn|GX|I.]ݻdYYW.^ٳ---7n(++ x{RׯwwwojjzUG^;}ӧlo x+//ׯÇy<ޭ[wkn޼斔PЫq\BHFFƇ^bbP'O}vVV?6l0ƾ=:x`~xꕊʕ+WZ[[߼yKpܼWWe˖QK.?~|fffKKן>}:sE+//*//xÆ ;|0[`իoYp"g\\\f̘ Ց׎D///Te\UUdҥ SLQTT _' Fy&66vohΟ?̙qii~;bss󨨨_,,, ꚗG_zuҤITe׮]斖ӧO_d Ҧ]HV_(]X|YjuبxUtϞ=nԶq<?LEEu:x6iMlB_ wp7ccijjnݺ* :4##~O ,#rgϞd2͛7o޼LLLx yyyooooo4hΝS055|rvs {5dX o!1c/SZZZRԞnE&Odaaߝߍڝ~sOXh6sSN577O0庻߻wƍeD0FFFqޛ0,m {J:99|C|2@͛͛7{yywg344B7gcc#N?aQ1ۘ8qŋ[ZZ\Qyyo? cB=_ݙ ,|.T[J:/R\\*F;wdff666ɩ*))Bdee=<<[[[_|B3gΆ (: IDATΝ;ݻ7o>{2u沲XنMii_5qDaoou։'w}/mPZZzͩ]oě>g(b I({{{''˗/YD  ׿z;PPKKKnj͛~zeeS_#SPP0665kW_}%j.Q11LKKK B&NX]]=aoyΝg9oo۷o7 |SUUD Ç߻wݻλN:A |Rt"`]iӦH:EEE, <zX]+___EE"77wԩ\.z#!̰aӅ^˗/9r$dAAA4!+Wd0ǎτbggצΝ;t~r-*>~E~ NYghG1P|N<9n8yy'N 4!99o߾5rK._P#ɓ'-YǏ8pzzz4 !MMM ;BVZ%;wXfMsssZZZ|||ʕ]~xWx-6mZRR/++tӧ_|'7o۶MG9Q!&&&&&&?t߬?AәҾCo߾!##foݺ_񉋋KMMuvvԄIIIiߟ={`Y?^XXؑ?ȝ2L 6Ɵ9s&O@={P"H޼y=w^YYm6###kk넄F~p[[[CCì,6k׮)S:::VUUڵf`XJJJӦM;p}>IIIҥKeeekjj!xb1+**BBB dii/A/{,<<|UUU۴0;v̘1cΜ9K.JLLLHHիW >}06?u֯zO>ݱcIF>rHyy+W @/Yy`׿گN;_[[rexx8Aׯ_/Z7?66655_"ٺukTT1cN87̜9O>'O;w.100ܹs_|~is9::>}zĉ߷~KK,ЭQQQ_~;O4)++/|ɓ']]]i'&&>|pr׵kwׯ_UU՜9s 0s?CԲ~y@Oxx`Bq?f̘iӦ}z8wwÇKKKϝ;رcÇoڴf[YYuvv,pM2eСsνuO?4t9sT]]]YYiӦ999$nddٳӄAQ7mڤrݻ|DNN.??:|2á ii鎇jhhr%%%...NaĉO>}4522*//?p0 u :()--ig֭gTTT[[[+D1|p333EE.֧OGGǐ莼+TMMMeeRaaaG֍ؔ_'Nd0[n6|#}~۶mkhh(--}= ^;Y]c~V[[ѣGm@-XŋYYYVVV@8'''EEEJ8nnnꞞϞ=d2---_x1x`Bĉ܋Ν;,,,_ F@w *...**д4@g7|gϮ[.++l2I']Ij_v߿. d@cr?pa'''ѦSܿ_b{ccbbyfvf_dNJ BȩSr=[XƏ76Rppȑ#ׯ/(( hjjYf…}񤤤ě`7s.?~ZUU5p6펎NZv+W7nܸx˗+**R} FgV`tfJgx;;;CCȪ*BwTTÇuuu#!ffee>;d#}N<9cƌ3f$''o۶m 555Tٳg))>}/B޼yccc3e&)t@߽{̙3SNr򋽽ݻwq\"Zj8TJ#1 6x"44tjhh':2xx޼yk?66Vd F^/$$$$$+kGUEEZ_z%\z+7|pccT~ѣG>|طo_e#G&[BK :,,# $=.**sŒt. |wW^ݹss׎ygϞ-8k֬ϟv$'OV^!vvv{}IGbܻwťM;$*H z\%i@zB`#uJJJ:r䈲2MT//]vstԶt>418_2d!`СCǦ6ŋ/_\VVfaa\UUEa2n1ɤ>%… qED@GEB СCoƴ4 CCCsپ}]ǧSSS[vmSSUqtt̙3ZZZfffC 6lXox''-]TKKk_|񅩩)%BHxx`JI >>SPP D>gSիW^|)\S_pmĉ333O>=aIkii%%%tS|ʗ^6l8~(!!FEEEKK+,,j߷oadd$C uuu\.WQQqEEE f99915444mڴlMlllFXZZJoٲʕ+בt@בQQQfff'Of]+WX!|͛J:UTT,[ĉT{pp["##VXQRRIYfM~~ƍmll ƦB-[&4f{'O;w.jٻwѣGe'''5gB*++ۼysll۷o uPyrڏ=trsst ЛuTXXXH4=z4!ݻw'N5j!$,,lĉ޽?SRRlll!FFFLU^D0iӦ999S-f1b!$ 44T[[[----@τGՑL6n/P@b+$EUU5--_]hɓ,,,g̘V[[[\\\]]]YY9v؎ǷD]fffBB˗jjj\.d2̙#tgž/=HYYݻ\]]] @cbb"DѣG>}j``E166VSS;vأTVVX,SSSeeK.*ȍ7/IKKSbϧӓfgg~%;;:xuqqqDݗlz|#""vQSSC۷SN:%mϞ=fرcFGGO:U QW'v9QW׭[gkk+jdd$4ݻw抺kff&_._MS,;tН;wD]9s&uԩS<u鉺QW---,7^x!ꪑ͆&<uUOOOEEE/^Չ:p@&)j]]]SSL&_Ν;wƍ'''D ܸqEEEŹs\\\ddd̙aÆ7Z[[߾}SNMMMutt|ellЉDl߳ZII0))IGMKK;vuLMMۿsX__%*ۮ{x >rBzwﺻKIIr{III4]]]i1c?XO?dooOQyyy ruuˣkkkL@Ǝ?^^^~+--oGannd2,%*f{v277>}%K tǏSfffϟ?sLlz| ~iϞ=))ӧ[N__ߍWpQW鿷$*͒N]~i | e/www9Ϝ9,{!p\u"Ғ*ͲBtuui*Xuuu_~4ϪO>4cy bæ^|};ɜ7o޼yڴ{{{{{{ 64hΝSmQ1zimsrrqqq: i@zթ%0B=z*HII9;; &9s&33ZIb4)|GEpDSy!ܽ{WJJ*99yĈnnnwhy{J:I*--ig֭ gʗ֭[)))fff+@Ə…[[[K:D|+_>OXң}׮]sss[z3I'/ۅ#Ft.\qqqMM׎z|gS׎>kg4LLL<5`%%%\.WSSs̙___]]]55j*((|O? &P'O9@qX1xYYj*^yhhhddd0W_}%͟ƍׯ_OnڴiҤIJ Ą/∍ffee۷022VQQmee~~x˖-W\lllTTT!:::'& yn޼ޞbyyyݻwjܶmuBBBccyyz{{GEE>|XWWWGGѱfWcƌx%EEź:ύz  ~:=""b)))M6Tc|vJTO6i&QFȨ2e u:}gϞ9sf:x=}v %|X,~AAurJJJ\]]-[FϞ=Ν322b2Tپ}x<ޫWTTT\͛\ɟNT6i͓fz{{S'O}vVV?,t^~<{Ŋ  IDATÇׯ_ݼyGT>...3fxAFF?4559rDAAHh>''-,,lnnߩxzzZJ\3a @lllLy]bb֭[MMMN~4:DNN.??:|2a2mǫ9rdϞ=P2ǏS=_<==\nvvvII ]`>4ڠM~XD2dȳg[ڔcChjjJ:EEEN nmm}eJJ !o߾&M y~[Ν;rrrJJJT9 M|1$$8;;;::յd…/_7o>}/mPZZZIIP(|hAѣiii/^ 255n3/{`ݻw? P|.nnnʒN… 9W=GhhGhh KK}]R냃 ;vP޷oVWWwqq/({{{''˗/YD7۷oO>]]]Ν;-,,fϞ=w\Q]]=""mرẆ[=Fկ_?۷yիvvvx Ѓ0D666ϟ7~xI6mCjcOOKK޽{_hsϚ5Okkݻ7Ν;dɒׯ3&t|,\zǏOHH6m3.۷o:tɓ%HZ~/BFDD_^GF PZZ++3ftDmWXM3 RQQ_/eƍ~~~eeeN$ {JI'/˓t"P|GQQQnnnmmOGqqqnnnMM. 8.\p%t(t#_/n$#z%[yyyI'=/#0 I'oI:P|.}eeIBJ:ێ<6SB"""X,Ҵi8@ lMԃ H:x{zJEEʕ+o޼ͥ\n^^^IIeDul߾}Աɓo߾ell?S,fz{{STcc?Sh &455i8pW2v:11MMMGQPP(**M8#G7nܐt"-lmm !gϞt"aKo`0 kjjFMy]bb֭[MMMv(Û6mbVVVIIIÇ;wcDŽ&IМTYY> MWWWVVvڴiNNNzO>+(&iiiIIIԫ73fљ4iRmmmqqBכRcƌɩN_B՟={>Im500";v?*++Y,΢LLL˗/s8& i"ȴ{^tﯿJ[[˗7:ӓfgg׳vyhiiI:$_z;wdff666ɩ*))Bdee=<<[[[_|"FA}qtt )..Ύvuu$i"SB=z4k֬۷[[[ OLLN\VV+#j3uMMMeeRaa[QD=XsqqUUUt" I(& ׿z;PPKKK AB; (**iK,XЍd$bmvl!Xⓟ@7kGŗ` qĠA[.tR5uRSSw]QQ!Dwp8N>5x-6mZRR/++tӧSҲSBo߶m)9rQFBLLLLLL#~!oYYY=\CC3!}|||RSS_e0222cƌILL4hҥK?N{TpdBBBbOXQQQnnnmm./w}&LJJJ?ٳg͚ŽɓdE:EEE;;{>y#1w=gsss|HHHpppss3}Oiii˗/I;;|d(2?c0SNmӳbmm-H>~EEE%%%9rDYY[jj׮]\nzz:M>}Ãӈtttޛ(>>>1119a„J+D% ؞v4iR``{LAAA҉@O׎>*`0ĎґC !\pAԆCtq.(++/^xů^pvv.++SRRӳ$]̙3&LpB)RR"kL&J S###pBOOO;TQQ$-* E3iM2waQ {<8D Œ(0k @ 8*0ñh1W0+&k<P9e, }ꮮWM'ROw5+02ɗ(.3g?^0--MKKPB\.=&&F`yGG[WWv9A'Nܬ mmmqo_=|:Wf2{eJJeǎ+AqJ3a`$“/#Lxxݻ{(hGYj͛'L?~xq?yã*7n\v>|xС?P__?8rԩSEPPP@='iӦɓ'KcǎȺu/_~1''Cy۷o:tٳg N5+! 6FEQQwe{{f+V]reڵOLLw^LL̄vƍޕݧLz^AAAd'Npqq1772;򄇇 Yb%%%~{]ŋ…SPPҪ~JT\.YQ]]݌3ON =&?kii:􃉉͛7oܸA~@%Kdgg=#^;***dmO>C㵴`gt / ޫgoa ): !ڢBX|y^SӲBӫeb6BX|BX|BX|ILMMSu7 ]VB ϟO@N tuu)((HS900t# FǏ: x博1c@ p |>?22:>>,g2aaaK.566'[[[Ϝ9cccchhxᦦ&~xxe srr""" ùs:r8ooo 8PPPg2 ۷ok,=:v---v֭hiieggEEEp.]w^rZM2AF{<''d95kꫯ,,,-[쒒ڵknݺWVVF&&&޽{#==]EE,711ϟ̙>0L߱T;::z;+y\XX;mOPVV& S 㮮?XOO/22Rd1A-n… ĉ-z𡖖A.??ӧOJ---My~Ir>IT„I3dxx<^KK>xɗO?%%%G͚;wYFÇ\.W8N]]]rrE'lٲᆱXwww rHHHpppggrrroS),Z`ٰa***u2۷L+WY[[Kp!yZSSgGQQQIII&MP-55رczzzl6;33SBw^vӓ OOϓ'OsDDglq?g˗ˋ۩coog~n&M3f-=̙3%ߛO?Q3iҤ>>{IDDUUUEVouuuϯ_|r _9ekJJJ)y,O|xx뽼$(++KMMz\\)SlJBRGu=;'BmB9s Ҵ %trcbblllwtt IDAT;uuuo'{q ͪ_Wёzj&./_XZZ@|رש4F"<2„޽wzvȑUVo޼y„ QQQǏ'O<<<ڨqh>|xС?P__?8rԩSEPPP@='iӦɓ'KcǎȺu/_~1''Cy۷o:tٳg N5+! 6FEQQwe{{f+V]reڵOLLw^LL̄vƍޕݧLz^AAAd'Npqq1772;򄇇 Yb%%%~{]ŋ…SPPҪ~JT\.Ylݻ_`100?>^>ѽ{tuug͚u]YgdZZZ`nn^ZZZRRbff&,0ySe^;***dVeeeqqgd_@*=ZMپ}[@zX|jY.1 w_: wX|O?b: wX|BX|yA4MA ׎_|ɓӧ:_#H'F+, ASSp8z#Ȁ w___6}tuuɯHZZZ # Ox Nч!Y,ٳge},PA` @)e  ia&fa4ꫯkkked /#Ϗ422ooo'p\}5+ZZZ4֭[ҷF [tq@@@}}=YzCCÇ755Q×-[fhh`0TUUΝ;G d fF\$ A""}C:R ccc?~, 02:uXA` `xsrrLLLx𠫫K^^3 g+--0KJ?ι3C :>aϗt„ i~~>"njzzzh <ӧ<o&&&.]~S rrrA[[˫uuuvR&^=IB%EfiGYXX: wX|ƍ򢣣׮]K^((( 6bbbAiii= 233 yyyݏ?NIIlKK ϷVUUrIII%'^=*HB%Ef?,QQQ۶mp86m"}}}555]]]SRRoUVV5 SSSPOOP555++mjjjFDD-\pΝ^^^%'=HB%Ef?wd^3̇,0tX,VqqqQQ. RFp8۷$7`49]v=yd̙C㵴G ^;6}ڵ_׎___F˗S׮][b*?)2eebΞ=;{djj0ۋW\9uTMMM6MD[[Mٳggffs߽{w۶mSRRb2AAAA888 Wg>|0y;;;(++xBd666=TTTHn/nN L"D22oFhiiQ>}E~gaî ,$_~7򸻻{Æ +VxqFFN,X0-+W,^XYY999ӦMKNN?~|+l6{͛7Z͚5kƍJJJ"9w\CCCBB.AׯOJJzU^^^1kjjN8QVVVZZ*n‘ sNq;vPaC__'Nu2b\zi[[[]]ݲeƎ;{lsssʍ!!!ӦMy&UzCCÇ7557,\L,8p,y\\͞8qyeeEFFFAp8.pttt]FEKKFݺuK\`ƍIIIqqq7onkkS~ENNNAAi$ RSS}||;f333r__BgN6֖zٲe}DDDh#M#·hhhP p9'~~~rrrǏ>`aC /#Ɲ;wf̘Axo޳g%Kn߾믿;eeeȈxb򠴴aժU::::::Ϟ=#x9sLww &MR>/v{jffFZZZ6!!!&&&##C9=v%OgΜ)F 233RSSgϞ-I>/XŅ|JWWw%~oRȮKnV^![ʦLBΜ!//,\$\B%g`dڷo4+_0aeĘ1cCgg|GGA_|.]g LMMi4狉ƥK_{=mmmYYYqqq^^^_o1334iRnnp{0550a_l~~>"jzzz'd̙zzzϟ.LKK244p#uww܅0 ?ZOΞ=S ͘1c)))=n@IEEF[[[Forrrd焲zj&.\H~`tummKӠd9|llǏeF%aC2b̝;**jɓ'^^^mBD.<|pǎϞ=ܵkԩSɫW3f|Ez >#O)K$hD99=Ԕu%,Qia6lXbǏ322t`C`` @GE tvvJYy^@@@XXSE2"-[lرg677tR555mm{gΜ144<|pSS" 8PPP@H###kkvd߿֖`ܾ}[Dp\.v---v֭OaaaK.566/ H@?{lܸquuuf/n{߾}"2f/,,lʕ'f z `,bjj:a„R4??b)))I? -wwwS5sssG==יəȃOxŋK1 ȃ6///6W[[*K=2f3f̐GxX|yȗLUUoݵA*))ݾ}[GG &㔔qE 7ncHHˋ^vm  r bbbo 155״HΜѣ 333:.nzhii֪\.7))$xv/ >'_/,:%a2|AII  /_[[[e୳dɒ"@O? ^0VkG˴i߿/_nݺ1c ^;ݪ'N(,0ɗё:[ի"544mgwF>իW\uְ2?~\FνW^Mgر2I_mw֭ .hhhl߾}ӦMʲJ_mMKpppCC7#_v֭Tbhvqrr` վKuuudS|OM~e:X|Bcd`4  ub)**KYtҤI:Md2t:oGeeeg޵k1ɗ7hs: ,pinCGIdFfY/ׁ c&~[[[su8p8:::=n`0Νݵkhiih[nzCCÇ7557/]TMMM[[{޽[x{{wvvK2m4++7o+Ǵ IDAT@jx;}g,+??_A` P w`5xX.jttatttuuu\\\t:=33ɓ'7nܰaǓѻ[ ^|9 "888>>×/_%_\mllܺuC>}Z^^r ~ fqqq "aÆ{۷OENTr…G Vrrr֭tRuss5ksjj4w*((|211СCfffӧO߻woJJ@ h\.EUU|zxII-[R%lkk 5kkiF0XX,˕udX|1]555>>s̙1cƅ JJJ%!!!&&&##cҤIA644ZJGGGGGٳg<O]]=---))iԩ...:ٻ0q6m⏸eeeȈxb黖ftŋ /|www6///6W[[*$7?%&&&.]~瓯#edd>>>߻"##555WZE#U\BSSSVSSC%͞/DNT¢@KK ϷVUUrIII۩vrr <==򺻻?~BDEEEVVV{{ UUU_w78q".WXV__/͎q7Vן?ĉe;,嚚嚚nnn .ܹsvRRRoUVVfeeMDkkkpp)S 9ң/ 3gd|>_dB =`5k֬[NōNT[GQQpGgA\.wܹ[pa^^^nn`aaQTTTXXbd|BX|BX|yȗh4"/VPPPCCjnn@2, '''YG!iӦ+W\|^Y`XkGC/Wmm-͞:uիY&6 VVV<]˗/.X,ٳg>4!!:r_Ǐkiiݿ… Cg5/oې \`v1&?aaaCfX||}}.^8k֬SN###ɚL&3<<|ٲe999/]TMMM[[{޽TGV\sm0""`:88;wܣ3g>|2m4++7oRRR"ODeggHhˋfֺ *վ23 SSSVSSCVڗ^hɒ%Nڌ3Zr/ӦH"G^^[7A~wJkƍstt xyyyk׮|KEEEVVV{{ UUU%Tnii֪\.Wܞ yyyݏ?NII!b+VlkkƵ_ĵ/~MCCC?#Ν[UUEIqQEVxii6L~hɽ .qcaaAnCլ;w PpBllG([[[ggm۶q8M6I?^-//tuu%K mll=㋊ eMacD-.\(,SWWN﨏Imdd&0:/6my&F򖪪f}}'i6 bbbfΜ{0f̘ݻwo2PDDݻ_y!XܡKijjjӧO?u俴-ZR\= 9GPӧO\a:|>_jcƌoAӫGz`#!!׎B__ɓ' O155MHHNY,ٳgᠸxʕSNdAD={vffKϟ?W$ӧ(TTT?8''G_;vh.]< /BUY}!w.**·OX|*AAAǏՕu':;;`!#W\Yxrrr˗Mfgg<~Wl͛7oٵ5kƍUa׮]KWWU(-///\ 8'O!a 9y;vx` PYz'|; >idddmmN3̰Kד孭gΜ144<|pSSU?<<|ٲe999 CUUܹsdr97A(((3mmm ۷{ Gі܉'ϏwP#6ndmmmnny涶6WcEEE999?c==tA֡h򺺺nrS%lΎ;***nܸAuw@pĉ/>| qoH??;wl0a`p8.}wǏ/))tvv& >|ܐɓ'mlltzff'O6nܸaGDttatttuuu\\IN>r{أYOO?~;HEO5DIIIQΝ;k֬.trrz!KT%''ˋ7M.?~)]]9sHO>d2Xwww ӧOKӎ!CBB|Zj(,}_/1Emٲ%))4gyy-[ܼy˗233>}޽{SRRYĄi$quoҢ7n܈3wAPՏ;o7,{k<== x/611иtR+|>ھTNNK{sE744ROƞ?Qr/ yȖAiCw/WTTm8ΦMKAAAQQQƊԦ-jjjVVV=^!ijjFDD-\pΝ^^^%__rMMMWWW铈O?kۻ>k# srr]\\VXQWWwI݋߄:]Å]?:qℋ95^wy'>>ώŋZ,MMʝ`PܸqĤLY`#_prru}#}Pz._b Yga O3s{OAyY8pΝ@===YgFԦO~)&, p8۷oI7-O<8qp׎(vV^xYQQqY&),0 P^^^RR]F004!!:eXgϞ}ÝJ`%xʕSNdAD={vffKϟ?ݻwm6o<%%%&$q;vhK.INBM 1$7VZZu;;;(++S䋜ihhoݺ} X|xN)+.X`H Vؕ+W/^|iӦ%''?6yf͛vvv-Bf͚qF%%%]Ԝ;w!!!AWWWBAtttř?22:>>,g2aaaK.566'[[[Ϝ9cccchhxᦦ&~xxe srr""" ùs:r8ooo 8PPPg2 ۷ok,=:v---v֭hiiQO7)++i{_t޽{EWi7#6ndmmmnny涶6WcEEE999?c==H]477o߾XIIߟ qq@pĉ/>|Pre wΝ'/N<*!!aѢEF˫[ZZ&&&*++o޼0ۼy3~fٻK5R-!tEɏJ_ʉYVԶ:ôcšәT!6GGe3M(a\H5$Rq}xw}O]].]]z_g*Q|&$$$%%)6lpqkk@1...55u͚5;|ҥK7mڔxY///[[ۜ7n̟?...!))9))ŋ[l<͛SRRd2Yt-&o[+'jq3BK7o|wW^}֭g^ E"+ۛ,///--}W\"4ʌ cc;>^^^џ}Yee&c9rРA7odnntҸfwfUTT̘1YD֥3221cƑ#G=<#Q|Pr\-аk׮˗;99;6:::==]m@@O:UUUիWwŊ۷ogG 888x&&&~~~-o7hSЁ+B:BK˖-+((411dԓH$ߗd#FPMeQ +W8pĉՌ[o)ҩill[o͚5K(.[GX\+++ xLSteڴiͳtWWWSSSŢ 9rCQnݺU\\>>3fP`llö&yki6Ç#""֊Vׯ_G L4i?AF5\M_*رC1++Ydd/// A={~ ʻ)kjjNڸqa-,,/ӧ=O.Hү_?k.݃o>j(-b@NyiE TΝ.]Z\\4sLŷwʺzjllIXXXLLL~~Ç_WVAjkk===-x/ IDAT--e2r9`ȑGmYQ1Eyҋ/$''7{dҥⱯofffccKĽxܹs755޽5\ 9>>*zJ$u޽;$$$//_~ebbb.]Z7nϚ5+44^烮\x⢢w?ݻɓU}ڵÇ+JIIٱc͛7լc,isժUk׮U<$HRRR;ww4Y:\t֭GwU~][=D _p%&&z{{.\022rbcc޵kWI-[l2++ѣG:!!!88x̘1#s9{uIע}z]]ݗ_~t6n4bE^x!55UMxZ5j/h.((QQQ}?dG.ʕ+MLLaccsyG4ݚ1cƴD<-zhG'NpsssuuU{ZwjO#F?~\4O^ 0tΝw@{_[A\hS?H A<|'ŋ@.@b/Օt())qpp`#h#**~w`(Z*""DAЕ]v\|YA/ j|WWm۶WQXXۻwokkkC P__/Q!''GWS9~YY… jfffpŋK$={O"W^?Iq,Ho߰oΜ9'r5kִ̦rp53J$={1w߽tң~2L/ @;Ϝ%KKOqƙgdd۷_4iRFFF.]j%:ujҤIJ*++ 0|333SĔoݺڵk۶mW3  [lqqqٴi ; d<G/n[o߽{WrYf&~cccqq着A]pg]vw [YYgŊbc]]f͚5U6~G׮];l0OONNN?U>|??tOO#Flٲ%444**WFFF&&&q׮]_u7ߔJk׮U9ŝ;w-Z4|p333WW׈AZ\;w7ڵʕ+; hI$M}ܹ-,,(Z6mꫯCe6I$ccݻ5*--<**M#t:6Ȝ?0!!!))I͛SRRd2YuwQIIIIII/^ܲe 9997nܘ?o]\\ʥhCOUoެgyyyii髯pLEFFVVVfddL򊎎*++53%%%$$dȑ ڼy&h|ҥqqqoƖ;v[hƌGz}qpppwwg#H_@I$dZKK#FիWwŊ۷o*;lTаk׮˗;99;6:::==]mhh^f/hߋj)88x&&&~~~-Pͺ\*-KQ xzz*7yiݺuS-333<<|R'''GM粲o&,,LM6f&;;GV;wц ϙ3رcO/x˦ĉkkkA/ Ǝ Q|ս{޽{]vmڴivvvvvv'O{nqq*չGUPPxSСCkk˗/755Z ~т 8p@oԦ--[vv{{/|ܹsGȦFnn#2/`&M{yРA sϞ=U]]-Te\]]MMMďGhM-^~]<(A>|(Ϛ5'??bƌ[*Y eTQGԿTcƬ,ggg5W$BBB4\Az4444+(455O'w mܸQS>}4#ӝZ>b6o޼/СCgΜdek̓o>j(N0|_ snkk&DߊϜ9hgggnn>lذ_~EWZځ'¹srss߿ojjڽ{w&&&aaa111>~U6*ܹҥK󓒒fΜ>UZZ׾.]p"9ѣbaR&)WIǟV߿YODnݺݻw?~<<|ƍ'N+]T[ E0pK*;vlݺube–-[fee5zhsk#(KLL \padd ԧڻwoVVxaaak=E͙3ٳ3f̰NHH3f{'jܲ[kKь 0y似;w˕W_JKK駟M'Oܵkך^zM>/411Q9ƍF /#77WMF({ٳgOs0[on6ʕ+MLLaccsG><`r]\\_W9wݻwON2eС}Q^yAݫr;wXYY}-8hkkb cMMM&&&0a Av, }%H<==&1ʕ+ӦMo)))qpp`#w< sԊ$ZZ״i͛GxZEEEyxxD)g;*0aBEm UUUٵzj} r^<5;*BwNݻw;;7nHHH t钥ⱙY^A8xr*JWzkqNh]h/^w 178|ywTF 8pO>spph/\.Wx~ֶn}䖮ŗ~wN}_ʕ+999WԩD"IIIwYSSSPP~P8]]T[ Ц-]/O?=ᑞ~1WW׏>h_ų ryTTT>}~2MW]T[ Ц-]h+wwwfV:ĝ/P"xxx; v6jk -K [mG]pѓ֭[_ݫ `׮])))/_wdx7<<<@;Cw֭5k$&&޹s}ʔ)DߡPRRRSSGڋL&;yd]]hgb.]ݷo+VΜ9O?w`]toۖ-[߿/HfΜ?iڌaiYv|Xscbbƌݹ[n=uvZߦLs}||;zv6^ܫW޻wOs_x333DPܹsJEX*۷eWj˹ֿ PZZZXXݹozÇgddhw̙37++Kyݵ.h=ozzŗ˗?μZ/uTTTzzv禥kwnHH^lb(+VOoذ!((hŊ RtKJJn oO!>>>66Vs/Z"Bhhv>cb>>>VVVڝ8Q|]:u#?;ІC'C_t Q|Pd̘1WIIIaaaMMCG@111CGt%!!!""@(޽;%%wdx<<Ix toVY@&9;;; ;_QRRRSSGڋ# ;… =<<< Q|!/:D@(mHRwwnݺ;0tl5 5k;x2Hr3i?ߋ/, C_QRRRXXXSS Q|… =<<< Q|!/:DC:tH"7wA(Е?8""ٳ@'R{n:/+{IIIw:f͚&Ў=<<@;3w ™3gd2Y}}hgC_H۶mwGh/ce>>>{>}N'ə8qNP޿ŗ%AH$>rycc,YK/4&6ltΝ;5?KD-,_chA^va<==SSS߿/BddL&={7|c+DriGiǏ>|xLLuuu5kjjj'L윗hiiuVO |G}dގ%%%dvrrJLLܵk׀>SyiJkjj֯_ꚞ2_]]]+\S^|-}޾}[AaϞ=/^tqq7oŋmֵkf!]B;k4k֬%Khx&Ma@'M&Ν;Y3g;vFCrرcO?Tk7GG궎#߽{sΕMMM666'Oϟ?okkCkϞ={ʕ*C*/,_\<>zh޽[[̬\|QG,GG_<׿ell|Mc߾}f!'M,mVi徾-:F@R{DžJKK,mV@/(.WWWSSӢ"#G<<<A066~Ç#""+Th n*..7nKϞ=GlDՎb7###񠾾~֬Y>>>3f̐WBjDsZgnSD~._,m\tIQ!ްa',,/sK.-..OJJ9sȑ#=*6.^h ޽;++իnnn&&&aaa111>~[[[[[]]iii)ɔ;R$:4dȐ .h2K{]˅  ..͛/;}ҡmj:11;00p… ,̙sYkk3fl߾͛qqq=Ο?ߦAMLL>|x׮]333e˖-[jчj9uBBBpp1c{Yf)RyivӒb'׵;v˫]?m&R{k(He#|8lذqƩ^w-XԩSWÇAAA{ccc}Ϣ!Cd3g2@W:u?>?SyZNBBB"""222T_wBUUU-h"y]^h!D IDAT88xر3WRRR߾};fUpp+N>"JSRR *---,,}CcGL׳/:fg1T~5dȐ^{H;wfeeM>]Y<%xxZիW\ihh055}dkdh<(ww3gz]vY׳v҅Y m.]hR,`As///gg5k(O09///!!o֭bHLigg7{lA>ãG>2?OoooGG𒒒6]KI_H$ӧO7СCqAAbGp-?ʪO>+VPy.Kk hD0$SL9{l^^˪UvGGdƿ#Gۣ}||?^QQ1sw}W_*8qBVVVАmaaqy?bvww?Ibbb̙ki6r'6444k{رcfff-6s ++G>|ۅ*pYZ[deovU222Z[^v=++??)SbccWCAe)**R VVVVVVOիW;x2pK:pD"8q0PEEE#Gxxx([Ǎҳg={\Uuu(`dd$Ϛ5'??bƌ7>|$y-&=|pDDW_}%JUekk{u0Iv?4(<<\lTZeQ TQ_tҥIII3gT|{Wƺښ?|۷oo9lmmmuuL&S.9R|1J<(OzŀdOOOӗ.]733ҥK6mds޿Դ{-pY4\Ӫiq̙p (MLL>|x׮]o'YlYXXزeˬFHuBBBpp1c{Yf)3gٳgg̘yǼIo~͸8ŞGϟ7?""% ^d꺺^zIcǎ[Ԛ/&leeeJ׮]ۺnxHZ2s'z{{; {Wrrr;eʔM:: z"899}666@ *//߿hOp`Ν;#޾}[*r̙;vcGUUUeBm,;0tOCŋ#q Q|!/:D<{9t UrrrT~u=㗕-\pСfffNNNjOYxD"ٳg$ xyy5kou6={1bĻ{ҥ߶̙3vvvÆ _,cNgT*uwwg#H_:\.A";'Ǎgnno߾_|qҤI]tOTTx|ԩI&*0`TNS^^uk׮m۶^ 444lٲeӦM ,’%K8::v~cccqq着A]pAq8GoܸĉEEEjqó죏>*((w`t%**W_2dH;)ϟ痞.lٲ$**jԩb 㦦7|S*]Vw.-߹s\.߸qرc\bcc -[Z#Hw>jԨ_|1**j޽#͛k.G۶mꗮK.ZLh;_@W^yy۷MgA(///--}WO rL&dʌ cc+::>d̔#G4h͚##3f9rDM3f4kH$m]:M4A ʕ+O+BEE ʧ9xbbbzzzvvTdff_^*\VV7߄ i&K5E%;;GV8qbuuummmk㈋0a„jtaj~ p!_ŷ_999{U%5ݺu{wy7n$$$]tReO>~т ~8qzŋǝ:VVV#.[GXGNh;a覊K;v(eccfXLܦ>hhhPHYSStx?Ȉ#Aظqa-,,lէO /411Q9ƍF /#77+W4118p`DD畟R9wAA\.ӧ!CitZL<䑯ED;o;qoFYc Νsttwǎ:ĉvLϮf[/ hѢg0#_@WN>9tP}gQŋNa(1Jݺuw`x 芟ߞ={v, p̙!C;_ 2D[Mxn۶M/ctO-cvSǎ)'˛LLL4dWWW]GҚ ŝ/`X׮];l0OONNN˗/?~cbb?y͚5555&LpvvKHHpttۺu'22R&EFF͞=[?ѣL1<+VPUegСCqAAy5 :x޾}[AtChm:+44tʔ)gϞsqqYj8`L}ȑb{tt+**fΜ*K'N-,,Ο?/?Q?2SqqqSSSLL̜9s]7=۷osk#K<\ /|cZE5[@ ׹~**ꫂ |W wihhصk˝Ǝ6 `ѧNzAZZիbŊ۷rPPx<`??I:p@##_}Ϟ=ΕH$ߗd#F*;llxyd$&rs9 :777Q ݻ'~6lx`fffooWTTtڵiӦM<ݻb^zI1rnnnxxsǏ?NC֗/_njjR>{YYY{ i-*+vI:)XYY٪ҵkǿt$/+ ,ذab WWWSSӢ"#G<<<ď[Ǎҳg={\UuuH<5kO~~~EEŌ3Y?|IiҤIw .-;^lmm_.Z_PuVSS覊=>x"P|]yW͛׷o_OܹҥK󓒒fΜvYYYW^uss511 ׷orjOOOKKKLȑ#)Jiii7oܹs755޽ EUYec{733ҥK6mRH :kS?&`8(aILL \padd _&&&>k׮,[,,,lٲeVVVGVl:!!!88x̘1ެY_͙3ٳ3f(۷/%%Mg߿ܸq{'MѥK_DEEǧN4iR̟?L111[nvڶm .BCCÖ-[\\\6m$΂ ,YD9cTollΝhom=z,^M A 𨨨w팭-[l111:uhdddbb(⸩7ߔJk׮U9ŝ;wÇ }…;vƝ/`@KKK_}Uƀ+Wd2MF06V]^罼?JMLII 9rA6oެ)޻wO?\lccckk{N:=rsmذA}B]ۻ[YY;0t_:D"w_~ (wVɉT%5ݺu{w9rҥ^z)((Ο|򉽽ѣA -++;pzR~2MTի999&/[Ν;CoժU 0 J;vPnʲqvvVsL& INN|={~ ͊ MMMIm&#FaƍꇵU>}TJlll{6?}t''x! wH$uM6-$$$**4111---55U|J7n5kVhhh}}s-orիx㍁֭ݻɓU}ڵGKlY`͛7{Z(xO =j8U&N~p ɓ'ݹs'((_̙ܿ3՜O?%''_'Olٹk׮555!!!z>}z]]ݗ_~ibbr71BqIxx /&O||rR 5j/ȡ y{ю/O*//߸q'4Ld=z,^Yg5^ 5WqYS)//ߺuk׶mfooo 766~wMMMsU?ʚ!!ccc[⑁MK,w` \.?_zzزeSFFF&&& (|MTv֦7oϮ]Ė=zl۶MMٚM0w͛7gff)ܹskW!HNΝ;ApuuuuuUsk~E]tA"9999sfȐ!*Ƿ[xMN<ڥijp W_}U1 ʕ+2L"##+++322U+**JJJf̘Ѭ]QКҥKs(QKx罼?v޽{~v% IDATϮݚ߻woNNN*Q|CTQQ!rQ7&&&gggw֭>8&L:dBBB_)5w\## 6h=xP#333<<|R'''GkW_+?~666'OLNNԩyEmZsqݻ_~P~@)d:޽ĜOJ:lR$R)JT*6[:ވCH9l%*SeQ&eutBN|F]Jk>zۜCpM?kk׮)S;P|)˖-;|0!L>=++ÇW\3g[>}~uL+ /=Ԕ|7,,=;ޡw'L'VR/NVVk...N5w4#ɚgggBq=a33ki 8QD1nϟ?tuuݻws2` t!COEEEAv| jjj:<' իW%v}!A k /)//g0x#((իN:_z/=ŗ^uE (Dgnn&&& t/i***~| 555vM (܌1 ﻹ >\^^(,,ӧO\Zj̘1rrrAAAA8::Ο?1biӂǷÇݸq#{MMM }/_kZXX;/ liiG:W\OJJ|СCM4`h+V׮]377oiiٽ{wee#G  <}Wuuu XpabbbCC۵kjjj|||kvz6T*U .HW1 D7-***ބcǒ>|`2N?~<433;y$\|ɤR9sA|}}?~?66vJJJ۶m#?}gcc3jԨݻw3felllSSNRCCC'OlddP]]8*fkk/T꯿jmmm``2qDVl99z%e2 111SN8pÇ͛77o2dȄ bccx%v===777竫766ZW^ͺeĈNNN8IHHdeeuhoiiЈf̝;~j|&iccٙO[J C֮]kff@|~ cc3gCRSSSE\tΎ|pz/ o At:]{_z%!!+&ihh8bĈ3_~eݺuï2T*UWWN?{kyFYY977dʕ+i4ZAAAUU՜9st=cƌdeeo|tttJJJZZZvAx G700(--mmm fd@=== +))Go-Yחf_+VL<933ٳg|sb\^^AR_,Y2=>}JD_ϟ?ORQQADLL l;2eǫ7l`aaA^{nW^"> |/.̬F[؋/ q"/'NLKK#ϝ;gee%\|KBҝ 466ƞ={?322_ ɼqㆆFo߾c5߹s|#MMv9}YAAǏ,T*500nhh5ٟ%77׮]a&Ԥ|5---jjjׯ_gO|NPBCC_޽{WǏ;~:AO>eod0A={^|z  cRRRSNt^VVFP޽d2###w5 i 4HBB\aKA~س7^*=Kv={+((888:ul]ug [nF:( innr Je8&Cfffvez |h4ڟy)SO|ӧOohh(--ڙSaaacc)+?/ 999]]ݬ,^ÑƌC^u3XN<~9%%%ι0C#mXSVVFVVCO--- :(KlqTY-[v֭ϟ[XX;uԣGqر P(!p¢$-EEE&ۅX%K o޼};wrvxm@@={޽{['N8|pAA٨͛K.YehhUQQKĆ ;`0bccH޾k׮ŋ755q͙3AdNDeeUllԥKȟGAP(KK.@@:uիW^Jь^zuI&t)))ޥӦMKKK{왾Aƪ/^ OBDFFu<[ȗ999ŻwJKK--- ' ׯ^GGǦXol,JJJ%lbbBP*++ɗ\-^X=RSSt!ZZZ#FHNNd2'*m,Z?yY B8p 4dAߢ _m۶h4ooo> %%%ƍc:j(IIɕ+W驣#%%斒̙3۷oׯpv!C,[ŋN|2/((Zrɖ{9=ȑ#ݻ'` >ںٳSNP(vvv{:u*gǓÇ?QQQQTT$BJJj޼y999_&ڙӖ-[JKKsrr̙z7--N|2((TSSp|$$$t5NRRR?]222|}}9;HJJzyymڴmmmݫ"a  `ooTSSsiqԡ'B9p@ZZWVVVAAߩS"## 58Bpss;w\]]]^^O?Dn9ŋk֬),,lhhxц 444ON"!!3k,uuu!ښش D+/ *l\܎JDffߨQΝ;WPPP-pOCe]VVFnd.++dt^ @%''7qDuuaÆ1u>L2=++ÇW\a/uqc2+V2d/2zhgyyy <ťԩSRRR} O a)Dr̙XT^^O1kVk*vԦ&SUUxȾ.agP^GDD9;;lҪe1}6]oJ7j^MP\]] ,wr> @hX]]=~xw<@!!!!t:}ܸqg.**wF]J>W9{zz~֭auPG5(-RRR4`ux۷mmm@0;;oD(--… zst:QSSceeա\|jKѧt}yq~'N^ZZZn߾]_̙$':W^^^VVFnr{{Qtt4yח/_^\\y>I;ֿ/q'"ba"f]]>ˋnݺ6eVV֔)S\\\6o  ٽ{7Y|  A&_zS.}}}?ja2t:N Xzs󣧧I먨(1}/bsȑ qg5?~lnnw]%=ʙף]0f DWWLYYCBB [[[lbee$##YOOo3g|ANN%%%6m*,,Ҳ[rAVVV۷o$+-[[ׯ!##ckk?Λ75k޽;--k N )((x捎+deeqYx񢣣Y^^{b Ҳ^v!Cx ĞRWp455.\H>=++祺Cx}l|W\ya\\\ϫ?8_Ng*x;zg;jon~`=9 )((HJJw?LfUUׯ;I-s\윔$++1mڴ9s={;f?3gUyv횃mkkkO8gj|";lذa֭t:_~$jnn566>z({E@d4mvvv?޷o_aa!qcǎ8zQo'Ǐ7}}‘#G 2tpBCC,Xp]}ڵ!!!8ڠA֬Y%HO{[Xoqϫ?8ϴK|P| N2EYt\ŝE|9KII;r :rg oNz?LҥKɖX))+V̚5K^^lׯ%A֟YOO/"" .:u*N'[ 4f0`A ERRRYY޼yK.\Hv>w},Xpĉcǎ-X)S0 Oi Ͻ,Ѿ}555ܹ~ yxx?aj;|p:tHOOFW>qi24" nbbϿk] k / =vy=v9c#o޼HozzzPPPJJ 2 +ր3A*88d~[ne}رc'N$ۻڵk'™71114h͛%$$ȃ`TVV8p9r Kp¢/_LG ܔ-[v֭ϟ[XXϫ?8ϴKH]&M(*GGG&yq'ڵkWcc#Yv)**rwwzKyyy~~>m$mmm==TF:nhhƒ//wl---==Ȫ'O={6yxkk'mgRz81bg,X`ǎ-99|PWW%SWW>>#G/db>|xɞ={x #uX>Dŋ={#G|ف444O+WGv9tՒ%KȊXYY9;}6 >|(++cuĉ#Gڵ͍,hjjkjj^reܹQQQu~ 6nݺںk׮]G]jUXXѣG X~ݫzꪪ{=bll̙9\s3A *++fϞY5qE; F{{5DQ䔗7cƌNUUuʔ)7n~լݿ]GGGFFfȑ~~~%%%[0 Ynׯ_G&>nKKVxx88ݻwUKKKVV_%l۶C{uHLEEdŊ555|VƆvDFS#RSS[WWp‘#GPԅ 徾p IDATWq?S3]]] ills244TNN633;y$|lLLL]]T*500nhhwΝ䵱3g떖55ׯwOR׭[G^߸qCCCd|葦&`*vZ>dWn|&yayMS\]]&W/{n^^^SS>rrrRիW9/L&ʕ+nnnn"TYFE>իÆ SRR ;Arss%%%;CRY<} ۷oKHHhQRRz!?99;_xk}݄ !)'3LZZO z/M3}}}???V{NNyݻRKK˦&SUUEV7>䵩Rvv 166VUUxb? gs/|r5555ggO>uܥ)/_#l3xW/=gMMM555gв<|033222***t˗/LMM555 bIIIbb"sssRצM_v޽Z^IJII͛7/000''ׂ>(LPZZٳ 3g$ )霦fEETof۝Ļ_xXbŖ-[쭃FFFZXXHKK!!!:466_Ç4iҁXoEFF.^~HII!BMM-<<ӳ_~jjj>>>󃃃쒓BBB Ϝ9+гgφfeeΚ5Cukn|&HT||?L/]{rwL B>Det:=55<1>>u\#Zc @ǎcӦMnnnwwF#P|yd2SSSMLL/qpt|S#@=z4z趶6V BqqqټyR>>>-L&N~;`zS\RQQ1}Ç;r+!!A>U>~,ژ?hc}A1 xGmhh|4555666&TKJ>oX TWWs}B̚5+88B#@/ãzŝu%%%%&&<\׉dVUU~Z܉@-JJJ"z996hcOAAA1 PRRP(%KII6dddDSRRrImݺ5..}„ ۷oh:tΝxBqWUU/ܹܿs")*v$nW//r}q_/^$%%uh;vMܸVTUU*++g]V>|X]]=##"3Vd֭!!!u``mۄ(zjN wfΝ,,,222ܹka`DDDYYY}l700ضmرckjjƓ'OݻJ{ ⬭ }vavڸk׮N'%HϏ<lll ?t̙3UTT:d```bbkAxeu c̙Yf^vWp^6l@~ʺz/nΜ9A$&&;x5##v=sw}'HOoo3f}zCCCii)m̘1䅚Zmmmkk+***t:=11QCCݝ\;sm|R$y?2d %[85Ͳ2---{9?:CKvRRRcǎ5116lXII\!_zչs(1믿zkbb"##SXXHu떹2''x]ii*R]tڴiiiiϞ=#OXμף9qVmm-{ϟw(U[ZZFEEUUUYYY|")_@G555: 6!!!&&Cgiii''-[DEEGVt˗/LMM555͛.ϟ?Ȩ(**+,\Tt|i==?~w"{n~~~ssq ٽ{72<<<$$/"_>111!!SܹGMM WK>\fsҤIuTT԰aD/ߢv3fEE(rAƒ`=ވ9G%ǎz/= 0tuu̔ŝ˓c``@E}8SJOO2e ymggwŗ^d2 Ck^^޴iĝ@vZ qg!N>[n?:00p۶mdɒÇ;{-[:qbV]rss븸8kkkee!Cl߾l400ضmرckjjp*xi߿ιA|166F)((7ѣGdϗ/_:88=ykΜѸ+sp¾T*{b>)edd03g=g͚U[[{ڵξ סSMh"q' bK,),,yw۷{y݃Xo8qjjjnnndfzz7o.]dɒR ***bcc ذañcǂ Fllwڵx⦦09sF:( tbbbKJJTTT8LҥKVVVOKP(KKN>肦m۶h4ooo> %%%ƍc:j(IIɕ+W_<==uttRRR8c9sfvvv3222dː!C-[vE'uP>XYY\s; /#GׯܹsI޽{#Gdo9r{,_ LҒ NOLLpwwg} ֍rrrYYYAdff5JKKܹs1  ք ȋaÆֶ 2<::zС4fBMMMʴ[&_Q^^`0ĝ@o311P(K3_M6---ٳg~~~ݻwMMM>>>4-''Ã|V A䵩RvvЙG3(#""Ԝ?}$t|R"BKK;cK 06l`nn.'644* @0`}DDDSSSMM Q,>"뭴4:ˠ SSSMMzaeeXRR<~\ hIIIFFFd N rL&EY֭[OYm۶q}kڵ"P|Fyyy~~~wB(**JJJZdHoVccɓ'mmm [WWGfee_RR?|p___˗~~~O SˬYjkk]֮]Ov: u^u۷ol2tЉ'sc@ zIJJw"#w"ͱ fo:tɓ'+Wh9sT*UOO7vgΜaRt:ٳg^^^:TBBByyyss #&eeMMM044dM<00<|UUՃ233gbŊɓ'gff?{Լg̘,cc~9&vZ/=! \9}^{xx8;;gddPT999n(_n( b#!!Aڪ~G455ۙL&JeΧ;˺u7nhhhΝ;L۷oeeecbb;PԐMMÇMkxeҢvN o&ۏ?>~xαD>5m*ܻFyyyV{hh7X|0 .\f ɋW^9;;jhh(--RAߍ &Æ mmm-**"Tfff\\ܭ[>~X__OPQQ[t3X GGG W|^Zaaacc)?~(''ףSJ[[|` u^`0L###ҒdJ8,ZfffN6dӯ_?XUUŋ`0:X$%%g"D&SUUd2ɷM3}}}???jjjΟ>}"[jkkRvv6ILLLddd ɗn277笼|j\=\KK¼ {|>}^P(J۷y /=eڴi-w"𭐒7o^```NNN{{ׯ6~x `XYY)**$&&}>|gEEEgϞUPP9sf}}=AG~qWڴiݻǧ#--e˖Ҝ9sԸzѣy snan0`}DDDSSSMM 9_cff"Djjj4͛A455Q1bDzz:׷>~إ!H7n$߽{7iҤӧ744%44t޼y'Ndϡϟ555$JMM-<<_n٧qӻ}#HIIkkkh4aggzO 駟BBB|}};sss[j{aj\3}-T!ܹy$gϞ;w.|(B۷@W\qvvvvv^blDDDbbb\\ܜ9sXٳgر  iiFV[[[Ϝ9AZYYm߾866=?uAFFF"ׯ__|yqq1Bw. $_­[?a2{Yj32&9rHcc㔔V Ҟ>}:`eƌcƌٽ{7g֙3gq%II.t?ۻ۷|RSSŝHsqqw" <|믿ƍw9EE͛7sE,++={6{/JJJ_]]ĵ"yyy'O׿ W3""BY^>,eee)))m޼l˖-8TPUUUAXYY7/Y#22211… JJJ";;[BB~@_---tz_qƬ, V\b \KG]tÇߛtҥ#Ftse˖x&33sȑBM@xҫRRR( [2eʔ,))) ޿uA?Əקp/Ž=}ӧO߽{ǧhkku8C IDATN򹱤k!ǎ5kw!_UUUNass+W;>B8p --+++ԩSv9yۻ 'E8mܹ666wwwdq=.:::??ѢEfffv?7nx- TUU-[j*O4w3g$Noܸmر[lx˗Ǐ/KB陔((|AP|stt|eZZw}'\@#>FdddL0͛7[n۲eˇĝw777;1_2vX~q' ~5559ٳGyt(ٳSSSݻdqg蘙ISSBYtv]d _w}Ν;O.DCЃP|A(*&IBw"K#h"fff&DG<}ݻw:::8B-Z+DG_|Y܉@_ @BЃP|A(CGG :N ;vۋ;$ŝÃd; =ЃP|)GYxq^^$>>?A&D- wppPSSh7o$͈#ӹGWZ5f999 ɻ֬YCP.^ig[[> q?.gﻹ >\^^(,,ӧO|V(_zիWĘliiڵk-,,z4ewKKKyy˗/:tڴiIII F[by]\\HW#p KIIdP(?.))WTT7nn, Efٹsg7d݇]UUAVVVNx%%%>RRR:G-//zy7oѣG9Axx84|N3g2e \{XNx4@_QXXhjjJ0a?~HaddDfeezٙ<~Jfff\\ܭ[>~HѝLƌCֶrnggg/(NEEN۷oҥ3f z: RXXgYMKK 7oOK.EIIiٲe˖-{Mxxy?v옮ĉ vڔ)S p5k֐]LeeCÍ78#B^WȐq-sssV"''x]iiŋ+`0XE~MMM>>>4-''ÃARRts.^xٳg|5y}]6mZZZڳgF\̲xb%n8hkk饦7tuuuCCC>3*))ڿ@jpppss3#:hmm%?D!7 9rjcȐ!֖qF-&d8^ @_!--e˖Ҝ9sMKK/_ 255Ԕ7o^```NNN{{ׯ9^%`XYY)**ƏYI7>hEE;|$!!u숃CJJJKKtÇ?QQQa`Zepqԡ'B9p@ZZWVVVAAߩS"## kFo޼qrrnbA/^XfMaaaCCãG6lؠ1}t^/\իl֧SSS߾}g?<_DY@ EYZQ TVD4*iѢWbXZA-VQZ l@U֢Q(dKə3g3{:s[$x$P\YYy޽O?F| 0C%''ϛ7ܹs˖-dz= / $,,q޼y7nE|}},--DhkkO8Q zzz!!! .4iҖ-[E|Ç.nJs?ӧf| \Hа;wŋe9u]]MMM8Բ_Y.6K55MkWWӧ^vWXXrrrvVSS^h]\\N#S]YYY[ڴiS?"P+ 1;#, G(tFaaafffee%A@ѡ۶mrIIItE :66V8qOJyOxezfffΚ5@OOݾ} z$#F "))IZxƍnjd2|}}'b qpph՞סɒD 6lժUwm~) .]JOoe@ @_& dckk+rV?~`ܹsG(~WsX|QUU՘$fhwL&sȐ!ZZZӧO|rUUU,j ljj233ۿ;CQRppp@@ׯC5sL. @7C@QX[[{.WFnTVVL}ziikd)HԪ-Z4x`'O*++Kîƍ2dHtt4E`)))un?a„ٳg?9]dŋɕwoOSNu# s`Z^^K{dz)tE tIYY{ҝK!(Sm۶qܤn }}yyytGbѝBA(P/=\a`z|>`kkKw/G}Gt#066ѡ;(:_:#(((##cƌtE  G(/r tg} +++#.C-//  wt۹\+Wy9z{tB@^RRR:#@pʕ ===@7S;AXZZw/alllccW@P|3g/r  G(+233g͚e``n߾MD}}=C#F$%%IU[[+q'Olܸq̘1L&חlgXQQQn _%?c.V(Hk(]6yduuW:)!!AEEͿx<899SZZjllvZ&)ŧN511i7׹\nSSӞ={>E l"@'t>A[[[\fffVVVC(ҝK(9̙3UV]tPEEl1cƘ1cvfUW\QRRjڷnZbXAAA_noo?j(33 .JK] .((Hhٲe'Nqss; (4?~O>o;wgrsse˫4!!Ab :88lذرcYRRѣjg0&-@'t/_ ɏE---ngΜ055xIIIÒ.RHHl6u^(}Ç'\aWhddD}lRR3gFASKKkݺuw-//uuu&d~Zԍf2o޼v(]իWg~ g={V111Q__ܜE;88~:]]/8;;mD mll>bĈӧO:\(R"7444X244n;\1\tiѢE8ydXXhݶ^|tz1Wh~͛jjjnj``0m4 ,Y?GDD<{,))i޽ .ׯ8tPrryΝ;W]]lٲ~byoߊGjii"@lA/iӦ~u饥׮][`!qqq-''mg55C? IDATE <ťɓAptkk={,_|ΝQBp+W=zرcw,)%%EZ`]A^5ݣN8l277@O/r tLYY{ҝ @EFFzzz޽{ @'%@/bN;\~ĉSL0aY>}@ z*cpKPYYcǎ+WWaaafffee%AxAfffSSA*++onll}v, vr/_LwPtxHq޽ȑ#X`m ݹP|Q}+PwuQҲG2@wBE-l߾‚\I((y eee9w\ixyyQ>B},E%00XK/mo\\… ]~}]re]hQw Ͷ`]((#F8q"((믿$_~mLMME( KKq{ARUcoNQa~ۛ~^Xf ǓBҥK):Pgvqq  x<}"yĉ{)*/AXXXPܽB266V:::QLJCCX555k5`c)E@$00000 0lٲhnEEEd _~AAAF걜-__9::9, <{ӧtgԏ >x_f͚~%$$ .믿fT^@F2z_zTcJ`&,Y"|P|QtGYp-[w{1cѝOQQ@ `xPÝ/c.{eC@P|#ңN=w/r1OOϴ4\l tg蛖/_}qcɓ&M; yqttttt; tͶ4hA@1B!, G(/r ң;`0V\Iw誢L@@wPt(tΝ;\KysAN(˯zС@rL@ŋf@7Ý/r @glA/k׮ٳg/r  G((PH;%Y|IrQTT$l6^xp 888YfԨQtr/^;(:_9B@P|#_:fUG._:?##ٙ B @ <ŋzzztg;_y9~oFw/rƍCz䌌 mmm@7S;@TTT$l6^xʊ 3\ŋ9B@P|#_w=qug``3$%jVWWSfUG.jcmmM CaBassĽDQ7@;@^/_~>YDD̙3utt#""̬>uuu111ض{Fؽ{#xA|>?,,… ƑATUUZXXEGG7446::zԩچAAA&777_`ID㤥ԴZ[[{q7pqSO=k@?tЉ'>x " /ܻwoXX ^b ݴiSIIɾ}d<ݳGEE?dG9z(ڳgK $$$TVV]_|իW\ׯ?~LS$?rș3g^x1tЂQFq}h֭YYYv:ujnn>۷o?~?o?@Vg֭$ȏÆ KNNnnn!Y,VKK,Ji&raǷS EEEUWWz־~zMMMzzz7n?)SWWd2%-ƏOn>eeeUTT̙3fiӦr,g3f VƎK~0aBFFFmmxxWWW䶶=<C.k@7Ý/ !'' p r'NSRR \\\z&4huqxG B  AcmmMɴ'Kt @3333g8;;WWWGDDY[[Ǔ}bbbW]]-m}7{nGGG# |~XX؅ ### nhhh;lttԩS K,Q<gСC'N/ @L@@wPt~{ 377wss0aիWVX2`???s߾}6m*))ٷoǶ{ϛl޼988ȑ#Ge0ZZZ{!xyy ʵkVTT /z*ǏK,mq1΢݉go~nV;b BÝ/[p̙3,Y~FFF-4hЭ[޾}wޱc6,((c+ٗ.]:r/Ym;466^p!00>ذaCj FCCCnn7o455ǍG;Kl=Fh>)))00ؘ-]Tk (YֱthGݻzIII~/2}tMMMs -_,?QGGk׮;"?~ӧxҥK,KV/Ny˖-;x𠝝]DZս|rѿ8NjVVݻ\.dtҥ{ԨQvO` /'rsslֿ !hAN:[ۛp8MMٳg:u*$j -8i}$':hrrrUU̙3ɏވ#Z=aїD?O^~] ~͚5](++y{{xݒPF pvv/((HKKۿ ]qqqQQQA奤444hjjR$Yb1:AEEe顡eee ̈́Ѓ"""1.]:cƌZYY}dՏ?(~ء8qnnnSSǓ6lx/))Y`_|!ojjJ/ |R[[޽{---^̤miӦ1o]Hop8gϞ%Ϟ=pD&Lp1PXSS=ślذAcG(,,$I(M6y={F=iҤl_|P(`$&YiŐ6 WTTl۶‚冄0LHoccsy@A>>, ŗŗ###EKv׮]q8ooorf999d{~~>jii!Ky_}Đ?300vq3PD@MM-**Zb''`Q-[8881X(>Ȩ/}]Κ5K} /}^5ݻ]~J\!666<<Ν;ZZZM,%411IMM555%@.I>d!hHJJJttݻwkkk߼y2j*)I%2V>󓋃~wk׮1c- ?njӿ)S/999C QSS{n"522e|(TRRjiis玧O?djjډHKK#7*++ &OLhɍzwwwVRR2|`mR$eeRi}(whyÇ?}$;;mOOOOыg``3zluuuWMȥ(e',]ѹШ_~]|qϻE({o?&&&;weΝ֢7o>>9%:x𠾾~rr2]w >`WtQJJJss wtިQ/_NP(LLL;vݯڡA"""fΜ\]]afffmm-z)U]]]LL}e?oFݻ9ǣGaaa.\066$*44.::|222Dw|DGGO:U[[0((ۛ* p8g>uꔨ] :tĉOM6Yt3>|jee߶vȐ!n"әLP(|򥶶6ZW^eff(fdjj8+..ɓ'/^'ϟ?gΜ'O$''s8rN z+VIwPt(tʕ+%V "ce֭$ȏÆ KNNnnn!Y,VKK,J}n第cǒ'LkkkLf$&&~wk׮1c-US˕}7ox< X,,,>WKk';5]vܹsNS@/ mnݺU^^Nw /^te+++]]˗/wWVUUrAܽ{嶭X,LwQӫWvᑛK=VquT^zwwPMMիWWUUamm`0l6A]85Ap IDATP|Mll+~ijjҝ)++/UUUUQQ;E=|pWTTرc]_YY{׮]ƍʘ2`ggg/YWWWAĬYΜ9ŋ#G'OCG@3߼ySUUeggDCCC/_2_h3e#@7xiLLLFKK˝;w^rET袀~) 55UWW? AaaaQQQ8pŋ+Wz,xzzYYY/[,'' :??< >=0n\OO/$$d…sww)~ 0`~}vvxg1B!z1//p &˂^ȑ#&_{&_:ӧuuuAXZZرc޼y {ͼS䢸˗FFFtg @y{{wm. ήUצMh!=W_.Ϗ!nnn^bihhSY]pl4hPll+:ȪUΜ9*N0`Y0CyŋoݺeiiI2 %%%6y#GXYYIQZZ:lذϟ_~·{`[H+Բ_ N]rFUG.?~'7Ν;ٳgUZZ$^RRѣjgt)uuu??.Ew)7:88lذرc6**JCC***/$s8p,w]kǎs̡;(:_zԁ ƺu V:&?{xXXX||ŋ!DZtȐl]V߿;=,(9s#""Ԕ%%%v]WWӧ~w:::ۀOjժcǎ=zcJיćl7SSDjCS|eee@@! > VKMJJ=s挴lI87otիWgK|] ^~Iԗ볠nݺwںVWW瞝=x`ɽIIICݿ'4hΝ;7yV{)3meaanZi$2N]S,$  /'Nu,LMMϞ=+ޘonnNq`nnEO1|#F>}UkhhhehhjYppIC})> Y~嗍Y,V3L}}}GGب(VZE})k7SSGס}#G> @ ܺuСC>38pK-Zz}'OQ,;KgggwwK֋X`0JNN7o޹s窫322-[&۷⃴UV7o2ei/E={lYYY555[n5006mZ=zŊڵkk֬i7jLq`GM+~\w}7rttr]_RP@((iӦ~u饥׮][`!qqq-''GbGGnj P~zCCÕ+W=zر`A^zVRRRZu0aٳ^E})g!MSSS^h]\\N<_~;w^VL&Ǔb.u8ZvvN.]yѥ833˗t#;;;33۷tnځ֭[v, w:x`ܤ畗O0>ya0JJJl6{yyy999A888۷p8MMٳg:uJ?::zԩچAAAԃxyyzyy˗ϟ?5kǣGdo޽{ҲI?,,… Ƒ8}isv ̂SSSMY :tĉ<8}333g8;;WWWGDDY[[S_RYxZMa&LEskkk8!?@w_~) kjj444B xA:::>H"ѳ*Æ {isssBVVV]]رcEa2228E۹R!IN)7XXX&O,- CCCSSSDz2KH|իW8q)!!aذa'N WJt賘L~llqmmmuuu/_lnn.(+++}݃CCC555W^]UUErrrrrrzݻ=<߹-p ܍=zŊ۶mSVVvssNKKkiiyӧ[u͛7UUUvvvWRRRTUUutt455)iej)eJ"(;`ggg/XsH5q***ӧO /++_CrI;tV^pe˖u.*t _O?=x𠽽=A@!|wIII pss ֞8q۷vGOO/$$d…&Mڲe;ٹo>g㢪 H ^@@cF`XT\SAB2A+׌ (!?,2Ev@J""qc0sA|=:3yto;KML%h֍sss[t֭[6m$bIa_|auuu%K\ p~iH"__ߊwyG___P`$I*:Ϻu?~رk*:|7|`EJÕ/8q'N?xQHGG$11z4/(/rێ9B@P|Vqqq c͊ɓ'fSSS%̔mlYYzICd@LdpN:5yjkk\ŋeaB"Ȝ-( ,9Tvpp]]]}E Jot94*00p֬Y999|>֭[< IdN<933+V:o޼喖z{{oٲjb2jjj}gժUϯ͵/")*)"gϞNlgI3ٝ/Td*&D3NpET|ۓ" LCC ϟ+:b@.rrrNjjjzRGx3fH>>AAAA;ߎ쬯~0xƌZUUM?D"pΝ.UUU]]]---݉,QlSI:I[ҥKǎ;llli.e$~{ .cƌ5k>9z?X[[׷f00'''[i>dɒ+W+^\\ҥKniӦ~ 2!;w?~yQQѡChv'IA)04#$"v7}qƝ9sMmذACCw}N( o[lټyW_}X@6nxCQO͒.łfkkϩ'+_9RVt?6@@.jjj;wNсH˰«^5(/п2uuu@щ$ɞWmiYKb9`]]]#GX,6F8y򤫫eLLLKKcccc\\\c#""̙cii{9:: Bloo 5::djii-Z(%%E:a''[n.tnn%''Ϟ=[GG(<<` aeErd2LrﻸX[[_ƍ$Ir\.[/ Ҍ]j+**rss Xss2$>}zm#k /^Шڽ<==L}ҒvgϞHjxihhsEC `2vdɒ+W.:::v9~xss󢢢CIjxl;;;`t`P۴i8G):zׯ?vXBBºuK?|7|`E*•/܁&N8|ERVt G:::&&& CѱP|͚/055 a@w޽{/rӧ;;;+:P$I`3_?Qt /@1###>s[[b`0Z[[8 >cEVSSɓ'):py͛vk׮xxxξ}8ٳgt`8<|022믿noo'cΝ3gTt\ w(WCCCLL[[[ PVVVUU:sYE#/r˰"I @`mGbŊiӦ9;;+:P$_mG055Wt 0Yڵk׮]^@P|#_9b$^>x 55?}ܸq|ž}8ٳgt(ӧ7lؐ@@P|7n$$$ܾ}[сcǎUt 0ĔA(: \ G(:~#Yڵk׮]^@P|#_F sׯgʔ)W\Q{{%~K[YYEDDA޽[p*w߸qC0 33&l 64x)rbw'W kHall抬}vqe[Pr$}K$;TvS[N6MMMbرCpN:ETG,&r H?8;;&LpwwOOO;vl_\n`` u|-wwV!uuu&Mڸq%~'_;vIapprL&j}v4a˜ ]TTTȼk׮Wkו} kkǏ(])A}%NjjjRRRRSS'O,ۺb#qppweŊo̙3Lƍ-ZF8qBEE%00wQWWTTTA|onn+is .P-RSSIrG"K ]6))̙3˖-n }*ƌ#i C\wرA0 eeɓ'ܹboo&Mffff۷o?~͛7Ο?OcfΜci%MIhP%uS ?~k׮M> 6fgݼy Ç?}TCC#%%嫯*,,ڲeE@@@yyy@@@HHȜ9sN8ApBݻwS[PP666G@W̙3ׯ_?m4i:ܻwoɒ%Ǐ˥! .==]YY|aݻ^^^"킚CCCw3ȩR!]H'&&N>2>>T 6ܺu3""jqㆠ>ss̙W /#Bmm-A...iMMM.^-5Ϝ9sd2::Z/fff]VIIѣ2O.@Buӯ͛xQI9rƍcƌګ}||9~I;!)H}%3NϜ9wsss.{)׷yQss~M+|ŋ}GЄ;@6(AtppXlYKKr1;;ޢ޽cgg~H߅lRjjjXI&%%QԽ6ԕA;vlHu ~_b,Nwww J;wl.keeА2sLUUUʽ&AϏ0"0C]tiŊ~~~⨧5k֬ZSؿ FBBBVVҥKϟ?R\\zj/^ "M_ƶ"]Hd N73oOŋ yyy;Ν;4t!$&og>~x<r׮]͓2gϮ?{ܹs sdoo_XXo~2Q H1o޼ϟ/[߮i>}?p^ӗ[qq1IFFF?|MӈI={&2\CNNHGGE矲Ч~~ו~!w^^^NNαcǖ-[fkk+{rr@2| %6};tܸq---+V?~ŋ;::HO555''' Νz+**>Yl555ë_ \U ?eXEFF2EDYZzm6#l$6bfF_%---;;{b*WE4b 1 Wp#n;_Uсa̙[сÕ/mll455 `x^EC W"""ddd(:P|*++SWW(sԩm޻I©Fe`4mGl6[Q((;I|>_EEECQ7xuɓ111---T;Ŋtssc2~~~wޥO8r555mmm+++1asssllKrrrWWչ)44t„ NNNnwѾ gSHv`XGY`GKKˑ#GX,NKK.FޓgϞcdd*s̱1c`|uu6͊ `3Ía@`8lٲ )o޼喖z{{oٲjg2,S큁fnz<&\j+**rss guuuVVTSS_/;;'OϦd2LrﻸX[[_ƍ.FޟY of|A:thjرAttt(:b( +_^)*|7oRƽ$I2̽{R텅$I_zUvuuijjQ$Ivtt & Y/ҒfSH$u`2v񚛛oDŽ<Ɔ:uttooo_IڝYT҉ICyޞ:022277˶w]]̯jƍ߱c*v??{?^[[{Μ9} QrA@^/_>uTuY[[]|R666yyygϖ߄l6[UUq8 8f0555fffA1EMC~;H".F pwwwwwYdd_yy9*JJJE_>''ĉk֬_0ˌ3֯_/TTT|||{{{322h+++XbϞ=W^}۷=zDӧj1cxxxVUU{{{1vط~;66>%%E]P$&"44ndɒ+Wʼ لΚ5oMlڅlg;w?~yQQѡC_VV̙3'M$} )$0<>]vܹs߾}%b~gE^)ԓw`3_pE0GFSSS}}}E#n;7ck8{%oG+W|߿_Q(ƫ@`/r+_Ν;wܩ(`9B@^7l?*:!pN:%Շjy055ë_@^X,Ut,C)88fSHHHHHQƍ!+_F'OZZZĴP,+22͍dݽ{jooo?qԴ099y:::FFF,1**:nnnrqqINNꢏ/ٚBCC'Lt֭Adcccggk3 `/#Ν;==m۶P%%%&O}Ǐk.駟Ξ=\CCCx-[|ݣYElgI3 hjjJOOƍL>~{6m4\ (/^8}mllLLL322H>]jor˗/p777%%%+++###  FWWWyyykk-*b;m}…{X3gn޼9--Miߘuvv^re޽&MrV\FF _Fifffff6o޼*iӦQ=<yƌ&LKK344\lukUv(sGG uX\\.)f $ieeE:;;K< ZOOd2%ˣҥK<_ogIl6[UUQGMMM lQSSC/0֖466*:P|TTT|||{{{322h+++XbϞ=W^}۷=zDӧsNNNNWW*b;m6fЪxooo30vط~;66>%%EGn'==]",,',,LGG#""V^kkkweffѱsǛ:tf% ,..mҥ[n Sr>dɒ+Wf*uss `hmݺ5&&&:::((HѱYԩS|F">CTt04 ;AѱHg I^@<ľ펎xH 1jjj,,,ٳdृێg}`0vޭ@aaa•GGǬKRڒyBeXQ῕p555NϞ='rQdd$IOOWD2A@^2226lؐ@`""" }F0ʊ`OHHpwwWt,0{]XK]`(/F IDATC[[[!gnF:_dR\\%2uuu>G%Ilvjjꀆ Fmm-544\xGKHr%)4{3/vr fѣYYYwCB^H***md^!d+ WQSSShh nݺ%h8y򤫫eLLLKKK߱bUXXH innrqqINNY,Vdd{nĎp¤Iiv*Frrٳuttņݷh&hѢAHJ@߽X9sXZZJR$ o>*cc3g:uJ82db9rd---GaXl6;-->li{!ijj $ {{nEa۶mA|嗊ӳ:++dQ7or[lN|YZdwMMիWF%CL)S._|}kk߿?55uܸq4aK3$ӧOUUUo߾-vڵbQuww+:b( 0 >cEPWWy&uF 핕ƽ4}$_455D{{{dݻ:.,,444 f@/MMMƍKJJjii,>۷f/R-o%88:pi,˩ȾQɖy&k.MMMԩIVVM! 2FիnJd[[F^^hAz(V@^=@@.jkkKJJiPXYYQkhh4333337o^[[[UUXix666ԩcqq6iӦQ=ҏ]]̴4CCe˖ nh??S?TQ߽HJuI ASN9ٌuuua;&$AXnݩSzzzMLL Մ 899_~"**!f0555ԩA$zzz}f&)>>aaa:::NNNׯ_;VR }}}///!qqqnnnK.ݺuk@@Mu0cuttܹsEEE>˗/1cFHHȚ5k]WR')|Y=z_ׇ~ݷPe^HC|}}+**y}}`tb_ Ck޽{㏩'kӦMoll7,X@ѱzOOOww7]5p ݻwKNN^h#b8q^J&&&vvvǏWt 0{yy={l̙ឞh(蘘$&&2 E0 ;vرCQHdɒ%K(: yinnVt/<`D3_F+<@P|3glذ~Pt H(KAAABB͛7B8ΩSM[VV>`DeXp-3$78A󋋋hNTȢdD(88f+:3x)*: \ (F-::djii-Z(%%EО<{l##pX+++䮮.ĉ\.WSSֶf退333___ :::N}ŋ$I>yDGGٳg%%%I\j+**rss =00p֬Y999|>֭[< Iɓ4K$imm "ܼy3---޲e Y]]d2Dk544$iii9eʔ .$3$$D$ELɓ333?((HXI4Vl2%e^Rf$-*l@ IVoҥK:::xV` /(nR_۷$ɦq%%%>եYTTD&&&ۓ$ӣU%b&oo>o``pM괲ظC]]]ַBMCCCSO81++BhH_ L5v޽qaaa߱6%idJʼ,*0hv*7Hn߾}ԩꥥQ|~@rrrNjjjzR tuu333 -[Fݛ#uttP9::x3f ti<l޼ymmmUUUeee$IZYYQݜ.rz:{Ǐ%HWH0˗/Wt 0z888p8^ECLYB.\KΎ;6nܨ`D(--}I/rGŋ?< tuuQvxE _뭷~g ƌӐ//t٦6m$Dѱر#***22288jO  Rh E/|cWM+5 ?^vӧ~yhh /%;;l6O?=t萢y3_eҥ掎}?b0ιsbbb>/("`0.]ta F2<`mG011ë_@۷o߾}|lvjj:uj JPEHd…\.Atvv2ę2eʕ+W~.v[N6MMMbرfrj ˗#!UΝ;b066NJJ|? &qSLX-[>|())kRw `0$#e`3^h ǎ.HߺuݽUH]]ݤI6nܨ&vɓ'LNDww'?N}g a22o!v驪:|p}}_n?x@4-}02C@ccc\\\vwٳgO>=((j8y򤫫eLLLKKDDĜ9s,--sssL֢ERRR>fffADEEIdd{"hvv_  ۷E100. !X]]:ٳgݯidِ$qEڞ8qbժUQRRRQQǍ$hرyll%?~m۶M>]MMfoذ Iqy$;v…Ǐw&BBaȵk޻w̙3b?e0ʺOVWW |*)1c tQIfe> B\r%===***:::>>^7|sR}}}vܙ兆 ?~<..ʕ+O<ٸq|PUUED||e||O8!}$III 庺ڋȢsέ }뭷dBDSSӖ-[ӊ ݯiI~'NFFHϚ{-YDw}qyy4 KOOWV6MMMWW͛77uuu̙b {{{ J]]=44tΝ^UPP0J̙3" P|V~)I{Qt H.\ػw/Ś9s͛SNUVV޼y[_xqؘgddP$bٲe'MhѢKJRFjժ7xCIIiʕ#B:C_aaagΜQQQ&W FWWWyyykknҤ>+%E:wkqqqiii/^֦v??#Gs+Wt!}7("::ZP`2337lI֮]t~{[ͭ tQ)%̼y󂂂D:Օ444/xš0x<^GG uX\\,xu6y\ifffff6o޼6 7uTSSϗ&iӦQ=ADjj.]D_PnfffZZe$ݝ$MZ,c,>SSS 7RQӉ'ʕ+;v8s)hkkG>tppXlR_ɓXjUuuO?D?u&׊PSS{:~NrDDDXXp7rrrttt444n##fQ)%L__|9}4P|smذl6[UUQGj~~>uӪ*gggkkk==˗/Kss%%%꠳s͚5\.7??Kp]rooo# "mذٳb266nllW)pwwt҃,,,FᥥL }6lؠ-N}&Nhnn~9LKKKXR& ==">OݝD]A]%t1i544&###I<</QD܋/222 @_4EW`d &$$3#44wqQk!" Q7DPP4!! ╄  !+"rD 0FdҟY_m4///66v3gdddTVV[[[|555ooм #jÇoL>=?? se0 ?hYYk\\\pRRRG͛#[<]{nNN΋/ 2rÇwZeQrb-E\\\p8{9s挧gnnnQQ߱cbbb;ѓ'O\\\|||(|?aaa۰aøqΝ̪+WO|$$$www:رc>̐G,QXM ^vjΝ|Mjvvvϟ?/ܶmڤItuuݻ'(nTTTlmm=9N@Ϭ_^,^nMW$\]]4t?]]]ؘHV0hwXokk;f̘ 6_@)R݉-Hf͚~9 IDATt֩U$ c; |P! v]E7st֩U$w6_6_6_ʢE?C++d@ 8z+VΛ7oܸq:::BҥK&"&&&YYY o544tk#\__? իi>t9_|ynnn8ٳggAui&C^|.l]X-"H /}eƌVVV0L&kiiQڵkg̘ѧyXmoovy==9s椥A(P7oޜ3gND2q`MMn AWذaCKK?@]V~ SSS.]x !III'0̢!Gխo0X-@sN@j[h Çx*733ۼy{7mڴPTJ7669r|555t}X<{lssܨ(SSÇ;;;?~#JJJD"/!d]&LMM߿n ^reذa#ݝTd`ggT$//&?p\555ZCCҷ՗/_nll݃!:_֭[oߦA)GaXXݻwoܸAw)Lo߾ӧO?~,2 Jmg{?e-K~D۷GEEҷ:_TTF_ûw>+W"""s玣#zIpp~ZZZJ577-++KJJR>IbbbBBBIIȑ#bqM58pӓ~~}g9qDƍqqq?g#CCC9Uȑ{|Oބoow\$pxe~R,s U2V\\hmmM+((Ox.455rss,X`hhhhh8wzB-999~~~'O0a©Szdԩԅoۊ+=Ғ?sLVw'E+]BȄ !? geeSvF!VXqʬ>H~q#h,===ǎ8`ddDÇ/^< CBxxz!DB=bccCٷos=?? sRRRG:vbŊȫW~'z<)X|Kv59Ξ={Μ9陛[TTwرuuΦ//&9 /_bʔ)˗/>YUUu'O>}yܱcGttt]]]*.:p/,((Xt)A@a_mڴlݺ '''77իWD/3m4 ЖHooHmm3g{уdɒwygݺu>>>-;wxxx(Dseddt֭;wϟ#ߪǓR#Bܹsssskkk?Dͼ믿 o_X,NNN:7nrJNNξ}mll;]ԭvvvϟ?W[{9exw0 p<^M6mݺu˖-7nd; " WWWPkk+?tq'}R/}%###((ܹsl?qqq~!A`{.v^5c;kڵk 򏁼ƴ}*5jTrrL&cEl!@<2?x`ѢE򅮮?.))QH$Hx~8++k׮]K,4hIHHpႛ۩Sjjj >˗/3ܢ{|0`ŗ_~YPPtR3wZww>@"dgg/^IJJʯ7ݸqce OO1c,\رcjjj@z5++;w~7T+''L2~?OSLfErrr:  @eGl6q>}dÆ m۶~zj Fx>uΝKR԰]v݈o _~a>ϥ7|~YYYuړH$UUUcƌa; 4|33cǎ <8<<<++Pخ]?vPuxE%ܽ{믿NOOokkSWW_rիhltӦMԶD" !Tmmm>|pȈnaa!][[[ >j|[Z w~w w;%>np?3Oݻ'C۔sehv m]GmMLL޿Q>}A>Bp: o|j5> _hFmv mժUʕ+ |ju'_X[o[osl 3g[1?wm{s1-mX,qMMMq .mAA+mokk;vXd23 @ @ @ @K p8۷og;T*-,,d;:lDTT@ 8~8A@ao :s AM|+ EEElM ̘1 D&r\'_6_zڎ; @O^zlO!l!l+LFp8l~>͗*99]hR =z,X >>ٙ 'Riaaaee%A@azH&(Yyڵ3f<򺕭Y 666l>%?vPu|Q]~!D$D"CCC__ߟ~]]]s-{#m޼ޛ6mZhhT*9hnn{X,={ynnnTTÝl}.|wNNN~~~le:.6W8H~ g߿;t<--zUoKK2Gaaa۷+S?sNnn;rKKQa[N8e֭ӧOW\) ***/^j*ש)))>lnn:t{=rHIJKK[[[CCC;[20;v$?kRSSO}}}\'Ooܸ %DEE^.vxү|yŰaî]F>>B0//C&QڅT2:fny 3En{ٹ)'''))LJᐮV)::ZGGgϟ?H$>okk;vX拊_MM;444//?qDnꪫ^RRJߒ|uܮ:6g} .0׿6죏>{@IW.((/::K111NNNnnnWD_|U'N<}t7ݻ׭!111ӦMHOO ######gΜyҥ}DEE-YwYn}K>I0s; S؜a.w3~~~.\5kĉBURSSKNN600 կ<Bw+ D}GՕ q{%r G'_ӧ233l^1THfVFgsa% i*,,LHH?~ Y@ 4feee׿{neMW>9Riee%p8l>׎zbرclU>>+UXX8o޼qK.B8dee)РGGv5Rn߾fhheaa!?N5ٴi|'|>ѣ̙0 pgϞp8]ѣGجZѣG 'nۇ^zԩfff H_|AWW7##g*999egg3`E}_~el{{{--͙3'--M]]B0$$y9sH$'kjjv6ڵk囘B.^(ZZZvY^^o߾ׯw92wVy 33Е?yd6lhii)--Ro/tmCCCˏ?^UUlddDRQFgBCC7oY` .TWWGe2Yppsjj*U2|---媩? !ukkˍkN ( O>M5*99Y&1υ9zݻW"WVV^x144ox#GKII 9ws׿5m4B}R{3zW^}E'''x|[[[|'_T׹s8N,ZH%%%,$IZZ׽ݷ{xx+H]]}ҥ$$%%6ѹ\իWCaW\y!DdZZZׯoiiJ>++9-&44ˋ nݺ5iҤBgyyyĤfff1fTT?Ϟ=[&Gzˁ!jkk;p@@@\꺺:j=hw^cccP(Cqsތޟ4iҤ[nuڙ?~|| AM|Q]<0aBriO>MLL bŊ?Lׯ3gbee5jԨofРAs:t(s1b~G͘1ݽqi<O,GFFx\%07lmmmmml0a<cc'Ofddꚛ2 IDAT3tXRRLC0~x*ɉ'դo\n2w9% `֭y'캘pڎ=zƍSpB333Xs=zp+5ep8{9s挧gnnnQQ߱cbbb:\K{䉋Wr_|)_$$$\pԩS555|I:zYɁ|||; Z[[={2AǏ߻woÆ ƍ;w.ukcǎv(?z/2e6_TS~~[sͭuww$IvvŋzKII_7ntD,ɡRdO2eunfe ݶmڤItuuݻ̛VmQSS9f̘ 666;vLMMp9;;?m]SoTZXXXYYvPu.? likkHHH>?7oVo5kDEEڵklg'_TנAꫝ;wtQQQ_}v^:?lc;0YdɬYtT ЄHf͚>݅bwX}}~h΍vqqYng;vԯ|2k mmmǎvPu8v%J Ñdoٍ}!44444hmm9s&c; b|aYyy˗/NѯjjjNZZZNNBabb| u?ֆ`L&+,,TSSc;z|a٬Y=zv C/_ܳguֱ6_.0a:{X0hРÇiii 2?G*effqƥKs$P|aٕ+W؎L&Qxkٲeǎu7 v 9s%fffnnn~;/%TZXXXYYvPu|-L?̎=z- S@_ѣGٳg !fff6mZt)e; l͛'M7`: @ܾ}; Ϗk?~-+@E`_u4 tSL2e[y |>vرl5'_zbժUVb; xaaaMaeeLGe1_v BJْN~`Ww޽{7)%Z[[ԔvZ++FiRiee%|`MuuuttÇ_xAm޼ޛ6mZhhT*9hnn{X,={ynnnTTÝ?ND%%%"ח}.|wNNN~~~8 T 644$%% aÆܻwO<}4""BOOo̙7or.UXl޽}ȑ#]\\jjjkfffeeʜ#%U \ȑ#l'xԩ*xyy}w͵ܱcUnjj:qĒ[N>*_rP(,**XxUׯ_~<|933sСݣ---Gzt[[#Gt̬544߿,R)l䴶޼y?X`Ç/\`jj<\*`jjjbbrٲ2KKd &$/`/ !oA @_o !_»/^6lصkר7YLMMCCCK$V]]7nPmmmTk*w۶mug/I6oL]7]̩:mii矙N&kllҢ6/:n;`jja/ {)S__… %Q^n /j^=Fkkk꧝CC&!‚*422566Z`C}}}ii)!dƌtyNNÇ^PWW' {dԩTo2ضwaD=C/=p2;}tb#GJΒ,?ckkv 8VVVC )..~^zU P<ٳgG^TWWS{.K]455¼ LFxmmmMŒ9UG#FrJp˩) eJ|h+lc...yyy/9s&##2<<ښ竩y{{嵵'Nm]]]uuKJJSc !ӧOœDDBh<믿_|y֭~c5uu> ::I*w6\g9W$} ===[[[]]] kbbbV^- VxxxLL̴i444өHooHmm3g^tc:::QQQK,yw֭[Cs玎I:w\FFO>䫯1bo]]j?֌3-Zl2v+SqO``YjUAA7A@qՊok]Qvuu`П @׎MR]H$Zf +y13r޽vN=13/}EWWƆ 'Riee%;v,Y@bcc(}"::Z 9r Ї),,7o޸qtttBK!MMMELLLjhhPؿc)6ovss344Ҳϟ?lڴI>Q p8iiitͳgr8%:ѣmllVZ#wÇW^=uTMMM33p/_Lѳsp|xdggkii?^OOoΜ9iiiu !!!͛7̙S'G"L8188XSSQ֮]+ԔrE@Ҳs}]~Ǚ;<ف}*5jTrrL&Mfuurww߻wD"ׯxbhh7Figgr9m[[[kڴi++++++n$&&ftvW M'_>l"'NhW-/tuu}qII2cD"Duo9sfr uuKvutJ㓝رLٳ?^'o㰰{mذaܸqsΥv\vw5Ggw4|+EEE }=BΝ[[[H$ŋ3믿 o7n謉X,Cqrr*((d!!!Ǐӟ4ekk.' ) "m655I&޻wO7VCCs̘1 .lll>͗~E}[zKOOVWW 𦰲JNN GnUAaayƍ# /]Dijj(bbbVCCC8::R^ڮv]r>|vcq8g2ςjӦMʇ|2]|{fh/P&޽[HϞ=5kܹs;[7UrʂO> W,Xo#d%+]vƌ}ZZZiiiϟӛ3gNZZzBaHHu}9sɑH$'N t 6ϭtڵk255%'_ܜdii~B,rԨQaaa=[ڮX"55.xT*Q&E"888dffjii1@bmm8}*TWWGGG[XX888>|ŋT͛{iӦJRȑ#wﮩٳgFEE>THTRR" }}} !۷o2w}djjwvShmll}ʕ+Æ zF&;;;:88$%%yyy455i媩Q\.|rcc Ap8<hnݺ}6UNJBݽ{ƍpNd;}Ǐ !͢!|xϟrJDD]111wqttYYYO< OKKK !汱eeeIII'ILLLHH())9rX,nװ]齆xzzϏtwR>l"'NhW-/tuu}qIII$--) 422}oL?JҊX~OK:k/_N=C>y+TPP~ga 6_|͛7͚5kʕ]WWɓ'x+W޼yS*|2%%e׮][l9qu7!Ғ^dĉԜܺ|9פI\e˨cGhkk{xx_zHZ<++KOOOQkË/2B'###kkkV^gmz3,Dϟ?{_~EZg:TZXXXYYvPu|`Ր!CW^:yyyųgJKK---G}ٲ?TWW'r\ꢩG(UTTxxxJx&Rn}ݑ#Gfff$e…ԙAtNgm=zҥ۷o)iРA?{'Wgƺ@pa ;QZZxb3g222*++í|whhh^^^[[BH]]]uuKJJ'Oq9B)))#]bEddիW}ǓŷqqqiWٳ̙3EEE~~~ǎQWWl:O>>V$ڲefϞM<8l&&&m"/oL6MCC>%22;22R[[{̙DEE-YwYn_;wttt<<|zSjjj3tN5 p8gϞeNBqttlW~]1:I_|A}X,~9ҵn666VzQa^|x}d%+]vƌ};ZZZiiiϟӛ3gNZZ IDATzBaHHu}9sɑH$'N T8Dhhhyyǫ:'477'%%YZZ߿\vZ l޴iBCCR)UxGGGssݻwbٳsssLMM|qH$*))D۷wsrr255~YO7hiiQwt{O[[{נ:&Tr"-Kd`ggT$//&?p\555ZCCҷ՗/_nllp5kL6MSS*((Y焐SNd}>}O}ʄj}jժ]v={Ν;SPɉ0, >ȉ',//E ]]]?~\RRD"D"IKKRpذa+WЭ$^^^&Mr˖-=ŋÇ(Dm۶P>***!.9bj~~~{566 YYY >|O?y{{BqDEEL=r E={vǮzt~uuu]]]wc ,Rzo޼y::: 766wSB,,,rMMM##\cc㪪 =חRbȟy\T?; S,h36*&% JpK(ウ% nf,ZpL̒@ARrA@@Fdqo>03 rY^Ͽ=,s'{NZZZ||[=A)=I&t:IzCv:::)))}݆ ϟm62\)"-KlF"͛U=Zzm۶]|YK$ZZZ|'|˰e˖UTThjj|رcsׯϚ5KJ>>>[ ZTTT qww￷Oȱtiii ss5kXYY}jffBnSJĭ[lpL)..>}#.]T/.+L1(((MMM'33I"l$b0/^ /[͙3ŋϞ={===G(D/ڵk}LJ4zh##Y0%%EWWXʌ 8`gg'"1bĈ;w}VT Q<:||Kȑ#һUWWgK___}dԨQƍk@ ҵ9sZ$_?,g0{ x<oRNHT0 :!008333**j§/^LIIym ff&E? r++鑈(_?ٳ---Y<zAZZZssezO65i4/^윞~OO~!22RYYYҌ^|$BAUUU[lͭ/**ڱcܹs|…ꌌ R111?sMMnmm ClMƚ|MDD sեK;w6;;?eVZU__/aT}/}%gvF<"$ *)9"##.]i&__ߍ7 m۶-22rÆ umcc#] :bŊSn߾]//B:~T)u唔zڵꦦ/exccc@@kddtPȲ, q;wnzzׯ-[6o޼_~EzB*11ɓ'P_wm_yذaG}?())ȑ#˖-{I?a'44T44kZ[[/\Pd'>;;[ ?8q"ZKg%%ǯ]VWWH-#E9ĢuiPB ?TtIoo/>yDϟ?iҤo}<oA\|Y _?M ~񔔔_>sb?MAHzDlmmd; @J`ŋ|YRNHRo#0> ɗ>uJH=aT#D%*//7lgTKH=TUUj䵪KH8aT$J S <()): 0-ҫ֯_O>aMj:uppmD---0*y!QIvx+U={SUUEu !GQ{ʕ+ÇWUU߿ŊC ~¨Gp@aJTT͎:|(|СuQ zǎ{:~۷o߻wohhmۨ&[[[eee|q0`]aÆQt?$_6VyfJ<|p(@300ե:|/Q@?ӎz/=ɗ^EMѤW+++[~ŋ{%(Ao믏9ܜpB#.Axq```BBBKK5k dÇ733:Ϟ=200G >;^yyڵk'LpI>f͚hCCCC.133[f͔)SzDTT͎: ***طo*((L0rr֖mNNm---n,w˗v޽rݶm| FhZq711Qqr;|pǭ- B2n 'zǺu뢣>dɒIO||c !C| qsWǸ3.}۷o߻wohhܙtQ jjjT oP A(((ſJW+]+ote\;44q(7;;qJj7ԩS!!!ѭC K ?#UI>$}$1` T244(..{w.\f-Zԕ=SwXZZ#/5j0|++EɽE(__l-%%%_5yɓ9` w0$_ҽ{Ξ={ҥT rʕ~i޼yH@|p@OˋF:=d|dzgϪ pt!CXZZRdUq6Ku !Ѓ|AH $_z/000QG!5 7nܸ(@̟?_[[Ԕ@J4@@u |AH $_ٳ*y|l6ĉT}/=KhG:%H $_zʕ+W֮]O?Q}}}KKK===rݘ[nQ7fgg{zzR o޼a|Ձ@Ce133KHH: Ժ76})u,>fee'<,766VWW5kVxx86IMM5k6''?ӣ͛A4557n\jjG b#+9[-[hK.`0V^ަC)%.]hl6[J}OS]]ݔ_~ښGu |~l֭SLTE]vN*..޲e Y^__#??g |_~ejjjW\1003gNrrrݿ8y?gΜ:eeecƌٰa wr M}6..Դd7o*** w؊b;vLx{ &ȾÇ^w0!_q܈[[f |}} |}} =<<].FwOT/_sԩ/?r{ƏO^akk+Z}iEFF&%%]pAKKKzNWW`ܽ{C yk\]] puu=zZutt>:,ފ oo'Ncǎ^I ?^kVƳgrrrڼW/Rnnncc9ykmm-iׄ\xQՎsέ/..&N4镕</77N:UEӧ2|ڇ* Xjծ]>,_|pu; =5jyM^?"G[jjmΞ=;nܸ'㓗Tcǎ;Ɔ Ǐ~COMM500pa+ ̆_ 2DbhhhPPׯ<=zG:!@߳'NPuH*033SQQ%ooݺf \EOXvO?ddd$7SS#F\t_\.WJAkiieddF"S2/^Եi͂C? 0BĨQ*++ѣGϢKvvvĬ;<ĉeee#F1bAGiS>!!!66}ZA?óg϶TTT?G:iii -**>{W_}a >ӳg^reMMMo߾%O8&i4/^윞~OO~!22RYYYR/_tpppwwwqqi!7V.\WLL?\SSӦĉW^M-c+ww_~e͚527|QWW'ZO8Q>$_H{{KnڴwƍdWaa!Nwrr:sLMMM@@#X\]]mll|Y^hhۮ]<<}ƍ˩zՁ@_7_zow͔F 痗w}sDwVZZ:rA|!:tGIuD ɗ^EyzHccy6; t />;***[n%߾}{q}'eeeC{_`o+) Hu@<}(zϯ:R__Ou(zÉ-ΝÇH|AEEQ@{w۷StgϞUUUR `Û/5j2Q!ChjjREoSRRRSS:ަ2~+**>bX;w{9$9ܳgW_}cc> eddPt@`aaѾ|ر}`;~HHt/剖K,YhUQ@1lذlӎ@ /,ԩS7o&/,,--̨/ҥKĿi{ $_Cppi_t:ùy&AMMM4qƍ*QCC!߿tRCCC5557oagg矷,ZhggfOa+]]ݔ)a MbB,)É:5W=!z8ǣh~cƌQVV8qTo!B IDATf .El6ԩS䵙YBB]~$//OʮS^/]u}oo.A/ӧOWSSKNNr劁9sp9sԉ(++3f̆ TUUqu6>}ȑ#yyy2FuVL&Y>|-[,%lB, N9JGUDU]hѵkמ?~ԩbaG={lݺuʔ)]Q"ߔ?իWDH0 U'NVT`Æ .LJJsqqkjjRyHڰaW^mdd!i5kp8;99 >&!!aڴi2)$ܼѣGvWB,sJ"ǪZ[[;VSSs7\92cƌw}wnnnGmgRR)y秤TWWGӧľ}-((544 <?1bÇϥɓvvvᵵd9ڻw=mp444,,,t(:| tttjkk>b̒Ȇ555666s)w|ӧO=zdŋWUU҃oYYYrrOiiÇڔw}`55.vEt=7 $ͱj||{ァAıc<&&&mݻ ]fhhx z٢5JJJ}]6??)44}TW\ >)((ݱcDZcvrt(rsskkkgΜ{ʕիW777nݺܛ7oٳGUHP [[[Bӧ6LJJp႖:d?3gΔ;Ȱ244}-wBҗ볐sxX˗:u*//O-^YY{6t:$--_ڵkX+V裏?K.yښ~ss#G9sF O]\\ƏrJ-CBBLLLE;RaŊ ,=zʕ+߿_=yGSSSjjjpp1c8,K*_+|Qh,y;zhmSSSmvYI{ْ~~w^A(**~ZIҗ볐slͭvtt444444;wn}}}qq1tҤIN'rܩSJNJ+++B__HGGGx[^^'/25 k /=eܹ˖-khFFF?haJJ> 8`gg'}QF7̙3mʅ tH]]6/#GX,_t,;y8{Ut󀀀m7{k׮]vᘘTWW>}zڴi***mj***v$SS#F\t_\.Wq{ZZZrW̌F _%qNzYNNNUUUgc2y5kشD~={6F߿odϿ())gff/^URTTtvv޽{7Z[[ݻWYYIDbb"yJ RVV7o^DDDSSSyyӧle3$_1wׯ_/[l޼yeee˥4ILL|ɁTݻwַ~~~&NhnnN> իWm֦… ߼y#K!}t8;ةxlvRR۷̾[/Bz2*FȘ9sщ'6nܸa ^z3wTUUmlltuuGIٳ_~=k֬5 tzm% ruu ֶiMY{nnnv O/_NIIRARSS2eʒ%KV\٣uכΝ;W_رXOÛ/=HL͛)GT_b Y'@c0%%%TG!^_b YtO$77pܹI&t:r\^zFsss:;;|Ą,>},J"^[+$==e˖HEt?OOϓ'Osiii͜9}bvb ,NRݻb >tĈ.]*e2ꛛkiieddhfff***[lF{)Y.G G[N9s\xٳgg(((.\)---..ݝF Y%QoJ^HP#00̬Mff&ř3gt{7n޻w311166::tC```qqqfffTT PVV7o^DDDSSSyyӧIRoV (UgaÆ=yTTTpH <:f;Fu !0婩Icff;Ȃf:udY& SsΝ˗gd9dX<ˋ,1cFZZY?~|U&J'&&>~۷.\PWW/**"MMMGasIz-~KK˓'O׹(IVҺdL1c ZZZ+++722ڸq.]TRRbkkkjjf͚aÆ555Q&?***#o,iq? `Eu |)W^]fMRRRG<OWWݻmQQd ---t:ƍjllTSSv$6gMER5=~H򥳝K!:meY,'ZVV&=[2;vbMM y;rȫWoۦM322,eqZZZ=z@`@`S믿QUU]|yGՎ’b&IĤIB:^YYrss\ԩS%EabbBN>](--->>֭[ uuuGl2Vҹo+ezzAUUUǎ,%)S2G+++B__HGGGx+PH:''#GHH xׯ_~=Q@u LMMGA~BrR^577ȐŤF=}]p233KKKHQQwXwJ:;I֕xdlff&y?O>]z;$@Č3ttt.\pq///1wm(((XZZQt?$_(_xq)w}ƍ{UVVKy"""˅q\[[[MM͂]WȿT loW:%e"bIZ^ŋSRR?m6sss!ccDH>>>AAAnrss>$_mccsMCCCvڥQWWG˗SRR RSS2eʒ%KV\I+VL:uyyyt''')JKKg̘ ws!)Du1Y&m۶ɓ'6ٳ/M K<<< -ZDEkoz !D IxxM¨E~,~ե:<:zT"c0'NX`],Yi&'''Fu80@ȼ 6=z+V9sץW!?+Aܰ}~о0t?c֬Y񇤚bǎ?Q?(())[NI̔`0k׮$~Nh"C ,Y)h4VOLfdd8::Ο?/2e @ @Op8;v8x ձtLYYYEEe7/q%N99rD055555ur/=$<((ֶ#~ &"Zheek.A{7 @̋öm o?fXdeƌv3gA@7_;;ݻwHiC`pquuh?Ձ|f=zvDY 6`B_111TׯlY6ѡ:~x! }}}KKK===cݺu֭:  @B!ҫA4@ ?SNQEԤ133KHHT]nz6)gώ4iՁ@njff;c5y02iҤ5kL6@G>|f=zT!..hhhXXXr#""LLLlmm㛛,+88>NJTccà ={צ?Dpm}˗/ >|8Ձ@Û/#77N:Macc9ykmmM~FD y:vt |||N:ҒӔ ann!ZhffK޺uf ?#$/b2s1c  .?~KAaa!y{uLMMGqҥq\&٩IF=}p233KKKHQQwXD y[ZZu{7n޻wrСřQQQ˗/6xbJJϷmfnn`0r[nܹsg3+))gff/^9sFJb'EDbbbll,9y"""˅;${| IDATq\[[[MM͂$aVVVYYYdDJV2$_nݺloooP77]viiiyxxiootM6nܸQX۶m'O6lٳg-靊*::߷~z--u\]]mlln޼)O|rJJ YСCjjjSLYdʕ+B:bŊSn߾]ءWaa!NwrrRD%.;@/b't ]xqG<`8qbrɓǏw!F=555#F>|8. $x9pѣϟنo~Ͽ|r||… {"<Eg͚Lu,Пhkk94m˝^z5mڴGGǞ:r޽eee$_@-rrdɒ%K( J}}}䦨hiiIu# |,ohhp8EEEb[FDD777K׷CRt:ٳdW...bc#K+;;;):sLcc @x)1LMMͅ >},lb%$wDзgDDDGu #:diiyO?ܹst}Yd2Y,Vqq1"f̘={&v,\\\ϟ_XXnjj7H0ԋ/jkk?ydǏۼk׮X[[GDDTUUV`2?sIIΝ;;\.##JKKuVCCC]]ۃ$ՔS&Mf͚iӦQSS#F\t_\.L%enn![TTTrss[nl2""0Vww+VΝS?~ӧGEE +DDDtGG7ot\ җEXAR?fff4%+ӧO[*MMM'33I8_ՐR I5% \%_xq)w}ƍ{UVVXmСřQQQ˗/UVV2j```]]݉'=}v=nܸ}˖-GhuO?ihh,X%~͛XVV￟:uJRd͈r>uuu\.VSS ))IbJֆT/&((5((H[[͛뇆ڵKKKãNjK.ݴiƍUXXHӝ$zڵ$%% :tɒ%VZr%k߼ŋWTT$%%-^wޑRBBѣ9rI"C666[lٲe:6eʔ%K\,aaa+V:u݅EWCJ6r_hފ)****++:gkk[__Ou 0yİ옘;Ԓ|}}7oLI<ƏD!W0CqAozgQW9;;h4){ @B\~}ڵ T=BOOR__@Cܿ?&&&==@G]6;;LJ@zYWr]lߕr8==> 5k֌3fĈ_T?|!.f̙Cu |~O@[[[__?$$D|;\FOЋVXADbb"Ձ@o"bƍT(,,400^O?p8w)--]|g}F3LU\\r??3fxgϞVl5~7255; ŋO<ٿ6oڵk>>>:::UUU2L&(//O(NNN˖-+))IKK0aHZU//͛7ϟ722"_|_z#=RN:~H*$_$_u >|ZZZC 65y<ݻwۢ" &˳AKK NqVknnи}6y{q+++ZX_J`˖-&LPSSspDo߾=U455Ν_ʐͷn*}Rjjj'#)"eU%%_jjj [[[+G||l||ߪٳgΝA={,C} ;vݺuK$uP(,++Ύfёz4 sBǎ[|yeeeرcԨQׯ_DGuuuIE+(ڳf ׯ_?y$]J;wZZZttt ˼AFFFNNNonhhP__jpss[` BCC׬Y|9eݝR-JIIINN#ܾ};33sرSLa;}BO> ;wd;PBWӧO_{5.K=yHDuuAl2f̘_,+HJuppPmOV={ni&$er8>Lq}||̙3JJGСCVt44 3_zYMM;}>\__PHR Ir%Ÿ}\m{Ɏq5P(Ov) ^ȪZ1ꕞۓWz2nO^ɸJ_CQQQʸyyy3VW |Pe˖/A 0O&Lv\kV\rJc> U9|իǏ_VVp̙# Yx؂WMKYYڵk/\8w\ /$_TnĈ+WԼpBpp0.<xE &ǪUvٓ׬Ko;P#G:t(@}]U)..Ȱvqqa;}"̌XOmGbmmrJd^8@v !BH/* ! 333SSSP!\V .p8}ہ G/}NAAܹsnjn:cIOO 9uہ|C#F:TJw` >|FwbtGZ[[鎎?^SS诿BwtԩZZZh{fs֦;zɿ:tի~tG_uC ;w Bc> ^pڳgѣG[ZZ8ΨQ&Lܼk.&{5000$$D,522;3gΜ166;:{?+W 555tG^{5cƌy ђfff"(gOqntٳg+LJ!!!Jݸq#C۹s2$_>S ɗC1v;w6Cݻw޽۱Ν;/.\;!Ж ~w/^PQۊ ̏믿U P95: ܳQ^e ^CwڴitG se1\B2,#Ak֬믿2ݶmU3 v3d7QF͙3ں]MCCC~bcc2d^8}4!Ceh{e[Z\eȒ0\BDqq1? m=zpYqqmn{e۞>}JݳgmnݪtիW3=r=@ k Baxxc{h>hҥ5xxx(ԩSn;~xVZXX(ݖ9"x4tuu׭[wÇIII7G@AOZr;w߾}; ɉ(+V兄uH!zzzFa~:)qӧO]d ہ4A/Z*Rmx Gikk3X^ @|PH$ϯf;|PѣGAll,ہ@_ !BxۑZ}lj+_TU~zHH_v fffl}n;P8tRcv :4//OSS@!>MMMmG* !BH(C$WWWuH(ѣ 66@C@|P! 跦M;f6!*cƌAp2LMM:IloB@|P!$_Tp8ϟg;)H_]]v !cǎ /@C@U222BBBN8v &$_T$.._e;x <}T lɗWӧَVaaQкro-LMM\{FFAEFuJU1bDpp7d9ΥK777_lYfffZJ.]p:~ʎRnnn?#]?@GէAo^`MTTMWO\ޝ;w3!l @R0ٳg )5NWNw;` ʎ6777.""'N裏qʔ)zzz)))?g̘]wwkREEE3f̨SYYoZJWWnĭ[K$`ŋǎSX?##CCCCVV|>;vl̘1]_C+<P˩? {ѣG ƍxT3!la%%%JaXU~; k;dȐm۶uc!bƍ'NV+8eP'$_Xmcc⒔BDhhhqqqhhe@@kabbpnݺ'NZ[[߿*{qssxwޥ'LPZZJABpNNN_h߾}<`Μ9Nӧ[[[gffU*&&fҤI^*?I\j՜9s]\\&Ltҵk677c(;l2++h#x7(y IDATlr֭۷oq9$=zǏwoii~Ν~Mv… *++ x?3DNpp{ێΝ+~SéEʕ+ϟ?5tP''ӧOOlذu֕ǎ;qJNN׮]Y__OĩS޽{srr T'O{Æ +V_~kllQWW_|;;d!gMG)wCɗ~&44ʕ+))){ݷo_LL A111111剉N?~m_wٲeKRRᇬ,P(;W\\lllEnݺڶmX,NLL2d]HA|vڽ{wWmʕ+U>2١cǎ8pյݮV; ⫯.| Çݛ?|{qqqq@)))Vnll7 R|||G-v C BV~||A½{577>LJ< _|ڵk O^PP?lٲeٲeTY[}]^]$ܹs }}\j7>>ёڶoOx}XXXʙż̳N9v%y"+;3gΤ զ_|Iz*I'NՔx7o_N}땏ytx<֭[CihhR#Fz*gB)w@zAffflWMMMIy^xАOOOKKKKK˙3g644Ȯ.7nrE"D")((] $I|ʔ)]1cƌ9ܹs7oޔjw߾.]+V fݝcwQC:::oَk׮ݻw?~ܕ di1?+:HmYYYv>k) /jE$+tttdzq@ АJYYY!!!}]oÆ tR?b1 JAfeeu%$;;;C\vG}mnnwwwή֖]VSN566pB|||PPȑ#E"maaaeewjbbbmmM2A@ VO?T~zNjY :SkȑF:{lr_fC =..΄b^ςYwحxEf8q:εk׮]nccSSSsԩɓ'贫Sѭ t>kT /P(,++Ύ9::P{.//7o]\\z ΖJO>Cώ;nݺ%B֞5kVtttsssUU]^,˞ȌՊ+"""nܸ'+;vAms8Ç_x'33͛_?=<<.],_/\PSS%|\\_[[ۮرc-[FUǕ+Wv1>hi2رcUS]zuΝ]&IUm\]K,t:;حxEf86mZUUw};p877/_( ]+A9sz ]N}֨3$_-X`Æ k֬ʃJJJ\ٳgkkkl"oJP"""|}}#""QTT 't!9rDOOoĉ_xqwr[h͛>̭JJJΝrennn_1s̿k…fͪeI.Μ9/0;z… 'L III+o۶-+++--tuut1&M4gΜ[077߿OݕlԩTé斗Gڵk̖/_>vX]QQQ<]vUPx&(y)gA)=Ǯǣ/2ánuؑɈ#xw믷~cMOL˗SSS*tgMoD]^Y޺Zbܹ.\8۱@{cV(R&..w]zz5kT7o677g;`Ǯ]oGFF Ç733x+_={|olE2ڷoq _СCFZzuee%KOvi_BCC?CViG=1">>ݢE&O܋cQ<F-$$d޽"ǎ ޼ys_x=b :+|ܼ(h'۶mC# ]\\{@ X~oM7kEr1֟V ,$_Xv H0aBr;wzxxUݵqF;;;$%£8~V9 +} /ʗ'O޸qcܹ'###$$ĉJt WWWkk˞޽K766&&&O0ThrmmP(>|SQQQvwޜԶVIIIӦM322233۵kWDEEM>YOvvua* Hwܻ+S$tT*KD"sQ eݺu7oެ^~=U|~YYD" ׮];uԴ4DRTT#Uttٳgdff~Te///OO_z2ڑÉ'{SZFFF999RbeeUXXHdMMfii)u>8ARX9ҝut1Nj/~7އ 2.\v0"HLLLd+--577J$IxH<''Ԕ$V.[ZZsssxGGG$dGDDP_hH7Umm8ƍe5mݺ$f##* Hwܻ+Ơ://cvȷzɓnZt{}OOOKKKKK˙3g644QGǍGmp\H$H b /谠ޞڝ4iR^^^cc#uч U>eʔ J7qjjjrr… UG8qy``'Rs O1`kJaebVxܻ+૯GQxE mo...VQڅbkk;lذK.C,x< ttt 7n]]];;;C\*Eao*Z;3f̸xGF(gœ9s;>zYaZuLW(?GgLtwzn;vlppF0N(v|oXXXvvT*}ٳg:ٱcGzzz[[ۭ[D"AgΜIHH<<|^zuoFk2]:twzC$1Oǎ[bEpp0]|>_~111QO`/5Ua+k׮۷Ǒ* ^vv<(Ν;lZu֪bfff* $_@ݪ\\\~ᇬӗaK+@ێTΝ;ׯ_ӦMc;` /*/* @?WXX\ꉧ+ɓ'ٍ+3Dl}//%$[[[َ/>v !'NZ[[߿*{qssxwޥ'LPZZڮZP8|p''"Y}x<9sN:EZZZUSg=\DҭJ'###M6~N>}uff&C/w566𨫫/|]rr©;bbb&M$;3H`ۺuo޼YQQ~z2DD]vԩiiiѣG:իWy<.U~̙x… C )--mmmYsjjĉu.n"tmMxoFqqqkk맟~iVVVV5jԥK]\\lmmW\Y^^~777+Qʟ Ϟ=ѹu3Wv"b۶ml}/jq%>D"oniiT*%IEFFR999$IrtdFDD(L"޽n|IKw;g ?mn, *++߸qcWuVjСC#^vg߆  3WH@i| +SVPVV7nUrE"D")((tRDPSLJKKKJJqFccc}}XMEs \cHǶ }7333}||8qbWHmYYYve7 1[bWTTTJJʈ#bbXW*!!!IIIlmm FB W *q8Rg477gggWTTxyy$IАJVSO=\^w'Bn=Φ6={VVV6e;%&1uTcc .1ܓǨ@C@UJKKәijjeggKҧO={ώ;nݺ%8sLBBAڳf͊nnn=^,?u1''PM(٩:t.a" ѭ&{'Olڴܼww?(+Vq㆟|͎1Z|y^^ުU'O9s>$_add䔑\?**o톆A\|955p=='Ο?T!ݷoߢE7o/0((zyy1T:uI2 pzOW&iӦ?~~m׃Wb$ dܹ\.WfǘXŋ@qzx}2t{wK.QOSc_}۱>/HB:z޼ylD"177?~'W޽sNZeeȑ#GQQQv,pZQ.v ʸs2/ZXX̞=@jԨQCmmm ˩`|/_.j]Hljjb; x9 Vx4---lGV 000`; uc; uf; ;{xxl۶ڵk/lԩlÇ))) M& (..vppSH( .ud˗/g#4x ^EEɓ'm] @{QQQ/^@z/޽{َ$_ѕ+WvB-HՕ+W:W?~ѣG&&&ÇWuHRv/x@paU IHH`;`n;PҸ/^ uz^^ޠAz/4hQJ#@ 8y$QtPOOӧmWDj+_ajj`ffA7nhggWyÕ/XlY^^իە766&&&O0 Xmcc⒔BUӦM?~|XXXUUA111&MuH޽{srrdm޽K Bssɓ'>>;vHOOokkuH$ eee111޲&/^LMM}ɦMͩ+VDDDܸqϯQikkϜ9S(VVV ͬ-J>}zY>N 3g$$$PΚ5+::JzXb``P\\,1''J0T.n@|PѣG\Օ@@%?.:Ԯ<**o톆A8pm6l ]fM80~򀀀srn;zh''>a:FFFNNN}*˗SSS Gӛ8q/^Lr}-ZyJJJ\C`\vu(}U'>ۺu-[vޭt'|>?**j޼yI$ssǏJx{Õ/}-,,fϞ݆ݓJ/_NJJ3g*`;hhĈm?>y]vyzz"B:$_XsbX>ϟ?|@mG055upp033c;]•/j5c O? / ;;ӧO՜秦*\ p5 +@ dee$$$:Ԩ[$[[[{R }HJYYY\\/v VMMM'Npuu޿]]U޽K766&&&O0Ta hBCCCCC---Br~-ՕҥK6og֭|>?22޽{KsWW׀V劊>}ufffNU맶V(>)))EEE}x<9s:u* )DW.N^:"H ̝;@@HP#www ^v 5/l*!򪪪ڕ[͛ׯy</++H$aaaAAATڵkN&H=zp8Ֆ.]:{쒒L[[?y,[[oP/^hdd/⭷ުWؼk׮XxҤIя?rkkm۶u\VVVtõ@׏… ƌKס^d5Ϝ9s/^\paȐ! WZGt5+tS^^Nہ@CE|x п޽ -[J$~---577J$IxH<''Ԕ$V.f==7oFdNȼxK,1009s.j汱]Y72"_&==۷oSwKP5e=DDD({NWC3YMtृ @?7PAAAMM1n8D"DRPP ;c&{{{jwҤIAAA hל!իW۷C; ˖-I?9~ϟߵĉEVXLl躢vL";tƍzoiu]M#DG/vذa.]*X,R fee1wNAA{ @@e^hhhHNCmkk_hѯz9e͓UxLboo_VVSQQ"r===Nk"@׏)))uE|!+{Jss{vvvEElPtЕwq@hjjeggKҧO={ώ;nݺ%XMKKC(eggx{{3蘓C B Ǐ?v+++;6hǎF~zxxH$:z+Ñw].:thkkϚ5K(VVV^~ɓt=P5d... Z;t5+ /)""7"")##~TT ^nnn ,ذaChh5k *))r^^^t^vZZZ_dŋ%I̛7:99y޼y ASSbE#G=)<<<<<#GM8q/ \}-ZyfY}`CM0KCwI$k~wyX@'@?pNSG444b>  @/;zhIUUj)~!+Dm+% *GFw9R G 2x.q{GH/xq~~G:$_ ?**j֙t Ç;99%%%jPPЁΟ?oXZZzxx iӦڵa.#4H> ͛7U())>|8s'֭swwyfEEr$IXXXPPUvکSI$G)VaKΞ=$33?go4ԋ/=x/x뭷6oڵk+V0664iRttǏհ2<ʪy// 3FWWn"tRϟO##T|Haiiv |P]>:tСC  0)))jJ$~---577J$IxH<''Ԕ$V.j---n||#p,3Jdxx1cn޼)Y/^?~ɒ%3gU2T72OIOOTݻ/ J|6lKJ}7nKe t۸8ۮ\R$InٲE7nP!j8$I@|_D"0`dzӓpK'IG̙3JJBVq P.]#J1n_jt[P{W/*ޫ#bmmmt5{pO4bܾ?mݻt3f(իJ Qmllm٣tM6)^HJMM͞={˿ q͙3 J.ADJJmnt[ۊb)cNXf)I9taShۜV.t+7բMKGN%սuwZZY[Ceio>a-s_ŽwsX|G ӦMۺuŋ d/@.acc}E}x'`@vjjj""""##߼yCĂ n޼Mk@2gfXIIILSVV7ߌ9rXyxwz*##@ )++=ydL;{աC;,HKZZڵkO<)6WMMM]]]!a@Z3˭>'t@477gddx</RIXZZ2wx@LG|ژz /mmmwt [X|)@@Ţ*:o޼%K~w|>_@Khgggkk{]--]Nݞy?ӿd 455֭[t\Emmm{{;U!/^9***jܸq W^#&^zU (**:;;kjj˘S/477SΘ1CAA*MMMT/VTT=w_E:l0i=rH}}=U.޽{rwءJe˖Zܰ0uuuܵkx<ܨ(MMM+VP^xQKK*w'U;wFAkkk[UUESN0*7??_[[[uGUQQAˑ#G+q][[[T𮋉 زeKhh(ӱ@f yLSSSllllll_VX!ƵkJ\w˖-4u/^Lқ{Nr4/Ν{nŗ7n|*oY|yM]3 ?~LSnII M]޾}KDWoD} ɤoy̘1JJJTC _1v؅ fffxk/3gά}h.^.Ͷ ޼yCK]uׯ_[\eee;v5FS7,,fMݨF\ hv6 >۷[[[rl6M_ff AyyyHnyy9M.<릤H\ o͚5NJJ9s&AW\ٽ{w~~>A6m_ ,, @***222244|ӱ@mGL2dsnn? 6w_7dȐŋp8[rcǎ ѱUG%,rrrnnnKJJpZ'@t ̗se:0ᶣhȐ!...LG}HKZZڵkO`iit x@111VVVL_/R) a@:::$t L2%**jܸqLLb cp a@?xȑl6A4557nܝ;wf544Pu/[@EE$$$䯿"b;M={v^t钢b|}}眜>NDiiرc)++VVV_/N8l"!Ӈyi–x*hF/qw&Ymii9{ٷ~!k<[zu7:7ra]UU;v`"b˖-SLQw9 IDAT]/ceeه!f_ .urr.\_J``mZ[[{THo(A<+VSD5449sFUUv'Klwww<==8m/{{ׯ_```D>ϙ3GC:T\\|Y21,,lڵ999MMM!!!Gm۶)))¬3gDGGiii n߾ɓ;vxgϞUUU UfeeΚ5+++~ضmL_|={۷sbIV ;"Svvv,0agg'H~|E###oܸAUlg֬Y>oYW:thTTč OEGAci…={:dԨQ pqqY`1cV\WcƌYb嗦;w;aժU] jt_1zh :+K~3f };w\r,[?,qk֬AɅ}VISQ{ɓ' mllXjUQQ;~]]CusMJJJǏ711 LHHOzj]dԩ䃾~EEʪZdܹs I&l6lmm)`mmM>5HKKK,;;[ ';C#BZ݄ŗuM7`ʝ;w>CGiJ#D__>f.k 1%֭[,ʊf*h}X,+wޥnxڵk;J3f/xUcccfVXqٳg0zq]|C zz1 O>}G觢1(>Rrgɓ 8qℰ}\\ܙ3gD,6͙3'!!!!!ĤӦMSRRPRNNaff6bĈ[n O/BCC#%%ETY,pX7OonO/0 3:|?_~%,[i/7IJJM$'=y~;ayF,[oiϞ=&b=z͛+VHNN"##?-Zjժ&bX{-[ڵknnnmmmtnCA*1rTdcQ<7nܨJIIn﫫;8q.zlѬ7(̙3Ι3b8p@;Giii_wuuOMMmoou)Qrrr+VصkWRRR[[[nnnEEA/^$s tIQQq޼yMMMeeeϟ^-77t??RiiUC``"""LLLbbb;\W 뮎ZX!6$: N; p8 .1Yf'''w(֡C HIIQSS#wܻw-Xɭ4$rCCm۶Z|yzzzii)AOB;XhYxqEEܹs߾}|y敖޽{ٙŋ?~aK/>==] 5ĉ-,,ܐF޼yӡz L:u…sO(t9:xN8|ɓ' 驭ӹ;RRR: գ;SVV'bΜ9o߾'啟f;-L%((5((HSSƦ{dܹSCCÃ\޺}իWi tDZcTTTLrJCMMM` ?x[^j󓓓O]pAl?Elk~~~%%%6l 9-,,^^^d3|~NNNyy9MHNNNK,)**wQVVﴳ/ܸqCUU@~bk())eV^M>AƊqu 222)۴iؘ %f͚c@P__eCCö6@n:@`llW_-m6UUUrVppuAhh---FuuuO>-"7ݿ~ZݷlB3Å OQYǏg:{2\~=88N6/>>|PPPzz+W;ɍT!Q]'Ai...cǎ_peˮ\"Z|؏bkijj:99:u x///|nngJC"/7>~+u˱S?~<+/AVVVccpԩSөNu;|͛7 ﴃDOO &=ڵk¬)SHUk͚5Νkmmt钾>yAϞ=#o`!dr+0;woZիW[.,,>.ǾhѢ~ח̺Q,--}pm ^qq1QbA a@EJ?ʲ2mmm==>o|-ZXXXz!)U/]^!On :wZWW_f5k=|M8q?|4bIvOJ7k߽{ۛ>.Ǿr^s΁\\\ -ĉ9SllI_dbH{{e˖mܸgdu/_޶m Z fl6;<>ѣG_ݻlѣG o;vLxV7}_599yڴiL?>wiR{{Itt4( Hc!RMVVVzjiǢV\駟_o޼/ܿ?ӱ@|Ǐ:]@>|x̘1M2dΝ;kwXZZ~q9r.kk먨(lֲ:w\_Q 0sEtѴ6f ?;u>gӦMӁl?uTiQ.:߷m2bܹӦM_֯_uV]0FFF4[Ж-[͙Wϗۇsե`1eP#o%!لrrr[:2d4n.F= .ill={kkkt.joop<==>}J744={S^^.WZ5d33,YRTTt=LigfOMMM7odddtًQvv@ /(( +Z#oU};c2F2~xweJxnVVoUkk`AtSYY? RRR~mmmzzz?)As)))aX\.ՕSѣG|˗/|Q._vXZZZSSNNN& sVVV6lpuujMfsUSSQGGG]`|'dɥKN8q޽#GK%\x΅Ŷ :F: ,6Ng @p.3_o>&QVVm۶UUUdaJ}}}aa!!bҤId"ͮYYY<Oi4haaA~:uWCCǏ .S*έIuh^7_?~@@)S{2e0788ڵkwEQ`΅Ŷ!fubcWMOg a֭{-QԐ!CՙBmJJJLG!;׮]:>G 1֭[)oaaBCO477WRR" <|JYYܜbx 9=T؋֨\G}Go޼ ˣeС z{{'&&={ݽ \*Qtbg=1KO|`jkk:wUCC#$$۷]V߽{Y7Ν;7%%ҥKd:ϟ*֭[7k֬~?~˗ ..}g}p‚ 07lXZZjmm-%Ξ=ࠦ6y䂂 VWW9… ϟ?O&xxxPei\@R͛TrgΜijj_VVe!!!f266NNN)v hii-Z\.<>>^:&:thԩܔ55&Hŋ pqq*YRRa2pB>EΘ1#11䔗whiɒ%EEEp8HZZZnܸZPP@]pA4`delldU]y`9رcZ[[kmmeFFF]7nܭ[̼ $G)PSSK~Zz5}T$,H˳gϢݻ'6oǂ==v@p#G V6D]cc #;,PMŗ6NCt bvgޤ1XO>+((e˖q#G䪫ɏT~6nHB3 x^JOOH7UnVVVUUՒ%K) I&l6geex<[[[=&&&ӧ cbb>|PWW nRi\N@:ץ7iVةarr+h2eJwhmmM>5HKKKQ5k899\tI__Ɔ&f###Ν;_nڴ믿f:p 3FABx4W-,,444RRR X/^g455;88899 2KNNb7@7tsCMMMaa:tdcoA3fҺqƩSc ` 3]]]SSS_~}errr+VصkWRRR[[[nnnEEA/^ݻw̘1O<{  ?v$SSNMKK{u_ w5jS@'t\mm%2A{{{mm-QZkkk}}=QZcccSSQ΢EN<)}y???Ç3g"S0dddDGGǿyX@TTTo'a Yc) IDATEGGijj2L 2D]](dM^^^EE(dMIIIQQ(d&33Sln@@իe $/^X|1c\t,ǰ ]͋g: 666njrJyyyهISSSFF |`0mG]>|(BuZt;V^_Gf¶oN@Ѕ1|}m޼ޓ}$VVVΝ}=Hqqq=j;cYj秦`$[l177g0 ;_;wKCCٳg&O\PP@Nj011inn& s3gqСS LIIQSSkhh ",,,--MX744ޞxzz>}L ӛ6mڹsnBill={kkk;(Qd666999ppϓ>>>yyy>>>T:r읛vY Y[[t %GLRkiiy龾3fHLL999`ժUONN633ۿ?Y;6//u޽FII)77,zj266VX|///2ŋIII&&&ʝspp,))qvvްa}b%iɒ%EEEp8N/^XTTr UUՂ2… TDugvɓ'Ap8 Af'%%&677=zx)rE p8򹾾^AAT mܸLTUUMII!tX&F)΋/|>_GG~#?鵷S)vPUTT ]طoa.ޡYi蟰0#if:,gkk!‚8ut5" LLLeeeCCd ֬YsܹK.؈nҤIͮAL0L'9Ȫ%K̝;M->}0+11s„ GvZffY~읇I3i144vpp`: Dsss%%,ÇɏCMMMaa!r1c --7n:u˫ |G:1331bĭ[8NաS ̗&wwwԒ'''@@fɵwYDvY @[bŮ]rss+**-ZXXXz!ggga7o^z2 BOOL_fMPPÇܹܺsKKKw3˻~=A/^>>ׯ4556lؕ+W/f= **>/jhht.icc uW;2eGGǕ+Wl6;<`~S$ndɓ'&Lr7`I|wVVVR3f{ZѣGϞ=koo}vLL… t@GN􇲲2''7oL6mϞ=K,F}X|`̓'OĦx>>yyy>>>T+WM-YdժUbw}v.3CrǏ_`֢Ejkk?rifsG]]}…ϟ @ ˗3ȔCfffII tr |;cƌD>S^^.YVZ5d33effv….Cy󦦦80~:;hkkKHHXfԩS#""^z%Z7֭[vvvfffqqqÆ kjj C/^,**jiiqㆪjAAA7~2 ``:::@OO] p8`2=--mȑf'%%7+XssڣGȏN&%K4 ͛7O0AEE%33S#PKK?3uus>~X#GUWWݻGM2*ITVVikk^xUUUdaJ}}}aa!!bҤId"ͮYYY<֖/Ų-,,ȏSNjhhPVVۗ\4[.<<|ѢE;8sN> ,yyySS7oɇQFiii ?ч$*111&&Ç uuusI?*<<\4lĈ5$y@BCC#%%/͕ȏ>"W^ɵwj[[/r5===<|-,, :TRRbggG?:!DnjjrwwwppHMM-))qrr`˻~X99+Vڵ+))-77-ZXXXz!ggg𬭭U PN>(--\]v7޼ysEEʼn'fϞb4!Dxvvvyyyz-, WWנ MMMЗ qss۹sG]]]EFF/[lƍ>>>ׯ+??f;99QpxGG>lʕ|>s.]K{ݘ*1fOk6bkkuVwwwviHݻ7v؏>X}J744={AMMmb[EDD477㓗c``AjYY;r Ԓ%KM=w}v.3Y 5kqrr2U/1113g5jԞ={~|fΜijj/\kn6+9==]Dl;ֹpp ӫuuumllrrrL#1ɓ `:,ooG2H!][[~~~%%%6l 9-,,^^^d3|~NNNyy[j󓓓Oߗم  ͛ϟ??pV-!!a͚5ZZZSNxh) 122Φ?LKKkoo Ϳ8رcZ[[kmmMjfݻ۹}mm_~|~葲2M;ŋZZZnܸZPP@;99-Y޽{&ˎ"SX|Tt Y|:::@OO] p8`2=--mȑf'%%w-XssڣGȏNKWOhB7o0aJffGׯgs}feAUWW6̙3]&+((RM5M=Z|jGth]طo@ hllTQQNBPP UzO;>TTTdiit deeUUU-Y`ܹdI6]QQ󳲲xi-55|),,>}:TwYׯǏ ө&wwwԒrA,ŋd1.T]vL/Bֶ?X^^?55ח/_)/''bŊ]v%%%VTTt¢E SSS:L?kkk`PN>(--\]v7޼ysEEʼn'fϞ-Wf^Kt rk׮b:` FpppXɺ>~CBBۛ~Y\#z*6p.ܼy377ͭرc~~~ߘ$miit a@&N&bcc'N^PPth +Woڴ@Á2gϞ+WO4)''w4 S޽{?c xX|G[[[ FvvcvȚ8q d g Ϟ=sww;v?ӱ@)..{.Ӂ;0==+@aUUUǎklldX|>_N?g:---;_S^^vZ}}77x.\`eeuPQQx̙Cmݺؘ鸠_mooUWW2rŋmmmTcƌ:t4䴶R嚚S/T3fPPPʽ~zSSUŋrϝ;_Q庺6*ȑ#T֭SQQA/2USS7DDD} CCC;;#GĈ۱c*U#[l SWW]v-ǣʍԔF+VP^xQKK*w'U;wFAkkk[UUESN0*7??_[[*wԨQT/_9r$M׵e%b ]V[lxbŗ{uww ᇯ^"b %h_Ν;Go4/7nx%U7|Cқ|8M۷oӼfi4$4^ˣnyy9M.<릤0R׍nTTuCCC%}v Ģ#= `L}իK.^\\_駟~L_SWWwPiӦmݺK0 _ Ç1gΜ[nџsw̝;X1X|O<booy>ŗ~͛7 L}/R4IUUUL_$q++0wX|",H_dԔb=~@@F EX|~mڵGe: mmmKKK===/ŋ~@@*>/@`xէ~t 2`1E:ieeu9URR0rO>X`kllc:{rL@ )esssi%2樨({XH`ΗwNj011inn&'//#!!Ao:::,+77rgΜijj_VVF766Ξݽ IDAT=!!!f266NNNp8 .<ёrǏ/X@KKkѢEǏr=O2dbbBDNNNjժ'''߿L733p~ޝ5q5ß"D@QQd B@PڪaqMmUK(bZEP\RYE1" ;y^s$9suNB?qLkkkZc0cǎrmmm_~-Yf]V^^``A}SSׯ|hoooaa|&$$(++777KJ 7oA`y&ATɗ/---CS b'_v`0x<^O[c0!!!vCCbEEE{{7:I߰aث}WbC &_' #F-ip^3bCx &''Gn477r///r1zGy$@`eSTTtss۾}{iiinnntt CyyyÇkoo߻HOOOKK{ƍtOHHHnnnggӧOSRR6[__544\!eO"^g<ːfzj|ٲeEEE^^^)))6m󨤤GqƨS*++;wٹs/]ԵM]]݈ Θ1#44WpH8Id]IxXXX8p`ʕT*077}[  ݩC13 s:.%`LLL.\XZZJa0T N1:;;N1N1КN1plvllpIgggrr   NڱcGhh(A_TTTa|p FIu5b S 4UUUS 4%%7]UU-ܲe ބ0%$$FFFR5LP ''|ur/۫V277_zA RzzׅKL/rʕ?F##CF?x`͚5SLQQQa27n8yi4کS'!QXl AM:tRvXn{{;F믿g]|YpT__?--MM)Gn*KM \2%uZ-*((XnA` @M<9 @^~,cBA/x---d9 ={ԩSCBB*++򦦦#G8::ٳNP?<<,;;;""`hhh=zp\.111#byyy&믝 {B__1 UUUr[gϞe``k. e숤a>rJWWפ${{{kk븸%K677KNNNAAVVV9rҥKMMM###^˗'O\vԩSUTT,--WXA 8~8駟N8c h4h4yyy߸qCQ ~jjj/R^ZZ|׮] 7mgϞ3gl߾]P?&&&**ёNgdd<{lʕ}Yii)Afff>=Ill\vxxxt688{yQQܹs&#RE?'%%EfYY?#BwwǏs\Yzp***%tኊ YY‚^pرc\]]=<<Az%KL0ANNn#Fpz kkkdaꫯC+//'^-++kQQQIII'OԔR-55l6;##CJ;wLJ !`211R޿˗, ''w^&9Ԏ"+ E|/SN=pUD ];;䆊ʸq㲳 kjj͛gbbbbb@ B*YYY&M222:~kפ'dʔ)䆮nuuu{{{AvZZZRRѣ===%=$KG]s:FFFA"qn455WZuʕiӦyzzJyZ7n XdɃΟ?/O?T0$w<|RKn /a#//sNj2&9.\ wɧ7EWx0_/_[ZZ*))W\aXKKKg͚eaasԩxT[jnneٹ^^^$;;;&[t:ӧ[d<9==ѣG'NPƎH+Vh#|رc…iiifffRzr+_C:::[limmhoo'N"oc!vBMMM0d`` SBBBllGnnn仍Hϟ700>wzCb[~TzM###SSӮ N,o: v|hnnn۷o/--͍^`hzzzZZړ'O6nheeE|||BBBrss;;;>}*i}}=dzr“ yyy]_'+11QܹsSSSڪwt8++EIII[[[CCkB;"㰄M&F۷o_zzwvvkר#GJѳg|}},Y,DA?^~}aaaCCCII͛G"'Od9xcjkkpGGp n"&OtR{/^߿}… Go&22^lҏJI~s-X 99<''G&_(fzj7FEEM:UYYYΝ;}||vܩ5}tJFDD,\pƌC˖-+**$b>}:--^bEdxSSӦMLMM5eXd /_zzz'矽{*//RVVӛ?~SSӯ ~Zߎ'<<\8FVV[l!+X|KKo/zW6(NNN|>ƍo6?dDv>0#TEGGr8(;_<`xym3Agڵ`$pgcc3f`ǎ;Pfff4 0@0Џ0_nݺbŊ{^:wѣGl4qƏ!PccKܹsDUU<<<|=֭[E* :::\XP~eYiiiRb &@PHϥ\Nlz5kLd27nػcmm\UU%=OF%'' j:uFX]KPN/]4;;!}(&_Kyy322BfRUUMNN>s挡srrȑ#f7o:;; ;vʕ+UTT^,o-++駟_^XX(c 6_`FZ~He){=RzQTT =z&!!aܸq͛JKKʉ'޽{WRecbb&Mk _tI^^> @JP@ݻ,kT m|>ʕIIIdI\\B``~J)((v l/]422R%/_fO8A5*!!A%E.-)\.%҇BQQQR/h4Z/.'˓'O^xqԩAXZZZZZ$&//mgghhhxixzz߿b̘1O<9|HHыk 711Y~}LL̍7,,,$uV2rHIWjjj***#^zj{{;A}pǏ\,-p8dyy3)Y7mM EB]]1((2%{似\"h9rE:DD\\z%166VMMdJ,))b޽ 0ae@ P^^Np![VVQQQIII'OԔTl!#""tebb"|( @NNn\@P~/HMM߿)~֬OxdW@@Ç;;;gzt-˗/+** uRza/CA"+ظqcjjlId;wC~%,A;w|e'IVrJUUմi<==C},---55d闥Q#F̚5"=044zHR>&_6cccSScǎ 뛙I9z{{ݻQ%Ə"R./jjj?> 5IB:::[limmL7~;::RRR__~eˤ~-SBBBll vV҇2a„0\a`hhKOOξv횿%e5gϞ.YYؙvgzxx?~O>!HD*tvvTo"##<" Cm/$w?^~}aaaCCCII͛G:}ϟ?D1,\|ydɓ'/]TU];+C?&_</_zzz ,rJbb?w^u |~``M<ʊ<.ȋ/DN%RիW I흲r]]󛚚~WW_}0a„+V뗔Hy4L~lKZ"lْ# (666`rjhyGzzz666xtַ[t&M*...**n\]]O=w9s:u,7O/@kjjrJJJfffR9::^pAlٲOwΝ;\.wɒ%yիs=z.;tA4qƏ!PccEj Vs率yxxWSn*N_gBʅh4ZrrSh4 cmm\UU%B{z֬Y3e&qFH_|YЂ~ZZZ>}EIIF iÆ |>?3@/a@&'OKeffΚ5KUU599̙3#GTcف͛7TTT;vʕ***"ï`qyߖOׯ_/,,ufI_dς111&M>}mmm?ceeĉ޽m^RVVvњq @ F~>:@AAA_L&3<<,;;EFFǷg1ϙ3G[[ͭnL&2)) {@v|>ʕQqqq ~*Y(''Gr(noo_tidd N^zl6ĉdɨQ}]z#Gv/Bﯨ3f̓'OΟ?ZhvvvO|ɓ/^:u*A]3 IDAT:Wv111A&''?|ʕ555֭#}wQQQfff>>>vvvgΜ]t)p;_G…?rp***{zOyy{Di4ZfB#G\hѡCswwWWWtu999//+WHًs>\QQ!c۷oߴiSOH%':z*AKkk'˜L̙3jYp9s/^|ΝޣFx"ex`7>}zr?d{{{BrӣN<)?AS]]ݻ^ ÇwvvxzzqnjjMMMlvFFP/''w׹%~1m4PaaaSSkggWPP X֖000055VVVh0|荤${n?FFFAVKK?7##cƍǏB?boYN~^2w{! ,--G_1b֬Y&Z/\jՕ+WMYWWG:;w|e>F _oAU---\rbIY &_ cccSScǎ K ޻w,g``@SRRDj >N ~(4s"|˖-ޑ;;n:zlٲU0u͟?\?W<OQQm ,:``hKOOξv횿uZgϞ.YYr;::kvvvh={uuu|mY fff._k |>yyyqCCCtt8ׯ/,,lhh())ټyѣ]\\ȣ]Po&22R1ٯN(墢<<<֬YpV^Mu" @2eʁ8A ⒝KOO"33S{'&&?{U_7nܐtJxxpͬ, |~``Mŋ>l W^auuu} A}`GG˗/A jM_Μ9ZZZ.ZLfxx{OrX`~J@yY&Lp޽w?,{3f̨: a ToooWPP: @={L]]]GGTTTTVV~vijjҞ#GTRR Fه h4MM>l eeeEE>lpĈ} A***oV6(''އ ڷ#Gt-wss۲e{&r'44!...""?_dL֌u떒ʕ+n*΋/ݍcbbacccJJʑ#GƏo1 G|roookd2.]QUU5cƌ[?kN&隚Blkԋ yݻw˗/:{j*`TVVuw9wklaao v3--/^\z`0;C33-[HD``;3~G%K|EEE|M&YZZl29 ]I9rDHC/<}4A`ڵKx77˗/SY,VO;Ypرc\]]=<&%Bܖ`„ ݻ{.#222̙`]ֵklll^JucSBgDѨoJ{{{BvZJ c|xR2yM(ӧOuuu|/cƌY|9s"99b}T//0@,--M/v322}]r)33uZ|>|~[[)Ԇ M&ݱcǺu퐐i O```2aaagϞ:ujHHHee<<<,;;EFFǷluII AMMMGqtt433۳gO]]Y9>>~ZZZvRؕr8??sOn߾MDDDpuu=zh}߽{w^^}Y'Xt?>H~ƌ\UUՆ$%)7lllF3xNOO0aݻ=<<3111A&''?|ʕ555 7o.,,ܱcٳ\A6msΞ={ttt֮][^^gϞ3gΰX/_޿ bq8/^h"`ǧ`A322tzffŋY,ĉ]4ܥhfprrdɒ 6-yyy&% @*(( :q'M$//tM'9zĉ0&9s̠$ ]v999əttt$&&~wVVVcƌٵkWJJ ϧh---\.^CCښ ]I Ν; RSSXpرc\]]=<Ԕ 0T***ƍ&w+655YYYvvv<OqrMMͼyLLLLLL\\\JKKҒFIc"+IVNHHػwozz&Y?i$##Ǐ_v۾ ܿHX:G<~C:R&_\r祥f"w KKK%%Brʕ+,KEEJSS3''G5 SN=#qvvNOOĉ7-!)A򝝝999+VDfsss˽|~}022.!677gee TG0_\+"##JzzzZZړ'O6nheeEE*(**m߾4777::zA{{{?pBGG۷|||BBBrss;;;>}BDqqqVVVKK®$ 6//y𡻻޽{x<{{{ .+R}ݻw={ϯkIz/N: L&_~ƍN,i('''5kp8իW|ɶm455 عsΝ;O~% 6mڤgjjo>I= lٲ"]]]//M6 yTRRp3fNNN"C;:: ٙ3g;QIzIffr@{iyyػ JiwwwP@wvv>>E8p8&&&~~~ADDD0 WWףG jϞ=[KK`׮]"xϯM\Rf2 sݻutt֮]khhg w1{l.;j(&akkfUU՘ |||jkk+W[N,--CCC-ZD&%%ŋL8v„ gΜaX/_5AL&3<|x۶m˗/9]lfa ӧO^Z^^Nux̛7ť͘1)vvvƘ1c  e ?i$##Ǐ_v mmѣG{zz >>;wҚ>}KO>d۶m~~~L$QQQNNNk֬p8WTsٲeEEE^^^ .1cFhh/YiӦMzzznAAA!!!ؘfxӧO"3wIYYÇ\r.3@|G|/EEE+VBWWȈ }Ҥ\;Px:;;gRO>dҤIG: 1yxUFu{xaaeBBB^d%dNNNb `xիW˩?|~[[)رcǺu퐐0j0,/Ad2fϞ=uԐJAyxxYvv6Nj477oii!566űluuukk뒒 9hffgϞ:r||ٳ v%+8p8&&&~~~ΝK__Fݾ}[lkAO<;w{Dk3f*檪644HpY7g~X]]}y HBÇdddDDYYA` ofT~?gQ| X,j cر\./^~]d|PTTmaa7ߐ偁NVVV{{͛7=z󃂂lk,X={ŋWJ*KR ~Mlw}UlkbJ7n\ZZڣG-[&=}QPP())!|g~~~R2KݰaCˉ !aˀ /Û_ /]$)I?E^-3cǎGa666GEz:0=Wb0('_BBB톆EEŊ \۾E]]=??=t9G֦{oܸAZeeغ:Ae]I ر`x677geeh4 $e022.! HBC}7ot%cۡ9c& رc?<$ZRRcee{n|ժUW{{[|5k\\\rrr:::jjj|~QQѹs皛w=}tIbI guttGOO/>>PRw!MJ$R쬠A Vy.uٲebD0`e@aMࠢo[ZZZnK^ߓ‹520r;//\@~~~#m6:~Gk@ ۂ$=ZBzOŮmQ IEE_G#rbM&iA Yf2~W"߮}zv(!KTT^``Dž˳gϾɓ'Ϙ1СC^"cbbyUUUN(>?guuqk׮M6M]]p׮]T(...ڞ|󍜜bM(;&_$E!=)fHII6uԴCɗ7CpppuuuVV֔)S/_Ga,DSS!ȔA5I.|9???&9fMMM///ASoysUVVrJ3C v'MbˋDJ)=48cN޹sF544Hrrrh,_doMJ8$)߮n]v(!@' aff&Xp2e,s0\a䔐K>"iUtӧO[n 7+XAF-777r򷱠fddy^zE| QHt.AH,--|~QQKFv]M&iA Yf2>ݷKAYbk1bĶm۾[r7""b۶m21f @?}:>>ՕD04S`*..޳g : J///^̜9s׮]+ۋr8k%Hsα{?: |g+Vؿ?Y`8hll,..VQQa2Tg_,+88ǧ~}CCC_5ط҂ehhEm-##cYYYA899mڴť`#ꩨ >oذaڴicǎu֑!!!aaaa`Ȉ={]¦#G8::ٳ,ollc仮׿tY@UU&WGvpp033ΖfW CCCѣr&6{STVVwشn߾p7oh(x<^dd}|||KKK=رp8\.ᘘIҳgx9s搻~auu={H4| ]]]Rmmmpp3gX,˗/߿OoڴΝ;{Yvmyy9#|ͅ;v={6USS~LLLjjAbNgddŋX'>>a„ݻw{xxHS~g.]ի= S[[+WԐ7q/ ?v$iHO>mooOj4m֬YNNNA\|9-- R`"zyן7o^]`;vo,,,TQQ!mll9,,,~]o{:I io`Zeeغ:Aa{{7ݒ:֦{F~/zamv﫯4Bn744(**VTT%|$IUUUoΝd/z4---Clmm{Ѹ񤌕d Wsvv>6w\IޝROe'"NՑrB0sf2(&ڦeFԔMEMIͼ-)}TL"KL ji6d;?ܿ>8<u_h9s׍/,::ZGGԗ$.&'''>2;fssn{x˟, ~ԩAAAVVVjhh())7nS[b JKKqFccc}}=á.B?ڂ.Ku>aNE~~~SSyjmmx.u.8'#h犗j>?>oM}}Ǐ5q|NgΜ2dÇ mDm1`ll|iӦihh8998p<11QX/_>}σBvbxژmM+(o޼8RF"&fvнϝ;Çaffy'aXjjj|=0W^Ƿo$##CS0f///UVVi?++%=zrYee{QKJJVXAwww9sG._b>vl2sͲٳg/_\ԽLUUzvvvGGǛ7oO:׋o>E s%^3i}Q7+*'ݺuӧ/dȐ![n%~HhУ\ܼsN|ʕ'OlooLJJ"˿[;;?Ϟ=r7n7o^KKӧOǏ蟨>TVV*((<~޽{WEE͍POOԩS/^Xp!&y9B?`ff&8˛ǎKE믿1cƽ{233-,,v)YbG3WK,YlY{{;}ovɒ%R/^.*$.$_z /, -j֭#gYYjtРA/_b]8p`ر666_~ҥKy/  ,--%yg͚E.]*8hee LMMlvxx8u]]v9rܸq$\DUNNɓ544QN81fށFBJTRQQ}Yi=277,K0r 8++KNN<{.hhhǞSNX,kkkan?&^rxРAjjjzuQ333W\LGZqqiKy ҥKӧOWPPpuuq2&6/To4ʋ/i}vvvlKK _ߥ/Çj#FH-hXϟwK<vk׮ǨQIax3fH;'Od۶m2-+*ژbo[ i)""BKKk̙MlK !&=;tbiGӧƍwEoܸoswx?!{坜BBBJJJfϞݍڪکҷo)SDDD477WTTJ\bEVVVGGǫWN8!ñcǒS\\~ihhRO<2mڴN&6H>}zrrrkkg:iE͊ [VV￿zj{{;wȝ5 ^/ɹsRRR^|daad2'$$D  wv\s2gΜ @"w@puu]re@@ҥKs--9s7nڵ^^^6ٿW_}%Nhhghh AEEEZZZijj 0`QNNξ}x{p8555/*6HSVV633svv;wnvQ7+*찰ofƍjjjdJ1EFF=ZAA!99Y RRRh|"`ժU;;;fsChX`ЯD,Ywi=wWzV YiAҲ~j***lmm q}/ /%iӦhjj~ț~322pK{,**322ڼ/s王Qo(t==#GPA_7in_@^^d…/^ ._|ĈJJJ]{ ᱣ^d2 ӧO|.]4a%%/9::&%%۷_'00L[pŋs83gθ&>>~xˢFuAX[[6LOOz'N8`ggo7: @Ow_xxݺuZ[[]&++pz~>|ŅŋP^^$++JJJ!!!|=x|;wikk/]r|)Ϟ=9{500XzuqqMDSSӱcMLLS[[KD@@@aaa@@7A:::׮]#ͥ 311066ޱcyY-..nҤI꺺[l:$$DOOƆ\O gX3fBV#E$Й&9~ǏS*xkA|r隚$v6CS }NLLL<{}p^ZpLtt4o!9f1BfϞw񂂂M6]ݰaϿn /ӎccc ۳gŋ333CBB211zѣG;}`'K,Ͽvږ-[mF3Ԫ*%K Oh5>4uc I3IE _sNPܹ֭[Ts566!߰F\I䩾>}AAAC4E뼗deeBCCBr?ӞIcQ{^~L_qu1Ioppp||Iz /RF~ÜED~~~ee̙3 &O t +++QFZZZϟ?okkHIIILL8p[vv6_\.a„ ԥ4#F <7o8hLP3) FA;skkk`РAds`طo߹s<<<222n޼믿FFFWT*'''//y5I鶷֤T`111/_vuu=}tmmmnn7|÷jW_xEjjݻ̙CHQְ{UVV&''oݺ_FF e˖%''_x---]t#$_LQQQGG!>>>666##LSSOUSSCUVVS|y|mnϝ;Ç 4ann`0G V8NVVVYY;7gΜqƭ]ˋM58u %::z666}0|3Gy IDAT >IOOٳgO>ܳ >>J]:uj֭...ׯU",,СCo߾=ztAA m޼LJv IqㆍuVVVXQQj VZ AcGpqqqqqudÆ /F僐1dȐ/c2O<Ї SX,Vtt4V|j. . 600v\ ww7oތ?~˖-3gΔvDC.^XQ@A@ @HǏ=z۷}ظqȑ#ɂ RRR$ Β |dmoNr"[lzdm7l`gg'Yۘ<.^RO...Y%k?zHPo~dmMMM%kFjkk+**JֶE}dm^D>}SiK.%?>gܹwj'gϖtq1.}O%ٵtiӦhjj~mjjڿR744_0YTTDgddP5O:E޹sE___QQqԨQ۷ooll s ]OOڵk\ڡ+uiȑ6m]/*--щwpofȑ#ђ#AIVeAlܸQg3MMM%wG/{!b֬YO^p8꒵}iMMdm%^BĀ$[IIIq%.{t̙3gΜ7{z֭[ ӧ}tk.O&L:DKKѣG:4}tK֭۴iSEE֭[.\XTT$%cbbFCUVVyE@vӂ/ 2Qxbʠ Z'''G*E/FFF9\NSSU2eʔUV p8VQ٭_^hyPP'jKGGСC5Jbbfvvυ~= :$ .<~8--MYYQ}iii=yLcǎutt͕vh+--}!ߞ/^(,,$YYIPRR nmm-/++{;_}!c><66VBcccll/v8uT//gCt$_)**~? >xeeeA6LLL<{}pm…222|IG\IC\.u~8p;DΝ;_|illh"1vH*## < v8>^Z{ ÇGGG8PځǠo߾䱋 c>tߩY\!Tć/=e//EUx9s{3*p)KFFFNN>>< wܙMM4I]]]WWw˖-wruuuHHͭ[򚚚SSS[[۸oߒ;vppp`X655;vdϞ=Bャ/^bEEEAQQQTLFoll}М|\.W1|B?"++``i'//*M2 SDFPPM9sд|2M[ Q Fuu\.~1݊_YKK+##cAl޼yǎ ---ZZZW\aA9rdjcccOO 63k֬gϞ3̋/|eee|#͛7ZZZ?f2^^^ZZZwnll8pKlllx꿽]WWĉ&MHpinJ9o򅗏 5s9rƍ/^,@a @/ܺu/(##xk2DqI_2/)phܹC2_۷|Hi{%iKʪCvlŒ%KhWiL3nGGMۺv ڒ@򎫮.K,iri9::wԖZd.-2/ޢ4hdeO|)))?ԩSDui傂.kjjJN0K2bʔ)tfgg|HpNPi&###uhnٲ?|N<&jGG͸uuu4mieْ%2IFKHHIF'^zEs~m PKvѢE544-͛7;v),,9(--%R{/??\$r 6M033<<H'dgĉgϞ=|eff|K7%++Kch"W7""3gpwwmnOϞ=0aB~444TUUߥr߾}L}*j+Yyyy''ׯ_GEE}W4yzzXbӦMVVVW^o֙3gMfeebffd2E&''߿,}ئMlmm/%]cfggϝ;O>555+//ɯzڴigϞv/=>PVV&/\.WAAA^^~eMCPPo"-}B!557ז&kC=ő%q[qss-ijj ...VVV?~<ʻT޿dd_qF<22266UEE% @'BCCO<_ M|wwޝ;w.o{ݺu_~V KHHظqc~~Jt|}}ׯ_pĉ9shiiyyy=lzϟpRSS񿎏6Uڕ/_0`crϞ=y朜 W\)j; TUUjjjK;OW[[HϟĜ9s`_rÆ |OЭ[l ȇd>jժޏ>p@:lmm/_|[n 4H544K;~HHӔ)SL"(#IhjjZZZUG)|V|*S6}yj"//op8׮]#!СCSSS^jllGV\9j(EEEcc㠠 &Wf0ϟ {{{baP5555nj|gϞ ^ݻJJJaaaԽp$_>\.Uk֬`zrҥ &())%%%]xQOO1))o߾p8[y2_QQQ+V(--*++ i:'ѣfff"2Ak֬ፇbuֵ߿bߧ '==fڵ4S.||U\. =jjj"""LMMmmm޾}Ko޼yҤIG^bEEEYt1{{{={RLLL222Y,3~7N@@@aaa@@7A;w4;v888X,ޅ!77WIItqq-tvv~Eaa8wP^^$++|5{{e˖9r\>cbb<<<Ǝ;|XqH@FFƍ4uNH͛7l0܂ ۷o UUUnj#8aOe۶my^eeeAZdddbbٳgh%''8pȈᤦT~ѕ+W<== 8UUUyyy'2pŋB755YXXֹԎ䁢aFFF~~~ee̙3 &O@.!ww4#F <7oޤ>QFZZZϟ?okk}zrrrkkgȷ)..NKK{m~444TUU3l1'!,,0NNN|5 ƾ}Ν;ᑑqM_522o߾nk޼y<>ŋիW744ܻwoݺuhHHMddʕ+.]J] =zIhhghhZZZs7nڵkKEEEZZZD"ԅ RRRc???eee333ggs Vnjj 0`QNNξ}?lq&Aǎ3%\.`#Gu:u QbttzRKKKڱ|u:Zh… ;}4 @ׯ_0a322 t3|e{3J;DEE߫ Xj'Ƨ+@HJibi`2O} >B}VEE%''<=|رccb 򸡡A^^MGG&ݻd2?_,k͚5BG޶mylffdiiyرN#ټy3y=p@bcckkkBQ ,ry׿ Q!M /QLSraj^z ǏqID? zݻJNN/pU>|`0233\mیxoP0;;~:S;;;EEEmmm55)S?;;͛7GEEq\mmSNO=1+__w>Xz?,++{;_9$7QH'??‚<ͥ455% 322+++gΜi`````0y䆆rAۗ1bOyD2j(@KKmmmm544RRRF>#*TvWx4$8LS3ӡ < }gS}}}JMM JNNvEMMoqƳgϬh_ mll7oޣG_hQxw%Ν|255uڴi/++ZWWG$@7BUVVF-o!y*΋"##Ϟ=FS-99FFF'55[rh;;.]"Sk j`ss~QݸqfSOfee_.))0aITFFLJ P+*LW۷oK|SNLS WS__ԩS))):::&&&4wTXXw^{{{1' MM׷%A(mmmd}̘1ADNNN!!!%%%YYYQQQgϦ;w.%%˗AAAL&SNNsŊYYY^ [[[UUBOcǎ̿G"TBBGqqqZZ۷o맡JPVZ]1}gϞtJTH(cp= RD,@>~|j*ޓO9HHTSS/<zxSQQQa `Ҏ Cui6yfi;Yid>yDQ|r!ҫ`0^~-@ Ѓ|I&K;f>۹siiiW@^տׯ_WWWkhhpܓ'Oܹs Ȁi 5===Րvtt 6mUU'L0~ Q .\hnn~!i ɗ^E&_*++/\}b ,,,vp_xO0;viFvΜ94m/_LVCCCT[!!Ӈn!T jGGM>}tN?.}ێL$_@L׮]8q_%XUR0q{b6oF#^]]Nv4mi>$o߾ù#͸999O XYYd+mh~咓ǥi[WW.˥i`0;./K,iri*::w|mSB@p'Nq=##۷֒$4}8qC#_Eᜯi>%ږȈj+##CfܩS`OD[[͸vjkkuu˖-",ӌNVFFf\l6w\d]&A/!!&APxiƽ߿_ⶋ--P/!##cݺu'yyUV׏ |8oiiu믿nmmuu4wMv޽4I'_>'_yJpAl߾&BPx"M2f NݸqC۶mmmD yOkkk䋦۷oKjjjٳy?󵥷m6d_[ǠxkK-"E]pA}m GTSS/<zpX[[yyyoo72Li=o;>|wc6}J"A111FFF^^^>vhS||M{{cF.{ 5jT\\\NNk[[۱c~Wi(::z͚5 JErr۷w(pikk/^XQ!"}Gv5xt](> HHb̙3gΔv/= @Ba^kiݣɓ'700v,^I v C9'~ҤIKIIѸW;A/iJJɓbظ\ĉf;v(1BHOOߪnfggwvqqٳg˖-O8KN^9^QQoBBBFFƄ JȨbg[QٷoƍMuauV.]TYYY/_0`4h((46͚55jThh˗֬Y3qDwmJA~vZ///ٚ7o>tЈ7onkbbP^^;w `ll>>n_~ ۷oߴiSJJJ.].]hT+׿edddoo߾};w FMQmvԨQU~ŋ T;Oϟ?vI,qt?w۳g3<+ȝ@̼~Y@Feee~ë;Văƪn o:uƍ5~vk׶o~ذarAմiӵk2rg#͛7+%00>%gmmnܸQPhp-Zԭ[Ç.YDIryf5%ώ㣏>R=_~8p/?DPG.]+9rw^RKvvv۷;Q]{ann)Znn'ONQײPNQwܹT^^^_^d>K|4rFڶmAȉɩI_c<=P׌-,,NQwJKK_ZZZjܹsΥ Ν;T 4V-ڽ{A;׮] С dI>xѣkVHl(ԩ]ǦFEE8q"::Z5b…oݺ۶msvvV[ѣeeeEm_yPwJٳGcȦMLLL̙3zhUiĤbXlԩ;vж̙3}}}+ݶmR1*ӧO޵kWū-*f[V4kLY( =SP(mll}mΙ3[+OǮٳGT_wuppP[i޼y6l8{[M'۸qI]aÆӧOUo߾cǎ= qvv quu=|9 IDATn4rD +_P_>k֬>L /==իcǎxW_{njj.3޸q~06\ȸrʄ Ԏjz377 )--TBU[ah„ nSy&MԻw.].N ::U&67 ?^sooܸOAAƍ{9m [[['''YV 0DEEOr xyyU<(MOOrիwرo߾-[j#3h C\/jN>(22RUgQ-/Rvvv^^T7OZZڑ#GA۰aCkdKo~k֬YMX޽{3f̐k׮ocǎj:::={vڵM4Ѷ\ 1QF%%%#W^IIIQQQrP(S]v VV|۾}{鱱vvuH?!g̘q/+qxxҥKsss_$5?jVށ׿ܯ_?A&O믿Zccc۶mf͚5ILhjjڹs=zHGjٲ;s۷og999w^ll%r$<PYXXxxxtE jxo߾cǎj޽k׮SSS'MvZooo%ڵkשS;w/iӦZ+lHoEBwO<ٹsg߾}UG*@򔕕/ի ׯWu033sppٶm[tttŧilrj[paII%.ڴi*W_P|BXn'M退n͛76ÇFSΝ;Ϛ5ҥK̥qtϳ~Ku H@@3<S… O8Qy+6UkBZh3iҤVZ+}UۥWPAHLLӧO޽O:%w/33붶<H}۷ӓ*PݼySQ͂ ~䩨>d 4HГNY}Vi-Zȝ4 )222$$D -77^;9/`(3g;vATC^^{Ar  BBB5kvر^zرcjlmm=<>}ȕ 48_f͚%w 4oԴl(9X_[[:5 ٵk׾;{}ȑLOO%KȒ 4 _Pg͚駟BCCKKKUoGuرSN=ZP 4,_PҾ{:w^///ySh===@/z{{/^GJyyyVVVrP(xbQQљ3g}zNT*KKKkwNԺGO/Q(NNNͻxٳgA(,,ܼyw׮]WZ#B```jjj``Ӕ)SAppp8~8ORR WWAu5>>u>>>...W\ļmڴYlYlm۶ׯ߹sT5`ӦMzt =z򊉉)..ormu rJ++#GnݺU}:##cĉW g;&NLL433_t̙3/_.++ 6mR|𡵵S=z\9ބ ƌva͙3gqqqeeeΝuR/u  4giڴT*Ξ=+t钣cyy:ŗ竺O:պukR٢E蜜 U1.]*ί-^iiѣG+NR\\lii(ݸqc޽\[]2eʧ~*VOmݴG&I[ϨXlfff˗K_,X #(]_FSdƌgΜm۶5kAHII1c jMvݻ/ܹSVVfcc{;vnz^*/ѣv mRRR_xᅊS|۷oߤN.A xڵkgϞӧOk4]IɺĖPgTFc6A{9x޽%&۷gWD꒭:UO333m۶EGGͱ;pdgg`ll\^^^qZ##*bϨ"lJ… Dm#G&%%}rŗ:%HȨ[nSN裏LLLi׮… +>y˗/s<%®]qF@/Kw4&\èr_x)SZ>!Pg^Z^^?Č9RDP;))믿;g,wxWX 8::.Z( iӦrG ͛&LxQ-[6fՂׯrZaaa!w AZyɒ%:e<%Ǝ;vXSԲ[111rg0~O>INN$++ϯI=9d;vY[[Kݾ}Bo+V3^W: ;/`XOc ݻ떗]iҤŦ&СCz $Zwz/nMkz P-_-[v+Vdee)!C>}W^)]|RoJrz_JR󕫸V]|=vzCmll[x Q|`ff;|Wue?,--=~kwrRYZZZso޳gYŗB066vrr7oŋϞ=+Baa͛vjժASSSL"yTJ4k׮񮮮˗/qqq r-&&_nӦͲeˤsj$qPGGoٲEVAwވ#*(;;;""G^^^111ł L6m{СƍՆm۶_~Ν, 6mkii٫WK.i[Wbr%Tyʕ...VVV#GܺuxNjOk׮{J< pBRbaaQTTT*Ν{錌'{b77^5g9v:11L|ұc3gΨ޺^|,((hڴiJÇ֧N*//Qrrrx7o_kqrR9v؉'=zGlj{[nM4I5ɓ'6… nnnx|ڴi|ƍ0a˜1c>Z]Y̙3gqqqeeeΝuĺ&_bHoߞVRRo> K.iImۼy ~~~rŗԠA̞y晦MZ[[JٳbK.9::+S|?KXXԩS[V*-ZOU|qB33T%/ ,_?WT\\lii(ݸqc޽ڊ/檴K.WvGe]mK/1jL駟jImѣtd,7͌3/\0gΜ5kDFF̘ܿ1>/_vqq}>}T|۽{w񅽽;wlllv_Ξ={ذajC*Ty3gsω{-o߾g}VnlHII),,ٳi ̴M(^ӣG"777;;^P;eʓK̟mHA9ydAAA^^ƳֱdȐ7n;vNJ͚55jThh˗֬Y3qD!͛7:thDDDQQ͛7UwvƓ&MZxѣG>>ƍ{}*|};voQY[-jٲ)S$6C3ۯ\^{,X_q'%A7n̚5Gzhlmm=<<;K&&&eee- vZBu̙3={twwW @SN͞=O>UI WILLzjyy?3rHUMNN?q7oN0ѣG_lYgP(;vرcN#k׮w_qOOŋw_`oB!wPG(Ƞpʕ-;08v$.]ܹsiӦov۶mP}H[[[ŗ:5kzH[ KKKZPP 1@5|Ç˝4_ |۶m eee-7n!5{̙z]xc+ŗ]vI0`DcG%Q|9{/uΜ9ښAc Hjl,N:yxxhkE///SSSm0lذ6mhk奭U"‚ JT^AXjUhhN:I.JQ|1TAʤlgggm^XXUA &SL0`Vʋ 5Am2 IDAT$*,nnnc###WZUN&V\`Ǿ;z?~c%TU.H@BTʝ*((ذaÊ+n߾-B=Ο?_^^^VVfdd$w:/2x`__Ç˝@-k"wlܹiiim۶Aؼy#Q|1f͚͜9S,8:: 0u>&&"z++++99ڵkrŗ:Ҵiә3g^tiʕ[NMMƿpϞ-;(ԩ-Z]zusܹ܉͛7g͚&wriG2055 ;̌rss?*'))R j)?;0 /СA@}ώ1|Ç˝4\`@_ Q|0 n ikk+wu5x)Jo[l; Q|0 /D(ÃG*#ʗ:P( )@ݡ`@_Pnݺ5k֬K(deeEEEܹS 8q℧g``A>c4HYYY׮]GjEnnnrrA>|GllG}$wPQ|0 /uGT xP|0 /Dqrww߶m)s˖-u.}饗To92tP+++uA#Y>]>>>2tЛ:UR*:v?~>}`P?uyyo=t߿ѠKׇBAAAaaar l2KÖѣG//bASSSLrǿ888(?CApuu {7o 7oݵkUV4k׮+Wtqq9r֭[>j!AXbũSL|r+Wh ڢV ļmڴQI>=|pmQQэ7 ԴiN:ի~5=Ν;뿶mFFF.^X dD])//AP✓'O6l؅ >s񸛛K/TRRR\\\:t萚ZZZ'[<>w\__ӧOgddL8Sر3gķ۷oOKK+))ٷoťK4ؼysI\]]/_\VV4m4m;A[Ԋj1ÇO:U^^ѣdI*2dHNn߾ݸ?~Eϟmr$66VC@Rwgffh":::''G*1U=,XکStRy޽4_Ѱ#Fh4b^wHII),,ٳo߾ӦM+((033y۶mk׮=qD˖-Gq333gg;޿̘1/_"BśĜ}$&zԩSŃ?/wndd4p#G={giѢɓ'Qh6PKnjj"=y򤧧g+'щ'f͚?vQAHHH_dee]|ynnnvvvlU9H|QTT뛐1aR)61TJ?xߺuK. kΝ;Rcc㒒A>3f⋡K,idDͿon׮+@]JNNvA@}Gk֬٨QBCC/_f͚'M{oG"_}յkzyy7 ߽{{{hbbP^^;wV6///;;*55uǎ!uO]j-ŋ⊋MMMmll֭۟)>}E222A6mٕ+W%OM4sy/w C1f͚g}f kѢE]v_^~P*xjQ|y9::^~]/^4XȨI&5|pAu7ܼy#G9Rs?M6⣬42666:t; ?|*b ݻw֭!_F0矖;w; Z=_@;w2eJ#G8p`+W*YZZzxxPy%|ÇsssNɝ+***,,;Ev֭iӦiv~xQ|o)w ur n+;;;gggS4x͛7;E׼ysSSSS4`O>^my)r6Gǡ|%BJƯΕT%--޽kpp.S+_9tЀᇃmv?C;gsW7:t0{l333K믞_|EzzϜ9cW\E}QddޓHoEBuŷ_~ٳg׮]ۤimg666|o֬Y3xZZڑ#GA۰a=ǡ-yięڵ+ oرoll~Ȉ JvvvTTTŻl\vAP}ccccwڥ^"q?z1cƙT K.{~V,[W|+{bccmg㱱m۶]f/gg~ 0y䴴_B 88/y:Ki˖-y睓'O޾}O>Ǐc]~7OO9s@ I;vO?U<{n]J LMM4iڵkh׮]Nvܩv\{XXX8M6j򊫫kxxi#5? ߚ9884mTml۶-::Z|PYY[ʎ^z ~ )R4Y3[paIITuINNrA>/А(u߿ҤIOV^-EU5EhD(Ç7nϞ=999IIIoʂ'OT j:|yyy5؉*ʳЦʳ#8y֭ԩS'4۷'NP]O?effps:WR4nfgzy楤_t?lݺ!CtOz 40C ?~СCoܸqС'J پ}k֮]kΞ=ORRR3gN6mu֭gϞbkxxxI=z6\C\\Z}9IoYhSUWA.\xĉ׏?W^;y晘!8T!KfV,q-Zə4iRV^yD҄;xxx#P%E/x4IMM֭[׮]ϟ?/w}%K(wOyĈÇ?pY2|-:z/{1ƀ cƌ}0)1/`p3g/P|'?AKKˠw}NT?#""*vY`A6mJ./cݺu<_Sv5Ge:m@P|_}U^^^```W k֬9v؂ ^fffYYYgϾ?)::y7lؠ_ e˖_|񅎧{jRRR {)۷oRRRAA{ {{;w>Zlllv޽cǎ֭[?^[:hluwwW([=_8p/...J166.//׸iJJɓfffHMV6xߺuK.AЈQ|>3͛7:thDDDQQ͛7n*711 JHH(//Ν;JݻS*_5k6jԨ˗/'$$Yfĉ:HMƪxb\\\qqUЈQ|Cqpp@_y>}Ǝo/]oҥ;~xL6… &LPzjqƽo[0$$UV;vLLL\n]Ј)o`@_&wPQ|Ç===CBB;/D(ԝǏ+ 333̙3敏gddnW^*[lhР]n޼ۻk׮Vj;bŊSNѱ[lx=NvvvDDD=bbb5o>|ͨQrrrWWWww;vHeHj;Wĉ>PD]YޢE #/^ػʵkB JvRPPIQLQ>m h7O/N)S쀀;|<% b%!D<"z8 kx7tr{)4vYRRR__wvڝ={V,W*EEEbyhh1cJJJ:T*mmm3""b[Rq)v޼y'O,++4iomwǎ?~IΟ?ȑ=zjڴi#F(,,uFMTvus)--MII31}c7ol۶v֬Yz㏾͓:ɗCxڐ|1s>@V*K.?ޡCZ][[kgg? F&_bbbFggggϞuqqijjW'3*[[ۂ|FuΝ۟8qBݺuk>}tFMT.^X^neEEګZ IDATxz!a߷wLVO>}jڵ-2#BHHԁx8,233;VSSS]]z饗 ''˗/766bC,0`WϿvژ1c4Uo.**YT* 3*Aw.kkk{%/""ЌֱcGmyya߷4;&ٳCCC\]] iHHVVVaaa999MMMׯ_OOO7Pn6m 6,>>… ?R[[[]vҤI14{섄cǎM>@'/PTyyy%%%:kV\9y_~9..nƌ?۷NjBH aaa ѣˍqnݺ;_mf͚ &̟??**74!xc C9sfaa᫯(@Z:akkkcc' ٳg===Jx.'Ljj)S&OsNci!K.ncO?9rԱiwW_}5$$D>> @HR( >x #0;%#"$$oɼo/..N@@kǓ/`.׮][hQyy/reA<<laay'644L6ʹVVVi},YbZ_KKe˖ݻ|i}-,,L 8p`nn\.:0___Almmkjj BϞ=_|E++++++d}gMW6y҇9-K&ܷĴ&gyZ~޻w殮˗/7ɗH%r?<$_:v+!!!==oFll>쳇zںmӦ$?z&gL?*55մ&kiihr_}g̙cZ߇Ioݺu\TT$/ttZݮ]s* `o6...88xJ|si|9ro? c\\܂ ihQ>rHvvvHHȍ7$y@K={=tj-.\xΝkkks׮]KIIqww70 ۷o޲e  R4a?-\P_ŋ>nݺoZ}h[A'7`hQ*j=zHNNsXtA3::\,ݱcG``תU4啕rJR)G_m fΜ)Š+?~H/_T*ϝ;@ki6Ç]Y&qvv !77N֎^Ƀ R(;v\l-64jzܹGNMM ݻۧM[oxmcccaajӦ믿zjSܺuk޽ ,ٳOdd ajz{rƂ hJD2̄5kVqq]td2KKK~ܹ @A'7`}||LX>hQQQQHKK[bʕ+׮]O7nxI'' &-JNN^j5lٲf͚@ܸqcܹ_AXvڵkKKKon|$۶m۴iSAACbb٤J2Ĵg(x?裛7o5Jz׿Qf-ϟ?_\\<~xq]rEEE]p!--Rl۷ 7oާ~zcܴiӔ)Sӭ[7.>>~ѢE}8"44رc-9_L ={,]ӳKMMԎ7{;}tyyݻwwGuٲejZl?qDoooz/ѣ'Ldڴi-,,N*#+!!!77w׮]VVVa2Ν;rw:-7Y>8VVV&B@@vx{.m͚5{7l׮]6l>p%%% !,,l˖-.+WjLnnn [YfYXXlܸ- R ].` } kGrkkk{%/""F<ףGb{VVǵkƌEEE#dff&'';vFwwwAM~wC 10ٳ5'<޿uVLLL={3 (33SPkp=Ρ Lj亚BSGxZO۶mcǎi#^ܼyhގ/JI XXXuuu3f)++ <`ii]tꫯ 322 `ʔ)IIIFn n}}ܜfŷ=ħ6olxviرf!!!ⷍD}]ǎ}}}ی;V}?~op$IKKKǍ5;wjN5jԮ].]$~Μ9yΝm:88hժ=b&'&&KHHH2l2eJVVɓ'?5kִiFߊnܸ2cƌiӦi~Е+W.\g.^CÆ 9޽{]yUjӦM_}UEE{v:Sx L:oݰaÕ+W8GM<'J>իWk^)ƛ7o?~n߾}sR}w#-j͚5AAA&L?~TTԛo]fMϞ=mll4$$$%$$( O7899\r/r\\NNNGkў4==bѢE Ξ=+_!l׮q^{5c]hs=qĉ;b&+ ]46lذ[nM8q.\o v'%%~{TUUM2;vlmm0͛7O8wޚßd$&&j_jj'|||̜97z?C>|Y헭 @0eee|{[n?GL<._d'''CȆH7`UsۥKÑ8p 66v׮]3ٳO:u9R{s4#htIO>]iӦ|wWa| XZZ&&&&$$ܺu˘aum  m狷ǎӼ#^ܼyhގ/J9B1cFpppNNNYYYhhY KK˦侚 ;p@{nݺUi:.]xxx|Wڅ^^^VQPP0eʔ@5f [[[ggg}Yvi2G;vԔ탂RRRm&~𨱱O?pHH޽AؼyR4vX cҷ-O$/rCBB㋊rrr֮];i$M}222^۫W/++蜜ׯ{ ** @.h's{/#iΝGv ǎ>}v/.!!!Zd۷oʔ)YYY'O ׬YӦM}˹qFHHȌ3MVE;>M!{,^|_]\޽{]y*dӦM_}UEEY4?pVgKZ~۷A߿9sf }B}ڵܹsj'NصkW}<ÇwE_mVVh0eՒya^yWx/ڵ+44tĉRZ5/Ҩ^~ ,u\X111C YbԱV䋔H#"7n|GIIIH#GܼysN <$_Z S0Ν:"|i]nܸq̙3zF"2Gc2//X@@kG~~~111RZ;/`./:R"R]]iӦ/R@c{wg)uARuY@u"(((77W(cKqtt0O^;0#/`.7oތ\hԁaLʺtҹsK h*++9xp )cGKQ0 ^;0w}pB3"`F$_̈ |0]>uOM"(((77W(c ƍdjZX`F$_̈ )*++򊋋v$_L;RZ;/fDHWd2ggg-c'%% 陑HԩSvvvf5~$O 9/0Znhh:GY **222..N@ԁ֎K+RV^ݣG;wUPP6sÇL&_um`6l9rCHHHUUՆ <==}||RSS6f1=l^{_~۷o_SS3`};jjjoܾ}޽{={V~6۷7mdoQ```nn?8|_llԁ05Zʕ+WAx56mڈ# ?C/~Ȑ!VݸqCP?~2//O,W*/^2eJDDXsΒ{kٳNo͛|ɲI&byhh1cJJJ:T*mmmQTvus)--MII301}Bn޼ٶm_U5k팯;[o5pӧO_x~6_YY Riii JGK1|sNO8!nݺO>￯T*U****lllmVUU]T*~C9s|i#^766:;;ٳg]\\jkk4 //׭[giiYQQ!޺:tH,5 QӧO?Z}vvogt&_t#~$_HO0K)^zqJJJRRRvv222Ν;wĈ}Ռ,^^|233399رc5554]6fM۷P=^i>}ċ;zxx888hn͢T*k`5 a١iii53@AAJzMZ?|i9jZLǧm۶cĬeSSevvvdd/' :t߾}/^֭[xxuuu3f)++sZ Q|GRJL&;/ocC0p@{nݺ5""B߀wzeoom?@k@򥵰 /**YvIĪ>}PZZ:nܸ9s&33Ν;m۶uppWWWT\^PP9++蜜ׯ ЦMÇ^!71 fϞpرӧkc7KK)So;rݻw˗/\'00+TbɗVd͚5AAA&L?~TTԛo)GDD:99WTT,ZH#9.Z8q rɓ'qqq3f2!!!,,,!!AP=zT,;~S>^3g,,,|W1~g@bb{={{3gVWW\'0#G-X@@@k'3+WtRO?9rԱu…Ν;'x޽{ܸqcǎȐ:OI&'x RIII]t1bԁp|W^^~/QQQ>:P([n՜cJPlܸN@HcťT(kQiTf%<`<̙#u$kG-C@@kǓ/|xr\TO g{?xzz#NPՠoF|i]wyGnjj_2|ׯ۷ť۷o LdZ`KJ@7/ȡCT*ȑ#ۺ . ydYY٤I~m}czڴi#F(,,rRYTTxo_l?dȐzۢT*322.^8eM;w,))߻wovΞ=iq)VCCCnjSRRr!Rikk/`Rٵkx{{ϙ34%%Ʀ,U3f̈1oGKR;wN@R\tx}:\t&_}RR ҃np\\x? x̙|&oWkkk4 //׭[giiYQQ!޺:tH,.]:j([xƎ+u $_'"ŝ;wk׮>ś;w|mll222RSS;t0qDEk׮3mذao.**Xg^zͭo_z%ˍ.ͤ$%%۷- WWWMݻwܹݻO{lJ/j]]L&; |/?;#]tICQSSiӦN:i~EyWrss ԁxxy7Z.Ϛ5+++!""ܹsϜ9yΝm:88rA¢srr_Bm!!!EEE999k׮4i-}OftܸqIII}||i¶S]]RryAAfj6mz꺺rzMoo/i) ___www|iEߔֳg1c̟??666((vѢE=lj'֯_/vIHH KHHP(GAgc}#h[fMPPЄ ϟo>QXX^QQh"7Ξ=+BYYӄmiʕ'O~f̘]?۷Nc,F:qD``C0Z:?MMM=zشi}yxzz~R8rțoyiL&u,_.^ҩS'<$GY`?#cɗ%%%eΝ_}ԁq2viӦMKK*))ԩf$_$_񇗗WHHH\\f$_ &y׭[׵k7x… RG"СÝ;w֯_O R+++  p'N[ʕ+={b .]5gϞ ,*++:88H h8LtΝ]6;g8qe˺u&U`Z;v̘1w:ЪYJwޕ:TUU%u-RGjkkꤎo۶M)--mݳf͊suu(4 ҥKRGׯ_e˖?..NpH:wܦMhQ<Qm>Uޗ.]YT*,YkpHZ/Ζ:ZݻzzCBBd2YG!&ڷoߩSKݗ,Y2}tKK <}}}=<<v|LV훛+veɒ%3gδ603R)//d|x2߿_̼~EEEf"^<XtKllٳ@EؿӧϚ5pڥ*&&F.XbpK)//wuuuqqpԱh /_رc.]$u,o₃#ƙ/+..:O7oR#`~oRZ;/fDH3"` {{{___̴Zhn['j~~~RZ;/AwWX}5k֤=z4**JZnhh:v5:G "6l9rCHHHUUՆ <==}||RSSorJR)G_htA3::\,?tJ9rxnݺ7xcر|vq-a699yРA cǎ˖-]_W51<<\f%&&<+++vǎ^^^VUTTw71}Yx:8;;=zT}興񺺺Z} aoܸP(?TYYfJ=##ŋSLфg`iNo͛|ɲI&byhh1cJJJ:T*mmmgoc6sÇϞ=_~WrvO8vh===Ə?iҤ9rGKzٳGhEJŋuYZZVTT23g~񣣣۷o[[[_pAV:411Q,/))̙3m}}L&o }666۶m2W_3R'^:toĈ׍?x{YZ;;;MyBB}71} lH}}={K.6_~2b8ڥKǏֶ@,_|}RO*/HvK>}ċ;zxx888hn5ܷMfffxxx;w{'Ojѣxakk%BqqqΝrGGGD=wZvrr2:88dddvaĉ^1Ь_~Ⅻ˗ /MsI~~kƌ6lذ۷ohB0`Eg}w۶mh6UϞ=}||\]] *++ i$ѾK⅓էN{͖Ο@.vU@@kG4uuu3f)++ U՚ڜ͛EEEbsΗ/_۵k?Nvww7>G{̙;wmA.hd3caeettAڴi3|իWՕkk}o[׮]ᇅ ^|ýŌ5j׮] .]ڲemӦͰa/\?jO>=g4!O''+WN<_1cvmll5kzicck.0((H}ӧ'N|׮]+ 8P[[[hѢ{ĉׯf,M[BBBXXXBBB|'?۷Nj`.cƍtRjjq}{DFFk{ܸqZ Dqnݺ;_򈈈B''P 3vqqy׳8svc޽~K.K//VjƍΗ.]q.I |v˖-ݻwnP__}voo-[4xↆ#G466Κ5Kϟ/]ndlѣ֢ͦT*}ݺuߌ%}}}//-GL&:0sÆ #Gtpp ڰaOjjmV\T*rѣ .]:hР={FG_<.dg`߀"(3b ո%) J&"P&* !Z 6D,L1Ӣ%,~M#Daՙ<3ad梾{Y^]d ;uѣ/빾>22L:ȑ#dyjj3-,,vկ,**uA|M 'OzhڵovUUÇ'&&^|tҥ23|AAA555W$砠?3::zda}}ƍǏZ mm7|III044poooggg[[=&%%Y[[edhh8k֬ 6>|Q"C'''x~E 6_˗/X`ԨQ+V믿>QFy{{6?PGp¥K8qBҿǸqL ^*x{noo?w܎;F9c 2(++knnfX&MjY"oOuuJs!&G޽{8Ε+W7d=qD@@@BB@ 8{RLLwkh6jiiJެ_}UPܬ:\| 6-9lY'''' `ܸq#G|x>{#㥇?*''@U |'kkk'?~\UUcGC|X,.//'J̙3';;۶JLg͚5|I``taww7y yO%̆(&&&~ggŋ ~ ={d->-,,d&yiffɓL԰*_~%Ah, X,VYY-쬬o۶<{s΍u!$sEEENNNGGfX;w.88X<˓Hr~^ܻwo˖-%%%---۷o777;w.u+Ň?~U?Yv)",ݏ?.((x뭷ZZZ$>/7n;lNpp/Ah`jj|)SI_ݶm[\\ĉuuu='&&ں{󎑑AmmmÇ),,ܿ>kkkON1@ ݃zzzN4Ir#I@@Tŧ=|ŋԤnկ4::ZGO?;vlHHYee }KŋNNN7n; v AmlloІEGG{xxt;w?=QMJ#=>dgg/\tgw}[oXѣtg;_QXXD~)55u… 63b^vuuunnn= CCC7o~Nk׮E \0P6_@***zp8gyɒ%K,y~Td  T>'&&ݹsɓJ{Ǐ_x144, ۹s@|Px<Ν;g̘1qİ:<55uƌv\fYfٳݻwB066v„ nnnٳ\n@@7d&ܾ};9ǿ[f#F^zUR.s{2eN~~~KKK̭)))pҤIүqqqN=ztRRE~yw}wӧOҚx7޽o"##|~͛WTT'T@ C LLL?\.weee]]]|򉳳X,~葱qAAH$jhh(..V^ 6˗/.[lƍ*1--<^rsss IrWUU(3ӧOנ 6=y{IWZhQuu\,:::%%%K I7m4Z777qM)Xpa{{{NNNJJ_M##azʺm8NEEENNNGGfX2ʬ/>|)riiiGFFVUU/[_裏ƌoٲݻ5kdD[[{޼yuuuG%͂[o޽Gd2}х >}zڵwRtد=Oc7ߜ:u*77O>544$/]~}O|m7qD]]'N1|pl(ZTTOTTŋUVdٳg/]tӦM֭<<<ܹ1t}}}%KXBR.sO:u2Rtد 毭>}z[n}w===L/TXX8k,']0=zdjjjbbByy񢣣=<<333S ֭[wU.6\xqƍnnn{; jL:TTT~LL̇~(y_nnnEEEt6_TE__?11Q[[ *QWW7o% xKKKS ᅻ* 2oܸAw\'' 6;l6_@6>> ]9999r1/suakkKw:mݺŅP(0a[jjjGGAeeeVVV+_fff ڵk2{kmmMII&MQaq[[[ZZڬYHx?|\.7 |iH2Gx ,` <gdd(^'&&X =zT;wΘ1cĉaaauuuʭ9T*!!!6m;HBCCϞ={ݻwogg_SSkK \.Wfo۷oo}Pb``@1tDDDjj={~缼HɥޑW__q̙%%%?sDDĪU}%Ep8g>zhڵovUUÇ'&&^|tҥ3xX,1cԅرcj# Fw*iRR3yloowc.+ eejjz…厎iii=̮\BWVVr8H$\Ν;sssHҸ\㯿dדϟW4O?TXXyҢu-<;s挣|@wxL7N%%%mmmɓ[[[zWNOO߷o_^^ބB)S-TUUԼ+dݻwL?ٙݹ`0 hkkV0V\)9nkk ȃe899I[0#G󫮮+ 6x m۶j%Nn]]]---tPvSy9wvveff-` 9rΝ;tjkk&Lj*Ͱn'ONVC aXtP7MMM}}}S6)gIIIGkjj? 6|P7#xqfffBKK۷^zСA/ꫯ$cƌO===  ڊbShhhc33𐐐+P6_-66ǻ|݉`mɓ0khh8zh`` AG P ttt8p %% 0qvvؔ6l/_]lƍ;vw#ccもHP\\# \.:++ށF,{yy-Z\.WOOO23̙3555nnn555麺kgە+WΟ?<77/=Ǐ\vf͚Qz[R{{w' `\nXXyҢu-|jJ IDATdywwٕ+WJ#(KO%m}}nrrrcc*pp777ݶa%QQQ6_oNL&<<<R044,,,$ $Sž6m---yyy||xy#0aygmmK%%%eYYY枞b$(*H{nww3!o*qڴiٙ<¢z l cQQy" :rHWW---]]]U|I%'?~\UU%_ MLLbHBk'kkkbd8E3gNvv۷mmmzg3 ͛d5y|R:::%%%KzL ӧӧO'%%W%e2"_s /*um۶988p8455}||E"Ç333)777 B777UVV&ykVTTtttlգa=cmmyƶI_א{dddUUU~~~||eU t钯-3"Ż6_Th۶mqqq'N=q:QQQ>>>QQQƮ/^hnjj|)SZfmmmÇ),,ܿV}Vao]\\,Yb QafϞtM6[N^M7xT-i```yy!}k( ---|CtuCCñcʫC~C!9 ns Н'LN.X`?Y@M7jԨ3|蛱eRR; >$x<^VV'T___C*ܯ9ktȑ2w`3 ;;;&Nry1|֭...t*B066v„ nnnAZYY믜1k׮ښ" 'MTYY)s3fXڵKR~_$ ƍdaLL eX .m``PYY)occSZZJnذA \|vٲe7n$˽-ZT]]}y.'o\.w̘1gΜqssIOOmooE2G9ey[>5pttLKKq,o}$>|x444b044,,,$Ocر BXejjz!uuu˹\nxx8yᅴn駟Joݺ<633r yZYYpD"Q[[<**z#`_d2SKKEF=eQd."sĚK|>|Qӧ?#c| 󩩩놆cǎY<|Iybccy ,y[ 9;v,99EH>`0t5={ҥK7mn:<00+33>""B#FѾ~sss"""nccSXX~0111˗/2eJxxQQQ>>>QQQƮ/^$˿}}}%KXBue`b)~"}>ҿ>(ǐTlvvvY@X,]xϟ7oٳg/T??Ý/*(Qާ\]]KaH7oVOԟjp:aG|PƔ)S6éQp R5xa@Utttҝ;wtuuԟ |PCHVWWYYY}g4/OM>|{?y`ܻwD06_TΝ;;vHNN7nݹjZ[[+P,gffRT .1 6_T޽{}١CȻ]-[?\Z8'W)8'"88XAboJ;fe0Jkcc\[!kK˕|ijj~>x)lDSS޽{@ĸq-ZdmmK<AP\c%B?ΉoVe0T:X,V~u?/,'$$x ==Z۷ox"\f ueJN:4n8 ֹφuvv:tHBc>%M7 ,TIwVWWׁP,]v…dIJJx }}}PCCCSSSrJ主{ժU666N"K . ch5k$''8qS"6Ғ7 pMMMO?&NH e0L&j˖-r  nݲo?J* gN<)<8u{)8#? ySJ(SXޝPB[[_k0N:cǎ7x?; 00ܼy^dtǽ{!44֭[Ǐg2eo޸q˫GdBi]]]RnfڰaÇoݺD<oDDJJ"+ζɊ_x?TѣG7oޤ; ʕ+2Ϟ=H,_bǏwpp FGGKwУy 999=*L|xիV"?f/>>׳/bkuu۷U ^x԰*} U 8NMM )d ԐA K d^7n ;tP``iV\9gΜs 5Ԥ1 r <"Oٳgs܀7nn+3x3gٽ曓'Oghh*=\```\\ܩSFԣ\P;a77ԎI lwwƄ322AC,ӝݝd2W^MwҥKL_~YSSnݺꖖ 6n_޽d#FسgA|>?<<7$~ر?SSS=iҤgdd8;;s8sέX֖ `0~Gkk-[455:tG[y䵕FV>qℽP(1bDaa!e5k0q͚5FFF_~e񩯯߳gǏ׮]{՞>}ggg}zرr׮](++knnfXw^X|ѣ555.\t'NH.\rر+V8sLJxzz&^^^,,SNܹM:uÆ w,_|FZb_g5{ذa"6_T qƑAIIɃ-Zdeeeee5wܖlvVVVFFgAAA!rrrƍ7rȓ'O^|YrW^!LMM޽-ݐ:u[ qPPБ#G?niiIz())ikkspp O'O\TT$ypIt666l6[rZWW@ģ IDATb<-,,$MLLΜ9S/Pr `2"HÜ9so߾mkkУv???@_[[鑍  lӧE>SRRB^tIOOO~!l(T֞;wndd[#G嚚>>>aaa"Ç%gg炂r"''CGGfX777 B777UVV֯RdG:LAAAQQQ.]U< IKK=22*???>>~ٲe`P 2 ֮]`D[[[WW{w122"ˣ|||]]]/^HzyyEDD >Ʀ'LMMcbb/_>eʔp??~E^yɬ_^^o+ )..nK.ݴiShhu`׎/̙3G ?mw?o}!uwws8Ç/X,Ý/PXXD~)55u…t'R}5jttx;999::ѝԭ˫aԩvZh݉T2))`Н`P :,Ydɒ%tPPHwJWWWHH 244ttt;v,A` wltuuuttG3gNvv۷mmm(j Z///*$ Ą|$ \.g0ROFy>ER(8G95weULLLܷoA~ZZZUUU˖-#/9;;/ c߾}nnnL&>pӧO]vCTTTtttlEY(X2y/R D>$B[[{޼yuuuUQQ-;L`"o}^|P&zj7{Knڴ)44tݺudy```yyWfff}}}DDG䇍}}}?C###EDD >ƦpaLMMcbb/_>eʔp???y5|||]]]/^H7...K,YbB99 RțO?E`"o}|P!}#TQQSaa!YY;| YEpС5k֐o ^ gggS԰𜩫~) )44tʹ!?\uš=p_Mw<<<LLL/311 6_ahh8vX`ǏTC[[[KK,@B|P!l6_TIwLLLР;DsssUU-Y`P׎k꫿+Y`PcG;wN/4󳲲|Çw޽'O0{ѝ6_hpΝ;v$''wvvjhhFDD7\j" )S\-..(X,x9 x(СC.^^^5<W)/WP\ wI,GDDPhM6##3Eۢ"Æ w`S2D C$Hm&MMM{ݳgbq-ZHz#s )>wc㚺ֽ@P `"P@A#8TPjڂ񅢶:"b=PXVQTVT*CqL}O.$ ryX{/iX,ǫ?URR  i:gmW櫣Csŋ4x<4$899ȠϏmLL ɗsڵ)SL<9''X]reϟ?'(++CCWYYO뭭4? B4511iqi8_jM[۷oiL6));M[!]۝V/aڴi۶mKIIimmUVV633p8:"G_MO oܸAs~\Oؖރnpۘ+]zH ;_zvm~f;qaII7|?%%%77psss%s6tP(,422ڿTTTǎ0'Ox۶mc:~H0022֭[}RjjI|}}+..f:xC<{,//@!33GP`~$77Z@Á 1bDdd>`c @0zhCǎz/=Ehhhښ2u8PoūL </77(@+)a![ rJ1o0$_4)))=:͛79NE<jbcc]պ"//oΜ9Æ /_&455111IOOzAj%%%k׮7nyHHMT uYH!mݻשR1ڵkmO_rE܃~OC/D"QKK QtI&1"2228Nbb/2|p''DUUպNNNuGzjuuuC>ȈsBHss#G! !񘙙uj 6lhii\VC /A^uuuyyyŽ9(GH0|˖-3f̰ ʏ=:c mmm[j.ӧO̙p׮]fffs=yd 3gδnll|)S?eM*&&f:::ͫ177IHHE%rssqo~u߿pٲe}5YQH$Zzܹs'LpȑK455qB])++o._822R_|񅕕!DV焐3gΈDϕ !3X,6mdd~?Ν;>|099+_AxUVڈO!C߿???_OOՕŋ?|Ν/_{9s6}v??۷o755EDDP\.7==W^j⢢޽~G޽_~zjXXUgժU/_޺uW_}E?;w̜9_~Y~_~M5|p…...߿<11͖~֬YsСry8qÇi!g?3O~7f1|`˘1cl5kn߾]QQb^~]XXXWW9a i-^x~)uNU8zhs纺Jnpss&:ujΝǏ1b֭[D"QSSSzz-[F.]J?ŋϞ={ԨQK,s_=j(!C\tI(Rwnm k'"W_ݔ}Zboo/YH},--pjQQQ ZZZ4Ւcbb|~zz:M咒 .xzzB<==O]vLR3={s[nEGGNӿ#eH)SDW2-ԅQvvNJJJBB°ad=>CSmň#}>{lygᵵA&$_C]|k899_޲Ysrr%/(++SֺgϞ}j333%ޒ@Kd@W\.ٳgJ꺱lPH],d59'%MSlFell|i”}}} zxxDGG;88ȹ]]ݍ7677I $j KjhhLR3Suuu}}t P Л|)BO>Ӑs{eff~zРA:::RYRWWW]]mooYXX(ZBg```NNP(|u.Y"##***$UQt)#sINNniiy1.Z'^~J,d59'4kSb}iii'NRUU5ϟϛ7kҥM>TYYTPPP___TTaÆaÆ9;;K955ի&O~ J!Uu}rFFFu==wHPaF $$$**JMM:XqC566q/(zzzvZxԩS׭[%fxxgxx)S{"p&Mp%Kt0EΝKII444]\\>yZ7w鹻,d59'"cGggZ77Yfgdd,ZfFN?_nj_YMMcС ,hllPp…۶m#()) 8P{ƌgVWW:D`` >y򤱱]aTYYYs;vptt={ hnB7o, IV ЏPqGp,7#Q}d}$ ̗~@$I__ߴ?SVƍ۱cGٳ !Νcdjkk/]4mڴ6\֭[ůbΰʚ9s?&ZB[,~֭@@'ϙ/khhG@>\pdKeeeaa<='&&JͼBf͚CgYYك}HbX4d&+yyy<Ϗ@C(++#KRKKK;lES-99;&&ؘ秧wK =sNݢڵKt60>ɗ~`ȑ]1Qۦ$''O]I&Bkkkըkuuuj}W4(+V+W _@5jӧ% SRR-,,hzxxDGG;88?ƍμy6"deeڎ9$))MsHDs>,%%۷@IH,OKK>qDTT?>or -jVɐBhV\t $$_ggZ77Yfgdd,ZɩSA׭[WVSS:t O8Bx 7nܰٱcDzeBCCV"( ?;voB"""$C̔M`аūCx4@f:mmZM/͆ǎz;AH˗/Xӧ3tbɗ7Qt<oʕL}/}QII_t,8Hw IDATj*&!ҷ<{,((رc@q"(66L@RRNj`:~xt_/}njt\殶6ݼX4DӴH$i@vĉ4msssi2D] :::4mB!M[X[Bmh"$_T[[gϞݻwS3fFFFل9!dݺu4wݏsB˗/i8:kllp[qNh_}vοk%mRRM[HD6??_ 2,>}F?.ޖǥOяK/а555e:|a̕+W,XsBrkkݻw޽+YgŊ~B[?WJJaX[BM[P(kcccurrRm#""p7nܥ t>ו4)?^璘 m„ ]=|a̴iӷmۖڪlfffccpu4?$3.fdd(6&&F uwwW»HHG|a?XRR7sss 7779~}x4󌌌ıcǾL]Kdadd[>#%%I&~ ɗѣ%%%.eeecP/cX?З3u8/1bDdd>`cu:jfΜyEc> ɗkL]ǎz/= "444lmmMMM: &2HӧD"^ǎz/=E$Z@I,<CD" L}ݳgFt,͐|)H닊8ӱ@ǎV\t !Ѓ|AH $_z/а555e:iWM!to,~a @™/= "򊊊:$_V\t !Ѓ|AH/X,GGGރ @BZO$1t? [[[SSSt#Ə{7Dbb"o/̫+//g:~H $_1x@ y<=1kss맧{.\5kO?ԽI;_}Go$_zu&b:n&ZZZ655Ϝ9s&&&&Lѣ3f600غu+ VZؽ_}PL}}}^^^QQӁ@'ޒIqttlåK{nvv~K[[[ZknnTofffG.,,liiٶmĉ5kE}7oޤ>:u955UCCHjǎ0ssb@#ked&6)Hm.k.rv۞䬥ήJEEE<ЪU-[*>}ѣG7n2:;;<~Mϟ?־~P(hzZYVw?Emv ?42}t7Dtt4!O?e:~HŒ/_N<977Aj贴4---z.Ս ϟohhhhh\___\\LU<#33{̘1#G|8<}H>9r$UիW{ٻwohhe˦OK.;jjj:::))) Æ sssճR %u= ɗfРAk׮x6O}s߭ΝԔy///j*EFF͟?իW!9ɓ'T6Lٴiӊ+f̘JUprrJKK믿LMM{n_YVX׿Gbbb杴 C8pyŠsrrݻh"ĉ5!=rqqW7BHZZZJJӧOCBBƏrUTT<==srrBgϒw[WWW]]mooYXX %ȯ}m*O}s߭TTT>۷?^~?>><044$ܻw/33׃ ԤR %u?0N+W\re }/G諦]]]׮]gQ>>>wswwOJJzůwYBBBBԒpOOpmm)S\|}zzzvZxԩS׭[%%OjmL}s߭bϟ??mڴѣG WIEE%>>~ԨQ|>ZVH|OOO++]6$$ѱqC566qO3Ye _}WQM>#plmm@¿cI>R=*33_{wcz ӁtBcSVP(?6377x񢾾>Ӂ_t,Ͱͧy;v0Hp=d^7zJEEE_ F Ysa$}y/^|XQ X/D}'~~~B{~ɗ~ ##Ύ$&&/ÇwrrJLLTUUo߾T'|ѫWVWW5JppdjuVVkiiٱcGiin޼YPPp̲dnn~Aq常1cH6߰aCKKKqq}***LMM߿a ,--=ydUUU||$ 2$(([FU)#GX[[I˗lv7K믿-ZWTT}3Ӂbcc!thŹLgu"hsMHHJ9s8PYYYEEE"˗/766Msj+W*2dH|||?#cVUUm_~ 77#F<}4+++00~blɓO:5|sٶ.]"؈_@Çܺ2zoL9sF$8p`ڴim044 u떵5ukkk/_<44ܹs+V0fYC:(G`K_WZZÅ JTVVӃyyybb"ݹ\[YYك۔XÁTUU?~r]YYڵkA*vk֬9tPyy}r8׷te\%fJ8q>b 077TǏ3:5@O@+++#KRKKK;lE_s׮]044?sLy>yD;{!PxOx)699;&&ؘ秧o_@ߕ{y䜩N)))pႧ'!3..NrԞ={uttbbb\2p@}Y=c&l۶bihhxyy۷OH'OBñūCHu#G$98j(!!!&&&bŊirM&@!C*))%33S[[[CCm>k׮=~xҤInnn555ԭ (f#""kkkWIΙJ~M2tҒ,]azz+93!dƍ"׿ۗ_~)~N]]]rkH[ZZ G\K_7j(ccӧOK[XX4,,,vppg ? !#G411IJJjSSA UVVV,n۶LJ~"III'O`]kqfqJZ`yDD£3J3d„ RWWwtt?| W10` .cǎ?cg uuu>/ٯJEEw/**IζUSS:t O8Bݕ&O}K4$_ ;z/=K?b\".OII\Çŷźx"pӦM{k_H… f433駟D7xǏArttHp8xtɗaȐ!AAA?P(\jլY={r{t8H"gI&hlذ6w_xիWWUU?n:t(--wݾ}+%Y~;wvޭ_޽lmmMJOOrK,x{tҺu>qDr~((((""B'~Pq"ɓ'Vsegg؅7vAׯ_9cƌ2BHUUW-[O6m͚5 ...cƌak֬}vEEEkkSv9~#Flݺ5))I$Qܨ !dţGVQQ;wk}#Ytᆱdɒg*C{ṹDػKhO> LA`ᵵ%ԵzG|՞={lٲӧ?xҥK󎚚ZAAAccʓ'Omhh>ZZZ322.((?s}}}qq1UMLoo1cƌ9̙3qG2n8BOOɓ'=%.5jÇㄷS\\\ll,/СxcK`xyQ6deev}6Lٴiӊ+f̘J4hPAAUڵk<Oɡ.^|Y\\lgggmm{G!BYYhjj999eee1l6[/XHACA^?K#G?"򊊊UUUyyyLɗ~o,Y_LOO߹sŋmmmm 0,,ƦX7o8QWW!!d +..ٻwEmRRR>}2~x.# ={~uuuL8/ȃA=zmooߦ;S@w-t !L}Mij!^ zGvv?'tVTTԚ5k"##v!ܻw2/o]vm޼jHHȉ'Ǝd h o vvٕ>8e>>>#F ֋-uA@_mݻt2qGuoxi6lO!B0)))99y7o0a@op87Ȃ/:^1|||E"QJJ  zunn:|`̫W^~-] šn-]vKWnJ H]aSN-))iSgϞo>P(~;|%w!uׯ_KjzUSSSccctE+HDCΝ;w\hhhXXӱ|%Ǐ !"66pOPSS8p`t-]B -])++<["p8nfkhhtGzyĉCCC̙Q_Cl߾=77722b͚5]jjjjVwC:hРn]] 4HUU[bXZZZBUr-[~H!K<==rW\t8 Ҩ Ŭ\\\p6۠G@g@(h˖-c&&&޼ys…ȼ%nݺ|||:$_qܹ7nB޾}ݽ]llly<G~7op8LGAHGZҾ?0(/433۴iӒ%KD"@ 666=[K RaKqvvD Ӂ@W}gwJ楺:22ѣ_ͷl2c ++ رcwﮩ׏9sEvv]455Ν{Iaae!۷o~z|7fffeʔ۷ow8\J`nn3{lyĘ$$$GҞ |"`ҥK߽{7;;oF]XXҲm۶'Rk֬eee-o޼I}=33S ܾ}8/))9:pv+ٳg=zdooommrGǫ555DҞjժUCILL5)/_&1!"## !Lz+W߸q?,fffu}}[".+ RXlW_}E]JGeÆ k?}T۶op݆S Yuح fff6l;6 #Ο?/+K*g/_K@>Gܼy?f:xC Ù/=(..y޽o466?8yduuuB%Unddmll\UU5|q;n'M$.}7*{@ `ْmij߶zԩ!Qxċ`ggG?\mm-}4N8000066b񷡭-O7Y[[29>;;C2t? AP]|!$''xeqq. qBG455yyy2wwwHDbBУkii]zaXG)[9Ǖ?ni%x :vĈLf 8p޼yaaa999{]hnZZZJJӧOCBBƏrUTT<==srrBgϒw[WWW]]mooYXX(3~ĉׯ_oDSN>|"gTbl6oO۵kŋNn:///-w鹻TΝKII?*I}͛-[VWW'ھ}8ΤI.\dqv+I[ikksQSSsXߊzuK;_Q__WTTt mG {{6_|#ȣ? =vvvӦMf:Ӑ|sݻt>z(:? cG=;_zw}' l=חaxIyyys6lϿ|2!%Izz[ RwpphSS|̝;w\]] 9eDDīW&6m?~>f4XDqͳgϲX,&x]] &|?H2ζ-))YvqCBB*r劸}}FU)N bXgϞ,r/_.y,uꛥꫩ͙3G2*.{aG@b.^~Ȅr8[[[33n0H0&##Ύ$&&/ÇwrrJLLTUUo߾T'|ѫWVWW5JppdbVVkiiٱcGiin޼YPPp̲dnn~Aq常1cH6߰aCKKKqq}***LMM߿a ,--=ydUUU||$ 2$(([FU)#GX[[I˗lv7K믿-ZWTT}3Unn?=0C$^zܹ Tɑ#GTTT}C*++?B`Ƒ4iN rJ>?S%C D]YUU}}bbbGӬ~Ib:::'O>uΝ;Ggg֦^tʊbccccc#~)NNNvss轹J3wHtiӦUVV 0(((..֭[o|sέXØe˰>\pdKeeeaa<='&&v@߲)gXs~Ɓ#G 5mzzzHHHrrIX?bwyܼysС@!C*))%33S[[[CCm>k׮=~xҤInnn555ԭ (f#""kkkWIΙJ~M2tҒ,]azz+93!dƍ"׿ۗ_~)~N]]]rkH[ZZ!{Ν;b̙t '5Ӓ)))4 =<<HCCBȑ#MLLelrÁ(۶mHkkkRRɓ;pnܸYcj,X`nnLL%w@@=Dm!0a!>,#l >}… g<ϛ7z%++ֶ jhhA @$_b4|oo'NDEE?VZtir[[[%k B{yWW3g~G4Y΁222V\پH$^|y? 򷭬 *((/**ڰaðaÜMo622#3ޛD?SYRSS^*E{/^9v˗KZuz]]]%K111;w\xR/7oxq /=>u svvvmm۬Y322-ZDSA׭[d5IqttDرcǏ:<|~W***~QQV/rܹ9s̞=ٳLdРAMMM4YziӦN1y˄&4&&&Ro544tj|Ĉ׮]kS.v=r.|6cXgςjӦM)d}}Y왦ܹs}||$D"ݻwx/_N6ٹ^ֺ#H9D"QKK'Mԣ0"##Ύ$&&/ÇwrrJLLTUUo߾T'|ѫWVWW 6lhii<88Xr AT˗/l#GX[[Bhf "jbŊzqIVVVEEgΜcǎ 4澅YXXH544a%t )Z|U LMM"""?tᘘ7o踺R v:{lvvvXX333>䓒BȞ={x2v^^^w<_?݋O s=KKK>|G 6TUU )t婩 _( 2220a8S744ũccc=</ZPQQյ˥ I<==Ǐ///dj"444݋o 7o^eee[[[Fkii)}xBHTTTJJJFF>L{n]]]}}[nEGGm#""#p!CwS=p႗!o! !+V|7nܽ{goo/fl99ŋw8,Ar 3󛚚,--666^ͩFFFYYYϞ=[`)"{ŋ&L0f̘'O޼y'I&MD}ѩlmm?ʕ+[ZZRSSG=m4^0!3"+رcgffQ׊"+W,((xiff~(xs# kL===eG422G.]D$(((p:qN+HX##◃XWq"}gϟ5k.M}/P|`r~~>ڵkl6NNNŋ%%%3f̘2eʰaΜ9o555GO6577p82wwwZ &RΜ9sȐ!^0+t(cǎ566>q`czzUzxxDGG_8S,SWWWFo'%%Q/ᑕuM??GFEE)))j'''OOfBl J[[;,&NtRϞ=/=qgn۷GFFwy΄uvv?n"Qݖ,Y2k,B,l &_eoovիWDEEM6lξxܬ7bĈ.'VHGGFqN+A^-~UV߸qoeee3gΔ s/RSSƫK,1;}cFFY@Qr0DB_SS_`صkڵk#""L{4AQAttرc?@V\\tqI[[{чqӯUTTtx52!$00/`$Ox / EWniiVTTT'Ք7 IDAT?~t>^2@/RبtiO>1b>Y E( ` ŪLgWMHΝ;l6{ҥLY "))f'&&Jo: !aD^^޼yFp\Binnf 3nܸLѣGk׮4ih"$$ԐuֱX3g'!uhᎨTիW=uuu_ݻj``fnnrin] fee?y0/kii}]酑ܹs3fPSSKMM={ޜ9sRSSpϷoߞ3gNrCCÀUUUS;vٳgIIIFFF4''y&>>~ʔ) w&_^0sС֭:ҥKl6eǎ/((ϧu_}UKKKIIɏ?XQQ;]P|`LMMMddmBBׯvSSӭ['Oڛ9bgggffk׮Z~.;k,33MMMGGcǎQ}  |}} !?׻Lۛ=xUW7檩QYBB￯=jԨm۶ M(慈-x)))VVV񞞞AAAjWTT>)))-]822Ruuu_|ɓUUU-,, !NN9y$ۿS;B-~bŊu?Vp8Nrww:tiӒON,KAAaȐ!666jjjAAAa,,,$a _?DDDٳ1117oquuCCCvu찰0~DEEgffVWW|'%%%={ٳ'-,,2d s/^͛7OhB1/}Ä9~x>裏]\\ ŹT444֬Ysrq1uwy'..N!=a-UYYك;gXݽu׮]O2}t7oޜ:uj֭ӧO_fMJJ ˄ ֬Ys튊;wZZZ=z۶mǏ翱mʔ)E***:::v^Э$Ǐ_d HϱXׯ_kjjZYY &΅o@#bkk+H}---ҢRRR222h۷ؘdfft~х !^^^Md=WX!//#H݄Yfu>n5554ai.AxtI?755YZZR_mll/_@bnnNeee?{l3zCpw/&$$\v'I&MDTVVZ!!C޽; > ;8Os[6fBȕ+W+sUcǎ?wEKK>Ϫ#""ܞ>>F&ok:ܺ/jkkw7077e:o6WtttLLbC6k׮l999ԇ/^̘1cʔ)Æ ;sK ԇfSVV_%$]믿wsԜ9sN>;~~~y!_K5>c8qB1==]WW̌ =<<ļ aÆmذ͛7oJ=DV ߿5j=-cƌ7n\ǵx<^wo][[mll$ п E˖-[jХ"vrr +))ٳg… GO>ӐKKK}}}EEE///[[[MMBԩS_޹BDd#KKKkiiy .._xC L(慈y[\]a:dX{=}GVV͛7=$ꊪ|||<==}>jݺu^W_}5rHgxYvv6Q'N< Zt###OXϻeŋsMMMÇ766q޽{;'BĹ-_$!++mܹΝ/H%''֭[;zxx >ٹѣBGBfee7bĈ<\.W0ŋ%iccoxAAAFZlĉֺu~uuu߿/0eee3gΤXr>cԃ...L`鯿ta]]LGXUU/<z(UTTtx0!$00/`$O˗ݻwMfcc!@(_d,Sw?~˗o-l E(?,ٙ wP|"_(((L! $W6`1B\Ƶ'$$L>]UUo!UUUkkk :t(66ox---bv^~+< q 6? I&1D6{n@C1555涶 2[n}'O\QQA7559rl׮]\.w֬YfffYYY&&&ǎB~ׯw￷711{A章I%tlCCC||<аЛ0==iӦݾ}ڵkl6wBrrr/^())1cƔ)S v̙///O}hnnp8999eee߷ۻ},--9,Dt]WrQM+ٵw%LJJJ~~~r!// _s͘1CMM-55ٳzzzsIMMURR >߾}{Μ9 D6\ZZzرgϞ%%%uҥKl6eǎ/((~'9DY~`6Q$_ <),,$''gϞ= .=}tzzӧOCBB,--srrǏw>m}}}MMfaaSN~z }ʬ<<<˗/ݽ{s7%%sFFF677WTT 5nNQ7i:[\.0NNN]NLYF^ݽ{f1d3O;$󥽽Uq庺MMMsz:p8jkk䲲:;|!.]joo7nS4x<ެY6l f`;v8q{wСF$**~AAATW>C ##5k8q}M:uڴi_z~ !CP-;$? PO,~*9s!7ٳg7n477g}ODM'Sԍn[~G  5=_0_Nzz:!k#:uo)|'&&&5554̞=f:tL]TDŽΧ9Q| /ҡ ]( `xH֕BlmmhDEEdddhiitKKK۷o1̤?-5Yu1o @DEE < _dݘ1c!|ױcҏ IKK7n}O-->ڵkO/\]jmmmjjt 0X,@CEֱX{>}#++͛~~~GRRR5ӳYO{F֭[իW#Gtpp ,Y_~ٷo_UUUffΝ;-Z$''bbccϟ?z\ooW޲.*M0M4)77z _:77s疗;wEGttuV***Çwvvnjj:z"!fܸqbǎ7oFxQF-[lĉ!\.W0ŋE _.i8y򤋋3#;v[/ܾ};Ya oo&bG)A8;;3 f3 ŪxcGе{l___CEVTUUYFOO2z͚5kcG̫ܽ{wMM !ݻL'^s;v())1d#&=}o=x`CC!iÆ ӦMc:#F0P ]yc$/H}zff֭[)((XXXL6MUUga}Ip=)(SS/S`f}wǎkkkSTT\x͛{dV@M0!!!Ν;G0aS @JP|aUuqqimm=r䈹_~H/̳8qăVZ͛ 2%222&&FII 򊋋{Ȗ[nijj0puw}ڵkLgɖ)S0z;"_)B@֦LYHV4t;(H/RffcP|7o0d]BB͎b:>_$АW\\t O@C@l6LJ P|"_)B@P|)A@)0-!, rssN/R%%%cP|"???#ð  E(H1// P|Daa!a::_7 $STPP[gcى}:ܐ7*))M8qʕO>ڃgϞk׮vٳg͛7oȑ:::ʕ+f0ƍzAh`;;;ѣWXq5uֱX3gtҬ'o9s b٢ƍ_zTWW7==loo9Q_X~ۭ!ϿpӧOKJJ֭[Gz*&&ÇAAA۶mKKKٲe˗_~I}>w܌3RSSϞ=7gΜT%%q8 ۷̙S/0 @UUUTȯ˭+V߼y?eʔ~.G>3((Yo򊊊gyyy!%%KGFFpY,QhhݻwݻG9y$ۿS:700Xn]qq[hF斗B>}zҥŋӤ`Ŋ>R͟?ҥK ୂK?DDDٳg33={<~8>>G8ٳMLL-444!!a׮]gϞ -,,2d˥꫃nذ&>>^]]]T$B'|ʕm۶}L*Q;[BBˆ#444!K?(</77ܜ?ڲX,BHiiÇ?#...UUU$ ,//OMMU> IDATPPsCCáC)SN}wSWW7557ҌRRRZxC!...=ZXXXhhhKKKC,kƌ ୂK?͛SNmݺtk֬IIIh[[[rrΝ;---Gm۶Ǐx<ꨧ,YBO?m۶^^^|ԨQ"577gffnݺАxzz3d:Gj…yyy[lptƍ_5ݻǏ>BlmmS_KKKEsݺn݊{х !^^^WT!C۷իGBVXqvx^I+V|hYAppcc#AZ[[ Bojj5)))::Ӣ~ق ^zURRB4iAGG5??'RAA/$1c8JsTݔ?M6۷Op͛.]_1cP(ױcg IKK7n\rʂOfffRO<C/8r!bС7ohħr:;vÇ{·D͛7L7a„#G0ܠ @CPVVϧ^vfS*((';;M2eذagΜyQ(B,--ʼndaab C{tkR}}|{Q"ihhߟФ~_m!3MLL,))ULLÇmۖl6ׯ_*v8::P-񊊊AAAWSS_ !ϭK.5665ŪU8ΩSC&%%QcqtoŊqqqiiinnn4iߊ ~[{~WEPƏ_~ꃋ˯z 0[HEE/<zX EVHťP3*(/=xݽC{멩T[!'e&$$1BCCrGy<^nny=l7A@֡Blmm]JIIՇ:ϬY$1oVX!//#oEϯ^wQy$ .KLL,((زeK7n{5&3a[Yرcfff˖B~8ʕ+ &,!DAA冇I|~ U5v7p골$M'jfIII.]@/B;v'uuuhzxxDGGO1f̘q?~CmԨQ:;;r\1& U5v7n#ʥKFemm-*wihh_BCC~7 ~bݻYYY7o;zhTTQNNN>>>bbccϟ?z\ooo6t>CX}܉.nEW!JW'5v7ϒ%K~}UUUeffܹsѢEPbՖ.{gϞ}75k֤={vСo޼?t/CVVV]]ܹsϝ;GV?#::ZݺuKh{{\4jԨe˖M8Ғ:rO;txb666ރC+B.NkV6r ;vn޼>wbeggϚ5ëW |2**744.~-RQQƫKZ ]JJJZdŋ'@7\vmLꫯBCC[@/ʗxb @cnnagq֩0dΝL"D6AYLן?~̙sA Hڵk"""D-&ccJ+ټy-` cG/R4lذϟWWW:,SwlA zQUU՟te(H/ׯǍWQQѡ ?>#@ ETLg^|f\mmm{{;)+Wddd=plق7"@g(HU|a:?3d>ggA1bXL455C\|sM&O@a a˗/_ldX+W?ihhT0qX  x111 ه]{Վ;rrrVVVه/]׿U]]M_B,Xt. %$$477())1$+cc_v/]yA&MtP|"l E(H1// P|l'A@֡$:y3g0\ti֬Y-s޽{RKILLdXL:uޛ={_==LP`:ԩS}]vv6!dԨQ7o4hӹ֊߿VSS#'')hп E_~e}};/^_geeBF榨XQQAuVPP3fdܾ}['OllSSSFFdc$[__/Z}eHHdc{VWW/YDÆ 駟$ٳyI6vdTYY9qDƎ9޽{ϫQo2dx<^^^Ga: Ç_gϞݽ{?LQQQillڹ'켣F?%===̋y{wު*333J6rС{.[L$/Rg``f^Z[[Ԥ=x݆. l󪨨,\Pϫ&  Ҋl:'M|:::UTTx^]]/^H6VNNz2/@UVV}Lއ ikk8pVUU566Θ1#$$d2EO~I mm픔WCC***Vyp~^EEEz=!''דێ5k!C899۷"%%Kr䦦\.w֬Y;^F@ŅBQ; (hŴ45׺"EL4%hFi.-]7czk 5%56E-B6g~oaā3}{wg{饗맋PQQ/aJJJ׮]_wu˖-Sh=Y:9zhqqs='UO?t۶m}||z]w|3::sTwVR*#F/:>ۂ \M&itM2FDDش@LE~>}tɓ_}U'O~g|ܹ!!!?c^^ބ ^u\TfggFGGs4hбcjkkϟ?uHǏ5jԵk׎=T*mmmmHT:t('''((?"""'''99FVKOɶ+Joogj… 3fH5>|C΂!I݆g}ƍ )n]v̬yws_ܹskת IDAT8`ooeg;00pǎM&itM KZo-ҥK|i=u7_Μ9;~wŷ~[T7smm˹sķ/_vwwh4ZVT._\,?}tNZmMMv/ReexqEbІJŋ6l077/**zxx=zTz m%ST.X@cʔ)jP"[)қ'KC&$$j.\pȐ!qqq>>>Z֭[-.//7pL:_|NpM2,|aEz/<<ֶaק:99ۣFҕggg+JAw.:;;fdd0H?VѣX>p@CmO> WWWooHd[۷ϙ3g?>!!ao4HJW37ON^:}tݻk֬9sL ߞ;w9uĺθWJJ!رc۷o?uTEEEYYYHH: M94\se?(0PeeeffYIcE*JSNT*񋢹FLMM}Zܹs'==],W*^^^~I;w^v/_>{vܹ!!!?c^^ބ ^u|FvѣGJJСC999AAA999666jZbC6Loؘ!2̙3gРAǎ=%VuÇJII oJ\_w!=;R뛝][[ZHs9Az)w`|1 .2dH\\OnnVu떧gEEEQQ֭[KJJ6Q* ._:ujԩS{=] kkk]\\Ν;'|FӕKo,^X|ass"񭇇ѣGbH[}^vMK.o ő#Gח 'pUΜ9#oٲO>g=/6_UK"˗/O> 0@t5k֜9s{fff oϝ;߿͚5f>|xLLL߾}ņ_xxx֚;vlN(++ kqQFgggk=zNާO񅫫wuo T*loĎ; pU+WhZggg}e(---..0`@& W5##W^ ڊ5.IN\ݻκDoh!+V{AȆ/c򫩩177᭷a:tXbXaСCsΊ+M&qc?Z8sbQ333񅿿ǎ:WBҥ |iQsyAΞ=kiiujkkRSS*JSNT;/bFP⼘k4&`RBCC@fpW~3f̈!<<ʕ+K.;vں}]9::fffyEhhhttɓ'5ͯgA V }(... akqƯ:%%wߝ2e2O4iҥǏwޅ  %9rd\\\vvɓ'׭[7a„Fk[@ҧO>vܹuVg'Aߪ:00p$6_L²eBBBBCC{9jԨygffVVV.Z>sG}$яU&N8` ߮]8qB,߸q]߾}_||Q 7hР ,2ek6nܸ[N SLurr:ux+_}֮]O>ٳ#60HّXV=bǏ2WWWo۶O?5pҭPO|FEGG/_$nܸ~ 0>6_jg͚5bĈ]v{۶m'O3gZLwjމ7.---??_[n}w~_P( lXWiiϟ߳gO[[ۀ&P(]ty7/]tܹ#GW~/ءCz_?CONN~ꩧGla&ώZ휊-Zt…/ K~'_͛7H}}1cիW /PXXw<|GnnիW_|źcƌyM߽{D5++^zi˖- l۶m̘1_  2w>Ln[O>]wFqq}fΜYI^^ޕ+WƏ_\b BsNS]-[xyy$%%M4O>_nE-Z!B1pÇ&kk@???S<A [(mڵkwu''&+Ϙ1>h47oAVZ]t1a={6mڦMCBB~7Ě5k\\\ڷoiӦ~R3g\pA?-88X=HLF3493;wnmڴvڷ~*Bhh觟~j(t+>? ͘1?nx'O1<|||ҒL/ܹ *n{ᘘ{2V@@@-[֦M;:s̳{&k:uƍ}7n\IIbÇ֭['zyy/~7E\^_I5Z^杝V;b[n>|a^^^a׮]Fd+>? '$$Ǘ;yRl{߾}u "}rffI֯_?dÇ1cƻ[AB"{{{?P;.YZ o[[[[矟8qŋӦMk8DΝ}||S\wj4CNS1s۶mŷ⯽+}z-'|"=&[kѾ oܸ!U/P(}'M?N6/XvVȑ#&OޯE ;rHDDDCݫەF1a]7o|7322/_xN:=쳆 !BnݦO{Pѣ۴i /4NP$%%=ztر׿JJJҦLȥɳ0UkSܾ};55UwORRҾ}$h`+?IJ?snݚ'<\|i=iݏh}ٔq 6,??ȑ#&LaΝϯimHHH7LMHHձc lXMIIɤI{ѣGWVV~ !ZdIjjxm۶SN_$3j̙[nz2|D g'//oРA {hs'7w޺}Mo߾]b2 _~#F{n3gץ[PS񀒒"###"")"*M:~ٳϟ?S=\⋊ɓ'ʝUVVfffZ[[#Fo/[,..N,'ҥKrGxZ*66ypz-www}u&OܚWTݻOrgx46_p,BTT걌F֭[a\޽{^^R|W|M.(6_999XBf#z`sjժ7FDD,X@[.4_߾}G!BeeebbٳdٲefWUUmذW_͕7 <>}=nIuuM&N%W0-:00G&qϗUUUݻw۝;wqZ]YYiA(..6VWj(]i;w+A޽[UUe4MIIQ(]ݻw(] P^^^SScjkkF5ݻtROOINKK;xz"""⒒;vl@l*ݍ!zsrr2V6+++kkkt%BvՕQR(NNNFJKKKtզMGGGt%m۶mҕQ(]?x?7nܼysrOO%KL6X<|iUׯ_;#sΞ={zxx,Z(<<|ҥgNHH0N"Xw?wyG'66_vܹs~~~^^|Cƍ:u; #h 6]\\bbb"##;233ښ0 WWWWWWShl@]9&&W_5❘WTݻOrg&h?|ʕfͲ; 4SEEEzz:.e\ցrNKK;x#hA qv횬w9$$ĉ jEc|||>衊 }C\xqر]tѣGBBݻwA2d[oUr!CҥK~Ae V/@K!1]bFghcoݻwJ:P(T*!$JL})))TgƌM. ovvvՎ92p@;;ݻw7nnnCݽ{UBBB̙#>СCڵC;JUSS~'gϞ0p" ,;R;to֫,Ɂ-,=\(GbU}}}7oެ{駟>䓆dhaC/9qℹy}-߰at0?;iYf1b׮]bɶm,,,̙ /6n,,,^N>;11Q!!!_XҡCdVk`zC̘1c֭{7n\rR, E3{96cUǍiӦ|[n}wdÆ y.]|O?ܹsң4{ +_@fW^}3͛{nsƷ\2~z=f[hQMMv%4-7 i،Z/ h47onx_  ZfK7m?XZZ69JןSeeezzόYΝAw[Y񭧧tÇݻW߽lEb?}CΜ9}Vss󄄄f/^ctaٲemڴ8pÇ֭[g(u{q_svJ!h{ IDAT8qAcdo߾wqqh9iҤ2DzΝ;ٳ^|wkGMHH07}g!~<3fxw7DÆlmm]\\nZGF[޶m[CF!|)>&MJIIM_]J_~mȑaaa'OV7Btѱc_*))IKK2e{a*h4zIJX&Y7f ;rHDDfh([nӧO&g blܸQP̚5K Lγ>RZZ:nܸaÆ9rd„ Mv/_:w\ҴZ9s\]]w֭W^фܹs^z;VB~Fq#ҳЧ5{ckks3H4dɒT]oMƥ0hƍg͚ꫯ~Grgŋݻw֭ۅ LW@ ZxqdddQQA_eeeAAYIcZЗ_~T^^j#ti?lL![+dhi’yyy]xQT*߼ySDn6mRT~A#wƙBVК4%E\\\~VZqƈ 4|Rƍ酅r`|\|}1b ^^^gϗ;0!l>>/2W/Ђ@h46l_DFFwKQq9q}||=+W=n6ͼYBh4kG/J~ѣGo ݻwjMP4?>6"4իWvСn{f8q!JKKaÆ wq@+yꩧ>|377߿GyIr}|/A6\Du~ ,qEe/ J\,6++K 2ׯ_8 :\">hŊ~r`d\>&&&777!!]v)))!!!AAA V/^(w`|S-CC!77WR7N Ա"?q &;;;&&.%%%,,Z\ᮩرcBBovUaiر?S0˗>cr 6_KrG 36_*00S )ZY<Ђ|hAl 6_Zի ży@V_xQ #>XJPAnnJR*.]; 0i\-(66622r 6_ܹ3))D ԭ_^RmݺU o޼)w @ ↻aee)w`|i=<GgZZ)C 6_Z/- w-_;S/^֭YIcZФIT//_; GOGa? Ђ|hAl n VVV;w;0u\ HNN;^gϞ; ԩѣ0Ν;;0u\zx7xChV0nÏ?ѣ>1+_LTqqqbbb=o^UU%BTTTfffTTT.]NߺEP\p*++w1d??իW徾+VV*ӦMrX^QQm۶޽{_|Y_$A&mwӦM=\GYRRi&__߀]v59&K뛐OKEJMMuppX0%%lk׮믻ve)4,0I'O>|xVVVJJ/Wgmܹ!!!?c^^ބ ^u\TfggFGGs4hбcjkkϟ?uHǏ5jԵk׎=T*mmmmHT:t('''((?"""'''99FVKOɶ+Joogj… 3fH5>|C΂!2|bcc#""n޼)w`bbbAHHH;cUUU9889sF|e˖>}|yJeqqqֺ;wN|{ewwwFjJӧOwI8;;?~ܐHvvvAR*/_oذܼH|qQ)HXLR`])S̛7OՖۧ6^Clu7_`HoZ|4R)¥KL]AAAZZZaaA|1Ez/<<ֶaק:99ۣFҕggg w.:;;fdd0H?VѣX>p@CmO> WWWooHd[۷ϙ3g?>!!ao4HJW37O}->yjŋu&w777777Shlkk댌 J%©ST*Y`nnht5SSS###<7;:tϐ{䔚:x&#(.]*AzXLAt5 Ծ}lٲ%<<\[]CIWt=Y]|>yyy*/x-})9rd\\\vvɓ'׭[7aP>}N>-3fAAAYXXFGGiҤK?~޽{.\(,,jذaj/lޠ7lh̙N2eqN'˸x@lk;v޼yQQQgóǏgϞEyLJǷk׮'N=!!aʔ)NNNSN-++qF;;}/r KԩS^xgggg3n5FOq ZV uwwϞ{9{K.q#N&q [~xtpGJAAADEE͟?_|gѽo T*, 99YVR}<ݿ3ٳgZt)`toZѼ+Æ _<ޢCkښ+/Xo߾-jUUU.\;0ulG?s[ZOmǧwu+'&&#((hUUUbܳg肂rǎC [zuII~BBO?痒j*R8bĈ/RեKS rӧO7dŊJrڴiW\7F{7~B!_۾}۵k;oݺwرnFפ[ᢢ877?^"M{ۏ9dӦMvj<6T*رcL&):::<sƍ'O<|𬬬_,W*]v̬yw#ϝ;7$$˛0a믿}YΝ;]V]]}{{˗/_}n;v47;; KAg%Sb~vڝ>}Zܹs'==]kׯ_4i.5tVxFvѣGJJСC999AAA999666jZbC\vv O}/\]]۷o{[PPoyF_0@YYYqqqPPcfffGIJ&I !CAsrrƌ~)z.]:vXUUu%II]VjذajzOkK( ֭AcD!$²eBBBBCC{9jԨyi]688xر͋={aLLڵk{iccw^0>>>444>>]v?qDΫV8q.\;<~z$H_uݳgOQQѢEt<| yyy jاUVV.Z>sG}$MbMѷ7n۷//8!n׮]IIIwܑ;HKK۷oA<"U*Վ;oa VXp˜&+k4=z$%%5yg nj.]\\`Z_VVVffO>)w`,X\7ߔ; #զM>@ K.` Z 75]'N|ꩧNR ݱE˒G.<|1]mڴܹ!z IDATp%c1:wwSȏuG?;h .:|h|J?˝4|hAl ӦMSԑ,o߾h???{{gyfƈ}}}oΞ=kgg']' @7eT?r"ّ7oo-_t_V.//㏕J?>a„N ;wtI dÕ/o矟8qGʟ|ɠA{1cL2O?rǎC [zuIIX^QQm۶޽{_|Y,u?߱ciӦ]rE,,..NLLѣGPP۫ WTTֿWZT*G_QQQQQQ]t:uj͘+Je݉-gĉNNNr 6_LۻtVZ6--G-Z}իW7qqqbŋ7o޼dɒm۶ۋ+W<ZNHH >{+WZjݺu{W222N8;{rwwÇofzWAXnߺurrrmۦZ3f'֭[233۷o`iiؽ{wS拉wރTHC.[K.s޽;w~ᇽzxw٣jkkkwy'88̬Gb'=^;t _}}}z꩹sڵjÇ/_޵kאɓ'M8k׮#F;v޽{jҳN<'033{ʼn<iii;0uD=nݺݽ{wÆ aaaMZlYrrw} Q-##ۣFҕggg0a~/<<< kkk322*++{ꥫ^QQakk[ٳgZb;vlN(++ i4դgT*AIgggq"t!`eeVhѢs5;vxС?+^z999* :##C|{)JpEP(rssŷ{갰'O?^w}MkvL ci4͛7޾}/̙#wZAVq;wܽ{~7:tPby\\\@@@-,,BCCOiҤK?~޽{.\(,,rȑqqq{PSkw =S 34$d1\GLq[.3pLQ)kCrI*]ݟ]{Zy>Zޗ9>^%%yyy⾯:eʔƊ +TZZZEEEo-9TZJJJRR*/r*99"--m~~~T]>}ֿBȫW/SSS555555kkk~yyqgggSQQQ_}ڵkΝ[[[Kd\\w}xbq5ijj5?={6U3k֬1cƬXBb]]]j{zzG*t xYYY?0\*nݺLO7o^|9ӱܝ;w=U)x}r t, cxy\.2vЃ@***L;_WAAԩStuuݳ !XXXdddt]]]Y,VZZ,Q0@6l}ݰa444%bqyB<<<[nYF^^^&&&666QQQo޼QĖ-[n:U\\L޼yb=~T,0((ҥKG˗/gXO iե +r,K-,,!nnngΜ;v@@!"Μ9䤩L4)--MUUww%KP7nܘ4iRgjjpB qXYYٳGp{!CW R†"BCC~d33NXjUKKKvv6 "̟??55N6++_d,GGǖl׮]׮]+,,Qĉo߾]UUEݞ;wnСmff>KѬM+^pZCBHssva}5i RͲBBCC7l@a|?mmm^^^…AP2eʔe˖uCKK{KKQ\\\V^ݿr>_YY~z R4QSS#+wB]Ң(6{/BI[[ŴiDlkk}>|ijj}ly;/;6|&)gXb\]]!L?sĉD_~_J}}޽{̨ )#G裏_/XsA!M.ccXNNN5iHȣrBp!u[VVi󸸸ԓ'OjkkwZ9((h߾}mmm{yӄ38zh@@Ν;݅N7Ķm8N~vyEBH``+WnݺE9t萁X fR&NHg9a]]A]vի_ƕߗZC.{۷+((ܹܿs~~~??ݻw|"kNoE򏡛sgԿ 9<222"Jӷ?z(uin:'''Ͽŋ%o(B[[{ѢE.]zQkjj臠322 B33'R_g? ͤM8޽{<ܹsTܹs:::D_~_jO>O !{133 !s̹>GȚwڊtCsxuMs ظS"""d_/\ :?B"__۷J>\PPЦMD>$Dӧ|Y 3`իW777 7qssKNNNJJ||'88СCٷoh?ő#GD5'%0x`CC%%%G&ffffeeQi^}5TVVn[[[7]?#F ڵKȚwڊ"?N>mڴ eee;88wc*#fΜLeSQQt |G,kǎNɹzj@@*ϧM?gΜF!"o̙޾}+U[[ UVV._ݻVӛ"eĉ&Lnuuuƍ'CK WU}v=bƟA8p}eKJ 155ʕ+?ܹs׭[iW\n/Ēm]eeeuw耬\pa7ndTUUƕZXX߻wX@a @s2/=-&&fڵd^!zzzcǎ]xqEE#Η_EEȗ} !!!!˖-{ǒ1farV^^nhhTl2+Vp\"^VQQrә/`ffVYYIQQQ \b!qkGgӦM,K0SMMM;vO>e:=$_z ;TRRԔaMMM%%%vy ˃ދ_db̘1 PQQ_(++~TУ***ݻt, א|m!+++//O <<|#G`*0HtWDDZv,xO!-ϟ? !+V@D -H@{HHݻr/Bd\`%Q3\n~~>Q{nݺ/_30t~Ny|Ȑ|`XAAԩStuuݳ !XXXdddt^o211Դz !u͚5" ]]]EFs玠ŋV'==& å˗/ipvХ9vHKK>}b9::JMCpyH8SN &9sISS3--?0004iRZZj;K,oܸ1iҤZ!<t…?ڵڵkF&pBTdJJJK,>}&U$%[[[͛gnn+n`ww'NP%ONN*AAAIIIG. R݋]sbUw >}:mb&&&˗/߽{Gz=zhffVZZt, װ1eeepgeeeQQ$=x46dzyy{ڟa~+WliifWY7G)QUU/Kٿg߾}%AIII}>$_S^^Nqvv.n:mzImmmqu~\\\2&&f;&&&\~)? z]t۷mϞ=Ua{۶mp8۹sŋUTT:EKN!{֮]###䅑!DXYؘmFFFxxѣGŝeK?r>}f"##_~-u,uucoo߿u)((899I}Cq000dr. : c͏;&\pin߾Օ~### #GK~K>}<Ϭ$M,uuRiӦ@Ӱ= 斜$#q+++K2 H`GubرԩS999W^ _TUUiӦϙ3QHXijgzyy?~&??zxp'{&R᧟~tQ:BBNg'̙3]!CΛ7O{۝DEEaذaLt/^0y䜜ׯ_{{{O29sf̙4}`{uqq'Lt8 @aaal6… 'N7nܙ3g/PVVnmmLbkk{o2$_b7oޜ;w1cp C@z})rʌ3 v;Á=ȑ#/_ׯߍ7ZZZdmSS ?s+YwAcccCCL"TWW˪Ft_z%!o޼ijjIWmmm5552R__,޾}ktEZ[[kkke {{7zxx@ L!\'O;TUUd!DGGGV]ʤ+-!***2JAAAKKK&]B444eҕb߾}e!DSSSIII&]o uǏg̘QUUD)**~+VakGRzG}$&'|~QF1|ƍvZfy/xLvss[~q vHljj7n\dd+B|XYY֭[L;_z`?xLr ;_zІ ,XPQQt $_zѣG_xt lxaCyO>e:=$_z>ӁC@LGvЃ|AH6t ^xjժL3_z[uu֭[ccc_~}… &0 $_zڵk_xrۧO{쩯gX3g|Meeec @.^|y_~J]?~hbbc @Ϫ.ߗmJ]궉R !_rtmY,֏?(_ܹSqBl IDAT'O,gΜz\ )J7" SjkkwSUUEQRRRUU+>`X/^n> ,MqwҤI`Ǖ:bkK:bl:b\N2SH򂂂ϟB[ZZd;Dw>3nwvtg^θR'P)**qٳ[ZZ*E $_zСCSSS>|?ݻ/_\PC?V?ΙJF32.S&FkDWw7 =$!!᯿ nkkKII3fҥK?14 t | T ޽{Ԇ:ݻLR?qӁCDDDu108!!_~۷o<{C;|mC _oݺ_w\8pmܸYPa$*M,lw9#F(,,zÙǫ2448p ӱa 4o޼lcct,!044lU> HHɓ'>d:k8p!Ѓ|AH  eee===y 4H5k<А@1,>t , Ѓ|AHH͛LgȝG0)++311166~!ӱ\9RZZojjt, Դ\׿РfxaKYf ڴipG,X`hh|޽d^> 1OxРA?yDǏvӦMW622WSO<>}މ'vgϞ>zvݻwﶯtRˡCh[nMɓ?t۶m4ɗl4!7oޤiLӶmkkk}5Mf !b<{jkk,&}jjjl{!{J6_x!2MӧӬ3ͶBW_}+qOim/^LO;A];v 88^~~>Q㧟~JIIY|/ӱ!tuuo޼I|aXVVV'Nr"5i2/͛7Ӽ.M6!!AS !$99ՒӴi^iiGŋi24O:mKRTTDM[*&"JmrrmnHUVI=WPP@e_H0@GGgaaaw*.....vrr >}IiӤn;n8JؘNkGXt{mprrrf̘>$H0JGDDhkk_xqƌnݺ jO'577ܼy@@9B c:DeeQYYӱ\CPH0!DKK |0@jժϟw{Cyyy10 i(++;88p8y 48N~~>Q{ $_z/=Kٴi_jӁ 477ܼy@@kGҨttt422*++c:kЃ~ 33g:ȑ#\t, c񪪪 t, cxyLG= |a:wHH3@B!Ѓ|A8pZٳgL|MeeecLxFFFLr ){{dHb0azzz}ӱ^;:|>UIIIaaa=R8ٳgY,$)aձ666hjj"̝;ܹsw8źuB6l0~x[[Њ [nԏrqqɉߨ:"AB6o|N#vss wNVVVqqq'N055ݻw/}<3ڹs租~گ_iӦܹ>55?/!|`Ԝ9s>✜;;~*;|p'Lܥ,--MMMZZZ6m4rH|ҥW^-//9s~+onn~56%%'Oӧݻw; FbeeURR(nes``e$YVO~𡳳]ppÇE CQ/L&555ʕ+޽{)/ׯjou]] kmmp8ׯ_޽rڨaaa2w~ H6l@]_|YOOOt3f }<­,--WZE]/l6ŋԭٳgE CSNe:w8I ÇnGX__ѾrrrsssML 33ss󪪪3fz+))$5JPyK.ֺwg^Æ uuu}>|p.ٳ#GﶶYKKHY %DrRCHŹyyy}w!!!/uuu}||9ŋ+W yt.F UWW?z(UgggSWW7&&f֬YcƌYbpG"9cnO&H\`ÇB=mŊQQQ<4AeOO^;ǘ=z˗/]$L"JtttZZZxx8i|x@7od:@x*׎K Yl#t0 䪪\.c:kH /\nsN!>&kG= @By&Lܞ;wnʔ)ZZZ >99YpxС^zyzgMۙ3gz3PVVvppa:wH0o?붶zʔ)Ϟ=;uѡ|~KKFգtSOĚtG ݰal 80??L={O?ny<ň#+WWW8;;8p*ڰammmCCC+**򆆆Z[[oݺFP?**:'''&&RKK~ꄄ̝;y˗/wItte@@{MD=wbnݺEwoܸQ%9s1cijjՉI}};bĈwߞȏa?ӟ}ںEccTTTll󫫫Gl6}[H$AӃȠ ,8uꔹ9}G4iҤI^zPTTdgg'B<<<333bD*>\[[;77wBiFiGy$l577߼ySYY<zxaC믿k--kRjhhܻw:SEEeڴi%%%yyy3gsԩO>*))嵵={ȑ#vvv***~gȑ!)"M#Mƒ>|s⺊tܹԤ֯_?---BKD/7o|Y[l6￿p۷ooݺo?kСt UUU8uTy ![vƌ}]xx[QQ!$.. Yxaxxx\\ЖH??H?8;;}111f3f̊+uuu}||DZD"!q=zȑ/^\R#BǍ544\rW\ٱcKD 8{رcMMM;W_]V[[{ܹ]_+WJ-> [aaa?͛QlllJ,|XYY?03.\x7n zZEE!xLEر_~>{|=G3/kLEs6BYv-2/ 2o֬Ycǎe:RQQĖe˖1d 񆆆 z /SPPjܹ#`d>|(l9QQQoaauVIB ˱cNk׮'NTVVB͢A=zTuvڴi}9|dݟy% RTT4vI&o o|;!!!iii7o<ڷo_BBիWuuu•+W8p`֭GnnnDDݻ⊋]]]\nFF.\_B㭭>|~#IJJJLL,**ׯ_TTHCnn޼)5ٳWotȑ#"5JKK?sBOOʢ"] fw|FCݻlȐ! ]__ԧO+++Aabbȑ#?裤$I0HMM͈+WJ[J@\[6=o=zt~~WBCC,''jƌ&&&&&&YԮB-C 122:~իWɰaè ]]'O6C vD]{Ǹ n#?z(ux8 1k׮=}4##O?^AHZ<##@xў={̨53gg!y6kI&ĉ/{ HҢEO_ Wn=ѣG6ȳ*GGIH{ IDAT{{55BҥK7t򨋗/_899 0ߩ}2Gr[rrrRR}x}p[7vŋ (|QQQ6mZDDDIII^^^||̙3OO:Çs\%%%??мgϞ?R[[[]]쬥UTT$9r˗_#PJJΟ??22ҥK_}p+'u#ӦMbvq)__ߜWqqqiӦϙ3QHH7۷-:o<'OlHLLLAAK!QfϞ"8xu!K._,,,I "wܼŋ ڪ m󋌌E̚5k̘1+V>K ,..<⺝;wnqquuu[I=)_;"L<9''SLxgΜO'TJJJLt𷠣chhw^7﵊ O#BBBB-[HQ{M6Iwj8---uuu2RWW"$ދ?ߋ_zzj!z/~1cƴ/tQ/[5440(;;Ç n-cVVUNNA;&'իWKR߾}LMM믿7v{-[bbbb+""BpM]ݻ"Y#YaaaF`zs'''MMʹ?`ҤIiii︻/YqƤIjx #}---@$_'!D___Kuuullr++ 6?644*ohh8x𠫫֭[GY[YYEEEX[[XZZjiiyxxoTsB6o|N#vss w^Yp8l:??_p8p`:::7n0B '"nY.\ᑚLo߾K.ݷoǓD__ߑ#G~GIII4>}XYYIR_SS3""bʕ*IRɧ@ ޽]ZZdIv?~<11ӧmss'6l`ee5vإK *{zz2f/]ƍo߾MIIٲe 7nxy{{Q׳f255URRt}$sݥ%b555jii1jL~Y~kiO,\Hݖu:ԓ'OjkkT;zh@@Ν;322h*߿ܹs~~~??ݻwAĄm8N~vyExiMj]]]AX,eaa!axQ]A ,--sKaaaCCéѣGS666ԅYNNNaaaUUՌ3LLLLLL&O\WWGm!0d##Ǐ 6}Ikkt֯_T===oooqo'I2evD𞎀!D"566WFFFxxѣG;hkk/ZҥK?5j7R{133 !s̹~VV}$.^i͌ O_RGذ쨨Hj>&.\n[+>$Ϟ=c:=$_zZaa!u{%GGGyyy˗/KJJ pTWW RUTT.}||$lv[[[W#OÛ7oJjҤINzG}>B 'B, ,cDŽ 95͌|}}o.د!^Y$#JDmcv uӧ OSSCCḹ%'''%%PӦM;ZVVp>:oÞ422277oRޣ2mڴ3g :u*==ޝDq r5JT&*FQ
j(&_ $&E4D]CF.dٹOfOjjt:F }?MlrQQora̙w̿D3gpwqppHIIz9ygffvttɩ)++ F(@$899դP(NKKswwξ{ӧĬrsrr\jU;x"((d۶m::: ,oV[[]믿׋ឞ0&L>믿&oW\yգGx"==nnnF_}EFF677 mSS15)˗'''777WTT9Xh43 wH (;;;7XsGEE͘1c̘1w{nUU?PZ MM͈77ٳgxzzr^ѣGDK.֭STT455uvv^b$okkۺuA^^Ç#| L`즦&WW׏?2##C|B̙3סCÃƌdɒӧOh4-?~‚رcFff\۷o!+3<33{yyܹS+++GGׯ_ mPS59NppرcLfoo%ThiiԾHq?(6m8pƍ 9sܺukk`8;;M`0|G=r_|!X`a J;h80 m&bmڴI* a2aH aOJ; &&a 4i@<$_ђ%K /_2 ]]gϞI;ְ. B@ ttt455L͛7 hoo3ytZ[[Eu+((~ [[ۯ2o-_/4d[oikk [h`| 1hhhӝ qFFF;[6lx: %99[ŋ `/n}:㓝-oě~/R1w\˗/7>99yc2yTVVN8O^^^hYYY kǏw^aanٲ;CCC\]]=((=bFѣ~wX^^O?&&&ӧsm۶ȑ#UUUSN}##'Np+N6}q߼yJ>:X? H{HsttLJJ"Ki4EBƽ%{c``)k2 .%ꉉG KIIquu-BVVV((J?jjjnܸAjfffffﱓ( JUSS:s̸q/]$tWWףGVVV?&+++00苷~PPPllMMME V2zhQ |򲲲K:;;x񢨨HX,Veeerr2*<^QQɓe˖ssu֮lxT (lmmN:UYY)[]FFfٲeo=z+NzLOO>ϟ?f777 >d\N=q߇B}kkk=z֭[GTUU/f ɗp &L oSVOOO)))%\~AYxw%J޽OۏB ϟ?5kkcc#h@ƞ(HqܹsԨQsw_$rDƍ|;X1? w_/ҡg``믿jkkyСC⻘0aɓϞ=W./=]dQxx"~*~ؾ}{gg'7c9{Чo]zEֶKLL=Hp~)S ڻwuQ(Çggg߽{QQQbv3srr\jU; ss566gu===W¾}"##|" SQѽx"((d۶m::: ,xs8;w|---|kLxG-ɸ<==322֮]+؂}>}Q܂?СCt|DϟyЧ ,njjruu+++322/_.3g__Z.??~ӧO777'6+*dffUrtt|D!? Q81c466kii-Y4mwh)S[N[[ḐaK^^d jO}پ}{NNwPBXZZ9s?&`mݺ5??_iz0Qv6𲶶ξy7Ξ?>w\ggJ;a4 xXo{UeeeIz={c0|tC*`TUU LڴiT5bn Ce``tttMhѢi#>;Di&YYO?ԩS:::ϟ?vP0#>/;::N:EDccceea > ޾~zʔ)_}R0 /}_tmGGÇJKK%oAGGGSSd޼y v0'ONOOUh|5GIxx8yn_N,(Jrr2ŋ) ^CCbÆ ?⍼ݸq?yyy###nrMnⶠڿއrČTNDPPBx"o!7:㓝-H%37*:ǽP(`ᄒbp8ml^؝:;;E%)aŇ-MNN>wիCBB&L ŋ/^899y̘1 ˗/onn&,]o%bԨQGAzf…zٲeˎ;dͬ,&~;;ǏoܝJLBĉwcccMmv}M:pʔ)ǻT*~200x۷N AAAA~>$fuvvǛ:88PUU>zH%777~綶OQx{h` 0lr . T]]]---k|o #G8qoپ}j1)),h-RPP eddh4 uwwAddx^'^v-sI]]=11]ѣѣǏ << BRԬΜ93n8K.655o7nܘ1cAffffffܧHKIIquu}އrďTsq8Ǐϙ3ŋ|޿T%뫪ܹҥKk֬yc̢z $_ŋsI;ߨQM999ߒ B?1+DݻB7n۶m?s(///++;ĉEEEo bUVVR}sO<Ƅ 7v_c~cGG^bɓ'w쬤$we˖OǻJJJ~~~L&s񒴩uŋ_U!>s̩SŅUhmmSTT4227̫%55ƦO] H ۷RWy ${y-//'b޼yB_o ___gg;v8qɓyyyb*ϟ?wssjx7%%G]n͛?yر ; IDAT!% GJA 榇X6-//-YYYbfO oɏ(Jll˗---%y ` 0+i,+++77dܸqk֬0EHsM}}}n!ywӃ/]4y7vf͚ L5_~kQ1sƎ033SWW߹sQΝ+>ڏUQQꫯ꫺WWϟd Rk֬wCC VZ}O׬Y#cǎq_3{Lym怀 囚k7޵D504p@~z%,===_055U[[X̋EEE#EEEtuu 0aɓϞ=W+t:]FF1#~zj9{vjhhl߾{ZdQxxx{,)}ԩJ |" ?mJ^^^[[.111..wbט?>hҥ㟜ȳHYYY.ol駅 $_?~:Acǎ%bԨQ}J(Çݳ޽}騨(1M999yzzZr{zzxkR(+W;w1??>=8y@b#OOόk pܹ駟DGGx"((d۶m::: , N 틌=O,([mmmNNν|5Oû/K|ʕW^=z/86=uuummYfyyyH;&a.44TWW722߻/X ;;?uf3̙3סCE[333 ;;|ﯫO>|c#yyy&)tFM2eݺu%%%|iwnjdɒӧOsw:_~ȇlďTǏZXXpWx{{;6!!Asrr$j˒CBB<<< `$%%噙߿kΝ#!!! +Vx#) ﰒ roj]]]ϟK;.BBB e۷oXyX2t(JTT~244GF (pΝ;7k֬O>ƍ /#[UUM_ҝ2K2cM /_lcccnnyhDEEEFFK;"{IPPHQWW'hhhK;zJfKX+?aCnjj鑤Sׯ_wttpo{zzvMھ}Sa*e.\qㆇ/ |iG ArϞ= ;ۗ.]*`!>Sjii|e zzz {{{%)ӚlMBQQQ,WUU,TQQ\ "PYYYi%%%BEEE* A|cƌ_xՐBIvܹrJvڂ:j0!0⊋ %*ALemmmvtt oi`,' 233+,,$oo߾`0 H .TWWK;oߞt~+++ZZZ| H^_sqqQRRbX+V-Q8cxg͛7׮]v,0jjj VF[ //(`A B`ɄJ;wٳ {Ս;VڱLEEG?522FFF`0ƌ3cƌA @p ZhC`0Ǝ i0q8n&@ k,b{yyahhO?qk&$$بٳW^zyyuuu d2,,,JJJ`ّ&&& de##_vvvO<Qxxy󌍍E&АF"|֢oܸb N􌌌+W2Soذ rK &eH۶m+,,ܵkMQQ4ŪONNnhh󫭭ݼy3Y?..&M  ؔSSS <<|X]]-++ZZZ|r#akgΜ0 2t(ʑ#G0W~葦e455#""fϞIikkۺuA^^Çy[hzzzL&f vgرCEEˋDEEٹlܸb_^8JڥKRSSń0Q`9r_~c!/֭+--v 5H ~-&&0qܹJ__UHߧRҎuuuN`|菆USS#X`XgGA .33ām`vvvoB`p8]]]ҎbHmٲe֬Y]vm޼ {/CAP *jii`h̘1#00[>o|HDDDO?ƱݻΝ;+Wl… EUWWgeeϞ={ךH 􇚚Z~~ȩSҦLw^n 666%%{xx'''744֒AmVXXk."EEE n>S0%>A`HKKKMM 677|deeBCCKKKsss/_NJuwwo]j˳gQ\\!'',P9s;wӧO:dmm}f[[[+++}ƱO>Ǽ%?>}`4O?ݻw+W+|K;x_GEE͘1c̘1v!sqqٸq#Z~=YgرCEE˫ ݻw{xx޽[UU?y&Ammm[n200;|>zGijj.[ٳ[nyTRR6{쐐OO>Ύc<[[[Az{{_reΜ9'N|*>`Ր/=zȑ/Bڱ۪;vVMMcwիO;DH u֕H;xT*Tځpӎ󳲲233 kuuuzzzҎVHd^RSSߦ33DiA`!0ܵlll$[[[Lw oo'Ol6;22:!!Ch_,b{yyahhO?qk&$$بٳW^zyyuuu񖋊[شiSEE ضm[aa]lll{ݸqcxxxll,A,>99ϯv͂}EGG߸q#$$dŊd NOOO+Wd0SN߰a˗ FSSSYYo#K.Lʈ/]PPp}i゙3g8p|{9{,cgg'##cbbKd]]ݯŋAtvv^p!,,hΜ9III6qD⒒BB(**jnnVVVֿ{u@@`EL0$_f3 {{{iŋ/XfϞ=[+++b݅mmm =mڴ &;wݻA&%%踺޹s[?&&fܸq'Kc3; aTCCŋOf UTTrrr$iLNN}6ZJ힞L&377bٲe|dooٳSz{{s_\xׯZS $_5˳gARݿk׮<|ZT#NNN˗/Uy̙w!/l6ZYYRqqqfffGG2o_򋒒… 8sL\\\_cxg 06nx1CCCi#ݻ=<yQvv}r>(33Fu IDATϞ=p8L&ݻ˗/߰aéSUUsNooW D %*SSӟYhwvv mMhchh8iҤgϞ^Z|H|Fu ///11r%yzznٲE; 0H|:H|x!ۛ SN }jhhH^VVVܿ;::ۓ'O9.MMk׮6ݭ}}򶤤N׏3&..[Yh QpD$_vehhf&*B!"$$~%KmpUUU8"ۇ󖄅988v;! #>;LLL yyI&eggf"/ [++B6 Yv ,hii)--USSKMMMJJquusAB  @hCjMhB푼?~|uuuww!?{9y摱 l„ %zzzeeeB;R F($_JZZZJ;x_ s%oedd 33399B C^^\EE%''5SSS />644$>--ٳgSN%*#* Tjoo/fNNκu~Q"&$ABޞIPÄ yK?Η!NH PQQϿzEZZZjjjMMMpp9N ++ZZZ|r T7|sڵVWWh4ޗ/_={ ̎999555eeeQD@̙3TxCŌWTB#1!5F駟ݻʕ+bb>}Ǐy}ɃL=G {{޸KTTyy9_VۿgϞ}ׯ_ͱ}y4iiiIHHXpҤI8ݻwg͚4nܸ˗߽{WTP[`}ddd(..ښE w*/ ĄG5)/4gZXXV1cFjj`w"y0rQ84s?5k?~dW^%0ŝ:uJG=CAooILL Qصk֯_c%x᳣C:wҨQvر~6""bǎJ;awlaX6mzkmΜ9utt߾Mx 0܌ STxCX!:ٚt5jx# A(`z`hhh|Rڱ=_/t ݻ0 l㒴`ff(Ik'222&6zHp-[̚5kڵku```XXtまB?T%:`ccg~566>x`cc#Yd2,,,JJJ־y&Y!??((<<|޼y٢ahhO?qˍlllf̘XUUEݻΝ;Vq}H7AN|T__?f̘Fnawwے:եy5FƎ{ ://O^^644ܲe6w}m000niip8?ߋMAAݻQi*:::ۓ'OΜ9K255矅}xx8Ӱ0QV kjjj'|w+Qm pf&}dbbB^O4);;]hׅG{=m|ܹ:mmm䭕ի[[[q9!vxVVV[SOOOp⸸8n5# 0u=zHځfooٳSkdLMM544.^ol6\EE%'':K?#BT񴷷{zz2܊e˖K^444!V(333 R^^Nr7UTof0}m\J}c &TWW &]g!|PB`]x1&&(;w_h̎999555eee h4G```nnnoo˗/Ϟ=KJuwwo]Cvϟ ATlrQQQRRӴԚ`sss:3gDjffѣ?*} YYY''˗qAZ3W3gμsSm?ӧO' @twwܿ_ځ;B__R]]]Q[[֭[ >L޽cݪ~!0>lǎ***^^^A[NQQٙë QmԌpss={vHH'ਨ3f3&%%EK.⣏>|ȑ# fZtʕ+ƣ\\\6nb;q 3WW~葦eT۴8//֖uV||``=Y`+W222 z uu:i0gW;;;e#񇶶@E5Đp]vm<VR\\ רQvر~6""bǎȼ,8D+dX6mJ<ωۜ9sRG0H|tӧO%_\\|8--=;;ݻާO=zꜜ<==WZCn===5Oe޷o_dddss37+W;w1??>[5õrʫW=zŋpssHQ𒒒ڔoOFF ˗/wvvo `0 2t|||( X`AvvvSS\YY!Ԟ3g__b6 筙W;;|ﯫO>\h #)))//l^^^;w?pP(9993008uxUTTǏ'NHJZ!ABy3@B>>>qqqNv,544 kX0"##׭['0PTKKKSSSi/ŋ111UUUr~~.@sN6UUU 8p`dJ; >}ZPPP__?O.F|DH "$_/]PPp}iMMM&yM )L<9==]VR(dnŋ) XEEPtOvv#pl -$_`̟?_ځ{!##cܹ ɗ/_7n}rrѣd27󨬬8q^N86mo-[ihh(ዂmuM*ʗI oof`X@ep8 (9::&%%Y[[[XXǯZ߿]o22243f ѣ}|| "##tꚟ_YYIDMMMVV֊+x+p'qy㋂( J *..]H(rYYپO$ 0-]ŋEEEb*++TjG^bɓ' wvvVRRޝ5q@#rI(Vh(CT"EDkEk]iA] -hڊPmq=ǂPE@@WBfHd<3~7lmmMIIr|Pu+\oD{㮝` _8p_~j󥥥}0t @^^^Wf:m ƏOîܜ謬 &kCEEe̙=JWZU_U];6))IQ3!3d2|e[[[:u*00Pr盚?`[QQw^www[r|g.ѡW%X,SSSSSSIR6TЏ0!%%%ʎ^ c߾}k׮LLLHKKРjɓ -_]r^]]5 AAA'N6mZnF"OCoƻG?^Q#Cܹs={tROOϺg4ȸ}޽{5{dbX<O}]ِ֭[\"~AAHHHjjjJJJppc%((ȑ#iii+VPv,0 aWH}}}Vqa=PIIIIIIQv00UUU `wyc eHdzgϜ  i@*;P$_('''99NفPWRR@`!|Z Y&L@{srr:zCPeih(' ӕ5: }`hnn&/^lcc'BOQQQoB @::: ZZZdÇBBB~wg}VTTD͞=`̘1;v U~illرc]\\_.9/ckkꚖArvp89r/hjj9ڷ~$22 ӧK*\rEWWGC[[[SSSy<ԩShjR=DDDTTTDDDXXXp,XJj/occ{pppWẂ`̛7 e#ƍp8+++>޽P򼣣#Gb'O D"Qccciiin_wMM͹s8"/_|޼yvvv$B.[]]- ###%[]zop8cǎ> svv 7o$넆\w[׮];k֬SUUEԩSwܱٺu+0!@H|ټy3y|E333XOyVJJJSSUWnkk־v1..Lttt>L&JoN BSSSI?UUUl6[$@ `2uuubxŊ6l---:::W\ѐ.cc .2Li;wS//ٶm>x U0gGØ78ƍ{P(.544fffK.H>+b[[[̙3Ƀ6IH%%%M<<066&#,++{葷ܹs[ZZ{LO81?? UV=zƍsqqъ2@0c y~RBBB^W^_cǒ?Y lΜ9ݛ4iRHHTg0w%?J|,++#?:99X,Q쌌Μ9s/YRRB455dg֬YO>|phh;88_r~1)&) WPPP[[+"ݳg $_F[nutthjjLe OO={KUWW_pallluuuAAARR@jjj"'NY<}Gbbbl6y~ժUqqq+V&_p͛< &LnBDss@ puuӫ$,ɓ'uuuϟ/y$H(ڵk<o(;xݥN[[[LLѣ߯=mڴŋ;󉉉K,ٰaCDDDxx8}`qqqqqq.../_Y?LHHUSSʒ?cc?>>~Ŋ۶mt?Jccc___cc㄄ IDAT3fl޼9((Cjjj<O DCO 444(;WP(d| @ 3{577', 0!d `w}| {{tED"g\.+"iNNNGUP=f:83Rp%^zE>|b0Yreeev.BIKeoo?aYJf߹sGY'_`0L M6ݺuڵkA9r/hjj""""""""88 SSSF%%%1ˍwssrvp8!!!{zp,X yFwwம.6{l1cرw'\.wgϞ2eJddd}}}:Tx<]]ݩSVUUQL x𡗗XC@g[[[WW״%xill,~7=*9O54&-2QY5>쳢" Cqv&]mݺU,贷uxW_oggwI\t<...fX1ñ.//|rB022244w$=zȨ<}NUUSNݹsƆ*'O_mll,--=(ñO󎎎Gdڵf ׯ_wͺ̔XYY{H._|޼yvvv9%Xxݻw/\`kk+}id'Anr/ٛU6gI4wWCor?;|P2777ebb2j(7nbPhjjz5NUUD%poN;|ppΝ;%]m۶f, ȼmmm,ifftRڒ,ʪ2#)++3f̐u>}:y0n8őaYYY[[~IIIkk+UAGgggy#\~OzHi> H/g$_bzxxj122:s̝CDl67UUU}0{noo xbXRsϞ=ϟ?'&9sdgg߻woҤI!!!2-(( gΜ)]J+W+DB5Sz5,++#?:99X,ۋb '{%^7J5K$}]yPܟzH(PRRRXX͛7 oƻGFFFDǏ8qLA~C^ft鞛^EEEfftMuu'OΟ?*[nutthjj7;;?|0::fKREd2> .tww߼y4F5S9/\066 ))Ϗ,y 444ΝWwҥzMuxd*{s.OJ@MNNUv 0lݺʕ+yyyqqqqqq...ײVVVcgglٲZgcc㄄3fl޼9((Ge55tsss'dF3zhkk}7:::11qʔ)ZZZYYY=Ji"_bŶm Z7ʿ>K,ٰaCDDDxx8y|^A&|_ @477;99yxx(;H`eGTv#S}}occocooAյɈ7*zh* <|eu떲CPŋ/^x0Gdw!Cpώώb)@`:::(; @蔔?廪xfff-zިp\>?}kkkNNNG}7e"׿^)Ó/ h"[[[eCMMMϝ; YX, Ԕ3)oQQQ2@Q5 \x@ϟzq);BCCGKKÇrlll={lmm]]]:::Ȇ\.744\paSSӁ\}ff̱>|eddᅮ'8ނ [Ie.k.#]ӧcǎuqq~́ڎ9ncc_455ɬQQQaaaLLZZٳ ƌcǎ466wuuzʌw$/_&{())<ӣ7Ugѯ4ZT;uԪ*2\.}ٳgO2%22Ɍ cǎ);ZBCC7n(pɏ˗/7o^eee~~.6a„3gܹsnwIOOjoo1 ñ  %gddtvv>}ZGGJRVWW HI}___oosq8Ewttd^vYBݻ'_&ҲO>qvv=ei2˗qQeɗ ;Ewtt>,~plBWL&ӧqƝ;w(gŋzGsNI۷EEEd6mmk׮z'_BNUUD2#!3Ojii455Ѷmle &YOOHzZz$_˜,U]]].\щ}zhhhkk+"ٙ<7n܃B!KKK+,,lmmmnnx'O&CfΜ{Gy{{KδTWWs8>'.3CCC>_Yf޼yђINNPz;޽zIwl2'Kg3 -M"X,U~~~@@̡^4Z{GKK":WUU%555ȏNNNde@xZ___XLSޞ`ܽ{(s;;;###P$@@`2"`̙}޽I&Hٳ4aK֓&6H`ُ?&oܸ!7=Y\ңy2$ACCCuu|*ZW/C… ccc f@ꪧWQQAS={^PSS ,((D?>qU&4ܺu+//CSSPOOO\]]ɓonns4IGBWVVVWW:gEdf2 o޼92$|>Çl6G󌌌h^H iK,ٰaCDDDxxvnll?cƌ͛7dӦM[x;#N\\\```\\;VVVR3zhkk}InnnAS& Aaaa:::vvv>>>˖-ہB5YWXm6}}`2%gr^&$:::11qʔ)ZZZYYY|h^ 'K@&}}}==Fe仫}||xرG;H'_o;P{޸q#<<\21TUUP__dDDƍ#@A#Zpavvӧ,XX`H}vCC0b峴Tv@|P $_.www`0lロO_>==}pb{Q\.To}v1C(yBӰNNNG}$_\mٲL&sʕ۹X,>$_]1 &iaaiӦ[n]v #G|MMMADDDTTTDDDXXXajjze \.7>>&??ڵÃᄄdٳg3fǎcA<OWWwԩUUUzyyI"ckkꚖAO>;v%8ނ [dՐYmCuBBQP$!0}ie ===uVX.׭[^Z[[~zw}'inbbr%򸸸bں\VWW PX"HXZZ;<0֮];k֬SUU%s5 Tud^FpttDL&{LLB@vx!@HC}}k7nTJ<,\ Bܾ}{׮])))***۶my~KJJCqqS*kܷzm2Ÿ#i\jlٲe/\UUQccc]]]GGAVVV&&&D mB!Ÿ <2x|I={DSƍ۷o?qX,VWW?1f̘AsyYwwwꪪb\q`Ae  ꫯ_L2Eٱ3BB UF~)99ݻ633ڵk~~~VVVaaaWvh0Tlٲٳ/L{zzvtt$''+;(*n߾]ZZР@`!0f̘믿zzznڴImGbלL lH04娯qㆲ~bX%%%.\Pv 0V__СGeff*;"P $_OuuG}%Lիcbb(/G,`0(Aʕ+cbb,,,(/ k׮+W jB@Qn߾d2 ƨQ444?~qjk׮$99y׮]TW*MKKKLL* Zv-Uiff_MUj*~ѣTށT?ɓ'JΝtR .P͟??UݩJ]VXXHUjgg7}tE~:U)Ù2e Uݻw7Rss'R>|ĄfS666644PRQjhhhjjR*Hwwwyy  /" A5w5A466P|%?,--*}i޹s*:u*M[nH0Ii{ڵdR}}}Kaa!MJ,$_.\yfҨ(O?DIL-M%##-Jmrrr&&&EUiӦ>f\X,nllmjjj@ 8SNξqO8AeˢMMM%444h:Yz/U>M۠ t dX6Mar4m===i&eggG->>&A|wssikggz2m9U)M sssGUJ A&&&T4geeEUkѴUWW700*ҢiKnF~;v2 o Wv,0$)Xc̘1ʎ @sfsss<wIOO-[X`(;Wmffk:;;߿G$|==|z{ IDAT]ѣ%R///333cccwe L0!77WfQkkkjj6l0ydri:'lڴ`9s> {u0$5N~zid mmm[[ϟ,K0!@ v '5m4ٳ3g>~O?4v9s?~\CC/<oڵ̙,r͚5,Kwo=zneeE9Avvv"2AQQQp8nٲz&M$29SWW׿w~eee4K2bPEe644|嗓'O9sfjjj{{;y͚5vuuuϟ ~ٳ\w=i$]]]//cǎuԌ̓b#G$>>}ҤI[Y\t<...fXtΚ5K__l2#s"T?"zɒ%'CCCMMM$g<==7n(.񺺺dVhjjRQQϧw癙FFFEEEL&ܶnJ9MMPhbb2o<~D"ф .\|K׏^)555%%%O>Uv 0 DDD?~>KHHHJJ}7z%Kȓ111iii_|O?tʕXIC%&&VVV'OYޫ&"))&))Ν;G\QQahh? wPYY%3B9'B,,'NQݻŋO.""L]uuu׭[7grrr@@IRRRi4ujkkw__ Ƌ.< qݥFKKKGGGCCCeor|ueffJJ}||^u&nݺׯwwwgdd޽aܸq;v8qX,&/]Ύ>xIBBҥK߿'o+++ /_uϿ[4ZjӦM䱊 CK^^U?"\xwrKp#f6A:99Ig-(( gΜigggddt̙;*y jkk}}}%OI0LHf?~h6YPP ?~ 0AUOOB:\TT;BLG߿OOn444}ѣGW\T*99ԩSO>Yn0d&HbX(644okiiw? #99ܹsK,JJJVX믿ʳt/:$_&11cɒ%6lEGG'&&N2EKKKI\\\```\\g%g̘y栠 IQhhheeqRi")''aaa:::vvv>>>˖-gmmm111G...޷o_埈|紜\n||ٳgkii]xQٱ wCKKDQ0 ^^^fff<|!˄ rsse쿦fÆ 'OfX\.7:::׿o}eee3gΤ)""**j۶m~ȐG`Cg?Zɑf߹sGQ( =_X:99=zTStxd1[tN6ٴi8s }$ϔ$gܸq+WF?y^? LMM|\ϟ;99͞=e:W/ÀSO|SSS{uww8##[vvv]pFA?~̘1Ǐ0a‰'z44E䁎/cƌ !5m42>gΜ9S[[?رc̙sq xkגׯ_3gN:KK5kl~oѣGVVV4ٙjggw! +%yJ*lٲ… BpʕTk6m0O/_.-- ̔qFǏ[ZZ/HԻ|W^mnnuڵkǍ)utt3f_lxb>X\\xe"77͛7KMM`#@CC×_~9y3g9N\\ܬYlmmׯ__WWGyZZ믿(駟Ξ=?~ݓ&M:vY'<<\MM<((H,;::9rH'MoEjjY̶oN2OTx&&&.]"Y,VTsD"%KOI?.񺺺dVhjjRQQϧw癙FFFEEEL&ܶnJչD3|͛4EGG8q#AUP[[e:W/gɒ%AdeeyIIɼyLLLz뭋//{n+++ySSӪU&NpVZ%NNw~@RtMkii~駭E9wU w˗/7o^eee~~Np8]]]|򉳳3y~ݺu<ի~~~L(ñ.//'?fddtvv>}ZGGDrBadddhhh)|Xdp8qKKz]]P(455vyfϲq8(ܹJIIijj Ufe'*HH&OL?x@(J544fffK.-**";2OTxgH$y֙IeQS[Ņ ˗Ԝ?ۮ L~>|;|yg2qqq{+ޢݻw+;.ٳw]doo)yImaadԂ򠡡z̙vvvFFFgΜ@ ITUUvpp`jjj"ǽ)FDss@ puuӫLcBȔBĭ[:::455  Ufe'*< ߿OOT!I/,U)… {d0ϿzjHHȱc544fɓ -_]$a$?ܴiSYYYKKKUUՖ-[Ν+ӧO?zʕ+'MO:SCfN3?|Ϟ=䏆R'0 4K,ٰaCDDDxx(:::11qʔ)ZZZYYYɸ8#'$$Ϙ1cAAAJccc___#)''3zhkk}ф*2UAaaa:::vvv>>>˖-oH Iz_gy?;"bܹϞ=[tg]]ٳgRo޻wvZZZZMMMG^hQ[[۱cd_/]tԩCBBLLLh≏#//Of~TO`ϟ`W/PKOUp|||Jo߾}9RKK9sP_rfϘ1ѣGׯ_*=z)SV PXYYQ>|bPvvvR5bQhii(; |QMMQFOҠణC P>mKK GѴT4m>|?SӴIE/fMMMĖ4___KUUM:ח&rƍ͛7ӴIDK|)((iK/^K?'Nw[x IIIݻD OdѢE TFiPSoM|4mg͚E4 AdffRlSNy &OOUrir8lmmiZZZ^ё-ͦI д=z4ǣ*yt%Lښ-ŢMMӖ>_k/`,YԩS'O\xǏ_&#333i! )e366sNtt?~8;;f+tZiӦ)4UفP!`0h={ںuttQQQaaa/bjj`0n޼)OƎ;mmmGqww/󭭭030 |5}_uka IDAT|r{ۭ[1ckGMd2[[[??={L:u)))657n8uݺu8nbb)SaSLy'"""u8WڮĉO=jSN577wP 8p@ OU已;Nb ̑#GN<ԩSΝիUzz@ӄ...:&%oȑ#UJJJİgXqwwT4!==].~JRBnEGoիM,nnn=z8vؕߔdѣGw=55%񪫫}}}Ү]T*GMMM6Vo8kGٱcGHHYiӦ=zƍC VOKKS}_ &Nm8s_RRjVWW'JkkkAX~}hh)S"##z-- oɼ5jN>@;dbbᡮ2hC={vdddAAAZZZ\\… U<==U˔pʕymٲEt2cƌM6UWWX533 HKKS(w9x Rtoӧ>|O?h7U^^^ZZ:i$[[ۼdtkŋ555CG=|[V^=zh'''mi+>bĈK.>.[7޸v !!!օ΂Ƅ-pՐ$-sdd#mK.YYYgΜ;h|1Ӓw޽1b;vxjff,Xmŋ{}G%ccckVTT$&&>Sݺu4hЪUT˷o>yd|tDzΛںuל9sVX`~L_5v*E=M;[n}]paNNz͛7sʕXt q]njPZZ;yd}'oVϞ=pm ykRwu$Q? PWWq[}^t+t);of۶mEEEbkDY՜9s9kbg띜>sK[Nby#B5jT||zq=5a;w9:::t* ΄ǎylٲe3g;Hc&&&oƇ~(vŋT^t3(..nKxxgQ46cDҖТE&L㶍v5P| \"v &^iiikƽx_&&&oMNFP(rssMLLxЍ >jjjr5|0"/FD_R*;gԩS3f̰d_ukFtww߻wo ={ƀ6$wޭlj |7 (/ ^1cƝ;w=$v"EDDDGG=Q|i__>uTss3M65jҤI555gΜQ}Rq{EFF2oϞ=M;جYUUUv>|G}TVV{dB9s攔|-hW²LLL<<lIIIӣIIIxccctt7|𸸸+WܹSc^x!77̙36lxw޽K/ ;جYk׮MLL裏FFF%$$ĨvJ$'&%%s9yd|||QQAEVVVJJAt~VV֓O>)vG}Yvmmmm@@)S]&۷|o߾7=_~6l8xRT]dɐ!CLMM{cǎ2dO?ԚڹAyxxىI߃>̑#GN<ԩSΝիUzzzUUqƅTVVZ[[7ٳgJQT'NTJNNNLLLOO,//C 5{sTTTd2AFPRRR__/JA0` .|iGRimm ׯ 2eJdd[o%ennqzz\.WU^ܹ?;J BpիM/Ձiii׮]WߙҰCtpssѣDZcǮTUy͛os!/툭ex G!!!օ΂ XXX̞=;22 ---..n…g͚uС7on߾]ݡgFFK.]f̘iӦb奥&MkpSu4, """--MPܹs͞uҥ#F-]|ƍbQ|i_z-__߀'xbܹի}||Aؼy3<+XBuVXXX׮]͛Ϫ{ pႃ>ScΟ?Stpp]h׬YCt RILoo޽{O0aŊbg B)@IKDt+V?^"h,66ҥK׬Y3`F -ZtoUiTUUYYYYZZ>x@,]woO/cMM֭[ ? @BP\\ƍ;@ WKKիW>m߾]&,,,7ǎUjjjhDYZZZTT;h 0;-D< EYYzT>|믿+A*** U}}}yyy9vXBBB/^~aZ? h!/mw1/=Ajjj OP]]]UUeA(--5TWUUUJT޿ ] Cvz7jjj&Nhaa"vЮQ|iS})));:-[[[CfmmmnnnLMMufA1333HWRk׮理DKe2}YTtDhS֭0HWVVVJݻuB]t4HW +KK.]+Dҽ{wt%zCS*MGEE͞=wu9|V9v옟_=\~}`` w(@+7.##Cׯ6ԃQ:WY_RR믇j#f͒H$Ǐ;ӧ͛ _|E*/cEPdggwzp³>jt,rK.UUUbgӰaÆ g}*&ǎN:e/\.(._}}0Z]]=rȨ(a^y啑#GZ[[^Ѡ[lYzz:Aur|„ b7|3qD۷i8ХK\RӦM+o|饗5򺺺?ի}ٳgsss[^k8L&S~ꫯ6j#S*.\p uuu~iqqСC/]{uVkkkw}v9sF*.[v>k׮֭Ә'""ի{}޽{ hӧO׫Ֆ_xDT*_z%??ܹlʕs̱Q455533So \__tRM6ib徾׿T{~ݻWxK4Zmٲe jxElMc{*,,,]䷵iF$T*7nܾ}rǏ6VYꫯJg}6a„Fwvv~Wo~977f5G;vXx?}SSӦa~#G|O<  4hڵG1_իW/_<;͛///%=_~Rk 헴k666k׮keWBsSah߿6M'>>~ŞCUߜPeeeBBB׮]]]][rHc3g qFmO{u{ժU5ܱcǠA mtP_@d׮]aҤI w6^7o޿#GwﮭS266oZlm\MT*ɓO>YZZZ^^l:ԩS l߾=2֭[ f߿u떫khhH ޺uoRRRAΝ;em5;:< / hYYtzCiAECMvAJ111QQQ螊_#INNڵj \ljyyy/޲e!?x65_v>}4:OĴ7mtOE믢>|xqƩ4GS__zGug}n`mmwބo5xI=֭[W[[|577o6ӡgeeu0/mJr̙bоH$O>ѣ/NII ?y.]h;ݻg \dIuK$'N<3_}UYYYVV?Æ4QBѨ|i&C:=^6^R_222?TTT4ͤ t9sdgg +RP(eeeꭲ ]=|_5HW TTTV]Ç +#G?~|ׯ6lX wyjjjZRgꪪ*t%Bii6HWJR˪CQ44ܿgϞ}[oF h#JJJNNPY[[+SSnݺ+Alll ҕT*ڵkkzP(H'֯_϶f P|6nݺ teaaaeeeA޽{E+ZK.J;;;CueiihaTI$PN0ŋGEE͞=P:4/F?!GEE59pJ+ ?jԩS/_"v7nܸ _>88PFN >z)A^C-:/8q+W֬Y|r:P|xd.\8ydhhr}(ʜD2fv >jkk-,,kjj5tf_Kۙ>}D"9qA@ۡ`D_eddI$^uE(999>>P ,+++55U :W^yE.?;ã|rvv(ŗT*AH$bm Q|["H$''Knw޶ٳgmllڸ6ޖD2<ݻwR;h(@՝9sF*.[̰+ʺ: <r;/H$Tꫯ^xܹs TUUڵ{}QYY yyyAAA 8::9sFOVV WWטS><%%dc'&&N2ήO>6lh޽{}:zx [ IDATTVVܹ׷[ncƌoa2oϞ=MWcF6 "u։h_h+ 8qB AS[NTVTT]k׮JrժU999׮][p/j_Oիimm,\\\Ξ=tuu-(( Q*w޵P(nܹEEE'Nd[rɓϟ?ƍvo߾#Gt5??_jk֐6'AG$΃Ǯ]tw-0FMM bI̝;WJ Kۡd ]z V\m۶۷oRQQQPP Zرcn9RK/4sիW7:EųQT'NT}_---ձFAHNNNLLLOO,//WUjI3mNHƛtJ;@š/X[[;::ݻ7!!!%%ͭGǎRկqTP(:99ݹsGlحiCO6ѣ7n:thpppիMZ'={چauuu``oZZڵkUF׫ZKڴ$Q!kK"xxx3F Ɉ#.]~z334BqΝxzzViQmΚ5СCuuu7oܾ}# w䚚KKK{{{[[F t2cƌM6UWWO*.^7<}Ç駒AۗI&߿_h֒6-FCC:YVVV hqF:u֥&''GEEDEEyyy_irAºv6o޼g}ƪZvmϞ=]\\233?䓦m>ScΟ?S/&&7wT^^.>CE?~͚5^fj-ik4<4tZÀ|}}O:ubgо<_W_}p/wYqqqxx?O0 FvN<)vKqqqLLkjjN>=|Ft J2''G"#K[WW'J/_f*/@R__/jkk5;#ڱcGXXXzzzOAAE\]]wڥT*/_~ҥm۶ 8PĜ ѷ~%ᷲ˰a8`bb.8;;/666++kʔ)b`xj߽{wllŋwYSScbbP(46?p~?~|Ŋ;s̿oGEEwɓ|Mٶm~3&,,Ls>߹2l޼y[\\߹NNNǏ۷o?^s{Ownee[;ںW^y45_͛-vf͗"ν}޺uKĻwEEEw\f]|IKK[h]p¶㢌{A=ƭH$tz_lmm|͍7=x@__߿r C̚5kmm'O>q~1c}ˠAW&^ZsGNNNz#gϞm/ X[[gj5`6ЁǎTڵ+ @Ν;+hXpڔCLL̕+WV^meeuIOOiӦeee QP|J0.\ 377?yK/$v(FADӿ[EFFQ.l[n;cΗ["H$''Knw޶ɦGwYvz-grݻ8ܶm۸qJevvvNNA@{GyΜ9#J-[fΕJe]]ag>>>˗/2dAÇr9U,/D"Jίŋϝ;'BUUծ]G $3gTdeeopuu:uSRR\]]{=L\XXj8e;;>}lذiM65jҤI555m{EFF2oϞ=M;جmmMH}13͔PNn:RYQQvڮ]VWW+UV\vm…/_|>W^sffL&sqq9{zյ>"""$$DT޽{.##CPܿ?;;i%K̜9… )))nnn|qkܹEEE'NdWTTT[[{ȑ]kP[8 :"uyPصk곶/Ǎ^QT*vQ|`NjmmݫW/sss;;QT;::;wN&??IP(kdh猌޽{+{YYY%$$iVSSӭ[L;<==uPUUecc(w}6ӦaВHz_*3!/x ={lRRR߾}Aͽ}ܹsO^QQQPPHݎ;ȑ#UJJJ>޽{/X ##QUUUGVm7.++R՝8FRmN8Q}(99988xذaꫯ-vؒf:4:<4 _3@G㱶vttٻwoBB=z;voJKKe2 RTPurrs?ذ[SSf6mѣGoܸ1tFG---sssUrZǸ5P"\zU^뤺:007--ڵkJi:MK"uyhJǗ "H<<<ƌ#vQ|Sqq+w#.]~z334BqΝxzzViQmΚ5СCuuu7oܾ}# w䚚KKK{{{[[F ,,,fϞYPPpB6H.]f̘iӦbJ奥&Mۿu4SkIDД/@4+++==] v|||$w}'VvXUUUk׮ٳKff'|Ҵ͛}||yW^y%<<|ŊmO?fرT;bcc-Z4~5kjPG3iI>iRDxT>>>}ݮ]C) T?qڵbF!;c *JTl2.@矧-]K,cGm`ѢE ,_ҥK۶mV\\ƍl6w?c_< tJb\?sLLΝ;kjjT{o=AjDGoq_~qE˗/8*uqtڴiC its-Zeetݶmk֬q4&&F{OիW;99]rEsuo_W}X|s8z-aN<㨯:zxx8ZTTAt---qNQR#Hx(,,.++;c;֪$$$ilT*MLދ$HtsùBs8s #733Juuubg̞=ѣG; rtt{77n>|088x_0"_ H$m}{[t8qBs[d꾷EmAT?9Wǽ-͞ޖfqoK긷su:m1^]@Ɲ/mgҤI)))G|}}5`t&AAA;wlKtXp혙 wիW[YY \.755; h׸(#gϞQ}w֣Ol ww{7]]]>n^x ౣv^sww; 0a@4"{EFF~FFsbb)SaNWW)S<M;d~~~{Q팋7nMjjjn*++ y֭Yf#88Pj׮]Ç裏Z~37Zc3^|СC@}?;vL۷oƍGׯ߆ /vޭ\R.b`x_@|eeeb`x_5_ab?:g4w^ÇB.޽[|Z0"211;h(d2[[[??={{>>>2,88P޽{}:|ÝT;oݺ5k֬=z4쪪j׮]Ç裏]K[{Q&L{nM:-@@(JA$IÝNNNIIIw}饗^xᅂ<{{^x!77̙36lxw7|𸸸+WܹS ;|uuk&&&~GSSS###u^cм~!&&xt_DhѢ=3RZdɐ!CLMM{cǎ P]]=p@__%K|~O>ӟT]=|p߾}7n=zt~6lpAUyH#5Fo~O2% i#%'''&&WVV9RٳJrԨQ'Nl(ƍS}ׯ۷oϝ;Wݦ@&i!77WG{QA6lj#œJf 0aAEvv b?qT]]i&[[R%իWAи RTPͭGǎ>|xK>j{wwwRyU%33ԩSN*v FT*rD"k B2:;SyyyiiIlmm߯}.]f̘iӦ 6陑fffiii Ν;4`.]L>=22}U$1988.Zhk֬ lO?fر4 pႃ켼Μ9{Gmm۶Czyy/ywH$:XaM8~HIIy Ww!v FTCyꩧ?>sL00|dff^|YP?~<11ODwa,ߟ0a† ) Ã1@(Xϟ?|S`,$++KvRRRĎk0İ0n|g_N>/vm޼9++k„ b`xlA<<<32d }(J\.H Y@cGFD(#b]=yxxH$S >$IVV)@ Q*bgNSNdbg /FĂFD();;;;;[c=3Ϳn`D_KH$bm Iٮ]Μ9O4I, C0?/^;;NbŊr<--M ҥKٿA#`D_ N;^5 'OOORP($Y@ŝ/mGT ?xP|0";#z==='M$vF4eʔ)S(CҁݻWhR.޽3IIIO&# IDAT>zԩS3f̰d_udH?DK>>>|󍱓dfffee>Ѝ ZKTյk6vXq3oEYP 3f̸sѣG:t{C!"""::Z`D_:M65jҤI555 兇;;;:u7䧟~jyo FGGO2'(..Vڵk?裲2uS><%%%66V&ٳGզQHAf{>>>2,88P4ʠ-jCh/Bbb)Saݝ8qRmVWW_~}ԩ3fLgC+:gΜoV[)VT7?K,9s RRR>~77/Bc'|zd˫{w<==UWZ뛓sڵ ...gϞUm۷ȑ#]vc׮]&quu-(( 632hpPmm4{]FFB~vvN>}o޼ٹk:xLL>]b`x_ڎ~ŗnݺeff6wء5o-JKK7L\QQaaaqzGGsΩ;99) U{m?}]!տu'V}ݻiAGT:h=++2QL6-&&Fr͚5ޑzRuր*++;_YfiAxQIOOܪѣG6ǍRYYimmݴ޽{lْڽ{w=z5jjARRR\\\n߾=w\u2L$'''&&WVVFPRRR__/j3l>K3g\zرcutrKv>x?9rɓO:uܹ^zYYYw?D뿢 he A;hXswwUmrZTP(-SSSћ iiiKAAĉzqر+)--U3LMMU}}}Ү]B0I˩3莪ӦM;z7{NJ _>44tʔ)oV'C+z|Dh?<==rM(wgώ,((HKK[pꐧj9A\2o޼-[L4IA8zÇoݺzѣG;99DDD);w055ŋ7Lyf={\RFRHLL|ꩧu6hРUVnn5gΜ+V,XiH]UGu? uuuQmQ999c{@Te?32Unq@I #r!G+uuS Rij"EKXt35׸(fIQm!gaf0_yy>y|8_+++ O|bqrrٳCL4ڵkD 3<28j* 9bD@/ A2  q,76t"c\.>zh``AQPPnݺ*gG=rUqf„ $In;Й &ر?4t"cIrr;CXWYYiii9Q@峖0jmGVSSk$Cky饗 D>>+_-WW׆h~H~ek1 & =ډx'e/NNN֭kjjND啒N{Xz+==](ZYYZ}ũAAAT綶??A'h߾}%%%FҲq|.ss 6;v^۲eSO=E[^v-%%>>>1%%*--/2eʦM;FĶmD"Ѯ]'Nmmm}[oAYƍ֭dR~/CGGGUcc7x͛Pv$\B}uuu^bvM899$PPP׀VVVǏϜ9$IDbiihaaA?@n0>033{=vXzzzddD"0H$jmm]xb1c E&D"X׀"H"xk׮ݿ/~)u|֭As8{{{yyi2dztRppr\333H$|@ r ֭[nnnA(2I0>0rUWWWOONB=x@'I(L18B0--m`{RRRCCۧOnqddd\\ܮ]|}} /_? ߹s]jjjq''lD-JHHHNN?WfJRoX,U(D"Ju$$A>TG\eǎ%&&NLL,**ӟD_HJJޱcH$_`[[[gg={ :KRRҜ9sq---;;; طoN*P Pmmm ...~~~UUUl8vZ@PZZjD@#b֭׮]KIIollLIIJKK/LiӦcǎm6Hk׮'*Gkkk۸q_-tD g\`Yȑ#^zslhDT%%%&Z0\Bŋ~ܹs ^5 QP|У>8ԯ1666>> 0_hُx WW׆Cg`0?@P|#_TQQQ^^wG=_Neeo': `rЉ6or +_F D啒N{Xz+==](ZYY~Uv`ه~-Z~a6rsrrmmm ...~~~UUU49۷d)eTTT:նnzڵ{{Ɣꫴ/bʔ)6mJJJ:vA۶mDv 8qb:߿^^^s̙5k_]\\k-Yd͚5===7nXnk7 `C`T믟y 3wdADDDĴiXbŒ%Kd'O<}tpp0Atx饗^x*چ zM6AAA.\(**rwwwwwػwKR-F< P|УW^yeΜ9=E"Qkkŋ-uuu, 3fP---2L$b:̜9:pvv𰳳S|ljj$IRQ dڍ|\./zTXXxA{r8{{7X,*/*x<K.iA.`0nݺE}-ڍJJJ&L?@:TVVkD@oQ8222..X.߽{4LfxxΝ; ~疖 h: KMMJMMMYYY7" gC`@`HLLLLL+,,ꫯر&** *77&>cKKK___|qŊ8{l ? $ [o}LJZvs16;:::w@_n \SSSPPPx0JTTT$# յY:f͒dL&Mjၻz Y=zW\WQPPЪU . 'N;Zeef0 \Cyf.;:0>ׇW=\0ZH$̐//vfݻ744bEGGS]]]Bʊ lkkgYTvVٸo߾X,z{{eddtww?㭷jmm}wirf͚7n[n{ 0Q/;;{<o{9}4IԷӦM322Zb d'OܳgOhhr@]]]ammifQYeg޽flذ!''GI .޽](FDD oGF _FHںxb77777wvvQΘ1:ppphiid"H, hggl2u쬲_Qg͚UVVե.g$Iۛj(  %Y,<ҥK41͛_677{zzFGG2F.kff&/_e0nݢ>/0n2r8qddd\\\qq\.{ӧi3;w---Adggqn333;;;kkkYTvV٨dѢE uuu zLMM{TTԔu(SQQQ^^C@%_FD[[[??BIII;lll:::ꫯrss H$[n4iGiiChfQY]e ]t;;̧~ǖ/+ `d̚5K :]͈p8UUUW\yg 'O~+V 1t.{2$@-\GEEEGv횡n͚5Љ405$Ѧ_`$644: @ePa0Nt@-]|)/z Gx.Xg 4t"$I|h2riGP`` */㘟_oooOOs1?/c@P|#_=we2 P|RqqS1ŗsUC# |#_ԩSW  /zTTTtk׮:9RVVcD@P|c,X  J UNz_uuuڵkK.ussNJJz!A!!!۷oY1$$,ׯ_WOQ4iL_*ft*W)'O~7._0 WW^{\6mb0ϟ'h6GP^$i֥Wpwygƌl6$H(//'I 83qDC' X7ZZZ~g_˼y>3SSӎ ׯ͛סo);@޺uO>DfyfX,oڴ_g Uh=m۶ނLo 3TB&ܟ tsر!mנI<4hT.uR[neee:ujʔ)ͫ?~~~@&dv+#1$ɷzAI IDATk…999TKzz?YZZRFFFƊA(e2kᑚnUV ³gR-?S4~x㍴3g,[L&m[abbn C4Ԕ d2LuV6}ڵ~fgnnn6m:vؕ+W8N'|;::j]$tC䐶Q]+%Νy \.4(+_ƌ[nݸq_TnWWWk!66۟}X__|~튚,--n;P`[Uh~ ?>eʔӧk+--mĉl6[x3gzzz0IN$uBJBBB6l駟޾}[3$_ƌF ntrrrΝ;gccgΜ9Z'l_nnn_FFFG:V K}zʕ&j ? ~͋/FFFy1 ?ɐN$i֥4+=sLttÇ=<}_|8q9;;vɒ%l6;))IhoWݼG GG{Xu;C =uTZZ.!LFkC] Ot$Eӡ2Iu4+{zzE!ͫ?|>gw СC/_~ف322t޽E\2""B**MLL`0=`KFEE/k֬ $O9yuxP>g}v'VЯBAW)P|<ӯۿsεL4… ֭kkk{LJ9ʆz:_ؙfWM|!'';ŠG~Rsp G U=x`ٲe=۷曰0!ٿ?ʕ+*$~zgg_駟xԷIIIA߿ox:̚5k…>vVЯBAW7輚3A.]O-[wDGG?t(_ؙf&MZdD"׿ell~_ =3_QMMMFLDlll||AQ6r 9Gp#h$I> _dbbcݸqIg耓S@@u뚚 .(耹 >裩S]֭[F _F1t"k׮utt>|i|_Ifffu{1610,_(;;{N(hڵ~rC4tO?tѧ~g5t.ȑӣP}}}d`z7E"'| /׿u?C"$I$T*H$: EX,U(D"Ju$$A>U4UرSWWW^^ |G---ƭ &X[[*c=PFFFVVV: ENB1̉'?NKKKaaʯX,_~c/wvv$NBacc 055533I( lmmuT' NBannnbbh0Hr-Z` A`~mC:W_D"ww۷\ĿQG***HYvڥ'ܾ}{ttn1 -twwKRf .m۶]=(4_F 0^޽y˖-V³{@y|M]= _(<<駟0t"wӧO>}= @ |~OOP|O?d` `3_=B@ݑSSSc@***Hx@@KRйێ(''g/^4t"`0(ѥK=zUC'ѣG|mGb  |#\%>ӃW=\~ӰHH`0|>ƍ۠'pSNiqlvnnUeeas ٶm[ooo]]/:GI9(d2f͚mii~z+D啒>p>ձnnnQQQ4222mmm/8AܹsgL 6wP+==](ZYYZ bqjjwPPPFFFww7չ-!!ϯJI̙UTTUp*ŋ#""m;7$ƍ HII1t"0*̙3Wnymmm 6Šư7R>>>}8ɓ'aUvwmII\.~yy aXSLmnnOC>,fd8EϞ=;??_&UUU577$q8>|ŋ߼y3//bYXX :Gee<45$K[[_uӦMP9_P6B]LxU.J>?fnnޮ.Áŗ-[P?} 4}X,ݻ*fooCAArn++RgΜID"TOLL/n޼yz4IiӦӧ[ZZVTTv#=z饗OoD@/D"\.x&hy+w~~ĉZ[[/^b)O7hnz4YfQ'OniidLuƌTS$~[D"Dtuu]z$Iooo=00PIU.vHZXXLdNoh"E|xGcRT"j1Tu۟?K]>L&S.m޼yͻ޽{ihƐ(x666.] V4r\333H$|@ r ֭[nnnA(B?0_[rK/_K,8%}X>3gΤBfffvvvS0SUdܹnii111YhQBBB]]]qq055}RSSRiSSSVVvu^?A ~c^۷o㓡{ ^$̙CΎ_ImgggFF /`ee5eʔ 6PUקtvvv˖-S׭%,,L# X?W+A4i(SG]̎cǎ͞=ҒzI~iǏ?|ں}vooo@x&3y%666 5|ݺu* Ip1l8# %ӣێ9 _~1t"0rP|#_>[z~kD`P|УK.=zիN6;] 8qBC 2hajll NNNK,D4*++---:Jlzf\SFVLL@ r务ێ$r9 6orGC1$ILfllf2 {999bY[[/\0++KrlÇ_x;;E>|fsܜD" JIIioo|,As}'⚚4g//"TbqjjwPPPFFubbb8pYwwǏ[,{ eX[򼨜 ??A'Gfccccccܢ4 zAH:u*AGDrr033#Çtnmm0aBkk+I^^^SN={,I-[HdXSLmnndffRׯ={v~~L&jnnL޽{%%%r;ggg߼yܹs'N؇bM: AAAgժU N277J$InذA(VTT466mܸQ,%77Ν;W9s&5&GeeT#"""P111*O,l6N&)ZyQ7/^|ͼ<eaaA?)$58ɓBHDaaCeB`|R$Isԩ~iOO=T^^I,$?899QNJ{{{ U7P"H[[yZZZ{{&9GEEobmFGL&8y似x`XXn3Wy^kjjsϥJҦ&󌇿]̙3 )/Z****++311Ѱɓ ;w}YgLJJzWwaccE/iH$֭['MQZZzС~_z%-[\rS($&&FFF&&&iロmll|c8p 44tҥNllutnޏ?_\b֓888,_|H@]G Z6mZ}}/B=y.]z~ qi!T`:9* _F~ h`,@]-DrG-J$:p 0B' FF&U6)FPdn\.ԩSCJmG#)!m޼: 6U> Gqttc0ÜW$Id2cc F\0BWRRB{XhINNfX .R3###88yϞ=TD" JIIioo鬲Q9UXݭrrr8u~zcc㎎ |}};w,X^9]]]Bʊ T*רsgϺ?~ GGB۲2KKK bcccccܢhPl6;))iΜ9^^^EEE9hr` #@o>UV}7N" G*j'33:fXl6N& 쟝}͞sM8_{ږS6l aaa7nTY]T#"""h &$5uԳgϒ$oٲ0eʔpEׯ_?{|LVUUL3Pn[x'xKKK-,,csIE7uiGee=( $Љ=*..>zhUU(***++311nxDDĴiӌVXq^z%wwwcc .]̙3:0ꎎkkk>OD___vvy<ɓsi$UvV٨ٳwf6lp ---bxڵ/^$ŋsUqɒ%o2ɓ{ 522vvvd࠻+PTe˖)\ãgYY?!0֡`3f̠ZZZd2YӧO'?󊊊~rsssrr-[Fe#Z[[/^6κ:U6*DQg͚UVVեB~{g}:ߩSɓ' bݣ8.4?MqU?kxX,67gP|Rʕ+BaqqqccWO(7oޗ_~Mñ?|bF.kff&/_bܹ/^xP(nmm 033d8dzt钆өCƁ\]]޽K_zUd2r9X'h 5](Fb8((ںZfׯwwwY[[allW\\,޽{iuU6*311YhQBBB]]]qq4_EpppSSӿs2+9 ߹sgAAA__?ҢA8Ђ Μ9o;vL>sL14c? M5i(F/-[V\9D"ٺuI<<b޹sg3gΤ𨬬jDD?_SSSTTp>=&&&>>~`{ږL>>>YX,6]WW'bbbhΚ5f]vvv999NNN˖-|Q7*5jƌԁCKKL&4 aWҠ5?Yљr?3gNE"X,V;& P|RPP@ J p{(bbi:hoo idd40533D˗/  ͛_677{zzFGG/g`guɊ>Tg2C* )'k…R4???==}ʕlll.]83 9sf|8222..X.߽{CpsεnݺḺjdѢE uuu rn333;;;kkk쬲q8Y P1sL(Ca|O+o߾%dܹniiB@._|+W:3###mmm 4wMNN666>s18twy'66vݺu%֭['MQZZz!UvVA4 𘘘˗)5?Yyyy*;$%%;v찱P{k W:=IQ믿:!7o۷i&Cgaaî.sssCc^@@K~~qW U<O*Nf MMMAAAccc <:P|P`,Q_/zȡ^,`0 _F6;] 8qBC Q(:99-YD!ApSN )1dݶѲe˦N:k,C'z!r9 6orG2ȑ#G4b$IL6TD366U@|9CvCp ͚5kժUЉ^̞=[ H$M:(6X~qGGAYYYT;w,X`oo]__O5۷:JOO VVV|>f2 {3&&gϞuww?~8A:YZZRl6;))iΜ9^^^|>:66-**&+D啒>0ZQQrJ,z…YYY*f>|^[hQ{{Çl6tA8w'x"..IToon #婧"ЉnXXX٩I &$5uԳgϒ$oٲ$I5eʔjOff&u~ٳgdfAݻgkk[RR"߿_^^>sLLL||Or8'O*FjÆ B1,,lƍ*)ξyfOOϹs&NX[[;Ś:u8ΪUN:enn.Jt,rqqͽsիgΜr""""vxO?:=_F/̐/$Ir8SNoNNN~PꩧHdXT$~ɉ:VMz{{ U7P"H[[yZZZ{{<5/l޼Yyu/dW\kkk]]]rhDEEobmFGL&8y似P(GDMñnbT/T*]rcÚ8׿O(jT5HńEEEKEBcV"uXS*.EZUE"( } cΕ"aP&z?ܙy>33U$soENNyQ[[sʱ>?lذݻ:::4zyyjiiYZZRQFGG'<<}ٛ6m1ྚ/2<<ĄfĉLG!QRRRߎo YXX?~qcGzDBfKݸq#Hs.xE[`p?|odɒѣG_~ $&MJIIX(quM6MUU(((fpˆ X,օ #!ֶK{$pbccBbo 7nܠj{)̾'OP-Хߟ,ܲex'6`@~++GXXX㓚źsAG>|YQQ)=jmm5f̘;ww͞=j A<{lɒ%ھ< ;fkkkllo߾Z<<W]~ֲ o(ƍ ؽ{wL&>).9+6/2d77k׮z{{:4>>^$?'Ba'ZJ yyy?"UGG4mll6n(Ogg0Ǝ{ac{{;AW\!9r9sZ]]ӧO666_}U{{{uuuffjqq1U+1.---d͛J&E7o9\xݻwy<7|CK?>>o޼4PxǏwo --Η/_D*6M駟ײ)\ARRǏ=<<5kߺu/ JJJΟ?NMXRRre.*K4q\CC|e;vfǗLwSҺ+`00!@ɗnڴis=rH$r311/򦦦GL:5<<˗T_FFFW\ٻw)Sdɒ~lzj6=aooo@IXX)S|||߿}׮]#o޼I5%>~wG7oѣw!1B"m[ihh,^秧L,ZhGhoooooؠvРAb>x||vvvree%}ct=KPPnbb"Y%">P(]x1}˻$_dTڰ]PZ[[~MCf̘A^K믿r@$STWW֊/_D---ZZZOY1E"ݴiy}ѣGD"PWPP@q8>]vDf555}hhhi&r7n_HG,m|iٝ䋴H9;;GGG/ZHbm```JJJBBž={###ÇGGGߺuKGGٙ, >z}~嗌#""޽kkkpRRR^xjժO? Hcc#GIlllLLLaa#d[⋽{ܽ{wɒ%#q!4B?-Ibbb=z/^BYVX^^,`ÇڮY岌1cƌ)S?(Pjjj!!!dRkVVVNfSSSYrrr=vĉdMMM@ F#F$%%Ǐ=ŅzرcgΜԴ}L*ZbܸqB0//Q_____… iiiSN?~3gnݺEy 9ܹsef" fΜIuLq,m|i)Wo$_h֬Y| ^vܹ;v͙3g͚5TԩS׬Ys튊{7nΝd{jww'lgg'OIɓVXA8X,Vkkkaaa}}f,~[(vʗ+++#JѣyfiN<?ۧ4.))IMM"Exx8`1li{l9|@P__Oxynnno'q]]8|aȏYYYA(++wvvR-322N:ehhHjjjfdd8˂ ?~b=~i핔)NiƗؽH0;paUUUtٿܑL6!~, G.-ǏOy.8au,++ɓ'3gtqq400$ӳʕ+\J0_ۅj]]&s$ee尰Pfiii ^NwA31dȐKgffFFFU3f !)**J< m۶Ν;ݧw^ZZZkkaFA?pϞ=/_yqLilڵk333;;;?NJV__/444 dСC-Z x[$/m"!u_8K6͔?kx{  $/jjjΝ+wҾs&JI8?C^=~!,B跅)=> &>}Z0))IOOؘfEQQQ2nAڛ7onkkB$v.N%ƌ#ҥKw\2fsss6˗/'_(C3]GGGbb"X M6IeYW`;;;ggu^,{kbbbuuupp0X}ӧdu.\QUU@%RQQ믿D"џ9|pO?]fMGGQHH/ CdO8AԺuVOO϶Ǐϙ3Gw޽ҲgKKʾi"\/!v~\mG.>|ĉWn__3TYY_޺u޽{q_S%>ӧrss80dȐ/^HD$lڴI< jy󦺺ʋ/Ξ=z yH$TQQQQQ,wwwUUUl߾{Yf988455ڵfO<9 @OOHa+!qRiP]%>gNNNL=PWWohhWSS+** MD``ԘoM[0` p87 K7n\EEEyy9a:~Q<@?@xkᱣ ǎ5{7( IDATw)))L ajjjnn>hAtoΎg:PWH|m@oXXXL}ݻw/77@!'N>ZXX?~χrss,Y2zh{{ׯ’dҤI)))h+q -}ܸqYYY])/p8qzzz6lb.\@ r-[7==$isI7 /<ۘb1D"Q{{7n8sLÈK.͝;WMM-!!_~;v Z7{{?} ŔO8qժUjW_Bߟ*߸qD\.WוvwA hV Ga7+%m[H0F ߿ѣdю;Ovڊ رcڇs\ lXXXCĞ={{dvvv\.]eYfQÇ'#VZoeeeffvOO?EoJJJl6VQQQRR߿_)6,KYY 88Ν;Ԥ$*O߰aý{ Μ9#8pܹO!m Ç'Oqom $$$ٳ'<<<22:|ptt[tttG۷_~ | >}ZXX('[Q^^,S466:t`ԩLnddDxxx̘1cʔ)#cjjj!!!2-%"zvtt0 hH0ܹs;v0223gΚ5kZ''S*++Yqqq{5557nΝ; pqqx䵻ĉls6G9yd%%+Vǎruu=tA~~~r/k׮|I,YҥeYYAVVVGODDDD||555eNOODEEQ!2GTw#~7n 2,/))IMM"7G WRReLi_}.iZhjjb:А|`F^^^ss)q֬Y999 &&&䅪Azzz^^^UU… ȻZ?%--wԩǏ?s̭[^%iӦ:::B~+W?~=!!aܸqTUoEHǏ'BW #OII :y$yx4LrgϞ{Ce%SRRƎ+~я?h``@gIIɕ+WW!{A(++2>mxc  >?lذ33ՕWBYY˰1b:$~ۋhJ"~i„ O/LJJ366YEaaGTT-zeBUUUOOo]S1cPd{;;'Nƒ/< .//'o 133#$iA +%m[H(xUC YtiHHHqqqfffddUٳ SSSf֮]'Q__/444 3fD8î\2444++룏>%Ht.-Y,ᑞ~-__ߟ~)""bСҖŋKz{{{zz|S:::xw>cuϟȠ 9}tuu5, oٿ}}}Jls-;$_^5 9s'|%FDD9;;[.00pTUPPPDDUTTC[BCCBCC,--~ZZZ67oHKK;p^___]]ݣG8Q5k짖tosɲ-5G;v'O?~{hӁI(r8Çw/ @"kk릦WJLʬYďr7h-**j„ x\z5 %--q:t xʲ  \~=#p޽{L ?@ u\)--e:~.]f۶m/^d:Ky555틈377_x|??f:p3.^|}]*_ym۶Mn݊Y@@|}r[QQ!__3{l jii׷QVUU/#9hddt |?uuuJJJݛ555=ECC$WUU=gϺd)%%%111uuu;lڴIyNdff=oBB|}SSS޳g25,-?~&0o޼˗/WWWWyE1rAAA511{^#w2Ry555+[l6[KKKjjjr*doKUbD"cxcm޼y׮]?.Ud F(4eΝSLa$N'NÆ #Ktw}O>dРA SNuww>ӡ%7n3*ACId &??<#!!aŊL} ;qqqr (Mtp rrr0aŒ3"??+))1 \x4444jkkt,0p#B@|P $_o;ollīv@xXgϞ1$_:sL@@  ݼy3&&&//@`(,,d:{H)???77@Mpܦ&WMֶ˗L|P $_B@pnDAX,4$_o1|P˗?~ƌLA@f̘ p.!@H ,555۶mx"Ӂ@sss;::42P۷/""|x`}򥆆ӱ Рt 0!&Mt;w_:tA Zlٖ-[ fdɒ%>VKU{'ww}7''GZMyAskAj9M_333;_hn bڴiaaajhr\18q'|"ܜ/áI(XZZ5jZӈ455iNUUAfi~hҧnmmjœ9991117ot8vXSSԩSPR2#  s)S0@ǝm۶cǎЭ[Wt0 b:~tt?A%$$L:Lt%qH0LGu$$$Xo 2P;qqq4,ӦMc: I~~~GG /r{@ d:!@x@9ӁcX"^KZZZ8z;_#;_(/ !@H#GXt 0Ur?@ b:p ;w. LA@rsscbbrss:OOO "ǎwݼ&;_wȉ)))1 hH)--5ǎBD" X,Ӂ@A@p.-[l̘1L # #?@ b:!@H(/ w# Ҙ^HC3_:w\@@s 2 t?SNNe:{8@NB)+TNt(ϟ_SSS]]=bc (/ !@8p@N<:zҘ^H(вeƌcnnt H$b:7P $_H)$$|MMiӦ1.AZXXL>٨"VmddppLPǏ5j |R]L$ B6-K7|EDUlW kjjGt,0p[XYY=z @}}}TX,֝;wd ##;vX[[O>}ڵdyssclmmW[[K 166NOOr?3٦KAٳ';;Hvmggr}}}33SMMf(/_ioo=$DOOŋ߽{7==}7d9+z5˝8qbaaa{{?3fk֬uVYY_|A744'?ŕ?^]]Hbǎ1##bPvZ???i;#-.,AbwikqW-quUUUl6O?qN>]ZZjllyކ᥺@`@C > ZH:|7oUr/_5G]nhh2dHyyP(+(( ˋ8Ngg'~ƍgٵk 4}$;v G-m$%6%H.m-2]-_D---ZZZW\qnp / qDTTTrryyyUUU .lhh(..&͜99--wԩǏ?s̭[^e]:::BP8c$vYғ:__cǎuvv9sFSSƦ];v,<+/Æ #?feeYXXI8uꔡI^ϝ;ikk_po͔ȋooo{{̲2WWWHDVu RHd=./{w>ZZZҎ9bvi:::MMM Yrrr@@ٳg㙛++ @f 2dҥ!!!řnnndՌ3FiiSTT|ٳ SSSf֮] +++ xJ/_3gĉB]b'N0a@ `*,,mnnf:{,/@444jkk1=NNN6{Ř_%,44t۶m믙4w킂ӧ3 1@85SQQ3ϫF&9?$_^3TSX,JZ^1Kۣ@(x<h rzw_x1rHc glct |P $_2|cjjE444\ٳg! Ǐ+z> E00-]4::zٲeL/L믷nJ^wvv~?Ν;WVVVWWlܸDo-333333&\|Y {ǖrO4_kG3fΝ;cǎ۷={dgg`&&&VVVGmmm%ˍvmggr}}} .00:!!fժUUUU_~%Y{Y 6?lذp秪}}} ݻ:lذ#Fhhhf֮]Di%2dҥKCBB333###zf̘M_JKKĻKFۣvE}ܾ}Ç^|9dȐu={ʕ+SWW3gOv =uThhhzze\]]7XEDDDllqe'm??͛7YZZVWW\.l޼yYBG@%-ibb3w\caot ŋϟkkk3 x<۷ Ot,c uo@{!o䀀g202}Μ9LGk]Nl!"00p0ݺu+&&FWWёX`@wȑ#<þ~UȈo޼Yb<4ON BjRio#@:;; E_^fټys'Mt;رcܫFYVV&>}_K ^(.^XommARH>}ZyD"Q||vvvreec/^8|+--M]]qUܹ#mV'򖟭[20w0ѣG>| >}ZXX( =䯬]Y,VDC:Dđ#G.mv%%%WWWgOdGwᶶk֬9|pyycK1113f̘2e usXuuu###Y$xboo?w޽&M,x![ |aFYYAVVVG=""">>󚚚-õOocc#KmmJbq" >?vy zfr=y򤯯?`hhhooBUu@_e~ޥT/// <(NOOoĈ?Í7 c̀{y왑ʕ+i|rRSPP5h i귺QsR7B@`@CǏ'i &MII :y򤴻 ĭ\2oW^K~~Q䋹lj#Gܾ}AΝK4---uuufrϲ99#==֭[?SDDСCzҥK===[tC]\GGxNsegg3g|G=ۘeҥK|ID"P(܎ACO>ݰaC^^^CCCQQW_}5z 7Kof]}ܥWUUeddPĜ>}Kwy?U( (e @nH0f…uuu...-*//t钛M+**j*((%,,LeZZAvvv999"?3f;},KZB-rgϞw}8qhaaq~T";;K.):x B7Aaaannnss3Ӂ@CI#GܰaC駟.ZGӉDvoܸq̙ GFk׮ݱcQ` @t 0!$>>Aٳ';;Hvmggr}}}W=Km```uuuBBBMMͪUKɓ'O޳g3% ?ۧ~}}w^wwAϫE>e. [>x@__ !C,]4$$833322͍ꛜٳ SSSf֮] VVV̘1#;;{>YЌ >iiiSTTU߿;jRx\|9''GKK@`@Ce@5kCSSUbaaM>w†y²yun^^^ӧOwtt\n]PP]aa!Avvv֭ \z51(((""b***ԡ-^^^ZZZׯ_>Nxxٳ7m$ݻwutt\]]DFF411:88zQQQ͛@ܒ%K/_t (ڰaZZZ?3ozzz}5ZXXS6ػ󀚳iPR.D|%S|+DŢ135-cFi\5THB2jtsr]Wuo<yu,^s\iӦ_UWWKJJ :nݺUQQ|yݹsg2/]v!)++ϙ3gӦM @|o'{HZZz.R00 |v4rF#O۱c@e} >`iyy[BBBFFfzknnvڀTUUo3TcH۱cn !Ch뽜P4*t`H̞=ʕ+oeee iKK :p4_`gjHHott¾KABeeeGGc!QːwC [/^HQQQ E@ୄlذiݽ{] $_/(@`nܸcjj >-ZqҤIx!00Zdĉ b :Qi8^ ;_djj܌;|F8p`!0|FH?---=*AiiҥK/]D DWW` R|||ݹsN_X4̙3gAusNރ|2DII)''gr̥7gCKH!̙hѢ @!2r$$$h4t NaX˶mfΜ9$655 I?#&77ZVV633ٳ .̔l}`` \^^pVuuuZZZ222o4ۙL zzz|||۶mH__K8BSRRLMM!\fAN8188EoFFF[[$??ӓ(uuu666Nn#!0ZZZbbbmllRSSr={̛7$((*8r䈭att###ϟohhXPP/''p1N@@@eee@@u!rk#ꫯ߿?DoN\]]mf͚~[XX8n8jțN?,!##"%%=00SԳ(uttbbbCĴ***nݺEh4wܹq{'NXē'O>y2,4Hl>y˖-;v_vIRRҪU&NKH9s,\رcm$-ZҲyQa`0?. `0틊c:|]DFGG={0<<]?)))66۶t:`_}QUU!$..0..ѣG)))}bIrrrBBBee "##ZBBfΜiee~gh7os tsscyӉ} SzժUO<p.33SLLl ~!mmS2t{{{rrرc ؅ nnn3f̘2eJrr2/lxxxXX9k+&&~zj!㾾}nի--->|(@`!0r:::ͩf*))ajllL=hkk555XBSSSSS:gB<%//kԩ'NvDbddD=(**644$''5ӕZee=Ge2jjjVVVWo:^ IDATq[B:!WO k`0BBBkׯ_olld0K,\vZ`rnM:x𠶶6<> ރ$EFFFDDxn9 V[[_>>>?Kq˗ϟ?޽{[7Q֭[];cff&%%UVVF,..d}STTD=477WUUY[[*((9s?ZZZاREEE...}bbboI^^^ 㭭ͫjkk[ =w &:uСC}.yӉsECCCGG/BHNN`&TVVr222JJJ#KƎ˩vvviiiԅG===v|XXXB{+WR mݰaѣG/]t-///C9x͛ ` l|9X:l̘1˖- ***[z5ӧsrrCBBtGPPPQQQooӧOfBimmmiiL=̘1ʕ+/#g}{D_.CFDDᇜ]=Ȋ,[OMӧO\v맟~lײe<==;9 CP^z?iӦ_qԩSMMMM ǏQ4ȯ:&&7`ە+Wxzz._\IIB]v샇_n#d#?4"HX;;;''-[lڴ*$$$66DZZ}hKDDGDD㭬|AQTTruu={vhh(u}/ۊ...G GGǏgdd8::1֭}9k=q?;",Zŋ΋/rJOOa||y[A?//;v%&&:;;[XX5yFAΚ5˗tK[ u=|ϵټa;;Wm斔L0aQ}{zzL`7e'222,,,44?g#@Çsw>Lo߮:<EFH||| @F`H?~ڡCށ\L غu@/BΝ;ax X>'N=z$(F{8e! 0&L`ff&@`X3L\x\ 2rp4{ wآE3XMJJJ999쟷nrrrԔ566|%3'|0 0X,&cm۶͜9sHmjj0rsseee333Ϟ=pLIIR .lPWW/##3AAA555ǎkjjJKK9!;%%4))½2!d۶m6jN8188x&L&oILL~zYYcݾ};ɬLr޽0Z 0ZZZbbbmllRSSr={̛7$((*8r䈭att###ϟohhXPP/''p1N@@@eee@@u!rk#ꫯ߿?DoN\]]=`%%%YYY3RSS͛7~x{8 ';b;88dddXXXvvvCTTT\\ze\~NLL̀CxԩS[n511133# 9!ĉ,+11ɓO<^.p9l>>>gÆ 'Otqq8qUZZڜ9s/՜FM0a֬Y鲲 `@`D0}EEEű_>|׮]STTtrr RSSϞ=[XXή{m[[[:`0/>ghhѣ#INNNHH0aBddIHHؿ]]̙3bccrq={'|ͷo^t逳q\?VHVVV555իV,ttt|Iee%/ qn޼uuu6cƌ)S$''-ʆoU[[{}>i4ڛ.Kqq?LLLO;$_FNwwɓ'c``0gΜ͛7gdd:::N:ULLl^JOOoݛE]Fqvv655]]]oLxHDEE׮]K&ҟȂ 4UNNbjLұ}B}8Blll8 555ZlllFFƩSTutt <8!#))b'455#**zBjϟ߿+>n---o-))0aaXܜ9k֬٫ԃvAAAYYYSSӊ+455555-ZFm p5uTuu'N\vm"122zzzǝJ\\LMMoq!&LPVVvvv$^&}ƏO;6uuuB1`0BBB٧F^^~ƍŏ?9s3}}} &ssߨXdddDDċ/؅"\xW|,]^^ǎa'$_Fu)!Ғ}jQQ\UUemmmjjp̙Ghiia6Nvvvzzzֺw@i$yyy.lll677eopO>o޼-\)Sςr_:6???phhh?~0''GIIАˌ*++mmmy\BŽ;,zzz .Dݎ;`RQQʕ+S%꺺?bXot^ʚ5ka'$_ٳg~g1c-[^UUUTTzjvӧO466tqqqާO-!FNN3q0cƌ+WϿp}ŋ+.]d2?~LZw꒒0a\Y8Y.22b ˖-SF߿nnn׮]駟bcc%%%_l2OOOwwN~ɓಲwn߾]YYyѢE|ԩBǏ?{ z3ss0!$ `֭g $ w/BΝ;aDG :  I<|v4*.]TYYYQQޞ:E6]]]1-[ddd BBBr:̮C~w[455eee###1@h!2Z[[fff={VUUu… .\ʡNKK_FFf!jjj;Ԕڨ---L7|SSSx2!۶mM__K| XhaXTIJJx``eeeBQQQqqqOBg:::111ŋSN&&&33333Fa{{'OR%'NLKKcX\^Q?%>V&&&ΗQzժUO<䥇L1SoƍݼyÇx鳶...}i4W6X|0Ξ=[RR2qDAB ɗQr gMMkfdd:uJ^^Kl//QGGޞ`pzoMMMi`x899 :$_FuuuBu.SCC{[˽ƍ?~Ž;βewBUTTOէ9z;v,***xm9Aeh?}[AAk׼~XIIZ_˖-tww΀pzIpppYYY[[ݻwo߮h"Bڵkɓ' ouuuh Νsrr:qKJJ>˗/syE +ΐz{{ K`B ɗgѢE/^pvv^xq]]]nnի4IOOa||uƍ?6iҤ+WvttO=W^533o֭[SJJJX,V``L6ܜ+BHdd$gHyyy%0(///--e2mZ*** ?VVVt, ` :>VBn*x=HF8nPssw}7{%K@Ht:ѣG#0{ aŋӧTF5"x?޼y޽{[[[W^}!d^ Νt 0,LLLO;|Ǐ޽;%%F^zΝ&&& ̍7ƍ"X`1 Agg皚l AC vٵkuݻw;;; =$_FZSSSTT[[[ !⒒oYmŊ `06n_>_۹s~gvځkkaa_ۻwV__ёgmKK˃k;~xmmmvwwVBBBFFCɗŋz/L&dKhkk/MMM|';yyy}ABBm]\\Nܼy344qN=nff&mϟ?z_~Ը^^^}){|iGݻwCBDDD/_sNv5 XdIuu5mfܹsϝ;_ɓ'=;_ގA |bFNFXYY=k?~<meeeo<wb :u?zJ􈈈8;;ݻwʔ)P}7_E¢d#x{w޽s玾c!ISS۰aHffԩS]]]ݻ'wf|_%@@!"xT Ak׮tP04|!FԗG6mZzz7\]]> .FFF邎̢Eƍgbb"@@`|F&&&ȼ/^YF/$_dbb;$_`08p`!0|FH #;Bh4uu3˙L .<.OK,| 0:w_VVgGè(++#>믂F|v0|FH #$_b :wVyyyQQcW^^d2MLLpp TUU?~:^`!0|FH #1A0Z(++# #|v4Bzzzh4f,--m8Bׯ_,--=ʽNٹsi|}} CCñc.X ::wx#Hٶm̙3ߨϟ?xѪ`Ձ{x^aclllccE  \nPRRhq[[[CCϟS_}{{qYXXܽ{w!Ϟ= WUU*//)))]tz.))aٷoߕ+WgA!f֖SUUepILL;wI?ä73_ff" ٳgMMM~i\\fZ}}=Р?`oaaan݊VPPغukmmmtt4*99_~۷o/++۽{y*++ǎ;XH>ҥK՛6mePBRSS>}f͚bXYYM$|yfBBի UV?~\MMMб}={̙3g\GDDdggx̫Wӿ[sss55{feeOVvww]v3g!===kgg'**jll2XH cϞ=ZZZ ʟhեG~ݻݹsgCCg}6 d :xTTT;_BYYYGG9s֬Y222+[SSӊ+%mmmUUU6###PQQeټtMellL[[[2(*&6?RRRt:7F۸qݻ9?<---??ܸq|0K/BLJJҒR\\liiIe^8o),,;}`*((9sА ͛ڐh4ZMM&!} Jӟ>}J=߼y ,'5n8󓩣 IDAT?_x61c,[,<<(..}<Č3\B=zocce,qqqާOfeeq/&&g]pիW $))x☘cǎ1ҥKLǏ(\a2wmjj/EEE !7o>{ĉ;;;h䋰srrڲeK@@ [oo۷o+**dee={,,,}u-QǏb_-4?p׮]֭kmm? ++;sUV]AƎkjjyt./8FΟ?_GGÛ6m'߱Ғq周#&)!!!..--[EEE :zt:gPӻ{tuu 1'%%/`CetK@@֭[OB[:s挠CQɗэN?zHQ J`!$_12/9v4B_5 *$_/B`,X/_YZZѣGGxP!tnAB !{O?z裏/^ӧOab1L+o۶m̙tRKK˦&AB aqܹ%KP?;;;ϟ/!!kaaY%&&&55*700سgϼyLLL򎎎#GFGG?]?22rQQQrrrǎTVVhjj[o߾+W6N__M| zy?h4ZEEP:mG_a+--=5k\xQYYO倀gϞeff677755>|zzzsrr$aaan݊VPPغukmmmtt4U?)));;Ԕ`0tznnڵk---LY\"INN_###=HhhhwFv _EEgXXXwwǼyjkk !MMM/_>y={ ̙y挌 vCGGǩSm޼իW~޽{ۗ!Tꪥ%..䔝}R#qww]v3g衿lqqq |ׯ_|w]zHTTtܹϟqɓ;::ͩʳfnoo!S222:::MMM+V`VUUEm<%///55ޞ{eee\"122zzzƽ> _;_zCCd2Ĩv;o޼?bff&%%UVVFU...dg+檪*kkkSSS3g;ҥK---5$_/!`0,X_[KKˣG/~,;w>O;;\ϟ_x/_0g233KKK{n[4!!{O?۶m9s& iii<___BHPPО={uz{{?ŋ?}t:`hÆ EfZHsε,Yw͞=HVVclllccEٷoߕ+WgϞZYYSk֬7o^PPPFFիWccc !˗/ohhϧtvv͟?_BBBWW‚3Ž#GFGG?*oooOII7nݻwƥK*((xyyݿ*,!$**J___NNرcTa@@@eee@@u`300ꫯ9'@166>}::pմ_mllh4!}۶mUUUSL!P<{,33߿f>ҥK՛6m >}z)EEҒsh4kkkaggG?5k.^ܧ۰[nEGG+((lݺ6::}ݻwϛ7rرT}EEE%%%mٲ%222))̂B N]v)S5kpe!$99_~fOrA … ###?W\}v9~|5nܸWRu:4c yGaX7nܠ#""dddX,]v͛78pgϞKRϡẺ555,QCCGIIݻwtzoo/TTTpB뇆RT*{} 6>֭[_RϦ썳' 6;j"{ʯ\BMw",ׯ_gϞ'Nϟ?RVVannNՙ5kw{{ Y,1ښz?eee7l@khhPξ|ᄏzܹsϟ?ƍɓ'KKK455X=P[[[UUՋ/ZZZ8?b5kKgAKMM-..nooommp=yF)++pv###PQQ™/B]]3///%%ӓLJJS\\lii'saffFjjjBTUU9K?~Na2bbb݄;wΛ7/<ܹsE^^_zz-BuΜ9#9b\\M]}}M€[ $UQQ ))&X@Xǿ򋊊c!.1#<܀tGUTT<|KЁgG;_dll>}Z!(ώHiiҥK/]D DWW` }mmm jjj>>>W4̙3֧ׯ/((!V3gh4KK&nkksN/_fURRɡrss_B䋰͵<{… 333%%%[aooH=/\C]]`l߾d^pLJ*NII155MJJK_IIISN})&N<ૠ={!"X,CFFEJJ{```gg?DEEũgiiiQQQ+IIpFikkUTTܺur x'O|Ν7n_qi\RRRWWGill_f S]]y @|!,B|[SSS]]j*BGG'OTVV@@@]]]ffioo?t萶6!%!!mƌSLINN~rrرc ؅\ZIJJYСCGGq2 lxxxXXFY[[3 {,$_Bmm-!ƆYSS汱N^SRR7n܈y=<<!IIIT ~˗/3*ފsރ^>>>JOOM; 8pMЁyfiiiwwPPWW'P'Q?544e0!!!ٺ덍 cɒ%jkk[YYB|NAAAAA‚ا]ZZZrr2uk[Q||| ooo^oʕ}?~LFן#F߿ŊnnnRRR驩믿-[.3f`qԩ+WL4*a06mzĉ9kN6m;w籕̙3y_> )w޴i`a狰XhQAA//^\WWzj.M>|/qI]bb^^^'ONMM_yǎyyy<v5k˗/9 ^6a@sN* /_HKK :Q… 6m*//qkRWWUSSt,0ikk?|ZZZ>;$**j׮]ȼ𨮮TUUt Ɠ&Mb0 $_A}n&lݺU }`qqqW TN|P:.p`>}Z!(ώJTT֭[nj p.[㏕{]]ݍ7 :("H))깫kzzzL~~_ZZ@cAgGoKWWPDD`Ϟ=6mTx0*TTTtuu3FбÁϟmC=!}Ŋ,#@ Tn޼mll  :.2Ҿ⋡klkk !mmmL&s;|oz?*t`޽{ǎFmmmMMcᅝ/#ohht)%%%))9}h!PBBBFFfzknnv`omllj,]|i;vڭⲲC!!DVVV\\|;-SGş ٳg/ӳ:r>Ix!26n(`q&%%9rDP0@mi!ߙ/ox"!DEE%44i"+|x+***!!!6l@}s)AݻwsssvuVAAiӬG86H U@@.]TYYYQQҥKN@tuu ƀ֭[NNNƑ/_$ܹOeB[[>ܹs]~ev+%%.aX\ .hnn2܀07kW?:C~WMWuΝZZZӦMmll;vѽ] x{H\kkkYY̳gϪ.\033SRRsyy… [9iii 8D~~%ojjj_^VVc۶mN__*8qbppp\{)|U]|=ZUUnv{fggel(ML+Pq!S66tB嘔-?vL,;[a-,2;5#fژ%? )5&?.$u]˥W~z|^GO>~jvZ7oSRRĒM6.X`ĉba۶mMMM5 hkkk_z%8]S̙3oKtu֦`jYfmܸqΝSL_'l=z LftVu1>\߿Ϟ=5+\>\n]``#7qK.]xwRZ/V@rҥO4~הËonb=^TTtܹ嚜,,,,YRSSC *zVufii)§~ڠVV;vc@S|֥H//K~{|||JJʮ]u=zAv}Yfm6115G o500[lyw.]t&#Bܹ#ɬ@kO `[Ywkطo_ddΝ;ue+9tAΞ=;7$&&&::Ν;/*){g|xwuc[С\.-[~{֭?.FZ޽{;88| SSS윜t˛:u5kƌ~_~;vhPI:u$M=/qttih=3>l<&L6=z2dx ~jҲMK,ٺuCZ0Ν;?ozLvݻwO:5==ĉ3gt~ BBBO^U֟e2YRR'OW_ݾ}رc3fЬxAAРA??8} ]~ {Ƈg~D IDATڴi_u߾}~aPP&EUjMMMLLLAAAYYΝ;}ymV ܹoҥKUUg<:WW!CkN@@F̙3IIIKOOsΔ)SƎ[\\w?f۶m˚5k:'Ojms1Z`=zbmLLLAnݺՠ{iii  >|{oLRLII9zз~[M|2,##c6l?yAuV||?ܧOBS|7ǎ޽ԁxL8QTJ'kΝ;VVVoߖ:-gڵy>#c=O*V/_: ڙHJJJ,Bxx믿.Iׯ߫Z\\,u\u!`'9rܹmuuڵkO GHLJh%󥅈Gzd2ݾ}yǬj1oݺ%Ǵܿ3++oڵoW_-^駟~ĹKּ]n߾mmmmeeu-cr>9w-//o)jjj޽ی pݚfcЮ]˗[RUtŋ{-u,+_|GR4֦M++Cfff;u. m׮#r᪪*//{8qBk={5k#by FZ[oռK!LMM-,,q@A,,,LMMq{++6ms7Obĉ)))'On\ۿKN6?2H@zW@oA233322r͞"#/$**JsM4Fp?CAѣŋIH.**Gs!"`)SGXYYG'y=$ |KX4jK hHo߾˅ #u,##"Q*[lyqݷnݪuttLMM}a]NN6 Q4P`"uxhoQ&a QTTTlڴr T8WWW//j+F5hРA0##ҲB?++KwժU>>> b̙Νoܸ%˟y-[4^9noo*^z^ڵk*++7o1={zzz:uJSP(ƏzhP<*5 2q!C\|Yk jkkO:%6>}q>BӧO^^^MMͻ;tPZ}:mf͚%^2d͚aaabI/]tAWWWssA}[Bѷo˗/O:U3… }}}O8QTTk5JW]i}?]pa Bm.\p]vuԩ@jV_|h~555_X]]miiyQvbEV+ݻ۷/..V3fXhXةS Mˊ+묬ݻJss<|ժUML,^X>t8Tmmɓ'\^WWW=mWYYiaa0::ZkgL&ܼyK.;wqԱVT#FhPXYY!><,,\WWWܼo߾SN={v@@@LL{u:ֶ6''GCmbzOݻ i8<茶Zy'#GT%''9rWMiġxD<<<322w!;;[=rR3/ dff7o,,, ޝ;w޵kšZo=I]]ܺvgϞQT3/MlS ~Lv%VKUUUHHofffQQQ@@Zn,zi4q(0C͝;>:-dԩ˗/?xrssKKK۷o?a„̄@Mݻw^z522C.gώ>rȌ3s=U\\O?:zСYYY uuu׮]۱cm~AضmƍǎWUUURR \RyyyYYY奤h}=48 Q~~~RRO?$u $3cƌe˖Y[[ 3yEϟ?_>222>>~РA;vܹs<444??ĉ@bb<==on&,,,??6 @P6666M}Z޽{SSSŰa&M4m46666((hĈ/ ,zi4q(O4^xATI'k/Sbb+2w?RVWWortto\U[[+7l<+~?BW^%%%Śo|0RrQgYfM޽Ǎ=z{&''?iGM^֯_/oIII@@[y晕+W?$/;{rJe&M4i@s##"`D|v` Ν;?QGʗ"mVy믏;֣Gyh[ncjj[RNN66 )ZV5*11qR-쩧jajumm xhXF4p9sx{{K TVVn޼y̘1NNNW}Xj*B1ssΉ6m?_|޽_~_^^{<8pٳ;w<|𸸸_~B_^x魷k t0eʔ/ 8\׀~~~.\ؿBдܶmۅ ߿k׮N:h}5t+B. P\\,u ɗB?Z;;'OrNV++VYYYݻwW555?fՖGoׯ_?tPZ\ UV8qfF7/s=wiMT˖-剉My]oY75Neeř3g{OWEl!::Zk{wFfiZ @O` <@...<.++Ӕܽ{PP"ږfggT#FQkJvaaaZ211i]Ojll 47qƗ^zIVLMM ԩ[ni?aÆ-QTjIt %quuoGJKKKNN>rHEEEyyLWK] Lh+H=_ ET^|q[׮]s7*JL%hammF;t萝-9rDT]LLL~7O_}3gZOիk֬9rGaaaBBBQQA\\߽{~umVk45L&eeeJly%VJUUUHHofffQQQ@@y =RWʛ"LMM#""233]c=MLLN|>x 77ڷo?a„̄@ :4++KL 5**|Æ ֭{嗋wol;toQZZ'3F&oӾ}?|yyþ.]tcff6vبCmٲEb˸>**///%%EӬ]-uX `666>&&fƌ˖- -//ozxɓ'/Z(<<| Ϸ ֬YҾ}I&ӦMmܽ+WkNW [nݻJzץq>xzzo>c aÆM4iڴibmlllPPЈ#/^i_miրZShdVB@? .?o߾Rǂu]G^JJJŝw9s̞=;))IX@vﻺ, c/ =WWWC`,`D$_ @caaѸ}֭-Ǐwnkk{aAdo߾}Z***?f̘-Ϟ=)?MK;;T3g&Oloooaas=S7jnkkke2ُ?(βt4Q t>}9;;Ϟ=իb߈''N:OZzu]]ÿ{c rss?^]]-u Fiaa}ogϞ>`ԩS>ly=}7oY|] XޥK7xCk~AT_t'|ϫuF=+ĉ8p-[j߽{711 ,XrΝ;16@kF@_J˗* ++rGGUV(3g;wN,qFTTTϞ====ş  MHH>|6##R\?bŊQF 4(""DlSYYy1c899^ۏjz޼yǏOIIoo吏zƌ֭{~y^yBMƍ:w#+ه^r{x''/nڴ)88gΜk?өSj֏lذ!11ĉ'O ,Yzo6###**,ߺjcǎ-/]tI&/_ËonbbQQQK,_^TTtܹ5YQnݺYZZ 駟6Uǎx|0>}?~KL>m۶6mڞ={Aڷoߊ+;}& ` TTTijhbbpSNzߍZg/00[lyw.]t&u1 &NLLttt:HKKKNN>rHEEE---Q՚#Glgپ}{^<==5U훞PVVisB*"O p q޽{o߾Ƚ{7{lV)mMLLbbbfϞ)g?tPL.w܊׺:~:t/L&{WySSS޺u? |Ӕ;vLV/XG/JeJJѣGzAZdѣG;88lذa֭[?s>}ćҿVSZѣG[jݻK,ԩ 8q(00^ۻ}ݺu駟G A]Butt,,, Sׯ_~֭Ǐ7OWZT ,NKK=u˗1Ǎ.\~By&mlȐ!7o? nݺٳ~B/ 4@ZѣGw֭]v666OVյvvv'O:$_|MM3Bb :++{jƍQ, IDAT;vܸq۷Ʀ' |CdvR_THhdjZ^jgg׭[_UXÇo޼kƌRΝspp:zٳIII:ڍ7NT^~]@4?60TN:UZZZSS#u C@#` kkKhH@kq#Fx祎@hЃ H͛Wsΐ!Cƍ'ɤ @ RrʪU֭[w=LtR2/ Hʕ+ΦM5iAIfF򥅨jAm6A[eٲeR(Hyyy%&&:::eeek׮-//۸qa3۷W_5q>#Oц^|a}O8hXϝ;װﴪP( [RRaX_\>bT .Ʀo߾~EEa}۵kgnnnXߦͭvqq#0"GGGME;w?Lm۶q{<ݻw !y^ t{…$|9}ŋ KfffPPn߾ݰ lyk9sfSZ޾}ʪM6bɣ$O ~mٲeʕ?ׯ_/B6m&NtRMv2ooַ[n;x`WCBiXGL.4x^kk!CַejjjcccX_ 筮VTMom$OJ&Ec_wnggWZZ*u,Z/)6mL2eʕ :.Rp±c4 GW\޽Աhfm9sif 知 k׮Mӈ_YYYiJȼHLNNۧM&uP{mۖb w\\\8Ǟ/-=_//-Ύ<@`D$_Ν,u $gG`DIII!!!RZ}tU@4?/ͭvqq#nРARX@&MR*RZ5/FDH##XYYqЏ KC/`D#GLLLT(R@22Z-u O,6m]n޼|{Jh|i-n޼z;w 2ѣ2Lb]reժU֭wL& \t)Zj<zEJW\yw6mT]]-.]:h M2`RZ/VHA%00pٲeRɗVVVvrALMM̾~3??7d޽U;nܸ>HW}^}U8p 22RWUV駟uz{{/_\WmfffllZOOE=qDbbϝ;WWӧ?3]ӧOU[PPVP_߯O>>ڒ ]r|ĈjN:ҳ,KR]pAWM߾}uVTT\zUWynt޿BWmvu@ B._,{??.m۶q{ݻz~-++3R_Juq]}ի LY[[[RR}v]?pBRRڀ=ɗ=餀=ɗӧO/^XO_=ɗǏ* @O%333((HO_=oСC=p}kp߯;vxygΜV ɗ֯_-[\AhӦĉ.]i֮];= ϟUW?}?;vLWzVsY gJJZ\|ѳC]z* =b֧O9s2dr\OBSOߧzWW݈Vvcz 055BO_i;^WWWT*]hphVh /^(`jkk۴i3eʔ+W0@84E?wظq#4iRqq_~٫W/cɗ5"jyw94x2lܸ^9s j=͛7Ν;K fF '&&[ul߾}ڴiRE:uZw#Z8;;o۶ɓAAAz6j6m]\\\m&uٰ򥅈{??;0"/FDH‚~v`D|vB.^(#u E|0"/`Dsݰaԁ 09))~:*[nIiG:sLUU3xt'O~zmmԁh~|0Д)SJKj$_ |0"/FiGrvv#+_ZZA&ou999RG@kscǎ[@@HOV֚jk:a4T*U\\Wrrruu yyyN&jrcƌqrrZz۷rGGUV(3g;wN,شi t$7zyԩߝXBaee5~?\S3zh''Z{%$$ >\3BFFeEEyGeccӣG+Wj&]bŨQ QRR?HΜ9>>>R@:j .ЧOvƍOOOwssr77/qӧO.\{ĉ^{M,W(aaab jkkO:ue=!]pa \m۶… ߵkWN 4988h͛:tۄ͚5Kׯ_ʪu5'//w:t ?;D]vڵkR|i!/ՖG֯_IhM; BRiɓmAA\.S bŊbyVVVjuMM+J bEϤ{Bx75U nu1cƢEjݻw;uꔑˍ7:vq۷o/W(ݻw۷o_\\k:g _}Չ'4UÆ ߲^g޲eKMM{uΝ;t}ʔ)YYY*㘛7==]tUӟd;sǫj$_$ޡClȑ#J\:Mˌsupp5[׮]s7*JPjammєe2٥Kr͞/M*$$733( @Vkj۶m[VO/ooΝ;ڵkaaaSg}vݗ/_0`̙35噙͛7 Gk:a_8 T*/^(u U#"O0!**0333!!!00P:tM /^_fLMM#""233]c=MLLN|>x 77TWHfffcǎ*))DIU*U^^^JJJS^^gώ>rȌ3tpٴ:tJS{ԫWFFFzxxr]i}Wp$_3yEϟ?_, Ϸ رcǍ7,Y9H&&fNNN鱱 j&<<44T?++w#YjB9sst=Lzod2YnnnsuY``R_jv${zyyd2cǎG_zСݻ7h~ƍ۷߼ys޼yeee%36lؽ{wɓ'Y%K9sf]v}׋V^-_nΝ;}'˿iӦ)$$$O/_8l=lܸ믿۷on:uƓjI 7 X"kn,YrQF PVVfoo޽7+Vptt|g.\?p@ :u۶m=<zK۶m8pnݺuȑ#bÇUTT *7==O3ݻw #woIKKKNN>rHEEEyyD"ږ֚4ۥnݺf͚ kk{@5|V4$_O555&&&aҥ 5K.VݽCJR#G(JM"33SLܼypȑݺuڵ={۶m[񢪪*$$$&&&..j*J211kW$Mgfdd̝;wMhO#i8;;ⵕլY-[&~pfnn~9{{{Aڷo?a„̄@8wNMMzjdd\.755 ̬vڎ;P^^R3tЬ4OzE5kxyyP3`TC 133:Ъ|!A~m__A-Z(22'//Oxɓ'/Z(<<| رfӖhOOÇ76666((hĈ/ T4'&5BIwqƍ%Kh<*((agxo~ر>}HhdXђ\]]Fi Xk?I/hӦͲeIٳd^6ܕLPP3<#uRRR`A_uI@*|v`D|vBΝ;'8q'ə3g?^UU%u U#`@R/HhHeee͝;O?:!pttLMMmrrr,,,qwwߺuC T*lqOs%%%Ih?);wHiG 'O޼yV@4?VHrcƌqrrZz۷򊊊M6ZZZ<@,z /еkי3g;wN,TTqqq^^^պqFTTTϞ====O:)U(VVVǏ𼼼p{{P] x:GGUV(4,Yzo6###**J,?駟[*jӦM:us:u*&&F, ߷o؄]ӽ+ه^r{ァ)~y^yBA.^i&] x:A6nܘ׹sg̓rvv2dԁM!&,VkkkN<)V򺺺[[ۃ6P(/^,^:t{jѣbuJ t捛{ⵛ_|u2d͛< +V˳l} /ԁ֮s΂ ܸqC@4?|@vvvYYݻwQT#Fhe$ IDATE^JKKkkk+++=<<4 ***Qծȑ#5UiiiG(//p:B!Xhkk+>  O2>;[׮]s7*JPxxxX[[gdd4eww:dggGQ*3/bKLv%VKUUUHHofffQQQ@@ZLLL~C=]S ' GDDdff]vmǎ L:u|AnnniiAڷo?a„̄@-ƎWUUURR1\RyyyYYY奤h :4++K̿im۶76􈊊rwwiDGGGGGxzz>|X,1cƲeˬCCC 3yEϟ?_Wˏ?bذa&M6mXhkk4bĈŋhڇiwԦ?.EEE0`@? GGN@wܹ; h>U6,&`) *ѪXA+^P[-U/E7 ZREvJeQԊ&ϋyHB y5s,sVyf&'wߥ:wﶷO0<9r/7PwݻGubmmmmmMu /l6ݻT4@@| Һ:ˆ/B(H )>: p@|#cǎ]rA7nuڵ03%%B_~]YYWV ȑ#ÇH2#G\vK۶m+ \ʕ+322<<}zʕ Jaaa<8}tK|A}}+W$ @ B|>>>O<>vXmmA啖L~V;vJXOg0?&sU ť@@9vy^Z]]=>>>===55UMMMTϟϝ;7((h¦J$ܹsϞ=5jYjժ#Gל0aҥK7o| [7nĉow('L uj̜9377իW~mmŋ,X Izzo>D:t/!!!RSS{V޴i͛7srr$lbI_~_XPP 6Dxs*vڪU$-ZpX@&Lf޽+axa (-[ 2 | /xx޽{dڒOS(4$_=SSӇR 9Iu0  GVVVT w/dۧ.FaÇԔUo/^(..zIWWwǎaaa :ՁBC6mV---vH ;, &w! 21y䞅FFFO<1cʕ+>$ Cӳի2#P Sؕ+WKLLL,Y"ی IMMMo޼:=> ѼcGDD`` @]z_~!x˖-q0x!_QQQ˗/G /vbmmmw NPKiiiN`2iii~wci&sss##˗or # #++KCpqqyՁBC/ysΔׯGDDP yH .KF:P\mmmǏݵkWSSY`0k///:r}5%%bikk;99UTTtmbbVVV+:::'O$ #""lvDDEppj`0fϞ?wܦd2322$#*0m۶iӦGFFՑ.]jll={6yO:u˖-ǏꕄS="o)SN8An>A<}tΜ9`€{.AT?$׬Ybkjj,Xgt:`TVVvwwGFFW:ujNNNwwwYY٣G:7o^UUեKt&Y^UUyܹ#FTTT=j>䓑dffLӭ/\C˗?|0--MCC]:cǎe]]];vpuu% ϓl6 1ݣ?p׮]閖YYY= 5;oQ :::A|@@| HxFFFo&O+**LMM9˥۶m#Gr ]&ö6---^111W@F@T5~/^ge:qFx 䩙٥K$#*0:Ir3fƒUUUAܻw}hjjJĄ ~w^={677wǎK,&"::dHMMm̙ѵ+Z^CAEvuccc,Ye]]`U?cVVYZZZ'N-ZDO},Ynݒ%K}}}'Ow^fԩG=JLL?~?O?TWW,_j1% M6r96=a[[[ͻ s #66G%%%FhW)m۶GCKͻ0` qÆ ۲e˿oݻ'4GAA8Ώ?ݧ 0@ȏLS[ʔ)?n]]˗/L}v/%flmm#HΝ;cGC;+V$%%QP9JJJ矩իW d|ɤ:|A555,k:::'F\pFW[v-FpB϶4,,,֭[FyMMMa5MMMO8!ЦK.y޽{NNN}Ǐ%\%,|AFFF?~w}GI ȑ#ÇWLIIqpp8|@ۍ7vuu]v;,,L'O|YZZ:ו^n]3:ߤuuuǏ%(gkkOxH( 0{l}}s655%$$0 &!y8:}Im6m4{{Ⱥ:aǟ={vرG$熆hSS)S8qzjji􌍍oާ-,,%ӧW\Yp!3gpC={ɓ'h4 ܹsݞzܹs_|񅽽&\b:ڵkݻwm%->4IӵV^-a$@B+++ oW^]RR4}~iÆ K.萰ivvW\'TVV?vXbbbqqG}$4#G,[Ç/yٲel6ƍ;w$ >oŋsR-\hkkWHJJ puu?~|rrrZ[[=jii)ef͚cǎ)I2trr# FzVRR FH(ٳg/Zݻ׿F믿JXر***}ӧy(++YL1칽ŋ_~1cMHVhl6YGGɩv1sGx._Lxa.˻{n###SS۷o۷o0؝>}:$$$!!ʊbegg.𩯯 7nPUUڧY(:$_+y`lllee;%Jzbcc3f̘3g#455---+ =] O__?+++##cѾ} &9rÆ swwtKKK777 /^\UUue˖>}4;;{٢ uǏ'NϨQ4tvv޽{ƍ1b!=((b#^xQYY)ѐg&rj&3f8GƏ"tv_M>+D"!:tWASShb``iӦׯ%#F0壤ԧҒ[} ͛7N4i 9;;'&&._|FlnnnllaټΟ?Ө(GGGSS6s_I{ttt3::d4((ŋ xܹgϞݼy$))~hhh|:O>^CC]0911qnnn?>S]]] 6l0j(++쳦fԩbdX=t萯o#IHHTɧ0jԨ緵}w***[iM6ݼy3''C2e<<< #""⋾)Sl߾}޼yQd5M#)#vHvT ;_/ F:PHLfZZĉTMTKKKsMM =z.I?ٴir///%b!9*..^bEbb"%sܮ. +[nĉ2ٳg2駯ds'&&=~̙3RsΔׯGDD呑۶mC /r$%%]tIʍ{챳HMM  ƶmۦMfooYWWG?~v׮]MMMӧO͍:::'O$DDD숈 ` vܙk$_N ЉlܸB+N6MOOx#BCCCtt[YY\,v=yd^<--[[[SRRX,SEEeSgϞ;vѣG/ϟ?u-[?~իWA|W\մi\\\^~Mu \_mԩSŋg͚U^^7ߐt:}رl6kǎd5kX,VqqqMM͂ >3^}++R4==ܹs#F {Ǐ5QYY*t"oS4 IDAT޼|e'MgϞ'O>\OO/??|HtVÀM͛7ҥKt:]SSS,={[O>$88g̫W:ujNNNwwwYY٣G_PA?;w^t|ñee倀[^v͛7wܩ.Qd2{6 ?xٳgssswرdmmm>am 裏>󈈈UV.EEEkhh>}, sss~z> 'O~ ޥrCCC???#Ǐ322|||.pmÆ F*((8p,AҚ8q~h"^rҥ)S;V蠱K,ٲenpp0[I$KMMԩS{_nݒ%K}}}'Ow^ޥOO^Gxw,988m~~~6,Ht `\zH׮][jUYY[\ܹskkkO>mmmMu,01|. %߽{$ϼe˖6BDFF˗/w]WWGu,|#''+VP\H>!FCCc͚5ﷶ^jR0 ; x`Hjkk| Aׯ733:.|/գ㎎7.<<@q /~)LXXXWVVR(e*q8&.>_|)g;;;[[[Iuuugg1c͛'syA1cs,|P;vhnna]]]---2 .vz?(Ugg9uM6QPzaÆȶOuuu555+W >\SS嵴uvv cbbqư~/jӦM "o"hiiȰ뽎ΰa|ڠ;eee(?nܸ͛7/Z -qppW pC+((/111ZlS0!/#=! G%%% | ձڶall~z]'Y>㏤K.Q?zhcc={\.(/`$$$̞=[__ܹMMM dfddutɓ'{vKOOமǏ{zzڵ:m4===cc۷D( 믿!!!VԠBFDD숈 `Zllmmm.\8i$^7onmmny/o]zuIIISSKJJ~ 6,] SSϟ\O>SS]]ᑒaÆ]vO7oތ&>o_xQ^^>gΜa%999))fl+tPQmkkkwއ>_^^~~ݻd#G455 9rttLLLOٳ-Zt_#G_ cǎUQQ裏N>k[\\fr3˛7oӿ[GGG33۷:uh6ܬ$4 Q,^xܸqJJJ-p@CQJҖ ===??Gښ*(2eƎ|rEJYNIMMuVkkkss3MJJ=CDIIɳg͛ǫRYYIӳv޽rYfEEEM8Q 1;䁡a}}}ww(f^dzl2??L333777`)8;;khhȤ WSSTBĞ={ ͛k  .\/ddƌϟCBB4xbEYY())NܹGb aHH/,,7nLzknnnllaټTUUhkkϞ=YEE%000222//矧N"޽{999:::}EcJ XTA@>|tEENu {H( && FVV'TKKKC<ܧ9krĉBg~p))))**p8T vuuQehu&NHuC@J666}mظg;;;Ԏ """lvDDEpp˗MbddDܹCDkkkJJ vrr:Djji􌍍o+9s BBB߿Otoo'O*3ӧ涵?~v׮]MMMdh7721g0 gן;wnSSSBB`2dQHV(S5dXvܙ/j}~%`€ 0Du 0~ |||ŋg͚U^^7ߐngg']zԩSsrr=zԳ9˗/r:niiѣP<==ܹs#Fշ*--%O׬Ybkjj,Xg~~~ͫtN5q:nmm}…zxx888,_ÇiiibFNY(9by?.p,j}D̿Lnkk+Ձ!2@|x;!=utthkkGuuu%"_F.ehhx5C444hhh$''755דǿѣ{ ꫯx׭[Gwwwݾ}<055p8mmmZZZ񉀍7WVVnhh O.]$jIڊŌ"t)$#֜GhE !L]7o6GGGtҤI=+۷͛dɓ'B__?++k+W5kVTT&M"뻻srrRSSoݺbx]<{l޼yK---dVΎ,tww+y`lllee;5 Nﵭ{NT(B܇"~XsĬ|PL&S]]?C/FQPLUUuܹѕyyy{]`yՕ|)A>ٷor@@֭[]͛;w޽{999:::binnnlla٢^pSNٳݱR5lERczzzrr25|#&駟REyyyQQׯ0>>룏>#""VZE:uaÆ o6]dɖ-[tuu{ֶaÆQFYYY8p@L0qqq'O^~}PP111111zzznnnׯ_'<5q?pѢE}] G-Y QsyoDϼP4- ?EEE...΅TXZZZRRd2= ׯ_S vv0_PiRuHXsE fjjC4Q): $9"cGkllܺu?Hu @/^޽{Ϟ=^rrr5k>H0())ihhP(4$_(P__{ׯ_h l޼AɓT>5 0?~_.~~~7o:.>5 0a y_~킴 /rtXZZ|rA)+ ?Y/]_5&&FSNݺutmkb VTTdeeIזNH׶͛ҵ5112etmkkee%]VڪhiiIZ0a UWW'%%{G&TRRYR*/O>zgϞҵёz?#))IR'_ܹ~zǕ:r-Ǖ:'Nٳg788XIrss9*Ձ! wǏ߶mۿG1lذ>`[.fzI=ԩS/]$]QFI=;_Ǝ+Ǐ㚘,X@nnnR,][']l{hllm$GGGCycGrw;s YC2=l0__۷?8q'OOϲW' C0xXXX$&&˗/6lXffee%աGJJJAhkk#b @2SZZ@DffE L0!--_׸ w(6a„tyA@J666Æ Р:PhHHᆪ:|#Dsssи\.1 Y! GHHT )-^ť@@! GH/֭[4͍@`@! GHQYYي+Ou 666T 9NJJ駟+,,TC)S\\\:;;dO(..rT/r ! GHHT )ܻw@@!@9s=Аb]~ v0B/ݻ}]ll,o7o_)0 {&Y~ ^+##,1a L K!f/^3TUU矿; #**JhlA8qB`eLMM.]+frff&… 4E7,(k׮h.\C{t?&.j .N`` 2@/h4sEwww--̟~dƌjjjaXW&f̧̘vر+W:ĕ+W\\\WWW:tD׭[?N'GvZb–z)̢\x"##O<ٳ4KKK nܸaaa+3#GN>lcc_A:ڰΔÇK8R OHxOb\h'g0``(OLL477U\;##,IIIQQQYz|E*))N www/]jϞ=X|9:{,Y2rȴ42), y’O>_.&l1/Y}իWΝ_ `2L&S¶4MYYbڵ}ʾ fffO>rJdd_^Qڰ3gpCM2ɓ'FFFΈ$5 ىYiM;_| < }||~~~ߋaÆ~vE򛅶5k;V[[+E#F`0b-\ѣAhkkKҿ \]]Ǐ,L{{%?.YAJ555Axxxս68w:d?ӧO:ȸ8XXX_ SRRJLLsKYq鐐+++ͻ?wzw622OHHqㆪŽ;p91%,˗/xaw9s/]Y𞝈E]]$gcc쬡!`HBJcƌ!B%䩘HQQQO.[/"u˖-+ v PVVy/Eg!nxx[?~7Q/Eg! M6uvv~c矻}MMM###//d<"ر#44%,!n)rA50~R F?q~bg'f1n8/Th8|@@@nnnqqqHHw}/慠ϟ?;wnPPŋDhK.}GgΜijj*,,\d o7o;ك@#PoٳgOsss?Vu:'O]bƍG9sf0aҥK%uPPŋ/_k,!s={͛m III?CCCQJ}/z]^z=;:Bb3g}ꕯ_[[{ i۷O}^^^\.w'LH^˗*T4iׯ]OR(NCC) `ԨQokkTTTMn޼sqhjjX,ob;t萯oHHHT ҳP{B& W^kf hݰ M<͛TyϮ]@855^v 777. %gI#&򢢢o ;_:_P?Embi*’sqqqQQva! 9gggj*cCd! QMMMRRRvv6ՁqFaaédO:! ;_r d.1, ggg ǎںuL&Qp(@ x***A իN]VV#1ߕ߼y󪪪.]D555~)..NT@ eee dɗ ۩KGG67G,t:=22|qԨQUUUǡCLMMɹ}Y&O\YYYTT$vkܐ0СCdȐ!͛7IJJJLL? ]Qv(I;gJu!++ &4VVVI-ίx>vXHRrwwٳgNNܹsJ\./EEEcǎussӧѣGWVV&n]vjjjKJJտDR=hM4ȑ#7npqq AOu5JOh ̘1&%%%>>>((H&5|VVViiiϯL&v3_R޽̙3#""ӷm۶`#G$%%ݺuk͚5Çwpp055 \bEzzJsO[QQQVVmii9)>䁒h8A RRRjkk{icccii)Z;km$^sӟ6mڔ,> z̙3߿t͛7[?c=z2eʖ-[jjjJKK5OJx. Hl֭[rexx+9f͚[6?######GJ5akkpѣG]6((Hs*444??߿I:vXRR ֭۷o߮'κfhxZ$''3'!**_jee\QQ@7GYXX9rܹ-Ҵ753=) ߄O25o2kgϞ7n~+uرcӧO6m"xΜ9GB8}AbjjP__/>y@g?`DC qtt:yRG(9::IEiiw_]<h_NXho>>7o.//􏊊0akjjjtt\.1c޽{>yyyNNN lڴ)##$7n!!!/_n~ Ǐׯo?Zxg{nDDD.^AѣHjSNOMMuss{wv\O_}U??쒒 kι_zýz*,,>3{i1B(**jhhXbEhhhK短322T*կ'κfxiYϚ5իr\l?qDttJ ϟ:Dzh{_.]e]jkk{mݚ"\._bx\YYٽ{ׯ744]pAl/,,tppPTbիWk]%88wu_'ٰaxaoodwŕkuEYkcll :@< (_;#~zllctuɩ>|qԨQUUUǡCLMMɹ}Y&O\YYYTT$v9rf攔0СCO2d͛ $%%%&&ϟ?_Z;km|L5'޾;VHhϞ=:ܹs]v:G޳gϜsJ1==]<_Ǝ֧OGL.4VSS痞^RRVS&&&*AhҤIGqㆋKHH z6שׂ1|6Lv5cg:#Fxxxd2h{_@Jݻw9sfDDDQQQzzm,X9{ȑ[nYf+VHOOWTw9x`i+**ʼ---5<==gmڴSy.⫣̙c`xD)ӧOID JP8kGRf{=sAAAJ2//O C蠸ǡrpp(..:ww=111R /`DaaaR %vYnn>k<@'P(<<''ozd¿/uuugϞr+iwpp8~ɓ'-ZT*]\\m߮]M1cXZZǎLVK_wpp8qİaA(**8qbIIL&S(o ϟ={?Я_?^5556lظqceeen!!!r|ݺu 7.0Rɹ}Y4-EEEr\!C7olhh)++=z sssjСCŏcǎ՜JIIIHH8w\UUUEEZ @+̗vriL+u[>}=Z2ítupwwd׮]?jRSS痞^RRﯹDR @sYYYUUURi``+U*՝;wmgg'uwu]]Çg̘!u#GT.]@g?V)((4fffO0wW^yTDmYYYYYYR`_ Էo_A?Aׯ_:p(Q<ݾ}SO=E 4A@ 4-b i…EEEfdT*UyyyY]]]SSӶsmm֬Y۷ooܢR8pСеk0"/~on+m8 m8c#ӁQ}G[ooHH ?͛R.]XZZ={ѣGiee%pnݺlKvvS_~%Kj-(Nڶom8 m8罥e.m(G⧃61zO=ԛoh"~d kLLa/y3gΤ7n߿5k.]%BF&u HhE@xЯ_kRvZQ|0Ѝ7AXrw.@| 㣰F*/@/O<)#HPܿ\ C`x#GLVKw]vUT҅C T0e˖R /`D7n܈=rAsww߷oPRRgoo?{JLstJܫW/r\P544X"44X=ug}u~嗞={^tI<dɒ+6\릵rxH_(ۃ_V^-744]pAXXXRnׯ?Cwkkk{}yqݞٳű555_޽kffW^^ޚZ6l gdd7m^|lZ~W\V+++{ꕖ}įryk&qwwٳgNNܹsJR|3jj IDATjRRRヂYkҤIGqㆋKHHHjjjKJJju+Ԁ 411QT[4%¸qlll>{V̠gh_ P(<<< 400pŊ*Ν;lݻϜ93""(==}۶m ,L?iӦMckUPPR[[۳gOKK& UTTy{{[ZZ=g @OOO4:,]422ܹs?|듈l 2335_y ^^^gϞmح[Λ7oʕ᯼THHHrr1c|IkUWW[o߾ϟ߾}{Ulmm.\8zkCCCmmmvgmmm(HϦ`l> xP7n8rHg̘!ux544888|'ӦM:  g}.>GX[[;::޽ Qĝ/Fw TPPUUU%uСQ|0PHHRtA@F(H}߾}ƛ_P$%%o~Arss-,,1%?5>{T*?Zw: /䫯d&M:@zS<^:Ǟ^zȑR @{(++۲eСCjkkA wrr >ud2@x??޽{1P Ǐׯoiure1::Z.[ZZΘ1c޽ "**j„ {quuݼysyyݻx W(;v6m̙3wءP(>ViX^UtmEk=onӦM|k&@v,Ah0`?xS秦bg}3nܸ/޸qy:##CRYYYb\.8p`RRҍ7BCC_zýz*,,wvv?~~~%%% ,xvYf]z599Y.p\>hРG{{{۷̬F*uEk][5{irkt@'FP|O_} 'N:ݻw{zzZ&ju}}3g/q]33r|ڵ7|coo|lpp;Czj񸡡… BJU]]maai_X~xܽ{W蘜k֌յbKֳ֭h5Z/V*CTJQH| c ''zQFVUU7o߾> --J[VV6zhK$%%/ԩS׬YyƨQGGǛ7o644$$$;wO3f`NN۷g͚9UYYYTT$V*6;V6OOO_~666V-յbKյ֭C~zZeeed2S0 `t={?;wNTJ陖lٲ/Yl>|UZZZL4ȑ#7npqq ӳ&((/==_VkvUs̈m۶-X@<)>C9s|ޚ&&&o֙3g߿ҥ7o6_ %%gϞ666zTTTy{{[ZZzi``+U*՝;w<(B=Le˖ώ5UږUtmkܿ\\D4!""ݽWK;ںuyV\+{u4<_l h>uuu|۷ ckkpѣG]6((HWHkkk//gϊ}ȑ#Νh"E*mK*zB5;v,))I`[k PRR2nܸ6_:Ya<ɓ'O4iɓ':uoĉwt2UUU B[B8}A$Vt"N)q ^xRG # N'_1RhSu}hO9<*()Kd(?,,LDi:BQ__ϫ~@|IffСCPnnEێ}9J姟~*۷Ok7=YmNP$%%irč~:|@ V^.u1ꆆSSS<q @{喖3fػw]PlܸW.\|Yl{nDDD.^@s=!!a{/iӦ AÝi~l˖-CNHHm>֥yr=6j뉡k['­[OާO&LꚚZLcǎiӦ̜9|ǎ =11Qf~ ǚĉ LzMN-^xԩnnnn~WKJJ,XkkƁuе-ƓLJJqF@@fsnnSkN.4ѣnnnaaa333ѳJk6x?5ǺGoPT d20 / ~wc\a8##^VWWW[XX\pAlx9u~]33r]P|ݻŏwl_ vvv*Jkg]5к-]V\8jԨ&{u霜۷oϚ5iɕEEEZ;^;b<<⁣fȑ#5y^]+A~mll4KKKuҚm`?JR9D555AAA~~~%%%jZOwwwLv5%tͩk9'Mtȑ7n?޳gϜsJer7_ͭO>bDeeer\WN[Cq׮]]Wךxöuc Qaaeˢ@beeeޖyyy->ٴGSLٲeKMMMiii㧷8 RRRjkk{icccii?w>s̈m۶-XIKX"==]Rݹs:51ؿ\\܃L+ĺ5?ӵJҵ?z~CE=|AH6::z…G^vmPPPC># #GΝ;wѢE4Z۫׭[׷o_ggo߾]|[[[n;o޼+W+MZ:22200022ٳ:&|18vXRR҃LZNhOZ =!C&eff?^ BW믟y__ߔh{cƌIKKF-uqq HQ%,,,ΩۻIcxx믿iV}'RG@gP\\ܹW_;0"/FD(#111:(((R(RgLVK4f̘nRg_;0"/FD(@GQVV[o;vL o;/-[~#FL:U&I @ry]]A@ێ@J7oތڵk׽{d2o9l0sh3|;vL&M>] :W_4h֭[,XHdo[|||mmL&[`w0{_ۛ7o+**A055ѣW_}W_5_~eN:?4l~iqƽ[Ύ1l#-[f¤$9s64--Ͱ3facʮ^jX+++gggUUU6ԔG ͛7ccc'L _***JKK?&vZ_____|Խ{ ^?oݺeonRBj=KKKbcc ;|/.]Zv\|9w… ^KJJ,,LD@rB Cj3tZX ɓ'ǎkaaq'NҤIѣG/_._xqҤI\~'|饗͵._+׮]۹sgnnnTzrêUts/g5ɣgWvϞ=kbbdɒVj>alllZZZ\\fl^x yVXqڵ{޾}{߾}l3g4ʯtm,DЙ]zuƍSМZ~饗f̘(Ǜ._gvjjj(渡^pvv޲e%Kþ}ju+/K,ϛ٧'{B&C^z!Zs1cOvvvS2iժUvpႛ[OاOݻwvڵk0ÇaÆ $׭[P(~Zk#A.߻w_ hFt֭Csڵ+W̝;q9s~駼֬~h/\|߿Ifa0 u?TBK[aO5'666 EssJcUUUqqqzR(9u©SO yt}۫w>>>'|ru}v=pZNKsÇK#VT;V HDooƍk׮8|֭Gg„ ;''Ƨ,Yҵkט'п=5>hW:u*00P]v5G߷ٱcw}׽{OpӦMnR(K.? ٱcǛ,p…>K.kql,@CReeez0` M++~׬Y뺻A$7rҥkYALLL"##7ߊ 4m4=˵z61A$?wƤ$;;;WWW=>K 0`РAlgwkrv "**+*{k|< {@F!Ν;5|}}FZO8ӧoQWW|v֭-xP|d۷9r$ 555;;;$$_֭[{k?߿x34RtxwlRQQ;Vxxu]9|۷4{nO? /؍O~B]~UVTVV_~Z;YAo,@G7y~mSL~ɓ',Xg>u}}}333j?駟<%4**$kM:40jԨ3fܻw= WKWg5>Ν;ϟ?b= !!!OS AÝŞnݚ>}z>}pww7ҵ[n]BB͛O8 qqqyyy666QQQb?7x,>>W^m8./bm<ضWtҼ.**jӦMbm\]]mV\\/6nڴiٲe/^ 3f:t&R )oĉe2 /~ꩧAXhٳAhhh<8~xAچ;mll0@MMɓ'ϟ??`FFF|…⨗_~9 @lGuuumMÇ[YYwz,[lccc.\Vju~~X9攉JzTVV|X"==]RݹsGSTLLLz3gܿҥK7oaqqq9QQQ9sf^]=&OqoO?՜hwўbcc333G!uСQ|i'd=AtDMΞ=TT?׿*88Bcǎ%%%=X[[;hcffֶW??/okkgxIIɸqj3<s۷O,ذa?{Q(O3^*p QqqeHQr+WTcǎ%$$̘1うPy@B۱Z ]JKKykk[ۍߔ@gU]]T*,Y#@2wܹsJh ^x!T,sss0 |0вe˔JeVVA@F(q۷OGVVmmmΞ=+BMMLA?~\멪*,Yr9ͩUVdGj /6PϨhZ=*ɔJ y74gx841P|?j^uɱcZXX8pĉ4iҁzQ;??˗/^4iRE#ׯ_'_z%=E\~}}}3g,Y"6ǻڵKkgϚh8JP|ǚv>ϯw#F(,,l2Bذa bŊR=::Z.[ZZΘ1c޽GEEM0555UO;vL6f̙;vP(Z/-<<>^~|ILLLvvyFǏ/_򗢢"M]vmݺ5??GO{o999&L9qĺu^x1mm۶?b%B?8 @sz6G_vڕ+WzΜ9?S^^^ ~LLLZ\UU{7xzzi׫W/Bi3G=ݻA3gN޽[s" uu۝'&&&33C cS]|g ݻo?bk׮cRm6l6;.."@@*@Fxb6%%% -244444tqqikko68q"yd2{zzJJJ8δiӨ /TTTƍG᚝0~1c/SL_S4vرԑgee:uD,--}IVV 8vظqw˗ӋS"wf̘ё---Ą YZZjkk;w?8ZSS3//z|򢩩zƌ~~~555<^^^n&:r3g:sLBBB`` ub.NHH0O;v?,XcnnN^^^wttUTTtttFA?~|Ɔ O{''D2Y^+W~}S|~!yd`@pL )((sܧO?DNڹs+Wz{{ HMM<ٳO< ommp8墎&O\PP  ~`18e¸iI66VQQQ#<{ۻSi3g444ȑ#?sccc&LXbAh1{]p!88X`*@ً񉌌d0}^/::wǎo_533&<<<66vҤIlL޽{===Myf???L|L&ݝ,Xp!l?fB# \\\rss[ZZΝ[[[{GHMM/oQlllo۶-///;;[^***䧯 S.XxVuuuQQV@AL)))˗/_ly.ToP5#C===Ǐ'C! z/_$XFC|./0?vy:@u0L988) ݰa` 000HHHg ȃovkGkG0P׎)zaHHݻeH! HQaaɓnܸ!X`r%%%rrrֲvEjjjuuu?C [ZZ^i++׏n۶mر:::?&HNN H||Ǐ7nOϞ=SWWI<_}URRRlllzzzNNNhhL*$_dĉ111d9޳g sYޞ쬮nccSUUg@o> 䮮. cccO>mdddhhf-[FDrrY ѣ( -// 544?pի?Ù3gرĉ++`: lhkkoذ&&&JLLqmܸ1::ѣAlݺ/5kVyyy>CCCӛVZg;vFijj&̙3֭#:֭;]KKݻw)z͛ɬM|IzzzÇ YZZVVV]]]ݳ>},)Ё ?~ҤIADEE͞={޽4 oooSSS /_N?fdd̚5  >xӗ.]bA]СC}E 4bihhؼ40Qv޽m۶ZZZ}J>}J1ykbbBBYV333|(#+))ihhXhK[[[uu5Y;qDdp8iӦQ ?oԩ1hiieff꺹40Q 0}Zjkkesd2R>c;;BYC/2fii}ܹp8,KT{kkkMMͼz, :0:r)LZZZjjj7o$oKKKG9n888HȘOXXX~~>}iFFE{:s+WHȑ#]]]#""<<}:77/%w`8/R4vJO?EFFjkk/\ٴ}DGGر_?NnZMLL\tzhhГquttlٲRMMm,00p۶mL&ɩO`0-mڴu/^Xpa\\Y^SS3sL1h<O1l6?xNNN.|!R!̬:j E8p@|"$_)Be|4Gց[YWWW[[[CCDWQQ|d2srr cbb%]4-==_r9fgg'@ev޽{ׯ8q g bŊ\ ,X(8,311!l߾_.]PUU"::Q ofĉf9F ocQK6.**jmmu 0!0 <~ٳg .̘1CUU5==zzzsIOOWTTl5k[n͙3U@mmѪUTTTDf;ƿ=zlڴIpL%f>>|?4447Slݺ;''N\ 6~˗/vvv>|wߕP_={@^ti„ mvv6=z4j>;;7n:Ґ|/YGGlj'cbbr6g'''p=))Y]]ƦJpӧO%$$Vݻbihh,X~766FDDO>ɓdyrrY ѣ^g)x<ުU,X`ccf͚N+((*EE+V۷b"77Z ;ۧL>z@6miooy͛/>yaeeE/Rٳ#GOͶlْs~Ubb#G˵­[;vl۶m'))IMMMpcǎyyy=x࣏>z٪U>j<((ڵk_}Yظnݺo>'|-LFFF>{%K /^_S)446==NS4STT\luJJJZx8RGuuuGGǵk?~׈=11QMMf+V=zp8?sPPP.555wqwwSNd?rGG˗/qU[[۹s<g&;N>_IB{{{'@@*|o ***##㑵ަ˗/?wA===?cTTxzzw IDAT)((,X`ҥN"… _|Ř1cf͚?Fuuujhhpݥ XH>|Ʀ9sFSSW\yq.{15|{' ǩS>lll윕)[--Ç_vmȑA޸q 'O999\"Svرagee:uJ̓y?\NNnƌ}jIk׮߱MMիW_~SLqss/&j <++KOO/..,7nٳ/dҧ~r~wQP<Ж}b bwܩtjqtttRvv^ m;w?8Ł֚yyy:Qggs~~~MM;ʊ?m#xt9sΞ=#33ch ֧رcgLsss˽(î\/!!?IEGQm ~jI***:::NNN))) }i؂tΝ;\[VVV__ODjjjbb"EVࠡQ^^Ϗ(**DDD^zɓdyeeevvvWWF1˄quuӒF}zTTԢEdKj5A6lx(obohWW͛7:Ґ|1ckkk:Xdɒ%Kd+k1q׮]~#Gر@A׎H[[;88xҥ&&&;vX|9 x{?qrr,=z͛mm퀀;wP/&j` Zf̙3{zznݺ#=o޼\KK˯lb˻ɓ'嶶'N ׮]\\\\SSn:3QPPr?^TT?{x̙3jjjUUUdEݻwEظUđnذ'04119w܃,--ԩS [ BEEeܸq}644,ZťZKK+333--MWWMhǏ3f/R\\LG?3L2EyN F'O&/FmllſEcԩ䅁A}}}OOsѨ$_f^^`RII y{u;;;6??hjjR[[|pX,As9{GD윟_SS`h4Çf}lG.?0|%!j1&ꑩ$_Nڹs+Wz{{GQ]]r'O[[[ r>}ADeeevvvWWFHZ[[9Fyy9YEEŹs۷NXZ(qԨS|C#Be$&&h+V:h__;vhjjtׇ~ᱱ&MRVV>uT###}||"## }NNA[l5j7<اܻwi6oǯ:t萪)S,Y|rQ",XLRهG&^sxCD$&&X" 㲎Ɯ9s~/:;;Ki Cŋ/0@BBBv%@@*LMMmmme iHHQcc#G& ߲Xkk:R!`)**b0;_)B@|۷ZZZdٝ~W޳g sA塡 xSޞ쬮nccSUU%ta6X qGhuuuL&ԩSP-x0(XbAUZZJpvv&ŋԋb;w>> >''GNNNK.]~}hh觟~*EE… LġVTT0Lwww1gէݱckk_ #4K.߿?--mȑK,˗o-@x>^GGŋb~f(((R  !SSS[[WQ```llӧp8pppHNN"[{<77Wp>U'Nptt477inn&566FDD''':::999uaa!\8ɳfb0G""44<44_x{` 8];F455%MMMVjhhȪG:uҲ8U֭?cbb7lPSSC]v޽իW4-[qݺuϟkii{.AqqqW^ݼye^uB 3/^8}]l׮]ƯussyMMMo 222x<^gggVVVddرc|}}#5F*//ommаxK` ̔tttX[[SN looWQQ!bʔ):JJJ-Zįjkkp8<ܜ?K#:oWZ5o޼p@($_dJIIΎ ׯّ EuWYZZjkk;wg!uvvhQPP)yPCĜ9s̙={Aӹ\k<:[ȑ#]]]#""<<<^i|.ӌ ΝQ[[￟8uTwwǏ=J=NeeevvvWW~ȿ)Ӌ߹s}vQQQKK tׇ~駯:BddOdd$СCfff7nܸq#}HHŋO:NGGǖ-[Fell|ƍ+**L<>ۀdŋ.\3gcyR6Y6)B@|  EtY255mjjRWWu 0kGR׎ѣGi4ZPP7Xiijr++BQQ|d2srr cbb%]4-==_r9fgg'@Pee8EEWXۿJ,|+W|7/0.\0c UU͙3'==]QQk֬!oݺ5gΜVFFFVRQQ5 >vѣǏli&1Y,ۺukwwwNNNI5`[9|Ǐ|{X,  r6g'''p1""BOO֭[ -// 544:u*6//O]]?fw5k֬I&Ցm:::N8hnn:VZ`4$oo5ktvvC^^^AAVVVW)**Xx߾}ɓ˗//[L|Fc4Nnܸ͛/E|ȑ0|  EMMMGȐu 0gee={lժUquu5*11ȑ#ZZZd\RR{ř=x ))??cǎyyy?~<>>d.],ܲeKrrrLL"""'h >|x%K.^*//gBCCkkktC(**.[,!! ŋyl8lgg7{lYR n߾]TTJ<==,XtSN񫼽MMM/_~9 :;;vedd ;YhooOKK .^xt:}ڵnݪMMMo 222aݥ|}Z XH>|Ʀ9sFSSW\yq.{رݻ$244c~Ç]&E,EEE/r===EEE`8$駟^p...NNN1W5l IDAT~z{{;y jĉɬ)--xd3ę"((=:::==ޞ_JEEeܸq -ikk]Bb0 CnjCDNN`&s993fܸqC6((hƍ䵜 XfM\\\||Kg,5j8v N???ggww{LYYYh4gAӹ\.v̙ZZZgΜIHHBD~~>yT]]=c KKKmms=y!"$$DS>-ǎkll? fff蘛S>>aaa\.ӧBO.յOKvgzyy|ٳg~~~ޝSA]p!88UooPCݑ„ VX}v1g |LL&s޽ӦMۼyK:tHUUuʔ)K,Y|6L&ݝ,Xp!l;i$eeeq3>>> ޞ|E/r...---nnnsέpႇc޿JKPQQqvvzbnttPbvm۶fGGG/^XPγgd < !SSF N ;v޼y|,#&@`߿_!`0 =| 6s[)=zt|| Z^YY9ȑ>}} ୂ iiiw4`׎)B@Bo.**jiiu 0! P;;ą &%%I6iVVի%;o޼Hի9sΝ;%[\\/Y_VUUeffJ֗b-^XuuuXOOop8ݓd}_x.Y_UUU v0Z[[O.'OHqĮ]%$$!''p۷ n 1bS̛7ݻUQQxޙ3g^xQFx^wIxp Ց?廻7)ikkwZ߱AKܗ544oР[WW.R#GDպQ$_Cї"RVVyfɗb(/})/W^uww蛑!ҥKʒӧ%{ԩי_T-u5kdee͓u,0t!"'Nصk׿ .\}v#Fd TTT(Λ7O~aaZAw̙9FEwԩiiij)P|122;qhQ,YxxZ FFFjmll(yxx;j(gggQԯijjڊBqDPUPPz ?C8Z~utt `kGD#)99977(333Y b~iĈdrl6bA2||p̙`0(\rmghh`99{zzVWW:42bh;.**8}hH d ˋ ˗:(H !&LHIIu떧'A0DRw &: x8Yo|"$_)Bex< h4AwHGG'>>^SSSցTܹs<  Eb͚5vvv׮]u 0! EHH/R ! ![[[|Sux>^SSSցxB{M:?B^^z{{yg͚`0Fşt׮]f͚4iRXXX]]uBJgΝ;EEEx Ȏy***rss---k֮]\\\\SSn:bꞞ@|͚53gu֣G(Brww_hѽ{.^bTTT'/55޽{/^8s挚ZUU?Ə?f̘_~_5ez}iFFE{:s+W׋ IQQqܹ쬫D+ACC<--M%yu___Q#TVVfggwuu)))iiiihhΞ=ɓpkkk}}}Q ]W]pxk!"KNNNK.]~}hh觟~JVTT0Lww-[yD~jHHaooC={tt;455[[[)B:t萪)S,Y|Wdݻsڴi7og}{WTT,\dc˖-F?==E ɨl(Zڄ>۪lZ6JgJէzlYD R:6}7?̄f뾯:k~ۻQ,+;;Gfff/^<\kSMMM@@@hh(ՁLZ&zhc":::Lɓ'Ν۶]]]ekƍÑ@ AmmٳG믿R Hсƌ3gx_999:::T2SUUSO''h4Z [H >L&(x<[TT$<[GM>HQiiiNNN}}=Ձ @Y*--@`@Cbɟ|֭[gϦl6?q܄᭕ՙ3gyP!m߾믿&|ʕ+gϞk׮1L-{Xyƍ'Oi<C/Ty&Ǜ;w.yɓ3f1xҤIy>>Aٳ'++띑޽ёfx=t֭[ѡhXu~5jԨ؈ST_섟@RVV1cƢE~7]]Nkkkϟ?/Feɓ׮]7nܞ={,X@fI6m۷O[[{#;vŋA$''37n,^j111w YhQװ%Drԩ?FFF6l CCʕ+gԩk֬ILL6tuu0aܚ5k󫪪޾}{ܹ{ZXXر… d A <<<Ǝ+//`/JH,Y2nܸÇ/^}衫_xQ^^^rlҒNS z} |RYYٲe~Ξ8qoݺÏ>HYY933‚5MaÆOEEE FLfEEQP˗[ne0;v:vЛ7o9@u 0ikk߿?99@@&b򖖖TG/2ˠp[^^:\.JXYY9s=L---t:Ձ׎~:JͧOvpp011ٷo_}}=Y䤮>iҤbŋ~oii)Yojjjgg*nڰѣG ˣl6Nwvv>{,YXXXhhh#ZfpvfE'0$!BM6۷_MOO #7o|-[x8555|Ϟ=---da```rr#n+W޻woǎv3W^}+W,))!"&&$&&"..N\>̎ SN9rPKKK8Iy!y[\\d2|~{{;HMMTf׿@ hmmUWW&O8ammpͪUTTVٵkymnnO?uۛh5QO0;r"dyVV9b(3_([SS",ill,))y dzdʔ)䅾~uuuGGGnnnss_SSJyyyԔ6mQJJJ|||fffSSSCCx& IDATSٱl &NH2 r"rrC^;+l trrssL++&F{1y+<󥥥)##] |;jv=P`0bccwAu 999s e彼222|˗//\@7|ۂjq(((̛7/,,$###&&f…TTT={[ZZ'644x<;;;:^XX(lbmmE_$T;wܩSz8; ¸\:Ed"((ݻT/T  ԴwYtP  DGG;::.X`ݺu_}RUURTT\lڿh4ѦM O ._,=zʕϟwohhaÆ Ihv'Oŋ۷o/Zos0qBg}V]]}mI U999T^[[[NNAu HPeee-tuu}yaaaOz |𦦦'NR9imm=~x|D:uJMM %RTT\hщ'suuUWWϽ+6mڴ5胠 ++wR hHP ;;;BlxU 5& 6֭[^^^Axyy;vLd}--Ç dVA,_ɓ|>W7n\AAA/100 BY1c$MNNx"y֬d+V{Err2ǍlllXdIyy:dѣG%"9r۶mÆ 6m]EE͛7G䵄smHcƌ)++\!B1cưXY0))IGGDBBOO888d #F'O|䉶I8zh N"?xV˗ܹ=>o޼;wݾ}[OORrϞ=#:ǻ htqq\zRttsŵzռy󼽽,Y"z6FɸW^5jYW_֎9Rlٲ[޾}Ǎ7yŋ?Çݻcذw 믏?'oJfJKK{捛ٳZy˖-)))=l$*111;;~>>>۶m{g=  ]O>: %N:hLٻw_~Xԯ*??;1117o^HH}T^^bp HS&9z說*c"BCCyJ(++Y466^jՓ'OcccwIax@-$_*.Ku\XLL7djʕ7n0h"!dVTTPE7-0|vZ BBB/ұrJ< 144())00vAϯn͢D:$>쳃'%%-_<$$[zccc|$@vz;looollbA466Kjoo?tCCCnJu8 5֭r>X`B?gϨ6lVIIIQQQ}jhhHV#FPQQVo</''GG޴iӊ+5 HPc˖- RP^^^UUU*///_ta<iP: SNZhllxbd&$_ׯ_//) dΝ;%zzz!!!+Vz$_#,,Lx SRJkkk6oLu ,RCC@`@I.&GGǒ`.cǎ544←|yyy333ckG﫸xxL^^Ғ(@V|x_l6fS P8@|!$_4''@`@C֭[geeoQ hH/2OMȑ#cccԨ( SP ŲР:h,|!$_dB@|'}F۸q#ՁԔQ hHR4@C*MHHxYrr'|B^-[3FGG߿Er[++3gH7NKp;Ժu묬~7 zu@@M۷={⢣ϟ?޽@jc jlliҤNֆ=&??_Xft0@CCCq9|ܹs͛W__ar{^G\`'""bfffAAAUUUd͛7y<ܹsqժU}hhӧ߼y)7"&9u3gΐ.5A/^OEs++yQȆݻ ظq#Ձ@z1Ajf''TVV.\pڵd9p8%%%AAA~~~dիSRR:::>}کCwww7olܹsmmmW^USS+..&'asqD\rdwΟ?ߵ2666~zEEEEEBBrKKK f;}Νd544q5򶰰 \ ӧ͟?…?NMM555f%%%=}S, ._Lu 0`@ aHutt<|-..f2|>_ 숈<++KWWW 3Tq677 ; _Ϯ]NqD~IwVfٛ7o&G99ZV__͛=#.06D^766*((JIIljjjhhprr궇T4 ===%%:WEE(--ӳlٲed6Aeee– ѓ{1a„N֔)S }}}b,--5444O􌹹6 Fzz \.FF̗ooo''Jwww&* @;YNr`ׯKJJȔAuu5Yd2>|H)((dF\.W ]j߿?}t E^^+(((##|… yzz~7o߾-(( Ν;uAg޿KKKUU`چgggG E$YYYdR@B5QݑvZRRҋ/-,,L&A_%jժC]r%--mΝK.UWW'",,JYž CZZZTԩSܪ*wwSرCKI0ձX,|$@@TUUSTT$Ѱa 3ϟガ_III9ձ׎ >5 aB@|!$_@J''']]]mmm:nll888h K_NѬDmذF]~k[|Lq[nĉ***'88X֭[Ek23g|h&lٲjړ&MZvgzJ0!b<{իW)?~\x{ر &Vhkk377?vX7onooOMMX|!?~|ٚ##Ρݻ'''i76`٢MJJJ:TUU5~UX,%>u!0p8Çϝ;WKKk޼yp8\.711ul6Nwvv>{hӧO733 6 ??+W;ĉ\[[d2Nz7Ocǎ^+ ={k׮ݻwׯ=z駟j)-ZDf\]]E+9rzNCSSӉ':m!;88Yɓdz2S8Nz>|W`A` ;w1c/^~cƌ9rݻw{Xcر ,xWW &ɭY&??_ uƍ۷o700>}YF644I&v5/_~I>N𔗗ߺuرc@~a2>|b999%'' EEEiZZZPܬ?u x!!!mhmmM^X,---0Q:)))&L000|***FFF'D=!]" OKK+)))11QWW-++WcrGm۶aÆM6MǍlllXdIyy۷OWXŋs_CCcժUϞ=¸\Aoܸ/Zx՚tF#Gϵ=7lؐX\\yf]]YfIn?e˖~۷-"|>Y.:::^~_466 ̼s}*eee999uuuTވ#,--[S`A`hb0QQQ!!!ޢO̔EςyϞcccǏocc_/M65begg_~wvvaâ"d$ jrTԫT~^WW7u;vH/F)4zNQQQ&YQQ=ϟ?ߏHk׎bYZZgK/}w^CAԌUUU: ^;!UUU/@$r [++3gPj yyy}N[̕NNN]?ܓ|-[ƌB;::޸qC& ~H }7n8yd[SS#~zk0NAZ13XgϞ]|ٳ'...:: $˃"""!߿.>>,p8ӧO733 "˛O>`bbo߾za3fEEEl:|YN```aaa``A{zg$wvttdپNddeeeV>}ގ;$OjkkFmcc/,v?NFFjccc✜'MT\\,aYz_tt+WƎ{ ?Z? =}7oϪo߾>D`,Y2gΜGwd9;vlaaag IDAT{{Ν;5k899=x𠲲r…k׮gXyyysڮ^V\\LO---O>H8NIIIGGGPP_y[VX5eʔ?\իWYYY|>.''Gt,~@ pwwwqq)//y&VQQ0yyyʯ\ǧk̫WOII__w k׮A撷7n|H*-->ǣ:А|XZ[[ճ'N,l6;((nllTPPxIGGÇb&2k.Z\Er$uVVI]r/f?AmmS5MUUUц ?yf@ҢyN13T%tثE\┗QTT$FݸqO%-PJ?Lu 0#%77‚2e[SSSBEE(---77p֬Y%%%d5cDRRR|}}'L```pO$'N$/ FuuuGGǩShթ+yyy333._XXXWWGVRRRbbҍt[HL6M8|>3f3};IB q񋣭MR@`01cƈ{9  rrssL+++6##xuIIɴi͵_^_<fՆN^x{{;99eddTVV 򑜜m$] S/^8p`ڴi%%%111vvvә3g^vӧǏ%BtVWoSr4dM)fҒ5ibaa.Z(>y6~qԘLÇۼ<###ٳg{0!OvEѶlBu 0)((̛7/,,$###&&f…§׮]KJJzEppɔ /_pBnx<N/,,LLL>&MU$=7o6l>z0PTTڪE 7n+w[؟SPTT={[ZZKQ={ܼy<999OOo&55۷=p''",,vmjժC]r%--mΝK.UWW'_qK?!MRvtt\`u+h333ee/^^^ᚚ666'𰵵 >{pwwy$=ٳDWW#FtzܼiӦQFXJNoS СC'O?ŋ~__ߛ7oN:uرtP ۞= WVVwqƥKZ6&&F(;;#|hAvvܹu-[ ` ݻwo䧣>dܹsGGGSSS;w|'OVVV:@9@z BCC? A^zpMuug}Fu Hy:CrqqqttLII:|Z[[srr dAd``n{d֭򩩩?coo #);v{͞=,>>۷C@:6n(///?|||lmmq >*++ɩ#o WXѩNvvĉ;::=F|ۥUkk?#?ѷ477K+ x___/hjjjkkJWo߾}T"QZw UXXo߾;v8;;n |Ɯ9sF3005jՁ@C򥟐/ATRPPPVVJWAhhhHAJIIIQQQ*]h4 tET6lNJWA1B*] >\]]]*]*zSSSm ϗ.]?>Yשÿ⋐) /2/LUTT={S9so>ydJBRQQ: ';vACCCCMMM ( @X,KKKճ'O9s,wttܾ}=`c 6$_^/~nkkKu,0 >K.Q Pè`Г`A@|'[nTRSVVSWWo#r8~N\nBBQP>ڰa۷dTG [HP}}}@@ƍssjii͛7&&&ul6Nwvv>{lN|||ۛO>`bbo߾zN||555vѵqp8ݻw;::l__Үm m@CCCZdd3LLL-Z4eaMMM}[^H23 tuudbA\tWl+**+**[ZZsڮ^V\\,l?WTTlٲ,\fӃ*++.\vZ@+MMͬ,>_WW5 p8 ??mTB[ss~ItX,V^^@ xRAAoZR!ՁL` @;w1c/^~cƌ9rݻw cǎwvv^`ŋmiҤn7ʒ%Kƍ7|ŋ_~SCq9A'N )11ϯk 0H)((XZZN8@@&|o䅞VUU;a˗/?x@ȑ#G&_!"77p֬Y%%%ZZZIIInnnYYY]Ð0o CA{Vh+V9s666=\IA>bX)##] 3  sssmmm%&cA̜9ڵkO>?~oFL |ђÇ ^z l{>߿(nx<N/,,KRPPt钺ܹs彼222|˗//\@DQQQJJJkkN(TkkkqVXtҞG0( 00([[ېooNƌý555mllݻGDssMFb`*[zzzg@&yɹsR a Pcƌ3gՁHNSSS__ĉ4X鱱T2QVVVWWb ǣ:™/}vҥ/.XX`™/2 !0p܄pd?Ayyy2Wd1^\s++3gtP )@Nu7n222s<ovvv񭭭Aܺu_:::4 8'''uuI&w;D||555v!,ŧ~[ZZJFEEl:|Yae9c ӧO;88۷V[[6zh| p8;wּy>p\nbb"YG(=iۭn,nqKѓ9bͻڳgOVVg' 2Ȓ%K̙ѣ4ss,777駟' իWۧttt?}kW^ijjfeef%%%=}Ϗ,?w\yyy[[իWԊY,V^^yf''TVV.\pڵdKyy͛7llccׯWTTٙWTT$$$(++H'm)ERsXs!KKӧOw> H0 mFu 0Pggg'N&l6 #55UʧN-g!!!o۵Ϯ]7nH^wtt<|-..f2|>YUUUX.9yf%oo޼)n7b)KۥB&_ĭ/0QC!f vʔ)~~~MMM***]+'$$8p ==]CCllmm%?|s 1eB__CNN.%%%>>>33IؕannnMMQcccII 255% M&96kkkBOObiii očfV܈]'nn܇"yXs$3_d͛76l:\Rnn.yieeEf^|fzzz@@KX,YbaaQfΜyڵO?WB͖ooo''Jwww=>|8yannMBxl6hǏ$?NFy>{>u> 1H?s¼yJJJ222bbb.\H>& vvv¶rrr|Mjj۷o QTTڪE%tzaaT彼222|˗//\@ٳRUU%zvlEč"n)$ܹsN""n}D\]]d>*++ɩsю ,Xn]``W_}E=z`_pvӦMo6\tihhOCCC7m4j(}A 0([[ېoooq5ý555mllݻG:tHUUu_xqE((B嗤$k.GϼZ[[srroCY$#,,l۶m#Ouuuutti.]t P neee,KrJ@#JPR``)Q uOXsdVTTPEg\5riB_h4C*%%ΎnذX,--5554v@ׯ  sss@\-wQ HȐzllrO\{4 tttBBB/_ҿ1l! C իW###wi~u֭T F1nܸqƥ_HSL9 Μ9ӷ'N[ۿ͛}k;vؙ3gmMMM~~~ڎ5̬om^xѷ***}Q` @IOO׿UYYI?S5>!wݷnnn}N{…MNNd܋/R5UV9s~ǾMIIٸqc~'{[̽{$O`Bږ=z422ӧAyxxL4I'N[[6qǎ4^5jSy AFFF}kqA۾)΍}zrrrаVUU?om'y C}3z.,,laaa۶m:^{{O?cǎ '~7 LTfs*=='5ݛ~)S%L&ֶoؘbR HvP@^^{?SDDDAAihh(R009>455---\&pž5j|mւ'R H^;%w׎dB@|Gu 0!GVVVnݢ:А|!$_dH255X%%%  CJJJTGTkG}ddddiiIu 01 Y&@nEER1o MRJZL [oh-چ].xYdfRJ"|\D5-Qq5?>0s|u:׹u n=s"/VD(Xŗ*˗BV+w`(XhѢEСCr6 Xэ7̙N dC~Æ r6… ^;;< _.wV/VDB!!!r6XhŊrG|"/VD A A@`Eloo?k,΁~Mx≦st-[oڴkiƂlV$-%ٍ IDAT 79*ŋ5v>>m\m$6 ҫprr=r:^xi??e .ܹt=ٳQQQڍ5 %%%-YZ 뭢K._z FMOOܹs``D7''_|q͂ lٲҥK[Ʒ 6L>=44o߾m]/[  See aaaMŏϟoիWرc޽5␩~T*5k-Hz+}vnݺO5]{n.]?>>>^^^֭'5k_W^駟>K\LyyCA޴i>\^ fXx3rUTUUIGh__@N}C@ŏ>_hݻ=V$␯j/>aW{{ׯ[icvvO~$.,))>}ڵkåӧc=k׮fmsξٳg&M LIIihHoŽ-u;ܾ}oMkgg״ODDDfffzz Dfz[g t{@|IA6nj,.,]zMIlxA̭xzz׀w@N ?8qΝzꬬ &L1cF}}ѱ3P ņ {ɓ'ƆoZZk&CqΝYN:=O?ݯyN魐^9裏^~ŋq=ƌsW+o.|Fm6w+WoٿoY]]ݵkזҲѲ⧟~ݤVZj&i}_.V~T>cƌͽ~)S} .8p`ԩdee;wnڵ׉'L(((0 sٳo~4H#9 Ͽ dGd:tP޽{ 3\~駟n3>>ۻOほUjZx+V,ZH,:VzY_|1+++33srgp;}O<XZZ*w;_:X9@<6W|Nl28??GƯvqqIOO16jFYI&-]`0{zz~7Ͳ566z{{wM'%PuuunnnƫئW^;ώ@NEEEuuu ?2V$]reĉJRT3͛eeebGɉ{'gϞǏKޗ.]tMޱcG=L"\TM6NmݺUٳcԨQ-iڦNju|småCvK.h4;i_nݺ5gΜDsjsQQѣU'\zlݺu۷o_/ZJى111yyyQQQAh #G4mZP(Ο?/~lܿ(ݾ}{Æ :8::N0!)),//o͚5SN5//_hѢA:88DGG'&&~i׮]-qV sww/))ٱcThhJbRVVӧO4448;;{yy `.&eג/rʃO)n~w}wΝ~ҥKm)''g}6--dNT,܏(V^1y'$$S-Zz]\\v-6&''GGG'''{zz:-NMM6mڰa/^c<_ZZ$&}Wق -Y{ǎ%lngR\\z)???RRRfΜzxx޸qoO>qssIIIjQf̘1v?PlWT~~~%%%~hh>o޼ǏWVVN:2(..?fee߾}{޽;w>sg ٺukIt:]bbb|||%ϞzڵkQMv67w5qT*WWW믿NMM57:ދ/(BZrjhhҥ˱cď7o6YT*Ubbx|MGG .t:'NgΜb %66>_,[L<ѣG񫫫]\\kjj梚l!r:777cdc h ~vr***4hqȐ!Ǡ ?77ʕ+'NT*Jr̘17o,++5}bHNNN\\O<ѧO={?~^ 0@|t8/ 'Z\TT$~|xpppnW VRnvvvA}}}LLLddd^^^eeeTT`OMҪѣG/^۷a-;k|HMP?^/5~~~!!!^^^r6 q„ IIIeeeyyyk֬:u_~}E 4!:::111//OOvj97ZmXX{IIɎ;BCCgUA8}tNNNCC 梚l'gMKK2>/Y>(((3fAMA~)>H lի#""&O<7|xjѢEW8pݻdOOϡC>|ީӦM6lŋcbbKKKڞĤ*;;[%Kt= رcDT͍Ǔ' <^x饗핕#FaU>?OoYWG?r o}||`/wxϛ7)--M,x>}Zk6l<-Txȕk4iӦUp (qxPVTTȝܹsW^GQ]]]aaa}}AXwXwh4_AMA+ E(MZ<C Q|mݺ5<<_~VWXRΞ=+nٲ%22K.O>3g X]]ԫWC#??^uiْ%KN:jժnݺەVO RRR6m$ҥK?9s|n߾}owx饗4M߾}׬Ys/D7Az)wwr X;udÝ;w |gy&55U|9ڌ3qA^zI& >]v9Rf߿?77oƌ+VOM6M<?~ɓw޽dɒu3f̘1ci;ŗ«SNfϞ-ѡʕ+'N4ܼyLR 0`ҥK:H6܀X>|TNNNFFѣGkkkoܸir6vF<ܭ[}UBՊ qsjB8̗ȼʨ((,^oP|9988DGG'&&~i׮]O{}ww.]$BVVVzz NNN>lZZZ}}}UU7njaaa%%%;v0/_$]2_@fɞC=|t3g7n᫯;|'nnn~^z%;55uڴiÆ [xqLLqRoo﨨(n#Fh[n;wիrg6McVJMMMLL; X"00o;`+*++CCC\grp;uԀ?ȝ@@>} T>}AX|yNNq` PZZ3ό1r'KIMM5 x>322ܹ#c*`k(;;;aÆ}ydcccp֭vJk׮յP h]2 ׮]kAuVCCC kjje(Ajkko߾.Cݹs2 7olt:ϦU˗?Օ8;;O,ڟ!2vK.ɝ@Q(}޽A:gg琐S/q{.C9::P xxx(vٹ]ӳrvvvrrj G %c #P vԩ]ҥK %C eoo߹s{'..n˖-^~ŋb~vVgG<}mKc##C<0by#DBqqq*jݺur6ܗΝ;'ޣ$P|į~+~dڂ9::_^  XٳN@NB~~~!!!^^^r6Ma0+{222G&MjT  С N=hmZ~ e#`%SRRFկ_ܺ[oժU555n֭7nׄ jjj֭[Vw!jiiiAAAaaa 6lq<777o `n#Gzzzs-3T*wwo߾ZVXRΞ=Z6!!$!!AT6ۮ_|qȐ!Ƒ9ҥKYދ IDATڦǯ^/ۼys 7impbܹ 򂂂tVTyEFF?~rԩoc=o߾ٳgWTTdff 3f;477788?4 W\qpp8s8k+1?陟]VXX2sVVVyy۷۹sg**00L%&&ǷVb& MnիWT||YZop Q| _x˂ |gmR.\(t:'NϜ9nK.;{>x`CCC.];&6n޼944T<4ixm}}7|#1WuuKzzzMMM[~Ƶ,[L<ѣG 4ymq ̙3ϟo0n޼ٹs#GLزbAbZlXQCCÜ9s+ }ٳS /]^(@k[n mwٻwC톛4 oDHV6l >}ănݺ?uiZJՖAjsQQѣUlٲ%&&F|\G//^طo߸fDFFUVVFEE 6Ԃ-aĈ^^^{ݼys|||cG4F={VѼr`_:Ctttbbb^^^駟vk'LTVVf͚S}W\yAs>}:''ݽD7njaaa%%%wY *>\W_}599ѣ3gl{Ħ6D ===z_zꈈɓ'ϟ??!!74;xSO='=W]]ݒ%Kwpر?,ީӦM6lŋcbbRoo﨨(bccKKK_{{{UĦ`m>{1o޼իWR[[*/_>vX}z||؞U^^~{v̙3yEFF?~rԩo5qT*WWWs WT=ؾ}***‚gϞ]QQR__/1K[59%VF($$d͎֭폹܉'A8pAXŗBOۋ/ ]t9vq͡RZ`hll蠟vqqIOOiڮR/^,ѣGkccc?c :ĉ3g:777c{rrt!`ҥ_{{jc޽GG &$%%YfԩP TTT}:'']"ύ7ZmXX{II:88DGG'&&~i׮] 899=iiiUUUMks/s 5fee ykOӿyAju6 @GXzuDDɓϟo񥥥QQQv^dG⋍RRRfΜzxx޸quuuK,޽{@@c>c0ީӦM6lŋcbbLNNNNN:tÇO>m/K/dHҾL"W_egg ykOӿyA*++GMQ4о|Mkʝ[Df'O 8p]/`Euuu...ηnݒ; ]uuu%%%; G `;wիW£vTUU0~#c4ls:{ /`E_̙3m۶uhw Q|"/ͭ}15ͶmcZiĩ4p ζ{ƭ~g^+RҵkWX… j)m6 :A 6lwXhٲeƍkKTJ>~۷WXRΞ=+WWW'%%kС'O1]k=##cȑ={\|yˉV\/BBBBIIIBBRmڧ)VrdSmݺ5<<_~VlX"o5 /_~uB8%%eԨQ5|׭[7n8// &Ԭ[.00PVرCzr{r$BfXMcc?S_VVVyy۷۹s3gΈ**00L%&&NjQQQ'N,//?xJruum5?{zzk׮($$d֭qppnrN͘1cر~a榞7o^dd+++N[oln0ST/^>}B8 XbuZK*۷o_EEEXXXppٳ+**233]\\%fi˵-5O㱹 *jٲeq~~~= C]]ۉ'do6k͵WWWԘ܂KCCC.];&~ܼyshhh&t>>>ƜgΜ&; o ,ηOp?Z| .^]}*jҥ_{{jc޽|x4wv//;vcʔ)_ܣA RPPP[[۴ɩ\2qDRT*njsͲ2[ /η8xлwo_yL߸Qhhxгgπ///Ǫ*sZy۸?f(X]}}}LLLddd^^^eeeTT`V ŏ&bnLsJ9z/ŋ}^^oZvvv.**?=zTѸ6ݺu#j*\NmaNwF+̭-xIa2?!Т`s^z՞7njaaa%%%>gMKKjV4wӧO4448;;{yyKg !}q„ IIIeeeyyyk֬:uj&vppNLL?Ӯ]un5|[b4~;Ư򍷝Yڗ  {f߾}NMM6mڰa/^%|򉛛_xᅗ^z4w%Kt= رctRoo﨨(SW>>MkVHիә\ wVw՜ (}W^m)N=44o߾ƛSMOOܹs```[Npر111/r\\G}d^]t 7o_ .S[[yf'xtr}/ ؊JAš6ϟ?Wޱc޽{=<<5j!SSSBT6=5k,;;[}ڵS۵kW?sξٳg&M LIIihHoŽBݮt:= O> 7n4vpuu񉈈LOOoV#Ztw޹}%NکSV{(,,;i_V(?/>}znn>իW;990aBLĽ30o bÆ }z'MTWWg988,=]u\I^7iCګiӦ7'mٲ%===66V,o&$$@,wt7 */#.{YE `2ֹ|>ݺu.]"_r%K5jÆ };ݸqcsD((?.]z7w>|p̙;m4Դ^  399ArDbccq̝;wÆ ں믿1cFt:GT'_FJuuu~ܹsi4}hʔ)׮]{ 6P_)!dܹO>}7 (//g2RN w#M(*:+ O/r  G( 5khdEASUUURRԤ P|Qxx8/r$ }]Er'NPr pN<)fw A |):(2. ((Ǐ;99YYYEEE577Sl6O>qvvfXwޥRRR\\\tuuܹ3+ꚚLLLf̘q mmmBHHHHYYYHHѣG .444pt-BA@.P|P";wLMMpBAAAXXTrrr\\\YYǣwڕ{n>3dݺuܫ ,++_x<ށƘ++n 1c:@tEݝv…ɓ'B"##Ν{!F?~Ee?( CCl+++iPO m[r`p8BN@Yz{{<~X.*t:s޽W\}v}}=!$---99' ^kXXXmm?,)S\vl Jŗ!" ! 67a0yyyx<={B| ä?{u&Lppp֭[O3L kjjf͚\ 4(OoVBah4^yAOLL~ `M:zSY`a9hN***2003f̅ RSS ^*** @bĈ WPPPPPS|M)$%r;E'_@I-[lٲeN0G$ O/r C>>::IBnܸyΜ9.\عs5k:;;ƈJII_J!$!!SH%u'33W{ҥK>|XVVwBBBjkk322t3;%&&;z %..sʔ)&LGrr5JjժDBHJJҥKuuu G̞͛;wPY,VDD~5cccPd2\"aNJ~Qm۶;Unv=Jӛ?C3|7>>>>LGG@Bf 7Gܓ'Oj֫+W!ooV2-[ÇOW*2g-- ݣh߿Rt!Çg0h*ɣ"""JKKͻ'Leooog^ѣD._2:u\giiiCCŋ-,,,,,\]][[[EL4:`2O>]ԁرc=\sss'Nhffv̙ׯO:Ut,۔)SQFYZZ~^,00ĉ]]]2K9" ä?}_133#2+inn.9yNNO:%^7nxQNN[oEIHH;v,u^^^˗{=ztLL](B1bľ} 6sL yZZZO>%k/7(..NIIQt _avvv|>~AAi 'OTVVΜ9ťC(PɀN~Κ5ܹs3Kysw'sssKKӧO7feeYYYI2OO#G899IsZZZFFFÇ~ Z}(;;;Bȗ_~٫ɓ'b3GQ֮]}=~Gѩ˗/5^}TWW466*:6W /BUU;44}w*G==={ʕ۷oB79|VV֣Gonkkkbb"Wnқ2eʵk/W^77[4??g~~huu.˫Ces544[\\ӧz|7֬YJ?ŋAAA39xʕ+ ßr;E?H(poopŐx<Ϟ={ZZZ!}VVۣ'Oy)B}>ڋ/XB%ݿȑ#7$/D{\)GiiiQzf rӋ8Χ~o>)/3 ٰaÄBaOOFթOG/]t藖@ 011IJJ6C(yfq 󎢳“/0G177_`]USWWث1$$d˖-- 411Q! .)/y)m0 /_Ĥ|~ 䡧^J {ȗb|Ó/u1B*/-< G먦xɒ%1c>}p8'O|<===w677722 x9/X##9so-//ollUHDGGgdd兄($<Dۏ?deeLO>ٙb߽{jokkKIIqqqյsN |ÇSSS;;; !gϞ3f[ss3^j!$55u cԨQXXXȅ=ztÆ K,5k֞={?N=p^df.))illTtPjp@ܹ~244ܲeKMMMTTu*99;v֭[y<^||w`111?;M/֭~1ֺ:'9Ό3^UxxxbbbBB;C,P|Piii.\>>w.P|uxH/ !//Org}}}??BEuvvv^|{I}Ν#G,**% (//g2%0 hjj]w۶m>>>6lpww>}zLL ^SS3k,əޞzu` 4P 'N?~[Y`Hn@,/6?):|k֬NJJRt|pWEE# UUUEkGr  G(ȨQA@ .{E>M^/555...ƆzzzƍStURRpBccc&⒗Ggܸq999jkkw~'''!jΦh\.W8JO4IKKfo߾]%h4ɚ5k !- V(7.**No˗/ֶx?2B<8i$Q}hr篿J=wܖ-[&OpF[ny󦛛7|#lٲ#F{AAA...gϞ1bɓ'g̘!yžf RՖ7oرCoRaaaG_+000((Hʷwܙu…0ѩ丸2G5ڵ+!!a|>?%%EGGG|OOwyGINNNcc}JQڲ_~8pjljjڼy|LR[[A%tSWW_jUuJIIYt4?@]]]''M6%%%Q鵵%''l:f͚x?}t```!555w.ky._LϟO? ž~iܹ3fɶ(eݝvA[[[SSLj(BUTTV^M|Mdd\r̘1-Z|S!/^裏fϞMuheee---zzzvvv}'ܿB2} IDATL~9}}gv^vmRRROOOBBCDԩSǎtqqy}c~555BH@@@QQ۷ !'N=zs[4gΜH^@;w. ?qƍׯ?}T544Ty*:(5_EiiiCCŋ-,,,,,\]][[[EϤAe2O>]rss'Nhffv̙ׯBnܸAo2e +++==ڵk}'d0&̌B+B477;''gNr`3bĈ} 6l̙D{߰aիW6tĉ~lff6nܸ/s|Q0~xSSorڴi''˗/9 PUU -,,yq߿c鞞{rJww۷ !iii|GGG==2Q}D]]5,,>q^QQ٩a``wNw?nnnzh?󞞞ׯ_ꫯ!FTtŋGʁ>|u;wڵU%!oƚ5kD^dɰa|}}~m##h~agΜinn...=ꕁoxӧ>2gΜ< 6/J$<<;<<`888z7/g}}}??B%aXnJ{{Ν;GiiiYTTS׎!O>uww?~mmŋWX!!sZZ9Q@KKTS<O|*7}9Pfssȑ#,YW_JeԩÇݿ_F3BpƍFzwx [[[W2w܇>ld2:;;g͚%RSS#$= aPx{{W'NRtDDDܿ7(l6Aaadx|"'N +**w^OOh"E'%UQQ !:??QA@_]]ݛo`0###/^DPWWg_˘8s̳gib]^q֭/ { ˖-[lS<Wo2f~9rsٻwho/8i>:/)777UU+W̝;ŋN/kk⤤$E@1"00:ϟ?ɓSSS ^"ZZZl6[A@.P|xQ۶m>|篿` 3sss{{{CCCsss/"ŋ/4iRjj@ PHBP4k \ .:8uVWWנLT 2!T2P(;(SBAyP"_2UwwӧOe*BHkk`H  Tp8777y/J_;joփF3559rb0llle*555MMAOe*uuu A`0k* uuAFTMMM55Ajذazzz2!DKKK|+;(S f͚侓ܱcՋ//)v _}_;WOuu{ `>hԩJJxQ FسgbS@@⋞au9WPuuuccǩ''Yf)6(v x''q֬Y}C//ӧx!֭C$@@P|#_ddnnnooohh #9“/CdժU4---MA`H G(׆ b _qqq===֭[\.wQt #xA%%%jjjr'_dsӧO+:(5_ =q,t mm!XԸ/YdfYYYr]B9982ٶmQBP **@ll?@є*ʜ |"mmm)))...vvvw!Ç[[[;::vvvRlvDDٳ'OZWWG8pڵkq{{ǝٳg3QFEFFMr!hѢZ6zh[nl6Ǜ3gU~~solϞ=;f̘ľ$cǎ[nnnǎc'==(ƣG.\hhh]7Sʛ6=Wʕ+ !iiiCmᄐNEaooi)oܸq֬Y֭[P(Z`Ayyy~~Ϳo33fLYYYWWWc{{-sڴimmmOkkk@KKkر644,^յ +++==]􎒸\'9s Ѣ3g2uTE%L͜2e u0j(KKKO+] 1MF n7M=W/vڠa[ם~AAx#(--~^zjiiQ? 'OTVV!* X,BȼyΟ?L0߿W___šPHhT^ȶnFKL|.f6%K_Nܻw+Wo߾]__VYYYXXb ѐgee=zh&&&z{{<~833RQQ٩a``+IKK wtt+++8>ÇwttՉ+6ʜ\27Szc@,=U/xe0Dx<Ϟ={ZZZ!˗/CBB{=Q۷GGGO9KgΜ)*O?rOVtPj(>} ***|"iiiBnP|#_ Rt|fffL&SA@S򥡡ޮ,r7oЇرcժUCJ^r^CΝ;,KY`a]ׅP(m63moo /x`cǎ[nnnǎc'==~q'''++fÇ[[[;::vvvx9sXYYZjڴiHmmm8pڵk|򉳳3{.!$$$,$$O$\]%!mmm)))...vvvwMݐrZWWd2O:EMxb//~B'mvEcXƍήrtt :y򤦦fGGP(ܴikjjVXyfzyy-Xz(Nojj~͛T;wLLLzzz٩[TTD5&&&N2EmD1|||}PڪSPP7jKDDu|5cccX auWw.&ywn3/GBTPu։'jkk_~]"/ ^;QuuuIIIccCLB5@aRmooMV\\,zhԩ 'N055uppxfI&QL&^  yuQ WwR>?}t&94#! *++Ν+@2_d~.ք666ԻE>/O8Fii)ի\.WKK"9k,s%&&ȜNHlWgkk_PP 9Fݤ#r$D]r?|̙~ PUU -,,yqffc*++ cbbVX1PWȜvʔ)׮]*ҬWG==={ʕ۷oKFˑ5,,%)))>>wީ;_Hxxwxx8ppp˓~ltt{o~~~o6ɔ9j@@@yy9r:g}}}??I7~^tȑ#jjj˖-?zjꭥ^фB3ğWCppp\\\lllPP<@`bb[o): O@N9bnn`Ex- #333{{ysG! ibb"FStSWWث1$$d˖-  %v Gp@P|#_!RSSblldEghNRt4555%%%?llуΜ9#MP@٠ soVgϞ3fLbb"!>|155fy<ޜ9s'uNNNVVVQQQTٳg3QFEFFFDD̞={ɡuuuT|򉳳3{J{ョ#G*: (RBBFO'O_>Nǟ:uƦ<6ooEEEnٲ&**i.\rO>whlRRǏ˗_vMrnر[nxMsξIv/^2x@r믿Ξ=fg̘iӦtYww~+/⧺b!;1aBɓ'3gΔ_}'/2333g22USSsss ,,,Ybs͠ZXXLBHEEEnnnggh糲=z}v[[[% /2ڵkWqqe|?$${ý C^^!}Ν#G,**Eo=ydMMSNcMBNtwwWtRkLҥK?Ϟ={֬Y?Ó/r0hC0***5 |9rD *: Ǐ#xM#zwt^Ar~RC@P|x ܸqC[[o;9y瑠d…L&%//Aϸqrrr=NNN4-##CԒMѸ\xq~78Z4d͚5}Oڵk_n+4/^9svFFƅ F=o޼ uulܸ:uּyZ֎3fZZZfD?'N(a۶msX,)k׮<:ޫ2*G !r!hѢZf?ggg]),,ln;aHHHYYYHH_LL̴iDg tuuGlvDDٳ'OZWWGioo?~UTTTss\P(\~ERRR6nѡ7UUUXSSSEEEtJ]]}͚5{qqqmm-!ѣG/_^jx&h4NغukEE͛7xHxՠ #333{{{?udbbظ~w}Rt*999..Qniii^^^ddNceeSUU믿oلOOO#IIIׯ_g2˗/wܙu…[ΰ?zVWW߻woٲeK.}aYY4($$6##C>VJLL$,]TWWWe֖f ڵXTx+W3FUUuѢE˗/?u蔗UTTV^Mɉ3f3g0Te-=== @tvҥ'N6muV]]]wwwZZmmmMMM###333Bai? .ճ(H~fs?ڵk1Jy IDATzzzr!QB}}gFFFǎ_ğdhg.<|t ^OW^mkk>4iud27B5>sLi xSƎoiiаxbQJ%`0Y̌'^6577<6''gqY1b߾}Æ 9sfQQ[RÆ ~`_۷o///߸qcLLLll3Wo9r46<0:::|}}]\\ kjj<<<>c"h4#B===f2008w\bbc/Bɓ'3gδ144ήUy!'==WOsssKKӧO7feeYYYIز2OO#G899Iڵk?^I1ۨQؗɓ'?x4*ÇU |mܸ188SA@ZZZ|^YYYE/?|pGGG]]Lr5K```xxիW}||{?>++ѣG۷o511QUU -,,yqm\!<vzh===_W_EGGtnnn^^^b$!/^ {[|*#yoƚ5k>C)WA@1C\r;v}/B[[{ԩ˖-[zu}˙LW^^o xѓ'O`0Wza0&5??ӧϯx+$\fZZ9W_ZZZ...ħ͕rdw.((&ybkk[\\_*:/B[[Uxe<~L @`bb[ol6[t q\eVȑ# ,Pt_`&&&h4EgyQuuuZM ٲeKP|xu~+**8ɋ311z^;#_+է@ SOM.|EGG 555E/r=_9B@F555%%%?VtPj((>w^Ax<TtPjyg}vO-XF):_B}}=Nj?i4ڊ+>CT^^xh,YF}wJ6m7n\ttt{{+nܸ>ydEGA'_}QJJJggi\^1(ƍ;;;D QQQGmii!?#>NIImݜ 66vGm?.YfݻWׯ_m]pplcܹ%XtR6v3f̐m,eoii)ؿMڲ}&333{{{&)Հ |%%%/)kDGGGA@.hBP^ K,Μ9xbEg!2@ 6l{dd 8'"; >E._,0#\Q͏J?EE*R0Ϸid1~>h 3)wc161d5:YZ*|T祥+ܮ^|ݟ~/fjѢE||s=7qLOgyƪ/,%O4Iɓ' @#H=s…'65LVVVjj;w5/#..Sdju_bcB!wФ( ]QQѲeK0ӧx:uRlmm5|he˖UxP`@_ Q|0 ^D/wȲܹөS'>x$p @EDDxf ւ JKK@~z}[xsmݺU_o޽^xq׮]z{7###11Q_˘1cG۹sC~G}כ{}۷W^kii쬯zMMM;t蠯X_^04/(,,h4?******j$EEE׮]+XA|l~~~jj^'''csssk8V뭪8_ݶmqI_222"""$(\xqٲeJ_Ν;'jܸqŗ'J+Q|Ə/qlBBޣG6ؤ{o߾G9iJO<U*U5/pvv޹sիO?E;SրgyFb_~Y.SSSc_z;dȐg뵲8矗C/ۻw^R)ql޽%|ܹı={ "qlCCCK۹sYfݻı&Lۿc۷oﯯW8KKKJWAڴiӥK}vvvǚHEo/.+++]<dXlD@ħȈ#:tÇ~XlѢŸq֬Yӽ{wYr?ǝy:&D @prrںu/2k֬-Z?s'N̔;)<~T^(4b &M!>>~rBBBx xjQ|i^zgϞ .L8gȁ'CLL̶m3gΨ7|S 6G=z􈋋;x;wtV,o_ZvZ@Ɉ_l-xP|0 /D(4Jj߾A@Ƨ(44444TY^^ަMŗ&§V``ȉw Q|h\f @]VVݻW Y`@_ OM7Z@`@_BBB߿/wQRo^ YShZ3:??ݻVVVrgTaaaffyJ;C#`@_ @egg4k_hڵjz޽r`@r'\dddYYY6m@_M&wrⱣsϞ=rx!j]dS]VVǎG-wQRo^ Yj+++MLL3xҥPb[9rDPzK.]T9GEE{{{رL`''iӦ=zT';;;Bq&ի}||zh;wEFFƇ<ɓ6lpqq1bݻ15B vڔ&sqq r劾+(]]]8йsO?T:Onٲ_9rdAA-[\]]===(ᴐϔ)S^zK.b ϝ;5a„ ;;;?^܍vZyyW_}ennQgHJs·&quu̬ 1c+g̘x\GtСCׯ_5kӦMR}i@E6eeem۶=s挸駟J u_VZ⒟Wgsqq Zl]YYiggO?JJt:2mڴΐtիW)));vwq1stGXB裏]GG#GK "///q_~3f(..655=xϞ=6m:uꔥefswwMMMtrIggQFf(**tqqo߾cǎرŅ={999u!|S>}ֺ]ݣO% 6LP9rDٺu봴4qjZWUUF:u*((%f!99Yܸ{nffA<<A1c4y&//o׮Y4oܸ1:::88X,oO;wn~>#h|pdv޽T8???**{ǎeeebի}||zh;wEFFƇ<ɓ6lpqq1bݻ1NNNӦMaڵ)))Mx} s'=zOvvv ŋSر~͚5D&L0`nd33פ866߿m۶{Ȑ?JQ^y啜NⲠ9ذa֭[MMMegg4oZ4 A9R1$$dƌ[ ֵkכ7o֞aʔ)/ҥKN|xll eeeqqq5N]YY_Y^ztgKvM TzgΜٳ?џ~Cmڴ9}tII8_~3f(..dpwwMMMtrIggQFUTT"B7;vlǎO....,,Б&gϞbmNNNeeq?c3԰gϞM6:uR"kӦMbb~8gΜ^z)44o߾iiiD_z_~iii9x+ϯt(1m3}&~/௢"N: ; k.""BOO֭[jAN>VuՊdsAuСCnnnkdd$nN:5<<<**7j+>$fqSNQ/O˗/AN6lxw@3GEf'N8p) E~cKppŋe#ƽ 7ntttl\x$׮]kٲA4S_d֢EGZMsCT^~]H^sLٹ9rٲeJz>077oxd;_QEFF.Ze˖3fXlY;ڷoΝ\[[[f޽{K۶mu&w <gg眜Aj`(O\GGG>x$ixT[ 6oܭ[sfgg }jzϞ=rhgϮXqrr8qd @vpPUUUPPиs6G>)Y^^^\\X+7oRUU/nk4;N_d߻w'(**j A(**h ?@}wyG |G7oޔ;h¢qlݺuVwNKKKBш>35[~~~jjް:ۅ8Y#N(I#N¢E|cQ 8vc׮]o߾]XXgiT QR# OM@#/[7ԩf`ʕm]E3>(--577-Yq <Ǐ `oo:k֬F  <*??L.DIFFÇu@ _(;;;77ё I]j_|!wЬQ|0 /D 2DP|wrM Q|z뭷 )JJաCf Ν;mVRR"wﭷ:{7x:uJVAvr``@_VAPOO={vj] w_##{Çر'A(--Uԥk׮IIIuv9k-ZԳgOSSSWWPC,YP(:$D__/_3nR>}ɓ'u]J2&&F[YYP({Q?.11N}F >~xgg6mڸ|xРAfff|󍃃СC[jU'.\:tha5ٝ;w3gi qݻsssӥKA(//ؾ} ҃AXti<...bŊ'NϜ9]vK,iXo=G~w*r Ο}Y=4_@~QQQ;v(++]]]W^ӫWF#ܹ-22@7><<|nnn'Oܰaň#v- NOOvrr6m k׮MIIyh???+W^xc gϞ533_ێ;|||׬YSgz.DeiV;gΜ#FݻۻwޱSL?~iiٟLLL6mZj5}tgg稨:Oq޽jŽz255 A |ZO>9p[ kI܀P(,Yr~>Wi̙W^ݷo_z3Rվ/Bbbk֮]={[SSSsss5/ तknذaƍ>l֭Ν;vظ|;vDFF~7NZrnۣ/]T*~9s̞=;33S7mܸ뱱Om۶tkkFYx^^… ׯ_K. >΄\ey7m꒐Pc7^ꫯVo3f̭[볺xc_o߶m[__ |gs۶m&MӧOݫ? Xcbb]]]3lʕ˗/N+ʺz뿄&~zZ_4k_@fXz,Xw^]1c{9cc \pAtx}}}u!k@dVRR%ٳ]t9ydZZZnnQ VTT$ "B;v,00ԩӗ_~yܹGIҳgOq6''nmmwގ;7NIYeѱRENNA=H%w}Yu%%%۷5KK˹s>}͛}7nR׿tҿALrڵNz7xCW`F[}#djjz=ݮ]6aaaՇճ#K}qqw…SWS47_>[ٺu봴4qjZdqݻ 𰱱9t?^jdd$nN:?999++k$jR*wCꍉvvvnnn+JOO4iҦMtkԇo]^^^ܣSYY)>$"%2doo/1oϞ=1119RᄈWTՏ=z:g٩S'gg<^(4>5 <^YfnZ߀-[9rʕ7n0ao R*&&&!!!UUUwܩ󟦅Ջ }III]NR8ݛGo߾7oy˗/;vus!,2r# ͛<8iҤ'O;w.00?nժ#G:u)SJ[n-Y$--(##cŊ;v6lX3WNɲm۶?yyyWcYtGӧO}z~-[nݺ~'hQ֭*,,sN^ O>9z  N: _ttرc-Z6m?ڇoĈ߯sB^~~~gϞj:tڿ}JJСA@x(|}}?,BppŋeĚI h._,wFT*_.w 47O;0 |i"@#uttl߾Y@ŝ/ aZ{nf ֒%Kݻ'w#0]vݺukժUm۶; hxY<(ڶmRNPx(4RTT:t;hZV $ر[rrr@`@_ Q|0 cnݺuo۶A4>FsmRv@-ܰaCHHY@cGDZjj;vhkk AJKKuڵkRRR]N?;=<< ;5Woq˗/GQvvv V#@Bbwޕ8]ڵk-ٳkhhh^(޽{/\͛$~By!BVv.xR9}'OXa?  4Ç4,>>oqpp:th|||V ?|q… C-&;;ss155}Znܸ'?>-- .]Zt...b{v,YRcD_ U\t qݻsssӥK]gŊF޽/oK7x=\ϥ cc3gVs? @js1b޽{ŖX+fffbnWveeӝb֬Y[ڵkgϞƩufΜo߾qUo-ARlR* ENs޽~ի  ^HP[[[/..a_uuƍe˖lGG۷ow!!!owrrZd'}QZj,Ɲ/tnܸqW_}z1cnݺ^㍍뮞gee]re5u5333[r+**q*aph۶ >zU?u>t]Z駟 ;fdI☘sssWWWa)T*U*:(@ۻz{ƍwޯRq78 lTk̙FFF[nm:җW!a߾}[lqvvOJJu5ڇ _XXX>9sg}VUUƃB\?z˖-?c˖-u]+h4$OE={^;h(4^PB)שS'AjOJo>}78o8<<<,,޽{ _$})},--Ν{7owܸqbWرcVVV浻.OOvhѢŠA|.$7XE_4h:>ꍉvvvnnnO4iӦMҧԩS׮]j/?=zkxxx=gGR<*.//ו}xINIj 1`ݺuQQQԇx*ynݺdɒ+VtqذavV[YYyݔ^{=&W]uM:ófͪ=CUC=O^Sܵ[珲M6Ї ֮]mv}qwذa'Ow޸q^|ÇO0Ab_uӦM~~~~gϞjϷޣG///7<<$bU;Vc@~F[QI_ UյiӦ`ҤI۷=ztIInbb(kMLLudgg!hX}ejj_vҹjxO:[TT^Wɓ'j  { 7yO8?x!'͛77͛ 3fLddY/FsmRڰaZ޽{A@f,w@i47/^X<5lfhʳ\+W|I@WJr[s&o<{scGD(4R B (JJŧ4/Ќ]v۞{u&&&ʔ @-Zt^{M Yㅻ`X߷Kzzz:ĝ/`XfjӦ {ϟobbRXX(ݻ+ڵkSRRANOOvrr6mx۷nccxʕ:|pdddӬ @=Q|w;wpQ''Ǐ/B7ntss۸qcccƵk]p4<))) wf 4)SS9:: /ܻwoȐ!GΘ1ҥKǏphܑ0/ްa-Z$wC1b; ǝ/D +444((?;ƧT*U*U5;R*Fqpp; h \baaѵkWh|rJ;C#`@_ry33zZ޵kWcZL7yXXIkST;w x-ZH4kQ\\lii)BZZZnnQtEEE... SlɩLKK0`e´///q_~3f(..jA?'0)S=<}ZiJ:{.]('jĩw@*))ٹs[dddAAx866߿m۶{Ȩ1;|||׬YгvXYYY֭-,,YLLL^{k9rdڴi WW!jժՋ/UZZhv] < (@  ߿'LJi AA())Y|y흝Ϝ9yz#G 8sWW!ꫯN<>OV;<ɜnܸquͻ$K,֭[[oɝ4_`@r< 4wŋ˒h*N Y#0,;rkN / w jz׮]fffuy/:,]ӳy4JCrgw@*))ٹs[dddAAx866߿m۶{Ȩ1;|||׬Y#}:ٸvڔq;???**{ǎeeeҙk>[^^ʕ+…Gj;5|&|922fYYYbWLLtdɒ۷ bŊUVW-//o…|ZwիW%R`}3T9s[͞=ĉW^7o#\K@f׮]+**;x p 4ŭ_q͚5 M2[nFFF'O>t _|Ś5kOP( -,,z-q:X]yyV^:p ݻW[;ҤիWwʔ)vE9} n.ŗ&V EjjA)---77wԨQNNNNNNÆ +**{{)nTVV0@߄։{رqG{u6\RR%ٳ2K_kZwwwqwРAx@ӦMJ%BDDܹsN)/t<<|X鱱jddyHH8Ώ?.Beee˺wt7jEmgM#2e[ooOwZUMMͧ~e˖{OqP|'\zU)թS/yD]ti1%I SO5 rM4[lٜ9sZj.Q||r_Zq (A Q~733ԩ%_!~:hÆ kاOӧ#_̟?_{T*]t9sZD:(/*w)(%-:Э"qC*.Ydܹ]@C_)33S'ܹ Є [nׯۛ Ђ ӧ:VS{B>>>z;wN8--~=ztZZZ.]pBqӣG.SQTTԫWieŪ8;; pALVSSG]r??ydnnn3k}"-[(;o޼555~iqqq~Ο?А87""ʕ+_7RRRTUvA֭;"*ݿ?))}jc>|X__ٍ}&Lа])vvv۷oo|&Mԭ[BBq5ssUVyyy _[[O⋍&{N:effj^%K~]v-O?~یx EjjձcKKK^l~~ 'O|!M㏦.]01190\|F3gh p ]r… 'OVm4iҵk3BXXXQQQZZ~.,,?NZ]"lNԥKiӦmݺUI&igPOOoԩϞ4sMMM}||ÿ⋢FilllٲGW)111((hРASޜb۶m&&&...9v_|188W^ ]vm>}ԆiWTTlݺw-?jkjh=_tPoooFqʕ+==>>>55~0773..oG٘SJKK 0{/n˖-fihԨQrL{f{>o߾}C P5ަMe6^/3ga̙7oV(ʣg}ou \~eΜ9ZkY|qR{{SNmذSNkҿz?Gh%_tAzow{}-Ydݚ&P5gΜ_+/4攓'Ov޽y: ݺu[reNZ222,,,LLLwkƹoѣG^:x`w.~llltt{={Җ-[zs 0cƌ/>>oRT>}ڵ^O 5/C'͞={͚5f~!<صkא!Crv߿15\@U/KlllgoUo8p oJJʶmTjCl/NSO=4U79@kLaaa!!!8D"ٸq={233O8W_wEY7oޜ0aBpp3TE]ՃT{I$L2ᄏ{nvv߿ܹ GP(o>v+R^^^v -kyw}v̘1ц X?pimJ?Í79$11ouV x}to|.C(wwwDri]ј1c233ݻ /߿? @);wt҆  SNi:%66VgFF  b…Rǀ<==[-No#hAO>uԳ>,p yݸqCAh])))b֮]XxtPeZI;sd󎮃hQ\v?xԂ/_xtPeZI;sr<''_Aq @3%$$d$]h/: 4,XP\\,:/4]v Oo:v 4믿nkk[]]qƾ}Rŗ6P(AH$ZW6chhdq (4SXXXvvvHHЍ_G]XPP`}]\LL̽{w uuuwm1+++Zv;wwWTTh/ƍU[gϞtR @EZ״it@߻w)//oA(//i_;OO?ݲeKdd{ァ8t @[O^ԩYˎihhإKܼeߜSOhr<''G!;;e˖͙3qQ|h ˗//++k [p@A Zp뽙YN-2A6lX>}DFFN>f*))v횝]c>x46-_:rjT*]t9sZDCkGʹaLm6]QQQmT…0*/hC:tHTdɒsRs h(.K9}#hSL. 4S0x.yݸqCA<;;;//|<$ Bq֯_WY@;uΝ .;99: cGc^^^N@+Њ("/TRRs5]fOd2_| ]흏Dٳu@i/^)n( Emmj ;_ulڴ{:6u%66vȑr|nnnY...}رc---'Lp>#55UW<9ZWPP#͛w.̙3oݺv߸q]6>>u̙#G2dO?k˝;wEO|h&Tekk qqqV_ܿᅬqqq6lXxx]-cǎٳٳgPPPn~W]$fZ` tbΜ9->>~۶mSL155 6m_B -;j# H$yyyZLIIINNεktk_O>d_|񅮃v +V̛7@7(@JMMMLLs玮d2ҥKu@:&srr.^ ZVD񥍈H$ZT*򲵵u?⒞޲y4i^NL_Fuj ,u  Emm/Ю充9::lff6~Z399yĈRtƹs玏OHHHMMMY***LMM/\._~wrrruushh6Kllȑ#]]]3335H@Gĝ/Ю%$$K.6mbooo>{{O>]&֭[oO?$ݻwA\2nܸɓ'7,ʈ}UV1"//D[nݾ}{7nx۶m޽{;7onS͛7޽]3gj񑀎;_ իL{nA$Iuuu^^^YYO8R[[cǎիW鹹I111...Æ OMMU2cƌ}M>}޽52RS h'(@ڿĉ XZZ;vL?11N|H\\>tz!C+**gyFܰ.--U;3Z##h]ћ6mzu@+))ɹv횮xՉUUU~~~YYYSN?*ѣSRRү_Pׯ8q_v|OOOss#G6zxx抻GdFFF)khj#ŗ6§'V``ܹsu@۸qL&ۺux 4رcb]L.{{{)9w\FFFuuΝ;7cǎ-++k8~PPЊ+:3gΔvy„ QQQYYY YO#G۹sm4Ejz hf͚uYkkSZ[[:tҥbe˖u7nT %%gϞ~~~rjddyHHX2e[o`lx1Z"DyZUϝ;wY]g-c5k}]]gбh-;_ZNqqwưE$$LRVA /_ @3oSK9{# y敖:xxx2/T۷oԨQ⶯e4eQ|֕x]헟_vvvlllGP(555-[xVz툈G hY_$''ڵkóݻ...111#Fxg#""#Gtuu̔ׯwssNNNUTT$%%80??_۷[ݻb#FXXXHիWkilHm0GGǐo666̙3 9;;?믿~ǎ8 ǎ+K?:tr7++ظhͧ Z޻+š5ktٹW^yyy555k֬4hɓ3^|ųgfffb… ӧO(p??'N ͛ǎsNNNF4pww߱cFBعsŋ߿?kv//۷fR988xqㆁr_=$$hƝ/L4OV.aÆ P[[cǎիW鹹Iܹsڵ=zXz] D"+++3338p j@ݻwثW/O2ev3gWo߾ 5Ǎ$BuuΝ;CCCӒh/FFF{wo*ͭw ]QQ+U;߸qcĉcƌ)///((LOOOMMQؐj;lذaϞ=bKFFFhhh'N<ڕ.\ҳg .4744tuuu}ȑ#ђh/deeo.((>|'nxxx抻GdFFFGQj޽&˝A=z={JJJ맼1Dmc=_WWyȑy}7NNNbKUUUpp_VVVaaԩS C]%^Z#?~|UUUFFFRRRppD"A{y(@gϞׯ/Y޾^Ν;O0!** +++!!! @}}+V:tgΜ)--5009sfDDDVVV]]ݟk.AΝ;Q]]mhhhiiiff!MA4hA._۵kWMo!2e[o`=66W_477 )++!::z̙=ÇA\lYݝ?qFMM 0k֬gZ[[O:u׮]nZlGqqqC]tippp׷PǏQ244Æ իWãړ#*hUgϞ?{ ''M :ИksssKLLH:tЂ N>"@'usQQQwSN}X| @]GhaŪol-ZH'yA 6lУG]%#V wZfzjNNNiiv @3mܸQ&mݺUA@F+...2GJJf?_Zŗ6ү_?Dry]TVVn߾uݺuw+**LMM/_~}ܸqVVV(ׯ_흜\]]v0GGǐA✝Ə_+{&''1B*^8w Qmהx:!-[￯[jѢE֭w]jՈ#LLL|A\\͛z͛7 v֭۷oϟ?ƍovù~ץKN6Ml߷oO.w֭7|~dݻp W\7nɓe4ec+**j޼y| x,IR///[[[]{Ν;׮]٣GիWڵKPرcվzzznnnRT<%00_Jo޽{A2lذF իL{nA$Iuuu^^^YYO8ް%3+---11Q.:7;pL&[lڣ7nܘ8q1c rssrСC2dqGڿĉ XZZ;vL?11N|dh <(ݾ};''ҥKj[YYݻr#G3ann{QLfdd~]]]UU痕UXX8uTB!=z={JJJ<}'N믿ܤc k3gΌʪ?w%~PPЊ+:3ghyҹs&L*((JHHyРAǎ/eeer,//Oҹs222 ---ToLMMǎ[VV&Ν;mc w3gΌx>,ƾ꫑!!!bCx__)S[aaa ,s֬YgϞ:uu\\\``СC.],\lYݝ?qF RRRz'fd chU;|AAA߾}u@0`@^^,ڹsiӂRRRt@fzjNN7(4ӧ~*ɶl٢ LŎ ]V׹Ǎ<)ǻ$gooe]ЊZWTT\.uAZW@@#%;h&TŭmcHKzzzN5j~`AЮP|hΞ5kP(jjjtªU~mq;"""&&FyNP|%&&fĈ>lDDDqq=66vȑr|nnnb$???SSӁ PYY}vWWuݽ{W윜n8++?CK$^$:.;M022ݻwff;x`q#77S2dHvvvEEEnn\.W}|F|ƍ'::::::32===55رc mlHSSRR6lذgsssMMr3=z(--m|$M}|ȑb6.\ҳg .@+mF{^_ի999%nܾ}`⮞ahh+=zT&yzz9rDu4www++{^\.wvva{)))ׯ_hh_mc=_WWyȑy}7NNNWSBH WUUedd$%%_Ҕ(\z^9F M  @3}2l˖-gϞׯ/Y޾^Ν;O0!** +++!!! @}}+V:tgΜ)--5009sfDDDVVV]]ݟk.AΝ;Q]]mhhhiiiff!MA4h:A._lzzzT!qI n?xsss;s̿gyFYիWĈUh۷o_tҲW^j;4iRCչ%&&:thOV“L_IgiiiiixT:u裏K\\\dd$_MU\\-aaa-h.00pذavBBB=}L<(4T*򲵵us:aoo9nԩFjs'|;_'hE_Z@d_~e xIcceo)))m߾}F}}}((BQSSz/^x7mժUo|X쐝)%66vȑl(..l_%&&fĈ>lDDDqq;v8jjr֭(;;{&-\._~wrrruuuo|O.))Q(O?*v8~tIc6s΋/޿~011WثW5k 4Hlھ}{qԦdԩ'NxWѤ1cƋ/xLww?y7>rww߱cC4""b֬Y/^X^rEC{@(hnڵm޽l9uꔸooo_WWWSScmm}Сzh)(4C#""Ν;)4_4UX/::Z&-Euuݭ[塦xZ֪^ESѣGƪ7nB;;oXZZ,Y2x7nL8Q٭޽{r|С_*Mc:;;7<+###99ѣeee~~~Cnnn↑Q޽333N9=ڥͭw 2k֬Mh'h]+U]p^Sٳgφo/޶mBP;tw@{7z={/44Twww++{^\.wvv477?rHOq!===qCӘ TUUeeeN:U,qez4UC"\rEUTIKahh+=zT&5uӲVuuuPbW^upp 44TyEcm kΝȨ644433`̙YYYuuu]A ZbšC>gڵݻ?kI[XX7uqq~KJJ 턄-EvIq_666-CsssKLL:tЂ N>-Ht ŝ/mwҥKݹs稼(u)22>w"##t,|QqqwưE$O{k8l0q;!!G4Z ޽{_tŋzum*::dŊvvv@xZ׮]o߾ ڷoL&{t@LW^ 999#x\Q|h>L&m޼YA@F񥍈}'''gܸq~~~JN>}ۧPEE}||8--~=ztZZZ.]pBqӣG.SQTTԫWieŪ8;;ݺu{wԞrALVSSG]r??ydnn#^\ /?|/@yzyyM.\pիW޽]S(?~|jjؒd``p—^zXl300P ܮ}ל֯_ez+͞={۶mwlܹ~~~ҭ[G\!Cč})pōI&_ڼys@@#;_]rʅ &O8iҤk׮5f4}8**jٲe555텅ԩS-hQ䧟~T-[;P(1 _I*zyy:\aa ު+Wzz|||jj?`nng\\U͞=[OOoӦM#Gle4 /O5 <> $dƍ'N Zpa||Ν;t鬛7oN0!88xƌUUUΝ;k=z)eB5J5XbbqLs׿Ço8GgM4ɓk׮ 7E=fԤfڵ'O_׬Y3|===Aw֭SNO=CZw@{7f̘{ EEE՞;w^tiÆ שS43##^!C?Rfgg+ J T;L&KMM=~G}rJpF$ɑ#GF_,X` ܹs'>>z/JB@+<7W\|Cg̘+|Wq @3]z5''TA@F6m$>s]&(..vl`ڵk cᅻ|rGXqK ;_Zh]111+..u-K*:'BNNθqlmm>,BUUD>}۷O H$4e޽{%L&Sܹs9Q\^lxH,Jg~h]wNLLu떮hyzvv6xt/bvvի5uؿÍ~';;ѣGuҥo~~~ .O>=z2EEEz?Y\\\l٢ݼysU;,^XuLggFл[SSsa}}zEiO>D@Bt˫W^j*?>55{III3fXpaUU ])u^srrZ~EEE \~ӦMS_$HybCD__w9wܩS:j{Ν@{Bڵ+W\paɪ&MvZ^^^cF +**JKKѕ.]L6m֭ $%%M4Դ17Ċm۶4?AQ|vPoooFqʕ+==>>>55~077hٳguuu[liXe\\bCg}oɢiN_]sppA|î۳gO۷oɒ%wӧOc֭ʕ+;u4|zG̙so[OlHj߾}vvv Eͭ1n9W^---JqֳgO''ov̙tWWW-'mذǧ͞=7211oƉ ؤ 8088XY4ف;_)11Q&%&&:ǜD"ٸq={233O8W_wEY7oޜ0aBpp3T( ߿ܹ =x@uFŀ^{{hƌy=^xhZNٹsK6l`~WH-###???o̍U*##'j|#G(G> IZ< SN8v옸O.))Ѳ.!ww;v(wwy&&&Zo|5MKuꔸ-_MMM?.oݺU, cbbcǎ kkkmll՛??m\/Jꫯ[ ȑ#N4~MMCNp\TC/BBB}uvvߴio&11͛گ{d+V4\38=z(--U=jiijkk|Hv>yBpssw.nVVVzzz*#egg+zg kkk1ann7&N8f̘򂂂 $n733S9s|555iii=zxꝥi\\>t,.###44}݉'/obbK_@nݺs|{)))ׯ_hhtH$W\w|044w=*Ɍ4neew {fggw?r?oii?lݺu֬Yȑ#_WW'nWUUeeeN:UP4-뭭'N_5&:/:w\FFFuu٣tҥ /~bd;wRVVNMM;l6Ə\xMttt|}}3O߿f{xx쨨 N4iݺu>>>dUVVNNN666 4Q%y jԨQL-$lmm ._,ya$ŋ'&&2ˋA$xÇϞ=Xz'_{nccYf1\|`3bX<oɒ%JC|`RRR211Yv͛7^JD[[[RR_DDpppaaapp/AGd^^ylaadiiaaac>vQQQ|>_[[{ܹoH{𡳳oggh HLL:u֭[{baae˖S7.$$gHZ[[Bmqq1պϔ {͙3G___zqacccttcbbbGGٌ444xzȑ#rInr$g4UgzO~_~eNNh򄡸;À9r$AL-55ug:UUUyyyUUU9ƍbqKK555bʕ+B˗===WZE% /^H檫|>ʕ+S H3n#=zɓ''O,.. uĉwZZZSE[__K~~Ç=/MMM ;;;mfooO%%%GbŊ)SDk׮jhfҪ$m -Z4k֬ kk;w߂{zz]pJȼպxd?3yDГa(#]x"!2@|z6oL͛s'''uuuCCW_}UWWbX$q8Wmy<^WWY 4[l!srr\nHhݾ}dM6x%T644755QM燄---***b?%tvv .HҬL|u[8kѡK:tHy ;vHn$g4J5nK$Lg Cqv/C^;`^@@+WΞ=;rX \]]g̘RRRLN0AtرͮDxѣGϗ/_Tō9R Uzzziiiǎr ,zmʊ}566| $}y<ׯK;lذg CzvPU^^!%-lǏ vN3ffee<()),sI C޾}̙3se:"`,*++TeeÇz뭭[YFїҿ! 0  mx@mT^^t <Xvvv/_Ϸe:޽;bc=_1 F1bEkG}'srPr}~ L& ʕ+@ 8rȳ`ccܷ'z}[K8ezxap8ΝcXbX$)++3ӿ)h666r 2 cbb~WSSCaaadiimee蘘Avطoٳ͛Դo> cǎɼֽ{̙QQQ|>_[[{ܹ?Ŏ_ IDAT;\\\|t#G:88\vMڒ---릦&͂ MLL|}}iILL:u֭[Cggg__ΞW鶞2c ùt9B^^nQ/2''~Uɜ,Ւ&$$B---[[b6 -[L:uܸq!!!=,Mf/1(n~~>Ӂ@ 'b95k$|>ʕ+Ef͚UTTammsNI^{wutt {nrrZ{{{|33*///ѣO<9y򤦦fqqEIIH$ puu---=wWWW'쒒+W ˗/{zzZj?Tf0999]]]>/*?qݻw---7nHunI[H /^HJm4U&2,U+V2eJzzH$vZUUh~$۶m9ei2x XH aKZZZC$ 6~RCCy:jԨsu _nysܞn߾]~˖-qNNپMCCիdyDDDH$p86<Kܻh֬Yaaa(DCz=[H=WIIcӷ9Y=z8iҤ>LKA#222d^Y2 @Æ #lllTUU l@@f^E{{P(*//4mllX,VYYy*skkk}}}}(Rcc#UvCII`O~ԩ1cIGGGlWWǏӄ-YOؤ#!ݿ<~d?~Nfff ^D#"Ӂ*&&}˗/lvTT… 'Mn:^ݻWCCc„ eupp|y'"6AL[[ sss#=rrrP(lll5~ؤ#!"((HSSuB5Y###/^i&___2%gr&IXXXLL̸qRSS{v?sLZZM/2߮vssc:O(vG555\.ȈXJGGnk֬y.1a ypc (/ r,@`@!0x9;;X,,YA&99y`b{Viii5ڕ+W444=w~,2 %PgvT+:y@ ,1 CDMM Ӂ@A26n([ZZ֯_.W\) /_\^^j*?(nhhxE877W]]ݺuM^CKKK?y6 """d!|}}oNw[ fy 62i_TTf=<< Դvss{Zmmmׯ700077ݳgO6TaDFF.^xӦM:::4qqqqww_zupp˩ZݻWCCc„ B6pI&[G^z5h9s&--M?_~ tuuW^駟*2Fx1$$$|Gpb۶mz*A\.7,,lٲe2!ڰaKTVV:::v+ ^f #p# /xi͟?1/^ܴi%UV\ε|?C5ȪUz-ڡݻ\}}q s8p //6 Kn$O_x GFFFvvv\.Wfmff{G~ III髯ZdBu Ā苾?x@A}kkkjMFݻUi@lbbBի4ImmmKvv;jh/.\Ic]&ᅦI/}Kcǎobbbolllܹ'|sNn޼YL)̐|cƌ9u׷lrq TTT{ー0#i6|pAhR::: xb t=-\&bllLՕ&iΘ1C[[+N:)! A&L urr;n8h|OOOi BZ^044y mmm333ZRժ4,Qf98c_/4K!;;;++KG$#UTT|}}7oތwj|Ɇ u'z:tXa]feeuرWzzz>y$..,((um!ˑy*H0L\tiƌqqq+V`:(H .7%[oo3f̠+'.kgg6`a: xfLG/nݺ:SSSf#rss 400`:acc,9GQ0~ϟ3geBҥKAdyΞ=+UW;vEXXdkײXӧOGBs7o CR__vժU;@ӌDCC*224Kx!04N9N0Aq(z|'Oo9r)))Ço/Pb ڵkӧOoRQQajjG˼DHHHYY?PWWlffF38AOx A  SMvÆ %%%{3f̭[$29@ ꫯ8pʕ{0 hhh`:/Njaaq]v3FKKkΜ9=f>>>b.))H"##nj{֭044x"yNKSBB”)Sttt\-[dF(Doݥ 9N[[d̙k֬9BggP( 2455+T1رc999JJJ555􍝜6nH58MKHdhh8k,q^{y,up9#bҥL '_gϦ|QQQÇ߿l6ݝ,\~}bb_oeffKJJJ{nBBEFFVZk׮͙3GfrNfY$>C}Y?ޭeYY۷ϟ/]V[[[XX(삃+**RRRdorÇWTT3f\\1cÆ ΦiS^^zxxt+gXϺt\npϗ~g '$_ɓ_u˖-oʕ+;&uss{7V\yڵʧO=zt׮]Ǐ5j֭[?. ,&.\hjjsssPxYƥ7A9n$ &^Ö6mZcccss38"899ۇrw}'t 0kG+((hkk?~,]xq0FUUܦ l@ ٟ5++}%)aÆ>>>B0++C򔄒RWW׳F+w}r>}Sƌ3B9'B,AAA:H?C266677?qtaZZñQaaݻ\ 7nIDI SBVSS_FFFrǏO8fѣGk=_Ϻt\Ņ!%FEEe޼y%%%YYYSNݻw/,,l<OYY;$$$++=&Q[[P:`oo3BLG<2gΜj[!u;w޽[]zgc55&///w}WVV9,X`kk+011&H0өZn߾]YY_ p8L%//O,Xhҥo&ZKׇXncǎaaafff}naa2 :tR0 XoVff?3iҤ>tGeP___VV"׎`TVVv0Ak֬a$6H?HnԙA͛Lox<ݻw1d$ 6P $_>ϯf:Ԑ|x$''KN#G9=9sp\6- /]DD{{;K^{ٳ2Z[[e_ZZzcǪ[XX NvYv-:}4}$A8;;w+HLIqFlٲn''--!@gϞ>/CX,씳qhh Ptx|4~ɓ'khho#G>}zJJÛK(XEbbԩSuuunJ2 +<#y\"//OCCLʹTK7b>;wcmmm-ZbŊv6l2y6l0I×,Ybnn-=:y5kƍnccDAbkmm-}c $%$3%۰X,%%%33߸q?˖-}vjjy@_[[KlѢEf***Ȱ޹s'YMMM ;;;mfooO\R(^|sժUW\!O=ZZZɓ'Ojjj?vvvIIIFbaaQRR"BBBM^WW7''Ç4lL5B' /^H檫_Iu[@9יIFȒҭ;wJ$NXJ9Òfϟ'Ooܸ1|cccuuc~UNNNB*** EѡK:tHd!!!qKKJEEH$p8W^%ˋy<^WWٞꟀc }$[l!srr\n㛚$Tl,)BRF4wMڃ*d/ą stacc#A?*w-p&LPVV~Ϝ9#]m۷oXLX}vsss LJL2cuNNNꆆ:::3g<}4d򥳳"66V (^;:yרΟ?/:;;ꫲ\rxK*>0?<8qb^^dT+++@]],##dƌ---%%%d3KxѣGϗ/_~HƎK욚H$WOO/--رc\.w,@RWW׳FҫӧO>Ç;v+,, gc ݿ<~z'Eʹ4K!-((ѣ=.\(]blllnn~ oooIaZZáDaaݻ{ƍwyҥsl >Р/)!u;w޽[]zgc55&///w}WVV9,X`kk+011&H0e6Lĉs}qCKݻwMMM>y;3okkK̚5kر_}t߳gΟ?̙3?^__]]]?+V<1bDNNIBB"2* ׮]K+^@/.nnnL}'_҅~ɓ'7o_%=ѣ_{Ջb*|Ks#nZ$_6z)c?طo_mmٳgwڵpW^ybŝ;wnjj[x?CSE^[T<ӖT*++Mzصkq A2Ajjj󫫫7fp"IW˛5kiӦ̜9s͚5ݻwU) _WUU9sfҥo}%U7npss=z_|J_s/sQ@lݺ 72 jehkk?zȩrǎ֒ /}vhh9ӱ@?۶mۧ~qF2  ^;*++/_k޽;<<92/W[[t 0x dr*$_[n}O> Y,@½rB/++c:P%_IIɧ~ե~zݽ{w 0 2(tK,[ ȏ1 jH0Ν;;v숏xWDqqqqqq,XpqA~W___wy'!!ٳ1UY[PiӦ}嗊{ň)S|gT4OM8q͚5T/_޿?UmPPU79BU;vXoooⴴ4Z>FU{ΝsQ՚N>JF[oQ]v`ܸqT>}6UͶݣUWW744liiUVVРҥK.]t0!0UUW_}f{ttt466R>~oKKKii)U-߱A466S?<}Zmmm)))T]]]4}ܹ-)&m4ɗ;vIܸqcݺu4}i//_j4ɗ I\xÃ/M2?s߳g/義4}GAU/$_pbbb6mڴk׮X2Q" @ Ow̘1aaaTVVV4}MMMjmmmi9ӓP(y ;;;Z5Qr84?<^=2 CKKѣGTm߿<)322.]4ydcA˖-;pӱ@ç6yݰ055?~4O ˠC`>W_}? .44t/L 6??@`PCe=z޽{oݺt8w; СC`Ϟ=L6Fo>") !@H(/}r쌌5l GK,Yd Q`y!!X;w L0M2ҥK/^tttd:|ڪ*3rHc>Q#>:|@ o5$_B@|P $_1 j4@1 v,Xt C/R[[p aB@|*A >:|@ o5$_BeXǏ3 ($_ꫯnݺt \ӁLRPWWqkkӱrrr/\0uTcA꧟~ھ} |`˙B@|P $_6??@`PCݻ5$_Iot 0|P %>EL@@yC&#>p8vvv#Gd: @1 vx@|P $_†LG@OQBB@ e:Ԑ|P]v00(ɓ'̘1L@ `L l62/C^;P $_SG@/Q`'_B@|lllg+WhhhW<98 wap"HYYY)h1c_mmmUU|a^cccttcbbbGGA&&&'8źqGp5Iy[[[RR_D&$$B---[[b0xOQQQ|>_[[{ܹ?"222##۩^'N*󺉉SN522ںu[l:uqBBB*++郔V^ZN``Ӂ@KHHLhѢYfeddX[[ܹ,e6mړ'OdZZZz9>N\R(^|sժUd+L.]VUUEҳѣGKKK?44TR픪ŋW^-[ZZ455333evihhPSSojj.!!!qKKJEEdUC/;>|J@A@0E @JD%* 8QlVQ8ыFEh4v(vHHbKڎT85 ( DK\ St^g}z} /"KMM-))quuw֬Y=ztΝuF/qrr0@1Jnn1c-222={VPPЯ_tFa||.\P\\\XX^ez͙3',,㶶uNiLL̶m,X0|UV)+G__K. 'Os:x=\\\RSS.\JʋvUUebbyvUI4Dr}b[ggg33{(((wuu566NLLlHJ ^;ӧ{{{'%%effd2]--Jz;'O/g͚U, !CN:=z+'%%}۔p޽cܹSI4]]aÆEDDfgg+6 LJJˋA[[{ׯ?w܋/]S_J ^[aaaAAQzzc2E{͙3'$$… ~a}n޼_VVgjjjdduԩǏZƦꜫ?;deeƧrK :t3gΔ)SAHNN^vmrrիΞ=[ ۷7ڵ6mںu늊A(..?yȑ33۶m EEE߿?55GGѣG})56xm{ennީSyBycʛ8|Gꑚ:7o?((HR… ׯO2eoꜫ?;D񥅴m۶\GGG\^)666?Fؾ5J< @ IDATu۹sgN.v"ԍVٵ X|(2陘~%e֭nZl1'^;j!v}1>>K\ Yzعh~vGU 4hcBB֭[퍌Fuay;;3fy/4M6yyy߾}3BAϞ=k+++Dr5%YYY?^~,_Rkrzf/7sL-BEEE[fͪ~eСݺu{aƾÇqFBB'|"noo߹s􊊊ӧ%K̉'.]TѾk׮iiiӨw}zXXXDDќ9s ䷴jUIC(Pcy:uk׮c<{666yyy W^U H߿ogg'bϗΧfJ8;;+M÷zѼF-v kGٳ篿*?622={u̚5K__޷knIII;v8q"ΩSbbb?~j*WWW?? xzzWO>/^]PIC(P}{;vΝջԈ9ĉ>ܷoK_NWWwذaيs8J)ߴ_gϞ hv_ ?o3fٲeVJOOa^^^Ǐ_lY@@EWZ}~}CBBBBBBLLL<<<|֭&MׯիO5k֬7n$/BA󃂂֭… j47o&@eVVVnnn|(ǧJJJv횓#Bvf͚zj>gϞ׿{&\yyylXMj*qYYٮ]w^*:Qy^U_̟?'%;;I&=\>}ڼ1KJJJKK7޼oJ7W׮]կTUU?~\"\h](gϚ1`EEEQQQ3oJ5};w|b>|(vצM##捩ۼ1HK۶m+ZAAAJJJ}w>Ӷm6p4Ǐ---mllh.V`ڵPGG ```ӌ[?ڴiνZůfѿuֶm> 9pʕ+WXyfs,X v ٿW:vz9s=:==] 4`ű+F_Ν;w9A:vjժsV/N4A 4UpppeQF A֭[Ǐ%#deefmm-v"@i5jO/jD@(ŗҦMx<~8%%%;;[DFJ҈ ׶m͛w  /^{ıcǤR͛NZP|榤deeF_Z;GDD@rss;ѴN; XF_Ԉ Q|P#6Zd؉h~?ζ;X5jԨs%ZtAT!v"@Q|i 2LD"v"4d^m_Ԉ Q|P#/*rsscGmPYMG%H$ukGjD+""b޼yb'@5lذ~:tع eaaakk+v.+_@d)))#G|7ͽϟ?/Bii.ݺuVqqq}C\~}vvvNNNaaaϟ?aq/<(7oT\bbb]gb5s*<œ'O WՙY޽.]wk̀Yϊ+$Illl̜93!!! 8~ &(+$$d޽lٲ^z;88ZƠgϾp̃{<~8%%%;;[DznnnT^W?0`ǏC 9~n/^,?rʐ!C ܹ J~⋴fr˯+VXI*OqUf͚ݻwggg_U>;;;۷ϟ?={ުp޽k׮3>|877ѣ]t1s*++֗yUr!Tm6hd2ق Fu1,^700_Q 89sf׮]#""bܹ}oqцsZchٳgGFF8qjN[ SѮ]B"0\ D[[Դo߾QQQ֋/>}n*7|#ɾ?zʪvvv+Vطo˗_zv@33/rɃ/hiiNٳg'O駟~mA\\\\\\jӥK ׯٳ_:*"Vh߿ΝqU8vG5pހǏkk]L̼}O늚 ***JxT)jMm*wɓ'ӧG)GFF:884V>}iӦoٲ:t0x%KʪMqq_~٥K?O ג @FD)g￴ۏ;vIcc 4H$nj;;fϞg+(?E3|޽{Y???AW}̶m۬LMM?]v/$͛?~0g%)8q?ڵw\\\Amll._s6m7KAk 歷ƶN:)jժ'NԷAN?IΙ3'wA[[;,,,$$ٳg*ǗS>MF711144֞K. ޽{TܕǏޱcGRPOO{NNNS266^p >|>a„OVqqq#FP2KAk SN]v믫_rttT1==};wh۶m_KAϫFDFH$v:uɓ~j;zӧVS%޽{Ϝ93~oӧ~b‹/F >䓈K:Q>/}d2Yee'O.^8mڴLj@9ydnnnbbb ޽{-{9s:?]VѣG+VHMM-**u֚5k|͡CXp KNN^t؉Fkɒ%{o%СC={6a„aÆeee'NT0**~۹su:{yy%''dŋwsϞ=]]]wªkt >>F}5 ) OQ>_Wݻϛ7֭[_s_|1a„޽{+ր[ZZ8pvk&&&֞N۷ɓ-,,>JGGʇk_W:c6XFb'h5>,B@@Eɧ:MȭrЄǬASx ?~miivCIm۶h_Ԉ Q|i DGGGDbRСCcG*n988ĈkG:\E,4+_@o>o޼ׯ+ov1gggŋutt A8| 7ox vvv3f̐wyȑ#o߾];?ތ@KKK777>uu{fee)ouڵ;.\066vഴ4Ǐdgg_ٳg}]۷=z4`۷6''?4[G4{wٳgz{{;99>|zzz5ZjkkWUU6MNQ|M1pD"ڲeKŋ. /)=<Qppppppf ૯Z|e˶l"v.@s@( ͇Ex ŋǍ׳gO /^#F;b#YZZ؈h|PYM@S4T*=tPsE4+_XrYj%%%|jO!W_4^SNMNN^|؉P /)BBBBBBLLL<<<Ο?}XX؇~n:cc3f p阘f }v///[, @ݻ Ǎ7uTBy4^nnnb'@-$2LU6jԨSN9R\4p|/YZZ؈hl PlOOxiӦM6M,P/{ ^;P#/jD@(z-ZhϞ=NNNb'4JC5xqJJJvv؉FkĈsε;XrY9|T*ݺu؉F4EIISuM6yyy߾}[~x:tݻ[j>bSSѣG?}?wpppqq9v옼c~~~ppǕ+Wy/6ZS)_nff|poK.+V ۷o k֬IMMݰa k-[o7hР}~III3gڵk7߹sgѢE _^+ h/^DEE}o 7n|n*HA޽ SNA;vTq&Ś4$z|lff{K\]]UnPDr}iwoQYZZ؈h_@#&%%UUUEGG+i=yן;wŋ׮]!***22RI6lXDDDiiivvÇ hMl2KK(--H$zzzb'@xxx?^y?pݺu3f(,,111J4ݻ Ǎ7uT^yL&vR===]]ݒs-/^;w7oիWN8(zݻ733SD$;;ۮ-[ÇKҭ[SwY'777++V\n?NII8p؉P V45䟔H$b'Z@#HC5TZZA h62RGGλ+Wtqqi1Xvtt æMo߾-^\\~oo:֭[58p`&&&;vܸqKG 4hĉ마d``PTT$͛/^$V=T~~~ppǕ+W6@˱tss;X"((fff˗/ ߊotbŊ} f͚ 6 80==аzK~Rٳgwy(;qℳs^^uFFF=AؿOWL@I|%ϟ_^^~;w,ZISN:U,c עE䤼ً/ljkkqhv݂ v]KKkԩ TVV9rdƍ^^^ZZZNNN;vP"L0Yss#G߿_( י)-- ܹoæhX5|4KMM3fJQQQFF z_477ɩLMM-((rP 111۶m[`WZ|wwwuŋ~7ƃ pǯOZZL&Sԧ 1%i/lff{JjƉJb2ԩS<ѣ|Q}GUZZӧ`u&اsqqH$ߗ 5?W:::~~~IIIUUUyyyJkkkOš3@cBNWWwذaهn!!!~~~!!!&&&ϟW>,,?\n3 A8}tLL %%%AAA]vtҮ];3g߹s'ا۽{qؾHnnnJJJVV؉&y>hϟo߾X\@Xt%Km&v.Z[._|ٲe[l;͏/j׎ꕝYb@@Eha_ZBy k޽{bg׎Ԉ g}6o޼+Wgiifcc#v"@#P1c|w~/v.@C=~8;;Ғz.Jb qRC---F@ñx.qV\⢙ %%%Rr///?;w-ZԄ4+_@#x"**j˖-7nV۽{w--S PYYyȑ7zyyiii999uرz@DRVV^XXhddԻwo%ٸ΋Օw_dɱcwk\iii\\\hhhΝ}}}6@KMII;(FHMM3fСC222w{%?077ɩLMM-((ׯ_}MMMcbb;oN0AjO}ٸ΋5r.))quu799@ZZL&srr0ȑ#Rt˖-b'4fffPPP`oo__{WWWccD%1 rԩ_(wQEOO/55U~zT H$O /ttt򢣣֞r(@P|Zp={~헶 1118aaa~u댍g̘QXX(ӧcbbA()) ڵKvڥd:۷{yy?~ٲeM%wƍ:ujSBCtRkkݻw=Z"D|P1ch"VZBvvg˗/%ݻwG 0`C;)A(4… Gjii_=z(//~Q*_`{4UN̙Sbrr1czuJQ/Ү\"ʞ?,AߛJKKKJJ% YBdYB 󲲲f UUUf %Bqqq*{ųgϚ% EEEJ%44th mx-vаN׈#>|(vZD"; /Ҝ|f ծ]7K(Akg ]]]==f %IsmPظYB о}v5K6m5K(A۶m,:t,IlK,YxqDD̙3###k6mի(h(zڵ ,pvv_7%_}UÇ߰a()^?޽{ݻ'v"hƍ=h$ĉ\ri*/СCRt۶mb'@-(4IQQǃ>wܱcǜ @ѣ$eeeN||?;," '''L?Ot)S3?:^Iv:*/(5d2 DD@Kc]P/#Gtqq;/777++V\b װaΝ۩S'=*J?S Q|P#/jD@(͍O(@1x`D"HlllfΜѣG[& Z8` ?oCRjyJjbɔ)S?#KKСL&{؉h֬YSQQqymmٳg7opLVQQѼ1P|D"hkk٭X͛/_vtt zf̘!q+2 蘐i&///{{{۷o˛8p`&&&;vܸqc󃃃=<<\^gz ߿ۻC{uVnݺhԨQ_u66MB})u/H} @#k׮s禦6=ԠA֮]+Ɋ KKKe2ْ%K̉'.]Tȑ#?ҥKc{{])N222*++g͚%\xOIIϘ1c޽{{{{E[x;_YYyʕ40`TTݻwO}JJJ iח^EEs{0cƌ[_ToS$4$fY⋒ߺ΄ȣGNZhsYjՍ7/^cǎ={3FѦ(##޾aݫK~`nnSYYijjm۶  >|ժU5899O  ?/gϞׯ (B||.\P\\\XX]g4SҦ$(II}PߺvfeeYXX#Mdiiiii)vԅ=_5׷:zhdddBBYll?5]UUkcc'?zjZZZ/zȐ!NzA=kuqqH$ߗ*:/=WWWcc/`iiӽ233}||d2VUL!mZ:%5%J/ ԇ J={9sTUU-oӧO.-ӑ#G8qÇkp7oތ/++355522@WWwذaيkKO[[{ׯ?w܋/]#BTTTddFFFǎSPy4ShH}:&&FI@ss[N4_~W>}bϫBC4:L|5ƍ_w*ٱcŋo.v.@s@(|ݻw@CYXX#񞞞...+V; 5ydc ;x/1bK} .^+Ɍe2D"i$hM6%$$`eezٳg닝hi2ɓaaa?@xձZٳgCCCϝ;'B۶mw޽{wm|r_vСCիj}3gΨַsC Qonn+WTkaaoַǪ׷T/Z#V@ILL)Vyyׯ_^YUUCܺukӦM0aŗ_~e޼y*r姟~Qyhʼn2'zޅ w}j}W\Zw}wͪp–-[Ҳڵk߾JSUEZN~222⋰ХKI&ݻz3իWXXj}UssUoo oooEwEVVV*۔MŹH叠DH٩}իWonmm}I&;V4'/ 2]]݀~mݺuÆ^yjj]]]44io؉ʗjD"̜93!!Ay{GLn*hTziiiRCh}*B@@@zzz@@݌3A:Q>nj3fݻwϜ9coou'O޺u΀56uNZ<ȹ}wRRRffbEFJ)4MCRjP?*cǤR͛Nh4/"--_gϞ3gutt򢣣m#ߥE~:r'NTTT<|p߾}͛eeezzzFFF5knIII;v8qqkWa"""JKK;xzzWz@%Ҧ!)yM!(DRxOOOWW+V<ڵkCBBBBBLLL<<<ԙ5k֍7}||A7oرcLҨJJJ,,,vzҥ]vn}v///[, `ѢE[#vm``>nܸS/oݺuҤI[z BC4$>u  盙_pBhhhllL&366 \n]}5ԙ3g~!CtY\4;wk@e6mZzU=;w}iӦAV^={ln ^1C ;bҢd2ɓ'~gK]===k\ X|(6>C IDAT pss;( //s жm5k,]nrWF Ro7oVwʕJݻWqf͚wΝ[_GA?b:_Rr[ݔ%wܔܽ{]tw^w 511Qrv_}}}6iҤI&t{iF--/^TUU))F(E֔mڴQ@yo}wx %}֭oVҷO>J^tIIߡC*?(;yd%} //-xÆ aaa<O>6l5jT٣@MM]b\r}̙r> Ԑ}{r_*kll,Jߦ}㏽p<ǚr3oRiSn k-iMxqKs5k_~ooo''+W҂)(o(rWTJ/Wl`._ass˗/{{{k"-vhm۶AAAnڵkW^.v"Jk׮;jv$>U0ެ~~~b4_@dt^khuR @qf̘1c SmǕ/D@hh d23짟~uرc{!vjmbbbee%vE[\p@Z*ٳG"*ܷo⭃CBBBV?N ,cǎ]`tTvZƣҥK(v \"PsssK.)]̙3ױFFFfffᮮɩ]|ݺu'Nܻw|cttac;vXRRRD AAAiiiAAA666~~~w}WΝ{ ݻw9::FEE=z^gS9 DEL .<S"""V^]{@AA;駟>x ==W_U|cǎ-[;wӳǎE.\!˗\"_Μ9S___Drюљvo\vm``K"##/_?$&&6\{:hرc=z={v1<--pNڧO]]%K\t/=zӛ8qA022򊉉'R^333[x#GAx?AYZZFDDXYɁיy2 m@E4.\dNNN#G=s ޽" Q__gϞO'ΝۧO++oܹs{쩨tqqQ>;,--*++ϟ?޽)S،7ƕ)J <4Y׮]--- 8P"deeV_c>|Ν;{;wb{RRŃ222jn|}}=<<=s·_|"]]ݪ*5`cc#GdOaa}C\IS+@31cFJJJHHAVݻ'HuV}c۶mǏ~:z'۵k׹sgCCCGNHH{nHHȠA,,,XTTTXX8j(CCôT4 ,,,99yΜ9ϜHaȐ!gΜQ NJJϏ1W mCEL7o600:tif͚U{@ii˻vjkk{M6)> ٰaC۷o_{uy{{>|ٲe?KOO>>aaaFFF...Nj+\}jpF3w^nݺvz]tpp:ujWVVZXXرW^QKJlݺ555ubg |ymܸz„ b^?֭[/sNTqF]YZZH$вgggXYY@˖:n8/-իWU޷PIx-^xѢEY# A4_4KKuo>[զJ{Q1_= vlii)vh4L&BG;[pĉ{UlwppXfܹsoܸ!^PPjnnrҥ7޽{W_566^tnnnQQQ=R~WbĈ{_x^^^)))˖-;j4_daaqر/Zh…vܹuִΝ;GFF7.\NXzuюљvo\vm``K/_?$&&*d|Qȵk66ݿ~:h KKˈx9uR>Ψ?U\]]}||xxxx,XgϞb ]N8\RRRTT_~&&&yyy.\dNNN#Gl,Æ Twޔ)Sc322py%*B>}ۇ ҨxYRJMYYodd  8pD"ʲ5_AխR>9ؐ?p@L.ᅵ={Qxpۑh Gehhv۶m;~חT_!C9sFyCOO'888))*???>>^۶m;nܸ۷o՟WݐxbZhLLL֭[=|e˖>s͛7 :tڴifͪszzRaaa>>>aaaFFF...NR>ucoٲw...o٩SFEJ,(Yfr]SSnݺ;oݺ#vl͋-z77m$v-ի?>_YW@#Ξ={ͪGN8QDwCn^+rrr>|8bĈOJB1mڴiӦqhֶmSRR@LLL f߷o̙3;wqT4ێ4 | /*OMM;j4_T/J### Ab\@@K/$J@4_@^~_~YDmG*211qvv;jL&vWh A4_4KssD";PlF@EJ'vhfm߾=00ٳb /YǏߺu͛7ח_~)J7o,vAD+vA@hJ @>}NWh A4_L&A"47͚?!C@󳳳MLLxP+_@^~ ڊ}7RtbZ | /D@hh۷).\```MLLرcII ᮮilrTÕ/ *(({EݻGGG˖-{<{{:-\ɓ'Ny[oؾ|+WDEE{QQQ |ϟ_jkZZZꋤBtuugV}j10$$ʕ+}/9s|;>lggvZOO3g4*9*AT;v<{mLL̐!C _j*{{:\xQ6,,L___&UVV*_v¢ɓ uOKK]f3+y1`Μ9L&+..СCbb|}ppuqqq6mn߾@Sl߾}b+<<\+VFpΟ?_ZZ:h aÆ(רn߾}7nLLLԩS.\ ɜoG޽{SLQ,.. ސH/_nT\pA>}2) +222..E"~Ϟ=O>mkky%N8w1c :T,@K+ݻw;"kRTdT*VUU)F&&&>|VI5Decc#bY9rѱN:%&&>3RcO&/gϞ}f'FݹsCW4oɓO>?u7n\hh۷={1bDDDD' VYZZH$F4_Z* LSKIiӦ`uunz 3:|P)c]Ь'Nܸq㥗^իY #pر^zIǏ744D 6p})J={4urww5VZ_WUU-\p2.]:tPipSl4_O?+eeeo3fL֭{5x ׯ_4jԨrvpWWȷ޽1**ѣG񑑑cƌqtt<}u 'Nw^ ???A֮]{̙g&YfܹsoܸQ߁YƤǏSSSD 0y似_~E _~jjjVVAViG;zQ$mnjoݻw18(( ..-w⒙;v>|nڵ.˯\ell{eggGEEo߾ ޽{ǎg͚%J{/[_[I;w~w={?}: 'U4|||AH$#GK,tRNNӧO駟42""">>^A{衧7qDOOσ*Ϭ<ٳtttf͚u*rA===;;;U0;wݼys޼y׏?Ξ=ۯ_?ѣG?~ŋݺuk߾}rrriiA䃇 _RR/|~Ϟ=O>mkk{޽)S(*..Ȑ_rH;/ _zxx$%%egg{yy)խYyPRƤ|󍭭m VVV М/Y?իŋo߾-v"Z{ukCC\R~Ñ7䍛6mL4)444###)))::zƌ:NHH{nHHȠA,,,|||k(***,,5jaZZZ r̙IBIfffN:uƍFQ}mԤ,\{6m@?߿)S}ݐww4A6l[CBB6lп+m 322rqq9uT&&&֭>|e|}}xyyKIBI /_xѵkΞ=I i׮]HHuLLLL```rr h3Wb$L9YYY666֙?rrrںuȑ#UBSE9y[ou%SѕոUVYYYw+r۶m۲eK@@@``Y UV+WO|yѬ[nʕt^ԨѣGYZZZVVޚ>Toɓ'%%%6yM6URUU%Ν;]]]qPI&F|իo[Lֽ{e˖\޽{7o>z:?MSZZz k1*,++۶m۶mZb5?~nʕ+V; fEEynnzk-Qׯ_W,3 mЪU+CCCl׮]۶m[SNu֍zPru~ddd4_ ```ƂT IDAT-罡aV\E|;P#FءC(??@t4_ıh"#P_51133e˖%&&~:::b9266nʽǣ@=BCC6lp͠ .soJW;j\jpɓ'O `ff`s,44 :|v횧g@@@m7xcÆ k`h*{{{{{>uwwwwwo< J @q M6m4SmǕ/D@hh b`cc#NYYYbgڋ+_TG*_;j4_@v$v/lݺbk))) ,;`Yݻw.v •/D@E&&&VVVbZ hW_}{&&&NLR^z;vΏJJJʕ+666NNN?mŊ5WVcW*LMMĮ3Xu %G%ytuJKK򲵵m߾Ûo)?: {ƃ~wrsskZ yoMRy:%_ӫׯ_XXXʖONNnZnԩ))) [/,/~Ǒ#Gcǎk۶mxxxח.];vlQ5oѣǢE_~J|IVVֶm.\p&\tiۻt`%U>J"==]~gg۷oر30`NTTTdddl޼9''w՗g +֔(զNɗuĝ;w*&СÇ~X}ޓ'OVVVΟ?3<XpL&[hĉ8 ߲k.==~{:::zzz (^WVVΛ7vM`^K.d Ycjܹ/vl%6mwD/'$$(*ׯe{DWWsÆ ۿo}+֔m۪0]m`cbbfΜv֭۷;wNGGasW\۷oghTVV͛7MV}ԩS5BPP۷tunggg߸q˫vEBe˗/hb)YBsG}ڕ5GGGKqWN};4dF0a?s~駵o*))ٳg>}5)Z*;;[QFU(7lpCuԩ1:cƌQ9uƦGٲeE}o? (9y饗 ꫯxUytvڻw:88TgZXX\xqƍZR׌ڏێ@͛7j((~ʩS"/jmm|cǎ=zu^u~7(vQՍ USѥKiGQ9y;;l߾=22R1FP͉':tP_}%ߚ 3ϜڵkgggW,y吐Ν;nݺvfv,ccgW ^d-reqww_`]cwS}cBBfΜqF%իW||| _CcffV^{zB5OEӏ>VVV+W 4ӧO mLCS}}}SS<RiDDAVZJ"lڴ3g<}sΝW_mذArj߿?i$__ٳgUSg'B"lݺ~o=z2gS>}ZH 5TUU{ZTT<(̣H$۶m;~3⊊&3L2gΜ?Q\\mLck4Vh7nӧӧ??3[nmܸŋ"~m337xo߾ YÇk^c'j 6lĉ?~9 GQg]!!!ݺu𨪪+R <իMMM]Vf:+9gͨ0F5O^L۷o?mW4_uS-ӎS Ă {Ni:6 Zhdlllmm-_xҤI˖-;.vQQQn6m-[fii)v"-h47nbgQZZjkk'-PkAvBBB7mdggx۷o hΝ;@.\XRy ;##C`@\, 믿ڵkĈÇ; LUUգG[L5>|ޛs ZUVٮ]m۪fN$ nZ___}ܹnnnާO:/_D ```Ƃ-罡aV\E|;P^ym۶ɷ1^z\r֬Y|eh8-Z$vj믿X]lٲejo z*^v 4_ɓ'O,$$d];;;[[[ JԉKs?Tf:uԩSAv횧'7:|͚;w#.vdooooo/v hfh5.o<A4_TtԬ,F@E~T* ;j4_4 `gg'txp |ڵkW``!vglllmm-v$oر#&&f޼ybgZ*777//̬{bg~"333333;M# A4_4 ߿%vhoJbZ | ]seĈb /Ycƌ3f)ێTdlllmm-v$2L -| /D@h@&H$żyN>|<ٚ:^*H#v-|PQQq)]]竷L&PoMvԬ,FZDkccի/^tnnnQQQ=!(((---((OSSSN뤤_;88DFF3k֬qww;w7bcc]]]"""j1]tta&&&vرD>]xxksrrc< @}wR4,,L @|͊ |-BRRRs:888|ب~!11144ThGG]v)/} 6 sέ[u922RwyO?}AzzZB|||._|_~̙3owرe˖sΙxzz7ys hɓ'nz5TLMM;w_mڴy?AYZZFDDdF>}ogϞmgg3k֬#G HҊ WLL %%%W|:u>}.YҥK999j9 Z͛7K/R 4 $.\8v옹ytt ϟwޔ)SllllllƍW\\ѨC_~&&&yyy;wNHH8p@ݧO~̙DݳgOEEE\\#''' }}={>}Z-G@˕'v+v@#뛚۷oC566>r䈣cUUUח/_>RGGS;vر>\fܹsҔO7zΝ;:t(&&e/ $%%͛7Oddd9[nq H}7oފ+|||c rECW_=x`EEEnn5իWO8Q^^ޮ]Ν;Sc:A’̙S}Ç޽2h %Gh3cccgggkkkF9ȗ-H$b\O8fddxzz :t0`ԩS_FUZZ|]ڞ={vӦMԘN??ɓ'TaÆoͦLGh5n;_ҲLzΜ95.A*7oV zj <^A044ԩS{O8Qc~Gt\Z>:zATqFkk &Wyg}~{&Lh-YZZĴ|-}ǏK$3fX6/ ^.'G4wذa#GT>,77w͚55.oTSPP٥KŚ/YcƌY`}}rss{aÆ3f\pt^wIҰ0ƕ/́GMӽ{>"Aڶm?ՇMsU9:zh{ܹ-[Uڵk koo?uTILLTm_ss#Foaa_ھ:uUm'Oj4MQQQNNǤNEEEEEEa?Vy$߽{WyݻWp*{֭[Un˖-Sy^/*ϫrĉ^^^*ھXѓ'OAꫯ5y 4_@4wAZj5y+VT4u*O1a„7o=~Rm߮]:zAFpۑh;v,^x޼ybg~}322Ď@4yyyb4_D`ii~/H$_]P@#hw޻w|믿l2`]믿;|PQAAAjjjffAVCIPF@h4L&D";hn, ~xCCC{{y2I/!?Ud^tСC͠QVz寫.\8~Ç[XXhtjm"T.v P.]8;;#-UXX~z''QFƖ dccwq155H$gë ڿݻw9::FEE=zH1>22r̘1O^nĉ+S# k׮=s3Y~ܹ7nܨP_Sg~Abcc]]]"""駟 _y۲۷o3uֽz=` K/=yQ{葖VQQkȐ!K,8w\vv3yx[[ .߿zɡC:tpڵ:C:;;޽I222*++;3523Μ9SUUTEj7n\^rss/K.s&00P/B AEwٳ111_u]j}aaac_iە/^ov횅EUU||}?V^]gHo~IϜ9ӽ{NN J*&U2۷߹sG*)2vHe˖+++K&ݽ{ںy"'ꫯYCx#mtA6߿D__}mܸ111SN*Tsrroٳӧmmmݻ7eE⌌ {{{A/rĉ䒒"W@fg IDAT~MLL*++uuTd8SgΝ;'$$|g-0aBHHСCy≀?Ξ=ۯ_?ѣG?~ŋݺuk߾}rrsE4OںaQ68p`vΟ?/,J?kuuu#[[[ $#G0ȑ#SXXhg_zxx$%%egg{yyd2G5B60I)2(|cǎ=|;wz=w\YYYw} +Vpuu ㏟/VVV Z./ڨM6&M HJJ1c!Cȗ#!33sԩ7n5jjA8|pBBݻwCBB daaTUU_lQQQaaQ 8zȆ'QAC7W^=qDyyyv:wlhh|}^~]p+W___ƍ`|xLLǏϞ=;nܸΝ;O>y5W^mT5{{ 6wߖQ"Ɋccc_y啎;sɒ%e!CL<ޚ>}z퐲:J(*ߺuK:FV1u?wСC;vhnn>cƌs)/?x`Eu֍=I*nڴ?ڵ+W/OHH2 vW @IdC/ N*vi֭#GTȋE7BTt֭[+^|Br4_@u֊_RRRLү_ʽ{TK)A?~\^^RUUU=RK)AJJJRJb+MWYYYTTRuJKK󋊊233;rnj@k׮ ???P?/͛RTD"~_LAAAfff.]x&sNjj_/ͧ]vWK6mڴo^-AԩD"QKm{\SW?JFrQRiETUA^DEsEWZ`kz.UіBK  ZAE Ec1"2 N~H6!vWzֳFpDBbF*qF$033PA?~ر#^055PAT`̘1&&&#~파/_yfgg>`~:sLddʕ+333/ɩ,`$ݾ}o8w܏?ӓ@ߠ27%?a0!!![nuqq7++(hI,ggg~~~III3gΤ7%C4>Ӯ3gOJ@w߼h/SG@ mL8ĉtg4?/s˗/>>>:[>>>Vrvv;WSScllc M&UFe4g /tx慅~󾾾 E"@ … Ȉ3۷oOX(2I wG@_L&3"""66 ¶mVZZsՖ ;1RǎX___QQwP ƍ7gΜNX*H/"3%%%EDD$%%X,//2)))+VغuYddd{{;AgϞ-((/ްaCLLm_}E-[*555͜9SP(Yvџyٲe~~~tr?%݉ p۶mKJJ;xm޼yǎ)))w nY//>Cs=|]3 />>>cbbh@Н /tg@?p@P|!_[nѝ5_`pȑ#: USScll<"SB@m6ABL&S|>D&PO@3L윚Fs;vs8#33S( b%%%e֬YΡ8Ə?&bΝ ?PP666^^^W\F)[˖-{g̘CBBjnnԔJw9::nڴ)%%СCAlٲE$}Ǿ&Lu@ xэ7СC'Nx߷2e A!!!RE| ޓ'Onܸf )rKK˗/uuu l߾lR(?>##MY=.\eBb~'=;;[]RdQIIIFFFo>&"""D@#:D"D`{{{{{ٳg?~uԩ䁅EKK\.DRA삂<++%KP{I33Yf Lx`թQ(...)Az_tww;kxN<ܼYfffϟU'00000Ç;v숊e̘1Z$33sʕ C g0o&w((((((,@:1̈؊S700 ۶m[iiiOOիW[ZZ8vXFFAׯ_/))244d٦Cd._|ΝEEE&0Uƍ7gΜNX)11_Dg/4KJJHJJbX^^^eeeSRRVXuV33v Ξ=[PP@L&KHH8qŋ7YOyC]髯266\hѲe˔MMM3g$c( s?\?liiIw"#cG`L6DFX,`t0Y_tww;kf2,;;955lr;vp8QQQ d{GGGffP(411qssPe. 6ֶ~.ȁ666^^^W\yΝC ھ};݉^Ý/4KHH?RSS⚚RSSɟ222;GGM6:t -[D?׷v„ {tgg爈YfM6￯x.\8v{ɓ'eee7nXfk7 zzz;߿A$''ٳ`>yd -[pB rѣG}}} pqqҥKh֭+))aٯʦM~WsΕ;88888رc;;;\AN"H",X@zCԩSF \.R7E@u<<<kkk'''6<555 BY1c&k7 โwBA}x`0n߾MjF>>cbbhi ekkHwO7p@Kl6D@-ѝ;_FôiU);h555#5 >@@;z꒒xOOOP|Э~W^UA&egg9;;\.wǎ'**l &&&nnnuuufeeX,kkdYTvVٸsJX*deeuuuQ}:݉C,k%чǎt/!_t-=x𠺺֭[t'z -;wN 7݉^C@P|!_FCyy9;xTWWϛ7B(PeҤIΝSSGG)ŋ&oc}rueoeiiYPP@%r+(VTNKo} .h3 .//7צM Faa!Ay9.R$I.H?@ n߾_ԈD" 3;!_|M6L[Ak׮i=e˖R\3d2 xIff&;tАk$U^ I[J:[Rll۷srr$Innv'x/]4 @! >?~^^ْd2׮]__d1cL \.Mj*Px)_U(&ojw}7##ĉK,N6;vU0 -pq`0 \kQ ~ӦM|2#:yB믧O~]KKKMK$]u(6}L]2άYNrϞ=aoow}w̘1:V K~疖/_/^x_!ocǎ%o޼Y\\ADDDġC4HNt9%I.TvX'$ ϝ;ݼO/X\]]}=@@A{,y+P=wG}t u%q~^}_JAJJJRRңGOފBySrݻwܹ e7u;C;wf޽qtt""<<͛?H%I rKb]quXه~x…?sɒ%mmmZ P|;򊓓ӿkkk¾ ???)^~I&kN0 IDAT/&Lkk~.\妤hM*<522o!fdd6nnnA|#$Iˡ2Iu4+577?eQiH'_طoߙ3g/]7ߤoQU鯿 ^rexxxg*+ EEE/>yd[[[UUՊ+w 20B:ڵ+--};1V u]v@e;kO>-HΟ?׿Z[[9:rMz]*7s`g޽{wӦM"uuu[l={I/P|Gg.//ђ%K̙sΝ~!44bȱcnݺ__/_V߿JP]wy\]]_SRRya:0mڴ[A u]ݠj|%%%_%Kܔ7wDEEKYYYr(^ؙbǏokk 8q… e27|d25O544kx>1gQP^^3cƌ~O 66?OMM]~=ݹ;z 5kֶmx 3U\\ܞ={v޽as;_^(-- N/`Н|p^)F$ARtBd2ւBP$Pmmm# ѣ EǏGGr|D'ѣ~LMMݾ}{pp0'/*((?; = nĉt'A`Tx<++ 5vǏH( FVqH( X,H2447n܈b0fff# Ǐ;vDB # ##o#j̘1&&&#~파/_yfggOO/_FUaa!)}7|ӯqܹ'-)^A`Xa0!!![nk@ l/))i̙ŗ3R 6tuu͜9?;#G(hȑ#Ǐ  t';~իGG~)ܜD@[ϟ?xNw"0F6lZ|9݉N#ҝ |!_fN;Ҝ9s̙Cwp C(/:Vhh(;y|>?77wr Vjjja?R (hf-[twwWbxʔ);:A ,ๆ fϞ]UU'Pwc0l6{ڴiǎ366^v-L&svvNMMmkk8\eژ{{HPYYY,:99_qw޼yͣ*A\.wǎo̎LPhbbVWWGT*MKKsqq";&&&xyy]rEISRRf͚\^^7!ͫ2y _,[XX8q `pu2?LĬYNF۬YmY,yn:Pxҥד}x<ѣGaUv믿X,VeeeooÇf/qtt,((hnn N/u}8˭山ʘk׮9sfII\.rJssB;wky<ޮ]!!! ,yfQQ122tR''yi^uk ̙3,֭[w##M]/7o&+++4(p8۷핕dn ҾALLL.^H>|CPd2ccce$B=i||i^u+4tӦMKm;< hٗ_TTHw.JJJX,ք $ɂ ?=~([D"Ѡ}||ܹs?#OOA36my`gg"kjjԩSF 2H$J"\]]DGGwtt Ņl1c&\522RAi|{ V /UQQq)SA gnn^XX쬮?EA>|pǎQQQqHcH}ruu533;D"@@ą g0o߶'BInj3y)p{zzV\tɓ .8 ݻw=z4..nٲet#/ВT*y&u7B!>Wp މ䩠P(r9,--+ /k2v rrr<=={͛7<**lܹsgee%yё) MLL(7HVV/ŲNNNyϞ=t999*rfr|~^^G&egg9;;i> ^z)66V,3%%e֬Y}SJiii...>>>YYY]]]ADGG:uVG1ˎ;9N߭Vy]TKDkkkbbו+W$ t履~"ϏD`$=x𠪪ƍ:H$^xA"( ggI&:uJP;7oV(ѱ9,,,::M]v̙%%%rʕ+R믿X,VeeeooÇv>v͛7ܻwoXNNN555S ;wky<ޮ]踸8b.[__/ccc[򺨛7$$d7o,**p8FFFԓR\MW=zT](O֭#?; _F/$aaa}x<^nniee{noׯJQQBp8dFP/VVVoªؗ2Hkk3224YWdd'|2lٲod2r:::9bSV.%qqq!ەzRMhre@CBE"L>PᮮfffϟfgΜinn2eJTTT_;;;W\) +**BBB x}6ٮ|Pse z{{t ŗ@>pD>|___X0 ݻwh8 ,,l۶m===W^miijׯ_/))244d٦:KRSSھo&Q{!E8uӧ%IBBdz"رc+**:.7nܜ9s:;;b}.uWÃ|̐CFFF^^^vvvA۵kƍԝ;w$ĉF #}||5ђ;;;Dx&/lmmF^ C(/ZJ7oޤ;k(hH $$$PGctRrZ̮n$ .\Hэ) ~]tgzSهEEE cjBPr&9 s/:sJرߟDEE544 gcjj:1|}}Y,urr2(ɲSSS(:l웪T*MKKsqqp yyy<<^v-loo'"''ӓlw޼yF;{GGGffP(411qssnUQ):::==ԩS&Ҳؘ ژ{{H4?MII5ksyyy4P.?/_;yǎ#bҥ}ݳcrrylllttʘ7o|ӧ'LPWWׯ_b*++{{{>|X]]M[N(^t)44t:7s^vڵK%H$^xA"( ggI&:uJP;7o::477)#}ڵ3g,))W\innrխ踸8K/믿/^422"y<ѣGԥrNNN555Z3w薗תU^u>y1c,[p`K:880/^ĉ:0vSSS777 zzz;{nWWW;;|BƾyKu`yyyVVVK,!Ddg~q}}*D2Օ<6mZUUUGGK ?cqqoA744ܽ{wƌʀ䁝"H*z{{=ꁃH')gk _XUU駟TΕ+W Š=sLss)Sx慅!J9|H$"O/\ 4\E@@@qqqqqP(tqqH$999ӧO744d5N5dkk{}WR ƌ3p (vTcjjZ[[aׯtuulSSS LfDDDlllEEEoouVرc+***|}}b~`0wޭ|hPaaa۶m+--zjKK泓]@;qDwwy!e&( ={,]{+WG&%$$L8ŋ#ۓ"""X,E+==6lYf022򲴴#" ѣGoRRRVXuV33H{ICYz x<ޛo[o)ۣ]faaB1\SZ3tw/d0t'#I*VWW߼yD@"@@w"P|Эov=݉=P|Э .ouYYY,:99zjU6ܹ"+r!;vp8QQQ n𘘘ژ{{HRz^Poooe ccǏˡ#33S( N(@ t'4'bǎt'p8&M*,,lllxVjll?~|ggBXnP(tRSSShh5plll ݻzjr,EL''ϝ;ڵk<o׮]d{ttt\\Ū}auu5*;Mrr<666::"@}P=:h)ic{$ ɬ#z"##vڙ3g+W477֬YC޽{Ntŗр ٲe y_vvvEEErdc]]moo&c>>(:{ IDATJ ܹC3>>~`]]]&&&/^$O>+?>##M٨njU6*T(p8۷o'+++(nŗ)ick…,맟~CwwEiiiItEF(<nyxxNNNl6[y*E"D"Y`ٳ?~\__~}&O\^^Ns`"H&ӦMX.((˳Zd 䋺UvV٨yVSN%,,,ZZZr sʔŊ=y򤙙٬Y.Riߧ(9_FB bQOgnnN>[DJGUUUA[[[CCÌ3c3f`>ohh( .###Ϝ9;":@;wnѢEsΥ;xj rKKˢ"IB!ˇhL&sK u);_t555t'4xڵkLf{{;A999d{͛gnn@6ܹ< &&&nnnuuu$++חbY[['''~)ÇaiiYVVFZUUellLsܔYf9;;GFFRd%ɲSSSF+//Ҟ={8srrTn/ݿPPnkkۿ?yyyN=X ^zXXrRiZZOVVVWWmY|||UUҥKNtCyf >S7n H^xDP('Mt)B;l޼YPp8GGǂ氰hr{vv6yvڙ3g+W477S K䯿bX>9:::..NyK/ŋcTSSCxG*GjݺuBҥKMMMׯWcǎݼyɓ'O0aB]]>gҤI>>><oժUǏ줞zбƦ޽{Wz9sνvZyy9۵kmg/ 3APxݻɿ+EEE UB/XYYʺIwwEiii :~6uyj^|ﻺ~ŗYrKK˗/uuu' lp8[l!KVήzjdlJwb9]]]&&&/^$O>;_tH(oP( ohh{3ӦM#ZZZr'4H$JF.((?s~Gʇ@=v`V555d>?p8JJJ.\. Uv lT,D"off6yr''.G$d2WWWEGGwtt\<{ (..... ...$''g醆 wuu533;0 >>}߀;$ZLϩSN>-Hx<1ǎX___QQwPVO)_tΎ GGHIIYb֭["##% L&KHH8qŋ7իWO0on׮] bQRbϞ=K.޼yʕ+Mxgƍ{qqqa2'N:fzzŋ7lfmO-vpRRR>Sͻ,)..裏vAw.]-( /h"|Xjx@]B@P|ВT*y&݉^C@K࣏>b,F -((٘555#S@pȑщ?\z~`kGQ(rd5>>N&9$ O<`ff<**lӧOSׇK?@f233[diݻ֭[d)_d0޼w-I0 @\Bļy;666'OpR%^V덂 >Ǎ7Ass=MLLȿۻkllyyypp~pBBBh:'|AG"f͚ե";q k׮QdggSwGy9bذaVVV6lx1US\]>LaVd0)%% ///:>>>ͻ~vvW_}E={v[[@ X~3:::EN皚n|%uuuJJJdu֭\O@p?~M~w`Æ NNNK,ٸq#YTQQvҥ!CPC{yyUTTdffr8555Iᘘܾ}~ӝpԵ79|x Y!!!'O]0_v~ӧ\zUOO9%%EYYߜ֯_O^;;;RSScdd&rપӧO՝9sؘs ,,,LDHHp<Gu6lؖ-[ݶm[{{{YY7|S[[;~]q>|m-}0򣭭ŋ;w4556mچ iGDD*))utt?ٵkn&,l6ښ mm $$$ښG}.]h"]]ݏ?Ay&))i߾}VVVv:{@ +)))xxxҒsN###'''  OOO i 9eq Frl/uܹ 055ݹs̙3'M\[[KK>;;[{݅DgGGG#07o w'n| '"nY#]\\|||֯_Ң7%%%ZUUUAAj*hCzҥK7o4ie@@A:'oxI_ bXիW6wbL~zꮸ>~icccll,BQQQssqʔ)MMM"+9sСCd[>/XHZZZiiiɣF } DpW4-z0$_d+???66wިR5O8qرBmmm0,,,11qW^ ܿA__?##灁֭#E9x𠙙+++gXM$񱱱%%%ZZZ}7nܷoߋ/߿`J8epQΞ=ۥfUUUyyŋ ϒIfTSS($C:88lذĉ555mkk;~xIzxxxXXX۩s~m(((سg ***yyy\.I LLL+++ pvvNOO㩭...---YYY +V V)/_\7>pZZZVX䔛[]]M>ENbUUUŝ=~q")Liټw Ҟ={\.0# k{Ɨd"Bٽ{mQȼj ɏ/4bbb/]DV'55ѣ&&&NNNf(***~g___ |}}O(*dhhc^ZAAرc=֜={65}<mp^]vuu /++=x%K[ ATVV:tHPQQ?~7o޽ɓC{f~۳쒒eesFGG ěDfE/n !u0S׿Ŕ58<ٳgL2 @ڙfll-{dĉ䅶6A.n|I&B,MMM}Qt(G&zD~3f 222BCCSSSǎK_SCC??&OIw}glllggGOEEŵk_f `USSS{>FQQ1222""BHYYYC @!fP %iӦO>,ٳg¨T<˗/߱cʕ+EfFabbꖟ_ffiӌBIiggGI֎ZtԩSnݺb 7|>yŋ/[*rJZZM"I4iS o!  ~ێgaaaA޽[  :4??uq[[[]WPPikk1bĽ{wp7477Get~jKD[N0{NfY]-JRRR&&&…:::Tܹs7o,\޽{C%FEEK.켽}ԨQ|X>&۴iŋgϞ%%;ٹs'Y>cƌ./cȑ?mYmG*. 8|0ӁL`KAHw! $4 P+++}}} 7ދONH3A,X 55? #IvK8 %22(]jX#G{{{ggg}111fsWW+Vz>?ܲeKQQQccciimF5g=_t.''{ܹz~ppXlO?t?3##c߾}K.4|W]D/^ܺugccQA@C⺥@ Я=@DhhhLL̤ITUUN$xOf;M$"Q0d ww>HK_H,?vDĜ9s_z9wܚ>!ѣC;wt=bĈE577JJJ"{o===FHOddpYYY"q|KK˯zʕ_|EjSLqqq믿 wޭ4nܸRᇭ$ AuKL<5f߾}@>Aߺrʂ ϟWV;d۶mwM>$hww~ z/55Sq㏏9ra#`@.m&"((h͌drHȚkEzA+++1r2}9 $_dm=f^`Ù/455mllvHiLG;_2KK3gP\S[y,X0j(mmm''7oeر"o555$իS}r}}UVeggwk˖-, ھ}AoTNZZX_- @ M KX9$$d@@?N>]]]=%%իzzz)))ʯ~z򺸸##@55m۶ׯwtt^* ׿y󦢢p} ,,,9lذ-[H4{9e|W|>?::>11,755ݹs̙3'M\[[K777,vwkSQQq5YH$A^[{?eydeeqܐ l?> ?biiRTTDr:ŋ/ʦOnaa1|˗/WSG*((---+VprrͭJ(**vvvv>uvƌZZZ.]:~)&E Exi̘1&&&Ν.LKK133EIIC+jjj:::|AC 2GT9Y̙3 :::N8QSSCn &oO I-" [{?e|X21x`WW𲲲܃.YP+++}}}%%%__gϞu? ׯ_|{{{6]RR"uV }$"%%%Qtv͚5yyy˗/n%"##ڥ&:rHzzwvvvaa,n:ϟ?wuu]bOH7͛7w.>UVtR]]]NN+$66ܹsm_}Uttׯ{VdޏoBCC zQHGGGM6}'ԭИI&RDDDFDDhjjuyЃtҩSnݺuŊ-kkk{yyIHW\IKKʕ+߿pBmmmVROJǎ3gNvvW<==Ν[SS?kRRңG::!Hgeeugdee}|F@o)S\\\/IYcI,ѣGtg tok׮]}M5 ww~ outt8qBw}R=JMM /:4f̘y1@Դ166f:kL|X7n܈3>s;vm[=z_q|SVTT8p`+ǍpB#\H!Ə*][sss522ZvtmwĈNNNҵz AҵёzQeXRmll[#E͖zGJ׶Nq}ǎISSS\\ܞ={Ù/2 ! /_xr ]rlt א|!$_dnnn( CHօ ә Ӂ\cq/"""?X@NUWW?{lL}g0lѣGf: }*ȑ#mooollwWIII]]]]gH􇜜77ϟ]yzz$_JKK#'Mݻ[niK|),,ӓ&қK.iK|q㆗M۳gϊ?K6##C.\mjjm/^rJqw.\ nFF,y>,nVVVHHg޻w7n܈wwƌyyywwʔ)7owرc$O.\rŵ ɗ0uԊ߿1nܸ r8jFFF4L8122R.]u1~Pqwi]V]kkk[dvvv4mG$.Ͷ 444lllݥB:::4m455ݥBT3YBϤHMۦ qwi6y<4m~'qwl6Mڔqw;;;i>z(66V])E}vSSSS\\ܞ={OԤIc汲ڜqwN*no_~Okc x ˜}? b:kjj8#!$|  2dӁ@C@Q8w`:K/_xLr )]~n޼@@! [/^ x"Ӂ3|-׿/.{9@aUUU<L2 ! % t@@b:Kf*((`: w CH/2 ]Zp Ӂ@{eyy^x4|-d^ׯ/Z(--X݆ lx?oR/2 ! CHHICC:zxf͚UPPt | }ǎdJOOpӁ3|- ݙdgH˗xҘ1cƌt + _nڴ@@! CH/2 ! % UR9sfAAQC@\]]uttǎ䝥3g+SSӴ>J۷ot9rO:?cedd̞=?ϝ;fs8 .| 8::L.ڵk\.Ӂ3| vROD~V/Ou͝;ٳgW~V^ppΝ; "/|~tt}bbbkk+AAAA%%%AAA+Wb޽+ę3gjjjڵ* C0**lӧOSMMM###g͚eff|I33744슋ihjjzkii644=z299#nIڊ\.裏LB3tЦ&qK")qdff[ZZjjjf͚;S-… d:kHȅ֡C?nkkK^L|쭾^UU5>>Alݺ_Gսʕ+wMէ~ѹsT__Y]]*{۶mÇɏF- OD ,_|ӦMqȐ!9994 M,922uVcVUU O3 wܹ`qt #PTTleeE~2eSSZgΜ9tPNN޴88o޼ɓ'S=O֊HҖf f//Ȕ;;;{\2\dM'V" O8QAAaƌ?;wF cƌ$\TQQ)**"߇rɬbgg'U3''' ==ĄCggggg/_ٳϯD\͖+VDFFFGG5k|ꮂyaaa1|˗/uib ?GF O 3fhii]tOݿ)F򺽽]QQ ۷1saÆٳG\0??cѽobU{ٳA(++ϝ;7::VV)E4kݚ5k"""/_އ#nE~S4}k6z;vTWWﯦC2~ ~ᇽo!"/bbb=<<6m':{l}}}XXΣ]5771$??ȑ#4jkkGEE-]tԩ[n]bvvv7o$˿uuɓ'/^xٲeXQ$!n [r.\ݷ#n}Srttu5_|;i$77M6:::?A;882>L0%''{{{/]4))X C__ĉk 汱=޺~'|R\\bIOOpႋY600믛6m9sfTTӱx:th̘1c:3hР;v|L"vϙǏT(,,-((跐̜9轈.{m޼xHESSԯrKN6(zԒ_|)öm…G.LIIQPP WpBh €ݻwz;loooll hllloo_߉od͛7A>|X[[{L ɗ@2OASEEEYYoР>@MMz<O9s愄XA}ׯC%%%uu> uuu%%>]fԗg!iӦu/;v˵mmm?  /#\u5ky-Hpi Ӂ\C_~u tuuCCC׮] {bƌLG GAWJKK=<< @p8t voooooo>C6=vXc/Rq f:kH˗Ο?t $_d(666??@@~}nnnL23_6f̘1c0 v/Rb666xcGR1cFAAQB@|xqSNשvrr5jԢE'*$ ]ݾ}[]]OgBBB,--;vLGG'33b4@ѡ$$Jvւ ;Fyѣruumhh8zerr2Yɓfffohhmw{uÞ={9Ç x񢑑 ݻMLL9s]z<22r֬YfffK,:u*OnnzcccPjmm]ZZJ?슋i* w IDAT <S vȖUcff;k֬)S\z577wժU-|b}}= 33CGGΝ;daii~gg$mEhccsIj;w׷n5jyyf򺵵uСǏv鳾^UU5>>*<$$h"r"---׮]j{{ׅfT555M9WWWǎ䂭-ykbbE}-**sss3444443gNcccYY$m%}ĉ䅶'O:::T(**jnnL2IVZZZrrQ<==|#˕TQQ)**"?q\55.՜?~<~x??#WPPںdee%$$X)VVV999…ҭ%Ū"?)$_JJJϞ=;{l0x`WW𲲲܃.YOăZ[[UTTl[Es޽+W^AQQ?~7o޽VFYYyܹ---Ozez !""7""BSS͛@LLǦMCj\FDsssXX؈#LLL9effN6Hd˗رCCCcʕ_~}7'O^xej)(l6fرLr%`Η߳X,___t C] 6oH<5-$_d+##ܹs[xq_YY25-y򤃃$o޽{oݺEgGGGG^sE##Ǐ󣣣[[[w8sLMMM]]]vG.BhŅ!r=ν><<\OOήKvȅ}ĘΚ5kʔ)W^]jբEv޽>|m_px˖-qqq}:AAA)))/^ O;߸qիW\Wr,a4atE_n][[͛7?H;_ҥKϟ?f̘e˖ݻw1c vƍ7o$%%۷`׮]gϞdtq)((,[+]xqΝӦM۰aCm5,l6ښ q,P0zE---;w422rrrdlc25$_ &<%/tuuMLLEEEuuunnnsill,++$O8~IGGG EEEVVV)S455 JKKKNN5j'hEVY(y=΢۷o sss%Y+a`:kH;ޛN,,,~ʿ|WAREErԺTsvvNOO#^Y\ۆ!X,VUUg  [k׮d:kH d۷?::>11{:::7o$ 3gݵkW35kYvv<,WTTa...O슋{,qj2446lӁl@uV:gر/_Xvmee3gTUU[ZZ  ,YqFvgccsISSӲ`Tyݿ?;;⫯ȑ#oܸA^竩 ϟkjj޺u˗<@3#۷or%%%UTT]tiȐ!d[EEEff&!KS`@B@$Ll۶>|b}}= 33CGGΝ;daii~gg$mE%sN֭[F"/C'??~ֶ{"/ TMr [rݻAss:5JDD9_qL $ lmm ]]]---cmmmQQQ]]UV'NH^hkk?y򤣣CQ(**jnn"?N2߿IMMε88o޼ɓ'h}reee%&&555~ɉ r9Yg䅸rRSg,,,N>,Cd*XZZ\n̋g*wvvNOOfЛhvZZZVX䔛[]]%dXUUUd5lq^N MCC#OJwopppnnngggΞ=۟ <5<<,77K,!o%%%Ǔ ,HMMmoo?deehiilYϨo;5Ϸg%%%Թs΍niiWRvv6ݰaӁ\CiggGT8::zxxlڴ)((O>!˯\F^ 2>" Fabbȑ~QvtҩSnݺuŊԭoF]]}ɋ/^lY~b{@F"##¶nJ ˗]\\,Xt, p.l͛7OKKҒ@HȖ%Z{{.AAA7of$r L__(`666cǎe:k8@#y,X0j(mmm'''e=---,QƎ!VSS!ݻahhnnn_}. ~Z褥ф-2.\ Yxf8뮢bӦM'NTSS355 AN2VΦB\|bq.\gƢ^>Zӌ(yDO5 ?N>]]]=%%իzzz)))ʯ~z򺸸##@555C\v嶷UUU~۷$0$$Dx8C6l˖-]*ӄ-RRG :}t]]ݙ3g%lm۶7o***9}1..n„ ĭs =F+nhqo";i8@@d$!!AIIi .TWW' APV2117ڵk.^H 6̙3?ehիSSS===i¦A7 %pW^]tƍ&M"dhhhe˖;wXXXyњO^v-88… Tqذ;]D+nh:%@na |*//_xpYRR"IAAA555)))3>RN,ˮBv:tÆ N8QSS#EMMMC 155G?~ wwCJҿ {L;=|8B˗/o|CM)v':Uiiii-MIL&kkk{KKK޽KwPj((333 5J3f ܨl%_Z'$$x]P?~H%#G$=ztrrr 988oO *.9SNt*;;J["e⳦x2r ^f A@XΝ d?f ^1''֖b`EE޽{=<<033k/ZZZ&166{w…6662& Q.diӦNa]@t&&&Cahh陖v<"-_> 9S jذa=4u$Q\gmeeE b]~=%%H c߾}gΜϿvZpp'(;3//KX`0))).\>uTcccIIɲe˄72zJt3ubvܙ,%>w!M?7nXVVRYY͞=W'Lցϟz*v{{ZiK7?޽{_w@$^Olٳg ҙ={v~~~SSϜ9s>|xy???!޽{ׯKYRR"֬Yclls„ 񢓼xBlX<SL?˗/=E}Իݩ7669r…mmm'NPUUmM6t?1GsϙbJ[Ǐ^E?k''yѥpJxPr/--mhh;(oo=t@۱cGTTTddNwǮ-ڽ{7Yz?Λ7on>|xHHHtt)ݹ` ++?P)J@b?KDxx h#JCfV}IKJJ`X֭#,:tw/N!2d ?ReĊ+v%,߿g۶mz};g[[[Ћ/Yu}5;So>>|h33Z _ۛpB҇p7x_}աCl"˯K =`—_~cS!C0̾SMMmĈ};Na444j6.[ZZ*ѣGĄZ0XsѱlڴPUU TUU _L!}S566޽{dZZZN>{KK-[,Y Ųj*@ߺrʼy~ȂѷCCCDnP|x]? A< cc㨨>e ks.@bhhXZZ H LQy (i%%%teK;`3_… aaaYYYtzXׯ_OII)**;(y9555޹sG! `l_/f988 _7h",jjj8… e:{QyyBAiرNNNzzzt@@NW\ak֬ը?]|YEEe ʦ"##]\\v>~ԩS};@ - \(+bnnq۷o_~ cǎyxx޽@i}X,ɜ?ɓ'SSSgΜkllm6I+**̓'Ơ7O__?88ݻ2N%fǎҲI\W&&&ٹvtt?;bC$n_^M||m~~-744Ǝ=zԩ7nܐ}zzz^^^ﷱqppȠ>RYJ<"-{SLF*((nmm@vIG}Dw{?#AsΕ}MAKKKLLV{{@ Xv-ùvZMMߺuNNNǎ#IOO<}Vee@ x왮nqq1Eii)$[K5nܸG>h~ᵴlbZtܹsoݺooosN=$$dÆ K[B^$!¢z˾ ,pbYZZ={nnn|թ2Vnjjj7o%8-_ AL⋆ƨQ o .CCׯ}*++MLL|@`AGTPPACC#G8IKtt4y/>l־z*䵴⋴%$E 䵴-ijj _>c/TQQihh _^pH{KqD[˖-[~@ hii*((vЯBCCsssGLDYYY}} gϞRUU%:O^^^ppN:u5 rrr222|||Ȳw IDATȲD滛uuu=laJJJ,CDRΐ$|N-7ّ\]]rvv&/-,,V566>RvBCC?233MMMNJqWT0P1L'''KK^044444LKK>>11dr\Yf͚5ŋypppEEIĨ|]84ݳQࠦVVVf (**br,!1tP-3!/=z#>"1cӧ>"_T- iӦwa„ ͛UUU""" |ӧO:KrܘLfEEoPSSc2qvv&B^Ʃ$bÇ{yyVUU&''ɷDP-1bΜ99^Qhhh\\\QQѲe b͞=>>>teiӦ8]]ݩS^|{g} /^IĄܺuח",SI$-źIIIׯ_z|KH$ 対JSSw]dIGe!ݺuw100;* C НIWW7|oӝM;_ {3fܹswf0tgxkGrjjjs玶Y@ykGr*((`t @(2PrppHKKWlllrrr[^^c|zxwww[[|9NږElݺu̙&M8vT'OK"zD^|PRR".*Y=AB_|r 6l@wP ՝OҪ$[a7FYfƌyyy]]]7nx@ `Xƍy葿HHyڵڵk555~~~֭#}}},XP]]}=XKΝ;֭[;wqT2гgtuu|/JKK)v';FAeccSUU!܅SLeaaQ^^.I@EXcVTTx>ٙR%="F믿^*$:Pƥ@6mrrr K@M H}v"q300tXM^/FFFd{ee okkX|־z*¿K"-"Р~ȑFaI,Q R ںu+y]\\,q"##^}bSX򺥥e>#zb_ٓ"oA8q @ ?~٩S]&2.;mڴLB^uuu/X|---UUUvvvdWWÔ9:: *))immq`TҶFAOO/'''##LJI,Q N8000BrqqЄɋ?cƸqoP,(5P|'큁W o|aOїF9::ȲٳgX,gqppPSS+++#_l ! f͚u̙GY[[SNbgiB2nPS :T(Ybb ɋϟWUURX*iI311y)you( /庹1̊ [SH6JEEO>tҫWn޼YWW'miUUՀB>SA#F3gNbbb{{{mmPE>|WlllUUUaaarr?۷outt1LI,Q|SrtҶݙ3grrrK 2(ȩΝ;2700HHHXxiӢoܺuW%Ũe˖mٲEGG'((b8]]ݩS 櫯tqqyw,Y"qX$OOOooׇ^!y Bmmm111#Gz}(v'DɲA1,GGH@DEE%%%M4I]]=;;>ޛ2e0RAAvkkXԄd2ϟIa{CCCllѣNzƍEϗԙ3go۶`3_ծ]lmmݧLrܹ…ÇwޭaÆݻw86<|Yndd0Ʋe֯_/ZZZ cm߾] ijj ihhP--mw Gill.*`?Aĉ' ȩf#gggBOOO~gniiql[[#8eʔ\\\BCC?233MMMN=g^^^ppN:u5 Օ.ddd!` B@~駰L`oor,Kjjjeeeˢ"6->СC=g̘wÇt=00 r .ŖݬYΜ9#kk`FRRR j@@@DDDaa!iVVcUUXX'shhh\\\QQѲe˺rܘLfEE#F3gNbbb{{{mmAe۷:::LFj۶m%%%sΥ;(/%... ..NWWwԩ/_}lRR)t֭wy /6mZttt``𭯾JSSw]dI쮭-&&fȑW^ݷoFjرNNN ٽ{#""}s̙={sk]]]&&&|oMwAwI[[ʊ ػw1c~Bwjԩ%%%tÇ Y?_8\.o|@P|P\.O>} _;ٓ4ys) /p8`gg'ݺ|`m޼Ν;0D?υe__͛7O4\ ϟ3gٳϝ;GwP^=~_ѣG;::w0Xw_677:bĈ~駟~;=zT%rss?CΝ;/o쯿'3f|'vځ;y䰰0VVV7b-ZH=zrcaa!Vƪjjj7okkkɿL:x^|)r%ɓ'r[__/VBɔ{?#%%E>>>r_n޼-r_/^,r_|}}^7++K?]ғŋȖ)` @8v֭[>| !C;7o5`ذar/1w{7VCCCug̘qƎ9Ru'O,/cǎ{]kk먨(J{,F'ةSʽ|c UUU]]]ƾm/\.W<Ou0Xၻ>Y2d϶m۬SIIIdd$ޱc2lذשc P~rJ177?p@yy?AK,;%_7a„7n,^XǸrw+///=="m0a„Iw(oRPP@wP^111l6[% JKKܹCwϟ9? P|P _B@P|A@ `0t4eʔSC@8p`ĉtzX'NDMg(/ JKKܹCwPj(ȩfZ P|P _?5V\rJS p XyyyaaatdeeEwPj @@w,))iڵk֬ILL; (j.;n8]]]@3_h6n8#kG @((54S@,$>~8y`kjj*--sA@=<OΑ... #Whb6j*RCE)pD;;;77Ԏ +**̓~g27o>A666[n9sI"""jkkcǎyxx޽Q?>>6???!!b1svv&׮]p]VSSn:a rezzzuuuggӧ*++%trr:vXIlll"""BBBb( q8mwk֬1cF^^^WW׍7=z$Q<{LWWx񢴴€HĚ5k}… Ap8RC~W^%_>|XX#X|׿b\nogcXuKK>|ehhxuĄ###%}v!$[n%b٨ q8g``p%A]]ȑ#Q ov|@CdB7@eeemmm)Sjhhtwނ9f#544ƍoaaQ__` ---UUU, ѧ奦677s8ĉv.gVVVF)"b;rӦMQٳgժUs΍rqq}](&N(o <~jjjeeeˢ"6MV(TTT|gAAAXXw}gaa!lAϟ?ruu?{p\J^r8š___@@%R$Y,؋ӊrtt)((5k֙3g=zdmmܫuvNNNVVVt UUXXGL> /Zh޽nnnFę3grrr}}f.d2+**222o=g@)"TTT?K.z͛uuu۷:::Lfڹ۷ P|Q IIIׯ_z5r-__߬ouIJJJ4izvv6;u˗/w !!aӦM %R$Y ؋ӊ_lٖ-[ttt:H<#GZXX\zU ʏ! Q^hAz53- ;_v4vKxx h:텖0ә@׎Crr5kÓ}JKKښ,#9UV/uŰ4=P|P=%%%?? lO?DwP_Enn[o%|?ϙ3dX?f?~\ѫ888cFl#szϟWt[ե\. ((_}yWX1gΜO9sĤDFFBrc<Osz[n;_… \oMloo𡻻a,--'O,955u̙۶m#ڎ;akk{FwQ\\L^sD;;;77Ԏ?dXwޕ#3WTT&144d07oޤ8%cȼu֙3gN4)""lllmmmX,ɜ?ɓ'>bQ{w.^HqWMGtxx!!!-g϶|XgϞ/^k׮p8׮][nfprr:vytҹs޺u+??~Νd;ŲY[zNHy,ԙǎ[QQ>3ggg#[XX/ӫ;;;O>UYY)q#Juz' )99 իWAt/J͛,&&3 `̙555Aכ|`tttTTlX IDATT4773LW^ڵt۶mYYY@bg:;;ᇭ[L>}ڵw.]jee5t%K={Vvg...$;;[UUűPhѢǫ]ƍNcooO^/^xرΦH$geeE}'_½{/_ٳ'99O? 1cݻwQFddd_u)++_`ٳ[ZZ$v(ё|9eʔVĉ ۡALZZ޽{Ϝ9CqDBy1nܸ|i'Fv}zK^^^ppN:u5JrzcƌwuN7((33:㩨tvvyЙ3g~dYf9sѣGA={_\.ŒYZZYYfkhhȾTTT|gAAAXXw}gaaA='Pg.,,$/?^UUJqbA :hoo p8555»c6Tca-hK `0u0a;wk&|-[߬ и{9AoPSSc2ADDDOfeeI,Qýbcc /ʎbgggq3AܿѢE{uss 6'Pg>sLNNΓ'OMLLf.d2+**D#:= ܹ3a„^- Rϧ~p&M`GEEyzzVTTČ9ի#N:AH,mQIIIׯ_zuow$m[nfee544 3ftX3GEE%%%M4I]]]'& !!aӦM %:= ^EAq<==8{^sssii1_IJJZv5k%vvvv)))M 544-Z')K.^ƍwZTWW>|t~?s8?Y``[xqfffFFFow(!Clٲ/;R}v_U^@ [lA.W; ( _ŋjkkͻٵkݹEO>v/?|!݉~*t5dȐ 5&&&ߧ;۷oA*E@S4ȬXbΝuuu;tPHHHtt)ݹ6/EEE]0o2_؊+Dou!K0/O 2NNNVVVtvζŋ}cm}5;#;|>?333''g\RRBw Pvim߾'x---}8!A---<'|cz? >Æ ۲e͛?5 0}嗏?;2d9Fѷs/j6LCCfr=ztLLLhhh_Jmڴ'TUU TUU _L!}\@>}zFKK-[,Y_;c===g̘q>/P]]rǍKw{ ]]]333'M \UUemmMwƍGwP 4@_tҥK066NLLw;ݡ@Q^fW\IwPj/GEE}_Peewhh(. @aX,\B@NZZZNNN#ٹ ?aWWW P|P <@P|P _\ZZZUUEwPj(ȩfX P|P _ŗgAwo(@@;AlǕj~:JKK͛gddd``p._LD{{;CKK\oJz'NаqFqY$Axxx߾}[NwooosssMMM;;/_l޼YƓ)]t*2ە+W srr/+**|}}-,,mllV\I`@@.]v~^722eί8ϟwuu!!ŋ%6:99;v~={&Nzvb{xxX[[ݹs{QFիW544/˦V^?f̘@@k.kkkmmy8qؽϷm 144lkk̙3gÆ gxx< /-C322UTT;oڴIB|>˫{IObSSGEE5*++l5j/=&x3}GNNNyyyt/tjhhXnݮ]?~֭y111w>w\AAAllfcǎd[GIIIӋWܦmmm߿Q LLLrss={jժ+VTUUI&(Ĭ\R_,eΔgggkk#G2G555wkXꓑ}S111<O,Ͻ{Ruuuii)˥;(/tb0L&sAz*==}׮]۶m##Yb~a֭666ӧO_vmFFݥKZYY :tɒ%G/^ҎB$b=}1cc@GG?,**zOcc·7nԩS Xtiuuŋ Dn+/B=P'#TTT⚚\t|n:@_`@C?kG ݬYΜ9#kk` Ϟ={/\.|jԄY-**bҞ۝ӧO~MM@SXXXSS+CQ ӑDҘ1c,,,{ƜCCC[[[UTTݻWx,7m)V"CB%cIBKKKX`266ҲV#) .\hcc#E6333 y(yyyjjjzzzL& UUՀB>S;Kl5|p//تd???T'̛7/;;=~-6Esqq1YXinnrnnnL&BJ"MQ)XOo߾3g_v-88ĉIII#FgϞyyy.]]BƟqƲʏ?hg>}t}}}AAN_z%CXiJJʅ O:XRRl22bPL6Eڹsgbbbss0_?eff677 2\ZZn,Q(Щ-&&fȑW^% 8]]ݩSH,mQIIIׯ_z5u1'' Ҳ_h{: u떁ABBŋM(.MQkGA̞=;??gΜ9><>>}]vv7YR; ~ꇹ\b?NLDxx hϔdJA@lmmk ӝ6J}%kG?5 0(iii999Y[[|.));(;@(Y҄/l|ZePZZ:o<###se XZZJ|WK<<<ᦦ˗//**k}h￟/ƍ ٳgwANyfC^rEbhhCq]||˗//*ׯ8qMTT \( 6922EyhqyWWWMMs΍=z֬Y#Fh Yf y}ƍYf5xرcWZѫ%>cwҥ˗ ###EbX/_"ڟ ΣG|(㎔Psssii)/iP|Sgg?uVӧ]6##CEƏv7n־z*==}׮]۶m#Y ۓ׋/;v󽽽_'ҥKd#tuu}}}>LDkkkFFFHHܛھ}{$YSSCh# HJJ8}>,gCCCׯݻwȐ܄a\8쯧+W >l8x`Ñ;$A˗/:tg#˲,ggg߿‚ I;"%TZZfJ _N8!ݲ6GGG)SJJJOx#/444ƍ_VVV__`sssssٳg[򂃃Ǐoffvԩk׮QN2qDzǏxLSSөS tuuM$QWWiffF]/njC<777***;;|x4,Z^^ɓܷ~[p#чݒGСCƍ#pҥ/^ޅ! PQQkjj/Ȳ,|EEE?vqqill$I;" źuVJJʯ*]555#Kl:ϫ\]]Ϟ={/\.W8ҡC큁Wx mM;c ==ӧO>|X96%#:1cXXX|999߻w~eYBCCpذabc#ccca;3--ȑ#uuu_!oa \ɬ-O8;;wP'(==]ӆ-[Ltܛ)XOo߾3g_v-88ĉIII#FgϞyyy.]]|K^z%:b„ >ͧO/(( 744Pې;wLLLlnn-%%… ާNjll,))Yl}Qnܸ?622={G0XX{Py(?B$( Kq;?MڦU~{l1mM żekƌ%(2l$~|x~w>}Nt::6{鸺UQQQppp6mƌSVV_XZZ?EO qƙ3gΘ1>׉c F fl[nU]I&33sƌ27h֯_߱c#F:`D2,##)hx=ܖ-[$<% 1o]Eu^ IDAT6 J ,۷9t萏T*MNNڷo?tf͚- `Μ9 Z"??SNfͲׯ_߹s۷wչsg PYYyfAt7ayݵ vUUUǎVVLt ?q℅j{S>3vZ{ϕ7oܭ[7js9~m'O.((6N@}Q|+,,MJJ{xxXb={TXVV}v??ݻ]H>66vȐ!ݻwOKK[fQv)Ύpqq aէO3ɪUï\9 GGG RTV_SRR흜V\YkB=mZ P(f͚5jԨ={;11qĉs)//qƖⶕUƍ5k6i$WW׸Z/qof޼y={1c :a bӦM_ ="~K$ Ν;/Z_t wqq?KΟ?JM:{ ?8z諯\sNeoo?i$GGoVt0իWYfݺuC[nݸqٳgƎ+\hQRRڵkhe͛7_x9555k̙3sssAXn]׭[wڵDl۶-!!!;;e˖ 2;w}ݻw/^8rZ9Ӣumݫyyy=;;[EDD'''[XXڠE~~~o֭[Bӵkm۶sJnٲsjwhm6mmZ{k֬٫eA[hzVsRRRcǎ?c (өhѢř3gď[lӧ)n4m4??gg皚 jJXX/n{yy_Rd۷o3Ɋ+ӧOkNm۶=~}kkk5ݹsj۶mEEE3Ӣݻ)--Uky1A~W՝ V>|y4sŵl˵B[գjI$tBﻺP3ɐ!C7oo;vcȐ!m۶>|ulߤI{{.QLmŊYYY;v|a׮]O8vZLV 2DWD矫vdIs 2Dĝ/f(wvvVjD"R_~eر...R366i[P[mOVVVYYY^ďP7;wu_~eذa%%% rȑnݺuagϞ}$?p֭G{˖-SRRӮ] mO'3Ӣdoo\s:J:tAu]Xǎ;WjjjTTԾ}jcggo:u͛} ޹s 0qīW=zTwӦM;~ΖGjj/Xg۫!v>37A[j6jG9+,ǎ[| .U6662W(/XgG򪪪?6m:w\VVC 0 n޼OʩSrɓ'ōwxyynVXX\qFyyyhhh@@ɓ'oܸ1n8B!o:9;;_=:t~]k&s EiƌvٳgZˎ;~嗪;SRRwcDׯsAhݺ%K*++ՊJIsR{aӦMQtvttlҤ=wڵm6WҤI}fRGoS{SL1`N4i2hРW^yEuZ?]zg{lAt4>`_z(TV($&&ZZZΙ3祗^Rd\aQyrZ?޳gOAL5}􀀀ZӪU]vQi;$~T˩#'WӦMGf͚w[^S=p@JJʀ.]ګW/gggABBB"##/_޷o;w;vlܸqjfggٳgС>}>}W_mu'ݻĢȑ#7z?S3t͛7}||7o޲eK[[[̈́zRi]lf-[H$6lx嗃̙Ӽyݻw'%%5kLۈѣGN8Q M6\裏^.]o6lh׮ݰajo}ӧ۴i#IMM={;wZj-ÇUc4iDKS=cҤIK.vNfR[o]tQ{mVsP(+++322%&yІU<b^M0ϵoܸqg$Cz`->>رs΍={PTTT|||Ϟ=' ߿J888Yf„  XpahhД)S.^VGZ})))3lllGMYY٢Eڴiz̙ 6h& L 0lذ >Թ3xgffjZ +///33S|Ӈw͔iz|^x>,00ܹs}ф uF9vذ0??˗/͜9G! o߾]kz-B <7?]f&c&7Og 2:p2Zr|Ϟ=gΜ}], B1g''ɓ'ѣW^ -d-@qy{<`_|QLh7|7V-1bĈ#j=ԣG<k ;O/ݻk׮L&1bD^M ӻyU6oD2~K6l奠WmgDDļy*@Sy+**e={6Xdcd]v5u`(<Uofyle`<{0u `(İs?cع ?iعgϞݸqa{ƌbع[PPnع۷8pa^zհs\]] ;԰s---Ra6Amܸ[n4(QFݺu0aBnnϺ&M ())1u`(X9w\pp ɯC={V.O>AYb.zk׮ .L0e\a]ңGݻw:h0_(_hۦ5Rĝ/械0..7))B숈oֿ7A<<{[l9z袢>{Ϟ=z0ĉGqŴ4//>@/BeeezswwԩSvvvUU{קOq[op7n?Vwuu=wqW^olllrrrj )ɶo^g)ShG}۶mK/$W_}e YhѢř3gď[lQj-,_ݽGFF%%%M6ϯvtt<?''ٹFl`ZRY|ѝdŊӧ۵kmr1jEwճ/^,n'w?>s֖$u5i$S3uF/f!++W^~M2Z]֯_nggg@o~kkΝ;޾}_VPRR+o߾GIJJ:uTiiiqqq@@;88ܺu¢Gɬ#n899lRQWRR#JyGf5_̂wͳďNbE¢F2==}ƌ]]] M'OwjݺPƍ塡'OqƸq xH-Igpzvڜ;wN.O:AYb6m:zܓ'O[n>}>}Z,m\v-00p&RRR㏨^z9;;[ZZDFF9gB@S'13j֭'O4i.ɉ' {qSg;_= 47oI< mc1I!Je2:Q|y9;;_vM.]2ZGm,Ob! 0u `(q 8pƍ8b]#b]#bFRSS_x~ᶶ_} y{{ڵKQ.ر1_=9Q6?zzbF/_;5553g>|yggg^ZPTUUx}5jGd=EƘz})+Vh:dff:0k_Ç _|Ecyyy~~!C4iֻwoƅqqqIII~+V }tIVZ~m~sttH$?={IIIwrrZrS4~(9yT*-))QĀ-Z[5})Kn:zi4)S:0o )S6l͛75O8qĈ/^LKK:uήz#뭷Ξ={ƍǿΝ?޽ի|󍍍MNN_2lu&ͭ>cQj^xRd꘽555n߾mii3giɜ9s tȑ .o:פh;Qs~BCC,X{Z ĉ :0k_СCccc.\vuBtرEgΜ[nٲEYdqwwKJJ6m_]]xyqNNsMM^ۯaaa;Ɋ+ӧOk׮֫ kĿ阽;wXYYm۶H^)3fŋ EyyѣG椪رcytI:NԜ+V9R;zbbb$ɻᆱM^^^|֭{w tʕǏm*++W^b~edd=== kkΝ;eeeݾ}_vqqqqq6lXIIInnLu#Gw֭C?{qNϋnݪojvڵ~H{ZlgϞv ?E۷oٿݐ!C4GTXXtRkR^^'v1//OL BDMnݺ%nWUUYXXTVV tRAܪUUV ݼy,\.©Srxɓ''M$ݻwsss}||ڶmۺuv]77CCCccclmmMVXX(uϞ C:t{VZ 0jԨӧ9r$11144T;ի]zz;u:NRn޼zjӦM۷oo w=z\|Yܶ:uenܸ!”)S0 IDAT\"BӦMG{u֍?^ρRRR㏨^z9;;[ZZDFF>رs΍={Ĩ={ZYY۷Ocoo߿u5k֬0a€.\<4eʔ/:887N,IՋݻΝ;-RH|Ѝ7 ٧+++[hQ6m\]]Ϝ9aH~vԩoƲeŠտm'j~)gΜӳ[4++zO>qss{7km?Z|yttMMMgBBRhpO~ALرcgϾp\]]g6m:eʔ >sm¸h3jԨ8p`ȑq狹hԨѲe>CSy\tʋh͚5˖-5o<**JܮذaC.]tDŌL0!..)EG}d\&Ӱb;h(3gTE,L0A;<;xۑiԨ#ҥK 9;;_v)HN?9555EEE CTVVV^^ް}޻waRsKD555)))SNussk xQ|y7`UUU%%% ء %%%UUU 3>S K >><(}L՝;w۷o߿ .h;/...##Akiܹsr-_֮]ۺuyݸqcڵkZxqVVmcc ""Ν;wޝ5k۷yz1x͛7۷?l߾}nnn׮]AHLL7n@`9sfee'fϞ]g{777SG`L 1%%% os玕նmۊ;ϟ?/~qvv*cǎd۷oW(-Z8s挸˖-}oGP(,Xl9f̘ŋ+r{{GuD{YYT*Ucmm}. 0p@Sfǎ4ZlgϞvdeeݾ}_vqqqqq6lXIIInnn5eee>ˣ٠W^~edd+OQ]%<<|555ﷳ2d>#'s) OOO#uAHRLƫn_dz~k׮ xyynVXX(^XS^ӵ]ۻyYYYSNrkk1x 4nXyQˏ9*H4.H_.~d4={fddlٲAYqҥ#GTTT4o޼e˖ XZZDFF|pXX#ҿU͚5>|x\\\yyyAAΝ;<h_4-ZԦMWW3glذAcoo߿'Nh)667Xl]XXXqqZxcΝ;7""B\w^aAoSRR 8QSxxÇةS'G>STڷoW^y^I 3lo.g wS7nҥKv[PP뫶3""b޼y {'(--t钵cGJOO8p~'Sgǎ Q|0"/;v0uiz;wT*mmGs`ooo PJ2AY0;99\RYVV}v??ݻ]HGcM-ZݻwNNZ¸8OOO__ߤ 4(jݹzӧOj*ww+Whܹݾ}_pA)><==322nj qlٲ+WXbҥ\ܹsr-_֮]ۺuyݸqcڵkZxqVVmcc ""Ν;wޝ5k۷yziQ3Z3mW_uy7osgΜYYYyĉٳgxD!H***mmm{-ÇwG[r޽{ E5UWW_Zrƍ===TTVV~+V8p[ogϞiQ94mE'NҥKƍ_{9婩+VԩS@@ĉGBԩS3fزe-[ٳ]vAAAC1YYYo~]\\\\\ VRR[kcMYYY &++W^~edd+LÎΡi,~| [nUWW:Ν;P(<==ŏ>>> ˗=yhСߺv.W֭|x\\\yyyAAΝ; 433ҥKwʕZ׶QVVhѢ6mڸ9sfÆ {{8qBGcMoƲeŠ;vܹ⊳ #·~ ghf6ا~*J+kp\>ydSfMt"ϲ;v!!!۷o7u ,==} 駟L_LMMoGa,w QPP뫶3""b޼y&c&!/Drvvv횩SfǎqaDb !IRL vU` OOό S W~6nإKS`_tBJӍ5_ Q|0PiiiffKL5/`2#Gl׮C@@'A(//-55C./;E*zzz>x@??K5VvKqO?<1%%EGZu*tݻ:.W4]zuܹ?GTTkk3{꛳8;;O4)--Mf'I&:0k_4:#J:499Yf 3g}…CԩӬYkѣGryUUՇ~xM6;w.++Kτ ,PUVWk#Sc/^4rJׯ_߹s۷wչsgc^M}g^ 7g/^\UUu SݑP/L@P̚5kԨQ{$&&ZZZΙ3祗^JƍZ*? ܮ4ik\\KL>= 믿jj׮]viSn۶m߾}AAAuAT4mT($^S7|s={ c۫^3{*++SDbaa2͛7?K['#5kL+@;_+W*%K:sqW^yEug``OoܸqʕqƩ<;,RittE+0(Zh[omݺ5??7oNJKKmfccᡣ٣|@07n뫺Sx:O߳g7|cggϐ!C f͚sqqQ=4uƍoܸΕtOţB}gC]G{U\C}s?vttlٲg}O?5mTG':"9.(Q|:}3>s՝:tAmScǎuwo>mkي~~Gb 0mڴsS]aW ؘܿHT<(t{7O:u;}j꛹欕255}֭<ډHr\q=#e2;(q]r%!!ȑ#;;v_LIIqtt޽޲ׯ_:tpssۻw~|q1cxxxٛ6G֭[/YRYn=vYTemmk׮m۶Hmt* OOό[:'޺u222 ` D"ٰaÁΞ=_X=zthhĉU[D"IHH8|رc_TTo(xj'=5Qk?L1uB:Gϟ??++$''gڵ6ln6zͼo:'G&MR}ݵf'Fꫯ֯__gtE&hA0aÆݿ?((h?~Sv믿_uZgdd(9s899Mb'.]x6lؠrԩ .С#^ <(c߿;*))iA())j_oA&M-[tRSA߼y)QF g͛5kְ}I$I& [aaafffڷohѢiӦ5iҤ.,ϖ%K7`R;A*ZZZ6`Oʯ5jhOķ1p@͝nnn˖-{xq #U899-\pڴi ^"O"/رc6eǎ w15}t.@MC>m-Z$HbccM4yi&...//oΜ9T^&/:p@fffǎ)(q9sfƌ7o6u cǎ 4KӇ+q%$$|כo)O:e ˗333߿o Q|0L&0u`,LIgdd:0w`D_P(AH$7/FĂ`\}ٸqhx.]G@/`\T^/ү_}:uY##`D_ Q|0L&3ޫ233Gٮ];'NP^^.[jjjJKK]";;{ܸqVVV?.]$[tW9r;Ν?D"9xNm/;E*zzz>x@yde˃J$\uֽ{~o޼B{ҫWΝ;_JIũoGuPuxO=)))'_ ԣGDct~!Twߵo~С͚5+[@@9s . :XE~~~Nf͚emm]%=*ɪWXw^WW׭[J`UUU'O\PP}ŭ[t\ִnnnGܯUV7nP(e2Yn۶#{'~SZTTԨQ4 uoӏ>?QQQm۶ݻwxm۶_~exF :TC:sW^yEug``O6qF^^޸q㌑dǎ;ӵkm۶]1+W4J$qYf-[AHLL lѢ7n֙S)mѢ[ou|ַmGThѢ*O./`\3fشixܸqC___՝ׯyz||={;;;mm~ďrGI{I$O?T,իWABBB6oެP(Z!Ch3uԭ[|SN /PXXX\\}':t߾}}k@@@jjٚ5kZE%ۃ:s,S6nxƍzN<(q%$$|IҡCAT+U~رsSSSۧرcǷ~[PJ|K3l IDATرc˗/;w߿ 'NzѣGuD3?wV}Fȑ#666g\}rsJ|SNݼyo߾AAAEEEbiӦ*jۃ:s," ؘ9KψO>$##_~((433S[fEǎ]]]K՝)))ݻwqbvvvpp땷hӡCWW׽{#U&M +VWW7Y[zءC777ʹjL:ޛ2e>|w^~}9֭[/YRYݰqSۃf{˘1c<<2u=δr-sUs5K,iڴٳge2%YcaO*kkkLa upvvv횩Sq}k۬[qvv? ح[  ####11A<y?]x1,,L.p ػӸ< \@Q$HB+qAQDѴKzpbZl x]ЉJ\lmDGd5f3QF @zAUY~t*SpL_}ǯkwVCZ˿֭[1bĚ5kz-ssMN_3ښ oT*[ZZH>YkߧHhR(PBBB0J{?|_~1}w#7O\gY[[[ZZҲ޽{T*sssѣG q <^?Uiߧ: ͛]|Ç/^_jx%$$LomҐL;_k.#:^:99YܶPWTGqURRcy666L P&LOO4iٳg EffOpppNNNkkO>6m̙3ݻ'xzzܲtwi]reǎ_dY0oobSxw+**ڶm[``f;w緿Μ9se˖umаbŊ/B.//_Vڽ{GiӦsWWד'O~ ,F֮]o}>`ĉvvvM6eddܹsʕ;waݺu߷ljժ-[wy__߮ɻN5 pڵӧϙ3kQF qKoؼyJZrA@O~IIIeeAZfffKKK]];hժ[[[ԧ?w5k666*`\uBbnn~ӧO?|ŋ2[XXDGG'%%tttܾ}WsR],??M(¡C% HlԨQݶmmPPМ9s,XеR\n݀<<f͚ѣG[[[OqqqȈ?~ڵk5tqq!==}ѢEKFGG:::7̙3WsR],P 6,,,LPoOuk @0S0#GDDD̛7 Z.I?ggϞ-u;_dcc)uЧKIU\\,u ꂃ;LLL\j$yP|GUUիWNHǎL Q|0!/`Zcƌپ}{BBATVVJS… \.߿wAm<==zjrW_}U /0Ç/YdR*++rEzꠠ S>Ҥ 9 )))C 7n\yyM 휜':::}s\\܏?5sѴN+ݻwCBBbccN:P(M&5kV}}_m@eeegΜٰaƍ6hhhXbܹ͛SYY9}tݻwo߾eܹAWWד'OoۚA^w^ABw^;;;M[ZZӵf:I$ڵk&L޻w`333񬙙ل N/F*..޷oA|xNGMפz[ZZiAx/]9ťK^|n$G7X,33S ۶m 3g΂ 6P*֭0`GQQ֭[է֬Y5zhkkk5+...Ǐ_vmLLq|||eeKDD -JNN߿llX1h&Փ\ 6,,,LPj>$BQQQHHHR3SYbEff˗K3==}R>>>;v_|se˖x"p VYYYBB'|"u's=?QHNN'0~iǎN:ryIIA UWW͛M1Wdd7,IKIuJkkk~c))) VzAի0 =#<Hr|ѢER}ŗ ՘xQ|0!/Їi /H x.!?ͻsWA{;T: :l_~vkkkffOpppNNNkk1;_U\\,u ϊĆ/wywnݺ{I A(io߾}RO;v쫯a۶m<)(~jx >|ɒ%RO2R/;6>>F` ;_󳲲*++wϟ?/˩O /YZZΜ93%% ;;{R`(;0+++# ++kϞ=sεOLL|7NP_TUU%njSRR"uO'O_ZjժU`;0!/&D7deeTDF(i]p!!!a۶mR󬭭#J:<̙3{Y@USS8j(;;;y5jT@@*/.\5{<Ѥ#߯Ml'O|WջUUU+V0IҕӐ/@,gzqt /ջ_ݠRڤN?LgAAA{ /޿[[_77qiJWK/$n׷c"ű1bٳgC]|yСoggckkd]<..n߾}G߿I P(4y$]_#hgb~~~nnnwUz]]/yz5 4Vi6l0sX_ϙjԨ8AZZZbbb jkk#""T*־~~~fff׮]wկuvv>qR(2Lt wtthܯ_?VVVeeer 򊓓k׮x] F=y WTPP nܹsf„ zVdNنZ__`Ȑ!^3fݻ7&&F,m0 IDATܹs&t ϯkԸ8f7o'L_SS][[n&WC_ vVNƍ[[[[AhllT(?ZfffKKK]]%IIIo>|A _u KK˙3gdggϟ?_}vũϟ_h'?w5k_#u/^tIWc]7ܴiөS/577Z~ӧ>|xNet}AHII{dGFd/·~O? t_LkZ%u H_K^|Eq I<1Ju QTTuVA\\\222"##Ǐvژ=#l۶6((hΜ9 ,POMMNMMutt7nܙ3gtM'B|||eeKDDD)BCCΝre˖OVVVΚ5EOHaПyAXfMVVѣ9=RlzuA;u/<|pE%''?66yt}jkk_yG7$ٳg߸q#77w/m^s^ =`K2p"EEE!!!⶙_YY٘1cu=ϦvWWݻwx٦Kcǎyߊ)xzz~7yM}ӧO/[\;_dmm%u[>aÆM:{.99A:˳)###99Y앹i\2Xiuuu4%&&ZJ< 8::ڵK i=8/)F[vvzǎLǎL Q|0!/aҥfff~<߿_RRRYY)u0\.߿)O<ꫯ`;x`Ou /{"3 r… OիW>xz0OWKJJJKK: o[rrr&N8x 6322d2Ì3>3=ݛfoo?f̘N  EffOpppNNNkkyJ}BBBlr޽n]kc7mTXX?~*~GS ŴilB?n XQQkuuu...G GkYf׺2T0wyG?R G .u=Tx?XXXqݒC\?ήZ׀+^^^~uJo>… NZYYyY__ߏ>Hϼ˗/ +--?+NڭZU*L&iooOJJkn̈́~|1u}Ǐwtt駟6o}qu޾HqR(2zwm!u:th}}}_N؉֏ψa;::m=k|aLLLddw}'޲ݵƍ2 d2YqqKӦ*??AFBPQQyTTO>Ë/jVA9sfJJJMMMAAAvvukaaTPPqÇ[Ww4$/KrN~|F (FAHIIillܽ{Ν;z].]/vk-P}R\n݀<<<ğMtqqȈ?~ڵkcbb􌐞hѢ666vj:wܕ+W&&&.[L׼ FGG:::7̙3]kc]#<2ꇃf®~|6>>%""B꫏?877rΜ9o ħ:u($$kL׍jAK.ݺugͻ)__p84M8o7uttرc„ Rgy>}zٲefffRgy"qKo+\|G=sdHNN_F3:Huuu&&&Z꩜8/)x.cvv)`_|}}o>l0y߯Hիμyi$oog L0cƌ>Ls9iii'N=ztRRR]]x|ӦM]њxp FU\\,u τ={1b;wjmhhXb_|!˗/׭[}˖-ΫVݲe ~YY|0qĊ ;;;ܹȑ# XB]bƌs=rٳ͗/_^^^+#}w@_K/...9''?OԩS׬YTVVv֭pu_~EP?ك ]cdsrrΟ?>#n،1ٳQQQZ.++nZ0򄄄?ROɓ'?~FĉWIPd2;woS7t5OKKKLLLXXXAAAmmmDD 2Ɲ;wjjj&Lk]O/`Z׮]۱c_|!uw}uommrrrrpp":::))ۇ<**jO~ŋA>}#Gnܸ2j쪱QP;88TTTj=~x^^͛7׬YکC٣'-d`$RYRRRQQ!uO xW^5}UUɲ}w: `ȑR}#9X5z۷6L aRⅻ&D(ITTTTHi_TSS#|M> Q|0!/!!!lǎR Q|>cy^^^R}0;v .]$,X uЧQ|0!/ҫ:yRۇ*u}իW7nܸgϞ6kk۷oH $| 4,:t%KN*u}xǧ~jnnf͚k׮QyMxq FݎG谲zwWZExj466w^hn?Ӏ F9rdqqq\vM|汱ÇڲѸ`F37|sm]B:vX}}q}g͚5h n߾~2oBB)))FHyJJq}WZU^^n\͛7=ڸ ,(,,4ri~7&M2Ywԩ3/> @oSRR>aÆ^xAW%KHƔIݼyd2/0ziӦ]|owҥuyܹc}޿y)9 9::vxϋ]~@E78::? gϞ/,--dMMMekkktΐyg͚%ɌktEiӦʋ )))Fadm/ l޼YPyŸ~F}ǎn &ɓ'_~eSD -)@/޹s租~oKH?? Apvv^tʕ+@Jbٳ_vЫΝ;w߽?|ᑒ/H wITVTTXYYΟ?/!C֮]xb]"xq t#]tI./Xf̘QPPp̙3g^~m{1@ w.^K/%&&J@5a„cǎ}WR= Vmm;ON~@2vjjj27q_@b]|0!|0U@@ȑ#4/F9rdqq)@_cG&D(ⅻ`Z>>>۷owss:T*+**.3J%u'?0zhrǎz[HH1cVXqƍG өg^^^FPLȴFDժ6,,lРAf .J51gO}(Hokkٶm[]]ݨQ.]$uzꠠ^hqѣG{aǧRڤNU_$`fffnn4vCھ)Ro߾oo-[ܻwkwm+**ccc kAn޼9}tgg縸T6mTXX(nL8q6l:o6(LVA㳲;6|]vrACCCe2foo?f̘j] А2dȐqi>wgI&y{{={V3gȑ#P .4t Fݎ&MydҥJKKkkkϟb x@@}=pzX]4u"FwxÇL ;::޽[RRu^]m4-\pԩgϞ裏Vzued555III5J~~~{{{yy~ʕSNd2GNq…95~Ǐwtt駟6o@P|0ҥK۱kE_~ioo8p/vuuPi3'f_֮]+n 2|(ŗkk={ܻwO׼ڨv u_ddiiiBqmmm...O6d^Rikk<55U,t]svk^]U{yyږg.;0 /P\\#)wtt+++uVxx)Sjjj4f];Vpssooo7z(Arss 4o>> &2֗tk^]ỵK׿V߉![(zlR}Ç>,<|}}O8q L&lyGG#i좋C2yǏ_~}ԨQqqqZFʪL=\.?w!]vM<~IYÇcbb"##;Wwt T;wMMMق XXXDGG'%%tttܾ}Ýi(:uommrrrrpp:6j3gLII)((Ξ?y<**jO~ŋuϿk---uuu}[aGظ{;w[?v./`Zoٸqȑ#X]] /RSSSSSǍw̙utqq0pN]t1d(Ju QTTu֮j)+++44tܹ+WLLL\l#nE%''?66Qϼ۶m 3g΂ Buk^] ꫏?877rΜ9o ħqLRI[o޽{׮]o3`bbbEEEbb{lll]]Ahnn޻woXX1c7oޜ>}s\\܏?(T* ޲e˽{ )))C 7n\yyy](LGvn*M999'NtttKkk}QQk׮@]Jskk={ܻwO}PWGTi_H&ۅblgQ|n~G%Vcƺ"@H/_QQQبP(***rssէŗt<**jO~ŋuMmaaTPPqÇ Ͽk---uuuoդr̙)))555ߥ4UUU緶ZYY999988騵փ \FЫ\\\222"##ǏvژJNzz/Z(99zfOMMNMMutt7nܙ3g۶m 3g΂ /+++44tܹ+WLLL\l#t7R\n݀<<>>++رcÇߵkW.u-2aƌ}gzzIϞ=k )))C 7n\yy{zz~'ӦMsrr9s{>OOO??\ԐZ/Q%cǎUG:w}ssTShʔ)R.^(‹/ݎ&MydҥJKKkkkϟb x@@}=pzX~gGGŽwtMiL6bĈׯGEE돡I3z[WNjZpԩS+++Ϟ=GWZյ)tСCW\ynggW]]nqKrʩSd2MH2^8qիW}}},YrՃZ[[ߐ.ܹceeuE{^p@Ex`ȑ# /ծ*ʅ6 ]s=] _֮]+n C⋮ /EEE]m]]Sh]K'7nT_zkJV}<55UW?744nnnNsIW%\JZhʕ+U*USSݹsF,;^~~]YY٭[ݧLTSSؐ6z9994h޼yS?V__n` LTXF]"B~~~\\СC=ZZZn~O%7&L+U``1x`'''n]]KȾz.v/^/nnnƍs=\޾}A]><|Xuvv>qℷzژwtt<ɓ'O|?0..kk41"!f5UYY\.rƈ)jiiIOOtppXxBPׯ%]v]]|yǹ/z +NNN]㍋ |ruu]dӥoQTw),,|7ANJJ*((}Ç;&00P|ˉfUUUVVVNNN]i!QuѕA׼3gLII)((Ξ?qShبP(***ԯ5p?kRWWnyKڭKx/Zȸn`$++ظqȑ#X]] /RSSSSSǍw̙utqqLT[nEEE[n:~qt1$V27+++44tܹ+WLLL\lqSh⒑9~kjk۶m 3g΂ } 9! Dfrqq1:*pf*J zO{{ݻM&ux&p l㏇ 6uTGGG77]> tqMXhDHr$)hy?W^7"$L*%aǎ; s((;tPaa!A@uM2DLL c/C---b?~lp8\.XYYJEē'O=7bWW׺:޽{FFFqqq7o$|~VV={n޼bԩ׮],m޽&Mwȋd2ͷnJ=Pfg;v(++#坑}}}Y,xlAt'OCʷh" 23348wAtW]]MĄ ^t`vvvCCóg v'''NIo k׮BeccOv^rߕ+W"""VZE744?bJǖ5{ڒ'';w;ES#P__/D;Aeeet@e(DGG!:VP|77$66v۶m6uE^ccYZ~=/ B@`jjouuu}}}|>_OOOԞo񥧧gĈ_N=ESCvQ2;l_(Έbmٲ.++#c ._7vugg'OP!/4)r 8unܸ<ƍpxXnݔ)SN0p( cǎ ¨(`0ꆆzzz!>gϞv2p8.pbccJzA 022y233L֭[,qǎeeev[[޽{'M啙C;88l߾חbP BZ3fشix˙L&rJ??+W455EDDZlwssʢt Ѵ򺉓blll[ZZ"##L&Ǖev7GEE͞=iΝ ))IUNDYYA@)p r]~=!!aϞ=t6s̶ϟggg޽e[n x7iϟ;w `pNWWW2;lٳ~˖-ӧO_reNNhTTڂ *jii9tЙ3g*dWUU[YYYYY͚5^"}&Ã=z;w"S䘙 (F3...O񵵵 N%1D~6l011-//߿?@ .==744tgŊ@%0y O?;tgAV[[8~xc%B@#rss;4_ںP|P.ZXX聯(^ D((/]YYYSSCwPix :::?ҝT|P"_ŗ`qIPC@P|P4rss0aA@\o>tPAAA`Y[[WTT:u [hͮ;(/4|)A@)P|P"_%B@<+++kjj* ֶ~zSSSGwPԭ[lvxx8A@  `0tU_;w>AgΜIHH;+Q>ɓ544.ZH[[[V?;w1bUnP|M{{={#'L8\Z$ Ǝ&-9s:;;E;v#yc?~{䍽}ӦMs玼---&''S3gE񥣣СC~(P|P.uA_>}o߾;w>| >Ã4ZbpŞyc(~I׿%oƍ)~I( 'N((8::޽{WQ.kjj*o߾-(uA?liiwYXX;z| E񥤤bOZWWW[[Eš* -ZcyG)TA|R\(xM\K.~ן}Yss3Al6;%%oŋGyۚ߿_ ˖-חwT /444wS Q( L0aE RRT˗/(?5(X!+(R͟;JA6mJ2 'OFb1j$R+))Q۷x# T00tO> ++={̝;߬覦&yF-hjj*EQ`…ŗgRk. ǣK]P044|hWlnmm7˗BPd.( ^t(x~8^^^j'feeEwPi( 6t kkk''' )Ky7)]|9]zzzc8yGGE1ŋ@Bk׮Qx<600pc_(ʪmT^vvɓ'###kmmMKK۷oygrr9sqssrJee+Y`)5 O?tȑ%%%^^^= /022ڼys}}GA`f̘/ /t266?矛_x͛twί>0-- &Н^mx  }}+Wҝ^@cc#fXׯ_; .}ʕ+/dĉ䆱;wXCC330AyQev8XH$E3O ^7((W^M:;;kkkWUU/_fٺnii)ѣzOOO'''##[ikkcXd7555r;&&ϯ)<<\tz__t0$?sLKK}\\AQ;kx'/יIwwweeeMM A@\K.3gy}EDD:9s&??޽{...III}}}͕^?NDbu322~zqqqOOA,q{#GP$ɋ$~ `hlldaaat PKOO ]z5YbPrrrzzɓuttD/IIINIIa2SN}GqZZM~ѡZccpœt| | LLLlmmOUfgy3 J< BBB{=$y/Y&x ?BwPT]]ź~:Y@u%R;Px^^^g͚5 U[NÁرc* |P"e(3 чK \7nHHHصkאXYY`fffllw% 7H'OȜa'NuppHNNvZQXXH vy± W4ɯ*:jjjOn022ruu]j۷E=h_x1GwQy /uΝC}Cܹs<==N:?XXX:uJKK/~~~k;477[[[/[LWWWIIIǏomm=y򤍍 A<{ѣNNNG!3A֭bpFvZyG7n[__goo Qy zRkGÇP(\lY```NNrQ 9s鑍jjj] D߷ݻw%::: .^8yd gBӧO{)Eg [`yyyaaaG GvvEbbٳgzQyéÀҚ0aYV[[{էOw?H\ǼyCBB޽rY477:uJ]]vu~Ĉ>>>+WoСC )͛7lKSMM-<|zZ}}}˿D~ۈtsss777>suppHMMX繹o7M(oQEK: @ե~톆- cٙZZZAPPPLLLTTTww]SS`Ht{ݻ.\hggҲ~33YfɜLtHQQъ+>|8j(yy?.7ߔyȂ fΜ_\zuϗsNmB@ yݻ(\T޴a`/C|0`2Hw5kVIIIGGGXXػ|ܹ/Bߤ;贷GFF̝;2g>|pXX(s\\[oI'55Uyhf;v?++qϞ=3fptt,))IKKcXǏ'p8.pbcc رcGYYYIobn޼)}L&|֭QevHK<+1m4UxxxpppCCY,QB`H1EEDnwuuijj677 SS~l#[N*۶m#_lٲ.++333Ç:::FyQevHK<+9w܍7 n&yl?KMDRRRP|~...䮇GEEœ'OI&666%%%UUUVVVVVVfꪯ'M2E4sqqq\\njs+WL'wc srr'hEYf#-d\\\VVV__ӧG9c lmmmO';<6'ux2BBB ӧsvv֮"w/_fuuuRrѣGNNNFFFbnjjjFwwwLL_iiiSSSxxP($h~9s>.. ҝ5Avww=z4&&`HL2r`0]SYYY]]MwPi( )MM͛͠7ח۷/""Bt̙3KNNvqqЈNJJ*--~nnmmm^^^\.7''Gtݝ| %);;;## ׯhkk!/2i'MCCc…;v88--w}w޽<OdxU477yT/$$$رCԒzjb ѡɓ'呍))))))L&sԩ.]^8--mӦM[~}LLP|||mmqxx($2={6?? >a[[SDY COO>ZfE}#G|8p@OOoʔ)[`"CݗrsҝZIIg< `n޼igg7nܸ7nН^m ,qƉ'O;.{5>OwP _yyyI4r85kВh ~:`YZZ޺uDnnnG;4_htU(/JP `0ʀ333ccc??? YƍWTT$Г'Odаz':88$''/M(7nϞ=nMMMhhޤIRSS>}*s~>H`0~WQSS|EV\v-(,,79Ŋ uժUoߖs r9OOO==SNN_bb"}5N1˖-ՕDRRRcc[[[O$sӔ2BP tttܼys]]]S<' YftttΝ?;;?/~MN{{{ddܹs|~A}7cccŋ 'LB#00ӧ+>|8,,UtzLCjji>~Xbm۶ihh@ IDAT%$$(455#xwΝ/&O_vmҤItgǎӧ@dx_&Y敘@E\ ۷oINN;ˋu֫;?;_ӧM믿ҝTtg;_ZSS<HwP"_l[[ۛ7oҝTtrvv>yhf;vLy `~/ @WP(t^n({~W|jmmm{4iWfffOOeooɓ''%%x\j?f;:: ZZZ*r"@!ٳ~˖-ӧO_reNNhHHW\y5ݻw=z֭BFV^?F```hhh^^$SSS[`Aaa᠜;r2)r"ԗ`hjjSG@ w *>Bzxx?yDWW I&666%%%Y,ASLgff^|ɓ'~~~/Dˤ;w'0???_lٳЉTUUQ\!ciiYQQAw Pu@lllydѻNRRRSRRLԩSEgll6iӦ_>&&Ft(>>8<<\$2={6??NHHwrr 6_i|>Æ &&&N(rYT'P䧣CBB w POOOeeeuu5A@kG0xm3_Ut4?? xBpܸq{&sr Un߾O!MMM77'T/z!0Ν;驧wԩ~ԩSZZZKLL$])zٲe2HJJjll<~xkkɓ'mll(&'ٳgGurr:rAԝ Xnxȉ5jڵK,\pHg{!7n?pdzqƋN:KKˊ!lvCCA@)#C(.[,000''l9zFbb9sF555 .Am@ݻW/^>>+WoСC ==͛7oذW]]]w߉ 1MMM-<<1_Tݶmۮ ѳ ///Fr߅srr FI-///../+**O?EGG}PH#--MT`7ŋ<(_^^^]]Mıc,,,|}}̙3:;;< W(:&i)D1cAaW;v,*EEEyyy3r˗_|SL koo:u*AQQQ .\ɒ%;t!ncc;7|W/f0FdxP|y LvKKKKԄZYYM4)55ӧԇ}D^y^"2vX[[N1??ёb ._(hӦMϞ=($6WWW >L=dnnx Ν mK;vҥK555qqq&sss=<<6^]===}Us:uJGGg޽͛gohjjcooo_0QWW?~7yy v{ƍ?ӓA֭E@0$55UϋD ؿpppdddbbvzzzvvvffsfmll o#p3چ7Ǜ|Q˻ᄏf3oHoħ"… }}}ƍ NKqH(Θ1cӦM J(--%cV={[oedd4s_~EĿ+ }ɒ%vvv,kɒ%O0|񣽽cƌIKKD(Θ1C"eIf̘eѡ ;?8s"٤cIH:;;'&&x<9ax#k.666tWބ ;(C/={ [C ̙SYYI-Oٳ'Nk.> .RGwXlѣE햖[n%o'B hhh\p*###66VbFyںu._<##Cyx{˗/WWW۷s.\RTܹI\]]kkk͛ܓi 'mo߶̬w^vvAh1/ҥO?TSZ|YjKii%?|C׮]upp8u~GGze˴2w_kHMDwիWǙݻwo4̠#fR}s玹;߿ <|LNNNEEx3o޼r 7o|1++Ymaaѯ_4gg璒)ShFxa~~ Ç״>|8!!!##,((55dήV.P!''GGGњ&%%壏>zW'L=|p}&qdrrrӌ J%V(ry}}c"""+gg&Bzzxp|___OOO[[\Cii`bb"TVVL>]V34tGGGc߿ s"taҤI1113f/ 6L܎D+Wl޼ϯe 7oFGG{{{;::*Ш[n%''72///))IsaH>Q\>|Rωx\_Ø1cd2ّ#Goڴ)00pԩoFddk&ϛ7ܹsvvvӧOONNs5ۿ֮];uTJ|gnذvɒ%6lo߾}޽ :::v옕O>/Vlmm.\(u Q\\Rz}Ux5S+_Իw"񸦦F.WWW r ļ xyy䈝322T*Z.ܽ{7??WPZZ*V^A011*++‚ OY#f֝D:Fh4c"""+gg#ܸqw(Hixlii9~[|h޼y/^trrC&MOOO1cfܼy3::QPFEEߺu+99iR???KK˼ 6,33iEw}W\ ټy_~?֤H⋔5w 2eo'¦MNoDFFkFGGoڴ\iKlllhhhll#=4gΜ9r7|3,,Lsi޼yΝ>}z_HFh8irr;w/_х nǏxIL '00~8rHA}}֭[}}}[<萐֦|B㏯Znn./;w>J)}a7p_5??9<5X"{.u'~m*/0'N!u055U*kG9sQNa(Mwl\dInjիWrmFP\W^^xwygĈR~N@4ŋ }]J0t#h\rJijjȑ#_x7<(@k4aXo #""V^-U<#%j{jM~ %Byyyuuu UWW6JԴPeeeĉIIIZ/5_~cƌ+Wj//OHP|io&M:6rܹ-V ԩS`(@XQbccKH VIII׶Qy+_jU K@{355U* t-믿{]gVnݲN} ` wٻwo׮]M&u`@l `@_ @ UWWggg>}Z @ ڵkRgƋ/D(L?K7/D RLMMJAQuݭ[&''K@۳:pA 00%<<ŋZo䭷3_tIkkk=zYFh o̟?ҥK{mPxFȥϨ;wٳݻjII7g}]vԩbagϞݰa%K 6l ߾}޽{===A())IMMutt}AQɩO}||Sgk-,,뗖SRR2e'''''q=|0??_pÇ4w_'ZdȐ!⁝]QQQmm;dh4BիW^^޽{AIIIIJJ޽iU<ݎZ ~nmmysM.>xaE¢q())QT:JuYNNxR4KOOO޽ikk{+(--uqqaaaAAAӧO׬p47oܼyw~~~|||AAxuر~Aq;M;7[h$""Jgzv6N4Iȑ#=zP*z&ӊ HC&MOOO1cSRRn޼P(BCCoݺtزR???KK˼aÆeff6Nwy?ҥKm&~YzÇWUUXZZ h o!..6&M?pƍeeeٳg?OSSS׭[7sU6O6ٳ-[llloڴiǎSNҥKdddíp7mK/i6mꫯbcclmm'Ot;X;;Ϝ9.,,H4o޼+V6*HKvYՊ˗?sΣFu܎͍V`mmmmmX, nYJJJJڳgOLL̐!CΝ;k,ո+eJKK6ZYY q_ZZѣG}}}؉/HڵkRgd߿K.^,um/-djjT*ʒ:0v_?^_;0 /D(Gj3 @B^^^SJ_HeE+WSS+u`pjVPyٲe^^^m2oIII˾ۆT={J/Vaݸq#""bժUKKK7n痐PUU%^#**J7;wmذqqqGvssKKK[~epp]>yyyNNNsaڵL_xQ [bK.ipQ8++SNq M%$$[[[c͚5ZBϛmD 0ӧO 0dȐFs̙0a¹s<==?Cťo߾yyy555ްaŋ8q`ƌɓ'ݻw_|z߾};wp_jfW*;w|dWWڨyiC-Xgƍ ;t?naa4C#o߶̬w^vvֻf{t@ў={JYYYR`| TWWWvuu5jŋ4WCBB $/^[XXXWW{uy{{k͚5jZ?m4OOOx̙}U(SNݻwok̙3g&&&g>p{1clݺxʕ...Ǐ?sLL&+++:tnܬG2dRСA@NNNEEx㓕U^^.KKK)))2eӸq>|/v>|fÇ4w_'ZdȐ!⁝]QQQmm;dh4BիW^^޽{ZpAIIIIJJ޽iӚ{;Iv@$eff#fddT* 4==]<{n~~Efbb"TVVL>]C.?n5'57oܼyw~~~|||AAx֭[>Ǝׯ80<<]yJ BTzxxH5/ :L4)&&&???===>>~ƌOIIyfttB JOOuVrrraJKK,--@4l0q Jwy?ҥKmp]ĉ[SSsƍ۷3>\UUefffcccii.Y=2YYYͽ شiS``ԩSx^{Ms)::zӦM}LbccCCCcccG~PCvvvׯ9sȑ#|Ͱ0ͥy;wn'GHHȍ7BBBLMMvܹgHHK/Ϙ˗/wvv>~.Y}`826:s挻!C|FttHHh|0 ϴBּK,$x ݻ666M7[𤫩.u`({YXX(u`(xdggO8{vvvAAAGRMSSS^*//:˗x!CXXXFGG\ҥKe2فt'! Qpttܱc洶V&A~UX3СC_7nhz6Qƕ+W6#'mnXaϐviϞ={9v={tرAAA-sssǎ[kꫯZXXh"**իv*))ILLׯA===o.΂ ,[a<].]oVMMM~~8_\m.@;is'gZ~WĖ?\P,Zhɝ:uMLL Tqmm+qFSn8#۷$33SN$55^sN׮]SWW0u"g3f'|ru͜9i?BZ][[/[Ç@670l O)SܸqoO \|'6M;7.--ӦM?~k<8c ޽~ۼyԩSM;߿֬Y/bEE* #o۶mڴiCd֭[BB|Xk7Jtq//s}wv 6 b.\ht:isSPP?h[555ٚO@>}:;;Z Bȭ z#GLOO?v옸gJ^^Ξ=+u>Gsرc]t)//oO 5 OFzzA9sL0ܹsiii~ҷo߼{oذabŋN8QPP0cƌ_]ɓݻ/_\]]o߾Ν;_pAl/5+ʝ;w>2k~~~mmmTTԼyH]]ݡC,X`ccqN}]333gΈ͛?~n A+_@~ի]]]Gx⤤$ՐAŋ޽{ݺu޽zZfMrrZO6S<9sf߾} EppԩSۚ$s0`ٳ8u{n̘1[n-..^reFFϜ9Ӵ?SA˓͛$WSS+u`(rrr***S,A ~䔔L2iܸq> >\3Ç ԻwﯿĉI2dήvǎ?4JPxxxxyy+//޽{Zg\`_|QSSgϞ^z1Bsqo۷U*Մ kSH IDATYNNxR,,,tݻRxPYY^PP0}t"\^__I ,4޼ys;~~~Z~mll駟6\҂_@:t4iRLLL~~~zzz||34WߟrhoooGGGB^__֭ÖYZZ5|hذaM/w߿O?tҢm۶4\t fddwáZ|1ĭv~6m8u7x#22^\޴ifӖXkk#F=zvvvׯ9sȑ#|Ͱ0ͥy;wn'GHHȍ7BBBLMMvh:ܹsϝ;7yd;;=[|1m!!!!R1ZGG>^4> 7OQQQ=w~ xʕ+#OVaGDDR1"7oӧ{)P(JAQKrۺuUb{駟6^ıʒ:7|S]]ݣG0/`\Ο?/u*--8:KQ|0 /D-'N޽]PPѣGAiӿTk Q@@^z͟??##QW^IKKk4ҥKe2فt߅8ʕ+/hZRRRGo\=\F!ԩӞ={sر{رc-Z$;k׮W_x)4z뭚ve˖5ťaGA===o.xܐ]v]tVGVc}J@7v Zꫯ'%%-BXhɓ;u$6( ͩ W^yyƍ-cǎ d2\ޯ_˗={v 4TCt۷:uS_m۶5A]sEFF^vmϞ=rڽS4h>Sرsήƭ[Κ5kذaܱc>SN111˗/gb.AF5w\=;@r_lٲj*fĉzװQ_~Cb˗:*Bhhj#Bϐ ̟?d˖-\ϥ7.**J`0,++ Μ9@[[[;jcnnިg޽Ah۫O>gIMM޻wymsb'Oyfjj /&n@+3>>^_~#FaΜ9/_>r? r<...66 j BlVh6ӧ)))nnn:˛5k͛tg SSFܹrԣGM?00011qǎjkk?k׮KB*¶mt?_tuugX[?WsFBP(JƆd{4jd)Sf͚h"33M6޽;!!AU۷oO4),,lΜ9:d6BTWWp|SSSI++Wm۶iӦ :TsݺuKHHxD'88gX[9RPP =!0?A/Ğ/(,,leA"##,Y"Iv 2+_ڃJR*Rgm&77WP#+_ZΝ;*H,x#07oFDD;R /`XۺukRRA4iJ*..:#ӧ  X`@|h!BT*v*u`(P׮]N㕗7{Dj 2Lb=111..ΐaQ|1.YYYcǎhȑ>:uz k׮?󠠠.] :… ֟? ommݣG5kA^xA۷o[[[gff߻w/;;[Ǎꨨy5wܸqqZ ,,lٲe h__trqO?6lxoݫVrqq)--:ZEEENN:%ƊeZM j/[oJkk#G}4e;;D:lDs玹;߿ϼcǎ|7bbbUZ}>}SjիWO8hgo^p˥@vdrrr***Sr7o޼~+++N}.]CF)++ۺu_~)u`&LRn߾-u!:233QT dddT* Ary}}c"""c4LvU'''A4xzz8p@\Ppp… >矇dF;i1>? ;vرtۻw"񸦦F.WWW rJAvSj7nhjOC=u\.GZ)77F /ƨC&MOOO1cxiذa' \r%$$d~~~:Fر7nXYYYXXk.]PFEEߺu+99Ys_^v?wܦcYf;?c]]ݙ3gt ػgXd_SDDQwR(\DD˭D3DB3ԮRR+ަ!/ 3?=u^+pܹYXX8::i>;^xQܶ?~… A7nեKj^g\xcǎ5Љ\\,u`ؤ~酠łظy%Νq{-X[.ƪ-,,ܰaÀlmm[n=m4utA[yK]_y*j^y'ufkkۼyÇ8qBlݺK.I Ell/,^jѢEM4J3ܹsbbbm\zUwwwн $uϽf͚ P{!42J%eбc3g{lC y>#:(//?y򤉉Y"I&) UVVV\\A;}v%%%:J]].AJJJJKKu5PG믿dɒO'xNƍ?x@,pQ|Ν;oݺ%u <+Lfoo,--t2NʪQF:V'C `mmmjjLLLlll}'&&V#Ăf~xqP|X\\ 133P jusss %077hRԩSÇ_`AΝ? Q||8y{͜93''_ry~~˗s=s_|4cƌ/B={d2L&ݻwRRRPPP},rGGǜŝ/_ bҤIsybyҥAAA...}Z o_@ 'LOOW(={РOؽ{Ԣ"GGĄf͚ 6b{ 2ݽ/_vss>>R=щ IDATM&Wڵx p Ep 77-ZdeeI)Joo޽{ p)S:u1gtM o/ҽ{޽ۤI=|… WX!~]p!@;mڴyx1E^D#FXr^;LMM,XgϞ=z 8ѣR' ԯ7rssYiF={s`@e_ɂ ((~988HUTTeddo߾!ca"u^d'N:tORjⲲ2 T*t2 EEE=P:JǏduŋ[XX,ZٳU$''2^裏zasWMׇm^tŋ^p&MR(:X'C PZZZRRATWOeɒ%Nx4аq Է;w޺uKxV2^WYZZd(###;;; %UFt2NT'Ch׷tʕӦM;|bbb2+W~oqqq+R'C `oo$-,,t2 \W bʕ|IN7>| :w\mRGcU|ӧŋ%J -FGGw+::W_00(j@K'O{IIIT^@e@{*ϯQF-4hq}O=ѱ{7on޼ԩSSٟoǏ_nݶm*Pe"ww?pڵ'OTZ߹sC:w,R3>1dW_xU}waaaW^]v'kğMmkXL\çJa-?㫎_~CV[oݹs'33.#DFF޸qc˖-6++ˡHUXXqƻwG3>>>,,k׮ڵ`N]dee]tzZL&nAX~[oekk[hơǎ{ Wkk먨s>~6EEE֭0TݿA[[iӦ}7n&!k;g_3fo矋+~6uXSr *9 lmmSSS,dee PyOjժ;wF'00PZe2͘1ckcW\A_v۷6ǏJ~a^yBQPPP :+㍍ݴiSGG5kfffCNswwܶm[DDĚ5k<<..nٲeR`AHc˖-5MJJ={m4˹8ŏL3?J*++;xŋ=}[ѣ Frʁ4H67^hQ޽5~gc_++|Gq;&&&111ѕ&LԼyիWW?$}o;vح[u6lذ<ͧY}'Q,Bz{{;-,,ڶmMmACǺZmh(~YYYM8qԨQR`Zl/Tޙشi:h蘙_o֭[QF/СCEF^;t"BOmڴ3ǏǍy[v޽w⻍Dpqq7򊉉ʪiӦAAA6mZn]w ظEi=RO Y/\CFսce~6] rjZ\C )dj׮]aaa'NWZ%.Y |˖-YYYGQ"BEEEqJRCBBAعs{9 >>_~ɩq۷/$$dyyyGr3˜1c;q#>|x~.wmhwȑۚ5kܹ矏1Ȩg\g:v;T~wKT* ܹ?~޼y͚5߿泮>CjP|뉆Pcǧ:/߿rrr~~a^{7nݻwl޼ի_~uTٳgKJ^bbb*T|򉩩ݜ9s}]AaÆuE}ADDK/aÆ&Ґvԩ...?;vWUpppkڶm;iҤM? >U_\bŊc.Zzݻ4qϟAU.ߠ2///,,I&ofIIɏ?hjjkQsH p=|jTVk=gP066~ rss Y2:t&;;ʋoA1c$y4ϴ2uU/"-q ݿxqn}hݺL&zAL&~Ǐ P|]rrr8p===׮]K ЯI&͞=[ tߟWnƌ666W^0a%_@7n(ugccz08NNN-`\]]-[VRRRcW_}U.cF ԩSݻ7gΜ;ָɓ'7#z«ٳsssFA4330L&jvSS?++FIA,--%:<<|͚5\zunjq[nIAK0~itto-uzG>,[X ]Ⲳ2 T*fqaaT PTT# ( g/++꿾Geggx$ ߿#-UTTdddG A ^|1778q̙3[h!I* r0X+111=z=<=;;[igg7hР~I>vXA֯_lkkۥKϋ-޽;p@''K.xeV㤵%W ;vǏۧP(  z7n߾}}W@5*蟻 W^:CԸqcA>>?zީS///?u͛71[nxͰqv}V/׮]С"O>tcƌ5kVm͸>e x!:---MaÆѣ;v,Y˫W^ӦM|Wˈ# вeˑ#G9sO?mٲeXXXƍ:TyҤ%Kj*88xԨQcd̂;;.][۷7116mکSě_FѪU+SSAl۶?ҥK]\\|M{ouV5N!'Mm۶]@_TXX(0a„y{{ ^%==Oؽ{Ԣ"c׮] GGGGA">qpAz]=cbbbBBBf͆ ~IuG++֭[''' ۻm߾ĉLOOW(={~{F-n߾]^^$M!y|||GD/_vsszhVVVhhJۘ(Jqȑ#OXh&-ʕ+ R\\,qss}v)nݺUЯxݾ40{jjvu…G^zZcnnk\4;;RjΝۿYYc̻vJLL{ٳ\]]  E@@]fff凡v*."IXXG}tӧOW)|}888,]T=%Kӹsӧgggccc=== O?;###333###ǎ+BQQ냃mmmtryݻwT9pII?ءC/B]򊉉۷ok0|_9nݺLGGǘ }Ç/]O> ''>|xف}qqq'Npvv w&%%=x` AXzuV^}ڵ 0o޼ov b666b˗O4ԩSsݰa_|믿9r$**JaڵV:{l``zgm >>u0|_9өS'q問fddT*oooc޽蘘ЬYaÆEAʪu?h߾O8Q}tBѳgꇺw.nhB ~޽!C߿PFnݺ}pQ|Вst%L&~/o׮]7ol׮]DDzѣGō^pwޥcƌ >zhVVVhhR)n9r.!}||v}o S\4 hƍwYggPAVZDFFN2E4B\]]o޼ݼys)((ϗ: 盃CnnB: =Gj>dggKH;_;_@ fΜiccb 1cccKKKێ@߿ߤIgg{I ___ccc=;NE.oܸQC__M6[歜3+++88YfogddX[[?U ^yq;((h޽Z 4X*Ok֬Yݺu<U״i[nm߾]ig3gOdi@B_5mvjj //e˖yzzFDD\tI?&&o߾:tHNN.));t_rrr\]]{qF˗/?~aÆ>}888,]THwwc PUbT?++Wz{{lذy9Ǎjժ;vj[zuճ9rֶk+^͛ԩSvvv 駟ĝ3L})x۷o8p@׌L'qgggK/t!q;%%JpByyǍᑑ!~6mZpp':|ׯ>>}YsTq͘1C~𡅅ӧՇƏ_[!C\re߾}ꋰy+W~x˖--ZѣGĻrŏ{VڿDDDܶo~ĉG˗*lٲ˗,`P|Cz}qK|||v}o WR={VlR8۵k͛7۵k!411Q*ǯ|}}-,,;vL.[YYUW_~qΝ}]msdׯk3&88ѣYYY{y*gەuVr ^_ 8p۶m?uڵkixxӏ=T*߿uVAuƍCns߿NߵkWq! klQQQ.\8zի^}'0aBttcF][ss^{mʕs  E@@]fff*gЬcǎ/^<ŋ;vXˀ 藍M\\܊+c&My뭷cǎ;w޻woܹ>>> " .333!!Ʃ7o޼n:ALLL>裃VTT>}9]9@vc̙׿YjUPPPHH|9e3gz{{n۶Mgg#FsΜ9cƌq={$&&111G^pرc pAV1DfܹsMJ@}qrrjܸ ]~~~^^_dիW; >.L&u/˗/+={lذaРAR'^hj^z-]tȐ!R'^h_@ͥ@Jezz/<`h:tPS__@'N(u zQRR"P,p Μ9e)9s&::z֭JҥKÇ:1|FJJJ~:uꔐ`nn>{줤$C2o޼~MKK3f8;;K -[XXԽKjjܹsRvrZnu_1v,<˳Z˖-ӺٳR}]d5kh=oXXn޼Yyv)))Z۸qcz^##-0W*`d*J _ӦM޽{Ν^zI,@.]矕JɄ ̙VcgM&i>mwd2e^ `qK}slmm]]] /_][E&=+Zdrʳ+J2LWQ\\$&$$H2ojj$>|Py(#q @),,|ro^z͙37ސ:/Rg{xҤIӧO:`mm={ׯ8::C ݻ;;_@ Tw>0X@-##X,t S*FFF~~~Z/bժUrϲT'0@_@( XQQUaa3%`z$0_@( /c]=G_D+### F@KR 藥e\\AHWM =%R.u`(vѫWK6JKKry@@AAmG Ǐ/Z())IǏ;VD Է,\099Yٳg{RL  /wrr: );vl s̙\e˖vH&͚5*ww͚5_C߽{jۦM }/]oƍ5ɩ *J }@'STRgh(HII7o'?u*Iy||'NJ;w111i蛐?Aطo8iZ+MIdmx},--4<8h(/쯿 |J211׿5g-4oA9R0x[QQ:ӦM }/]akw^ }4ݼysO?W뢞lg)bjPiii@@Ç5/8;277W]]^^~̙ .X|lJn~4n44i}cbb.'$$hw߾}ZRԳ< 4T, hԨĉ|||@J2==O,pQ|)YZZN>]TVV&-,, =#/KK˸FI4(^5 ąuN@2_dddoff&u`X@ 8YfTV6m$%%x\tk~WWu֩d?9s&$$;&&FrVt9 j233KMMMNN:0h_ ޽{{mmme˖_y۲ey߂N*n:u_~ܸqUV'Oqӧ_~~wަMZnT?^b׿曌t͇A5kVlh C&#^5nÇ999OlRڶmm6ڵի_SN+V>ByyAسgI O;88:tW^U.]4""B=ۮ];//;vTI+Bmd2Y```@@ҥK@C0.***,,_O<׸\~C޺sNfff]FqƖ-[j`kk8mڴƍu3++ҥKUd2 jZQ|18YYY T)~~Z*!!aΝm۶-""b͚5III۷S:]s RrrrT*U]9Mq]5c˖-5MJJ={mڴi{wر[numذayyy XYY竛VVVG4M0!o)ʴ42g5bpZl/Tޙشi:h蘙_}:''?zH #Fd}l߾=///55uCt#)h\~{Y]YYI\&_"R _?nT*/+$LjyHhelqM7n>}믿N%ێһy{w˗/_`(_RΞ=Gݽ{7pС_=u(`/iܼywyv9sSO=:֭[%O~ᒧVi%O/]tG!{^OK־%k_{gϞ-Y{ȑ}Yڽ{zj]vV*]vZ L+ۭ[Ν;w…;wT*g}̙3K>%O#W*C<=w\W_}^8vXfYg—_~YR,--u͒!9GZB %߶ZRkJoԵ3 ]VVٓ: 0/㳼{Rٿoqf|iv0|AZ-ӷv׮]%koܸQtݻdիWK#GR,..Zϟ9sO /(_➻W'駣GE'޽?ch(|I뭷.]4 v}S? v_/_: 0/~x< /ez۷o;wL+gD|,..u`sv`0HB0nh4Rg&3_"RD|Hwa>B (<멃M0z:0/q5fYR;bjΝ۷|Y3772;;: 0zH`HEQZv:0 0nh4Rg&/v4oNH @D&_t:'Ol4ϟOBz=u`(Rgfwݱcܹ: 0]6 SڝSH8*@D/)_TEj۩UCz zL./)_" Fl6[آBQ3lJnh8(X!u`r`HYYmG0l;k0,..?~3^k>Q"G -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbP =SR/~3g޽1cFvN=H$rs;ZtiO>$:>vfF"&M\wuf*|ռy" ''g?YƍSRRUv嗿 `РA+V}z2e <ǏիWJuֿ? .ԩӨQ~_[ ɓ''==׿uSN Λ7oС>jbPl]tE 4W^իW=z#M_^r?|ЬY?|РAz۰ahEZ";v\q˗ۭ[~W^͚5뮻&LЩSwqYgjjq]q o~߾}yHVVVrrrzzzǎW\y -ZԠA5kX|ǎmڴILLo߾kwߍ/_'?۴i3uԻqԨQ;w~Dx[n3f1bD*Umv8'׿wQdɕ+W\rɒ%?$ቲ[۷o[z /G]zʕ馛nOGsoj׮]׫Wu*W駟^zȠA kԨ1x^x`Aunn ++Zj/:uAP|={n޼\r1n{}}'vkM00? .]z饗-[wݥk6w>J*]sί΋֭[{ٷo nʕ+Ϛ5UVA?ޯ_m۶_:ӢKٳw}aƍ׵k  / 4oιC8*?b]H?'@bPl5o޼lٲ՛6mw=nܸ zG;;.Z_~yeϟ%D+ W~goH$k:묳:ώgA\tE{ywbTǎ+K)))W_}ucG3Aиq'xsΝ:u/nܸ8̥D '2nzyZlYPag޽=z=z3f%JhݺQz[K3~LN^L{f͚UTȈlܸq˖-ӦM+UT}޽ᆱXb˗QFe7lذ}?\0v؂"IKK+\w/_nݺǾƍ۴iSΝK,{~+VAPvUWqN9ի^<--> *Do$^D-[l۷+7oΘ1cFO{ 4ի--h ?# h1(4hРA#)))W\qŁ V%Jfiiim\`AժU ȏѣG.l߾}?_5mڴ%JԫWS-!! 6m:eʔ˗j"RRR A@)))_v. ?3fLϞ=322̯*1X9,1ʼn'pD"\rɌ3~:"i޼o}_ /)S=icÆ 7o^:utrW7 py[mڴꪫ^{onԩm۶S+VZ*U_~^t飏>v8qwV:Xγ>;??mvJ.ݰacNDZLN.իW_dOOTP~?"M4YpA~%&&hG^|$A U1s/lVVք l߾zz}ݗ~zqE 2d̙#FHKKO~/_}ՇLYg}6p_瞫ZjN\aÆovVVW\1a„z=䓫WT%\/G&''O>_1`'Y~z/ݥ,祗^:`_|qذaJ;v ϏwbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.ZL \@h1pbE -&.UVn:)8jժ͝;7)( )//oҥNԩS')8޽;''')8%<؞={?;,)8"_|qSph-[|w❂kժe_E֬Y/w8B۶m+SLSphK޺ukSpً 3e񒒒222❂۷//=i1oc=Zx 5jd_h/ dɒO?tSPm۶i1OZZL'OZBBB#ph1`_/ Pi1pYg]wuNA[%{@h1pbE -&@G}tW~YYY^;vf͚f*֭[ hժUbŊ5;曃u&M^xwzZL`^xaJJɓx38M6'O.UTeee7O?mӦMn!WQF޽˔)]{ٽ{e˞|5kԮ]/}w=`?GBt8H$N{ݻm۶&MjѢEFƍ׵k׾}ر#K.PpTR7tSff# D"iiiM68qbJJJ߾}֭;tЋ/^z#|͛\}jQr,~b@ :q/B#p,vqڵkܸqg'Q'UVX?iۯ]vɒ%B>}V^=y"'$$$tq…#>ȑ#jժ`k׮}ѲeˢƍرcJJJw}o̟?pB8B@0!uvqcƌy֮][0^n|e˖{n~֬Y/P_u-Z(<=\j!/9rIOcZ֭7nܘ=СC~W7.;wN81;;;{N8Gmذg9dȐ)SX c+ƍGq9hb;w׭[Kԩ|yCi1B$$EƁ9FyΝ;wyk;vl=O?_{G&vYgA}Aajb_;k֬N:f͚gΝ;|e˖ltvv?o߾W_}555/`֭kW^zK/4//`˦}p:Bg֬Y'O~G L;v3u޽SLiڴiHBBB3۶mcǎs7{H$WX_6nXNK!wصkk֭[ywqǤI wڵVZ 7pC&bbHx bnjf͚Aеkל~9}QLh"ѣg̘ѹs?~GYT]w]uUݻwڵB WgϞ 6,ZK.yyy7ELRRR.]y9sѣ`[n[`})S{ x۷7l0zشi?p֭ó>;"==={bbHx G}מ={{իWWXbŊ5 `̘1,X}aÆe˖]xG^u饗[lСe]zٳg_wu1.8qʕ+G}ߣz衤ZjٳrK.=Sg̙Ӽy5j >ݺu{ʗ/߬Y~aNDGW $''/^8zp&M)S` x)/ňnE+VX08f̘֭[G_/Xছn (B6)kܹs߾}G9q.SN9e֭[hQJfͺׯ__B f̘1mڴ .` 6Z걾G84nx̙1&̚5mvmlyb,_> 6h':)Soc/@rUW]u6lÆ ? 7#@>7y睎;͛#e/&@E_<+~"? !3fL5jTO;G8pȑ#=ҥKO:"p#GK_}cϛв \8~~-Bzy.B6pwq͘1cߏ{gΝ;w9NGw#x ߿ ۮ^zbN܋px,.b` ?%-&`EDY \@h1pbE x(ڪU233㝂޽;(δ ,77>w lٲxG{x={<3NAvč8-^I&N}ժU[bESphIII?֮]z lٲ7w v ))))###)b.11[ow dɒ@h1w))(իPhذ~ dɒO?tSEbaժ2 .lٲhѢS}G IDATO=ϏwZn\PR; {.I&;vg;_~e6m7nl){{ٱcG@i13,3<zwhH$xN {ӟ,Yh1M6lذ!APعsgϞ=˔)DQ"8:;<pbbCZLNh( P i1uꩧfeeժU+Ac.==}Ŋ a(pU֜9s8222B*ϦM6lؐ,@mݺ5%%L2yyy^Lb(555555)wb7|s…s6mlܸq@^LY|y6m6l; plݻ7''B  D"^LbhĈ#Gwࠢ]BW(6lؐiӦx#(<- ^LA P i18%;GN\e˖ʪYf\rVXQ&P-&@1ńW͚5̙PDxx:@aÆM6; yyye˖MII͍w8,bCiiiiiiNGH P%%%z뭧rJDY \J;_nnopx[fff{ad/&@|' 6lРŋ8ʖ-,:bC=Pffx#(֯_yx*AiyP$-&@1{ho@8i1 -&@1}ZL8q-[6+++333Ac.99yŊ EbHff9s8"HFFFS@HE5kj׮_ 0I8a(ۜ"F"ĴMN81%%o߾S۷o[jU^Ço޼9{ .(|)))yyyA<#-oݺuܸqYYYzjF.]zSr{/?LII.Ə߲eWReȐ!Agɒ%}^z= 6lX:uʕ+׶mۂNiH$A~~~@%;G_ѿƖбcǂχ^bÇڵ-[Vv ƍױcǂ=ܳx7-[\dIٲeyoF&MlٲbŊ  ӪV:k֬UΞ=nhҤIڵvB@lZL^Lb[ Znqܽ{N8Gmذg9dȐ)S秧_yƍ `Ν'No={2d%\p9TR` D";w\dInnnr5jTN:ըQ#))m۶^{ԩSsBp(~P9w˗-[?\n5\Sp*//oٲeu۷>ꫯ^|-x7~lt` AiiiӦM{z}8oМ;w.\uܬpdRRR22288v5vؒ%KO!ᷘ{2eJӦM _~Ŋ_z7m۶zܹsǍ׽{Wnذajj[lY0cªVF_8 hӦM6m6mggg/Y$}E'ر{C1bDrn喍7FOv!Ș3gNSlj7۶mٳgjj'CVXѩS"ٳgÆ -ҥK^^?ARRRn`}}SL^ԥKGydΜ9=z8pΝ;׿~wgĉǎ}}WN:u|ͳ>{87_̝;wΝiiiʕwy-67nlѢEr,Y2iҤ OxbCe˖-C=TV={V\yҥ5k֌zu/_Yf^Usi޼y5\vС7x~=zXp̙ӦMٳgٲeׯ߾}믿pnpw}wJ233?ѣGGLOOرczza:ut 4{H)CW6m*_|jjj,@ً Kb@,k֬iѢ~}߿\`f͚; pլY3??H$Y \AA 0p:uPB`gݻw/['\fMڵ˂ Px'ozecᄐլYxe˖X"!!!A t勤{n۶I#ƍKJJ۷W_LHHHJJ*8 ={n#F[l>}_s=7 4hР .ꫯ3yk׮\rA8rncN:CD"iiiM68qgѷoߙ3gp`` Fs̉w 8Ȉw){1#FX⪫:T^*eʔ)\jՊ+~ӟl߾ڵk,Yr81zɓ''&hO=VZq=իggysw^ڵ ?JIIݻwǞбcDž 7=a3-&@1TR"=C+o_A- FWZu #G4iSSScL:ujvvSO=5k֬srrznݺAЭ[g}_$6lذzꇌ}07|sBBO?}ș[޸qcnnn?y_8Qx,ɥ|˗?guV^ Zj5kgΜYf3SSSon6lXr9cFFFvzۭ[-R%J)Sf˖-ׅ311qСrKcܹs˗/_l WTȥba~aNb\zZ/,PZW^yi*W\^odɒΝ;5UVbŊ{]E}ltbF 3fLe˖-[TriW]uռy ~*U4nܸvխ[wС1n޽SLiڴ!/Y<؛}Da/&eСկOKKo$=kܹs߾}G9qǗ*U`wW]uUݻvcǎSN9%7yڵ>h.]jժkѧ~^ZӧO_nݢE v.Κ5o_~} g޽c,Yȝ7pC֭z'>hN{ٲe}Ѽ7=زpBغu˔)s; pիWoΝK,9S^LKtNK-[t.[zٳO8qʕFJN.]͛;w\Rvm߾_LJJ*r1ctСQFO;3t1Ν[&ML4>hР=zw}Nkڴi۶mmVxJJJUVϞ=+Wt=1[6vN_}U6mnx+Wk$?HW^g~'?O~g; p%''رc1spTl۶_~K>|xaDYbhڵ999&u[MtO?tS( ={(h͚5-ZoO>? c aYjկ*)bC!l1ÔUZx>,???999A tŐN\ժU3gNSI5B*aڵkmVrҥK; `ZL \J;h1 K?fO>$%%ȮmҤ /cD_J/fa?]Ob$bp20`ۢEN=Ժu|Q[n}7ϟ P~̼xbplmܸqĈsN-Əs dɒ>}T^GoV\r$ϊ\mgѬYO?`|?|Vի7|͛7Ac]pcjjH%E'1,Ř_lx1fG 1L02q$T|qrt]x_y^y|)377)^bE||8m6LִiΝ;߼y K.ٳo1s̴45Q/_|}AؿxUkjBWyQT^ ]RRR&L ;wuG;cǎurr:s挮( Ř1c~7n;w8?V}>}6lذA%''ƺӧOd{jjg̘P(233n޼)n3yqƉ}iӦ'O,--z{+Xtqqi׮]bbbIIɗ_~٥K5Q]]]JKKgΜRBpss;wOjM^*/US}]SZ]z :`aa!Ǐuz.&血A; M^xQ|ee3NҒ%K\\\rrrVPP`nn~mxx~+--mժr͛vvv b .T(VVVNQJJJlllN>:̙3yyywUSeҥx|||֭k4} ŭ[ZlYVVӨ ]EQTŬ) @u uR( A$ ^^^[|33ڵkϟ˗ O9KffA[%%%6mҥKoii٫W srrT`PܹsRTMN:666Υ~_A6jHQYSʋR빧tKZ⹘O4!!A|{oooehhO4駟~JjI$և999bk'Oܶmرc+///KKϫ) 'xQRRk:s)`ӨZSʋRZ @bPOx/NJJ[nŏt/6ܹ3dȐCM5zkڵiii;wǍfΜW^^_bEllq*4449r~鲲k׮edd) ?۷򲳳ӼrMR/++ʕ+2LQv/tkqJU#1M&533d.Er\,PEPb 8k֬ЩS!!!7nܰ6lXtttvvvXXܼyj6l077ڵ{7zhxxxxPPPxxٳgv޽]vU֌-Zdii9nܸ\5<@Aϟo4n8&&QK\Q&M k:Q[ǎ0kϝ;Ν;fffݺu{]tyŋ5k,]L48/oX-,,,,,:cjjjbbR] 6mUxӦM?C~~sRRR28rȊ+N>>>}?+V1cFjz"m۶O;k֬SNb7@DÛ(Ѐ=$~*~1 jўZ-o߾ NNNaaaƍK,P#444;;{޽=2eJff9sďyŊ ]~}͚5ֳgNMM]f֭[84w܈ s/=zPʩ׭[w۷/222*&.\dɒ={&&&6iDQ(*G(H9u1@u:@b_|QZZ|۹sܺuk„ FFF: }Ϟ=O N>իiiieeew^jeˢƌl``0zÇWڵkΚL]YxxKbbb1(---[o``nkk[]<4:;;_vM<TbVRRݻ׮~ѣ d2{{{7 !|) IDAT^^^[|333Aq333''sIA)+%%%#7z(--54?_k2uvZ~---;nݺix/rUضm;vhr… eee/Zhpbԝ𲲲;~g#FhԨ⍲cccuM/yzz&$$x{{ poooe1..Nl:>z())ϯe˖ևvsstϝа\'M?K*{yyYZZ?gϞύQӣ9oڶmSQO?$=<|ӟy߾}`ѢEƍUG 4^xw "$<8 WW׈!ChfyyMX>i<}ԩS^l;uԾ}Zj,_YYY-Zu@#5Zhʕ+uYzE)B޽__xǏu.&@=ٳǏoZ1bڵk_BZZc%VV9{gm6hdѢE?^d_|S~~~RuI7~^QIJJrqqСCuGP{zz[ ӧϘ1ʪ–iiiw޵^--[lѢŃtk1@ 8P*޸qCAx5j/P}Ixxf]&PEݻwKJJtWСCt:ӥKO>=##Co P3o[/XٳgEEE/X$//ӧeee/X/R(?~/X8??I###iӦ͘1b 蓇`Ӡ Bnn;Y @ub 4\7dvvvʑdF.SS,Ҹqccc,bnnnddE6mj``E,--_c4mkfff/XDo~H֯_ , 166֭[ii ~GM4u@S~Oǎ_,^TYYYJJ 144|o-Ҡ^k߾}aaꠝ]XXؿU0 b:zhqqZ. S/R_:QF:L@ZLЦtT*v1,X0a_P#m?YXXHZLКL3fL<%Fyoָqݻ: HNNnѢ&:ueaᎲȽ{t@m899iݻwKJJ^^Fо>}HҔ]6bJMMMNN.--uD"~P]LC◡48t1@A`-&1uƍd6m:pĉ{{{]ޑk>SRRܹӶm[]gbJMM---upp04<brppprr +y֭[dg PXX(J9RGM8l0TڸqcWW׏???ݻg}a*.⌍7~wvQa߹sJ$ÇV7Qeׯ_ ttt477wwwxr޽{*<|D"ںs3fHOOW3jZ+nogg7~sUHIy5ɳfԩdTݵk9kCݸqݻw}zС3gμ xzzzzz *C3>7de&LغukLLBC~P+𩱱-[Fٻw+**700n^fW?ab#ǏW>z_~RT.kZJJ\.T rDM*޽{w޽ݗ>55U.6e۱cǃzܴiȑ#tҡCb5 ޾}rZD"0115jԖ-[Aضmې!C6mZ]5aÆ]pFjo~~֭[4if3/DӦM{=}ݻ5!/^VRR:?yǎZJmujt5QCpkxuGƍ BZZZrrrqqV УGAmJJswܳgϡC,--FӻwoW_}Z/%I&MƎa;O8$BPPPTTr&zR̈́ ͛7?}<~WZj֬ƍ7cccGWGGG"&&&88xƍRT&9ri+ܐU0a7|:?U_qpŊ-1cxL駟*ӧO/YDy?͛7;99 0f̘SN?iW5xzz6o/hԨ'OjҤ4wĉ/_>rH6m֭[W#o&BXZZ~'.\HOOڵСCmJO>Uju!ASSSggg[_N59aγg6mڴcǎ7]t1@ݹs'99\A@i۶T*:o߾VZ111qȑׯWT*~^{7|ۻw MPp;wA}ǴrWN[m|޽ϟW[GYYjMR)gϞ?S`` <r=ܦMgggW9Qi7m'O\t>nرǎ裏*W=z(>>d ۱cgʑ GZ^^Ʌݿܹ yyy7o\pa֭>CRk׮UMv?/$TcFx5=DA]LAwܹO:޺{cdžfݻw_ׯ7\R.]R(oٲL&+//?pr:?~nFFF , >>> xr?/$TcMs$ZPO<|0++ZYLzzqlmmmۦ,^&h(##ֶuhP_N:=P(;֯_?e@]tI.[YY:h+YjsU.Ӿ\ jQ=]_>|e:::|W;ʢa-&@gmm=eA.\;tȑ#u{ǎj6ܵkPu߾}Z]|Ns133_߿vLBQRRRӽ͛׵kךGCϯs*((8wxxƍC) -iӦڪ&iwQӦM XhZh{:u }Kff |||7oޜ9q?BuEEE988L2eyyy Xbƌ:taQQQ񇩩)S> k۶mU֯#55B)̕ wy'>>~}YAn:UcU\z7|s=z3߯ioEb#RI.: k׮ݺu@ظqZ,hii)HUT[$ иqccccmUkԨQ&Ӌn?аI&ڪ&hO?O7ouuu---aƌׯ__bٳ۴ifA W\yΝS&'']Loo3fegg;;;=zӧrs΂ xzz.X`ԨQtWQ])Uʺ^K.f277R3RusUWpϞ=]t;vѣ/]$vp5<Ç/..ꫯrԩS%bz7^d2=}T[AMKJJMӧOʴUH[Ab5eggg޽͛7rCݻw=z7aٲe}]zuQQѱc.^^D")**JLLtqqwTS_+chR#F dȑϝ+  49rܹsڵk׮ݘ1c/_ɡRb믿B;wܹsu EEEϞ=bǏkoeڪP(?~j <{L=zޏ/--V5A{]vWiƍZ (l9h GyyyIIIbc_tRHfW_M2ߞ?~eVWE5&*_gdd^|YtϝrACCÓ'On߾… iT( ]LC7eZw+XDJՀZfM~R*]yW[kkÇnPXXP(nܸ!62/^XeǏ/_<88811QCCr+Ĩ*ղQ?s);6""bڵ'NT]xiH$))) \zU}WS#]h]LZL]' W\:bdd4a„ׯ/\FfΜW^^-I~/^|3gرɓ'LMM5k|i.]Ŏcu5,JlMs)"11qϞ=5䭷ZvmaaaZZΝ;ʢ z.&pd2*"8 ;v ĦMb2))om׮]-={87twΜ9e Zh!J/^_!!!7nܰ6lRUlMFs)ج^zĈݺu[`رck: ͻv{=Z\, T|f R4==(88x…JEmڴw']t_e-D=(˵H'YTTÇ'Ni&v]xQ./۷o0`K8C]h_n*++{qRRR۶m_\iiiÆ {qݗ-[6hР=#^MQ@=~x˗/u@#t1/<)((8~ٳgu@] JW\u P>>Hϟoڴi~~ 999W|r۷o%44411144qܸq X">>^ȃkn˖-֭.@eً/nӦիWWvqq0`Ν;Lw}7##ԩS5zbn@}jժH77^z=z4..n666 ~5kgϞf ޻wGL\XᑓӦMׯwQ͛79L_~Gu899͝;7"""**J*gYnݙ3g,X0jԨ yfDbiirJArrrϟ_e&O\\\|Y\>uT帝ݑ#G;6zhoo:TPf H$??#G5mX @fjj*t@]^^^߈#߶mѣG_~G۶mGټy3gΔ޽{ժU^^^˖-V*}]FSCzxx`ee5lذ-[gϞqk׮9;;3fѣ>,Y4&@GYtivd2٘1cTOcv파 Sٮn3ggk׮( .&Рl266vǎ.:99:]t_Jf͚)ߦ%$$dff4ѱ_~yyyIII[PP K.)Ԫ|D{$ IDAT 'NܱcGII޽{}}}q\ࠚSN Rh\|YPoU ɓ*+٬m۶rF]L75nuzw#''E}===MMMķ.\Vީ@o٬YCmٲEuCFFFg144,//$ju*%HRRRķb;V&ť6L\U5AHOOв}=􊑑QPP̙3˳5x/NJJ[nëxĉ.\;v|/kK.62 P[ov´;w㹹999=zHLLTj5 p-2HxxxPPPxxٳg5722?00p֬YSNnqݸqwߵQz7n 6E Pن ͻv{=ZYz#u`c*W͠f3A.^ػwoթn}wWoڴI uΜ>}zԩW^H$u?{ZLz5Z5jT*x񢮃@~m۾۪5Zhʕ+uά^zѢEx SC]eff888: .===99PA߲eK6ވ#w^zQaٳg֭o :udjjz5]gߏ/PSG5rppvvvwy*16t1@(ƍ:s1@߈9x k1]L7t1h(bPob L&ѣ ?\.u///oӦM;wuWW}UޱcG-vԜսx.&@֢EX]PGlmmuѣG&Mrppx[y޼yڭYSb-&sss\~]`ٳC|=m4##\AvٵkWq󎵵upp۷+VNjm&ɚ6mڹs7oQUPjjj߾}[l9s̴4qݻۚ5k*˖-700pwwW7[L]S 55UYt=vX@@sm۶uppHIIu@#}#D"uj.&40@ hp ue|=4h&&&2FAԅ[nZAwb 4h666Nп:t1@ߴhB.:D􍁁SP{tzSSSe2Y֭\7I<==wڥ|cuJJJ@@@˖-|Сk>j;|MVbcc%&+R###m7ozӦM-[D"sŋ[ZLzgΜuua„ RԩS Z:{ҥKe۷oٳewnnnk֬y8x6m^z,!!!l׮ݖ-[AYv{=o^TT$nѫW/77sΩquu]|Kpp۷*K&&&:::7N+VWbo۶M&5mڴs7oa... عsꏮCk1ꑇi&--MYtONN~왮@g̘qQooOrq<,,k֬={vjj5kA}Ϟ=OZe S1c8;;=-U#?e mmmA1bDv파 "GW.&T]!>NP:׼yo{Mwl֬پ}ӺuC7JMHH4hc~򒒒._P(}[?!!K|sҥ|m׮]۱SN Rj$!!!''[nO<;88߿|b  eeex@@?|޽: amm};)HRRR|.f .x{{o 4ϯayy楼,--ϟ?:XXX8vXL:l0寡TW_A=obP@;Ĕ+>^Fȑ#?ӧO]v-###777''GD ]LA366do 6m}uA4iR&M<<< 2j(q ,,ERŋ_8nee{Yq|Æ ]v}Fɼf :ujR!!!7nܰ6l""">EYZZ7.77f#F֭ۂ ƎXM}-ݫF¯}soݺ,]L7%%%w522uj.&b_b_b#EEEǏ?s挮 SLJGuC]egg޻wOYt֭[WYEu{Lv񒒒>}}۷o߿O!+'RueB.{n`byr]  ނ \pۻvǏ/_<88811nnn[ZZZ?gϞvvvYYY?լo߾|IiiL&swwܹsgMMMr"U$%%Q*)ayyrmXe@;99iFA cc.^8)))..nݺuÇE?ɓEEE͚5(((h̙qqqYYYт 9??}tYYٵk222AxwbbbJJJӣ3--~۷D"_jPZ[ov´;wVY.]FN^ rss7m?ֺBdd``YBCCNZ"aaa-ZJ/^𠠠p+++__߳gϊ|E,--Ǎ+¤I4i1dȐQFU7Wu5Uj^}>}O>> 6w=ztۄܸqfذa! SdT$uk1Ǐ믺.L>]*:tHAw uѣVZ}233tzo\"JuԜ0 kBLa7Ũ cLhx(m-̏fGDү~λwutܮo}fϞ]/>>>e+cƌy7ZnwڵO>ucǎmҤə3gmڴ1222dȨQ5quuOKK|wO:%X|`6m(qUgB :u/lllҊv*ŋyyyKή*ݻw/Zh!˭T/޽+B|||@@@Zju_UsBwԩ^{MyBD.]R*˾}GZG@RPϟ/˿[JRL5j(<KL0AP$$$40`SN:P(\]]ӧOFiM&ݾ}[|s1uUL=f =JIIɑ:ՠACXƍ 6l=zvKdffzxx'%%:{~;`Ln:ZkذA֯__PPp={hFP;b駟r@DDDxyy5 5kv؄3wދ-0as^dggkZۼyI=FA=.n4`8xa>m֬كM4iΝ_~e@@Y蹛7ok׮m۶Y*,&x *&u57"CULN_B:ڰze˖H3336mZӦMTUL7T1:266Vj %LiӦ[l:dܬL~~~ZZZF7o.uAn'uHS&d2;;I&;wNTBѼyÇNBRb@aɒ%EEEgϞ5442e[lÇR,**x%P!qqq?AԆK{J?Lfhh0ׯo ޽%<<<++Kɓ'GDD9rM6;vP7Lgg;wɓGReeey{{ؤK@{qJJJvvAܹYŋ_v-< DEE[k׮!!!P*&j#0AXbťKj]n &///%%ÇR!AX L:ҥK111-[ܰa Æ sppppp8p`nn7M}رc%T*jh e}#v]YL:e׮]lѢEHHؘ{nOOOpM"## YnAlmmϞ=+x񢉉xڿsΩ[0'''ss!CٳGܯ_Ν;ϝ;ݻb5k.\PqJBq UL tGFFƜ9sN8,/^ڵkKMM aɒ%+Wׯ_RRmݥKA̙Sٝ>~׮]ϟQ(.WWWܹsi 8 fȑk׮:رck߾xLK.ǏL'']ZXXV{x}ʕ]ⅺ5+)((0aBHHHHMM-{d3!!Axɍ7}K G􍉉cӦMj޽{N~z||g5jdeeenn.ܹsJKK=ztA ǎ>}իiii <8::۶mt#ukVanno߾ǎ;tÇ.\صkW;;rӣvܩ!-tULJeQQn_xqӦMr/i&}ժUVիٳg/_bĉ999 L>ԴK.#Fx뭷nrlllƌӻwEM0l… #"":wܸqT:!-tLR9 KOO߼ysϞ=8}S;恁[l177766߿dd<<<Ax񢧧gnnnf̘1iҤ{ٲem۶~񇳳ץR CCCG!u b萢ӧOK@mr۟;r۶mŋw~ĉyŊ lذeÆ n݊j ܹs֭IIIVVVxiRx{{[YYeddH@{IJJӧO;ǧK. DEE8qs΂ 0 ,,L&U}_jqƵkN??ÇP|?+jݻwųeΛ7O<T1@DEE-YdرY&b9*ѣx>l0UWnn7j5QN bCC:PnݺUq_\h_EoSRR?~,uPm ċ.]X[[?~ťCCRK;;GW\t5t}㷊*U?bdd?w܄G8p@޽ TGGGݿ۶mE UL - ZժUz:{>yWӧveĈoVFQ}Cӌ E6,\099yڴi]~}ĈǏ?~xVVVrrg}&8q"##C<ٲe͛7'%%]p!00077ʾtppP*<vݿ+ [ky[6gjjBh޼õ^ҥK&&&/)ļkⵗɓ'k!Cuo#7T1:466Vj)$$Jɓ+WlժU~+."ɞ={cnnޭ[cԭ_.:ƍk׮A(,,}fϞo߾*~8"KKK__;vo߾ɓ'W: &&&88M6 bܸq1cƴihȐ!Ft*W7{/ܺuK˾kdd?wܕ+W###Ӿ 68p+֮]{֭J]~}mԨ* zz[_&B bŊ'Olذϯ]gԩVJJJp׆ 4h|ǏU7077OJJڷow yc:Իwe˖uή;e[Ou_v,u/4K.U,..n֬믿T* 6mzڵ mllbccG޽[TY[[>},u owall\nq 233-ZԡCՔZoٲݻ>}T*LSqXC[d VVVⷵ/thǎZ[/}ٗ}x_''^ڵ7033stt={e˖hѢG6mjٲخ[_ѣY˖-G믿~嗁ZYY}[\ 9PTTT*?~vڎ;{ǎWɓ͛WvǏ7h@ uӗ-[޽{^z曳fRS.aմiӠ۷o)(t֭j;w>t淦;8 &+++%%%##C jR,..ξyurss7l ?H!vk֬6nXqMCCñc~+Wߛ4iҼysu FEEw>>\cw7r?ܹsfO>]ZZZfN2* 0w\Іg1ůz܂޽UwATώ߿ NNζmĤ[n'N8|pݻ3fСC#""r6xAûtҥKA Q*ѣźfƍ߿/u@ą n޼YRRrmۊ=z(--:s<Īo1bx=lذUdJj%,,l޼yu=}埋 NX|yHHHppeĖ˗/%ƍO2eѢE͛76'u9s<}O>F222޽Q100ibiiioocwwZ9;;1B󲥥wmժ  T1@߬[>7oڵk9RgPy¢oE@r9 ;JZEn.t UL*&)..jt߃n޼B8{ ʴm6&&ҮJOIIy;udllpB Sϟ/Ɏ?9 گ_BTZ~ʔ)ϟ/^n}~R`kk{СY!ׯ_/utUL=bĈɓ}511ٿ'Zl MPח/_)Ν;mڴ9sq[̝;{IOO߻wA(,,ҥ˶mA|XT~}y TlywڰaCAd2ŋ]ֱcG O2eΝ>>>wH& T*,&Nuw}׺2(7#G,8bĈ$%%Ue;w߿аߏ733={_~yΝuֱcv޽};wʔ;۱cc4ibbbŊŋUKHCxC<_ˍLMMãl(""b߾}G0,::: ? "&&FSN m۶K SUj*Swgo7nWsן2e-[4'e@P^AU٪U+AΞ=[8wYAZnynLL… mjiaa{{? yoثW/Aƍt^ӰԩSUϧT˩;:u… ׯ_ CCCN:a 8 *&P* OO5}tʨ Һuk\~uqqѰERRرc7nB٬.]ZXX(+*..o<+|֭ _|eMMM֢EJTږ+a>wÇ;;;j TŬYΝ+u/33s֭:PU}Cӌccc_tVhh+[YYkd6m6lرc5jk׮ 0a¸q T 4֭̓[ok޽{6mj޼+]ѣ.\hڴ3k֬&MSRRR6F+VqO?TiQ~^ҽ{OީSѣGKb JNN={AKKK4nܸ;w.;;gРAw9y/4lܸ*nܸqVVرc6m:|Ȩҕ nݺ24kl׮]򄆆_0-iٳ!C.xp4~zkN\"uJ8 @\L:,??QFR~]r{cQ!%%%摙W޴iSttw+֭[l1-|~3ϟ/ut UL_y{{fggaÆ A>,UKziJJʓ'OṘo֮]+7o,ugnٲe222z̙7J f}%uW޾}{^^ C]xq>}d2AJA9T1@߈߄ߊ֭۸qcNN ;vر{ߵ IDAT?dȐƍk+W Z~}feej7ܼ^=.Aub 蓝;wΞ=[|FInnk׮]p֭֭[koym̾]td_Iׯ߽{?lR>nW_}լY3.YD|b>&Mh7w&ٻkffcǎ_2dv@ goz  EFė ?sssMMM]\\U766zN:Y[[k7AZkfffii\}n/۷SSS[RRgΜzgϞi_K.պ~~~ZW1{wO6BcT1tHFbccU/ 'L0~G._~;,Y;w;G}ڸ|$j]jzIgΜ)..nn-믿.((nnӦMO>nO>n%LAcXPR2nzɓ'O>[Q@ϔFGG/_?a/_+WtU_'^B}ceeH ?=z˗7oloo֭ӧH fT1Ϙ1#99922m۶ץT3uф \qƩSJfT1tHIII\\_ 6|k:c\S m|ѣG۶m[딂oo7|S jӧOSRRwު1 &&& Y… b{^^^ddB033֭nAuogϞV1+e˖[lTL}̞={߾}^%LuDEE[k׮!!!P*666oeٳrk7!!!^^^-ZPsT9յ]@MMW1[j%ٳg6/[nynLL… ۶my{wG;qٛ?cť4tNzo?ˊСCV>믿:u$^ؤ_tIT}Ŕ]/{yż>>22r„ GصkW l_Hu# 9rD jc&MΡ fժUU˨vd2٦M;6vs_uDDDÆ zСC'L0nܸ2*=x`ǒ%K7o>p@A>Ĭ[n̘1Փd[n5jÇ.^8~~IC]IIIHhannTƭjذA֯__PPp={]RRrմ4 Z. ̬8ps粳}|| tΝ'OjEEE?ٸqcoUܸq㬬c6mt_ _֮];qď>HuERԢEwycǎ=T5t Z6R||؄3wދ-0as?͛7cȑ~~~Uh1%""kԨQ~``YeժUVիWӨ}iӦMk?~'NѼ uHNSb-T1R{C֭: ^ jW_}%UwG*RԆM6ݻqRgvvvnݒ:C={ݸq㼼<qYYY)))R@p͢ErAP*Gٳoqȑm۶IL&ATJCMzzzJJJvv]:uo^pn˖-3f̐:e@ߔxG жm˗[ח:@?oVGknٲe~~~FFFRG5J2::>JJJ[&Ne˖ Tܾ}?SR7nh׮ܺuK]SܻwO]Ν;[lwiiizׯ_߼ysuk׮}>Z]֭[333N6R]w}7011Q{gϞԩS?Yѝ;wSqϞ=:th =*u5.;;fff2YL2iӦ-[TU1+ui}Vvꤦ-..0ܹs7oTכa55ݲeSL~a*ٳ5e*Zm׮mV]kvmu[V;r;w=x𠽽ޠ덈U׻|tuM6U[Xu􌙙)ET1@OɓW\Ylّ#G:;yKh(q=W||s~FFF_z[hanDD2 PmjҤӦMP׫L%믿榮T܎;jRaÆىFǣJUrJrrB s?a'|a7|a 4T1׬Yayi]-^QCBBQ{ .\r^e2wݻwovv޷zKC-O?P?y``ÇnذYfzWUL[?,2MMMgΜh" smM4: P%T1@ϝ8q⣏>: ۷owN]tk׮nnnRg5kРA G9r㥎9JKK6۷O./^X CjСC*u WXXݰa|q)))?::orcǤC& c*&蛇I-Q}#v]YLԡ *&3:Qz)K@m=zA?3uUL7|=i׏:ZbjjJ JqGY76mJNN4hAg1@4kLb-T1:4...>>^ jr| uOT ɤT!EEE 4(((: .utg1@L:U.s PwQ}/u<b7T1P*&PjFիP(6 ><99D iZj%ub iFFFRPKLLL(aZڲe) g7oިQ# tK= @P!J2..ԩSRP;&˃1:ȨP,j\nnnJJJzzA9}oK::oF)/_,u2LR)uѣG[n=xA ݻ)))R+nݺ5}O>D @UQ}#v]YLԡ *& _}UMwޗ_GUܺ2LP 0@ jBHNN޲eA9RTZb.Xͭvzyu+-^MRPK7n(u tg1@9r$99ť\]gii٢E1??ݞ...YYYWڸf͚ .יׯwuuصk׳gvggիW{yy999ܼyS]JW LJJ tpp8qSfkk+ɮ^Zn[[۳gϊ/^411oւ 9992dϞ=Ċ},&;;s9q℻{vvvrrؾxk׮[[[ϛ7/555<l0޸q6ߵkWeϞ=/^'ԩxaccV\\\1ٻwƍ;faa񲟎 Ux:jÿkoZr*&*;v޽ХKkkǏ[ffxw֊55j(11Q|yywwwcc'԰aiij?<}oV.WݣG+WT1@o&LP( ei`R*qqqN:?ɓ'KC^ ׯ_YFA022;wnBBBiiG8npe5h`С+VqFBB† FB!5н{ .e[n1bƍeGEEܹSkn555~iQQQϞ=7]m=چ--u@_T1544̙3'00011w[l1cƼy*++m`jjjnn.^[[[nYZZkr|ڵ(++۳gϢEkcc.AصkWCCƍw}uݝAPd2٬E IDAT#lŬYJerrƻ2̬m۶>>> S@a'60111^^^|HСC:'_ -_WGMW*zcPPsrr+""pǎfff;io_~eaa>cnذaԩٳ3`mLLLtttMM&M:qēT0C HPYYch*&aÆ}Ok2f̘F= AUo??0ucoo[rrrXXg}& EZZyyy!88xӦM c^ZUuuu}`lmf͚ejj?ȑ#KKKuPo駟vR=ץfԨQC^uuuK. =zTHvQAviiiQQQ޽ooy֭իWO8իvvv;nnnaƌΑ#GFcٳg.ibxmllTkwyΞ=;$$DZn;z{5cR=( 0qЦ $11QϮ]oF1%%S999SN?;S]]-J<+@0` 7n=l֭]бcGmƎxȑ;>s}Əc$PooժMϺ&hYL06ڪ^m۶m">qM:u޼yVVV֭KHH6[Ǝ2cƌJUE0ׯ__jիڣG+W|':t5jƑS\\:6wܒviSWWUVO.N>}ȑ}YPPӧWZ5eʔ=?æG?jkk.^jժw_aqRmr釚$YL06ڪ.X[[7dԨQǎ+++8qѣ 80yd&$$\t)../M;[[[߹sgԩ۷?~|EE_mnnq7N8qaaa}޽0BS˖-;uTrrM&UUU䔗 0@c7}E&%S( B(;vHqƆ v%u@_c]QQѿ񣏏̙3ݻgcc#B>}v77cǎqƩF{nnnxqРA'NܻwIz-;99]v̬񏮺GhdqqqǏLOm۶MII̙/FEE>ےcђ8p@KKK777ShJexx!CƏ/u@/c/(J+E^^^VVV'Nx{{~۷sssگ_?GGǽ{^Ciifjj*^TVV(̂I&7;>thǏܹS.k͛_=^rgϞaaabznM*&WWW777bر111ׯ }rڵk5NQVVgϞ~o߾ xyyyyyt]v544lܸqȐ!ׯ_wvvY-`֬Y7oNNN8qbӻ2̬m۶>>> :u7o޾}tx`0ݓj0111)))Og`>06nnnnnnM׿:jԨg~~R|W_O;vi6m͟?/,,,g 6L:u={TltҤI'NxfȐ!><1T1xOk2f̘F= AUo??pu%&&ٳ^G䰰>L.+4>,BppMzjU5k#G,---//@~zI\zQFEFF>0?( ->=t"ѣGՋdGk׮o߾ݻiooo曷nZzĉ^jgg_|6x`Af̘;9rdȑ:Ɵ={:/hccSVV(^,66v!!!Wкuk۷oq(깮FaYLh)5QRk׮roQoLIIqvv1ENNԩS;TWWҦjkkϊ  ƍuۺuk?tQ[cfdd>9rcǎ=z{xx꘮.))[jm@m곮at9|Cx8w\.;vA08"66k޶mF-2O>7nԩS͛geenݺxKKKmߺukر!!!3f̨T[XXdF_jժW_}GW\O:t0j(#ٳ8++Kur1--mܹ%%%ڵӖN=FV4\>}ȑ#?쳠ӧOZjʔ)M{~M~644֖]xqժUw]~Aچ&&&&%%5;$/h{,QSSgkk+u g1={6ࢉuΣF:vXYYĉG]XXxɓ':!!ҥKqqqV_~iΝ;SNm߾+**ksss#oܸqĉ Pe {gu䉍Uwbbɓ'>ХK6x}ܼG.\Pt8au)((6lc믏7N d<ImmYMMY`(<<<222}sh!۷O>gΜ: "j'%; MQbU̢"__F-j1`T,---,,*++uuuiiiRgмZj"u UL0*VVVRgDY0*JҠ( ,&b"uT1%==СCRJ\.5jA08fRx饗Zj%uͫ&//g1r///d 444HYL0*yyyvvvRqxC< g1І*&#ePȑ#kkkMLsuMTK#a`LJJJ۵kw-8 F^TJGYL+k׮mذaRYL#ߏ1b}Yp:t^ ]QQ\.1bA08T1?//۷Kꫯ$gggL믿? ˗/>|x߾}###[yzzYΝ;#FEw3fΝ;vX~>C_~49rduuCޭ[ϟP(~炂ɓ'/X@_.>}ZW]]gϞ֭[_pAc{n֭Lᑛ[[[9sLm;-sl:֢ͺz $KKKA***]|Y]JA>|A}Q"ܹ>UUUmڴ9y֥ݽaGsww޽kaaQXXX[[/.\pqq/YD,Ɛ*$˗/:tms4fnM4~]Zǻz $@ACO3΀CCCKή߿g̙ݳiyqqqǏ#ظ;vL.7N5ݻwsssAPezzz||'ݻW^^P(t]w޽{NNN׮]53CqSNUϖc c-zJv<1gN:)JO A߆ ///++l'Y}}w)a4A233ŋ۷o:_~{RUT Q(&M4I4sl:֢a(55Z:fgff֥K`pbQt|:XXX;6&&&77733s'Oo 80++K^|9(((..F!555%%ƍQQQwqq177̬yfRRRaKKK}}}rrrUCDM37{ Mc-JypP瑎uO0a…sgΜy9''I&%%%DGG… 5 QQQ֭۷urrظlٲe˖988 <ѣMtrrZz)Sz+$$DuK=I1s#::֢ L!60*.] B CQ5)( F&//̌O1bQm7m_|Mz߮Ozo.\PI&=^q9rB016srrR*R`:v믏;V a0*zV1^'33V,׭\2++Klwޖ-[ E6m pmjTZZv>}WUU  IDATza?8;;d_^͙3'00011w[l1cƼy*++m`jjjnn.^[[[nYZZkr|ڵsٳgѢE} aر[iӦW^y]v Bؽ{Iڵk7x۷2DnL8ԩS ܸqȑ#ӦMS ڶm㓐`kk;o<]lmmyسg-,,ٙuU _Ϟ=?EIUL0*ݻwW*m߾}b#MvڵxGXWGGGǯYfǏaƌ?Snng˖-&Mjڷ~/xwJKKlҺukmjcǎ+W^z _s/_޲e /PB1rHwwwAJ+tQXXcmſ6m͟?/"33^{mӦMofق \xHiKKiӦa˖-AAAmڴtҤI'NPǻܹGJVH_GÇ/((iii˗/֭B1cUV߿s+VHJJjhhprr3f̖-[AJHH k4{mm+Vӧcǎlz˗/2du,vٲeNJNN677WoW(~׽ [.11qϞ=:%''}gr\P3g}O>bCƍsuuuuu5jݻw#aaa[nߵk}ӂ\vvviigu?:u޽{W}ԦFq=(~|Ңw﮻oyĉW4hĉr^x8XzO[Sm˫]vK.511QgMzzxuԨQ?>`_5/4uEؚ33jA}ٳg><&&fҥ xyyd2D{1w(--XYYe˖B߿u ؈Uvvĉ666 ׫z?~<<<|Νr8]v|zcJJə:uj\\n8::;ժ믿W_=zٳ]t޽{RRRkau̙666/^tuurk׮,**R=q<88822233͛›rʃ6lԩ߿_ڵk:lbر111ׯ (6m4#<<… n߾޽;껄'_h,]|Y Hx˞wѭO>6lx;GFF#4bekk{޽wJ`JJJ۵kw-`X̤xtw311y>X<<ۣ9j@ST1%۔)S Fo!""bѢEѡ>E[UL FE*I.]?џ*>E[UL0*W1,JSSShvvvvJD `TbF`RGIC$`L\baaѩS'xR 770d2ُ?jqvvNII]\\6oެU[[+222/MGkhST1j׮ŋ[ULhf͚T*[ULhlmmcbbkjjZSȑ#:fw=\޷o_`pb@5k,SS?EM qTTTH@˻|A08T19rcǎ=c)@Ks5kHUL0*a`>õkזZO~С>iiiV2eYWWWF[cLLN !,&PULZO}|}}㫪v>=,,ŋږqWWÇY&믏-:2/_|},**ҽc#F8 6g3:::88x ޿_&UUU䔗ىVZտΝ;X"))Acgꪫw޽|r!C̟??11Quwƌ=z055>}޽{5=BS˖-;uTrrmzeff63gi1ĉ SL֭y`` u$4ѣS'QO.]:lذ/<󌵵u۶mSRR;t0qDXavvvqqq\]]]]]Gu\56ή߿ԩS?[prrvZmmm%۷ť?螱O>⅍۱cǴM aaazҥˮ]~g! dv-???Baf3gjjT*U*0}555fffՂ  >]v|! rrrw^OOF5Q*;;['Nx{{L#׫z?~<<<<55U.SΜk pܡC>3vLSSS񢲲2$$$66vڵvvvg.--o5ZAիWtxXv:'D&ICYL0*#GT*7nn֬Yԙ3g\xUϧWUUYYYmNss7o&%%i묱Qرccbbrss333ׯ_?yZ%._//ݙSSSSRRnܸտm;Hyyyii]NN]bP'o>ԤP8 FZ#K./w ޸qȑ#UUUϟoݺ!C>+˖-۹seˎ;/O4ig[n&LhӦMDDĴivF9s;?xhÇ P#sTTԺuçMzk4իLbjjrڵ iTvA8yevRПL|-GFF-666((豌fs9sF`PΝ;kRgYL@sy#{5k-ZTPPf͚ ߿ۻLTjcƌyWŋ&7ި>zR;wSk\ ~RS`T`FP(uw1cF=LMMOwއbʔ)ݺu377 0aBrr>Zl٩SVZտΝ;X"))A&UUU䔗 0qͮm?iii˗/֭B1cS:aegg+6mHYL0*T1#gUw⅓ӵkjkkUOzzz||'ݻW^^P(۷?~^qƩ:ܽ{777=%%?3g΋/5hР??:m ߰a3]%,--mhhӧ8tPn۶W<,WWW#`8 F%44TT:陙7m Q(&Mz,?sN\.q޽PZZ*>i6 55ʕ+={ iڵNNNƍ^^^2,??_>Tquڶ*&;;;77vIմV^^^ZZkgg{˗/̓###333o޼$ӫڶmkgg'gןΝ;۴iK/kKhii9zkVVVm۶M)NVQޝEYF 0@EFp :` (s z %K"KB%A67\AYe~\6qkz{9}]0EDD?688X6&&f̘1ʂ ԏ| JrEABCCQA*++.\ؾ}{LvԩիW7Qg$&&&;vprr+--UP¢o߾F;v7uwM-5&yR~ 6t: bõ=x IDAT9G&ݹsGA/ƺ|֭7o: ͛)`_k;k֬%K 2ERprrjYhq؋ >? ={tiÆ \G bO77gdd(0h ++:,]T~ƍaÆ؄_tIlquu>|_YYeww+Vn߾x;ܹs*om͚5C(++[fgbbا5V%z마t޽{ :ttСjV*;l\|ɓ'O>uuuUn[=m>ّ&L7߼vڑ#G4<rsQ|7noq O?Tlwuudkoݺeeeu?_~QwqqIMMrJHHHDDؾsμ{mŋ*ǟ1cߙ3g G=sL=88;t萫y;ruuܹ󽽽=<<{;vUUU_k5Y;wi~S,IG5kbeZIQUvnj_~y˖-~rrrS<_wc8nj}<<<͛*&@ˠ\Ŭ~O:%~ܰaC>}cWWW۷omڴLuO?doo &,[uuuvvvgϞ?^xQ*WVVZXX(ڣb.ZH}ZԾ}6:55511>((HtMrڵkuuu Kw>s挢bzyȐ!999=zԍG<СL&V|,..nj| p&Ouڤ$7Ιf%Bjw]|FMOO6mdeeO8enn.~422Ry}\ҵkp5WUUeffrY666s>E@uj45&jD޽{7lr4GGk׮)>6^I5QU.B}jq_YgLTq}}rW*JOՀd2ٍ7a.Ze>[XxqNNNfff\\ѣ{…6mX[[[ZZ\^^^ZZmiiIhhY233o޼,믿rʪ۷?Ukj|M<M<9**ĉǏW١[nxr%C -ߝ;wnڴI~'ӧLE?[nO<@cyyy `PV\)bccuS8{iӦ_YYpdSN^ZMg[[ۘ1cƼ+ , kgTTThhhTTU=*W}5jرcAkB%0a|M[[[|}}mj%UFUYQ.55UV?DDD?688Xl9uꔏИD"Ay,A¿`HEEE},/ܸq}򬨫J7n:t=z􈏏a~iӦ;wN,1>UEEERi@ ^L0(ߪ6O`HVZo4աUV}g}֜C111}Q{^LT2uDÆ 1c lZboosiA3988<^.MQ@%`Pb`РAs= ϊRMji1R4??؜?\WWסCf*&HJJu͇8*IxR;wڵuD~iG;vP|ںuV/Æ ;z UUUU:wԽ{i xäIN8Ѡ]… Rtĉ ;wD"ٿ?ycǎ)ZRSSuUiv@ciiih*&3J.jy޼y}}ytHJJ:p@ǎLMM7}tܹsJ:u4uTssGBaѢE?c]]ݤISUѣG PSSyf .5 /0w\Uoftܹ)S|嗺h*&~駟>\SSӠtʕ=zNHHܖ,Y2hР={Κ5Xlܲe+jii9|۷}"#####'L O<$|򉯯kxxKBa8{^7\>uÇ'&&z{{{ƍ>}zUU_LLLc333###)SSӉ'd+Wj1G",\~vŤ"Dyܹ.\8{bݻwuٳ 4urҤI)))ݲ泷D>>>2HA/T1˘1cKKKGFF%%%-_<&&&..Nqjƍk׮=s挭m``ظp„+V8p/V_~}ll}||RiZZڭ[Nyf͓lڴ)>>>;;::: `}!!!zS |* z5Jqȑׯ_nŽ{6lK/i2{6mԶm[777Ec|||HHH>}vi&M0ŋ.\O5%***3[qP[&`Hjjjٳd77̘1#11Qqvȑ/3Ν;W\\;w~zrppXtirr\.yxxcƌԩM}quhرհ ްa KLL-[*Æ kгPoooFcAA &&&ݻ]vMd/N*={vժUZ?(JΊk֬9vX֭>44T7^C 0i$##k>hz˚ UL0(o{G,CYYYz?WAѣx`nn⒑URR[o9;;;;;2Bg)._z%GGݻw9sqt]aPB0`iiiIII˗/SڸqڵkϜ9ckk(6.\0!!aŊ8~ŋׯ_{yTv֭S999 Źo޼Y$6mζ~{i0kOd{۷gΜ߹sÆ Sy.EVlTINNnг 77wԨQʍ#G~zvv&wYTTdll?3cƌ7i2f|||HHH>}vi&M.yL/^pa….] n_"<8q≇{1P*&xWZnXSSgϞ%K 0`ƌ#G|饗g̘qܹܹ?իҥKe x̘1:u211>|x``` p O2nܸ.];V|⣎XTTӧSRRLLLgӄD".//ݻn,EVXlٯTe x{{+7 zk{m׮n)))k֬d~~~iiij:} _ŶEY&M222Zvrn<Kk*y'.---77K.9)g{:)]ٹsgƬ^zq=݇=z]\\222d2YII[o"''GΨ􄄄'NܻwO|ӡxt]lvZ]]]MGh`ǎV:~ʜ欭SSS⋩SWMM%++K"+XYYYYYiQG*WG:996--m}]Νl׮n݊ z_KA7n܇~xȑ^{M'OVղU+u(466ÚŻE<+P[Nm۶UдCZ1bWEcΝ?W.?=x 99_~Z̓*&[[[u/̌=z}RSSoܸ1^zIRYfeff߼yqGRoooKKlZ>}N<ٸ>cދ#G\jUDŽ.^S<6lXJJJmmիWׯ_.\HOOnӦb.* zJ$իW۷/$$$##̙3۶m555mnݺ6nܸ*%*zsfeeUTT\xqѢEC Q9޽{KJJ?x n||]n߾f|-OӧOСûۭ[7]e˖teʔ)vvv/^T~@>>?رcvvv ><""BB\޹s+V4Φrp53J$޽{Ϝ9իf nݺ:*&o:dcc<͛7o߾-wHJJ:p@ǎLMM7}tܹsJ:u4uTsssS̚5`%%%;vpqqQ3 5557oX~ ; 0o<< /0w'ONLLT~#Gg{$-ꫯv< -Wǎ]\\h)bAYrennn@@x deeաCK[lqww_bEYY*/_~I񸴴tʕ=zNHH>___WWK.5ggg'nU"#####'L BLL÷o.^ظ[SK\>uÇ'&&z{{{ƍ>}zUU_LLLc333###)SSӉ'd+Wݻ{3gNϞ====L"BS {n\nݺ={\~]}gA-" eҤI))) ڶm7(Z֯_?jԨ^xAe6I$ccckk~ܹb40U,((5jrȑ#_EFF%%%̘1cƍEEEҧO]nڴIK`aax *O8Qղt׮]'O~ٌO80Ph$Iuuuvvvyye޽AxΝ;?^z988,]499Y.쬲QYMM͞={,Y6`3f$&&*Ύ7K.FFFcǎm'{S3SN&&&Ç lGPR4lٲ_Ui\-,,[QXPP[MLLܻwovtKII _fL&KKKS9// !44toE&MdddvNAغukǎ}}}˦kVZZZ^^PhSSS탂gfee[C QYe^zw{w.^v)Tc/ݻϜ9ӸOSKѠT#XAP<#W$~trrR_iiiOIIܹڵ~ĉW7((H̓pk 0nܸ#GɊJcwVfllu]vov̯zҤISjȦFzzU۶m>|❔ rJ׮]A𰱱ٿ_JKK]]]UvnQӳM6YYY'Nxyyk[*޼yS<U*#׋UUUaaa~~~M~,)SSEyשI&ڵK155]eggZGE?iP7U<+n[Nm۶UTj;tyAF֭[=ᅨ_vٚ~iwyK(Ξ= wWTE.\HOOnӦ &&&f̬y~GU6*kݺu@@ŋsrr233F>Ν;o@6lXJJJmmիWNTH}9yX,///--V.7*wkj)M=%իq̙m۶ƚ6uGn  7n\W~ܹs***.^h"{{!Cy޽%%%ǏW쭌ߵk۷լc(OW\ɮ#FhժUXX؛oiggI1O$ܹswyBʕ+yyypgUL0(SNduOXee… ۷o/N:zj=***444**ʪN>AYllo``ٳ###M>w}*O2m۶#G|"""Ο?okklkk3f̘W^yeaaa˕5 hDYA qݠ_+;w|U/BBBڷo?bĈm۶yݺuAAA{Vd䉎Vsc>|{ &\|yҤIfk?l0ѲeLLLt2e;;/>aD|*I4A]4%_G0$voG,P\\\TT$JuS׿'Ndff>Sv8jԨoVY ؋ JƺxbO ###̙]<>wN:M:\f*((ؾ}{IIɎ;\\\ȑ#^^^}YAAu~׬,A7or6WWW54oСC6669tp'I`H_~};;;33.]xxx('Mo߾˗/+~E}7wg5nС |w*^Vr]++y NIҥK+2119rvgϞiAhD"^t& خ]G: bAsqqQS 77wԨQʍ#G~zvv&DFF%%%,a ̘1cƍEEEYXXxҥDͩFk*͏*&4?qttѣʍG'''צ͟??%%s{k'^ڷoߠ2A޽&SORsJ4y_r1jqrrdvRnLMMswwWsavvvHHȪU|||4? ?#G:t/;::v999r\)m۶ҿtA}:wÇWUU:odSN:*&1cƴjJ":t(00peeeO?~cԜ{r q:pռ`>ǎ/3gӧO[Nk&Oݵ.\ؽ{v׺1BkčZppp߿vזiwvܻwOk{9sss -UYY٧~R__/BPPМ9s^|݊UVZ͍ڲ2gϞ]`v׆h]`޼y۷Wt0`@bbvS888hkڵ]+ɴm]GZ7b `ee/kw1A011Z 筮.--k=;w~ܹ<):uzz $r\`ٲe6l{?#T\'޹s]kmmݩS'YT1p tG655uO]XXXFFFBBu= Nyڵ˨Qjkkܴ@@WBCCoܸ õk*++uB ʘ1cFǏ0`8ƺx\W]]/'$$TUU:PG"h`P@CAz*&UL؋ J,FbA -[:C@8})SƌC-UL0(iii555RTAUL0(/ @P/u>du UL5]nܸw=]@Pkd]@{T1:ЈD"A.:*&7PPZ(`Pbв@)š &0p@??6m:_~1u]G|^|E]G@Q?IR]@{T18:::b/T1رch3f̐d{u UL2aW:PRRWQQ `P^yLVRR L&{:)c]Z\Yf-YyGB JvӳgOoojA"#####'LKbgg'H~7\Gʣ dɒAs֬Yb{ee-[|||WXQVV=x`wwWWWKKÇo߾] ˗/?yC|'.]jje'[ll={:uaym͚5C(++[fgbbb㐇*--:t_o^vȑ#M- z+Vܹsgԩ>OO ۍ_v---DjjjץK˗ƙ3g˗/3gNǎWX!KII!11O>Rcǎ=}t׮]9sfhh$?ܹs޽~z+'MԮ]>+|ۃbccCCChѢw}Ν;[V9{l[x*M0O>?ah.]޹sf{CQ]]ϟ:uJaÆ>}|Mkii风:k,񸢢uEEEuuuvvvgϞ/^(JS9˄ -[2/e˖&Ydx|I{{13GDD̙3GQuѢE_~ill|m񣃃áCdGViɒ%Æ kj`0m&;C x,^zw{cǎUV۷]vZ֣G%###++䭷rvvvvv2dHEEENNM / IDATݻϜ98ս{wڵkuuuM85>}:td֊'*:::j2ˣKS䔛ԊAW;v:h"LsN]@P٦M,'A066W<~)S[Lh dffw8pRZZ*v322233 AH hN̏4x5Mfy{iիWuSw}߿HA4[nݽ{WA/T1pnZ.<… qqqGOɓb0??ȑVV?Z@@ŋsrr&¾}RSSoܸ1^zIRYfeff߼y399奥ޖىS!5O93?w\tUL5[doӬ.//oDՍݿΝ;x?ӧ7z b1bĈ#B***>|بKrݻw;QeeeUUUc{\.o%"djjjjjثx'm۶o766ܳgO.]*۷ݻ 4/zxju vuSSShFbxm۶]xQqС}]NNSxħ;61<( W/O>D<ׯߢEFH@BtULEcǎK.yzz.Zhڎ@؋ JT1@wP^><}'ÀڴicjjЊo@uiʔ)v@S~tFYYyiihУGh؋ 4//)Xмŋk;www++ݻ=<|_/]uɊ~~~]t100<|QQQmmmRRʕ+{նme˖޽[. cǎСȑ#SSS$Ʉ :u꤯8p #Էdɒ3gΤjVI$斕YZZ[e7ME"+,_*O~;DrxɱtPtLNNNeee^ď***LMMApssMMMR'~m.]3*32###111;;L&=Iݻׯ_10(#Աk׮kמ:uJz,/bڴioftt7hj,999jYxytUL@=<<e,Ν;.]ٳ݁~SII/TUUdW*6|}u ?k֬3f(NEGGD%KL8qɒ%̬?}llرc 0o޼`ũ> <Ayݻw߾}{_Az믿. 377ٳ߸q4r-[tvv׭[Wj͗EEvTĤdcc#J3T:@__~suuv?ruK___*j;<[/^vy@Byv0]CM)*&&&baÆ8q4 `ᅅ3f1~׵kslbbr޽-[=rǎ =zӦM{V yW䉉QP˗v),,_~Q~q r\Ѻu/ݺuի&Kׄ$$}:i; gnqqq@%$$[nv@#h^|||pm]m4[T1@w\|7v/"zV\rgÇoi;Es$~!C\\\BBB\R. dmmݺue˖Ƨ!33S<>s⹾krSPunh)^6x1߾};%%Ν;ӦM+.._*ڲe;ub 6 .ZnW^]j?>>>55gϞ ;:::twܹ5ky7QIn[*Ι3'&&&>>^۷oϜ9yyybʨ*;74S4*#_@GGGMYWMaԩ)))_>00\\\L2`m4^LÇK8022299YqϯK.ϟ/**MJJZre^ڶmlٲݻwo! @,a 0v:9?55IL0SN\+HC:Juww766?fgg{xxă;w\tӳgϞvvvO%%%...b7}}}񠪪*88X&eee]z500PѣGOX>>>;w,nQ~Vc ũ踸=z(^dɒ'.YںǴ;v͛8'QoIKKr-[tvv׭[& T fnn޳gO??qƩPP$|5DY2;>3 пSNi; sww?wٳg{IWWט??g 駟Λ7/:::&&FYhF؋ CEUt PtC~͵uyyyi ={V@73JAh^b 64ŋQoi;t%L㽘;]fddԺukmgbh^UL?۪U+{{{L)BUUD;|_ vĉҀÇ:th̘1jJJJ_׮]kΝ;Wɽ{Zl9z;vyӦM{V} yW䉉Q[T7r?v(๱JjTdffm۶MAMIx:ׯjJY4#'O }f'066JN )**>{0!/GG~M)K 4Cz}ȑ2m}o߾{iӦ9299YlIHH044x뭷F}}}CCCGA555&Mrvv^zuCSL2E&}b]rSgjЭ[(hѢECw!H0Bii}=zAH$Rt.\֭yE yC񝜜̙ܹ={6tkJIII , Z|Ќy>}ϥK۳ //wQnqFnn&seW^r%00Ndfff/?~uu%}ȑ#yسg_Wmy м̘1_~vCYYY~~ 4/T1@w$'';;;ϟ?_A4۷owڥ8Ꚗ\/0%}FC={|}}[jeoo/233AұcGA.\dffs}Ϛ5{bȑ#?rcǎV?j>D"IIIQ8p@"xxx(wH$vvv{9skCBBoPs#HA@BtGiii~~[@s1wܾ}j; F.WWW7t).3:t,%%mڴIII122*L&ϟ?1?`ӦMgϞQ9~TTTAAΝ;w%Jɓ''''+z;v(88X<| A\]]7oެߥK ,tҗ_~YTTԹs˗/+Κ5KqMZH5T1@w8-^={#"" AعsX[bӧA wrrzKn޼kggrʕ'&&4ںu˖-+++mݵkUVݻwOMJJJV^啘uҥ ѣGTTTQQ\]]?!C<111ڵ1c '++L)TLfaaѻwo! _Po^xq6m.ѐ\.6mȑ#z0a„*?SLd_u``mw5p㗖۷o=z055uww O5s||;ckk+5Bp̙BAn޼yرq)wH$666KJJ233PUܝ^LT *&2dO?$NѣNNNǏx k֬ڵ5k~qŊaaaϟ3۷gΜr;wϾbWZuSN-^XMSRRVXfũ-[lذW3h֭7n͵yyӦM?åKOy]`͛.\XRR`nn~|5>Üe˖-_\eSک{:= yF??7nիW\aQ oo-[%FI&NjKJJ3yN!2227nW_}%BBBEC-NNN'N׿USSЅy *&+n{lO{{{77ׯL:ѣ*Jcǎ=zt֭O~:g%Ƀrss,--{-BmmmRRʕ+{նme˖޽[.\ÇK8022299YqϯK.ϟ/**jh: :u꤯>a~񒀀qoX}ARRRHHHkjj.[lȐ!nnn[V?~Cӗ.]ڡCL6aݖ/_~V5W (~,((P9>x`QRSSCBB֯_,>~amڴ2dHnٲѣG7o UyС%%%ǧ߿#,,lΝ9{l??+Wj%ULT1ݰvÇhY&9rѣC\r OO^ۯ_?m۶ׯ_Y&---99UVOsrr~m'''''aÆ_tIerrr*++{p̙ 񣛛x`jj*JO8tbݻO_D-!!!۶m{޽{rrrJJJ<rY\v֎ٮ];A233ŏ۷W9ߪ`ee5}k׮7 @\To1ңSmmm=OuFF)vذa ̙֭3Q>;G8prL*lR@ٳxxxl߾)k.}\]]Ҟh%==}С!C:ԴTP1~Kj;78zѣGe2[qqΝ;hll\G5Ν;{iggwTRR"\w8''Gajj*~ܹs%OOO5= +9rdUUUFFFBBBppp_իթS]"(vI6^̰0+Uڷogƴ4]]v;vpn$[pÇSLپ}{ff CCǯX~AAAߎ?^[[O?]~ A022>|իziLLO5NODnݺ8q ٱcG\\%ƍ>w{9s;yd7nܘ3gNNNNyy/`VZ 6LazzzoCP|С)S?%kjjܹsǗoZ@[PPP\\cǎ+WFDD111!;;{ԨQ}ٻw/LuŋiӦʿLb  dmmݺue˖K.4hP=XKKˑ#G*憇;99[+**_~{޼y.$$ʕ+*3M %W{_]]}ᒒ#Fzׯ;v+'$_ܹxqFAN<)~|׶m&Æ ...{O믂 TWW+?¢M6cƌ#F9s}nϻu6`bK\\ܐ!CZlQPPf:5ѣG76E+7*/iYYY||믿nff&U)U\\Gyxxƚ6tΜ9ovvvCot>|ٳ[~'??vڙ}'Gwɓ;udll2yYĽMB.^mH֭[Cݽ{~;t!77?ӧ؞}"ryϞ=*捈x322jjjΟ?ᅨcJҴ=((>hꌦrR5ouu…bcTTT邃Ν)5hkLL͘1Nc͛@+O:?/۫O8ѣGA.]駟 1s̉'޹sm۶֭{w,,,׺ PQQakk{GGGCBB\\\ϟ/yƍ'BMMM֭w=h '|"w}t5w}z.+r*++i%=w^c'lUvС۷װ/b…<={V.===IKK/MoFGG+ޗT*8q"(((###111;;L&3''dO)^rܶmׯh*'U|ƍъ&M|^V?7|뭷T/++;yduu*++{ս{4cL{ǣ ЩSΝ;k8WIII Ê^U^^%cii)Vrݻw;у߿ث^?ĉ?={tIq>wwwDRPP${1ܽ{O? ۳ߝ;w.]YUUzjKKɓ'+(ԩSubjNy456|۷ocbb"Bv_<ŵkڵk״xxrT1@wlٲeٲe&M裏@Ӊ۳|||۶m۶m:g=0uܹsi;Eݾ}>ܼZkžf###cc^eaayk(HEB& IDATzEQ| >|՟|ɭ[vYŋ]illlcc 0࣏>իQRReii[M>}N>=n8===o?~g[[: VOy2IޢE_Ǐ1b*nݺ]|Yy˗/w֭Q뉧*&{?+xH6`cfffhh؉mG}}}WiȨWYZZ6捝ĤEJ"4W^yԴ5OD"jD-ZwN8UQOOo„ ڵVRxi}qqq}mѢ-ZTCee/^hnn>pu)NEGGŅ7.55U{{رc+68~ .2dݻcbb-Zӹs󟍪bMj `hhk׮I&d!C,_\dɒƬ%& XjլYbcc@?;;;++KR(:O|ΰDBꫯ_O:?/֘111~~~Ok@z葛ƍŗ?~|ƌϟoi;olsryA4h%L.==E}E+- *&#ɚW/K߲ '+++//o͚5O>?۪U+{{{L)BUUD;x`SSSTꫯ>ȇ433KII9x`6m|||RRR$""")),,Сôizc^{K޽y˖-MH`}̘1_>|гg&,ȱc<<cDbnn_*щ' 0qx6JM,mQ(cW$6kOXV%v)7ۭm]"ZFJJo71$_^;,jjjlmm_LWڧaܾ}wͱcǤ255U|;z&dOP^nܸq^*//N' O'l---SSS1l޽{y,E諯Zfhݙf͒< J򈔕Fkرcu%K FttyjhhlݺWh_v05sw$6olkk;hIq# KPPׯ+**>}:  e߾}999n;~xBBQ/^XhWgR(/˖-hjjz*E?$Yqܮׯ_o'Otss#̙3uuuW^LJJ駟N$4ۤ .:uhժU,]V0XCCW\ܜD'!7Nj9ӧ!!!<زeˤI͛'*co>""BGGή׾{ׯ)))jjjQQQd#رcypppuu5kbbB\\\N8A6@___ ZZZY,ָq㬭]ZLKKK RYYI~/&?gg眜'O ɋ2{{6UXXXUUtR5ypRUUz$IZXXhhh={8 yWNNNXI&j񚚚/j(yyyOO/rL&Ǐ4iTwppmmm/]tRIMMMBs1cƜ]Z CcǤ-*NMMr;vRL&Wc``Md CBY̸qSIIi̘1ҍ9zheee5jFnL h4ڨQSYYyҍ9f%%%|giMMƍ7R(.KP\]][XXHk.2Ρ#Yg҄b /7nhll9s`fdŋg`^v-44.::1ߢ ܪUx[y%KDDD Y``/&aÆ+W̞=[ֹihhhhh>>~PYݻ'N}5jʕ+çM&ìD ٳNwN$EPy ݻwgɒ ##GCCCEE˗/eHÇO8A{͟~raSRRfϞ5hoټWUUb&MdiŔܹsNNNyyyGBb6rK$W_-Z͛VVV aÆi|[l޼VZ8USSs)v.)Yg9ycǎ~jRo*&ȁ*&Hݽi&/I .ӓ?É733c2)))d;رcypppuu5zQGGGSSӸF^]v999矢fLIIqppPSS֎Vhgw~%Ik֬IHH8})S~r`tt9sLMM ߿ -Zظ~aii.ꁈJ2/\p,X@~jkkWQEٲe #.//i` 02()): JJJN;999333YgAX__PWWw᜜##ݻw5{ihhlڴ*..ȑ0$$$::СCoذ666^ЄYT %I=BQUUݳgСCYYYAx{{`jj=gΜYf?pK,3fП`Vy9&w"Burr3&))ojjʕ+==='Nا }##C|| LMMe %%%CCw]t8}; ٳ N6M^^>((;---&&JOO/***33w܊+Ξ=+tF fh45A ,QEIPd S|| X޽{_wQ̻w522{ !5jܹIIIO>/]fbb2~tA C/,,?u"02N5kVQQQKK [TYYаnknn.++#͘1ԬQ]]=;;;==}ҤINQav($IR(K7ǟ9s&yMyy J2'O?V___pC#G(ȏJ[ZZ/_J@ ULC]]P TTT,..&?^vFYYXXXH^444[XXhhh={8I&uvvy䉱Ab v(MNNnP ɓ'wU$Ϗ7gϞݻʪ,11dJ}!$T1]mmmAiiiGy̘1-(+++,,LLL\lnNNNvvgBCCtuuTwpppaaaOO333^iii~~~{{:F#BTX6J$Q˜>}Ç{>|p}_N:~ =x𠣣㠾ULw}||={8~xܹsق6ngn&$$+))eeeޑjjjvvv/_Sz&L7nطoB; ᢤb7n8::5kMMMzzѣx} sEEE/_+WZjGu.`0]]]e33${{{ .]g 6J^L%88ݻNBkkkEEE7 ͛7.\8i$MMMEnNjkk3u\ZZZ4/ fϞ=o޼fijԨQ۶m۳g166v۶mÿI 0DFFdY'",3UTT222Ο?윑7~z򺤤ٹǏLܧ)zu{1?s挊TVq޽Y'"NuuY?2IiO^[9yEEEūWd pqqIOO'[T?^)QNNJWy]]]W_vi fϟ?o}+ ׯ_H+:JKKAWWѣGe eҚkԨQ'O&yb6-"Ž~!ӧOl$?~!//|$SO7T1FT1eUUUA0LFcee'$$9sFUUu S\zuԨQ˗/DYULFAAALF;;rEEŁ" |AzܹSpO?ӧs722R`pŒ3d EEECCI& <>N駟LMM dٞ{uttF? Owmzmll;&0T H IDATliE,<>)Ν;vrrW2*&ȱ}roooY'2@PۗYPPp-??Ǐ'$$(((ŋExyyN XbΜ9waͶB$yl߾?'w!#qdƼy ^z>Ǐ-[L̐k޽KTQ)bcc׮]t ,F;;^ݻ_N^888ikkGEE cǎd{ll Fsqq9qf |}} hiiINNfXƍ~ٳg .?,M褢2y򥣣ogg,O`ڵĄ?1^.\p,X@jkk7@/r\&$$:!-[ߖgAlذۻ666^*//&`ttt޽;;;祧Ϝ9SWW7//oŊEEEAXZZ-_7((x!Ǐf03gܸqʡC+Idmeep?PI=rB CBB^zE&ߧWJ7nu#jiiڵk?AWwwwJJWX!\E[[[nn;LbP(v6DB uڴiAAA%%%vL)SPT77,]]]?cTT6ycɒ%ڟ~ٳg%\Id~-&$)HNNnŊ$v]#####wJ8l 0]x˗N7t:o ?.mcc{? Ybbbb,xwܾ}嚙gggO4ݝw*AʆAM6mɧNu`b ޚ5kyW[[%BN*&$W ͘1Ԕ$ɓ'뗗K> 0lܸ?u"0+**>>T*U ǷUWW8qBOiii~~~{{:F~YhhnSSa24fi̙ׯ_'|򞞞_~K޽۫FDM*&1cƜ|ÇӧO'Ҏ9"yhnnu" )r_%Ϗݾ};wPSSsuueXT*NGGKJJ7|„ [^^tj>{c'Nܿ͝5w}`kk;f̘+Wn۶WұcΞ={߾}[ ˗/'_E!''+OYf֭NNNiii۶m+..666'M$yڽ TLAPիWX܁Ν;;ܸq#22>w˗/+nVx_:|?zjYo?d +WP(7n6++ͭO<ٿy}||Μ9ӿ)))-؀o}ϟ߿!!!k~7NNN- AAAׯ_`DGG:a,))|K>쳒yp/؋ 0r WG>pW_}CP  AlnnիFL {V'ol7bcѣ=ﻦolGGG}YEEE{s0A7o~?(aFm۶={Um۶-f^L/99ȑ#oƍGllsAVSSMģG~kԨQQQQƲN`Xɽ:X'3c/@TWW3^6mSTWWO< *===T1`$'':?2@FjFQNo)//{`0008p;w/_NDFF'|$#DŽ  UTTdH?X^^vڞ+W@$bii*,9}ޖ704cƌkΞ=[։H ULp gjjd2eΝ{OOO[_|cǤCoD1lQΝ;f2gΜٿ?yw?ܾ}ϏGLR_B7C`xyŋ9ΐ`0̙cjjZPPzQGGGSSӸF lv``/AZZZ/_&#~O+صkߟ9dx+ܹsN1[ھ}>H7nK,ޱc ˦MKJJrC%$$ܿ1<<<%%%..W^ "11411ѣGɒG#ȑ#IIIl6[]]=::zW6ioox䉬NכɾOQA<{l…_uGXr ^ϔ555mm^q^|y`Qρ`߿-jllܿ?LOO'GDDJU)c]|bAAAt:̙3N>AtwwXYYEEEeffrE#yyyɭXٳRN-G겯+2BDz㷠 FݻKJJx_uG(]]/^[ 6444ܿ…A*++Lfrr2J=w~8,,ߟ7$&&fōs)..>|xxի Xn]qq˗v?]JJɓ'>XB(}nnT1FgϞUTT:xڒuuu/6000007o^ss3+~D#͘1Ԭ;X >d7 [PK,Oɯ:/ǔ)ST[VVA f755h4kkk^[n1̠ Fƻw:,ZHOO`899ϲ`}}+Vܻw믿?~֖cǎ)SX,///+Wfeeu ]ݻw%AoYo{ׇ`dL&F8rrr䅅ٳgMMM{}}9yo0|!!!3g$/x_o"dbbBnb̚5#t~OIIvZKKKSS"B]]=;;o ?K8))`[ W^->[c֦꼏շorfffd=oyȋӧ~?.;&I#]v}'[lnp*\XXL̙3_+d.\0++СCMرcu~8(a7^߈|||X,VaaaUUҥKy_ qvvy䉱ox||ŋ_~ML<,--)Jee%Q;D}QwtttD---u2?A:8fCCCQd.22ɓ|}~t[f֭[555&*66CNNNSSLJU^ZZ:vٳg۷?JMMM]z5urrڹsg?߾[[1cƬ\r۶md{jjjhhhGGܹso.[hR_/ݸq#22r`xYKKĉe HMWW?sN2/C[[[kk bTYY)f <uA&&&^vfrttuҥKΝuwΜ9 ,uԩSǏuwɒ%^^^9>uwu͢o߾]ݠߢڵ+,,L͛7ڵKݻw]c`%%%rDtg}VRR2#ĉeHSOOOzzW_}u] &Mry1'%%%]VL}e ՗D1u15G{lzzzob^vM̓rb<uwʔ)b/^uZ- +**Dݭ3ሺ+ ^*~͎b6b{+NXlFL&Fm۶={*fllmۆ @`*,,>AGnkk믿/^s>j@*F B.#وI bd`` fԩSŌ511Sm Yf:88;gΜh1Ō]dɔ)SD5113SLR___صk =H*f?cQwČݼyJxk׮]vmoŋ/^ܿ0<<cYgo7cǎ0KK> } Ä!q[:`c2.\u"0 ؋ 2yfKKKr]]]T*U*# 999Yoݻw_~NIIqppPSS֎Ғbƍgmm  Ftt9sLMM Z[[=hjjH511h...'N lv``/AGDDٕ c^LULZNNN]]]։P011)//=z?z/O}} Ο?occիr>[l)..޾};v,~С, 6lp޽8 M6UUUb cc=,,ldp׭[q>L^s0=PWWW։wL1}(J{{;njjhֽ:tuuQQQNNNrrrfff-wwwo/iii111VVVzzzQQQ.=<>>,jҥM {zzP(d7]*&튊4WyyyOO/ҥKwޭՇJz{{<<ƶ0LfyCfΜyu)jڪO81T1hmm 0aNqƾ}DGGZj۶mMMM}"#####._Lfllf͚kjj.]Tp ;[[?pŊ`8pp֭kkkuuuY|޼yt:=//OֹHiӦ7:`/&|mY'CDzN`xA`酅Nz666ǎIJ82͛ .4i&"kkk3u\ZZZƯظq3 Fhh䐐 rYثTh6l+޽{nnn***fffѯ_8РP(A<^P9jjj***d\ngg7olkk;Hە-<{{{8;;gdd(((4b_.))qvvn)S(++ "88ĉuuubёlaaq! w&bZ-[:;;ʾjcc 믿tvvٳo...2## É733c2)))d;رcypppuu5zQGGGSSӸF^9s昚ƚh4'N}lv``/Aw~3ٵkߟ٧_~B{n8ZZZvEEE***5RRRԴW"! pqqIOOg2^^^ׯokkSJ%xV^MNի3glڴ\YYߟ Q 8u=xӧ>}*3A$Q(yyyuuYf_wW0]v-:}ҥKǏogg:{l GW؋ ##X```nnnFFݻcccy>|[nijj)))qqqϟzjDDC߿訫ŋu֕hjjѣd39rHRRVWWZzMcXsΕ 6D IDAT444ܿ…B+cy> a233{,//]]]>}f%Y]``Ǐ322v7ncPPÇ%| cRR̙39"ɐ~[tk?.]ګBI2ȃ,[ULY,:;v`0g JOOuuu6m|PPPIIIuuuwwwZZZLL^TTTff&oy1e*斕%>7xyyɭX|b_#,**ʢRsBioogMMM4Zh7I̳sT~UUUA0LFcee~UUU1ݲOY,Vnn򋷷7Aއz~X^i̝;455C>9sǣ{tCiʔ)/^y9_#7|ӫʊ8k֬5kִ>433#ە tz]]ŋyOIIvZKK CdƌdfmmmWW@zIMMݻwիWW$ MIKqq̣&In'O&U4\}}}csssCCCϝ;7uT=UUU?O?ŋ5554MhΎ //[s? !G|55cNJC>~M؏GJ544I?9mlldHbqq1ڵk666_aa!yPVVfoooaaqGp8ꚜyb .]i'//L^^zɓt:]h(]]ϟ 8;;w+444!!\IIHooH555;;;455ccc=<<0ޭ5kܿ_SSsҥg2OY__! Ν;M;v%5<<|„ t:ƍZ"CVSSFIIIy ^z>Ǐ副_{U_w쬤9a„%K?~\ GvZ^+W"hiiegg>蔗oLbb vpႵr;;;%yf[[Agž3//^EE%##::: McXׯ'KJJ<~xʔ)B&&&}Z)Ö-[:;;/]GE?~|HH+//ohh8y<F:T1FӧO:>offd2SRRvcssjѣqqqs155-((511h...'N @___ v}7fk.'''???Ok5/7--- r^qRRRԴ/\hgZo_QQ`|A) 8$zr\\\әLurrT&''GRk%%%999-իWxSz̙36m277WVV'BTp N:r*//ȏ]#/@jtttd ?u᜜##ݻw{ihhlڴ*..С, rssuuuVXacccllᅦ-_O9r644 &IApR^Eۻ׶ 6?իWdЅ ,*t'BS|2O߿ҥ-=͖dp``Ǐ NrܸqAAA,KOO1<==gΜill|ȑ7y#W?N6M|LŋSԁ' .^Lᮣ;v`0g JOOuuu6m|PPPIIIuuuwwwZZZLL^TTTff&y4Ad )SPT777܊+5Ȣ^ fh4Y[p6Jw}ƔHٹsma.\ثgUUAL&XYYƥ%$$9sFUUUL,??t+sEE/MCKll d~;w;jԨ7裏8 >CA`+..nmm"?Κ5hffF^(++-^`޼yeeed72M6mɧNu@21cyY[[ݻ7''G>i$wwwr ,Q7D&0#Xyȷ6%ů+777444++kԩ{~׮]uwwsohhhggGWEEů*>̫^rEhIVJyYnn $///+I UL֭[/^lhhXZZ***]fccL~,,,$/-,,444Ξ=ow"yb .]&//#L$!&BI^I:.4sNNΓ'Op΢X]]ϟ񇄣d$3*Y}}}:O?7fggkii3ܻw  [vtt&tuu>|GrŇ;v,R-$+UVV=zt/Y|1mgϞٳgO]*&|M^˘1c-ZQVVVXXl2ݜgϞZYYRToožϟgff NpL&Fc3g^~])>I?G\]]`ϴ#GQZZޮNp6pXpaVVVgggMMo&េ,ZWO o߾OOς[n?<ƼuLDAM"{C]l֐1~F3ccDܓˈĘ-m ٦ethKRi8nsu:_|u]{w ضm[XXXݺu՝ѓ'O?f̘ѣGR_sݻwSNC%TU>ydDT>?9sF|xȑO_mVn]u}CݻwJJʱcdž.2eΝo^fM|r9rd&M m۶ڵk k׮ .-[lر ,PxROi]Kґ?.H0^7THoGu)((ϧh;rÇ+u]aaaڵ 1:^L:-??qR  b044,***,,4006IjjgӧKPPP(Appp:B/_}zΝnݺW߶m[uqㆺ;::={ljjޮ]بrA۵kפIu>V۴iScccuNpႻ{ǎh*&HϞ=#""AW^I"Ϝ9w^u}ԩHs˖-"s[j%R\l܈*… #""ٳgСz Vcǎ=xM6 0@]Y?믿V׻p˜u ,TwҤIzS}^___{{{uթp'&&>{L]\.733SכUPPظN:z+LT*JjS&G͛G5UL̶l2?100)5 0}< IDATtRFLA;u꤮W$!CZju"svj``W)Bv?WLuppPkbb"2W_Rgee) x%u"7A._5q&O,2رcS{T1+2s"?Z~ܽ{T12D]̙3EWǎ[:栊 5X֭lٲx? EEEK, pJnݪ|8N!!!44RQ=!Jq8;;o޼977WHT wUn]#PT1%>>>::ɓ'R%o\.ϗ::*&n/|}}Ϟ=+uZrmBT*@##ɤh*&L\&uPWXPJ(bP{1@Op(ޠ z*&5{1(; WWל ВW*ʺuJBUL@oHVKC􄙙YbbA.' N+PKxڷo?qD:я?:-i׮\.Ζ::*&nY`3g@KܹP( zѣGrk׮R/G& ÿ(PWPPJb/& fPb @ E, puuζ:-+..~뭷>mmm[h$u' c/&RKT1я?:-R@P-O:-IJJR(EEER@P=q\M TFAAB000:x92LR)ut{1@OT} @FULj(bPw=AڵjҤAh狊5j$uҥK.]СCh*& XphC/X*&j 'rybbb:u@u\Luqpp:nnn;vx%^2!=<_]]]T8w ,YұcGU~믿&''>>+/UowܩP(:ԠA7nTC[l4͛7 N:~xuWLuQKTݘ ?yaÆϟ/..~٥K)W^-[w~3f̬Y-._CВ]:88|hkkODDCBB[OВf͚ *u*&jC)^8;;h޽r zӛ7ovյqGEnn1c|||bcc VK&\IcD>|ݻ[?P-߿XPP`hh/#88xzATG޽{-Z !L&P`௨bP}RFFFyfllիرꑍ ܹsgk֬j >|x>={MڵN[\\={_6333==4!!a׮]%]Cj 4nׯ_?~x^^^zMMMԦM?Ct„ ONNaƷnݲkQ?M6/uP*&艗b 7mڴ)SǏ5 aÆٳ'---((O7nxA={vXXXvׯj\hE6lإKkZXXXbĈ]v3gΘ1cJJ|ɱ,X߮]N6m _>j^pe `/&ŋ;vpY)44tR]\\֯_߽{*/}Lr:e…111 , @o$''hB.\``"艗݋VZ_lYuo+V̟?_gPXX82X-z)75:bh׮]bbk=JjjjaӧO}jй1[nRx]^z͛W/kdhhؼy6mڌ9rNNNR'twжVZPZlpp0w}@MQKo##9sPTT}mێ=RtUL ?䶷22bH?/ݢe:;;o}Th\.OII::P?={VږYXX(u mKOO:fffJB{֭[QT}k.՘-[xyy9;;\2##C}Wϟ/YaҥގnaaaaAHOO_j͛/y=z4lzŕ& ٳûvZNllIVVVٛ6my뭷ڷo :---88Yf]trJ%2؋ @y=A...iiiM6|0ggg={vѣƍ4hQPPիWW\ٸqӧ'''\RùܸqfΜaÆ^&-[L5&000--mO>ѣϟ?OLLT$߰aCDDǏ5kv֭[ iӦaÆܹs.\أG /bҤI111SLt<5kL b yEEEyyy1bD>}lmmGu/vȑ5:uTQQΝ;/_޼yŋٳd\MB=UVF:rH qrr֭ۧ~Z~L&KHH455m߾ ɇ*E߾}7m$B^^Ν;ʬ_XXg...뫓boo3zhMf͚988h9bׯ_bbbXXAhIǎU/ryԸG 8ήW^YYY7od&Go۶ꅅ qwwWܹŋK177߿]wxN:LزeKqq?hffֳgKxՉW*...ݻw [G8Q􄉉I[)xc6nȑ#ΒpssW^\\ Ν066.3ٳgK. HHHOn``P_~'N<~MƌSkYwww33gѣjWM&%%% s1^7bڵkO:566{f##߼y366vÇWuܹsƍ \~yyy377755}kW_EEE;CCÑ#G~~Wԭ[wޫVMMMݾ}{ 4A@?-ZѢE 6ҥKLLy{{M6-00pʔ)~i 5iD._paڵ/< **[n ϟoff6v̗ZoĤSNC 5jK] ,Y.6o>tqqiڴYh˗*uz?_dŋ͛'u@#-?}}}O8!uZr]B'utUL3f̐:-55ծ˗Kz3@Jjdff*ǏK@fccsShۛy2L@i=S5(5ULT1؋ @yQUL@omR dϞ=yyy͚5:}ֱclj'K{1@OPƼy󢢢[ncee5h RG_->>Uof͚988I>4hкu+u@S=1|p// H~5kuYZZFEEIj5h'4h`aa!uާOssgdd;99ڵK5&''g˖-^^^+W|ny_}KVXtc@@[A?~|XXAWZy漼n޼G 6^xx WX:E瞖ܬY.]\rEC@5FZ|yXXϞ=;w|q 4(((ի+WlܸӓW\Jq888̜9344tÆ L&333[ljL```ZZݻ>}:yG͘1"iii}ѣG=<}lmmGu/vȑ5:uTQQΝ;/_޼yŋٳGJjrѣGj`ԨQG)? ??!!!NNNݺuOodyyy ۷A] WبyJϢȐ{{{ѣGkrPT1ta;vT%oSSS=z4p@;;;;;^zeeeݼySl۶ꅅ qwwWܹŋK177߿]kQEJE{\+R#G/^::*&n/}}}?^E\]]7n|ȑ;JOOwtt|U!+V^8syxx{wn: @|kΝ7nǏ˫WH Wبa*[n޽WZ}*/&A(3bP(iiiR+-ZhѢ v%&&F¼M8eUO?~Arrr4i"/\vZV&1o511ԩӐ!CFU B~׿5eʔ?x͚5RgP-G޾} IDATmK6ɓ{!ut{1@OJUuK:PpGY3:ՠ 荶mXZZJrTOO2ӧO$6im߾=77Z 'bz#(((((HܹsGKM>wH%\Liii5: Bn%u ֭[$''XYY 4H;jx(T1tŬY:u$>fݺu RYPP ɡ_7=>53gHB@"ccnn޿p'''77]vlٲyʕ-﫯:| K.vtt u Ǐ ;x𠽽? BzzU\\\<==7oޜW~YKK˘/Aܼys=6lhmmxJ(44gϞΧOօ˵b GGGSS~m߾=---88Yf]trJ핞 ENNA!R}]hh~8gІ˗9;;ٳsG7nܠA^rƍO>=99yʕέ7nѣϟ?OLLTц """\]]urDFF;vlԨQ[aҤI111SL)]Sd (JgΝ|rΝ'={P(>}*uZ2bĈ>}ڎ5ի_~ȑ#5jtԩ;w._ݽy/޳gOID|&G=ztV Fuȑ<ԭ[O?Tdb2,///!!!33Դ} СCſ1b}ڵ!BnnndddHHѣUյkxjhb߾}}QddAMvfo;^X[[rss󒷩qqq=8p`7o:::V:WmV)...'']sǏ666tqss7'O~fϞݩS'3Z\Ǐ߼ys粳333}||AW*...1ݻwWP׮RA؋ z*&\]]7n|ȑ;JOOWͭ^zqqqΝ(_´yoV{wn: @ ^1c&''6Lh777LVKu*<5T1(*& hӦUu]ԩSccc?~gϞWPFFFyfllիڹsƍUQPPp޽ 6_~񼼼zꙛ3zgff{zz&$$Jnݺ{^jUnnnjjظqcbb;#utULT1VsE/ZaÆ]ty%47mڴ)S^G 4puuQr劯of))))'O666'N(((XlYRRw}aYf>QF3g,3X$v/Y\vʇ+1uԤ۷?zhǎN;wnAAALLX(/yaÆ~u׹҉^_WiZ]K] ~๘'>}P(={&uڣT*'Oܯ_]vZ6mTvO>d&&&FڵkuaaqDBTN8FرCuW:M9t &lܸ1""bСEbFFFB^p%?~СSNkN777777 d2CCC;;3gnذˮ:4<<<%%y>ƍ߿o<<<̙3FFF0a¿hůJ/uҥJӪ;H2^jq:55ҳM<'bzM6>>>VVVlѢ 111UommmFFFΞ=;""e˖"T>I&'z###5kzJ֨Q ԪU{ezEJ/RiZuT5\\tw}JBUL@o̞=;**ǧґr|߾}oii,21!!aȑk֬?D-ZlgϞ2okР͟4)44T? M4nx޼y%nccc``Pz;6nxJ1a„%K?|u(T:u*MJ{}֭Z?.tpp_A!T1@OL6-11?:dk׮=|ȑ#O>믿l۶-,,nݺf=ycƌ=ztn)d2룢~nj/~%[늊J/R~2 WZY+Qɥ,ԩCWWm ?YgtUL"zuϟ:w)))ǎ>|Ȕ;w޾}{͚5xROi]ZzgϞ^f ܹs~^xQk/YSկ_?##cȑM44hPNNζmj׮͛w ccczҨeXeҪ;t}/YwaΝh5Խ{w>x+WJ J޽{=׻woa/&:::4))I,e]~{: [&jb薫W޿M6VVVǏ;F1bDtt>,,,T(>lTT1D[R>3v `aagOD"/.`"ݻP(JKKƢ &B111^^^Fڿbb!Cta7QΎpss={x_|SNaaa?Rqsi˦q^⸸8JA96DEdCz{{>}Zے"##d۷o9rѣKJJo.uo>c5nM6`U3gtСL" :_W*>\vm+**J%KrKLtRs=w^>P(UUUiii۷~RΝ;W[[\xQMU_<<<:t퐐poU7곶lj5cƌ#F>}WXQ)ER˗u/ycǎU('N򲶶˫{GqF``K/tƍzJ>cmQ%ܿT޼y4n8Z+V;/B :gi۶RYSS?}_R[[SѧٳgJ詧ڳgOIIꪞ7_\fourrV՟WCϟ&$$Om kQCUږ\^^nccjV\n>277/**8qBǖ>v-R9s˗+ʇo̙3V'@5˗/;;;o޼Y±cǺ >ÇuGsԩ={v×.]СCNNN&MDC믿|+mt*//ӧ*̅ t?U"hC]ږ,s VcT ?ooonXT0 ULeӦMܻwOP֫W9s˖-̬w:kSZZZ\\hkk,vکS*++mmmuDM~7J4ҘMǼڵ=ztdddnnnff͛LbiC=lii /UTT߿_}h͟??**ٳ3g4,*Z.HUL0q믟9sԩSQQQQQQvvv;k3uԁYf֬YbkvY*?~֭:n&<<<''a:s+e1o||a&N|򈈈E6F>mK޶mM'L0}oAh999cƌqpp08*@R;5k޽{.<<S\ޡC}^~]l{/ةSYl,//߻woPPwlllII^TTpʕ).. LLL|m'&&2ήK.6lн:56nܸܹsgm dްaüB%<<<>>ȑ# o=tPooӧOuږ\L&[~!C}e˖vT}UKRw49::fdd.\\>S&E $<<\]v;f2|AvYҁ EUUUZZZ_.~nj_Zx?ԩ+Wܾ}[Tzyyyxx:t!!!b%KK.O2eҥbɓǎP(N8emm]?Z3f1"''ӾchK熨vvvΝ?.^cu;ks=w^ d555˖-S+VkiԨk/ &~S(4BD%SNٳk׮t>78*++x0@믿dee;m> ~l>}pBYYcOmi::t(99iҤINNcg/w* ۫?vTZ[[{xxkձXuM2eǎrA}Q!S3(0f͒噙'OVU:kkkU=~6O>;vSvѣ7T\\'Hn޼)v^L<~~~VVVYYY׳g[[[ +88}gXXi쬭QEC4gt,YMffֱj%r=I &*&Łu.گ_?Mjenn[o}7=Wm,,,BCC-[Y[[{޽ `ii /UTT߿_yڵk7z͛7O2Emk׮:uV4vX ԇag-СCw]zu>}\\\tlI⋩wٵkW?5DLULdS.;;;;faÆӧ;88L:uk֬5kRxxxNNɓվ=s7|cǎg.--Ց****444**. ##Cl߶mM'LP?xÆ 8q#""-Z!!*k׮ܹT*=֭[uNcgmwKɀ[uիW?O=Jۮ{/r}}}Ǐ?mڴ7j&IaVgܸq_~Çǎk,h}d2Ytt`2vؑ'ˍ27v@ptt4vOвDY- UL%''ɓo6v$22R*ݻAhAb,G5vͤHP;-UL0aaaR3v._lcc;ௌ*&_UP;hD"R4v Jeuu_mj@K@LOϠ4d۷9~%%%۷od~~~b{y{{ƪL⸸8JCz{{O6mHgΜСCYYZԘ///[[QF߿_^TTpʕǶםV8d;;.]lذAG#27v@Ӡ @+,M㽽CCC:`cǎeffΙ3gܸqڵ[vիWccc;ubŊX=FDDܿ…8v׮]W^ի w V⒞rӧ{zz `Ekk; K.K;vyyy hl^A0={[yyygxuԩ#G֭ӯ^[n!!!O?w}ѣlڴO>6l8x {lUUՑ#G֯_/ dMA&M$&O BYYYrrrxxƜF8qbjj ׯwww3f;kkWZ$Ieeevvviim߾}Ahb e˖8q_4v駟𰵵x_~.]HR{{{ׂ±cǺ >Çz-//ӧ8` .ۿU۷:%%5 ~SNٳk׮t /_V*>>>bMmuJNNvrr4iҹsAhbطo_^^4__N:=zƟgee%~={Qfff?}ZZZBBƃf͒噙'O*???DrMզֱ௾۞aaabV*&'''+++c"44tٲe;xc۵k7z͛7O2E[GEE={v̙fggLkii /UTT߿_wvکS*++cULhŢBCC222?lذ'._<""bѢEzΞ=;''g̘1:88L:uk֬5kҶmlll?a„ӧ?]Օ]sR[n@߹s?h $<QMM'|2rHcg`%K-^Ype9y۷@3ywRiBBe˖nݺ1AT1Zഴ4cL߿P(c.!!ᣏ>H$ &bԩRŋF, _rA!T1Dܾ}[PTVV;ELx4?`"bJQ>sc4 ɐdrA45k,XAhAb,K.]t~~~ƍkT{{{J &"55Ax`cǎ9;;XZZI./^X|ʕ:nݺpBkkkSn޼_|9++KτV;O\RoU< nݺof޼yFFy TUU}駾vjv=6:Bj[F:Teٲe7oܿaaaRRac>RpQF%''-~ŋnjccc#6YXX \SS3gTm^zI.9rDly駓*۳gOjjI눭h׮UH|ps^KKKA$ڵke2իW{cgnnn+Wܵk?+^:|R o9::]FGmW*ƒҾg}V????? (0}7o˛0aBo!""֭[)))|ϓ'OVkW fccvFJxVw.++۳gOe2qΝ!!!ܳgO4ǡ1dи:-YO>uVULڵk'O,((h{ XQzONNNKKر>}jpȘNrss{i޼yfff;v0*0l^~?lٲM۝o߾o׮خP(PABCCwڥX=ORǺ4YJSSS¶o.Jryzza6m۶I>AhAb,[l >|p޳k׮ dddmvMիWv]G7>~!ϟO}KQQQ<0"[U6U܁w獵9RMΈΛ7oV޽# @3f(MRhC[Hq:VڱcW_}ٳw߿IJJJ y @ BLRiaahu&J⋺rtt10;;;$$d˖-AAAڵk<֮{1۷o.]]7nL&nފƯ°yů֎m۶UmgÆ KJJڳgӧA*5۷ qSR4Yϕv_RUg4/;w$y% &ƍ ADd֭_}UHHӧ/]g[ZZjᅬ=z֬Y3f̨CcIO"ܹĉ'N<|pIIɅ fΜ:ѣ7WZZڈxV~u뜜~6?ū/嗿cELOϠPO>I& n:~)St 9p/e~ذa.\P*/ҥܹs{էOjtttݛj::uJÀF=_B*y;73 gΜ9uS%%%!!!;w7n\yyg}faa~63'F0 >~ժUaaaƎnܸ1uZUD"Q*d„ ?}BqfL @KGLÇcg4\]]]]]@ĨJbR'[FG@DL/RZZ@0+W|窯fffs]zSJQ{n0{O tGLUL('' _mb ///\1eÆ ƍ3~9wq>`RT1DPLƫꫯ;Yn]^ nkkK 5T1D\zUTZZZ;90FT1D;M4|>/))AC#??_.;997NRݩC-6 |饗g1eժU~~~O;vptt>>bL&{ ?ןN#G'$$XxC ҥˆ 4Ʈ`8 вlݺ5>>>..n9(" 222-ZvګWviŊjg}ݚ5kMV/\^/ٳ/Xrett]{nDұc>@(**Ztc\pLڻwo񃃃ïZSS?tPrrӤITmh) &B浵󳲲={Z؍[_ppW_}umOOϰ0Q->SELULL /WQQQPP~"44tٲe;xX}wܹvڍ=:22277733sSL3jcƪvکS*++mmm`b,rk׮m۶„ ӧOWu Ȩ+m}srr&O6$>>~ذa'N\|yDDĢEOޘu]sR[n[[~3UP*mڴH$@bn& HYL- вPвPhYrssO}tyy޽{cccKJJā7nx9}R 4h߾}O&&&VVVjL[L&۾}ȑ#G]RR}vL痜;>c5FR۱iӦ 0@̙3:t(++34g1Pd?~|={|+W޵k  ,[hQ޽["t>P5ڵ+55WK^z566SN+VϏaڵhL5|ssƍS QTTr kֵiӦxooСC0رcs7n\vt~Xvիwbmm?b) OOO\޵kWcLNSbԨQ'NLMMU1cF=̦O~QA***ׯ_.g̘礓&MK=:pMaÆ*Jmo1~]2$44#G_^& 4hɒ%ݮ#GvmW^?٭[~[XݑT;fgg7ydhYYYrrrxxѷ~sk׮;/b) W^yW^1v ͧ}۷W}=uTbbٳgJKKrR޽kMM˗J>x`='߿!++pرK>---v+Aٳޯ_#~0`@xxxYYc5֥KTjooZPPm9bǎIc ̟?)))3-}>;wd2cgBLu^^^6|xdd[}Ӯ]ѣGGFFfffn޼yʔ) rѠHϏ:{̙3PULh)bbbN:p5k̚5Cmfccӿ &L>݀IBCC222tcǎ+ұc} 6q˗GDD,ZȀ/GG={vNNΘ1c"5@Dۘhׯ_)Ը|'#G4v@//^; b,'O7v_T*]r4ObbQmٲ[n#F0v0YT1Z;v"7Ç Eaa4ovvv6l;v5%;;>H"; /ٜҢ17v@(..pႱ&L0aS<)Ǝ*&G)N:;h0hxL x,@Eb) 0%ژykkk/^@͚5k֬YN4UL0vxU`JwޝԩS7nOVXѳgO+++nئMkafffp5\=mTBy7mۊ>ۘ}ϴxPUL0T1S_gdd[׬Y|%KXZZ;`LFyD"1+hh9bGr[n_>sk֬1bhZFˋ7vZ )׽{wT?; 'K<9s9s; PSP]]}- WWWcg)JR٦ ɢ e?вP:??$W}53 S7UB.^/:99988 A***$t===]㥲2W(˗/ݻL&[zCV\)H=; AAAj׮]eϞ=555x!jN:wҥwQ@}޼yboQwc'v[a@#QhY~駓'O޼y΢T*jժ?ekk;jԨ}"""#""fϞ-ƍϝ;$ްaü~gm xIk?9::J$Q>QEA.\`cc#~!CueÆ ׫hd(ʅ 5*99900o߾~3/^\QQa'333 SO=effdii9gTqXg{AvsA>T*?#Go; jI$b޼yyyyJ$sss{{8pfŪmo׮]C'v[a"##\rYYB{+ য়~J#F0vOJDDDzzzJJƍcbb6oެ'رҥK'N׮]{ر3gDFFڵ+>>>'''((%==_p rssAؼy͛oܸ駟dϞ=;wζnZ&^'\ͰS}j.]iӦ׫dW^y&Tyͼ &m?~o"""nݺbnnC,Y'ܺuK{ܹ3$$_~uDDFF]Dž&O|T0 ˢJҰ0IT1TUU) ,&ȑ#ׯd ZdIݓǏٳ%K\RPPѣlڴO>6l8x@2i$___ԩS-,,F5qDmL2cƌ=zM>]|bCP_TTԅ RSS-,,+$Ieeevvviim߾}5vg[toʻ{YZW~~ uů<^8>>>999--cǎ:m߾]*t _*Bhh][fQUj晙ر=Pŋ Tu 3|e˖=6?Fh]?+>-_VVVyyy>}į /++}#[[[{xx>}Z*;Vu3ԩSgϞ-++tؘ${~ךuAMRRҖ-[Μ92?{{C} .1b|~P!D9'jBGNljCLF6װ4?ZW%Qb򣽆5LW)?6?^8Q󣡡|ϫ99^|FEi}!zn!:v(BfffL|dnNMOOl޼iӦMv֭˗5ڵk͚5:x2 ?~޼y'M~dF:OPX[[߻wOUT;iҤ`Wt;;;[[[4[nu)=x]UTYL0T1޸qǏ_>.ܹ7h 77VZٳ5333CYYYppBɹzѣETZYYY$x-U6Ξ2eʎ;r֥7_޽_ڵkhhبEMV2eJsm@ԩ\.߹sfcZZCn\Qnnn``ի jj޼y?V[ Du/kkk~ivt _322ڵkקO1Ç_g'Ol۶ӳԵ!U= xT1PLBݻwfee/_}U\\+u떿pp4h=wƍǏ?~ܹm۶2d֕wUTT~ ڵkwym=wɓ'1Ax߿f͚7n/[l̘18.YdʕŊT*UEEŝ;w92nܸ͗@ZVOhwww7U*k֬mZLUL0T1S2y}U̜93""SwEEEٳI&78_y;{{˗3f~S4'NxY{{ѣGW'tmn߾=g wߥLbkk6bĈcÇ̙Ӻuk\~?ֆCn6M4>xȐ!YYY5jСC ݫNuK.^:ydM4{n```֭ïJ G׭[7jԨ޽{3i&))IOX:#%%ѣK. ㏫{fEͻt2ek>GzhTײz\z/6iD&9886-&L<~Y)#F0v0 S~u@Cdaa!ɌΝ;g4lT1BVy f2ݍ\~=ڵቲ&.,,,111!!!44Y42v .߿ʕ+dddpc PnݺAԑ_~AGb)8y\.0v` =z믿;yl}?6m۶ "33S26ZJKKk[ޡCÇWiW;wfcXXXVVV"##%ɞ={_ y!uCZZqS붘D"J2v` ?  R <{~33S*VyǏ7n/mȖ-[FFF~cƽtݖ*&QSP*>{?s̗_~5**JlwttLLLTH$?̙3NNN666=z􈍍}.]rt+WѣWRRңGvWWׅ +={1cFaaM6y{{wmŊwUT :t֬YZW(//W( \뀻w6j(++zW4!##߿zZ=]*j30`@=ѣM=zTaÆ}]\\f̘!~.)),((ppp8y~yGGG5...gֺKHHȢEnnn_O>6m1… Gi۶m-,;a„3gmmm4ݹs@*#<(¥K4AرcE?W\٢E .T2|[[[iӦyCݳg8f7nN:vvv*JD"Er͛S*4$… ]]]WZRڴisN]Wg3 *9b)ݻR|.upiӦ Yի/^=ztvDKjmڴÇ_v_~F{ ֚k?St@W;PYZZGGGZꭷR޽;--͛QQQzrtt477 1cFNNNeeoV ܿ˫Yfu}9rz!Snݪ~Gce'Ms &hzꋊ=?߽{w```VV/W_YYY麜[n?L[|7ۺukRR"k/ҥKůnׯߒ%K4f7n,[lܸq]t_?;w*Jsscǎ꫋/1bĉ'bbb<==WX!BFFưa^oo .\w4h.oo|-,,}`/^Oŋ/_vvvV?$Y#Fx^ GGDŽWB6Bsuueee43<Ѝ7&&&; `b΋>{ԤIwnz>ꫯJGJJѣGݗ.].@;vLRM>]vߺwޫW/]s9 +ׯMNN6vzN:kܹs )BYYY~~k׌zDj ;;;((h7o6d|>};=5N6mڴiiڴڵkukݻw4OIk=;;:lذ˫JcDDĬY /%` >|o's;+../NQ∅|^&` ?LQ:` U E XUL/BGJeƍ)ڵ0{:t!C{cgYQSׯ7nܸm۶jd~سg%Li,&4`*j۶m ,8s挥ŋ g%5vSڿ?lAZn={-Z;OFRfggk/,((5kV&Msp_|AԑGc;g1!o-Z#B۶mCBB,--%%%zmll_ܛ7omӦ^R͛7{ԩ"]={lݺC믺zؾ}{]{S2dޝ;w9rd׮]unڴ̙3z'Lн{w]_|ʼn't/bҥK9>ׯ謬,= wɒ%>>> $$$,ZO>;wLIYYY~~'D~i…A*ZZZ~駟~ >u떕նmۆ k &޽[WMtܹSW;F788(s}ݧszҥKz5kSܴi]vSܹsz3^S|3%©S&j5uT=sJ?X\&L"Rz*&4M~G񫅅EqqqGyyyIIuSsSh=ʞ={ꙻdɒyz*4/^\h͛M,LP(<%Y ̛7'*YYY^^^ 4vF0  ,,,:tʔ)njӦ zJu 'b@Ӻu˗/GEE5idPC_4r\PtAԑ>}(ʔcቲЀ~eee (};ϊ*&4x׮][hQ^^ަMGРQP^L UL ULET߿ҥKdc P$%%nڴAԑǏ;UL0r|…Z{ݓ8RmU yf#1qծiiiwM%HA_h ݻo6v}T*UyygϞݯ_GSeޢ @<+W+))ѣG DDDFDD899pppH$OֺfqqqApuu]p+ҳg3fM6y{{wmŊwUXj?pر`u.((...Z׌}vĮݻwwebmΜ9gΜYbEVf͚u+Vo&BQQQzz޽{~m]Vi`2,222666>>^-ҚJ_%hXZj~կng7ڸqѣmll%A\2lذ#G O -[L G-6l۷믿2e...Z|QӦM2c sIIeAAAEEɓ';::VVVgϞuEi ٧OM6՘d…#GmVњJ6uk1pW>w\JUVVfggQ]裏˧HLLT(00y?V*W^5vb)PT TTTKl8qbiiuɫWn޼?C]CldYYYr7TPRR'|>\ZZz}B'yv{{ׯWTTHńَ?Ns-.֫ >}… ͛<ƻvZz1FHHg`nn.Ɍb)?{ŖÇ{xxE,TZYY=eʔ;vr] 7nXj ܹ7h 77VZٳU1333CYYYppBɹzѣUJHz*_Bze_YYف6n,JM]Zro ;` 5koDGGZꭷ{{Fx#F^KςZWaiii7oތիyPPЌ3rrr*++m۶U_^^^͚5MIIQwi4]ϵ ݷo;wn͓;uP({$x$F#F0vZx A,&@|cPG rPP?Bj-[f\O\KC cIJJMJJ2vṵs-[FFF7W7պ3.\h`&88x߾}Z\&I*d;;Snݺ)S;vACQST*݋_**jԩ~~~)))^^^{޸qO^VVf333ssss&M]VVVaaar|ʕzb5رc ܼy3##cر$T*mѢ֭[mllOUncc#JnR&OP(ѣGlٲ|.\qL&3gӧϜ9yܹ'O 5L_z#Glٲ95ﳍD5GZZZxtT*o߮u7|R֭[޸qCTo322 ^ N&?^rR9rf#nܸk"++cnذA71iӦ=ZUAvQQQuիW/^X1 [ZZaLVaiiibbP$Jw9iҤE3gNyyy޵k۷k׮]M$ɠAӟS|u*&ӧOwҥzիWAl^reRRRvռy'$$TVV_^YZaܸq۷o߽{ǔ)Sl٢ux/"Cm8_ɓ'W^ݨQ#-ZYСC1Ǿג IDAT'=zӂ l޼}>>>Osgȟِnff_V? />$YsT׎]to*&RZbcfffSNLOOھ}![l7jhРA8pV!C 0{3tQ O? UI&8q͛O۷oj*ƟI&c<=ՓS]t!=5GÐ/Jccccbbݻپ~zLֿAƏ_IS];vIT@BLGǎ_^SNr|Νiiiݺuӳ`nnn``ի 'L8Q'Ol۶ӳzUYYY;vtvv޶m[G1C kmm`aa'999111++K0gQFo񆃃|ZYY,eK,Yr v***V\vΝ;o߾9Kok .tΈ6m뛔d HEEE~~hqxAo<*&KǏ9rD!CdeeݻwoԨQC-((ػw[ogͭ[^tiՍɓ'V(M6޵h"ss.]L2&''955u+9vJ>}zvu޽W^ϞF2Wyegg8p@0g t}[?*KuFջwoy6mTMuxZ#c 5=!T$Lܹs~'_}ڵkk|$`<{:u8(**jѢT*q ? ]v}ڵ_ LIIٺu1c0g1EQF}ҥK0˗G)Jի׆ ˍ@YLo?Knƌ3pWaaWƈYf5Ѝq"4ZCN?ڴiP(&N'̛7o„ ST15ر /t:˜/BCϯˋ/Ӊ\fM~~ZL&S(2(!Խ֭[+J333cቲu]vӦM?LGGO?Ç&Lo߾`cd`fff2SN⣱ **JTN66vݺuZ|Kfl"͍prr aG1ɧ~zW'ֹ7nT(M6ݻޜ۷oGGGo߾Nq:u͚5z-޽fWWWwwIӼ0US@tb CFd2BQk"""n߾zΝS}bWBBݻtx 66gΜ3gάXUVfͺz:O||A(**JOOwttܻwoѵkUV?ǎ[$e2Ydddlll|||zRi;wǏ/XW^͵zsyǏgff*{j\V׀e˖u-((h}NNNXX---u%fj޼RlԈ3'hPS g;:ѣM=zTaÆ}]\\f̘!~.)),((ppp8y~yGGJqٳh"񳛛_ӧϦMjLpB#Gڶm[e}-//?xC111zqY]\\\Ν+~ϤR۷ů:tطo$Zoif*b)X`YZje >|ثW/񫧧ĉKKKAѣnmm-ɲryQQћo^$//E~8t+gI/ׯ_Js> ĉ*J} {_VϾ}?kN.hBPW3 jJ&5mAwwƍ?~\zap(BNNΝ;yyy rsskժ՞={.X, `ff&~(++ V(999W^=zJRieeem?Uuzj޼yvvv7G"\rE~j\} O"f ttt^^^NNΪUz-uݻn޼իW/GGGss󠠠3fTVVo۶m5k۷#G2'j֭ JM*8x'ON>}ìrʲ-[ӵ:E01T183gFDD{ꮨ={6idbcLLLPPPLL]333ioo|1c 0? VwM8ٳG6j޼yHH/lll7rȷ~[ݮk;j4p_ÓYD~*K.)Ν;;bĈ RRRfccsIcg,&@e__߄cPG*++/_l #T1̙3G.k Yls3EH$ <4I痔;;w#GGw|!f{S OrTGLUL)ቲ` bs B.;:ҤIR٨gNEeܸq {q[Æ k۶BLszz֮R{{{K$Tu˞={$DҪU޽{׮]S %99Yϵ9s& ƦG}ԩS5tyԩֺvquu]~k||K/9`ܹyyy_|Eaaa׮]/\9szѣG%##ã|ҥW\Yn݉'?\2W۹VTTU@LTٮgaҤI)))%%%0889gϞ˺ʯ9>3&\e˖f=~xƍnnnUjM "PQS`oo/lmm@}RN痒ջw7?~eee6033377?7iLeee&W\gQF;v@7ofdd;VsD"J-ZܺuսmllR/ERT'OV(~ѣ[lٿ> v8^&͙3gΜlwrr+UW_} 7nw2eʖ-[N}Z͛7o)r._\]RF͑?!{_?<>^RU75f͚5SLQ?wb//_޿ŋ bggM&Mر N:%===**jΆrwwoٲܨQA|;;;C 0`@3fz ~zjƹ&M:q͛7_*۷_jX$׿1bNS]t!=5GÐ/Jccccbbݻپ~zLֿAƏ9@oj+?UN'G~ٲeoBBSL\*#;u$wܩ٘Э[7=[^`|ĉ{ɶm<==wYYYiձcGggOͭ~t3ȐZ}||~ɓ'o޼933̙3OV]n׮#_!?|pWWXuKEEEBBBAAxwނ [D=WTT|&}o/4wڵrJcg`}Q-ZTiH$o8}ƍmݺ5))Jn?~fMR.]ׯzJwŋ-[VRR"DLHHP(7޷o߲ebbb..H֮];lذoo .\w< ,s޽{XX322 >mڴ7xr>yDP?궶,%q%K꯻v***:rH֭Ŗ{-[T>+Kk ͛8  C ʺwިQZPPw޷zK[ntի'OfmmP(6mZkѢE]t2eMNNӧsjj W$js1J5}vo޽{^=Ce.>p`daar%ԟ366V~:U Yu֍5w i&))Is9^0. L@```JJ֭[njc,բE͛7wO>Yԅr ssǏ; 5jԨ;vl߾= YpLWT?b) Ν;+ \n 5+,,1k֬3U9_JJ*&)y~mc0˗Migܫ.s =%Hd2SPDY0}R|׌@}_|DYL0mڴ1vb_bf7o~?aڶmkooP(233A(++h윞V[:t?|pvsi;::eeeU+22R"ٳGUK͟?R888^͕8qDJb C"s RRR*&@r_xUT={v~^hػwAlllRSSZYYB>}ԩS5tyԩֵB=`ܹWϞ=[s#񙙙RTs ?޸q[|| z![lt7YI&[222 $*((ԩӮ]lllܷzERr DT1d__V\\r=zxyy%%%=zHlwuu]p+ҳg8~Q@A Q!"$4 T-Qլ5Yb.eŊ׆=fE,(** JkA)q5`Pfs~эߜ{Mۋ֭[dɒ+w599y΍5۰a'$$$###$$aт ,\Mw8;;W˪ թS'ٔ ;;&M󋏏j߾}lll```hhhqq3q LLLƌ#J#""jp D"122rrr ;{svMEDÌ3.\pin*˗/_m۶7o P,rܸqYYY7o:Wu/hYb4iI$A222vaÆ7xC)$;;;++KACb>0aT*ݿ=!!!III .\xqTTի-[v)++Aaaak׮]dݻSRRΝbŊ{{{%%%ݽ{wҤI|Iff QQQQQQW^<ɚ5kbbb2227nrʰAAAE+W(v4VwR ~ilڴIgNNNVV p͌*$yyy FFFvVrrrz뭷4uaa5k]\\111:thӦ͚5k4GÐfffs |BU3F6*BAA-[Əa{O?JP-T1@ܸq#;;HAԒOn۶m...]v:uj||z-##S9s&??lƍ-hѢł 6m$n׮x|XQhoo>yRRҬY6oެՆbnJJJݻ(JGQiOJJUrJ'''q <~(<<|޼y!E߫ɰ*v„ ׯ?|s炃5d``rʾ}ʏj *&Od2-};wnffѣG8cǎ[n͚58((hڴiG-//sNŷB Â//Fedd(:tpLI*qF;+;~y;vlȑWxRg+S";vHNN>uTpp?ibbRt޽?jԨb%jv QYY,ڶm;f̘9s}۷o(!lٲ޽{Rݐ}DDÇ;lE^ۿQFںZn#F޽ӧ[qҥ,0aET1}2|{D(22gРAӧO 2eԬY"##y (^l9o޼yYZZvY"++ŋ6K.?F85v[YY 2D$ڵkWbbbUÎ=}RƓ 399իW^^ޞ={e7nxʕ-D8pb?<%%˗/~ں/Vħt0@AjnʯI(.::?vhUL-ZXj<";??K1$$>JZN:n8fr9sfǎ_]W=gϞnݺ%$$޽7!!32,44T<>s振C%yyy&M255ӦMٰa۷✜ .ӧOccc۵k'>X}gAfΜٹVճI&3f̨zzz999˗/OOOOKKStkgϞ]RRO?iҥK +؋ b777//k>yDlwqq?;L6-??_l/**Zn%K߿޽{wWWŋ;;;7joÆ bѣG pǏ?7w}|劳VKMM533ǯhڵ͂ *MDZ&M󋏏j߾}lll```hhhqq3q LLLƌ#J#""*Ńog;'NAغu\._|mn޼ \9nܸ͛7W\ &dm۶ 2I&;wڵ/H$FFF7ԩƍBCCFWP@ULT1} JHHHRRRBB… /^8ze˖:ujРAbcXXڵk,Y{s*X"22vvvIIIwޝ4i'|)BTTkTTիWccc5Of͚ƍ{o[hq>}TPÉYO?ie6mڤ3'''++kʍ yfFF& KHH022CÆ Nz꼼xVܡ([]|aQ=/uUҲeVZU|\.ҕmڴSN5 tULS^=sfff=z4**jС;vHLLu֬Y<<<쌍Mv;wT$ Â//Fedd(W:tpLI*qFy撒ׯXB_pO<_~ƍ{j8 %<zKX5 tUL3hРӧL2Eqj֬YN 7o^PPмy,--;w\=++ŋ6K.?:v[YY 2D$ڵkWbbx4hT*={t,!!aݶ &&&d3g|}}*stt4iRU[CMaÆ۷o999=7===KJJ~ᇜ˗?%̙39;;,]PEԑב{m4e ???;;ӧʍr|ҤI~~~bKllqhhh߾}FCCCcccGAǥcƌJ۷o;>\.0aL&۶mҤI8\Q%gzOܦ^ZSG_Gb=D"޶m{{{mg4^L◞ 999YYYTn0`͛732246$$$///!!Ȩ_6l{ԩWd˗/2D]"9Uh5b>+rQIEFFo߾BM͛7/]T*d$Ê޽{N/^b/&*b>ٲeKA>(~|Sf͚yVZiaa1ycǎ]~cǎ d2s@geek;uULV1R-[]]]ՌyM~O> mll}ݖ-[jjӦMx`nnn:t޽{'L j_Gm۲TjܱcG@@@rrSH{QT7oΘ1#--ѣG/^={v{)ˆ#۷tқ7o&%%-Zhذa$&&f޽ ںuSSSGy5ە)G*//Wb>urrWJ{Ϟ=CT**//ߴiSFFCPCT1@eggĴjjСgv()e@?_z2$33S;;={j;5Dt[iiU._,Bfff̙֭3bcccmGb/&*bW\[çONf j|e=yd}wk|mBBB:th&Lمr<,,fJ$5o@@@ .7[n]EǏ/++kҤPWHu\/ڵk $ɞ={j|VZZD" }kD"w^k``Psߺ|_&y/Ou_}ݾ}m{1@=ztƌ.]ɓ'b#G^-$IvvZ}=/rO"}/rO"~kc/&褲 \pA7|300/?Wd5ŋT1j| 1bBP&˷o_Vl֬CCCׯhSLqssv@#T1@牵y楦 2*&rϟD۹T[nnnfff˖-۴i,jI.]n߾ҬY3mgN0va``Geddݻs0i&__e˖i;ړ]ZZ Fx k׮ﶶ2G| {ēP '''77Lh``oh75e@[7x,: *&:*&*x,>d[vå͛7v =`ggwڵ|[[[mgEQ}[ZZڲeK##yT1-A@Bnݷo_ff=ݻwJ@]An_}}}'mP{򲳳KJJ*&OOOTZPP Fx ^z޽rm5!HA@]^L◞:b؋ ( *&OZl)ڴi jKJJZh ֮]zj+$􀅅Fi; :O>vڹsg޽{1@k;/ULڎKcT1-T1ꖼ}]xQAԞ={JҬ,m P믾?=yyy%%%@orA$ m۶RXAx dggS@wĝR@`/&'T1@P@ 蓁8P)*^5/tULrPAx b>pttv^m n P۷ŋI .h;uUL%11=O>v #m6mfffj; D"\.vzw-Zv@ST1@dggj;:jԩڎTO'p]^LTPULwweJOO733{Yyzz_^}3gI۶mǏ-}ڴi=zXdIyy⒤=z(>͛7dXRVZ%%%Uzb-Z7رcS3f̐H$;wݘ1cUTsUBBeΝӳ3gGQNLL}||S8: ؋3gvBuZ IDATرZwnZ~}ff3G-[,+++44t7oV\_ӭ[733ݻw&$$<|F&gΜ}$//qҤIU={vIIɡCJKKǍ'6>}466]v+VÇ{ʕ+WX[oiM4QiӦ͟?_^-d2=۶mruuv 4bDDDyyy]ɓ' ddd888=zvX[[K$gV:ZQQѺu뼽]]],Yr}qvv|^XX+6lؾ}/VI{͝;ֶsgΜyM+< ͹pǏ tɩQF[U\|{׬Y9RQۻwoAAA޽?I&{yyo>66600044CCCcccAS&&&cƌJjp%SXXٳgϝ;'֭[r˷mv͊f̘q…ӧO+Njyyy ܺuÇWJŸq㲲˽ }q5M 0`޽'Ovɩ^z@]AtouyBBB.\x⨨(A\]]^?#zQnk.Yd)))sUZfMLLLFFFƍٳg\?/((577* |IZZÇ,XjrӚUeAnk׮}76l(fD\.OMMuss?ڵK,*dee 8Pn޼I##v.,,\jE2&&& CmڴYfM׬YcnnhTsWZ%Bll5ѐܹsJJJTNI$nݺ%%%i>FtD"qrrrttTӧ۶m?K׮]NyRSS7olll\lYYƍ-ZѢE lڴI*֭[1B|bii/`CCC777"'%%͟?Q&jrӚRC=yӿks̹qƗ_~)~<{l֭\Asrr/222>>~{_;}tttAvvA ZbZ7nt#G(Jqƭ^|ʕ*ĸq -[VT֭ 5D^ iiiEEEN:V9...::zǎUn߾ݯ_?={>z(33S++WT1^~4c<==MMMA022RQ'Rڵk״iӝ;w^}g aaaI$wwwDتx/fnjggwڵQ ryÆ M -[qxloo/Jl٢7o.))~+V RRR~۷oo޼o4i SNݼyݻ4iR\\Sm^tI|xҥmxL=o߾/j;3p@T HAM>=$$dʔ)bرcϟ?oee5dȐM6ݻw/,,( 7oeΝUZQxxȑ# ѣG"Offf;v8p#jpӉ'knÇB)/D"III޽T*]z)S&M$Ÿy%GGׯ__z왜+//oϞ=r6nxʕui |o^o]b?<%%^ejj*OЭN:=~Xĉn<}lݺ7::ZAԞk׮egg?yDA+$P7=z]vfffWꔗ൑CM2̙3DYjmll:-Z @uǎرP't^yyyvvիW _|? d_|Sŋ]tIJJv2v*@ߑgUW݌7lذ]ad,**E/;WcddԻwN:}W{v"Z&;ΓP :V1.Ϻe˖/}غ9Ye{U}={}e ( :V1"ݻwZڵk[h!ɜ@mڴiSVVPWHu?I&7w{S}@@YYYNNSPPwǎN-9cnݺ[oi;ΓSѥKvi;zRtӧO +=enn޽{wގ ^;v\vVYtLyyBI$ m뮤%;;[q3gΜϞ=ʕ+|___ߨ(-Pˮ_]\\ w.]4k,%%EYhjÆ ³ӧOoҤCu{1@畖fggj;M1_jX}7onee%>,Bqq2ZJJJTaaaU8wܠA?~,9sT:+7z{{… #G(NLLT`**] 5?ܮUZs|VdggfRDoU]9s8::mvn6my=,YR^^ܥP~z=..NqEy)tHzzw*OYԐH$ \ ^ :OSNضm|u뗂 ٳ[nfff wﶵMHH011yL& Ϝ9PI^^ILMM+===KJJ~ᇜ˗ip̙ʷsvvۛ4i2c jbx)5]&Zj߾}֭gff*.Ѳe˲BCC,Xyꆙ9sfǎ_pF52*&<ׯ߬YaK.O4/>>˫}f 4044T2113fT*&Ld۶m2dH&M:w׵kW C*n-RwiܸqYYYkcU~P3ZjN5jԺuk[[[Ş˗{͚50`ȑ#WX2f|||vPcc apǏ 0zh[nӧiӦ/_8uy{{.Ybw}|maaallL&kذa/^2`\\\.]ڻwƍ߿ҥ...ݛ;wmΝWSUjT1@QtdZh!D999YYYTn0`͛73224iHHH^^^BBQrss/_@gTTkTTիWcccƅ N8̙3S]vɒ%wNII;wԚ5kbbb2227nv+W bccUâEBCC߿߽{ݻw3ɓ' |'iii^`~*KVV;P :*&gwPFݷ^^^ʍǜ}v t޽fAXxqgO7pٲe5\AR,ԫ_iСCO<~Z9snܸ_[YY8pƍ~ʪ6lXmll&OsNeee7n\hG-,Xi&Ŗ֭[1B_~Y`j: 6w#F8w?O{{&M-..NJJ?L& dIkvUE666NNN&&&5S/:&++UC˖-A8|r ۫6))i֬Yvjժn8JqNsǏWjQeQxxGU/z՝cuWqU1֯_>H$'O믍S_}U\\ŝ*d2پ}JJJz!._|nݺ=:uZhqƍRn߾ݯ_?EˣG233ohee%^VPPХKnCTڸqct\؊AUP#t{1@999_WRt˖-ʍ֮j.V-[jjӦM*횿q ťVxYW9V7oxAw}<5^U\ްaCE!6,,,.._>`dnnnoްaC׮]ׯHMMk׮iӦ;wLAAyxxXXXԸCU%bsoU๨bD?ر# 99ԩS?sddGP޽{ԨQJ*-I${4h֭OMM9r#GeeeʃTACRX,sgQήfsn#F۷oҥ7oLJJZhѰaԿHUU-)) x۷7o7L4PSn޼yM4)..~i_>H$>>>-q:t8~Lcc㠠iӦ=zΝ;ʌC={ƍ lܸq͚5j:}>>>r<44?n۶x6<<\y?SrPЩS'??Ǐt P?*HRRRw.JW^=eʔI& FFF^tQT{MMM;wlmmݢE A>ѣbϱcǞ?jȐ!#)̛7/((h޼y;wFxxȑ# ѣG]v%&&頉~̬cǎ1b+ 'yYK;;;mgPK֭ڵO2lt'=Pnپ}oDD=7n.**v #mW~v!??K1$$>Jeu![-d ӄ&@[b+))644v:իNQ2ԅiB'%HA_(DYy7⷟b؋ ( :*&gd2=EEE͛7vzO*j;)bΣ {N:UA^t33^~5ZT_PzVK].5Š5oɩ~.^gӦM[l?a/&>>/_ ccce2YÆ ۷oW1`AAADDڵkZp޽{Gaa*\iLuWʼnel\G@GQɓk׮i;W+77ޫ>o޼yYZZv 9r_|aaa1z k׮ė8`ddϠAO2eO?dffֱcǁ1ƳP?ZUQQQXXXfͤR'~%88x޽]vutt<ޯUAYUj+^. ]־}{SNi; `ٲe|ĉ.]oY[[k+a4ZU+Z1;vl߾ 2vZj̅ AgVJ$$ IDATcO@ULyT1=cgg'\\\D󽼼TCBB>3Xꪃ+|Ǐ)( :/55C'Nv^]P>>NNNAAA^RRR,--{ܹZ޸q#,,333SӾj*'''++ÇoٲEl ڵk``n:4zG&m7m}{7T*#""^x>}̙3'//### 윒_|/ڎ1_|RtssKLLjJ\MMM,))ёY<^Vŭ wqGGK@Xn SN>{lJu .7_T*srr***̙,Ϛ5k̼tR FV|8!!رc%%%EEE*1e;VǾ=,jff蘒2a А{߿SN VU XݦN}Ν;{zzȬP(tlGxo^|򧨰PG:55U[777##?SycYYY@@JJKKp႟/Ad2YUU5MGm(yxiii⇛7o 4HwxcccjJa{ ֝Q~X-#hhIb 0*gϞ5MLL̙VUUuڵ;vD&M0aҥG駟vtt433{|0,F< ]iii~~~֭;u$uJ?hgg'uETFFF5J pppشi/il'''{xx5}ȑqȐ!Rg`ڴiH @3oQ|ҬYg6lAK pرW^yo:*&zucʕ~g<ۼ&___i'⒐P}@( C3fH'ȤtRvv}Ϟ=΂']aa X~<<<;VQɓx"87BrJ=޽kjjڶm[[nIJe8pŊ@VK *&G <8..N,UUUݻwAw޽{' KJJdaa1d''& ݻj{R좢fϞ=y䨨(*###kkkSIW^^T*juv[[w}6774x%iժ YSSSm֭J!!!sm׮T0T1Q\l뗜`b-JٳAo˖-999B_^lY* ]+ULy<8w\ГxbѢELJ~Gvѱ2F~6oċ>SN=pgܶnP6X8 '77W|ܞ={z뭷~髒wuss:4{YL0xm۶utt:A9rYRRR,--{9A \\\ݻ'vV*/B>}̙'BLLfTKK˒A>t+V899b7͛7{__~իo߾{zo&qQ{{{OOLMUe1$$$+++$$k׮ں{;m<ԪUcYhQFF| /deeYXXrƍ۷߼ysƌoڴi߾}ݻwnj?gK7N0̬ZqqqCCC###7l ԩSe2?|3gr…gϞ]zuy .^ZǜTMӧO~rrrnnnE80q~#&&ѣ ,xutӽus֝VǶ߫T*;v(u8 TEEW_}l2cccN:ݿϞ=J矟={vbbfȨQz)fϞgcc+BIIIbbbpppM4{'Nܿ eeet /UYYm۶+Wwyٲe;v]T ʒ"""uR&M4~nݺ >|̘1;wFMע{ہo޼yk׮޽A м\|СCYYYRt͛P(ZXZZ.~8qXA\\\fff))) L:u۷oܹg1z-~NgϞb{(((9rd׮]v:t✜ms{S5:uZs# \:|pPPPϞ=t7ߜ&&&sIKKvڎ;Aضm[\\K/UVVeq`QQQaaUVVV?==]8jN{*&Z}U= Pɓ'/Y:00P<3f̘s熄̜9S}i۶mAfggr]GY[[ncc陜{zooݽ{?7770`ѣ'N(6UV?~ ,L-tt{X5tn;}Lܹoر=0z뭍7J@ |yJeddQ^pppشi/Gll#dA8 O`tl,k֬yg ?[UU&$$ >q*&tIR9;;K@㏗,Yzm8Ν; yyy~~~nz-[6rǑZx, &?~۶mRgPW\\\PP`nnޡCbh^ZI*&@nnn[njRܽ{ÛҩSuy/@CTb4//_>tٳg,\PP$&&J)((xVWW?JLPh^8駟J@ӹ~ZsNK_~իo߾-++V899b{III||J۷s]nQQQ...^^^ ӱVHHHVVVHHH׮]E˓;w9rI^ˢEJeDDDnnݻu떷w```yy튌2dsJJJIju6ύ7===td333SӾj*'''++ÇoٲElvhk@S]v9::;R86m$BPPA4S nݺfϞRNŋ] ԩSږA<~~~cǎ=Ç{iffmB??#G:99izn۶MV߿޽Νw7uK[Om?pQ/B@@A4H[_;w)""BlOOOرcuuuyy\.?rv=KKǏ_ccc/~wtD ٳɓ'5+bjܿϞ=o񆕕СCO>Idk6d}]mRssgϊ˗/V{jfg``5-`"hb2IAuu FFFRzO)##`ȑ✜'''Az-6^nW33zגdoZjĈk{7ϵĤO>ٙYYYn\Zn]0`ۢmjgggiJ<"~4hÇ;VRRRTTRꝡݴ@G0[Mb Vtuum߾P:55UrvssskӦMFFرcKdF ?~ѣGz?Shhh~~뽽k],--_~墢.mӺu^z),,ŋ?͛ *++۲e^TTTXXeeeXfVhkǓߺu\"ub 0C=x`hhA4;::ZZZֽncc陜{ɓ'/Y:00ݢ}||ƌ3wܐ3g^+888;;[.i߯Y&11toĉ+**eԨQ/_NLL5jSO=-֭[yJUXXۥy>=zxzznnn>`ѣGkr|ժUǏ8p 4knYoh>󟹹RH9t(**v횅\.: ԩS^^^R+%%%99PfK.B4byyyj yw$#Fߐ&a~4:s Z}mhgsIh(`*KJA ޝ;wjץ$OJTnnn[njpJرk&´iӺu־};w<\QQyҥzۤI '^z`}+W޽{QQQkNjkkuʕ&'''Bq)ݫ;ٳѶyϞ= B|u/Fl? )))R*&hABBB۵k׮];kkVZk_ůΝsppvrr;vX]]]^^.ˏ9;@ݻgiiyqklllUա={477?yf߿gϞ7xjСO~|;#wuTiiٳg˗kbUmU7nm6..f \R| 8PY @Cɤ= xtÇ:h|˗/_x v[[Z=322 Fi)..qrrwb\.ϯ(,, :-##]\RRbffVZ2pQ~UV1B3-qqqo511ӧOvvvfffVV֭[Έ  x[ IDAT5{m*ݻZ/[[ݻw1cưaϟ?` *&<+++JT666666 ;88hھ}k f[[[ ͭM6رcQlA&UUU=0jeee@@o^;<(((((Wn߾ƌ3d񅣏igDƺo(;;gϞ kJ]֭[+V q5VR49s椥UUU]vmǎ:d &,]ȑ#gΜo`7SS#F䤥Č7Nwo5,,hӦM6lx뭷.^Xwx]K.}g{{{%Ƿ3h[u/RXXŋ͛7kA]>|޽6mڊMFhVb@ ncc陜ddɓ,YbmmXTTn>>>cƌ;wnHH̙3u-E׬Yhjj:z7xcĉu2jԨ˗/'&&5ꩧji*y=<==CCCCCCuZZZp:(Ǐ?ѝD6@bTV~~ٳg;vثW/h"~allŋz-:uꔗWqqAySSSg1CXB ͛7j[@sA ކ  G}$u`ֱrJsIwF{צMOKh(֭[j͛Rz222A988?^ S#8YMlRGg1)'-UL0xT10t,&UL0xT1cǎ*W^u/}gEEEM c`ܩSJb 0*JRjsΪU>ׯ߼ysɒ%dk׮]vR oǏ:Ǣl+Vt =ԡˈ'4O5_ lٲ4FTYYyZ7ݻm۶mϞ=Xx!ڵk_~crѣf:88̜9S .oB裏 Hyy /_'cjuѣg}O5j~c]\\vޭSNuss;|~cO8ѿㆵ/ү_?>s'N`.Ob4#۷o_dɍ7A033+..̬ۭP%߿Vkccz0 &&&z677{]333`T*^fܸqutt{]\>m4vEu###kgg'|_N>]T$nnn ,xץ@aƍSLiݺuYY NNN5XXXxxx7{.]XSSS{{{JdW ,\022>Z`Yh8 /:::**j֬Yg֧ĤQVlbjj*˜1c qܹ%Kwߝ4i(Gfll(G9HΜJGuMZ}֭Jedd!CSRRJKKKoooggիW߾}[] `gg,p kͦT*WX7OVZM6-777>>ٳ R/`s6lp„իWwaaa 8;;Ĝ?>>>^Z5g!..nݺuYYYz O=T@@ӧW\O3fH @#,&P9vXWWWA*++m۶rJwwΝ;/[lǎD&M޽ĉ7@mΝ;… Lb 2JڵkӧO;?mW)a--%Lj≲`Νofbb?gΜk׮رCԿtM!W^ٹsgyy˗7lxPUL0xncc陜,gggr???AZXX5hv]PP0jԨ:Hh-Gzzc  uAx,@rʕC9sF NTTB:ULh!***N>|>:SXXV @sA ^XX\.: @*&w\O>uֽ{~G}IE&u>ܹjժ7o-3gΌ6ЏX,&T1> 1|֭ݺu:ЌTTT\pA2K.wѣGkjj:x`- UL0ߏ]|ŋAѣǸq\]]Aܾ}{6mF%%%kff6i$޹sg\h~co޼9}t~-((xWۡC76??W^رٳg{%7ի ׽~#kggRz< QHHAh.xFnԩbm۶wޭ[N.]/_o,ns[`СCjj~coܸ7]v[no,nǎ0`Y,&CDDD/w533S*]vmժ˟z)G9ѶmiӦ7Ju---###knn666mӦ'N7Du4oQ}XZ{N:IW;t萛kM.no g1$''A.Ϙ1cܹR| 0: UJ$G׮] EXX۷@㠊 СC{ׯ?RgI F@ ш#?.˼r$o\rС3gH@ ŧ~*u `gݻw޼yRg~__˗K@),,TՅR oҥ ֭[:u: Ї R ڵkjH 4`s`8 @-T1Q02ULST{:3}[[[K@5zhwww\.ub4/>>>>>>RФ)ax.\(uu0t׮]+**RgPм: UL ULի:}A47*˗K*&@?~RtnݺVo޼)u `͛P(k= P]]-u ` juqqAhT163qZb hadR<*@ OT*h:okfee%u `b-)4)+++Jdēw\,4VR y м\zСCO:P(>\Ph^~'__߈h:wQׯ_:UL0xoBHJJ:fj׮]֭oKȤxTW\Qwޕ:Г Rb-[,##۷: 'Q`bZ( *&<*E a,--@sA ULy<(u MҒ&5DY0xk׮UTRqp hLмP4֭[NթSͥNURRҋ//+;v**99Y27o 277߾}w}goo}֭[ER͚5K[Tŋu6c 333m+.Zȑ#SL߿aÆz'''d2MR*7n|ݰaCϞ=-ڵ Ҝ9s""">U SPPpСLh:[nU(/:Z### E7QQQ...^^^ !$$$+++$$k׮_쌌Μ9Sl_~իo߾-++V899b{III||J۷sEƍaaa5=kժUNNNVVVÇ߲e]TFFF29%%zGxxxhfHMMJ>>G_T*Ջ/Tl .LHHXzw}nݺ,[[HqѢE7n\xqaaa||H L>=###99yٲe˗/oȢ888$%%]~}ƌӧO\ڰaCtttvvw?}X,aƍ&LJ~^^^_{?sssG]3ƨQ\ŋo.ع$66Q<"nݺ &߿GqqqP*FZn ?j(KKˆ܅<,,l…uO 4())AOJ*&jѧ={"""J??{DO8sNW+++m۶rJwwΝ;/[lǎ?4iRݍ'N(p⫯ZlKNE*++KJJ֭J4iRCeݺu311>|1cj ;vk_ecc'JJJgΜ޽… xyyՌ!~?ul(:::11q޽ֺ{spp_׬YӪU+Z aÆ"/~gSSS](ALiӦ7zmCL2xڵu/u]_-UL0xRwww񫇇lj'Ǣֵu5k۷O[E-##`ȑ]vڵСC5{-~lHSNUWW jȢ>|8((gϞ]toN<4`=k~6jԩ7o.//߾}{Ν===.]5'>3HJJ?Ν;}Y=0NzjRR0ۍ7:::&MVk>U쟔doo9Q koժp2,222<<Ν;.=3;!(bP UL0xXtsskӦMFFرc*ɪ4=SSSڵKPhյ}?BmϞ:55!܌45leee**--… ~~~5ظfgWlkkwXALAt钟/~~g _]sݻw9;;kA&Lf dfffggSO_+**6mt۷o߾o߾ _V[ť4dhʔ)~a[~(Z/_TbĈI&#;{-((HMM=u}7nܨճW^o{Q6mZ'DEEl^z=A{U*1' rssk'ULDGG3fܹ!!!3gۃrߎ;nܸpB;wmll<==k=Iɓ'/Y:00P,ki矛0`'N|ErUƏ?p 4dt ~Wr'==]uС)))w;vK/thڶmf͚6믿6$ ׯ;vl߾}5?~:!!nŋ>|T*e1|wl<~xz/ |xnnnttAX;vXn͛74LGEha t&^zƌÇOLL[MLLf͚ꫯ&&& h>WTT "**JӦMST{[ڵkuֆ?BSL۹sg5Ս055v?rxz7|S]]~ʕ+vvvKFFF2k׮6l_]]]x۷0aaÆ'O!O333GGGShO>=p@[[[ ٻ((("k!ʈ"`r;!VYAKLS)E-=.Gh.&j qFE7DN,=C_3}-z|,&?j]vR`._V8hРׯd+WlܸҲߛʺpBXXXmLL̬Y?~\˩݅aUݣy/_>bĈvK+,,\zu͕JeM.U:/1zEU _P!7n,uf,++K`F˗}v{{οҿ4~x e˖=᭨]y4޽{A_b?񫯾:rH&Md`… ޸qCTN0 *&UV :tHQ|ix]fΜyfybĈKZjӦͦMʵ{17o;77rWT*j8[U oE°''SRRjժ+Wg=;w,_ЬY3WWאׯ^Æ/U;!Ѩb[nٳԩSL&?cǎ#F>|ĉ׿uGDD3XO%4L|!Clݺ޽{Ǐt'KKK'8Ceee:|K,ϯNTEU;l߾͛G\|?[g^>$j>!{nB1qD`*b#G~Gn>}>|Cʕ+?Ӱa ٰaŋ.]jGU`CBB?j'Mot! @?ݻw /a߾}:t֭_~<0v?[a.R}5_:sκ㞑>ڵk+v={ѣG+пD°h4ׯK@%L&:PSz@*/ҥK%uu`֭ 8p-[C +u,Yr-[GG3f;S& j5?aÆA @MQwҥ2SXX;Qݼyw}w/>}GRG UL0{ 0_|ŭ[jX,&PGSSPPlٲ_ f*&T*???0^^^ޱckؿW^jiӦO5fD3 =3nݺy󦋋YT1]|B,ԁFRԖ\. ХKuI'O5O4mM݈iu?3fKB{YL0ik֬QTvvv;w> yyyK, ^vÇJrܹ={ԩԩSAHLL֭n£G pT x{{GFF^pAl͍x֭[WȢow>>>/w9+)}AAAOֵ{{{hѢ_~}5vتSWm9{9yAԟÇ+J|ٳ֬YӼysAvڵqƅ '&&Zjٲe'Npqq2d ٳg|͈#5kVqիW/_<==1..Nl0aBzz#G.\XiYf]vŻw>zhLL9+)}ovZZڡC͛7|]Ǯ]n߾=qķ~;33SDK.YnUYqZ[T1LKJJJhh9si4JJJy慄XXX=zh۶msU*/ɓtC Ծ}{KKɓ'>}:;;!,,lʕ &%%7$cƌi۶ŨQv)BqqO?jժgϞGnذaѢE=ܼy6mڤjқҟx׮]smݺJ3f[nmeeկ_!Cl޼a7^m-` EAAAd2 ݻk,** vbA_4kL.>|X &[7n|炂*MұcG񅋋KNNNIIx4}b{```!o޼9`/////>}?VқwIV=z.۷/22}Zںu'* {4Eŋ5M?. ѣ666iii_~K.'Ħ/ܹ)_|EGG۷\jcǎUsK~*L&|V**%%%+++,,LW KK˲j=)i o;nQ'TN<̑#F8PZZz̙&M?&&&333%%%11qذa!;vزeˍ7fΜ!O0!66_~yjںO>111W\׭[WUxxԩSSRRnݺi&sVzS lذa}]dIqqqvvw}' nѢEzz]SSSŊnOJZ[T1Qa{̙coo?v|ABBB 2mڴw}W̙ :ujڴA;6##XlYv킂o'666<<<66!((СCF-[K[[ۮ]`Μ9jmllLs=rJ#Bv^xa޼y x eFRӕ|wJ)b4p۷?w\FFR: P#0-o޳gɓ'*QFISAΞ=[ Ç5իWׯ_/pReק'OS0.@M$bk׮B(--:@]yӘV>~6>>/wخT*,Xyp͚5*ήsϟtJ-Y788xڵ>4VTTTzzzTTرcyfq3Jrܹj޽{wcǎ}튋իÇ+NRCUĸ]AFOֵ{{{hѢ_~}Xq7*VzVj`ğ{I@رc AԟC УGJN|hggw1ʕ+וc@TVݾ}{[['NV4\yѶmFݢE>}oTsXlYMkƌVPD ꏵ\.wssxyΝ~'*`ooQ+V&--M|/tE,aVҲڨÇ矷nZH]7n,]GYYYK,qqq0`. ۢP<2,##C얚ZTb˗/ou_?Y\\RRRRtSUϪT^-zC̛L&S.\:x*çNRVVv֭M6oii9bĈ?gΜɩa&M?&&&333%%%11qذa7QcbbWZbŊ7xʕ+Wi999_u޽V&M~;;W^y%??I*Ucmmݷoߘ+WT(>>>Rp̛Vh4RƓd hZ`*8 MqO`bPUL0oT1_~T]VVJjٲAx7[n|'OOFhxU*A___ZݤI.^8a„={O*rgyFZ)Ϳl2WWdLvر~!;;@ >ƍRj`ިb O```rr4iD.sSTTgەJ BBB###/\ YFRuN[i%K]Ç֊JOO;vlUQ]\\6o,N5`1cT:_TΝ;WV(ʸ^z>|Ursscbb֮݃]kkk['X鮎7.!!a۶m[߿{Jȑ#AXvmϞ=͛g~F4`˖-{gԔ'Y+++tRFsΩTl}Lrم :;;O>}ł (JL[.GGG߿Ŋ L<9--?ٳgzz[i+x;wL81<<{=f Ν;O8?|W'Nk~冗SVVw7on۶ѣG_yJ;T*KJJ6og`aÆiEi4wy'++jWǏooog })Sܶm޽K.W՝;w66 LodooߨQ#mv IDAT\ϒWWSNoϟ?QVVjΝ+lR>~TÇvvvǎ߮\200P|]ZZ￯6Vn߾'t+7ѣG۶m=zt-o=Ϙ1Mڞ={Vl?~f*7nm۶) unnnӦMW^}=<{1͟?ق #G;vLlwtt,3--͛ еdffz{{ бcG%''$---//{T---( @|ۭ[q6k֬ҵ,-- 7wމ߿nrV^믋|⠕UN222N>~ݧ3]qė_~y̙]v5|`bIspppppã~~~;w ?zhϞ=MZZZ.]A_tb&eYYYQKKK#""{[8roܸqܹsC ILLիOigDoX&eddo^Ԫ2bWA { "## ܯ6)k$uAnn={Ҥddd(r++SݺukӦM[ZZ1?$++KH{0 ,x뭷u떜w^su%777--) @l)..^l٢E\"Bn͛R$ "FcX\n={=VYVGPOFO@C"jRg駟ۧOݻw_>66633SOOϰ]d2!Æ 3z˗=74nV5kqce2?1bnذu^رcFdFۨdeeeu322|||ڷonT40T1]zgϞ: bƾkAhܸG*/yFOXaP(VjdAΝ;׾}{RaT`߿?rH;;;5eh4RgFYԉnݺ}s=pGreHG&}$Y7))Iu?.ɺwܑd]NԦYb%L|V_z%0T1?&6|EՖXYYՊu8^z饗^z)%%O>ٱcǩS4ĉg̘X'K,[NyR3gΔd<}6yIuppd]<)r ULR׫W/Ç}{Yx{AJOO;v g8~m) x{{GFF^pnS ڶmۑ#G_PP`OOɓ'߸qChSA̛᳘+VHHHݻY֮]xݻw=z4&&FDK.YZ z˗;::JdHArrrRTZ{]PPо}srx hrZɴDY0oCtÆ wԩ {饗 ?Dcƌi۶ F8p`m@%W^?u'|iӦ'iRP֪U+Z]շTvU|v.dffz{{|-l;/\\\rrrJJJ,-g&PO|h_|I&ƍ]n݃޴iS~'ƍ={v͍;cƌ{7v…-Z0n#ܹc 68::7{7o4nѣGy RTT_,Xۂ XZZZ[[[YYU왑[NNqc]ֲeKeݺ]իnnnƍuwwvڟg] FQ՜,&7ndddd2YIIx"53=6/icccFnϞ=sss۸qc}޽kX7JٳgWM>)… >{joooׯ79r 9 ȑ#o߾mgg'u8 f͛ EEE2O>3gӢE UL0cjyVܹs GGΝ;K@=~z=\]]>,uL fgt̙3o׿_:Z:*&7@,u B.K"I`֊]fmm&uULb0-T1LK^^ޞ={~W?wQ(RTXJpА}I@=)--h4RTp[JJB3fAd2 ZV `ފ4MNNA3T16Lqrby hx,@R۫j hѣGJ`ިb _rr)+ \.u }Rń -88XVH:C̛ G7 L#P`Zb={RP A0|/&i9}thhh^J@=jN ,V+L&:PSo>B1aPgby{F~AQI) PsǃhbPUL0oT1 BhxT*UN4mTV7jı?`ިb ONN^5jH.K@C?`vby U͚5:u*&f͚qtu*&Bܽ{wϞ=Ǐ:CB#uLߋ `ZN>ڳgH@h4M4:`޶o߮P(&O,ukoA,&FsMd2AZA4XqqqRG g1? ULʡ *&ቲ`ިb J:ciiV`ިb orr)+L&˥N u0k7o޴}g@ݠ 4:UL*&i{={?.uG*6mHSbC?YVۨQ#LVVV&uLg1mܸQP{RƓd p`߿hn߾-u UL0o  UL0oT1hx,,@cooR:v(u… ;`ިb OǎNr#`Bd<o߾mgg,uߋ N.W[_~}D2Z]tYnyeeeT-[8WeGՖXYYդ3vj-[ꚜ\Ç>ѝ*Zn݃Û6m*uF8 J^^ޒ%K|}}׮]CAӣƎw^߹d3g|6AJܹs{٩SSfggEEE~m޽}||/^|=]^z>|8>>ۻE>B pj,X $$;22… ULm2+ʄm۶nzʕߩRꫯ^yGG߻w﫯R*III7θUfΜ[oݽ{W @MР.^Ν;'N .{7rȊsrrvUyfS*=ڱcG۶m.\e8eʔg.\y/l޼O@~iԨQǏo׮]Ő]t2eJxx$2\.+*ݙZf?~g}VR* >>>ݺu{SRRx;w4iD?q{t"uGT>~ܹs4_vիnnnRgjp}tvvvii -Zs͛7oӦMߝ:t6|֭[[YYoȐ!7o}3m۶Fڹsyjyʍ>|+9jԨg1b?l]W ٳgCCCL"uŋc'by[zB;w iiiEEEnݺ?~ҁׯ_t;+`x6___EfrÇn޼9`/////>}dffݺvy߾}۷oժ֭[O8a 'ر%''yjyʍ _) GGG[Smk 40T1ݻwO occ&^_tҬY3A,--t=[o &BJJΝ;=zsvv޹sy{{,,,**%%%+++,,Lw\&93?QF=Y`:d2 @D̛NM4߿LLLfffJJJbbanbҥK Ztipp &Ž;lrƍ3gxxxXYYO:5%%֭[6m8m~~~^^^ppp-IjO))*&7*  !!!C 6mZTTԻ+7.##%,,lӦMf+A9sfBBBN6mbXCU%>>~ݻw"""tC}wޡC)SL:oaCj3*g>z}|L7;vŋ ߧ;^F C@EFwT`7\@$% \*\K%5w AEq^ť@2ee~o`f@9 >9罼ﷶ}&44T}AŮLS?֧ݻ=}TyfΝ;%((W_ WcMjLS/ȑ#]\\f͚-`@zΝڵk &N8{l2cYFFw!!!3g4ЎWM| =`?  48p`pp?C9]tyslll\ҡCRL& r {{>xaÆRg@z+VK@umvРAJk׮݌3޽+a0KP-=JMM}APPJJJNQs8ꬂUVmذ>2M& FY0l?٠ASSSԨbS5AK,: ߷: ,&6S΂V5J5*==HL~ {laug1P.&6gԩSR,--Z5aaaAAA>|:tDjΙ3gJJJ@aw1^Sz@SRR*^_g}4ЬY3#P`=zc;;;]v5Jwދ/߿ Ҷm^vM=z,ZhR$SO]ֵkC%&& +--_N>=p@T3""BkΝ/*_&a5UǹsظqcB'BAAL-Zh|3fkcΜ9:̚5K&>|XwAWx\}ZC~E4$z^1/v՚kV.\`aa?oV(7>>AAA{Q8::={V5oާO[[[''KjL@MK(ɓ'EFFz{{w9,,lԨQSL)((xmfffddzdjj:vX\zj]dgg_III:u?vٳyyyۋnnnIIIorssU3~ĉAAA[nڴϟ?_$ڵ/L;;}EFF6n_ƿ>=-*.~}DiӦ y Yf3gΜ 7lll>_Ν;ݺu"ܭ[CQF|_T622/ FP(N:u퀀V6I\\\߿/^ӳCVZO@tOĉm4QǑYfr|޽7ئM#JNN9ruT'aoo?gϞibųJOyZ_}||"""v/4hO?*vI''.]|P и{]F۶mǎ`;sر7޽{7&&fŊ#FW%իWk{ϡ:Jd͛7?~|QQQ999oNLLMiǧ8::JZ]Lxi<äA":NX 5ݳcԔL&SݍU>IV>+U8ڪik_jv&11h\=66vݺuWYfϰaf̘G͙3g͚5:t033S ^xq``ŋmmm{ʕ+GѳgO>dѪGƍzC@@I4o>zĉ;v2doΝۨQ#\~̙חO@(+€㳳_Gݽ{͛7׭[.^Xٓ'OF٨Q&&&[޼yΝU^}pyBCCc8qBGa'&&"##Ϝ9W_3?/_{~~~O>ؠK={VTΙ3W_U(?>aM6uss366:`߿ɓ_}̙+^߼yS"R٥KNT^z˗ѣ|G_#Ν;7fSSHU{{nppxƌ HLL,))̌*)33͛Jʕ+VVVI&M:D T*}]??ׯ'&&viN2]<[gu \۵}~'jĦMiӻvjnn^MƍWOzkkm>Ө>^mX?o߾?Sqq;wCmۚQf6KAL,&6{{{777++*vI]j1/mpǹmSNMmذ¢[nC}w4IgUF}ױާ~jcc3fo^LɗE#44tȐ!RY]K]fHH̙3%SjkI @4jLuֵkפܸܺuK%ï%1ˀ7.ǎ;}AԨ} wsd2,&1/qㆯי3g椧߼yH 6w\\)uuʹsظqcB'BAAL-Zh|+W 6¢}O>_~ ,(SXf~"Fx?!!AUq߾}:bk V&Ʃ1GNKMM1cFv=<<̙Seoo߹siӦݹsGw#ɢT%>,ɼ֗رc?*3XEu`߿#uuѣG{maauggg__ߨ(SSӜ()Sח.]Q޼yɓ'kɓ^^^EEE_}UZZ͛/\gٳgw.oذYScW^rw*ӧOOKK۵kWfffDD[Ʈ2o޼7nlذ!##UVºWc֭[liݺuR366VqŠd2W>( |)ɓ'yL27ߴo> ...;v\._z.&LP(8 iذaDD7eV ޱcGtt}u=6 ?+՝Jvv:Y屋d2]w>>;v숏W=*?XmҲe IDAT `tqJdׯ?tȑ#ϟ?߯YT[ 4hѣF*PqKO&mڴ)66vذaٳg{=’FʷP@iii_~իuTQhS޽;k֬ׯϛ7q ؕJeqqGN>9>j}5zGN0| UF۶mǎ`՝ո(?uv17 ӏ=:|pUv}u5/j,sYR9e''m۶:u728qDݻw{iU=GM333{ȑ#5j4x^Ѫ}ٲe&&&-[8quWq+ +++WOLLT J`K.w駟TmF=a6 wݻ!CVZ%u S5j$u g1jcǎ>}Z @mt1kk봴4T8$$d̙wVW.d0j-b.ΝҥٳgR]en{9QWI&{ -suڵA'N={cׯ_v횻$ U6mڴ|oY<ui㏂ 4h`ҤIe2[n}ڵWzxxHڂ7aw^jjj^^A@-[V^=AWZմiѣGH ڈ]L0l+vd2A@ڶm;h Ǣ]v3f̸{os^Xja꒬,#ԴlSԜoUZjÆ ]L0lbuBhٲ7l a$IK!|ͲeˬN.&Pl266VN~~KxDdkk+ufdddee%u^TT~G&B~-LA0h{W NQ,--|5aaaAAAend tAPFb@M())i׮ݵk}Yxq߾}N@¯@Mؽ{)Rݻŋ/m*j'b WZZڶm[qG-0`ԡIsر_U k׮uСC0r&/9( Pᄒ:u:Y<qqq򋷷2Ϟ=`Z6a\~q]֮]c Ν;7pƍ;88(8A dh"&&F㣼|X&yyyd;w6mڝ;wT{1+W 6¢}O>~Z`A4i:72vxZI??qƩT*-ZXjUrh;[dpppT/OHHPtttܷozYfdÇoP5pD0v1矩RZիWObe2 JRf=ڻwo #G8;;FEEEPL2Et钯o͛O<\[/[nU}ܲeK֭ ̛7ƍ6lhժoz:c Uwz9y򤗗WQQW_}y .$%%= UX...w׶L ?>22277W}222F]ٜgV_YwwwmK~7M6l8k,m={ֱc-[yT?"u`ğu?/R9yd??HooΝ;5jʔ)122211̌TLMMǎ+W^#gϦ p޽'Od2]wmaa1eSUƚLTN0AP8p aÆ=z􈈈իsɠ[eΝ{+Wwuu5kֵk.^(TL ToٲeС 6lNy%ׯ,ik?888%%%::Zc+͛78pݻ*\SGb  =2tPC {nrr>-GEEi\۶m!,,lȐ!VVV ޳*Bxxk``bn߾ᅲ?/jfПumVa^^ގ;,--=<qħOJ`ضmۖ{5k&ݫ~s߾}t&''9rݺuӿ/bܸqٳGirSSӂ6mڢE={_^53TH掎>>>;v숏[ &ܹ3..ʕ+AAAUiii'''uKk{xxo߾===]\Gݻw߼ysݺu ŋ277W(VVV-[Ĥe˖'Nttt~E]tiѢETTԢEįHٳJrʔ)NNN~۶m;uT N]mϟx AezWƌsM;ghh]WM?~OݻwSt;wV zWkX8رcݷl3"WlPU}Df>䓱c֯__;;GJg1jcǎ:uJ jСCrKӧuZZ|ТEuiVZ6,&@rEOOώ;^pA,jNnΜ9s]|en̜9@;f_5E0SNٳM{{܂,Ie,u@&&&ܹ*r֭Q5ɜ/DvvvIII<{,//=~ /߹sϫyxnݺ3fU* v1ݹs'557D`d2 U{yR|qekW?!Pj B~7|+uba)۸qc>y^VVVFFF+W#kkzUi /rM:wpBBQ$.&u,f~~~VVVeVT d: m?Wرc]L0lNNNR u=zH>lȑN Õfkk駟FFFOmll:g1W.gddH熳`JJJE& T*@YL0l:ş{P7 ]Lb7ac{,,, EfͤFmٲӧRV` @ӬYXSi_]L0l ůA^# `ؚ6m*uzRa@.&@풗wرDQ&M山RV{1j۷on:99Y,jν{RSS@YL0l^^^r<++K <7v֭JTL&ATJZ`ğu?n`  @o.&P+MJ@Z~_~ꫯJ@1!W{>~8++F,<Q [RRRJJA@2/ .XXXAAA25/wk3}rX*uuR,..611:H-2cƌEצ҆ڼxyxx,YO>:t>}zFF~hhh߾}۴iz{{{ UΝ_.B~~w}ׯ_6mڬZɓ'b>}:99-]T4 INN quu3f](._m7n|7 ɓ7zxxxzzFFFe>|pBgg=z\tI_t|ɩfz.ʕ+ݭvڥ^^}Y5N+O[NY,!%^n͛7ONN.**/v//\ ~5j?Ww/O2N8Q\\|ҥ?CTN:UP?Ç6mR|ӧKKK?~|9m75cǎ?왶Qh÷nر nݺaffVPPT*zXwwwsss1c7nܬYQFEGGiˬqrӵ˷{gϞ>>Æ 1cFHHG}$ }>S1cxŋ#..Ns6jH.9sfnV*q^gϞΝ;/ׯ_lذ¢[nC}wT#""tҢEEjkATk/ʕ+GѳgO>d+j|˧N/b2~Ϟ=+,,|WvZ֭=<<^*u5wvUϩE 2dAPur8 @cnnP(z)u5믿NIIy7@`,u@ =M4:֨QFIjj2sL[m]}:99-]|yyyaaa ʪsok\o׮]BcUxgg=z\t|Ȏ;SL111kd׮]ݺu߻woAAAxsO1m+ẇ]L0lR%AP*RP7}'N,..V` ˗/Wݟ;wnxxU9pBA֮]ۦMk޺u+,,ÇӦM[bţG^:pϛ7o֭ %&&'O4iҍ7tBcA&Mte˖s pqWWןY~2˗/8qK BCCB+Vjp.&0=j =hѢM'00P_RR{+VtԩI&K.ݳgO߷d999֝;w.S~XtQ흜A1bDMLL #0111K,i޼B5jT۷?qğ?~\.#>|X!Tb^ Ibc:$tAZn-~ڵx[o0 77A;;}EFF6n_ V={ĉ֭[7mtϟR[ .(ۋzB8v/^wU޽xѤI?̹UmCrJ.&P')^zI@/SRR &u/#OOORyU3gċ;>|_A066.--U{С?UVAAAeԩMbb͂ѣG+SNݾ}; @orh )bS^{ǏW(۷ܵkW^4hiB+VvBE3\' ]LNrqqݾ}A(777շ@M2550`… 嗝;wMLLO~ԩٳG|ԵkӧO׮];qDaaa 쬭˴oll.))|mmm;0ի 222vڥz>}222k2gŊVH\cp$v1\vM ۷~۪U=z||xŁ/ѣG\\xܸqW^uppϟ;wnFr3g֯__{O?3fLNNʕ+GѳgO>dfÆ ݺu:t;Cy=4i"kݿ\cgYLMM ׯ_a%Kܼys۶m5 І/3gΤ? :^vR222?~ܫWK[R'ˎ7.O>MHH033իYԜsFFF1bYAYaa+"u@/]ܹۢE~M,j΃RSS@b͕;v:g1ZYYITL&@YL0`:zTn߾P(7n>>lB.&ug1(RY\\:::'b-3f,ZH6557{lOOOSp.&P')^zI@/RRR~mxIyxx,YO>:t>}zFFx???ׯ_6mVZUо}ic͚5h޼mAZzu ׊ظqoagg7hР'Olܸ322RG k=|p…=ztzuk=rJwwwkkk??]vi,#ҫW;w)j:S=((/_wO]^ۂ:::ʼngϞ3$''3F0O)*ߔ>3g1 INNNRPNॶ}ClrÆ Ν{ʕUVϜ9۫Voٲ%::cǎ |W⣐FEE=zhəqZ Xb͚5mڴ ۷oݏ9rԩc<~VXkҤIϞ=KII裏놇GDDx{{6쭷Ҷrwy˫UVeʌ?8!!֭[>ev?͚5+44t˖-:VMGy ڵkO>D/hLST)}fR#bIII9wA!Cnxԩ.]())ٽ{+:uԤIKٳGkfgϞ8p`ɒ%z:u2Fo4kw޹r?f{wePYEDq]T VhJY&*zS!Z70\pɍ0=xJID$2?ߙ37#"}]ukÉ7}w?~\[Tʒ-ZP(BBBT'뉉ӧϔ)S$9;;1" 11Fn…:u:thhh.K{hҖ?:Mb1\V{1hE)4={_QFggg Я_?dddzyyo^RRbffV}/rDMs)J 'j"%%%!!ԩS%%%EEE Fs Э[/_>=zݼyRηkh$u.cu[ooh!UJKK_ܿ?;;{?b S###xzzj*##C|{ԩ>}jxj@2,77W|[㹘*-[,++TVV6qDBځ>Rߞ>}Zu\uj 8::޹sG+Lmh/_ҥ\.t钾h<ӦMW^{; "77ѣG;Zhyf}4`rrN>}o6!!aĈNԬHUUU䔖;xR2Ln*׮]q0""bMdk׮>x`РA/5jTUL0`/:_z@]pAjrttrJSe̘1cƌi8 ~; @^LԱ ULYjժBpppw?9s$0\W^ԩSǎ^L0`۷|1qhV؋ ii'T14-T1ңG;F͛7;MOnݺ윓,Ͻ{rrr &`rssr / Id2AJ$ XEEENNN*Y?t5ĭuT1Q٠ :( *&,jJP;F5o޼w}gwƍJɓ … ݺussswMqUUUee:a/&0\~e}!c/& N }? i д=zĉQ}gr|ݺu@`۷o999ܿ?''yR* d2}t^L0`YYYr|ȑ@Cb/&򜜜6m;xR)q`/&0 hb @^LqGY0`T1fUV ]vQ͞=;<,]4==]hxzv (˰a,XT*ϟoaaQVVT*g̘P(Ξ=7nܸ3g=<LխK.r劷o}ʕݻwnݺ,...IIIׯ_ٳ'''ѣG|󍅅ŋUܲ+++###UGsWWW333?}v3 ٳgƍ7sLm_j s]kkO_}Օ+W,Xm-[$ڵ;~Ӫˬ1UR2uvbO>}Ȑ!)))ϟ~u$$Ιq߾}k_:i4T*Aq8`aر |XPP0pz fff...xܴ {1Q-[* ooo}Шy˗/ϙ3)odd$lժUFFԩS}K lĉ "---///00PzcL&j|.x[QAA2quuua&&&iiiwٿ+>R"̅ RRR[jecccii:_W6m^~墢:W"zA+**nܸiӦ:Gn(/V[lcc?￯_o޼cx?&/n߾X={lݺU"-*&0__˗/7o@30k֬iӦ5vvv˗/ 8py&NX)k׮577ׯߘ1cƏOLLLhhhLLN8m,;;@maJKKϟ߶m[\~5k֨`bb{Ν;+:k˦D)SXXXxxx=^s؆bŎ0a|`ee5i$cx?&/ITTT\\\^ZnLo6))I"-A ;77ѣG;c/&@sT*7lذqF}خ]]`DDٳ hf5l"J)SZh1yd}gteǏ2DY4M6}o@sS]]mddԢE*}gt^Lݻ~~~:tv횾h<999w r|ԩ L&doFjjtOOݻw7NΝ;gnn.ݧiԧO;v4\5.-))a*&۷o;xR2L}=߯8qℱ[oհ+ʊQ&S'0hbd2ccc''9s\pt>>>+V(,,!"""333""iҤI ۟8qB̙3nnnÆ swwOMMuss[dkXXإKn CvppXxql݋СÀΟ?:|rWWWKK#FڵK|hA\m67m#֭[7lؐicc+½{fΜlٲgeew8qŋ?qGGwN:wOc$,I+)1ɓ333إK5ҥKLr23KDHz%5w-\SNC <((W_uppx0w@Q%[[#G;fiiiii'O5}gdd5Jէ8;;UaG ;;7oVVV$%%\rԩ/RTTTSΝ;T*{)DFb%?|W?~|ǎ/ x,*&`'OĄX[[0ĉb,;;@ALbaa1z^{*--?~۶mrӧ׬YSڵk7f̘Nj/_4pyM8Q_=D7]If]v0`w}ʪ9):>Ȫvyƍy; բE~͛7; [UUQee1MKyyMMM ,OBB… 'NGW*틎jٲehhBq>} NdJJJ=zm۶m7rJJʥKt~o58RQQQ\\z[UU%vo^1QhZ߿׾}7n; SXXs=q姟~zAbbbڵk<4hŋGUAjDuVD666T={dddoވzϔ)SۧzٱcGHHHݲeKwwɩ߹UUU;hdT1%%%͞={˖-wDd2 #J.\o еkŋ;EzNifg_~;w߼[lIKK{y"""7ᄏ}0a„{z;rzW1jJU̞ymo[n]IA~D5߿.[l…5ZYYKbbb"n3厲0DT1ܹsGA@9pŋAҥ'|ꗿ͛7k|XIUѸgǧk׮wҥG߼}Y@@@3gNBBBݺuIwm۶$7ںA*Wn788{o߾w͚5+WTQ/|zaڶm۶mƟhLT1+!`_իAxg,,,͛7sRR|-[Իgջe˖zW1/\p[XXXAwqqQmݺo;uTyxAo^''z>F1bĈƟ̬PFfLHcc{?&S'y]Ϟ= E:{=_~{%K,Yާ۰aÆ  *&,* }Ш&O۷o K`ܹcaa$wWMSIIɦM,Y"fW^g e7ீ*&4]>\z+޽+©SPEo^YYibb1Chp999@ S*M6}o@o׮*fvv?VZM>}֬Ym۶mhJJJ=zg߿_[SNik߿N8p 33S[+/HOOޯ_?m~iJJ Z###kk]bŨQڵK[Ν;_um𸪪 ##p}gt^L0`<ɑ]3ҥK~S_kkm۶_֭[Z{aoo5%%ҥKZ_x.]hkݽ{s紵kZ?5""bȐ!Z?oV[E^~emSLٷo׏7Nܝ;wjkݱcGHH?pǎZou>w޽:::JT1;&qCbfff=zT[I5 pݜm>8E }UWWK㪬2e)UL`d2}t]z>۸qcYYo`ggwyg޽Zn]PP &Ի4{ls&Luҥ۷o߼[l,Q,>󫨨645TF4-[JФHc/&,YYY9r-L̙m۶.]dddk߾}Ck sssJ؋ ߷w/㏳Aprr9s;cjjh)b/& ULT^^e˖\Abbb>}MUL"b۶m+V8r䈃*& UL*& Q }}رMW5NNN&Maҥu&YdkXXإKj_jޙ3g'$$ :a["ԏR:u#ݻwm۶L>LLL׭[622R5l7ސ[ofٽz2332e 믿V*7nsTuyyy x{{yiqqq{o$%&&[N.+d999BCCA ݴiS/_:99[^((((**6Æ }n= ڈ#._ 4 `b͒#Gt陑QZZ%߿xxxIIlŞ={\\\RSSry~~QT# IDAT#gggOTeJJJBB©SJJJ')>I=zn޼YYYmӡ6666III+W:uK/yȐXkkkkkk]uI'NWvY䨨oK.={{ݻ˗/;v7,--5v/\\\  BHHȂ ; /H?y9s戯[x)))~]e9A4"##/_bP4akk{С+SPP/&NP(U;7Iܹ#_4;x׻vV;Aeʔ)V1uY.W%:33388x>>>Rg ,xI5TVV7w(V7n(=888jSN]t}'^RKt٠ E&1SSӑ#GFGGgggǏ7Nz۷oGEEyyy9::FFFUWW߹svmIoooKKL]߾}k2hg+**nܸiӦڝ/\R^^ުU+D<:qbccdȑ5zd5k|Ƒ'OaÆ޽{PUUCcZT*+++߿?82lÆ G  Ϝ93a„Q{$,..7 `֬Y꛳zպuk"cbbBCCcbb q?˃8o޼'óuOѷ~$2eѣ_{ڝKKKϟ߶m[\~5kΣ{l]Q֭[<|ԇ;_zw}']ݳgzV?ܺum۾ꫥ;w4118ƍǎۻwoU氰v%$$H䉍U'|bbbsM2ŋ83gJ|ݻs16##~;<<\A 08nnnGw>؋ дTTT=zwr|ԩ@`=ww4k׮y{{81{`۷o;MUL0`7n7oɓ@r}G@}8::^rE)JL&@eݻw/''PAhHT15ĭuT1Q4KT1R駟۷ooggP(N8!BYYL.]$''kl*))8~NNάYzaff%wttܺu[eeL&+{H7Ԉ$>O[p(aÆ;wVӧώ;GӎWk,v{Abp9sdCI'DJEq:v[o:uGIIIOY]|yݺu 5 *&4g}w:۷e˖EP(O.>_W:;;O:Lv߽{K;֧O󟹹7nF 0Xw޽|4VWW#/ٳ5PQQP( EEE-ZHMMԡC-[%±cǪt2ri%Ja,X{/+WѣmVVV&wuu2dHϞ=gΜyU0lذnݺ-_\? ~СC܎;lٲ]iΝbiӦvyĉJ߾}{Ibcc}||v:iҤ}۶m2dU-Z$Ucg*^v?.>}Yu :k[Omݻ6==͛ҝ5D+UGm믿J?lذv߿_<Ү]$؋ guqqؚ{1cƨ=z[233u?""ի366ءM6>>>3fزeիWu3//ҥK5d2&m#DDD$''۷oҥ˗/W5mٲegϞ Ο??!!aŊ>ydttMⲲ|||޽;uwy';;[xww+Wl۶M$[nݰaCffMlllݻ7se˖ݿ?++_"Fhx1Rq%>5w}V4:lذ!88o߾]vU!JKJJ6oҭ[71ͣϟeP?T1[6777XYYItKLL [n\.W(ÊSk|Dh;99/МsԮ6999BCCA ݴiS AOtҕ+W;::ϫWnѢE[FFFׯNULh:u$‰'o;w,}nrrrTTTbbb.]{ZYY{NqF~Ǝ[XX(ÇUfff?C$D'OV^dddzyyo̙mϞ=RSS322G4|bq xLII ֭[Ng>I=z/n޼YYY~MRR޽{۷o?vtq@Q5vxODbmmI֭kO s15DA+ǹ}vrr/Ʊ111?@ VΝrW_}~0))]իW> =z$xȑUǎsppx;uԥKw8T*M ѣ}====[j!=uT>}ķiiiggg<СCWUfdd$(++8qBHKK T3466~$u;x׻v&Dڝlxw_/( :Kj*SLD}שH?jo<+n|nܸQzX"]gy_}U77JJJ\.<55Çcǎ}^wI~Ϟ=ի[?\s֭ ۶mꫯܹD>}ݻӞ?'MGg9sFTN>7޽xG&Abcc#H"|}}f͚1m4USTTT\\\^ZnzbLLLhhhLL4n[|yPP{@e{``(0c’%!y֕J\t +55m<~<+JmA@+<3 FΏ0 =_3\uk@js111._1eÓ4رc"!![nr6l.AxgBBB&N3?QHu6]3?1y~2>C)))z4d3#fj` 3f̽{Z G⍲fk~ ?@)..vsssuuߍD{ˉ'c0ѣGnjSO9rD,`LH$bmζbϔU,Ybl=<$hGT1s  FP8::+WWh&7m4dRLj-[R' +cjj)ZΝe2)tLUUU>ULX YuR'''0S厎eeebg ^L`bYUL*&t՛6mxAZ}ԩ/R L*==].Ϟ=[  rڵW.,,:y؉UYYYTTKqqYNeeJdb,PKU[[;nܸSNxbC0;FD"vbQ[l'B``?񏈈s5jyyyuuus7nZZ׍wܸqAAAƍnܸ Æ 3n۷qܹSO?q_ymPK_۹ o J:_֭q={V[5baÆ˸q?s7n||O>iܸ/ύwӦMSN5zO?Ըsomܹ|Ɏ;;*skܹme]EE3z\*&QPWW˗ {yyݹsGzkڵwiUVM8Ѹ=զYfwwFW1K7nU~MRwneeq' Nl:ujUWWW6lXΝ ? G1z܍7&''8;w\]]/&dܹs_.\ BNlc۶m111X`]{Uޛ4iq_2n9s 8иqƍkܸ\‚=ӎ?t*** _T; ѱT,b%9~˿Auֵk˗/XbԨQ6VVVMdULX"( dԨQFoyÇr0G-m`~}i4.]^ti[PC*--ҥݻw*&Xē'O ЧOK. kQń%jF)K1hР'Ndff3f޼y0{1̋Z/RСCtΝ;7cƌ>L,:bIq޽.]TVVT*`,X/rbm,<p?̟?Μ9bZ`~Ju=0_vvv6m;: ݮݺ,{1*&X0+ tHRTPtY L*,,LTى@t955ULN&s!2`~{yzzg БP`^*&B֞:u/;x\.4iA0 Rܻw/**ݻbg`:*C b3g\.ꫯJ"hY @RUTTD,vvh>`b:$ƣ tHRTPۋI=JV `b}jj)L&;BerTTTxyyg БP`^>ںuAV`/&@GvWWWbb/&y=u_|!v&#Ǎ'v̂TQQQeeebg`:*K.b,,r @{ VTUUUbm%HAh4b,P S'hT1*&X0I*vbB; T*:u;f*&yKMM;SԩL&;*&X}UUUu] '`_h%; ULRWWwԩ40ׯ#G}1KUUUTT{tU*A0  6n8\#vVDF#vUL`*Z '`5[7Ec/&Q F!I0ULCR(b`Rr\T؈@dkk;Ν;h (?|}; +;vRݻ}%44t׮]uk2,,lǎ&`A?>l0ӧO99 $QC~D###Or䈏}#,Zhb`((..^vmpppDDDJJJUU 999~~~g>}yzzJ$~A \|}EkWTTl߾}СAAAk֬)))ѵOJJ2dHPPPFFիnjsNm!Axwϝ;b+WFFF^~i5צ <{Ŋ;IMM-..=ziee͛7 ҩS^zׯm7n\AA_|\̋F̜9sԨQ/_ yCBB>&6Uo߿ /P(S⋺r<;;[t*NNNW^m2c=}^vMV/Z(..imM7WWsݹsoI#Fի׭[:јW^yFҥOl٢+k5Y"_P\\&l~ IDAT-Z}\VVfkk{MZyEWi7Wy={odH]L˗k;w˫ũAOTݠz4s[n-))ѽ$]W_}uС˖-իWnnF_}}};˗?SMvnnjkkSSSO>-v&+Ɇ*v̂T콠UQQѷo_ŕ;884nk׮ן9sňނd2YFF\./,,?~k׮PƊiii)))gϞ-///--U(mW>}=<< jT)2deeb&󻹹8p>X`Q.]R9g{}ϟӧO>y/>C;w>{ly##c9DuuuTT]EEYNMMJH$b,p_L` B.Om*44>++KٳaaaT*ӵr܈A>߯]6hРwwGb]]Z2&&FPdffM2Eh_j$eU=9?;66V@={,((ОXSS#JAx7͛7xe˖[h[zi`b_TpT1T*Zlmmǎlٲk׮eff[nԩڗﯽe 7nܘ8q#""M#G8p_]ti߾}}||lll-ZYWWw}58""9''gϞ=4< \_r%--Y@<ȿocggsyyy 988\~ϯ[ߏ4hѝnСC;w;KV^8ڟZVTb,P O˖-{GbjVV}R$)LQsՅ ?"H4|?bepI$Ax2%%.&&F,,X0oo[nyyy@;;v#G~ <8~gݻ狝@Gsnݺyxx0{1iݺҥ7(aΟ?^+Sb/&Q FHV\}`eeUWWgcci&q#b *&a?ȑ#&$$,^X*sC)Jkkk`/&Xz_֭Yx㍠ bQ [[[˾ UVV޸q#00P c KĕI@; g%vT1Eќ:ub`REEEr<<<\  `^juTTMuuYN]]J*--;H H{1r>t0 O?ݽ{Wj`Ѵ{{1qa(: G,UL@eQ:$DP(R>,...JZ k,ULCJb`j2L `~Fcoo/vUL`bGQϟ$v${;F9uӧJKKryhhA0 0/RZV锔8;;߹sG,`r9u ۱c6yyy k„ I$ClGGv,D"NВ`tx^xFODRUUSZZܯ_?A'4hPK+J&e鮵- qww?zhPP(BCCA8{lXXCfQQQQQQwYrelllNNֺcƌ?~ZZڶmbbboU۷˙3g;hʄJ$\m͉s틽`d2L&;`cchѢ̺۷o۷ϔlmmǎlٲk׮eff[nԩڗv޽uVA\VUUeooܪ666}ٳg7n JO׿U[[?2vvv#G\vmeee~~Ν;^4FA:ptHNN4iŋ.\=~رPQQЭ[7\~ 66yllljjO-v&UUU%źs-憽楮ʪV,  /YD<`⪬; ⣊ *((6''G,ړU1FUUmeeYT#i4Jegg'vKD";hڿ\<-`b:*`bD"Q(Ç;H vءM^^B0aiR5ǐm-;;ѱFFT^rE :{}G0 ( UVVXZZ*v={[O_=77wm-;;;""]Fx{{{yyݺuK,؋ sJ;qѣG;dƍ{Ѷؾ}СC֬YSRRbΝrȀׯ |!-[P\\vݦ <{Ŋ7ٸɃ6Y8e˖u}.]&`Rdee%NZ*999(((::zȐ! 8qDff9s&L`kk?Y}ɒ%yyyk֬1Gߺue2/y?X"6EEE{,XPXXK/廊_k׮_ummݻWZշo=zXb߾} ?אgΜ[[[Ϙ1ѣTWW:th偁O< /xD")--uvvׯ %oq ,<~ ̙3 Y+*&@ѿooo\{UXX8~x?????#F]v͐s O>jA}j0… ۸8p`Ϟ=^^^'O^M6n1ZE&88XtРAZD:uԩSgHHѣGoWqqq@@@Ghh}VVٳg4:r?ܻwX7n`kc>)D}}1uuur;f*&ىj>mll-ZYWWw}ڎ;vٲe׮]\nԩS/޽{֭ \r%--YO&7yF9rڵk+++witWD"QTMULTwܑ=AXDWWׁ8@rrrddI/^pBcǎ8p@nݺoذAO&7׃!1:::?3fhKW';aK$ `Yݻvo@;~6}ɭ[w?0{1R}j@G%;HT1F~~~DDDK,%)=s($Fh4}*&X*@P(Ďq) ~wA *&Ёd20T1R+Jkkk0k|*&X*kkkvl:$+"رCAiӦ=wƌ?;;}]~׵w^jU߾}{bŊ}%5d3g>3f8zhՇZ|y``O< /ٹ؀D")--uvvׯ g4ydu>/״imllƌ3iҤ PYYy˗+3gj7wri@@spp?~?(c/&X*ZRkx{{r777ڗ]v- s O>jZ****}:`r;wss;p|`QF-]4<<\iJKKKII9{lyyyiiB!;;[k 4HZ-N \\\6m$v u؋ JQUW qww?z*..L#44>++KٳaaaK>>>o>uǣ9?;66VhiFmI۾UYYP(233L7<44T"jq6N 挽PKE@DGG/Z(333e[[۱c.[ڵk֭:uݻwoݺUڿMMͭ[6oެ=xʕ*{{{777gg=8""9''Gw)];;#G]2??Νã ULTT1l ]]]޾(99922rҤI/_pc8}:99L8gHHH֭\.? L0vcӦM{_}՘K~cxxO?=cƌcQ*b@|JRrLT*@{ ͛666=z; *&Ϗhp0>>~ɒ%iӇ0T1+ `vN>})>S^^^ "==]JISzu&_*//onqҤI~~~IIIaСoF:(W\otgyzz8p@O&5Rg&gטJZxq>}.]d6A|||v`e|||̙gm{=zT"5usbsc̝;WZC7>gD;Zz-Epp\.6 `vFUWWgĹ'O4h޽{O8ѽ{{ٕBx絏/]UZ͛7,X_|EXXXMM￟#;;;++Jǻv/7h'Kg/_6z8Eܹp׮]2_{tT-n޼Cͭs'6V-mn掷j)D{mAnܸR`ׯ9W^'N; sh,X0f̘={hl۶7n IDATjzΜ9r|ڵ 1|Bq!푮]ڵ ֙;w֭[?yCR67 Dbp:w=|_裏 jD*˛7oxbHHHs'Oqƛ7o_/-ZtA]·xbcMv'msC\{mgggȈܰ,UuuJ;3T*~'N/C||͛7+6ׯO2q]h˖-KHHicWBKKqfѥKC |͛7衼|֭NNNz=3[la۶m'Nҥ!}b[co>?F_M*&X*Gm@G'BDDDڧ-gϞÇ4Fϐ!Czjܹs7mdt:c7n 㺗ݽ|ƍ[[[͝;O>_V:9]}-mnh=hUzk墊 *&z)Bzzzڧ=~ҥK߫W/=ʹ|WF7o^}7_JIIIw5-KYٳn >>;88xzzFFFڵk֭-1wܿoqqq_ҿzNUNZL#תΛ{~a/*ލ*&X*@vĉT+Vt#H6lpȑӧgdd|w~irr]sgocǎ9sfe=M$G}:iҤ?… fmI4k[vmiiik hqiqv/UVVv^{kĈ #̙37heLLɓ'ϟbj[|ׯoLO&@ßCTJȑ#b`^Fqɓ'9͛'O:uSvO?_]x.\h4?Gyo߾WwrΝ7h֠ƌs=c?/Y4uܹdݺu0aBEEŧ~jcc3g/N K.-FmЕ msCy۽{_~10+øu֠A&Nf4T\\*v ,{1tާNrvv;KCgϞ8}A

裝;whbi /YD|ܸq.\+fH*vT*{5իkjjN! JNvvvb.]X[[BYakk۹sgS[#""{oÇ>|X P˥{7|޽{bpir` &`bŋ^LZ]ZZ*v;ܽ{V uuu%%%b*)Quuuyyysz{{2f*&X*@6|pZ|bЎ{ݸ>k׮QKegg'NZALQSP+V~ !b)߿?::`f'--nذaVVVbgn&Mdcc?^XXx̙nݺ,*&=ztuuuUUUN/a [PPP[[k<3*33S.Ϝ9S }H$A4AULT*@ 3`56@^Ltb @CF t`Æ SVV|xdddjOOOhϟߵkW  t`ǎKMMJ:`ٳL&?tPD"H|||̙ð;vwڵK400uU?si0! ׄ  iߖ(;;S׮]7moh`"""JmL^IOOJs;+M<==oݺ矷o h4:PKeoo/ɼLG"HR??_~ʕ+/^bC ZfMIIIkzꀀgg1cܹS>%%e+V߉N|||NNN||ٳקz=66v{ܹ59Nqqڵk#""RRRAKNN>t萿-[Ksk4dȐ\TTlٲݻ8ҥKMN?00pƍGvss;vlIIƍCCC٣I 9%j0gyfHgΜҥKyy7X!C,!!ɩRѼ ˛:u/mcm߾]6wVTՇvrrzF\]]ϝ;WWWwΝoV'|g2? ~~53g5!!!x\\ܒ%KonjlS2eU*Ujjj@@CHz:z7"""BBBϟƍ]vuY!6D՛;wn *&X!C888ꫯ *fSUUեKknٲU1ɹ4[CmW^yE)WTT8::'&&6W|״KҢ"=zYճDhf͚xbFSVVt̙QpEYvԩ:0!C|=m͛}ݻ[N1ڵk&---66CϞ=?N77ٳkK2Pt!ѣGAAZ6鑕UQQѷo_] .!Ehf tlnmf j.Uri~~%m\=KTv۱cGMM޽{{1p@=m$;3fLeeeEEYN^^ލ7888xzzzzzڵ_~111G j&TVV$%%]y޼yڗܹr؜:i@*% jNlz ٳaaaF $=k()WVVJ$\???A/fڲH7A|I77Çoٲ%..θ` bJKK;#<2gΜ7x&::zѢEuuuo޷o_͵)---..pvvٳg+WҪܜt@wd6=ڎ;vٲe׮]\nԩSIͭS9rڵk+++wi:ؿ!ZDKLL<{Y  ޽{*_~;hDFc`_̙3iiiщLOOoܸ6W6m?ꫯhWTT$$$tM.?~Æ z:i ..SLސ\6=&''GFFN4i .4n&557?1<<駟1cFK a͞=ƍ0:*Bb_DY9tǍwAhg\Qxd~IRhZOF-v{1Riݴ:LoF;O*vbذaê:`/kjjz!vi{weE $ $\rX"AǭL\ IX%LQ< r\%DȔl580z5su_낳dbbR?B7|'Npuuϟ8DU* 7DO~GΝ;fuJ;ëm6 trrrvvή^`|uM6mѢEO+'''DrN.'''?O>]!B[w綾^:~Ù3gKuj85+,,S ,&諒T qD"AjkkUu8qqRRR4QV\e``ЫW/yѣGؼf׮]Wݻʕ+w][[[^^0{pvv0`y󒒒4\B*-6D$UTTdeeYJ5_````n n\]]:UK?v̘1=zͻx8m$=M4S߿?k֬˗:T1@_$s'x=z488G;w޳gYPPk߯_?;;;wTWWgff5~ذa%%%ٲoz8pdff[>ٳgKKK8~*UKS"555))cǎ~~~ZJ5_`Ϟ=en4Ǥ?c?\GGGZl&=SN @P}EfFYɓ'{{{gdd?^S,?~X޳WUzݮ]'OjM$]~]M{1򸹹j*33SԩS&&&j[nu=88XvV(5VJGiuj ##CÇT T%Qgkk{}_@ͧx@A@z\pTv *&+ ڪmjNP}Efg1ׯ_?|p #G_-))I֧l۶m...k֬),,|lAAAttt^ XQQ!9tPI&Oɓm۶---Udffcy{~~~XXXN'םĉV8dsss+Wi DhƼ tswJ[[[5}V^4t~|XA.]o555vZzu޽V\{nNc+++<`yh '#?>!!AҤiӦ)`hh;nܸA"""eU+Lju""++]=BU@@@NNGҧODbaa!z̼QF6$;;[ñeee{5ٳGWaƌ۷oJNN߿G ѣGΝsyA.\P[[۫W/Y>jWZ,,,RSS:vwiA6ULWm۶uttuTZZZ8p899i2ͭUVN?*3laao߾B IDAT1'O흑;~xyP777HtuY7/U+Lfu>>>uV݃e6ULh& ,X޽[ñFFF#G Ȉ0a3f?u;SjqqqAAA̲O566~7o޼cʕ+GhժFնmۙ3gN4IA GxxxPPPxxy55nܸ ̙3GU)S\|޲***jĉڲe&O,W_wرOldueee:tH$gΜYnFաC]@$3cǎxyy}#fo̘1kjj MVuu͛,IP4z⢢6m: ֭[RBAlڵ]ty7ulDYW[nH$H$??䔔juuuqqZkaa1a?Bu[ ­d ZwΝ 6h7vZW17պZ|ԩÇ+4jX=uuuݴiv^~RuU}600PyKJJ^Шzoܸ!J˵'Z~.^XY42333*f]qBBBuuI>裮]>͒ӧ9xoVU⧩ .Thp}ٹsv?~|Ȑ!ڍ ww~r/L'w4IT1Ꚛz__P]T8 g1@_Q1OO?S,O7}i$Ν;˵~*RXXk.333]g4EUL۳g#wΚ5ɉ*&ULWs |9 ܜ&YjPдPhr~#GTWW:*((H"|(J=z q b/8*&+43@N-Q1OOϒ?/IJ;:YL&o9|鳞ܹs#Fرwzz "ev횖Rii).]4n8{{{SS^zEFF矂 xzz._\sFOOOY\"o壬SSSVL!ҭPN4(쀝O:ΈD"[[۩S8qBaŋDj U?UURͺ(\rRt…={411qvv^t&z:vتU+]頊 jɒ%999fuСC455MNN>x`N|||=w\/q ٳg(رcUUU_|7nx…L .YtNNN/^XZoU\|Y4W>>}wF?==],/Bee֭[]]]]O ǡ֥ +[`wؑsNGGG}s\x, + ]jkkgϞ뛔$kٺuܹsz-1PCCúB埫N*HUM1sLoo{ZڷosN0ӷlْW]Ml5oUܠ4XH$CCC/]/Y{{ŋ/K{쩭ݸq޽kmmviRՏC5!:_ EEE;~+"ot/ׯ;n1c޽BBBnܸ׮]?~B155 z[ Oڊg  =zΥ[liӦqÆ }޽-[1v?!ҕms޼y7oqF/\A TQOo߾vک#СCe{{On``oӯBye_[[[/k׮m5O[XX_622K>((Hx Oj{Ҡj֥jV~zD흖ݼ GitY]tQ?6--mҥ)))]vUMv~I3f̸%X^TTeoӯBye_e;p޽Ç˻Y{ZZZNbcc6mrtt߿ RرcRhCUH5RsjVڮ]ԩSo۷_aa>S4?7UL&gر>>>%%%n.]H$oncjjYYYk׮T?EΝv{nvߋ٦Mۿ(\=zsddwSEV<*Wںe˖ cU팬Ν;lr AeQ5twwaƍRFҐץT?Wg43u]T0MULW+WH$7ouzI$[n'N8|pp_clljԃF9y:D"ц >cǎÆ p?VF ڵk7s̉':T1@_=x@*> vĉ"??7xƍ0a!v׮]_:{lmmܹsmll˽{]{G) WpQ}kB*Ty873 |'O>JѣN*---.._ٳ샕՝;w/\P[[۫W/Y5]b̼QF/dgg+mwrrRT CާO233z-گ_iӦ>Pn666B͛#ıj"}3Əlgg׿b̙:uub 4cɺ@0'Omff6cƌ57qssDׯ_A{1200}puu111^^^ƍ[paHHȡ}Oa IDAT9sr4y)S\|ުw/DDD Ҙmmm7o<|p]g怳g̙3999?}}}u]K.o@3A駟9RYY e˖I$d]y&n޼믛Ĭ\rԨQNԘKH,Lu޽{kkk]g䓜Au h4T1ɟ'{XXo-t h4T1CQQQTTԺu߿/«bŊ#GD"]Ghr?^QQ1x`###A*++?[n ЪU+kkk Aڵkwf)..6mvc۴ii&ƖFDDh7vckllzH"]vڍmVX}_AAAQhrlllܹs; pرso lٲRJhY-ܿCڍ}y~@b&:wvc.@C秤oOYMqU~N>}ԩ}: Fp#G,[LV5[hѬY 4zm>wΜ9_~ڵk} Jeffhd,U$:̙3[bEff󣢢.\>H@߉Dꫯn޼ٽ{m/:۪4G9~#G***)((իנA坝#"" +,X͛m۶yzzYP?22rС...'Nrrr233ݱcOHHHVVVHH)SAXjӧ>rrr vZ֢0okkkHo)ZvTQgϚ>M[_bb!CmllV\tnMNmmٳ}}} us疗PuKSNH$J(**ڷoߢE^y77Yf ٳvƍ{{΂ [dD"[1}WE"X,ׯ߮]LMMΝ+*@v##Nj„_,HwE@ y>!!!iiiɫV_ڼys\\筬ƍ'k MLL\fO<&seOOO[[۴̞=w!66%66?غuIlٲaÆ, Eaҿo7kwOA~~W^˗/1Bz55,{Y*{nׯ_;vl1cܽ{7++KՅܸq#99Y,+жm[OOym޼ƍsÆ }޽{g>SaaaO<.l``0~SN=I5 3`Y[|ToV) +T1@_ >\"ESYYwވgg̛7/))I~u̘1=zͻx͛7kjjvڵz޽{٭\rݲ?h * u 0hРׯ_bbb׮];5RRRׯ_/HtJ}PP AAA **J^blUOn``ĞzAAAqquϝ;I5\W0Æ [` ݸqC*j}@^,++ݻk~MVZZ*{a^d&&&'NH$yyyFߡ$;;[v;#=xԩRٛ&IϞ=eVVVwܩ(Pܹsڵ'OT_ӜEjjٳgK.UMM%33S&˙ks΂ -ۥKcҖ.]wuU}vڽn߾mffM/B``~xر_]g̘!d*Tɿ>ő3f̘}N>]>Sǘ1c֮]]v8bĈ۷ok2+W=ZQQѪU+ ĺSk-nrddoʌ9RH$ZnO8q௿:&&XՊcǎÆ Sz}144֭۬Y^Z9PC餪n&Lnn3}z@O9;;_zʕ+WE&{1ct?X[[:_}Uwws: )ŷÇt<ٕ+Wt}BKz͛ o!$$dѢE~vk"o"1@e܏?s~ iiP~ȑr]\ZJ":{1~ƍx<|P*>zHA=b:tD"y󦮃x!ܹSc~ۦܹs#Fرwzz "ev횖Riii >}S\Rvԩ'NPk"W!5?[SSSUKն/H$o@ RFA4UUUv^dI߾}i8tMMM<ةS'dccx{{ϝ;Wŋ>>>uܸqa&&& B>O.o_dI݉OOOu PYYuVWWxAԬ!۷oxb7VMKն}G젆PAAAttt^ XQQ!kwvv2d+`m۶yzzYP?22rС...'Nrrr233ݱcOHHHVVVHH)SAXjӧ>rrr vnۯ_?Փ'OmVvNmmٳ}}} us疗PuKSNH$ZL!#bchhov%Y|R/^ʕ+|={nܸq޽wA*r999)))O?m sss0[YLb BBBҒWZ+y游[YY7Nf͚>>&&˞iii<={ロ-BllKlluV͓lٲeÆ YYY n믿ʋv6mhl{=Kevޭ999cǎ8f̘wfeeI߭qFrrX,VA)JKK{ԥ[liӦqÆ }޽-[4!MMMBCC5usܸqRij[[;vR/ M~5b4;ǎ:֯_oggS c/_槟~P(֭['uSS^v-//[nRgiR]vݾ}L&:ˣ*((pwws2,,lѢEiO%?vŹR@zT1@_ 2VVVRgЌ\|Yxekk{US4;~[bz۷kjjc{1@_5ZC(Q}ERDYWT1ݽD Լy^}UKKKhiX[[?^,d<_U\\ܮ];hN>=t!C:uJ,؋ *##¢~SMMM|||IIӛ>*&+{{' ##C.],[T\<4jjjٳz/ P()SI Ơ zv.\>hjMr޸qBSkNZn5;;TSk^5={HS<,,,ѱcGMׯ_׹sgM111yyyZ'Olgg$nٲ%''GS3v0 IDAT +Whj]pVz맩uřZ?cgggMg>}teee555۷owww4@˳aÆ5k̙3gѢERg@bT1@_}w+WLIIA.[XX~~j={ >\$cǎ駟4Y<9ݻwzofoo/uMgժU;[,ZSN:4==],4(-uݹ͓qqq?/i)a kԄ&M(Q}|*]TTԕ+W͛תUD1cƜ9sF4ULWumӭ[/N>].'&&ݸqCҌiĈRhyfϞ[oI^LWZQWFDDTVVܹShދ } N@_]rV+7n4Cuw.uދ y y 줤;vB ֭[ HQhv^}U7oJ@믿rssR4FMMMϞ= ~C& P[[+u-MǎgΜٽ{w*&\ݻwߴi)?w@/4e`/&JT1@/Q`<*ۓk㓟/uM,77P H*&K.) ???QQQwww߽{{A mfcc#.\l 899\rȑ X`AAAx/ӧڵkܹѧOHGGǶmێ=z޽b:!AXzSLGyyy9::믚ui^֧zjO?>|ZZYYY_yzzWUU d2 R@zrj[ϸ9s[֭駟~ɓ'ݔE7n8::>شcǎÇs&L o˖-xڵk;thѢk׮]Vu PXXdkk{ȑ)Sի~Hܹ/^uVMNm:|MMvmkyiuSN]dIvvЮ]̴%AF5~_ ,^qɪ行 A7ݻw۷2D<8pW_}U~X\\v!-9::.X@<.++366ϯ9wxʕ+555b%K]%88xժUjC>3_|EIV\):uSNjWєN6헠vkqWƎ;VVVZZZ8q{nڴĜAtA4)R@z999EDD7N 3%>b/&E.u@sQPPPaaa-$ϣt-Ѣ%sxx,@Z^^>|pSSSh:IIIs?gIDYfg>>>׮]:&uܛ7oJQ?+I&I@swƍ͛7:tH C z277RL&x첳g͚f*&%:JJJz6ϣFԩwrr 2uz葔\2,..Nyod...d2YocCBBTWr.^8a{{{33GDDܽ{3˗7zvڴi)))2335} ܹS9Z&rIX}ٳ]***rss-++]pa~LMM.]Lu-9 ULK V1?÷z#G1,..ҥO\\I߼͛'?ǧTE~~~̙cjjiu''m۶)?nݺwުy睪?W^u…5r O>$//o˖-%v;V쟜,CCCU,Yz{1UڷoxbNE~~]bbق [XXkZ`ʕ+u_@A*ѣG_|̙3zXwwڵkԩͫ4xܦMCCCeɴi ETTx'N33y)[rMw`̙އo߾abbbKv~ŗ/_>wڋ533dS]%444'''>>I rssٻwoVJJJ-Z4`SSSggYf);kƌsƍ'NtK2|pooo-+EٸqAULKګ~{ּǫ7n͛7tY7,,,???..NSqQdbb2y۷ k׮qYXXhlhh<{n{{Zk׮wj*3N;w477wrrjB:Rي+-[VUU}x7V3g<쳳gώXXXxzzΟ?ǎbRI&1"))I[m۶=z[nRФLMMHQꚓw^.\ٳg׮]]1//Eccc۵k`;vl۶M{犋KKKAxW>2k,M(xVc?S++70001bǏ477w}}7,Xg"$2<Θ1#333))K.֭$:yLMMKJJcCG"\.Woj̎;Ν;w̘1/ m׮ܹsӯ_>tЉ'޹sG٪k@DZnݺ!'S(P=`ccӧO-fee_SOۃZĤRnݺcu΋}XSSS//;w(m,?(?8qsz 㨨(-j!12eǹsn޼x⌌+W;:uUk_Z yyy:uJmoJJJIIĉ_x#GZf۷oo~ܹscz{{[XXoZjQϞ=g͚eccsjcbby=z}ᇁZ.̙3ܹkַoA=z=w}755Ljջ@U\]]G}]-rc9sL///޹s' cǎcǎ/T;kN>P;[cǎK@:~B1cAߜ蝚o޼Aُ?o?^&Iŋ.\`+*TILL3fߡCE<==O8!u@WP(ն{|I{0kkk'ShAR4ݻwsssk׮s玲DDG>}RRR"##۶m;z{}²탃AXzSLGyyy9::BK*cwmaa1x+W9+t2lذ7\Ӫq_|Ν;7ntrrrvv՞>[(0nnn999_|A{1@/QZ-[4',,?+**3gNaa[o%6ر={\z زe.^v:v IDAT,Zڵkk׮oݺ5>>~ &%%9rdʔ)...zZnO?oO<ܹ/^u:cR;wGennONNy7\i5uXfMttt>}=<<\]]iӦ;XS7 -@֭N@P Ceee9997oޔ:iܻw۷2D R6M>ҥK'QoMHH=W_}k׮]pppiinСCǏ?eyM˩V5IB p)B 2SAL 8Ν0`Îurr7nܓ1rQ,H ŢE':1JKKsss kο䡏dd2 33y)[_T[[;sLooCo~ذa111nnn%v;Vooox˗/;wNŚd2M_Ԯ$ eeeݻUV%%%-0`YӉ*&ޛ={vu_g^^^NNUO7͛YYY(211ٳ!߱cXTP_xzPhvӏ;VZZcUVe3jԨ:=]&Ic^^^ EGG&&&k׮Ρ;v쨩ٶm[s+>|e֬Y{U;D $2<~666VVV7n>Grvvn߾|```0b흏?niiinn.o.X>S;D IdxX 1cFfffRRR.]֭[WItI (?jYE\:C} X;vTm;w1c<<$88>e%WWѣG߽{W*EFFΜ9ŋw ررc+**K###Z ULdhÆ sΝ3gk pvv: sC2ԩSRgТ;vѣRgte@/h\]];t`nn.uMj999R@zT1@/QZ7JA'uN-ZHOzĵ2cw[>>qqq&&&7ox|yRݻw3gC-;TUUաK,Q]ѱΐd\:Dڵk[nA˅88XիW:u$}cHHHli׭[lMMMw4>E5Nmm9sF>x]vM:u޼yf344422۴ichhl2116mBjbL&-[v…/畋d2rZqŋ/_|9ekkklrС7o B6ghhhNNN|||#n~~~_}֭[Ǐ߾}{]" wVZ5x1[mmA43g5jA@_[TT$u KJJ[zudduM;vشiٳg'L \lݻ׮]wߥXB֭ї.]MJJ}9s^lA֭[קOu]zu׮]'ٹs͛""" 3m``)v۶m Ph|؋R={vu_g^^^NNUO7͛YYYqqqr\mݗ(//߾}C޽uYZsNsss'''͛7 2W^;wq*]rXbٲeoU4V.O6M6*Bqqf̘c3g<쳳gώjΥJhz{޴iӛo)u!P$GSZrcccƍݻ\.? }AӥK///#L<ΜZn]s^Lb^ <222*** $~tuu=sUA/:88dddKeee>KATpy񐐐޽{wgϞ}$oܸQ]]}3fٳ*..k׮Æ S6=E)YZZڪS tMdՓG;;;ɓ.]ߣG-tYbƌnJJJzUo{IĦ.]ݶmxN{ {NAryDDDxxxII.Ӫ4cn۶-44TNHs3f/M˭ULKT1\Sgg֭[gdd]\\_MKKG1p:|7WV\\(v344*++Ү]&kjj6ILZYY%&&n߾]u#f#.Ji֬YQ3*S(P=`ccӧO-W~zOOO׫666w:*+K;wVmxyyܹ3%%E;v{,–-['=hرUuMcgΜgϞ/`۶mcƌ9rzܺw999R@zT1@/QZ?ѣZvX";;;--mݺu/ nZtAlmm,XVSS+ m۶R 2ԩS ړo> O;cƌW_}UuT/*"":~~~uzd 6>|8 %%ٳ!!!_~ett˹}_PPԩS+U}(h=x@u~E}N6m $&&*!n޼6UZZ;vX1cgqiFP PXX(Lǎ*_J?ڵܹsL5{lLvaA-~JTSl?uꔺݻ_^hffS-Wv^^^3f߫ _8 ULKT19JU\\\sѣNj q>ܧO33Ck?66 Ŵiϗ/_!##CSN5553gLOOߺukvvmۜL.)**vww_~ 3gf$gg[Uϖ-[Ξ=!'N...ꫯ׭[wd-;7o~;w|}lc*&%@֣GBѼys-}rssW^ygϞ.../۷k6sL`˖-VS ׯkBBʕ+[h1dȐ[}BCCSRRBCCǏ/Ϟ=[me˖9;;ܺu*lmmՇ풒ϚWy}ZZZmvɒ%&BݨTS2$&&+:::88xڴif244466?7kP}d„ Z|ѣ}͚5^3552e UM.ڳgJZn޽{޽[muH_7U8qbjjΝ;+nɓ ޽{[l٫Wm۶[e2UϞ=onff6mڴj\za =b7|sȑN:i|+WFDD/mڴᄏpႍM@@8o޼͛7ZСC .T_~}xxk|}}͛ DDDFDDEGG}˗333KKKo߾b OOO{{%KرC#FGաCcc!CTR6..nܹر~~+W1oѢEU7lԫW/A,Xpĉ7|S-&M~ZzM4iܸqFq~UFv㖖浍 >.?M6MNN9s[, piÇo޼٧Owwwkk)77W]344?7NP>}Ν;C{FFFeeeMR-;;߿oֹs琐 kۢ6eh:988]vi6޽UˊRRR֬Y[MzEEEwVTRR">{V<(]]nԶm[{;W-۷رcŇT^ii;zClxdddDFFPΝ;7<<^k֬}-3f̢E,--{U=+W5_O4_v&00I*uݻwLbnn>lذw}W@QAAyZj%ϝ;7TLXd[,--*ӬYѣ#F 0 ##+۷o}5kK.UܬYVZ;?qU[nĈ^^^!!![޼yHaaaI?sϞ={2ӧ??$J5mڴmҥPjwoҥƝ:u2e74[ Vzz\._^j_ zֽ{sy{{vaÆ`^Ԏ;[nI@7hРPYb^Zl\.:uH](ʼ< S144t֬Yg g 'I'AyT1@O _.u:cgg&u 47$ULx,%F*&b?~mڴQ( *ӱcǸJ/W:R㏻vjjj2w\.**JݭD&O׫W8::=}T%__r#hUhzP(7o.u>55U#/3tb>|O>fffj׮ll?)iӦ/_XCFFFNjjjZ-fΜum۶999Uĉ_}Uzzu.^ s%>rHΝ^999o^ HO3@lٲE5R:usNuĉme]vꫯ*PRR2h A>>K,I--..nРA}ӦM5Ν;n ,.ɴ\j hTbKΝ; h6_ӫo> -vvZ\P(O+޺_~$Zrm0TbKD|V||fAظsܹcǎ{ZXX|gΜ{1bĈ}ٳg54HU&dYfqmGlllu{ڵ~Mjvt?þ}6<{nct>e˖xƎ;GV̙3o߾]K. m,ИPwO?˂ >ydƌ3f_7N[̘1cݺu4inc,X }WZ%}繯U̸8+ub/:[*k׎=QF6P(Jw޼y-Z>jݺujjP'OܵkW_ \%~8ӧOYXX]LMM---u+|_'''|SWWWBضm|߾}:й)B@@\.mqر޺չ)̙3u.F:wҥ|nck֬9edd_E׮];S#G/^)BΝg̘1rHCCCuf͚5iD?%%E UYYRLKK:ң z飏>:32LJ%uMzzzddCULKwU*O>:SL-ub^Oi'6@YLԨb^ hČULq޽i-^pbի@NNNRA^ZvmjjA{dkk+u^bhXbhXb48IIIG?^.]HQhpf̘UoJRTJ@cRAdRj*& &Y =JeAAA@IGxQ#h|bFUL@#f$u.bwӦM-,,^;UL믿: d2'''S Py悂6mHGK@#F1spp>_~: SVVfhhh``PZZ*u$YLK\.?wA@d p*&~MT>{L =S 8p5b1#tAhܼMLL,,,J*&%@j*#hdom۶c\xLU{7_ϟ??x6m(xA eرc\\\+~ĉgΜQ_={L&;p@&LPnB-bcc-dZҵ좢_KJJd2YUkر ~~~r;/2LULK/7_tRTU}/}133=tPvcccMLLIPL6M|e222:t0uTSSӪ8'OL8Ql,**vww_~}㍌a׿Zke[A9sŋ b^zUիWl޼ٳg :::?رcvdW\t-[Z*//OlwqqYlsHHȭ[hBѼys//7nTI k׮W^bMKM+Zrs- uVuKXXX~\]]}tTDDDϞ=3$&&6o\<+yȑA RN:dȐ//iӦXܬY3CCC% &իWksdFFFNNNͻr={Tuݻݻ;::Ξ=.]R_2jĈIII ܻwĉnU]ZAdee8qBp#@D b._|ʕ DDDFDDEGG[R(os͛7oͫV:tPbb… ՗"##SRRoذaUE>HNN_dҥKkrr͛Kׯv횯o3f̯~Y ijSSScذawMIIPFFFllQ7n$ ޽{Ν5ݪ?**EݨeɻᄏqFA ּy<+d}􉋋mxխ[7Baii)uڵkA4*iii<*&W,**ڻwŋ]\\z=}--ZsNccWKKKo߾b OOO{{%KرC}$88SNG_XRRgɒ%~~~nnnm۶*Raaa\\ŋ;tP(krrFաCcc!CܹS}iĈ~te``XϏyW\ԩΝ; hkjQxxxLL̾},,,mmm.]fRyر1c0f̘knjڵNjҤخ} 'NܴiSYYن =\{U:uTQ`r#GI@}СPLvZ@ҁRSS:< <==ů={LJJZѶm֬Y*jocصkW񃍍MVVVIIIrrrnn믿^H/^TT2O>}jrr?ꫯo~Ϟ=.\P_ѣfOͯU4i_\\koo߫W/=55}gC||WJC͝;wΝ;vS s{ʼnݰa*88XTj>U׮];ijG Ѳe/@Pjnjj#%wRSS_b^srrzhڴirr̙3bȨL311qʔ)?\.j6wwwkk)77WK"11&<<)Br|׮]޽յ!%%%((h͚5nejjjkk!)))ٴiSFF ֭+o۶mQQQ 5%8q?%Wڵ:~R_:qD۶mu}]]$8P&M :t…7o<}tDDȑ#Kݻw?{XLKK6lؚ5k=cc1c̜9eee߱cFFFAAAɓ'KKK\UU$^033s֭Ǐsss}||Zhٹ55iҤE9sfر.]?dofAAA .\ MLL:nܸB U=) IDAT}egg'&&^Sdd]rrrҥ˄ >Ӛ7nÇ'O=Ck=zѣG׮]{ݸ+V5__ҥK ^ (/<?~ǏDoz1|ѣG666+W5j믿'7&}]FwY'$$77[nRPvZPPpʕMJ@k׮ÇRgjԥ5k888 8P>ꫯJՈ\> yVV֌3rիgΜ~+GZZR|5/'#tP(n߾}:H̬YfIgiiiooqƊEQFݻ%j^o"""vNIvU|3^yA={&u.MG[U~eCҝ;wJeIIA?;;4ST~Vu}u~E$㘣F {}g3f%M7( zL 4>ޚ-9993f̰_pa^^T'b ,&%*'|"u?W///w=cc㊍999_~edd'|2eʔ&M0*&"4˖-:.++/4770aY@.]*++333: z/,,LO}~-Z005:p@vkk?>277Tꓣhb^駟A;wqԁǗk~ \}AXИ,]@m۶_|EHH+"a*@T1as˖-g͚K̨bHoٲe/ULeeeK.U/ϟ?ۭ[7KKKWݺu?Ο?oaa!uD@b)))fffٳg8q~~~P>|XVV&u$f u.z-ݻ'uucǎ%L/3L&J:FC'O:P ᅲJ@CwIb^h5@YLDT1@/QQ '^ 4n^^^VVVRPΝ;WZZG=Zn}޽VZI:FRzzziiYcT14,RA@BpѣG>|(u_R@bT19s'''K@}KOOW*R@bT1@/yzzGIg$u.n߾RL&,&%/:hdb^ @YLDO?-Y׷]_n?uzݻĮ4XnU<|P*]]jjw*gϖdvvv&LHHHɥJ' 1bjaaa׮]-ZTh۶mS_rqq\x񢙙YUW5\QPϒLn:@pѣG>|XmÇ,66СCڵ511y'B1m4˗kСԩSMMM+ʼn'u]x199k3g휝-[Ξ=\g-u -vηyZhբhwwח4x##'R ###c,XP9sѣVC]/_~r<33@QhpΝT*ԩS  999>>~ɒ%K.R z)55UT߿hܹ#f5==1118O~trJ?9::j^8qw}jڷW]mX.gϞ{{rOHNN~ɓ7oWv*~&''UNKݻڶm+˭_333/^RԛP (PbA.ڵKqݶZYW-ڷo߱c;vkA1sss?;*';REkEV<*kdӦMYO///A֭[`jjjkkm۶헪PzرcǎS(nnn[nݻwӦM422*++ᴂ [[[8p OUHLLԹCU<<} >'O^r%++K۷oCLLL z̭[QO Ѡ ,[ȑ#!9ѣ#F 0 ###G2do^fMuҥJ%%%TiӦmk.]<==ūaaa冗prz9dȐOVXoUTƚYn݈#=CBBZny抝,XX1ZMXi^lmm2[oѣ7|bڵk6665YE3fѢEz*ƎgYXX?^zhNNA7B!o߾-u$FOϟ?/u-##CTKQSTT$_}U:&APTR@bT1@T*Rɳ4J/^433(oofkZ`NhJ2[c1 #jM}ɓ'Xia*\i*sb ,&@YVVֲeKg7oիWWZemm=k֬;wZJqrr={vXXA?~rr_~ٷoߔss1ahhhNNNllÇN]>(>>>55>Mj٫3f:tѣGe;wtww~vn޼ٹsgA+>~*\ *s:T\\loo"&Ғ'O:P*嘚J@URRbkk{%7T*ŋg϶iFR؜]VVv;vh(((??ydii+WAؾ}{TTT]MؤIC.\͛O9r &&& Xzuaaaff֭[u[m_~gϞ5mʪE{キ|#G?^sMmw <zΝ;oFE3fѢEz>OXXرc?3 ?~X޽'  CCC?#~kff֣GÇ=ZUh~`޼yZΝoj{#GݻC5U͠:vd*J 999-[姟~`z9p|ƍTL`7 :7`Wگze777 %#j?֭*33ǧ\chhY$ӐWŎРPSZZT*}$4>vvviiiRUm5d = 57o9h|b @cYLD,,_~ Z]vРAVVVC[vGLLLK+ѳgO͛k\ zk … w9r3vggg7o̜9ۧMo?~˿[ ~mRygggSSS}Jh߾}7nWխwm˖-MT5}{uvvСCJJJqq?ݻW^._xn;v|شi+W_'j\UL}URRbkk{%7/{wUy a KUF,W& ZE@J"P eSPźFh"͗U#ky(HBs9`SLQQQjj1cbۗ/_~98p %%w=ބ{YfG>f׿~8xOZ̒Nṟ'rNŦ6,z׮]իW/ㇿO{,))i۶mM6}뭷9no=쬳ZdIqn{1*+Wn۶M6Ջ͛-vIMM B-ZmLII;xʕ+/M[ײe:Zpٳ-[{cp'3yRҿ|PB羝->i55kx^z 饗5m6QFHnݺoߠAz1nܸ^xiӦڵ9Ĺ97ݺuO,XP|bT8w_ffֺuǞiӦMڵ,Yr_|{[{ׯ_FFҥKׯ_ߣGخ<|+ンLإK^l߾=''CWZt ⊺uӧO8p`'Ulܸ1۷/ 0-&@ꫯ"W\t `ժU۷aD IDATÖ.]ZXXe˖_|1IIIz9r{СիWBy͜93 ~?O'Ow 6̙3'6 ??cǎ/m۶˗/Wq5jTzz2.΅[9\k`M6 >M6M49%t߄A=zٲe7tGdEvv֭[N|[nڴi . :  @FݷoѣGשS]v-qnxv/((BoƂ b<5kּKw޻wƔ'/1bD~'8pڵkSRRzw/|)SZjugK'b[vk6%%#:?DQ~-Z1b˖- áP$aٲeC >}zA~$/;s?5\oW_}uYFZZ;ӰaàT*iiiƍ֭[AM41c+xSj&LY7|wQK?˗;){ۧOg}6,pH<_HH~ G=s;k֬k׮ &4kl\i-&h1*􌌌aÆ#qX:uOciU,%%[nemݺuDYF#Hfrss۷|O;9qA*=O%%kڴinnnjՂh4t`ǎ~ܹ0 ꫯ7o[?mڴ9s|wuEH<ժUk֬Y)DZg>&M8p`q xZL/.ڵkƓ\JS$5ks\p}ӧ#@Ť| .TLMM=z{6mz.]hu֠e?kn/3g._kU7pC$YbE@bT8w_ff˃C;m\vmg}Wht޽Ad*P($-&@͍D"W]uUA䄎_:Xg ߿?V^= 9tИ1c.￿O>GH<eٲewߍ7H㬬[(o}D"K. :L P<j ˋF{ :L xVZDwtP(T_v%bŊ믿> O>YfM?OzQfΜ9mڴu7.qРA|q&Lpsٳ'M׿uɒ%F?1/poV\hѢc>ۛ4ionݺoo~ NڼyS~f:aivʖ h1KOOȨ_~A6{:o9x??vΝ;WZe˖5ڿ+2f̘vm/ҭ[.())n[jՆ ԩӣGӧBݻwϟ? ЧO /jժ{~C޽{=C?ʾ}=СC{GڴiӴiӱcǾ]sp޽o1c?>}ٳ_Z.]\/1/G([ h13fL`s9GlYre~~_~={i&.8pݻc+[l^Ff͚-^W^ ѣǸq^xᅦMkZh{w?8 ]tEm۶=zʕ+7o|uoٵkWNNNjj1}bSzzzQQڵkco?ãiݺu_W~~~<:p/-^̽{/##cҥׯѣGϤ<6mli1駟ެY#TJIIIz9r{СիWU^k׮FYtԩSo!ڂ 6m4|6m4i$}РAG^lM7tN?jԨQ_~}Lj;lذKnٲ%[BмyfΜ;Oɓ'ݻwÆ s̉ ,((رcrrrvvtm۶ccJivʖB7nM7Ԯ]Phʔ);woCz>|ʔ)Z:3>]kMII)Q'|?av]nj=o߾GSNv-ZTz7,X;Y楗^ڽ{޽{6L8gϞ_~#W<׮]ңG8ӆvVhƍ׭[wzg?+?0777ޘ={v.]NE<8\R8ȑ#򗿼]w]Yr_GogSNӦMOK:vÆ =zرcGǎ(ZLijlٲo.3gNYO?=Rٽ{ݻz8'$={DѼe,P( 0-&@}Y@Bb$-&TVb@ h1kݺuFFFJJJA?)77SNA9Qs jPrrrM;J )*ѣGFÆ Pl޼:TK,2dH$ZLӡCٳg({yg:uԼyI&ܹ3=--m;wNMM0`ubw=k֬ZjG?ώ91ϟ}\xUVݻ믿 <Ϗ;sUVmٲ1+cW^ye̘1iii۷ۊW4\'k}5<͋UߩJ*?M_˖-KMMOzczyW{{^fs=W^{߽ϯVZ.]╣bT\+Wܼyu]We׮]999PE)))yyy\re~~_}ʕ+ӦM.lwQ1ϕt8Qo喉'vڵx#̜9??b(U֪Uk׮Z*;;{ǎŻڶm{ѨQH$Rn6lp .={ev]PPq{@?e˖mȐ!H$++xK֭ׯ.ኵiӦvK,c~g\2vٲe\rI`ff|tmڴ)޽xKj;lذKnٲ_3CRRR^F:thyyy'xXջv:jԨKN:nm۶˗/Ձq5`ƌO?~/G9r\{u]yyyO=TNpHSw1999;;-&@D~_(G۷ѣԩӮ]E?~ܸq7tJuֻwNII :P? 4(94i矗PG C=t e_@b$5jN -&@QFf͂NJOÆ 7nܧO|s5O>7nҤIABP?Yo8AZL{N͛7fyf͚UۥU{T|ZL gժUYYY^[o5qٳg3<өS͛O4iΝiiiǏܹsjj֭[۾{YfeddԪUG?g}viyX~~ɓ[lٱcٳg۷/ι=t;NjaÆ^z)6u][fz#{iiicƌ-;6nܸo޼ŋwٳg_yuiԨرc+UVÆ ۰aCln N[aÆ-裏WCs#.&NܥK9so߶mۨQ7nܮ]UV}<1Pt= :PnP(476h{n-##cŊׯ+=555---''Æ 8p`lo+b…\jƍyc֧Ogk׮]xq֭??W֭kթSy /ÏpС~{РAuֽ&O_~)3H?s[֩Sg充;v?qHMM=󳳳8m۶Ǽq}뭷7n| 4xc?5jęK;ڼy_}ճ:>mѣu]FzYlq͘1# 0 PZLꫯ6klСAN-&|o3 ͛7lذ?>I&EEEcƌm_|9STTtw}7yyؾ}jժN>r;湊讻袋j֬bŊ3o1߿W^O>ݙ;Em۶3Ϝ9sΝ;saÆ^ڵz_~nuiKbo/;.**ڳgO͚5oѣcg9S>}Y|M}:i&''gԩׯر㩻31UV΋|6n0~Wt؋۷t!έ>ic4ie˖O>x)ݻ_~K.]~}=bp/V'8&-&@b@e-fj;lذKnٲ_3aRRR^F:thyyy'xXջv:jԨKN:5qm65`ƌO?~/G9r\{u]yyyO=TN)3G8Y>Ӆ ۷3Ψ[nrrrI^{ lڴimڴiҤn N;o޼3g^_s5/ҁꫧ~:Dw1999;;{~Oɓ'ݻwÆ s̉tG ^V222>젃mɹ]vsѣ;z:uknѢE7nM7Ԯ]'~ؔ)S:w|~C[kk׮MIIѣۏ>W޽{owޱ1ݺuꫯϟ߭[N;̉eϞ=sgD>O>eʔVZy/Rl1o No,X zȐ!guV֭u_2D񊥤L8gϞ_~#WY楗^ڽ{޽{vR*{o߾}ygr 6;wnNBHKK7n\nNrlذLRT@IA~֬Y3 @yW;t0{젳P!ou :)H<5kTaǚ5kp 6tC;,lf+eU}@䉲@R%ƍjժ)pVZywH$裏=D^~堃@C=hѢ7[_~>zС*!plٲ%H8bc8BEEE* -&@}f̘wp8\Z38^x?sYfMkҤI6nxÆ iӦH$RݺukfffwΝC )FܵkWFoMV:J} BFwR*=-&@bW_}o߾P(TZ8pc8R_j:unlZJ}jժ5k֬tc>RO(zgyK7 ^CPZƍW5k,yk׮OngY֫Wﭷ*ի 4-تUZL qpz4ԋ] Zhу>XNϙ3СCvZ޽׍̓] hͻv:OKJ@ xM6dȐz X֬Ysx9`xO x曭[֪U~AgOvvqt|h1?zW_-**O~t"({ZLijbŊz[nꪫTt~{wvWN2{ _ : *AHVڼysA6bĈH$ /pƌ{(o[nF|MA `ZL3k֬H$2z蠃)H<;wF۶m :Pp(*** :L xbl>G xPYY 1IAĴPlrǎ 4:P~ߍ1"%%% 0-&@bB7rȠ#HIIQa@H ح[䠃)H<*Ly JX'|iӦD">lA `ZL gرnAuh47HaׯtR袋ܱcǠ@ h1*:02ױcG& ' '?????N:u : =-&PT :bmڴ)IO CcǎD"3f:L Py\kMMM}衇wNAm۶h4sΠ@gĉH+޲nݺ\z饯jժUp8 K :%}h4cǎP(rʑ#G녅~7|w6m4PzZL[w_R,???:uFm֬Y?8{Ȉ^nwڴiq<?~| |͏?x*U Tro߾vڇo7x8c{gy⌽ꪫgl۶m㌽ ]n]Ջ3v۶mhl*"p8\XXhle z5o޼s Gywt |? VzС_|Vֱu֍wqF"8{sssK裏̌ފgϞqΟ??!CO#FzwN:9 |m۶sz%''HZLģZLI :%ńJE 6 :P_u :L P{{o)ԭ[W !OHD>`nnn~~:*bTfEEEP(J@ T,ZL gYYY_uAߑHdԩAi1* . :Ph~~~A `ZLsF"yN -&@ٲeK4-((:Pp(*** :L xbl>Ͽ HDZL3ܬPbZLZhѰaànׯ_:ub$-&Tzs=t uQa@eф rss_N k1OJJJJJJ)T2ܡC@ c_PAX P^:++믿:P{H$2qĠ@333;vD۷H<Æ D"_ lڴ)޽; @ áP( 0-&@}LH|[ot%''7k֬^zA* 2d޼yA Oo6lt8%G @扲@Ţ*-&@f͚m֬YHdAi1*?߂;wFm۶H<7tS$p8 b$*ݻ7 pJh1Ol}FlPX 1ZLģNA@ *͛gdd4j( @yׯ5\SV@G w}w@ZTb$~޽iPYi1ʭJXNvvvVVW_}t=H:L P_t}7ht֭Ai1/~H$(cp8 TZh1xJ )ƍ}$?N%c-&@≭ψ*k1 F xTn( xP5o<##QFA/˟'guVA `a&H8\r?>߂eO x6nܸo߾ƍW^=,P@R%B T,ZL ';;;++뫯 :P^|H$2|@#*-&h1-)*͛gdd4j( @y;vXf͠@Mp>O?4555,P/dڴiK, :2{뭷 /J@ P]6++kƍA_H$2lذ@ĉ333x㍠m׮]htAi1ON"ȗ_~tP(TTTtXR(/??tPA gjH쳢$rX_h1E P|YYY6l:P-ZDt™2eJff+tٳ'H0EEEH .:N6mٲeAb$h4FNp8 T*_ ?9 PZLX3'Ph1 F `TzIAd}ѤI}gqFA `ZLńoN3h֬Y) xZL &7k/syuDK.g 0֯_q9?OTdbPފٰa÷z–JY$"k1*ɓ'lٲcǎg޷o_(:thvvСC;MWÆ իO|P(6f̘+UVÆ ۰aCl={yN:5o|ҤI;w,>~ܸq޼yŋO8155599K.s̉sDP(4a„˗gw955u֭;ޝ9iiiSLyW?ӧs=W_}uݺuvs'x"---==}G$8p`])СCm /l߾o޼yw9uĈ/cwx}KMM=bf̘k]x&Lcu=ܳf͚I&կ_;X~Ib?/R֭C{wŕ}E ""vEE1D4:K$!F y4f2*IhD'dIQ'#nAQne%* BdE=駇i(N;UL*AxaBBѣG'Oѵkײ!ML~Ru֊.Ϋd [vmy aݺu=z6mСC===9rӧ3iӦx۶md 333ܜN?~X ˗/8 |~^%yJ5a„ԩɓ^?SN'NlӦͿjϺlh6l~kZR@bT1T޽{W %%%??o߾⦧grrr^^^7nx!;;j믋 RLJJJIIyo2lذϟ߼ySl6p@}Ǐ ޽}.^h|ƓKжmUϫd6=O  ~pttTT[oWľ(@|k44ZT1̔hڻwVݽYf)))s<<< rD̙3!!!JFo ={Vɓ7o2O>OUkii)~(((PgϞMOO7nR!MLbjgRΪ`fjP\M65jԪUn޼y 6?^<4`ϋ5»wmܸpFzСC{}%Kdee5mڴ ={ѣGqqqe}W˖-SSS j$vZSFP*KPQ3c>>>cǎ]pܹs?q̙3]ֶmqK.uՍ7ԛ K,ݻw/\ziV^ݪUA:ulm۶0ao4=骝SOFzEƏz<{UVvvvO>6[xx13q|X&yxx6d?{ G62W;_ūg(wR+Vb{''ӧ'%%=wҥn NNNQQQӋd2ɓ'M={ޅ_ӷ~[*=ydÆ {V]pa^ ے%K;ؘmܸw߾}RP ZP3#J5h #m=:d#Gt766:Wj:44T|__\;w={Bh77m۶7nڽ{w˖-+,,yW_}ٵk[n.\P?ܸq*ĉk׮MKK/]R# IDATbSN C/6}FQڴif_XSdddxyyu666 ,HKK۽{ÇJ)Tzd "0b)..jiii5tg9rdLLW~v1uЂ_YZZZYY7onii?dmm=}tJ~z#I'^>xĉ&M2l ry֭===ccc?F.W4`Z}qƵifРAу U\KXX/_\dmlld2YE7Th+ [޽I&999\hQ޽ {HH)Tz4NT1̈3ąJKKh4N??TS;wnFFFlllEEIAvעE[ZZ7ܹs=;wtqq6m_TTTYo.RS?W`:ˋuss@&*wUV-]^X㒓̚5k)-Z7o۫**Ah X *&J xyy7ԋ9x𠝝]o^RRm۶RO7-뭷zinn SL?t萇GHHݻ=E wQ;6fkM6U*:t: fAє]d/СC'NLJJxb``]"##+:ǣF :ujJpಇt:]QQѓ'OΟ??eʔϟkg=|p׮]֭ h.[l9vرcۗZX ={>}+{ jII'OiӦuM0¢_ˎf͚y_ɓ':YYYaaa)))ϟ?qƲeڷo?l0c6T.\x)*&\T*VdذaIII999Ç8z㍜gϞ;wlܸ|< BVhѢ>ʪK.!!!7n?6::}Ѵi*'99YӅ:::Θ1gϞ}} zs/_~̙ǏWU\111?ڵk{u+W2ȑ#Lzjvvĉ۵k7f̘]vYYY8#wtJrݺuyyyRg#Y?@{8Ю]Yf+UL \pa73m۶]x1L@*&L//R;Νh"3Ǫ˜57*cƌٿ~ӰyƍnݺuQ„իW~={@#D@ۧOÝg~-["##Ν+U<HIIׯ_߾}/^(u$:j4ݻRw^|'uŋ_~Eu-77Hu_~Ɇ{rss?f͚ Kr f͛*J,jK~~ +WӧZ:#AzP3#AjTokҤB:E]k޼yӦMNQlmm˗/߼ypL_S apqqYdff?~x\w)ʺOT1̈3ąZDDS7|sC_ѣF{I&RРO}0`YSYHP5T1!++kgN7dȐCaΜ9ǎ4# 4iDT:99I@rᐐ}IbQ*J ^ɚ5k^x!G}4|pUL03VVV*0w=ڼyVZ5bOk?cLLͥokoj_*+6{.\1bD۶mVO:%BAA< +Vp^z) 77%K\<%,,L&>|xAK~z1-O?,**d'OԟuiQ{i+Li)BjjqT*Uf͚UD@E׷N+,,4ŋX{ajs!C9rCֹRա+Wܹٳ EC,X --m>V*F:˗;vӧ֭[A0Xŋ֭[E]lYaaSryPPM6aaa;jb'N߿?ȈST۷o71!'b;7nHLLȨӧOׯ_{yyܹ_~}of޽,X)ݣG/CѣGRRRDDDnZl9rݻwmΝ:w\{O?ϟ4ӭ[۷oTQdaeܹ7lժ'|RnB'ReN7{#GxyyoǎSN -((y斖CӧOWTׯ/w.Zw =$$D:a߾}:믿>p@VVƂ d2YEdr%,,/_6*i4j5N{ݻwʔ)mڴի?ܔx[T*~; 1W_}W`ܹ #""6lؠ?}͛7_xm۶cǎw.]tΝ_9r̙UVoݺ522ڵkNNN ?={7o aÆ=zlذݻ;v0=ITTԖ-[RSS[n^Fϟnݺ'O\vM\Z61rYf͚e_R-4;c/+++55Ք͝;7###66V.۠E۾}"-[L8q]v5|kMˋuss3ͪU.]Z_GMihƍgꛗ/_jZOhbvJ5jAH˗>>00pӦM*JV'$$ijL6MiӦmݺKWj]\\/ZniӦӧO7mxzAAA7oJ[[[B?qkw *&hHII۷陜'nBT*RRR>|o 6DA @yݻ;;;۷ŋW^⇶m޿޺u{Ĵo߿Ϛ2EUVN?UY3rEfN+!!aɒ%̙sܹ{ 8ȃpmۦT* $ԩSZ'+OeBBB *5r<<<|ՆLPxW fF\aEe[&}嗇8qbRRŋwimm]ь?~|̙3[l~g#W0FRz9}+V'ONLLܴiSVVVBBºu&L`aQ{5k֬_>77>5R&}?Ə~ /0GT1tUVO(-Wddرc.\8w>@hɒ%{n޼}W6mի[j5hРrWm6""b„ oƇ~?4sk׮mvܸq'){CBBlmm7i$'.]ڮ];JO?}e>S.OaذaIII999Ç8z={ܹqfe7o<;;{ĉڵ3fL~~]믿ׯ>s``ksN#y c?~Hc˗9sFlO?][reS<==Gŋr;4~xKdNdɒ^{MV߿ߔȑ#R@b2M… ONN: zG|A@='\b,uTrW^iӦRP3ӴiSR)u u^^^vΝ;wѢEcd$hb4ׯ_:Bqrr{)$SO_ObFB_b;7oLLLLOO:Rz- 1W_}و.\1bD۶mVO:%BAA< ˫hW;_ +V(pwQO>?a޽FbTr/Y,<<<7ӓ*5Yjڌ 1`f.^RƏ/u ѣG bcc{ȑ:Z[[JV\k ##sγgV(q µkצ}ח.]JII11ŋ ֭M6aaa]Kad׮]pz ,HKK۽{ÇJe殷lٲ›7o~W]vuVE77m۶oݺ{KԩSr<((P5~SL&N:_~ߠfA.u@hZh t:ٳG#ٱcUhhѣmllĝVVVMAOR֯__j6mDGG^)5^PPPTTT||~#0~)6mZ,IJSU9x޽{ ^d2\.oݺ={:tY;6mرN8`Wc,...aaa[n|r>}*bmm](C#F1b)a-&ke74;c/+++55ՔΝ+۷o7WfժUK.-,,|Ů.E͢E۾}5}ƍ;w\G+IAvעEe(///**HWUL03T1ԬtA wiiisA;;ڈ :!#""bx(((r\xYi&JVjdoӧOsss2e^AAA۷o/))ٶm[gVi,_|кuM6>}iӦCe'kdffOUL03T1Ơk׮jٹG9uNqSNMHHXdI||fb??cC~uiCr<<<|999_dR,3gιsݻ7p@lPZ-{ȔyifʕC X"qF :tذaCC5rS:vhN<)u$F UL15kֱcƎ[cuIR;УG#'N8qƍƇpvvvuu+gf:ѱ1cƸ[E_W)/_K}^\\YQ駟Μ9x~c OtttTTTRRPVtStRj4 VVVJcǎR@bT1 8P|wR@d/СC'NLJJxb``]"##+:ǣF :ujrKz2l˖-b]v߾}~eaqqa'e{(ՠT5k֬_SLMaRT:T:ϟ߸qcٲe۷6lث]=ySLyyU6e^G .ۃcҳgӧXBd˽)߸q)CĚRl PHbذaIII999Ç8z㍜gϞ;wlܸ|r}||u:]hh3zٷo_hxxa'Ϟ=+uzǏ/sȑ/^5_ 㳨Hk޼yvvĉ۵k7f̘]vYYY?3++.]888ܸqSMBP-Z({z*egΜOޔٳɓ*/hd5 %2d_T… ݻwo޼A0W`[l&uJt:Rnݺ<`X Pܼy3==k׮RgL//R;Νh"I٤Pׇ-~ڵ 5kB0{yyoԩS*&@hѢu-\P,…  m۶ŋMefdd8;;w1==NbPODY03NRTRGuyڵƟ1+A` T1kڬ,J|;Xپ}?ٳgKP5 q0;;[YJ|ŋ)ZnnnQQ)N~ ~|MϘe-&"hz IDAT fȑ# uڵk=z:`oowߩj?NNN:t̔0c-&b ^&MZhQjV֤I3Y͛7mTuV.oD_K^|͛{dex^h4P.[f*&TGI@ tuu-+VݻwCr\T~4;`fh7o.uPէoի*u4;ދ 5/++KRxB2dG}VT b@[fX裏.u"ׅ .\пK0y͛ pСgR 8p@ @޹uVZZZ.]:u$u?Č1'>~ܹs sZLzg˖-RPM(a PRRj޽[/\0bĈ۷mVV:uJYy\]]=Wn2ϥÇd22޾_~Ͽwq``(FrձcǺؼy_1CZbE;99M>=))!K.Ut#Aprrҟ^TT$N|T*Mқ f&//O>x@ d2At:tٳg92&&˫_~;v:ujhhhAAͯ,--͛7>}JZ~322Ax'&MT*\.oݺ={lllBCCGL7M6 m| B?_PjdAryxxի {( kҥKڵ3>J;3gѣjnQ;;9s;w޽{ή U `fbAppcƏ/uuRTVG :uRT?ν{:88ȉ'Nܸq}3g4ެ8..ӳ!kk낂rrvvvuu+#v_=CL9WP888DGGGEE%%%:XF:y~ĉtј1cÍ Q5 diiiجt*b۶mG~7>~/_ƯěިxB@ ffĈ/@$ɾCM81))ŋv튌Ǐ5* `ԩ*}%g@@ѣGtEEEO<9)S?. дڵkݺue˖-ǎ;v}}R>gϞӧO_b~OqqU-))1rɓ7mڔnݺ &XX(zk֬Y~ߚxa+Rv:t(9yC^|9+++,,,%%7nXlY f0r &\vS)$ UL03 BTkRŰaÒrrrqQsΝ76o/_6>BP-Z({>ҥKHHÍ7߿kllG}4mڴINNt3fٳg߾}_=C^˗9sfxxU/GLLO?v{oʕ9rH+L)w:&vs'kn̘1v2 ɓϟ?߻w3fhZ5OV/kPl޼ rw]|J*U>UVUT#!b] PTT}]=ҥKRjULz֭[iiiRPrrrT* .e[|zű2g0xK,o:O?mٲ%%%E @P33V'AtRР߿?$$СCR*&kM+NP@D UL@':jbZvqq: h4# =`fb̙3gΜ)u P*RG@zT1̄?N `f(a0t9:۷޽+uڵJ*..:R Pl߾wR ;whZ%v4ZT1lذAR}RB& @Q3SVS0#I*&ac-&UL0;T1hبb \ 4*JVwY $p5NפI %`fb3f̘!u  T1,X 00UVRP3ӪU+JBE ۷A*SzFILLsAHW^**??_ H*&@k.ݻwZmIIAUL03JڲeA-T1Z6;;[ Vd2At:AUL03w4HT1Pac-& ȥ@cRjuΝ@W\)))Q(R@JT1@Sy石۴iӲeKP+b_,*&*&@hܹ#u߿JzAULzgǎ~AHݻZD H*&+WT*j*&ǏkڜZ!AtR@JT1̈io Q3C :jbRTJR $\\\ܪU+h8Ν;weOO>}H0k1PcǎM:U $ЩS'Riii)u ? u bO5ͤI@mቲ`fN@-b-&*&*&@jZAH`РA*ѣGR@JT1ꝝ;wo: ib %`f/^RjL&AI)Q3CVsP[bWf4@ZL5DQ34lT1A.u@PRVJAHEEEAUL03T1 @,ueDDDh41cHZL03ڵk׮)EPPPPwZmbbV: *?AULzgΝ;w: kڢ" %`f>J] ̃gppp>}T\j/^:2LN'u رcǎ+u jX fFNS~*&4l@`vbRTJR $pɢ;J)QwN@RG@z2KyyyB: *&B_b_b;wILLh4R ZRܹ#uDsN@FFV-,,:R ffƌ*A-T1ܿ_K L&N:R fFNS~*&4l@UCh JZV*R GvQ H*&@c0mڴiӦI4_ y~~~~5k&ujULPΜ9e˖R*&@Cr1U@޹sNbbF: _=.jD.r2*H"`%,/GLFYhX:U3Ąhh(_/az0/iPLr~AD<80P={{ٜh>G!˳} ر۶m@ JG} ɓrٳgBW*r}B& R} ͌&-ULhfbвq/& ;~bB =rppw*&@%ULhvSVVfoo *&43/-^+}B@B?= `̘1r_w*&@sN-[;=zR,//w*&43GF!APT>Qf@T>zHAh,T1-b Pf*&-ULA0w@P B.;=;u Zxxx;P܋ ULyȑ#3fwzЩS'֭[~L&d3fHMMd1hd77P]>}vH8gsF7]]MSBM8qƍ BAz ̡Crrr\]]4!K,HII1445k\RUTT<17a{.\د_gxT1qpppqqy4!2i/__A(--ݾ}ڵkA  urr>} vvv)))8Ν333"""'52922bȑ;wӧOИV!CXYYۯ\ nnn+V2dH^ jіd۶m m۶{Ҷng*͛7GaccS}qjaaau<<<|||bccnھw.[aРA;vP6]uMKIFӶ:^fu.~ߩagΜ6.1of*@s6tХKT.^ܼLR͛7OP?>//oĉoUޡC'NgϞ555]]]r ܲ+++fΜY;IwڥT*=ztss,P{r劻\[;wXYY9s?sI]]]322***>裾}_z۷K';w/\YYyūWJę$&&^z500P850((W_LMMOcN8177տөi[7/'Mx"6c4ڨb@6tPSS: VVV.]RTvvv] IDAT'++JUJ… \]]WX!n9scǎHæOj*P|ƍ=޽{d֭EEEN5,,L~a֭UګV$Ǐ*ngh"q~R/N5,//o۶ٳgŏ_+(--555'տөi\7/'Mj;KVP6( \rѣM8Q.?^G͞=… III:u!==֭[Gvrrrrr6lÇ5lSܰ~zee=zҥ˾}TLLLN/Ֆ:111>>cǎǏDPq%55U$酅޳ֿqsG饥Ν+))6 Aѣo߾L'Ҹn >zqUU_"J\]u^O1F@མMз~_;=vR,++Qvvv~~~qqq[nXjccsС++,,tuuаJ}۷K.U^1\VV6m4B7aJn:[[ѣG_ H?xիWwq޴4q޽{كު-SwHL˫M6ӧOTxyyTLٳguN~I}q(~1bDBBBEEŵk6o$W"###>>z֭[wm۶>|xqq/_NNN.//oӦy~ǏׯK3Q֭Glٲ촴'MccaÆ-[,??ĉ;v}.%$i\UmX/uuI_uڨb@3T*y-L&etSN%''/_|ԩ˗/0`@JJa̙&L!$$3 `Oȶ&M8pEMVQ\\B(,,Ԙt۷gϞ]~yãzebbPU"IDDkXZZN>XmLu_(??q͟??44k 6nؽ{{oi[7/'Mxw*u=M$_xwgggwMY4?xɒ%/^jx|||RSSSRRt| &"""qX?auzNÿUK}vQ6='I"a+Ӭ= 6MΕ+W=;= iiiqF;;k׮۷~JUQQ>z>… }*j ٣ W@_T*KKKu?s̨;;;ׂ EDD :=55pݺu>>>nnn6l>|Q6lq7o1&88X/-"##]]]-,,FsNug77O>յzw.[SN xƉJKKovڢ"BCC322BCCO.&66vȐ!VVV+W1}}}O2Wc=5f.%%Eܹs[Nkm[z3gW:'mIKJJmۦP(ڶmۻwשּׁ,5I|/nnn+V2dH^ jruhTfe...7nw?aѢE@AHNN3gꏮr… ǠW_}533355O?UwڵC\_r%..Ĥ,...W^ 9s׮]JѣG077Rwssή S0aѣJ#G\]]MMM/y)M8wv~0wܱ:sLUUgu½{^r}ҥڦڲHҡC'NgϞUfѴRuWNV[sɕ/^zu$.gg猌>o߾O:iԍ7^tIAz^LhfrssJǏ4 L&JzAƏ)£G߿b 77A͛7}&M>|)S~?100]v'N=Iƌcoo[o:tHhȑƍKHHP ֭)SeeeIII+VpvvV(AAAgy]֬Yݹs+WٳGF&gdd[XX[>>>ͫ}|lG^%i5ؕ~ʕ+ <<vuu5NLL̙ꫯ'&&F X ׳j&JR?Kxb?x𠰰p _HKjjj``Ʃ@ƽPe{*b^^^mڴIOO?>}O>b (++6mBHKK˛0atr///L+~^LOOOQBmeBCCê:u˗[YY 0 %%Eh3g̴0a0/n߾\.?{뫏`ddP( ̯-[$ {zzL],^ǯI" իIe}iT'|.}cc? hTnnn͛7/**jݺusw@WR4A9hb;CCC}f4Exb:+W4)Z˗- fܣG@r'} ڵ@nܸT*FW&d23fJ򊋋k0:rssKLLl 4؅ ̤<O>;vxs85~ x{{;h2LJxS,Y"%%p֬YOwpJUQQt} vvv)))8ΝS1tPwwT77O>588?2~ʕl۶MPm۶wYYY7o1Ʀh3K "+**48 6 >zԨQEEE6lpss򊏏}.w]lYN pEHWWW #GܹSY{5vA[m-6VXz|AرC\ڧ&hBx|\Pf hٞ[ xصk>|ԩS˖-!::=::ʕ+۶mpQQQ lݺ5&&&##:""Bw;k֬w^ff#jdɒjҥ۶m377^:$$ŋeeeh2K "Bnn}||m:԰f͚s禧 :4==Ë/1cFyyyoFzzzJJʕ+WZtΝ9sZc$^Hh[amϞ=;##ɓWwj4~PULhfbв=*ngggmmaÆ'OnǻvZfwΝW\gϞf?~cPPPn Lr!Ad2YyyyFFFqqE޽kPYY߮\^l4iҘ1cz-q4m%9ϼy.SۤI8eʔ~?vtt l׮݉',++KJJZbB >ȑ#Ǎm:I4*4?O.] 2uT镬@ T1 < E׮]|W999팍d.\HJJԩStt n=zӰa>|? gϞ↭+++;v8~3g!==p߿ѹsgq4m%ԩu橭o߾↽\.V,((… *C8x`uSrrrppp=to߾kKn}jD$ УGkQ/T: ULhfbσI&9rd@\\\LLLo SSS;;;??[zzz:t ]]]A044RpmqҥKՇ500sj^z{5Z---O:Yh,1ȺulmmG_I8Gyyyd\%eeeӦMS(iiiyyy&LPX}%GHH\WTdzgϪj\E \t)''Qω_|qƌԩSҪn߾gO߾}Ϝ9.A1"!!ڵk7ot/_NNN.//oӦE?_FӖYb֭[wm۶>|xqqrj,1Q\\Bvݻw;vɓ7+PBR%$$| +Vw(@WgϞvvv>|ܹs#""Ə]vMFOo?쳆iӦ{g2dv,_rsswGGnݺ; gjǎ ty͚5TBssة^林=zttoݺ]QQajjjccjժ?Xۼ}kؼΝ{v/O?5؛7o4Xcc(B֭j411iݺuZvy /\pWwNRٳg %%%cƌwgvܼaݹsرcg7hؼ̙36ω'6o߰c *=qkؤ ?ָT?6xnݺmܸa󚚚6xܻwULhf\]]+++ o:GOytMR)BIIɣGfff .\zuǎ5vx\._pa=s̫˼ 8ɓ 7;;{ҤI ;v b ; ;PkkkBQcg6mjW^ٳ#G6ܛػw`:txןfFTVVV;xR)))+V?̙#>dNjt-jر hpSRҳvI]8qco՟ZyD=jW Sx*b@3RAdev ?~\VV /iӦUV>СXëݻ7xN:ة=s ^$L>]ݺuo)4255}饗Pf*&-CϞ=wf͚#G>|/ǎܹsDDSPGVVV~^@sת.*&Css󄄄]v;\~}͚5T14-wÜ9s׿P`bbý*&4'2E)h\9 ڹs*&@󐓓3}_|qΝVRTN4( eggwҥ{ dee} UUUyE.UVVkk544477Z\\\c͟?߾}cƌipZ;MΞ={}燄bu!!!^ΝO_YYٵk״kks紵ZZZG[߯cǎ?7n533?l2m IDAT׵;&&F[ɓ'GuРA8vСZ rqm{mR)Q1y@޽{[XX?^Y4|UUUf vg>|U[;w;O[kAA7|s׿}nݺ{Z/]4|mZϞ=;ydm}zĉ!Chk}'y|KvlNNDGyO>DX޽{nm/DjbbI*A"c_xoP#SSSc۶mK/ik֭ıCww\('Nhkp/ܰc/_>^[ıI;`{ik54TXi^^^kͻo9М?h2?333߿7>0OOOU9iIGPĽҌ%@g\sQPL6-///""*55uу޿h\~iNNθq} UL91~#GyyyyN<9zhooݻwsRoExT19i׮]NNΙ3g3eff6o޼?… |AUUsb@sb``ڀ疕ղe¢ h,T1 _)e4-T1Gfgg;=Xh\.߽{OT1/w+..NO>;vhF'$~#FtVPPVV&Ӥk׮IIIJJJ4T*ϟ߳gOSSS77pC,X :$D__/_1M޽yk׮n=o6n8'''333KbpJXA'М\~].;CRUTTy…k0=? }***>M6]p!==]bdG& R@믻;PT19T*yyy@o ׭[[^^.wss[bŐ!CzVPP /--ݾ}ڵk#""jaa1rȝ;w}BCC322BCCO.իϜ9SgO>588?}vvv;Ν;gff&nW?66vȐ!VVV+WԘGaT*՜9sFӻwm۶͝;oFFFⶉxƌr|ݺux}^zzyympAۧR6mڴ7nHwAG$4dߵkܹsխQTBؿ ڵk7`AI/]æ{AAA7n2d@ ~gIIIw^zudddtti˖-7n<qĝ/]vÇO:l2u͛7GEEeff:88$%%ݹsgΜ9oJhww+Wl۶M$[nȰhi޽{wYfͽ{233G1%A7ߴdϞ=5z;΀7ndddrvw644ءm۶۲eK~~.c۷{[n0000aӧ%&L_&wtE^LмPs=ڿ+ 4o޼xuk@@@= ͛włǏڵk͚5ޝ;w^r={ԥ{zzۓ&Mrvv6229rq$IPPPn L"d2YyyyFFFqqE޽5v%"Z&b:?yjQQQ薐a\P($:+?SNaԩ7o:99[GaaaСm9]DA4k/@DxNtEPt޽RooocgΜYRR"[Cojj⒚*oݺ5zh>&X ɱO.))ߤ(P:IϞ=ׯ_vӡ6։9s^}p%vzz"YYYYYY钭K. Tutt>6)))<<ڵtOKK˷z뭷޺sNdd]faaW_}2`A.]zرϞ={vV!99\8"O X:k>E;bZ$sbܸqGy7kjӦMzz} ;vciX'$~#FtVPPVV&Ӥk׮IIIJJJ4T*ϟ߳gOSSS77pC,X :$D__%^LEq:wwQ'@ UL9ѥKBѽ{g0Jб… רyDck/~ܩS'ݻwMP̝;Wܾx񢿿q5s1558EXXXnnΝ;oݺ"1 =ڶm͛A,… quuי;,Y㕕fR6~v,X4zXlYNNkI UL9pȑzvSaau<<<|||bccnnn+V2dH^ ۷ouww_vmQQDDСCSSS###]]]-,,FsNOhhhFFFhhAXz3gL'"66vȐ!VVV+WƝO+sΙ_:hJ5gΜ#G{۶mAAAs-++3mbbb``n2661c\._n)>7l  ERRDgRgԩ L:uu222R]urrG3~/UVu?k,7J'OULf#==[ؿsΕ=<< SSS[n=iذa>+{ѥK}?ISܰ~zeeec;v8~xڢjqӊ0uFߚ&GuE3rEGGGGJJJ OHHڵtOKK˷z׮]ׯ%W_ 0@ Ry1gϞԞnڴIzXsssu^c]^cƌ_%+۷h_fi =z4++֭[5jٲeiii'NT88o266vFw5jԴiӂʪ7n,X ==ÇYYYK,رa4|[n:uJ}cLL޽{޽+?Ccqag~u늋y*V\)˷l ɢ $&&o(??q͟??44V7GEED˗O:uVVV xmddIhѢiӦfΜikk;aݓh'&& PZZxgϮ_^"Fx*A 177 |pNwmll\7B1w\qŋ;;;ϙ3Taaa;wuV\\K;֧O>,77wӦM.\HOOna…ճJh@0@_:wP(Kfɒ%9993gw'@sULJ5gΜ#GNj{mfdd4wfffN###GAە3f֭̐8Ń8pĉ^z Ug_]P߿_Ӯ]8J%$~S"@zs]vڵw {19IHHhṹ999cǎ3 ƍ{nCC.m۶۲eK~~.c&L_&I4iM[Zf  ͉}ǧNcnnnGEE8pR[BBBpp rBHJJVzСjEFFI:@}*&ҥK=z$JG?[;fooK/uҥk׮{qJh7Vh"bsD&_ϟouΝQFM6-((u)7n,X ==ÇYYYK,رaA2eѣG7lpƍ5kL4UV2,&&g, ;QTTdTp-EI IDATQsASL3ܾ-XZbE+˴R3S+r\2A}KF@Dd~ܿ393x1z5r]u11޶m[vvcFu>|hX (55566… `*jʕ ULZz!Cի{:t&?ӕ+W/_^$IRTTa} `"Pm۶M,_\tܹsGfeeHJ8|#:ua;yg~W'޽p_uժUƎӧO>ejٲeG>i t0@ZL%Z뢃P($@P5lp%vFDDB* `K*T'))It *b Q*ӧO/_)5h@V@wyg„ ÔIBBB.\,:u,GkԨQ^=ƽyaݸu0`u?|uhb֍{ȑ^zɺqtc?{a]ݻ߿ߺམ`G},IRǎ?CZmxN~~~AAA͕JuCgee;vD0UZjZ7+WV\iݸM6}w7!!aĉ֍ۡCh=x`ݭkۭ[?Ӻ.\xklu3==}ժUֵ֭UkZfgg[P$GGG???cGM'iӦV `c7m>}Z5j9rDјIpp_e]3gX4]Yڵk-mppU̼ۺTj<<<5]zڵk:ԺqU*6iDjղz:$&&Z7Ri*۷71.`c oܸ!o;f͚5j(󐓓<<q'MǭQ5^p' @tOg}|S Hy9ߌ3^yYꫯ^^{/6o޼ FFFΝ;Wt1]@→T &TVmϟ_n]ӦMZɓ5kjժB1 $I?TqT1ܻwO޸qCtpp=zٳg׭[ʕɓ'7mtҥb`5`Ke =yԩ+W6n899:~౰*&ؖ2jժM4ŋk֬7n\.]z:PTqJ0QŔ9887nܸqO1'Aj_t曣Gb-yd@0`N@ J(x.ؐt'':u@y b UL UL '55566… /TTK,bT8;vh4K.Z633StD d׮]**""BtP^ $I:NtjժK.X*&ؒ\V!:nݺɓ'8p@tT12%Rb-&UL-T1URtbUZE@$`KbUD/:1)a@lIXXXbb #`K)at- UL UL ڵkϟ|JbT8;wh4 jwb-ٴiJ9s ( It: DlINNVy lG oX Dl UL@U`@Q~}ZݼysA0a„^xMtD *&PEׯ_~S͍&T1 >\V@9 Օ&ң PԨQYfPȯT Nttڵϋ@kתT HT1*]vi4>Ltܽ{W޺uKtD d*jPb-joB!INb-ДUL$`[b P͛@ѣGUtD *&PE۷o߾SՕ& 6$;;nnn׿DgPP؉*&*&@{9AaJ5w\A*&@믿j4%K@wj[nHT1XBR}ǢP($It UL%YYYZΝ;Pb-eK4@ZL$`[b P͛@ÇjWWWAT|rϞ=4i": `.`KbUD>}#:1\]])ax֬Y?T1aCb-yG!:*&JJNt/T1T,T1*sΉ@͛7T3fHT1*ݻwk4O?Tthڛ7oHT1,YDR}嗢P($It UL%wjYYYPb-eK4@ZLO?*&}TJ TS-Z֭ DӧO>}D %Lb->}ĉ===EQ[I Pى*&*&@{YA/TSHT1*={h4O>Dtjڌ A*&ؒ?PRYFtP^ $I:NtGϞ='MԤIA (EX֭[ZݻǏ?~eX D^!/k1bm x,@Q^=ZݢE AпDgggA*&@ѫW^zN@ gggJ(x:ؐ[nݽ{VZP^bXDB@B¹~zllٳgE Rx A*&@gF@{i7nHT1̞=[REGG@9 ͛Z6''GtP^ $I:NtD DBSrTJT1bm ,@"իV[h!:zꕘ$:"Q[B"4FNNN~~~S  yfNN,*;PbccWZjE,@2o&O|1A Pp_{YAo>J5qDA*&@h-Z$:Zmzz DlԩSU*/":(/ B$N':"Q[jDQ["/ːhJHT1PTT1<*fPPPttp ggnj!g={oݻwnnnb_Z6k߾?ǵQuU-[W,Zǡ銊ܴ] ,;w^}۷ܽ{\h}ݠrSjZ-:1D@0b-YlYbbb߾} .޽{6mNj:dseεdff>fAAիW{QZ&Mkdco,aLŋ9rI-Z?v˗/6ރշ7@%Ư!at_ӧ?cy``y~Ϟ=//ɩ˗/?x𠻻{ Zn-ovU?JFFFXXK.ݽ{733g5'ӧ-߿t}_yyy999رᙆZM81<<<**jӦM 4ܹsu?^ӧό3//>>~ذaeP\s퉉ƍ?߻w??zhVuwޓ'O֩S&iU*̡1VZ_^TTT¢{[2P^Lj֬ o>|}rGT}{,:ݻjoܸ!:"Q[2ydJk_|EhhMoǏy//͛7߾}{֬Y>q2{믝;v /K#Gܹs\\?**jԨQsuww3fLNNHv^ג%K^|g}v̙G6g~L3f eYfծ][R=z1c_|ѦMGG-[̹2CCC9|jȑ#۴i6mڴ3f;wN2>e532J2L&zx흒ҭ[7KGFPHdP  8p/m6÷|w?m T nzժUZᩥ oooALG/xbbbzh#: J_ܴiƍ-} k1?Eh-_QF};;s~']~nj~)))>>>m۶8p`'oahh(%H`SLMM-̈~\5ӉѠA5kgNˋ/إKOaaaDD̙3 w>δ\;&&>>&?nnn$ˌsϝ9sfĈ;?~ƍ7n\۹sgӦM/^yLw* www3;k֬g~gjzSRR>3ڵk??ӧGEE^Z$Bѵkݻw?~gϞ={|Nب5kRidM4Itblɷ~":l߾}…]ty77nhi' j޼R|7O:XvPß~O?m۶m >͛7_S/7m^ڵkUӦMϜ9cNųg>}I T2T1x{{9::**!!!??m۶fN;gQ'[?899?f:ݛ6m222|}}}}}{ꕛ{%hV^^^ׯ_/**75jhNvvv͛7 ?u TT1j֬ o>|}NNN$ܼySoPTvr!Ý;w.]ԵkWv1Cvv˗MwhZjڵ+?233MJKK35/-[ebsU^ϿtҡC-[6tPP߾}lRXX&$R֡C#GV"wܹu3fmǢm߾} IDATǎf 4ݡF9uC߼ys͏l?l!̙#INkC HT1EO6-""7ސO<%00pРAÇן?~{yy{f̘_iq˖-6/wYdI֭١E"##Gѹs縸G69zEo>|x@@Yk틍5*ÇT#FH K[@@@TTԠAD)7N:P(oqaÆyw޻w~B،?a,0jԨ|yyy{i-,,iʪL?ANKK7l` :y򤷷w^,j霜J߆ 2gΜm>m $--M-ZHtݼyOí[:88|WO[2+P["P(48OOE'Dxz_>nܸ(@řHT1諘xƏ/aK;;N:8pK.0P5Q[bɸxuժU|hX QW_uVdddEg*tgKLT1T,vӧO@J.:"Qp~wFG@kk׮HT1 2DR8qBt6#&&fժUW\UL%׮]jB!IN@bŊɓ''$$X*& MMP)Q@ *&*PULVխZիWb- T!!!!!!Sz~~~S UL%۶m~EQ[Bx lIw߾}֭V$I*((PI&w.P^^!Ξ=;x`___gg֭[GEEݻwO9s8pgHHHQ.\}+oo[]fʜ WqÕyuef[ժU]voVZZZ%fĬ3}tBk׮2G7n\||9pC -((hժUdddaZiZj0cƌ6h`„ 6<:4QӵkWggM6oh46mQF)SȟO:hr \zqƯSC۷/,,O'N$$$w5_k%N60qϟz8C^aaKf͚?gY}uW^]qqqJr„ f*U}'O |֪Uk͚5Æ rի?noo_:ݻww_iFyf͚pٖ-[`_I9{lXXX˖-1h>CAʖ /4hЍ7Ν;gNW^ݴiRYSRR._^b_<Yf>fWң4{{p'fEUV 6C͚5/4vZsa>}F=bĈc~o~wW^-󜼼5k5opObkk׮HT1WR]xQtUZJJ$I;G6/6nܸcwwwcK,&L`oorJ;3=ٳgfffNNYz,ͣj;rHIFzjU+8PzG2ŋ&Nh"Җ-[Ǝb JVw]bP'O._p7!S_y @DlիWZY?Vkذ$Iqqq;Fn{3flٲz;ϟiuȉ'R*QQQw޵xȾ}<<<\\\3`ioϯsΒ$Z߽{w-[f!֬YiӦ|믿~ᴴ;2$;;pݻw?&{Q^GefoƘǿ =|p͝:u)=)***/Il׮$I|'''ookǛ>-RVٳg?x@_BV#?rL4t%N(...qtRWcz*y=!!!77ŋ^ݺu{U&*}*&@QNZȧk ԫWw2wW^ݳgСCM4駟\|ɓez1N7eʔz+-[l۶|4**ʰKo߾'tԩ_~ݳv?Sa*y>#MN<ŋ-s7 2]vUcǎSK<{dCuX&GGaÆծ]{?C'΢*W-ZHLLܾ}S Es 4o… ϟmxn?4Ht\JسgOaaa DQ[B@哚\bgDDo-$)dYB2( ׮]k߾ ĉjPP,b@t;v~e`;PRzzzllӧEX ￿cǎ;%$$QT})xTdT1*?S,\Pt_~_ޤID @`C6lxՔ ճgNJ5o޼Ç[Z*7`KRRR6lTplC|||pp'NTT1i4Xs f̘1a„իM@GK\\\n$I9sqx~,栊 gϞѣDfPp222N:Uv6mڈzW\ٿȑ#-zuRRs=w@gx:!Cl޼Ytkܸqƍ-mUTTj#tQRݾ}[tk1$%%ݼyXtP^ $I Pűl&b QBPDY%T1*vjM6A<~޽{7jHt\ K6333Ν; aaa۷o_  : `.b-9~xqq #`K|}}EGى*&*&@{)ARu&:"Qp4͂ D @QQVMIIb-iݺJw ( It: `VK Pl,C^*%bxET1*`KbUDڵju6mD wbbRɗ*P)T*D@0`K.\DQ[Ҹqc(wv b Pܼy366ɓ֭[*SN UL '>>^̟?_t<|P&''HJtM4Q(/_B!IN@ѻwz5jHtT1hZM0o!:`1( 6C^AʍHT1PT(-//oݺujյ]v/^۷VZD'1c5X߿vv+6nXZn߾=wԩSK,wssׯ߆ 䝥J0v7ŋ9RfG ӥK~A$#7t`222bbbN8c:.77w֬Y...:7TǏOII:t[o%u믿Gurr?T*}<K.M:u:֭[G)..KǛ2eJnWTTtԩk׮ɽmݺڵkÆ {3X'?sRRR-056id׮]III&MJJJvttPxxxXXVO?iرŋeN ;73<ߗdΟϰl/СCߺuk}bfD@$.>f?=zprrSNj<<銊O<)sEb%Uw}W… G[N}ڵkVXXgΜ)?ތe6ܹs}||V\)15{/RT޾}[lРALLa'xe njGɟKLӌ1<73*#|mMQƲ999;wN޿h"U7CU)I efܻwORnZtdĉ'Nؽ{w-[&IRBBBFFFXXo^rss/]dQ%^تU+׋<==nݺqƺu2D~lg}t:u?4h@XfZ~>2Oi:t?ԫWORyzz7SSS ϔk׮C;vl6lm۶Ǐ998dUf6I7o.sJ ]R($t:A*&،bV$:[vZjJeffKT*m}||n޼)>}aZܹڵk͚5;vlm۶uww?x9Wa,N.]v=yL\ Err eAAѣjCRRRu)é6q9Ʉ}>C&(ct:ͣG2`3/`-[7nΜ9#G:uCo޼yf:ȯB7e˖´իW[4܅ w5kzzz8AT6l޼y3g_n7cMtRz߮?|NN;sѣG7js9L0dΟϐ1+Wl֬YΝyW_}ݽtG_vwwwss@:pߥK **JtOt  6511Ύ;6k֬XI#""~m///ѹgeeu> T8ѣG{^g}eH]vepe5km,px[~m>}Zjv(--&@EwWzA gwuW9r1c6w„ =XI&G?ce;ű2 IDATkogyw .,q;;yyyyyye;ЧO~:徘Ά /^ܤI j׮.--mʔ)۷oߺuk-ڵkoD|5j4jԨlck׮]nذ!m?2w޼ySL)zꕹŜ9s_cƌ)s#R?#?x67MΘ1W^)Ľl߾}9眲w-*q?O ?Zj}e G-&@\pkҢE'9~GWZf͚/8c~27U?7ߜ`=eܶhѢ۷o֭vܞ={ݺukv2WA4l0==l ޲eK'eۦM23g|6߷ ժUlewv|Z~'MTXXXz_FJPSA(6mڴy沍MMMmذa~'_|EI&nmO:2o]vم^εk׮Uw}W0qEYIcϞ=X@ZZرcѣGO:uڴi/_wP:uԩ?^oCA` \PZ_3lmbo3y={ h1 b$-&pVZM8>2eJZZZqኲIC GZZZ4ܹs)(Hadٲeb$ -&Tݻw;S@ȴIiӦ˖-VD/@ҨVTU/@Ţp6lؐxⰃ!سgO$i߾}A LZL '777++kȑabX) LZLbŊH$һwﰃ(%%%@ڵkW, G0k1F|Mlb@H"ZL* WHZL<4iF333 %%eٲea(}iӦMV u ŗ_~١C/",PIc׮]~m 5G6-&PT ;bٰaCNNŋ}HdϞ=ah1*yeeeya_b@hI/D"{nA|U ;sX,Vnݰ+%%%k1̬H2?kL 4PIX ( 4Py4i$fff_|QTTTz@hIC I'v 4ڵ ;,E Ŏ;VZUF-ZʑX3HIIIIIiٲW_=gΜ9cƌÐ-[nӧOq:t0s̲MbŊh4ڬY}&mu-!סN`>좋.j۶mݺu;u4v.aoQe2+ͻt~#FصkٳU_Gh׮]?ɓ6mzW_}5,?{׭[]v=|.^xѢEa* -&_JJJjڶm{뭷~}Q|{aai8㌎;N0!???!C,YdȐ!m۶8p`M6={v|Ȃ uaرzر9s:t0nܸ޽{gdd 4諯6uԞ={6jԨycƌI:7n5jT˖-O=ӧdzx A]siҤɾ7qN:cԩ;v`&Mz۵kO7$~-Zt?޳ضm۳>Fׯߵk/a/VTTt5D__~7޽3N=o!K͛7qܵkA TO}RSS;'xC/'UY?# 48s{ݭ\mܸ1''Gs D )^zyEEEwqGzooF .\bEoΝ;O*裏~ϟ_N㌌H$x:tXtݻ:xࢢ 64jh޼y{ݼy~x`ŸgӦMK頓]xof͚թSlBFFFzz̙3WZu饗W\qgsܹ~|}owb쌌⣗toO?w}wUP'/ib˗/g9蹔ҹddd^|yǎߺ Ts̛o|=ztkY|3j׮]ޏ矏b;w_R^/2}/FIz+>TLk`۶mah1Ƈ~ޯ_rW^u94jO>o߽{wӦM?/e˖{-:n+-##ck֬YQQƍk׮3痔L頓֩Sgɒ%ƍKb~cǎϟ??駟>Kj1 ֭[صkWZZڬYJsC5k֬ ϥ%>ȑ#[l9y T#F?~ǫUqVZegg;Iiκh<@~_v+?ZLԩAAAAA#_ɓ'\2 p\Q il߾=^_zov-}E[ .h۶m۶m<̂K'tҾO?5k޽;55u̙/Bf.y%-q'_xq?OO<|ZЅ]t)y۶mK0a|jNOO;ghѢSN94=K_mڴ o[ߢC:)ShѢB+7oDRSS\r=;hР[~W.\xcr7^矇 iAR~SNӦM{=cƌgyfΜ9AtܹI&KweddAPZ{oٲ?}gZ=++7XjU `*33W)|Zj߭pܹݺuI0$%%o?-)cIgѥK ~9N^jݺ1K/= yHG/};vԪU+55A vNj֬yg5o}O^~jԨqy5jҥ>hYYg5q۷\K|ժUKYfٳO?]fMI=K_)))SLξ袋^} \yK:C:wW^_~>}nZ|#غuk^^^=4hdɒ^xxȾ_-&h1l1 ;?w}7ow_Fw>{>^[^Ν;/yH+,,;:H$2?/)RI&Oܾ}ݻr-ѰaÃBiL4w]tѰaÆ r 7|?u=餓..{bرW^yȑ#6l8p[&8N^ݻ ~6oߏ;!K\g̘ѦMh4z~~ȗj_=봴GyK.9Snx} v+?7Fs/[,Z8sdW^={5kVYѣ맟~: p8deedggGѰ@iU ;uI'-[f͚aIJOMMm׮;3uԱcdži1F͚5NV\ٯ_͛7zcƌ NDejժO o^cmӦM#a9(GX,v 'B /°SP^+={lٲ%1??޽AhѢiӦ%5kVnnnIc_ӧ=3Xҫ<wQҫpbn:~G}nݺK.QF؉HJ6s[lٳgO 6,iȧ~%z={Ò^ݺukI/AкugOk֬YV⧭ZJ0xZL#ݻNzX"vڭ]ua,-[_%ݺuڵkIc_{7x0`@IcW޻ᄏW_|c|MNNNI_ W^F Zjׯ_j ի׮]Jox뮻o߾%M|뮻+Ս74nܸK. &T]v_pa b!SOk׮ƍFa(V^f͚݃0====GsrrA߿ƍ7n\Iǽ{FUӧ'xNb.Zhʔ)%zꩧRժ TRyq3W^cO8qV/A{QxIYÇ>< D2/y͛7/,XpguYovyTp˗/ˋ/FI 4fϞ=pN;mԩn/**z饗<۷o?f̘~S۷%z͚5K̙3gNooYYY%}'x≒{뭷&SO=`ȑ# ݷOFFFsyyy%_Xc=6ޮMLD .h֬YIc۵k`ȑ#G`./lc۵k8@G( -&@(,,bHdߍg1bA9真gX졇:SzYl=%4_7\'#ܡp֬YwygIVZ5A~2߃UV AئMchՃ:$;nb_~_^ʝӥKW" .WgPIc+W^?mذ͛g̘1cƌÇ'h1 \n]$u֍_sV^z+} ƞvi^sVON0ꫯ>3K:n{4hРA vH{ݻw/ؚ5k&Icvڏ>hv&O\PPyf͚uҥ}5jOO0/ă6[ovzիW6mڴiӦe ID ZLqe7o5ꩧz衇V^f͚on}dIڴi2@7nF]* ٳ'~*f6uֽcس>{~gv mڴIOO߀*'-&@իײe˞~郾ZFO>y'ӗ/_~M7u!770H 4j׮Ɛ5jԸkk'|r^^^[BQ/&J*y睷dɒ԰a:s9-ZAJ*+T86mYpaApt=_> -&@fee~a7b={BHّH ;/-&@ضm[,[vmA򕒒AQQQA 4ZL)3&IC P-*ƍG.]={}ah1*]fggM6mŽ!KqQdm۶k֩S lZLbv*-&@iӦ GϞ=#ȪUbT8 .>|xApX"޽; -&@xW#ȰaK 4n֯_v|APTTv iʌ G0-&@b@%a-&T ;ń#555v5 @8?wnժUA#믿f͚?Yfagb$ -&T]v;֭[8?~֬YZL i\|={W^A|i1FzTTU/@Ţp6mڔp°H$|@hŋnְocخ]b$?OH䮻 ;PRRR (** ;F 4l6lv(_ZL__~\SdH~zJB @ii1HMMFa??vjժUA 4ZLń#333;;;@hHW^ye>}ׯv(_ZLQ~}&A -&Ph1*?0 @8D.]v裏n喰Xre,۹sgA 4ZLOG"? @29f͚APZ7ob6m ;PRRR (** ;ppI#SfgM8i1* k1e*FEΝ;osΖ-[BHZL<:wv 4KHqQdyM65l0555,P@R%B T,ZL '///''? ;}F"O?4 -&@gee|a±jժX,cǎ@hIGD"K 4bX^^^A򕒒AQQQA 4ZL)3&IC P-*FEN8! @8?رEah1*N8!;;;@h"/////QF5 ; #-&PT ;W_2eڵkZL#i}Μ9zjYp6oޜ`߿$YpaA 4ZL O>6lXAp^:m߾= -&@x衇"ɓK 46n b$O5HZL$jaPy4l0v) @8۷7o< -&@bBѩSS_ i17Mƍ$I2b$ƍ0 _h1E Pl޼9''gaqG"sBp>ӬCǚ5kbXaaaA 4ZLq=D"ӧ(_)))ABH6lb[l ;/-&@҈/Ȉ/`b ih1b@PZZL<6lF?6mZaaaf!۩S>: pv 4K5|#!KqQdaÆ-W IDAT[4iҤ~agr**aZLbbT8999;AE"? -&@geeetMa3}wah1mD^~尃@b$ub+%%%@hI#SfgM8i1* k1Z(--&T 6F;v ;~kڴiA 4ZLńʣcǎaB%H֭+((8ꨣ֭v(GZLbv*-&@3k"_װ@hΒ%KnưXvm,۶m[A 4ZLq 7D"z+ @29s)S֭[v8@iYDJJJEEEa>y233:ꨰ@iY 4?e# ih1IC G 'v O<IJe˲q_LńʣcǎaBsGBf-&@Ұ,JZLaYP.B2X@Ţpsrrϟv 7pC$y뭷bT8_|EVV֐!CcڵXl۶mah1ƿG"Yf(_)))ABHk֬baI"!B 4HZL$HZL<4hFO<İ4iҲe=ܰ@hu!;;;@h:ꨣ:*&-&@xg 5kv(_ZLb.®]APeffΘ1#cݺu>}ap8o?/~׿jРAFFkvx2T(Di{NPa1bmڴ ;-&Ih׮]n;餓P[n%x޽]wYg~7xe˖zAСCGvCe˖yǰa"ȫv 'vԩGSNݱcGC Ydɐ!Cڶm;p-WӦMSRR>AFݳgN8aС+Wo/,,6mgѱc &?v^zuqΜ9۷oo{cڵA矿f͚{+/2++n;ub@xH/Ν[_qg}>gΜΝ;woܹ|Ν4[FFFv,Yk׮Oo… WXѿnxH$x>ܹ/Kz˃~6mڴMҡCK޽{С./CIQ=hI4 5j4o޼{n޼?L<ɁiNJ0ɲeˮ?U~_?裣>vs=b>mӦ*Hbfff֪UkѢEs֭[V޽{W^y%a rss6mڴtN;sM4y7^jժ۷oꪫhnn+C Y$W!q$ȟoZ} J|֭[Y&>p׮]ժU۹sgwuׯ={5{9>]zu֭KDp/?XIZ5jwyFZtinn>ڿK'xbA,_c=֣Go1s̵k>K.-[^w׿KNuּ=z4h`ɒ%/BK,}2(MԒ))_|رVZ 4H|;Gq ~_9rŊA wK,I|IA8C=h222{챰8ꨣ֭vM$իWo߾y5k ;Kuaر/۩S)Svie}fͺ>r#Gg-&@h޼yzzzV(T2rȇ~8 G9rd0?˖-a D @٭\ƏvHsK&NvR%j:{vڍ3F q( ٳg~A:ma:jԨ3Tj[3gN,+,,|&O\PPPPPߢE!ۯ͛wqagpT ;=ܓ7f̘ Zhd2Z~},ۺukA 4 4D>Ӱ?=zgVjѢō7޸vPR@XH+Wb;wwի7dȐaÆ5nBa-& Ydff~G/ܹsYYAAAzzXz[oU nݚV^GW^yeÆ ]tQ&Me-&@8ZL0q}+n7M%\ Av 1f̘ExZL i;wlٲeAYAAĉ]?-&@_‘_~i1TPP0eʔ;sСKbiӦMOMM ;T UPn s֭999s %;wA 4bT8?v bؖ-[ ideeE"X,v(_ZLbŊX,{+%%%@hI#SfgMR$#-&@Tb@PZZL<իF=ذ5j԰aÚ4iv9cNI&*L*9-&@xvժU@b$ %D -&Ph1*[̝;7 @8FDy晰@hꫯtp°!ظqc,;ZLqiE"aWJJJEEEa_|5\Ӹq㰃! i|7VڳgOAdr]wI# #88Y ZL*nݺM>=>+VF͚5۷IuPZxqݺuC@\Q ih1W^4=cRn-333>'OnڴivvvyWQQݻW~WK~ĩ #F7q;*3k1*c9&;;c)СO<ѧO;/??'СCff /ߧpڴigqFǎ'L_z衇͛W<øqz1hР*O4_o׮O?A^^ĉ;uԣGSرiNڳgF5o|̘1ߛ|رzرcO9yrss֭[PP_m۶=h~]v/̟7n8jԨ-Zt?OQƍ4hvIcܹ{iҤIAh&Mرzu';W_}u߾}kԨqw|g&LhҤ7߼bŊ &rgyoֱc>O=TJJJÆ ~>C ٸq/iӦ믿~ݺur˾lܸnzwue˖e˖ŷ'HO˝;w^~}-.]ھ} }~x#F,Z{ٳ%Kիx;wΞ={ٲe7p! ii&==jժa*K.O>mڴ>|M6^ziƍ={<ǏҥKVƌK/r/+8cVzes_}:t8Sozرcɒ%[nmРA׮] H/ܹsiiisγ>;A7ݻ?3wUVԩS_۷ۣGn׮]4+J.PzZL#'мyH$Ztʕ-Zn\жm۶m۞yK.-㏏?HKK[fݻaѢE]t?=,Xm۶}IMM9s /ЬY/8~O: 6m޽{_}Ն  yyy^x{/ŋ:uzi};b:wܤI7|s8l233kժhѢӹsv֭N:햕oZ}ŔٻwoڵJ(mۦW?umYbE4m֬Y߾}O&mXvm$Ͻ{׮^: pp rss֭۽{R?~I:v8`^z|NnnW_ݷo5jq}ل 4ir7Xb„ Gg^{[ouرO>SO=ҰaÇ~8ϐ!C6n/nڴ_n-ܲ$7n馛ynݺmٲeٲeM~НKa_ bx{]wΝ;gϞlٲn{R0ac=6tP+*-k1*:++k)K.O>mڴ>|M6^ziƍ={<ǏҥKVƌK/fli~W{UV|wعs믿>z:z7x =SRRvرdɒ[6hРk׮A;tcc|Ygoѣ۵kFҼWPyyyX,/// {?A¦;h$Em&SJY{J򔙚)ʽfF+(: j9 2?; è|y=:kjp `6RimmAD=zP?Jo(,,ͽuСC}||||| P^^~Ec /~zƍͭ Q?ի׉'***qvvNOOOMMuwwRj:;l4>Fr)J~nYT1l(JR)v f)((eW߿檟=z444N[dd~{ڵ]NްƦ0~S$??_c$HA\ fCL5Ig͚SWWwݻw7gkk!C$$$\x1''gգFRs͛7 pj[[[gggGGGuvhd  8099p&O-T1lP(²9@JJJG1{iӦۿtA*++,XбcGTzO?@r`L |g={|Ǎ(Sq "s3ϨT: SSL]~YI,/h;XZ__ߌ S KbP(bGFDDh5ϙ3G<ͩ5"ab;Vʕ+bGk;;Z-Nyysrr@k֬J+W; \r%22rb+44t۶mrwwaÆ5O*v){{{twR{AFdVVVϟ;  6gݺunnnyRiQTVVVD=[P.&JT*/_,v-L&[vA RRRvZLSYYu~\ -_رc-[ֿK. w^__M6>.C IDAT P\\e˖Ӻeee8qBsq˖-/ҥKQRRR߾}[qXq۷o״%$$xzz9sFRh A{L3h>䓔}ə8qaì,Xpٕ+W̙3@{mt͛77~~~sMJJڸq.HڷoڵݻSNu;c֊fΜ߇* umܸ1---((ׁ~qƅvU?}̘1E-://ѱ{ QTT:_3ѣ}}}~xug}Fn ]L0T1V^.?GRY󴰰077֭[C///x񢿿cY^P?puuqFmm)772$$DW^qqqvvvN윞jժS+ٳ|\[l9zhEEEYY\.ԩS**00P'<<\@_Z[aԩcǎm߾A<%F$v by *>>>q Q̃B_,YYYEGGϚ5+''ۻwnC IHHxbNNիG~iΝ7oV?~Wjjj_qFu333mmmeeeyyyҵ8p`rrrUUUaa *T1.(ׯJ˖-;;GFF={V$^^^W\7ɚ?YZRYTT$vD]L0%%%R{b ÇJ2??_ ZW_uwwwuuYYY TUUItҥˁtTQQogώ1>000)) \_~Z?^~a(77tu ( ݻӹJٳ_x;;;L6|AڶmxyyM81;;λvҴ߿_"jͦ ԷƤI 5tv+?{m$ *J *&1տ}~p{{]v}v)\>}t3gDFFsU__ߩS\⧟~ 7lpԩ\#Λ7r:̝;W&];w4f͚}[nرȁ .ʲT dƍuVsnt`ChZ}KkoQ{mbby Q*jԩNMMU|VVVӧOՍVVV hN8Q*&''[bʔ)r|޽:رZ&MڼysZZZTTTv 0|vl(--ݷoߡC^|EA+H,--}||ΝqӧOvګWz{{߼y~5k7|/|96<4Ƙ@ ]L0T1VN.ݻI 믿^q[^^13_zu׮]ҥK#Gj:'$$,X;' ~͘1/z 3TTTl޼]v2@7cnڴI/roGID'iҤI bb@4T1䲲G8F]~s斗_pa… hR~ĉ~=cbb~)S4U li-[o:of͚5; "OdggFEE 8ի?èQ ٹs˗׬YcN>O8RO? QT{i ꐙաW^g;Gax4mۖ3cǎÆ ꫯ;rHbgg'5&JoFz'^K;w?1hi$2***9bgg׻woÇ_rY;99yK,h*Z,b8F~m! :::狝EcbbӹDT=TXbƍYYYbg*FDDh5ϙ3GM6vvvb]6mNۋ@EEEZVVVcǎ]hQ.]A(--s玃1|(v AJu=S bݽ{Z¥gikk̑h ܹs RtѢEƍ/< 2… ϟ; `,b@3_Utww?)S @}T19/_})/0@3RpŹzjdd8_mǖ*;w4[<ZbyP*R422R [nݴiS~~3 LD"JjhDR٦MS$$$Ģ_H悻`fI%Lb@UL@'y *vvvrK 1vX\ vDCULU;888PrT1|X ık.TjK$KKKs?ӂ TVVnݺ_~+W,))i8>+Vwtt>>&LP7޼yW_uqqt钑SiY|ceӹFqqqrrr```DDĖ-[AKIIٻwMܾ;CLԷo߀l}[.**JHH ;sdk4yȐ!%%%k׮dԘ:Hk cǎի&ґ#G*** qHTha.\ B׮]@ĉ7ST ,h׮]UUJ1c\.?ydAAQfΜK/mݺUX_;w*۷]v.\PTwqrr:vX]]ݽ{~gÓ_k_vm̘1qqqOU?汾lZ7~W^yܹsAAA}=..nΜ9 [B^tT*=u-9rСJ2##ήa$.]߿ʕ+AAASLrʎ;ڶmk޽kkk믿jNoҤI:`Μ97l0hT1VN_gmӦ/RjkkN>s//:Uʟ>M0U*UQQQ۶m7o\RRyIV1}]_O3[u5?9=zb[B^hP޼y\YYiooiOLLW\p7KKˢ"Soo GXGT *7ߜ={J*//o׮ݑ#GFLjOP]]T*]&vI$AT*VɓO:uOOիW {֭C 0ŋG蓙ۭ[N:ٳɓ 8;;GEE?՘t| 7jkkMJ_6rss+++CBB4aN8asP ,p/3T|-9KգGTyZXXhHkɓmVSSk.ooﰰ0R&xbٹر{111={tqqٿ@@قtIJJJNNvtt+V=zt޽}ݘu tQ*?~O?50sι9@xcI_6릤Ĉgώ6miK ҷ>޾gϞq?&o h„ Ν{\]]M F4P@ ӻwﰰ#GQmm_|1h x`BBB AJYsίA T1}3g\vMR_vm̘1qqq3f̐'O,((5j̙3#G:tRk<ǏWΝ;G5:D_*#DΝ;NNNǎw?l`w:;ᥗ^ںu d/Κ5K̙YKSN|t}}}jjj>=z>vTZIΟg}СCǏ,h.&КmV.G k)UVo=zGfT:G~K.߿E``a<<<~ Ý;w~'!!!K.ݽ{J:p%K|}}r {.YD&gƌFB+ "Hwn`w:;l4~Ǐ,,,ƍمigdrñÇ֭3Μ9i؍IegϘ<ҭ܎;֯__ZZ*v by *_~Aϯcǎ333cccu֩S={}&L(++3zbbbtttbbSXXXVV>ٳ믿>n8c⥤Ĉgώ6mZC@4*++,XбcGTzO?tv7C}lH&Le P-OIIy۶mJn|?{oVv킂>v؆4DwVK&%%% >\ x}̘1CsGS(uiȑ6m"555..NgN___++1"--M,YW.?^Y_v'HJBC=<<*gϞ 'O޶m[MMͮ]֭̌[NsIAN:R}k-ow驩QQQǎAg#Phq*++<-v̔J'OnҨ _bc檟=z444NB}6mڤ"fUUULL\.)((9r>hppD"Ww|v .22ovZ׮]cccu6UL~|7@J͛Meee=k֬۷o޽ȱC IHHxbNNիGɓ=SeeeyyyO8p`rrrUUUaa gffVWW:;;;::k`/J8D"+-eؔ1bӦMs„ Ν{\]]bŊѣGwߍѼg_7n\쮲r;vJǏO5رcL v $&RSSnj3z;wwe???___R)v"طok6dȐ{EZ///bРAbg< AGf]f͚Ν;+b<,0 UL899y{{oڴ,A&M4sLGG=mllL^%**J&{R߫/vmԨQZ>Rn^^^&[WWװ ܹsGuכ6*-[LhѢ/]|yRRVɓ'[?fdd{p8<<<""´uoܸquF#[?ULby ,,l޽^hя?iӦS.X@iGF9r_wŋ/j4z(UmA7y]___\h~;t`/..jlآӐ!CL^7++`OHH0~zŋ/6y,O`b\.gԧOfee-Z觟~ZlƍM6{WT:1.K/=U4ϟ1cVG?&\ͭk~۶myP( \'C ,lذaʔ)'O6sϕZZg'hׯ///;xuܹ ??SNbg]LYYYb GJ7xC Rv֭N:狝*++J%Ww1000)) \_~Z?^~a(77tu ( ݻӹ;4iѣG9D5qlΝ+H/|t8}5tpJr/L&?1SQh~p{{]v}v)\>}t3gDFFsU__ߩS\⧟~ 7lpԩ\#Λ7r:̝;W&];w\W 4iR'eiiY }kfoon<A󸶶vĉR499YSL{Utaǎ*ȐZKkL4iiiiQQQ 6QX[[ۅD"1a9#׵A"XZZ-X@&={7p2>>>sݸqӧ/ٳGRmذO>1eLH}o>B6unSAJKKwС_|QFWnnȑ#CBBv-v]Lۑo???_Po3C||իWwei .]4rHvMd ,yĩƎbӦM~~~ݺu3f把͛7kN&iׯ_?f̘=ztu͏1ioΐΝ:88oƌ_|իWOHUUR~A UL0k׮J}A< Aߨ~𔔔}o^_<}59+\ǧK&MXnɓk>G߅i몟Zk֬yd׮]{akkkuRA޸q7b9iۡ/}餳ƪe*8`ںF])72O`ݻT*޽+vON: UQsΆ8p`iii]t1M=Ͽ/CN<>|KIII&ϯf(}~>7o8p`РAnNF~OOիWk?s??0AƏT*Rhۡ/}Go>z{URRbºP󠾍a tY*ߘ```^^ޘ1c֬Yӯ_?KtԩK. eڵW &ɒMG0m]S;;;776mhw2߱c͛AUaAذa fۡ3}԰;uqqy##cĈ{)))9qěo4AC]]V>(99Nht4;7<~ĉ u֑#G4 ׯ_GsSߎ! Ka6l`ܹssss/\pBwwy@T1xCt R\\h"OO3fܼy_U*6 g.&@suOOOk׮i tmSh .|i̙ӧOo߾}WOyyy>>>&LaǎS)..NNN زeKuu]&-[.]jαqqq))){5_2clٲ_vrrXt g۶mׯA&.&;w(R'N}gQR ?YYY bڴi> ,8{ʕ+]\\̙SPPrJytYzC}ݱc6\:>>h׮]wޝ:u[yK7ooΝqFc~}/**9sZZZP(AЊ}ϟ!CmV, A{Lß*fUUՁ,Y+ǏÝ;w~'!!!K.ݽ{4{]dL&ӧό3RSS5?瞳7n4ۯ+++stt޽i}f*&BNRTn:tπ/^X1}VVVĉ/7jkk$驩QQQmjYe>> h3((e&1Ҳ`[[PA=jgggLGPddddd{-[0>w1Zgg猌;w8mll{@KE*:Rz4,j+dF¼d[#^Ryosi>^FS=cmB$|S^^%tz=~ֽǰu IDATJxxxyy7vڥhtҴ;w76C=}tBfN&L9uT53?N.]RQQѹsgCCƱjxfP#++k֬YRO_m``0lذɓ'Ϙ1Cq=88'88xĈǏoܷ6s̹x񢩩w.nnn^^^˖-_pQo}eee=zgΜꫯn !S2gh^zݼygϞRgYLm ULm UL6@׮]/APaas=w-@UUUvvA g1@3|r<&&F d IPpΝb0oE!h Gk_ _qwwٳoSs))x/&hlڴСC բZGGY\ѱUMm Zcup4UL]ر1c@}:z 666vR]vߕ+WAAA{1bą >gΜ{w۶mP!!!cǎKMM-++\]]ŠĎM]_nӧIenn>rȝ;w*=!ZXXnoo]QQ4m}|kfbb2a„o166Vulu*`|Ç+">덇R~i>}ƌӸWee޽{W^mkk;rŋ+D>r^{5KK3fӻu?H366ωΙ3GmYL RO[JJJttSJJJ $~055˫_FRsaÆ'Nbmll 4 :q2'''̙SRRCz%MLL_oܸr؏"bA7owHHH\\ň#Tg*&Q徾!!!ᆆ+,,TQ&]~JTJKKKн{oPUU:.^(2Ϝ9MΝӝA8uꔳ?[E$Ŏ 0zh}m۶h|||>^uu7.(((77޹sg6:u0aBPPPfffZZZddԩS^娣Y͛|ԩzc/شiS׮]4UL6@7oޔG655 6mڋ/j*__G 6y3f```cc#F?~\uulڴi#Fx{=##m"""ܼ-[pW9P?ҬY.^ h-2_{=zܾ}[,$cii٧OׯK^ի۶m:Hk677߾}k&uxFp4òer={8L&³t̙3YYY?cttԉZƍ---_}UC[ܾ};;;D v oo9r͚5'N:Qk266ضmX~ h ;9yɓ'KI),,:Q쒒 ދ arR [[[o޼rԩKll,%L<8 ֭[٥Rݹsgڵ_OCCÞ={fggyˆ=qĆ ZwȑK,iY .ڵe}e}9Ҳr_nY?bĈ-[XXݲ-[YY;voYgL&N H*&h4+111b 0Aׯ_͍kYZ|/]e}O*ٳgϟy[\rҦUjkk]tT1@3Tx6UUUxʕÆ {yZfF200;p@޽=<tmŊM2337n 0nS_?IVufd յ;n޼]^^.umBaaaxxKtttEExvcƌej}999 Կ(~~#o>###\qvv#G|||Aٺu#klJ#c7eܹZZZ6mzd˗^zXuϝ;I\W0ƍ[t#忇hkb튎{׮]MOO/++srr>|Μ9%%%֩r|)gȔSNo:TSuAMMM򪫫 T=B1117n}pE2񑹖&''SwN2͛J#Fa̙~ѣG_z%ϛ7Ov}ƍjn ݻw+++mZ|xQ}q!Su\KI]6iҤ76xݻog?~|BBBUU͛7nݪ.]JIIܹ b579$$we&LРL&ꫯOzy??_Mݻ&L9sfy=Jz֭+V?||AϞ=Ǎt}}oÇ뿜U*(aU rttlgT1@3ZO+nnn^^^˖-_pV@@@DD9}||Gihhi^|UV9s.^hjj~\KI ._,?(?~.]&Mo3uYYY```=r3gS-l2zzz7.55SLyWrssqÇ{zzֿgfff/_]5tҦU&''g͝LWp@SO4iA?ASw޽sNݥ ҥKRG@Phs;3vX7n4x ˗/g\Y~ Թs],H'9&&&ݓ: 镔H'Bu:@-r<==] d p@k}wtuu4OfggWTTHY~f,&h4x2<8 UL T1H1&&FyΝ>l[pܹ ˔ׯ_rr[*et bܹNjp]ҥKϞ=;55\+VdW q>H'NP\133KLLljl⹚l *&Ю踻;XWWWUUf+W6Ge``w޽{{xx}ѢE .xxxד۷o 7k E>رcsU\_relll?~v TVVرa֭ XEsCvmŊo9WS ԩSVVVFFA UL T1vСC}S ]\\/͵]z1ct7nʾ;WWW;;"Ec٥zzzڵKloee5k,A֭[wG&Yvߕ+W,ÇW=yd׮]]T-X366eȐ!;v9sE #~R՝={\.obLmmmuŤ"_b{+++V\t_ULgϞ-[ݻ֭[ 4憜;wnVVVBB{TǟK9::͒d}: !111++^ 丸uօFFF*nm߾}ӦMϟ755/FGG8pɓAAA[nx񢫫yrrݻw,Xfff iggyڵ;v$**j&&&!!! :6~Sӧ+N46wQ ^we~zVVɓ_4iҭ[<Sl۶zL]RRեK[[[͛7O>}С Rg5Cy~Ob.AF)F w֝:u:UVVݻwն#G\xqllIx .ܸqfׯwrrXfM||x[)S888Mַo_OOO//GSd̙Қ1cjFm&BIIIll9sZ(>eƏߠeNN .../__: 322j:Slذ_ݸqcwog IDAT9q⯉#Guƛ␂ ̝;WKKkӦMTǟK鶌7nҥjmUL ^VV$~>|ٳgŇ 8omm?qD+++++q=|P{9$4h4//Zh۹sgUUU\\ň#(cccse}pů'''$$$OE3u7o/r^{(J'Nhp=99w~Μ93;;ѣW~HACBB}ƍ]]]UW):vؠo.]%^z)bbbRSSA޾}{nnxHqȐ! lٲEu=55~~~׿"""tuuZݻw'L;sz>eSjjj矟={G}$¾}O<8y@, _?rX.f6F.0@ H*&@SRR1iҤDDDyyy-[…[S288'88xĈ )255 6mڋ/j*___ŭ9s\x[$J㏉M ;k֬/릦{xQ?QVqƥ>x`ʔ)JnnUew}Ս7v~W[0($$)))|'OLIIٲe˔)S Xs=ȉrឞ cΥt[rrrFf,;;;;;[HFk?~˗y=EEEFFFoVG*ʟm\uuR~233:cСCMMYjή::+--ڵkQQYH#;;FHbfpuu幹 ]byyy?3gƏ/IN*d2  nq4CNNիWW"""֯_A ??e| U566Vq7;;[]kkkwϝ; /ÇUUGԩSUݼy󎊻k׮Uq7 I lL&U}wUoT>}wVwܸq*mӖ>m ⾛6mjq=tP={[%%%cǎm} ?gΜUVSDT1@3TWWG[[AN, A.\3Pń& u@=zCRSS_}Յ Rh(b<8 MYL6G: 4H.IihK yxxK4^ZZZʳg1@3 6L.H'*&hk׮eggֶȎ111>ljyΝi; xVd2A8 hbf)@TWWWUUf+W6橯Y$T1@3<~0<<%::B ++Yf9r/fff2W4AlmmW^=f̘/]ƍ.,,H>$$dرvvv666v4)ºuN>$k׮ussrJS;TT,AiwkQJJJv޵k!C\|Y?1ck͚5Dmg1휶jy*AAA\\ܽ{,XGFFϫVz7f"O^^oߞԿuyyy?#,,{˗/ oݺ5!!AdssΘ1yC$**~^bEHH֭[d[dISKPܼZ5l|Azz~:f̘.]K,9p*DhiiwY $oIϯcǎR LLLA(((hY]9sFm۶CAO?Ʀ,]TN:VWW˗/֊W\tYf}gJC }#^Z|={69J37Ȧz J75mرc ?r+ ԟ$e@3;w.++ȨeʜįÇ?{lII1117nLJJjj:գۋSSS'Nheeeee5nܸfff2%%o}ٳgg] ?UWW75N ^*֢ VZXX/6w+LLLccc{9e$bfСعstSA֮U'''##'O6[ᑔ0ϯY$b@ЩS &effEFFN:U5tӧO5k׮M4iƍ...-M۷o899,]4--Ν;-...,,tqq144ȈUܪR$kAKh]Z>mmӧ8vXMMV\t)%%s&&&͚$Aڋ777//e˖/\P>gΜ/z{{M%$$}||GqcN6_\jV'Q XB*֢ [ѬY4Peee=zgΜꫯ;/<}1چL4I 5qhjjj=&u2dHQQc7R@C>: i/-VZhKKK7==97#O3Fhj-QYsh( A__)W1H@{֭[{H t:@-/d2Q@vEKg-ދ *&ЮhiiJdΝ;WSScdd$uYL RLNN~饗_9+Q ;w|ҳ8::Ĵߖ4XH=77>$휮C+uҒ:Ҡ ҥKYYY:::3ȧ~kkk}W^yΝ;IIIV\9lذ0Q=mRqٽK^ZeT1@3qb:t^;cǎ2dHcƌ166իך5kċeee}]XXXQQJ/[p{{{芊 񺭭ڵklll\Ԋoee5k֬#GL&*vIȼz1c {-X ??_qN4**~^bEHH֭[H?U|M㓗gccbTl۷oOJJ߿u뼼roݺ5!!AdssΘ1yvvO&5*99Mf@qڋ>>>cƌ!??ʪT&UTTdddkjjv޽~z''' 5k)mb}{]zȑ#/^;skii͘1cJzƂϞ=*E&M8pŋ/\pƍvLl?e)´i啐"aٽ>Պ󫫫Nh ^deeG\ZZaÆO>d֬YGr?s陘$&&sʔ)'ZYYYYY7ÇJ+X_zzzYYugϞ-))4H`jjzbbb6nܘdddbTo֩Mج.SRRاO={?^E6{Jآ)555/BTTÇ<`ڬÇwJiPO>yyy窪*mmJA>y3&((O>xxx$%% {B7uQѱsSN9;;뫿#hkk*Z>>K.MKKsN|||S^SN&L LKK:ujbC>}Z,]vmҤI7ntqq=((ѱEu椤۷o8997c fddk?߬Iol߾JP.U֊_mDZ}͛7,T1@3dggggg?nnn' lh?ORX=zGN;h555_~6&'Oի%L T1/ /5;<Д:^x1**Ju )))O-fr͛R@x233̲-,,i_UUѩS' @۔S]]-uA4@iio&u-ѯ_0S*&hlhxd I@@S/] *& g1O @ho:t#u9vXuuAg1@PC߿iNs65cLLLk5{Ν?~|Ϟ=MMMݏ?.ByyL~%''+URRte˖ 4H__6 @b+Vd2$6~ҥVxyyYYYۇ|GjLSJv E/33D׌ ooo\gkk{ӧ6QUL]vJOO:gʕ+ ?95jA\\܁z[wwE/\Q\Onnn߾},XtK^~}׮]111*rǎ[nAucAV\Y?Guvv/_e˖_~E>MLSR:HnVXT^xzչr|M:t`mmmee%umBtt1c{fbYYw}jg IDATgVTTҋ֭;}0<<%::BnkkvZ777??+W4gff8wY㫳( ++Yf jccchhk.cfMmE-X366eȐ!;v9sE #~R՝={\.W:Ń۷|;::Ο?_aϞ=uuu[lٻw[T7AqEp]];w^oonݺ1"&&fȑ-ؙܹs?o޼_~911o[n ]V?9bh%K_޽{/^?~x=000:::,,'O jqS#nݺHŭ͛7gdd}С R#\rۻgzg_APPP```UUUb+4~QqM7''Gůׯ_"""bccgddYBB7|#ݓU4>r䈏 >>>[nmBCCڦN;v3/jܹZZZ6mjUaÆo/22rӦM;v: T1ڜÇ4ebb۳g)ShMOOϟ8qոq>|ҋ999_~ْAyyyՏGF 8O>{9|6MmEf(ЧOA_---U+999 !!ᑅ7##NyaæLA~#A9sfvvѣGU?o~wT{7^oƍKJJTl۶رc&Mڷo_IIIAAɓ'{O'xPPSS ʖ.]ڹsg\O?mٲEiaa1l0q[.::aaasΕKNN?Ϛ5ﭷzIM>ŋVVV'NZ~ɓ_{%K7kl)DYAFѣ1c\~ȑ#ҕ_~egolllΝ;O0l݆ F޶m[@@AT9v%..N"(4 vڞ={koo鴱c}_tҸ 6|'O\bۣ/^ikkz9s̞=[i&''M6믱gsΘN:EEEX'lppoU/ Th|IeC봼vիW|M~~~nmKq}4@!JKKwaoo߯_?M.--ݹsfLLL``sNMhdVXt&\reĉu7Vbcǎꫯ_ :*???Vrtt>|TOg``0sǯ[ͭ{WNLLT*bɓ{ehhf;L飯?eՌ,,,&NcAJKKOI=ӐqiYPP Mڵk p!ssh2nmmmkk{͛7[~kgg.ԩ֭[G###~~~cǂA޾}{iv ̘1C__/&v5j&Ck2zRRRhh֭[rBHMMU5kltXCt̗|<(''M:thvvx {{ٍ=Ǫ72===44_~=z8pӧ%n޼Y]]-۵kWUUվ}w>l0գmC*B=A8qMgϞҙFDD$%%[&C{gΜ}vjjرcGUOMM֭F/^\àǏKB$A000|D4˿/Mdtss?++ƍC P$EtUL*۷/Ufff߿7bKKÇb<$$DPdffL8Qi3iRzN:c͘ʬYgTԳgO\~NNN ܼys~k2+Rkcc/ڻwΝ;322A\7&4Hm۶Iy &U֣G޽{?ͅniiGUVVJ-Nc/& :*&d2B?####__+VeffnڴiҤI)))ɷoߎpss544 ̬sN %%%fffu:u~!S:ǫX?{;j7׷NKLe˖ӧO޽;::]vMݻ!!!AAAj,;5oQMMzEM|rA:TTTtIĘ߻wOzMoƍKJJ$Ĥ8pÇjdyI~֭E<~˖-ڵѣ5\"]rUם@}111555Nx T1@P}}4_`AXXܹsU"""hllzedddpppddŰa)Z~ɓ_{%KM>ŋVVV'N<}wɍ:uŋ?[YYj4?QVѣGgdd>_~ټysٳ o(|G'OLOO߶m[@@AT ҥK\\\=UCyD4//lR9o<w}S?|000s&L(++۽{Kslmmfxg͚@"Dh_nhhؽ{wmOv"T]]mkkW_R'@kЮ]r###mh@ fhhhoo,ڼysϞ=x m' ޽;^ӳ =<< [pVyƉ/3N.vKT=zرcN֌?^._pAۉ( z{{WWWk;oWTTh;.]$}||xAwF0@Et@eee~~~aaݻWuk׮7\3=yܸq]vR('N\֐޽{6 ,0`cDDDpˢEd2Ç3ӳK.5eg̘U~ӦMȨJ4c ӥhS9|L&swwW_}M5667n===/_"4\ybad2m'T*4lx!CT5jSFF|||# :u k׮=uTY!44ʕ+gamm`ݡCzFiaaaccz3p"-K(9s$$$xxx 4(666((h޼y~ohh(~666W=j׮ݴirƍѣGZpMLL\]]g͚%BcA8pRܶmoݺ%X?wd2ҥKϟ?b{;;E]tٳP]Whׯ_Ǐ뭷3&u&eaa1m4kkNK|*& :*&d2B?aaa[v7mڤzW_}Oo.]4..nÆ ɓ'WXj}/zzzڦ޽{wΜ9gaӦMNNN6m_ccc5dΝ111:ujew|nݺ_xqܸq fD$E,Xk׮^ouVnn& ~} lбcGOOWbI111۷Ν;5TJKKwaoo_gD;w:::6Fl0Zvz;vױcG^MǏwu#Gj2gW^8pv@[b 5zzziii}G\jϟzׯ_?;w&>>~ݺunnnݻw_zubbjwW@@yɽz244OJJNR:>}O2 M&UTT斔 4fLDzYT׿iX@UWPP MڵkMN-:::!!СC͒BCCn* EjjDcǎ }&w_^Uh[[[ڞ={vzzz:uںu?hdd?&+)M3f|W_~efO?d!!!? /Wt޾h;b߿իW[m'@rrrˡCfgg{{ٍ=DA@گ_=z8pϒɀVVV7oެ~w)999!!k׮1bkG)ʊ~aʕی@t}nݴsuum߾}NNxnbb"^fff߿7bKKÇb&3}}}CyyyHHB,((8qjAmmf$[[;wk;%%~۷ohhh 5̚5˼!NE={Wlmm$1͛7{zzj XZZ~Gu}*NAqmۤÚ*666-MLL_y #ݻsΌ+D4ь3>ӧ7cM^y_7ܷo HLwŊyyy6m4iiJJJrr۷#""lmm 333kkkܹS {xxW|ԩLLzq㒒nܸ}vM~ҥ􊊊w̬~NDe:__:-e2ٖ-[RRR322N>{v56wi[ IDATn-Z(''Ǘ/_^lY׮]G`CMEeA=ztFFƣGƌs#GHWv͛7Ξ=[Ç;wWWWO6M.oܸ!=ztС8p Mf5sLBqAΫw^R)HDH h JL&JͺqF~~[N#娡k׮]z7Tw֭\M"]~}߾} cǎꫯ_Î+WԟL&xXhFbZBz֭[^V2V͘1c̙zzTK؋ :{1mULXŔd[lIII 8}thhݻ۵kXwiϩnZhQNNǏ/_lٲ]=Z)S=zt֭nJMM]nɓd2YLLLZZ>|;jjjSm,ĀVNP( mg@k^?AۉT1@ӳg о}^zu5&&&&&FO>i999[nm^_77ٳg7wռw_~IKKk^^zG6CQQѹs׷sl^۷o7I.]QX3;;{͚5b W^)++ͭӬcǎ_~Q/>fW1֬Yq]ə5kVmvĉ7))y}{C[3gN3f˖-{ĉ+W6ʕ++:6*&ƪC NIIYbEvv oo|;wnnnn_|Eի?**y}=̙3wРAJP4K566n&Y[[7{gM =zy}I۵kWYYY׮]!<;7ksĉ˗ tyk߾ LhuN tULO{lm'^ lYT1@߾}[ۉ"P TIb8wޖΨI}׮]ZG]AABڵ  h i/^LRY]]mhhIŋ>$_X[[iO5S@Ÿ'R,vkkkm'vt&U7:;;{xxUTTfgg7ucǎZ&?^h 8::Zjȑ /,,}מNNN6lx}TTԨQ222֯_`ffgM$AXvSd͚5^^^W\ile%gGGkǎq֭cǎԩÇnꚐ =*GѼ|cmmmooollD'@WZZzm.]4&88޽{6l9s?CA\]],Y[oow 6ѱ2%%O>k׮MNNˍ| ֮]kiipnݺmذAl_]]"BBBmmm92eʔ}O>D&}-z\gyƌ}Y+ѱ&::)88dС˖-|w߿odd<#===RY[[C؋ :^YYYyUV9::>|"##,aJGׯϝ;WXXXSSn:77ݻ^:11Qـ'ɓ{ehh$=qL飯?eʔÇKy5ϧNɓ';gϞSLp300W__@{1eSVV&^:t饥&&&ݻw'O477oF4gggX[ȐEEEǏWExq^^ C QOOO*---))Q(2n޼Y]]m`>KΚS666rSNKթ^۷/ҚAmmɓ'g͚C.7# 1ÿX, /~(// Q('NT}h9?U><-2022]bE^^^ffM&M$>\ H>g,__ռKZ<\t" UL@Gtbh?_|ںuutD fΜɯ"sb AN6QЂnݪ&_IIɝ;wLMM ϝ4޾fjjGcƌcff>ݻWuk׮>>III9KgԧO}})S>|ꋌNJJ244h&z2"77LܦYYY7.66V:CWWW7Wwvv_jħاO-xƎ]]]Dh۷KKKaMo/_>e]zuڴi'O|?Ӏ_cǎ={K.YYYeeennnbCN>Dggg񾉉}FF\./**?~jǏ9886ҒB!=L  ޷yfuuAP޽{7o|IsssW899?3go1dȐ (44t޼yV:pQϨXYDT#>UǞ={ڵKbe :ѣGwޕhӣG7o *++AX| #G|W׬Y#ksrrArwwW233jFѥKKKÇ;99W___P^^qF33{X|d``P[[[t&PgГ'OΚ5+%%E.Kǔ^=AŋVVV'NK" 5A}{-]w/__Sbʖ.]ڹsg\O?mٲE% >W^ 6zw>cssS3A ~˗G|4vao.--ҥSK4ًhҥK0Eׯ)axK,155:..ӧA(amV.])a,bxݻw;vhii)ѬG5,,,VKA.\|e{T1b2 =zTSS"޽VZZZ>LeT1@g-+1꒒ (“'O***Z6fqqqxIԉo*`@|;/ɓgϞxqxcǎ͜9SYAر~KE(ǧ{-5bΰ4iRlJ ;vl lL hdddllܲ1[100055mBvZٳgݻԩS,Yb`phX~  Z[oǫݻg͚UQQQ^^ub:!88xݻv v.h4mǎrO?v"ZXnn}TrxԩSx(ʘm۶i;p ߿_ۉhaVA./_<88cd2 )Yf{x b_0ſfxi&$$P ߟ㣧K^L@GtULॴtRǪ* @gXsN :*&RP>|eܹ3%L@[&Dh=ztUA.]z… 6XZZ.\`Æ 5oٲe999+W9rdnniaaa۷o̙STT6d qIII...w֭[^^^߾}A8qbG68&skٳ+++O8qչs6xķt@qqq~~~qqЊdܒ33Aǯ[ͭ{WNLLK X]]7߬^K__FAeeWZ8|'$$4\")41 E++q PQQ4ɭUVKPiMbP!VSN ]v 8uTNNNQQF㼼S\\~LkeeennnСCKKK .ЯFpRVߙ3gJx9b3b/&¿M@GQ4;%%~۷ohhÇ]qqCGsss377?ydcùo>''Grww711i0t2MɎ>>>鱱!!! d0ӗd׮]/y/&76*&@?QP5כK.WTTo߾SNfffᙙwILLlq_~ᇚ߼yS+2337m4iҤƂK$sft^vmZZԩSl4B]vƌq={4x_^DbmPJJJZZ+XKvY.O[l!22288822bذa'Nh\_TT;O:Nh/// ͝;W"xc|wX_hhhZZ{X'CC y7LI٬MMM!Dh-,,,,, ]R]]mhhh``PUU\@E:@ E+,,s3,,l…Zɧ5`M/+==3gJlh؋ u?~ѣ555Nv|r|Ϟ=NDYɓ'ܽ{7??ѣGN`/&耵k/Bۉ"Pp޽j;m]iٜ%9sC-5N& T*Ŀ`4iŮ34^LT14(..nȑ666W믿trrڰa+--U(;v4h˗4(..޸qG\\\EEDpdjcvSNIf///+W4Awފ+u6lذs5 xFq@h***kp޽>wwwիWAXt 6l`iip‚ 64ָe˖\rȑuݻwo߾}ߟ3gNQQч~XƒBclɼY|so~ѢEQQQ۷ofϞ]YYyĉWΝ;W.@3\r…N`/&@ktС4##dܒ33Aǯ[ͭ{WNLLT NիW{yy;;;ب7ƂK$#1 6nr^, ӧ)S>R^^jժ^z) Mz`iiioo߱cGm'vPtҫWΘ1CۉhE:uꔜеk׀SN?nя?kq999ůZc#䔕C.--m0D2S`&XVVV7oެnrϜ9T*#F4@tjoooffD.)))[߾}CCC]\\,-->l\?ɓ'յ}999eVVIil $rnWWWLv5b<'T1tҥK+**ڷoߩS'333CC;w$&&6ָ~@/?CMMo޼wŊyyy6m4iRc%߹svlqj,fk׮ݘ1c6nX^^^XXgϞgޟGY{ I¦ȒAAԲD8 znmEA boQrӃ˭VAo (UPEfUVY!1!L"0_k>&y.ڨb4I_Ds=Po>soms΍3xOӧO?~_^pEEE ; 6rȫzҤIW\qEk ꫯΞ=ky՘{=3k֬-ZS~~ɓc?gÇ/fŊ={˲jpGܹ-[v'-J;v}\snĮs.E/])S,['\nSO=M}|+Pߜ5v9w/[5.?"Ȍ3H:51bDQQ֭[srr|.;fΜ;#dddLl^ 3gΜK>[ӧO曷nc_~q^~~ի=QFmٲ%Vg|u\/C}s(6^;蠃=ߪHHG}t8UL&@M#s=Wٳ;uԷo8/^}L>=jRHDnƲ]ss|u͜/C}sVթSaÆ=S?ys"r!w:o4QM  :4??V{_3f̼y.\8~'x;lѢEmknذ??nܸX& 3fx7Goٲ壏>::vU}=Wm@EEn~qEEE^ĿuEm<5k\s5-*..^d 7йsO>s?~3ו꛳ ~_x7tSmתH/w]Tk _ bB z|͖-[6O7o֭[Gu)X7=zt5~鯿n}~i GUVVN`ػӧO͛wۀzkwim۶/G\/EMgתU-[31bDiiOMAQHFgqKJJ[]w]NNN(2{l…6mF6m : C +"ȫt`/k߾/~񋪗/ұ /^ OM8q„ AI:u[vm4Ւc֭v+K]r%sO?wgBg}v̘1z^HMw_)T1XF8:h45b%&h/. m۶cǎ^Q;m۶wlNIIIYY^\r{qоtǧ~ڷo߳>뿺wth<M*&SPPp饗B֭[{yi|{k/hT1ULHAC-))IO޷7yyyG޻JL(JKKkݺ^\0 j*33sٶm۽`fffV{IOOً B͛5ħ} x߾}o1c4k֬S@T1ٳ $fA`_ٹs3z衠@odggA/&@2zw vt 3f̈D"v[A A#G6nخ]ؼys4Ћ ;6,X @# áPHYMU;A az2TWz1?SO=s;vϟ;wn(ھ}{&zzj|-/^|YgE"VZ_:tM7ݔ`)[juꩧ>ͽk+R`mȑ#{葝}GN>}۶m5kVW^y%}SuaW]uիlT=O}ـF#8"++O>SN-UOmO]q֩~^uzUG:u4{hT1ULxAeggϚ5_?蠃>k֬-ZS~~ɓc?gÇ/fŊ={˲j>ꨣo+V<3H䡇j@7pΝ;WZ5z.hʕUo=#{{5~>zΝlٲO>YhQՀ>}uΞ6m_sΆЄb4f*,,8p`AaPh^.[wy̙3_z:thǪkTsrr?{キNh =x ?餓z衊|/3__6mTTT`&Jg?~H$kU zg.R8$x:1_|qZZ}ݗ%4UL&K.yyyhԩ[nPhܹ^v=^{mԩ>lzd:nUW]Lu7VVVرw>yyy|(7n\4}nQ̙X۷o_Yf 3j۶mBŠ IDATM0g:gnn_^c5jԖ-[b.OߏK}m|u<ӧ|[nMB4QݻG"{ٳgwԩo߾q&.^x̘1w}wUemuDy}y'xg9k֬P(T^^i/vݢkϨ{vs^|9a„8ڵg9=Izvo,++t.]$9>OgĈ}>}z"K`瞗_~y̘1[px;36lӟ7njjѣg͚UTT|WڵkWuIUYYY^^m۶9sȑ#CK/nݺWu͘1۸qcuƌoȑ#-[|Gwޞ=o1qݎR}w ,8s뮄>̭3g5kE/Ynܹ'\R5F"N'K;hM}B ;w :z(z ^O7o֭[Gu)X7=zt)O?_}wO?Æ 裏*++NzWTT UO^}͛7י7MFFF6ms=E(G5pοx>hmu]t袋?6,+++??uֻ:C.N:-Y$v<7~z]VZmٲe̘1p#JKKx≌z뭷jSEj*wqvڶm̰ 'dM6nܸaÆwqUW]ylʔ)=z/~ـEEE[0QM#"twySLׯ?k׮@#QhV\Fʂ4%^z+W챇o=\5k?d$I*1bĒ%K;?\-t3m& ٵko&j?d$IMWVVjrM7t9礥 M*&~9ҥK?}>c2_b4N: _HrKf+jyyywqk1q /pg)$w$ ~}g~~Pm۶ر#;wL|֭[ryĿܼys⋗%>$۷o/--M||]M6%>b˖- ^vmmWC=\b4/rYYY׮]4O>_O||iii~=%>~Νʼn߱cǶmZbG}t)t%,wb4,XpulٲEήW\֭pnnn⋧n:͛7J||-ZlVZeff&>~__m&>YfmڴIdƍO:=T[j5iҤСCBSHR:uj[Hj޼ysrrr6mv{_VZ%>|pfFFE]t 7t-Tx.&@R[n]^^^C1[hqW^}p@`I_И̙SPPP'x"W :X 3-- .ϧOeYg~uu1,@oӦMwuWfƎ_C :4M'D 4;Nq%LR^L&`h< @# áP2 @..]^L& fL bU0IMM*&)eULHAC ٲeK̓?y~~~֭PhT1!=3AGԺuk%LRY}ߊ+vygdd9UL 4 :bE ͙3, @0f͚D@0҃@ >k׮Y : h4~@0b4 D"k֬ :Hp( :䕕͘1:ԏ^L&`ٲeVڵkWA&f۶m^zinn az2T bRQ Pń4dȐM65o< @0F5dȐ@0T1̙3)''G T |vرcA1b4ݻw:4fA`_ Bp8 P?@rQHFs)(((++ :>\}A`x.&@23f̚5kN:@qqq4]n]A z1F"-[h$'Şf)H/&@_o޼M@~R^L`o (UL&whT1! 2k޼yA`g?+,,:C PńORvv&L ߊVZ*&@УG#@QoeffN81+++ P?سUDP{`ǎAꫯF"+"  wHF?W^jժ.]@III4]vmA z1>}D";w^L& *a@J áP2  M@ط@*P ũb4whT1!x7n :SN90+++ ;$f͚UVVVTT(d b4_}UH/&)C/&\{T1䢊 {b;v_H$2qĠ@0T1رcaÆ())Fk׮ :C ܹ3' @ áP2 Ph4ڼy@#ы bM E ũb$;ULR;$;ULHM'x 233__ [jt۾}>ڢE??,Paw$Hr۶mjժUIIIY&fp@ǎ׭[tɮe˖z1H.O|*&\T1ܹs ot ^$?~|A s>|c۶mht͚5A`b$-[D"h|xA:E͛ht HyyyAb$k b$;@ MT|*&\T1Ѽy JKKcҥHtb$ .𫯾D"AgPVVF[jt^Ld`H$2vؠ'Bʠ@0T1]iii4oD Ś0b @Ћ @SHvPULHM ٳg˖-W^͛7:eeeM81777 P?NR#<t H͛7 :?ͽNv_u$WZZ߶lٲsAgƠ $fAUL b$`۶mA_G"@0҃@ ƏcҥrHYGѴ@0b$wy'L0! HT1ݶmۢ5k4p8 *++PHv/c_e)B T1H5A~w޽UVAѭ[Œ@0T1*&~8@222N :@۶mۚ5kZjթS@cPK|*&\T1_PPm۶XjU$2dHA  />|ʕ+<._</ 6lذOS@QHvj$+4p8 *++xcy䑏>߾MLqq3|ɠ@:GuH.}__PP rss/}4x߃>xԩ ۣG۳gӧ7ln׮]a6s̆СC0`G}԰ c),,l-Z4x_H6xݺup@Y͛7o/R(ɹ˦Nڶm۠skݻw֭۲e˂ ̟?7/\YY ħI, '/.\pŷv[ݯM6 H:QA $̙s9䓋niӦ ULd4X~}$99x_}~7B6h ;//ӧOYYsΝ:uo4m˖-ѣGݿ曠@=Hv}̞=^+Tδ Z˗wyĈ?|O=^ϽqTQHF_|×-[t hom 7ܰsΥK{+W,MO~I'w޼ysk'ѯ\cǎ>llO?}ܸq 8V @r뮻BW\tQ7 :M6B=餓nG.m~+.\|ѣG_uUGuc=L~T-[۰vһw\ٳgZj̘1&LH| ~ްaC۶m,XPQQy?x}kSݸq_/7o^~~ŎO0jεeݻw>}.]Z^^>eʔs=sk'ѿm۶oC9a@T1ݝw &MtQbBۼys(jӦMYŌmݺSN~i%KvZQQQY.gLZTaYżb?ϙ3sΉ/UcsƍZzᇷlR۾cǎ֭[o|1~'s޽o qΝ;v|wٷ4;;jo9VŌ^gz[[|\sapªq$e]eee蟷[oնmۜE[OѣG=N>KVȘć㎋p ^* kn3gܹQn3[1-*--0`@U>$ξ3q:vXu6m:7RyGƎ4(Mk|Ph-|/_tO~wGPPULHM'pB.]#''YQv3jС+kQ1umJvLÇynm/sT߿˖--ZtGB?裏f0`@nn R˖-ѣG(z.fM~Z; IDATq'ڵ?_~Ĉ{Nq$B/&@Sńݻw:f͚J\5,//,Xp9ǞqN2>X~3<8c9 \j)Ip}o֎;Zlٮ]6momcdff?6mҥK?ko1cWzwwۢESN9;ؾ}ʕ+|_zGiӊzxࢋ.ZbŞ8 .›n) @o~q!\z饝:uZdI^bo|{7ܶm?~ܹ{Nm̄ ⋎;uY .۔$TJKK8 o{ܷ1yÆ 9rW_=iҤ+έyw/ .(ξ{ovv{g;\z[D>w}̙3333z>lժU{˛={Uƌ3a„+2??…˗/=zUW];~Yg~h7ݻwVV֞w3nܸ/͛ׯ_wuNo*6lh۶ ***6oǙXV8ꨣ{gԻw>},]|ʔ)Uq H$ P?z1_^XXxWHg}vϞ=322N;#G> U^^[o6lXZZڑG٥K#Fҥ_+B]v=ӷ~>[ogܾ}kv-3??ܸqu)++{o>}?+gΜY$p8cǎŋifq&8ƃѸq9䐴cb*&@k׮]Ad[o?֭?pZhѦMN8=wq>o|ѢE֭;{ѣGO>xҥ|IeeG?hР:,ZtU{}G%%%uNL}('OnڴIdVФ$kcaÆOΝSg@hbbbll u[QQ ťK{1%''+_ d2A؅貨b{nqq{@ N C!ttqT1Q tRRg177:izYH<|˗<<<̙s={ѣNd}}zDp]SSӟYf͚p6j8P @P0D?ѣG@2 rvvnlllպo>AmmmGUŋ%@1U@]{}J][W1W\:?igg'C* z:y?1bXWS%K k׮U_|X-֚tU1z-wccrթѣGEisE-(W_}uɒ%J={ZGAN7s熄Kdl\޳gI&9999997#2*+++##.<<\Wqא:::޸qQZ7C~~~mm:̩S߃*r"BvvvLL3gΨǫUUF+Ո#T J}ZZZ*Hۜ+4?G:{]v544ݻ_1#3: )u`233U5kkÇ2Dx1m w޺ubbb DyКAu===MMM}||A8qℏ#\BĔ ٳgWTT{oN&]rI]lyH} %%tz>=GٳN8ꫯ>ZTt>}lݺuRڇ*&:o1T֮]kbb2hРs^xqȄ\z1ϟ5vժU}Q('OܴiS[>QҕA亩AAAaaaK,?]B+iӦ9rʕQQQF͛7N2eƌm?vQtt_|EG d"@,Z(%%[pYtsÆ : i< >411: o>^xA,X| {1߿O>R /*Jcc~ŅyK tM[n: 0@r?CFY0twܩիYT1*&B8qرcR B={t[VV֣={ybIٵk) Dk!!!EEER ~XTJb/_+u xQC?YP|RJ& jaa{nUc\\\AAA\\StttS]AٱcGppp^/^juք cbb.]jݹsg``!C+++U}?w\̭TTT׷943F.ۯYF|Zׯ_:uGnnn֭ ruuՌ 9suVP Kdz!BMMMxܹk׮)JWWWgg第k׮M>=66V5x…gΜ))):uET&M*..>zY-̜9?=<<׿9ܹ#򚛛ݻwiZZa;w#WWW77ŋcD Rt"{1M6`а}鳠Y~5k_z%{{7x 455oذq͚5Jȑ#W0`@pp̙3 ^mԨQ ..L9K&TWW[XXx{{L:Xkw4sA͘1C *&:tM"U옘ogΜgA+**Fzƍeee&Mrrrrrr7n Ϟ=T*UGfZ///N:USSDSiβȰ WVD6GCUبbyQCG{)u駟TTWW[RRt777Gjeii?×S&]rE5Lw1[455W8qLdJ{SrСk׮ĈOl=XWwUL0tT1i˖-GU(R '''gg秞j+nuuuEEE@@EAAkKGpcS]O~MMM?7tE211\xqnnnss۷333A޽SRRJKKwޭufnݺM81>>077wƍSNT.\]__ojjjeeeaa!2Q`#bKLL,**W0bcc4mڴ#G\2**J{y"_}wy2::Z r?''Gվyfsss__)S̘1CRSS–,Y767ZmmUP(NwГLK@*xbݻw>|4)u…?^,@;8qرc_dR(UUUR@T1 ѼyBBB~W˗b[dBؿA@d Q0@D ݭ[kjj@ NCt"{1e2L&^h\g׮]c<==Ӯ-eeek?>704T1Qk[oPXXyR}}}Nh`b]_pppϞ=@2O.**+Ɍ,Xꪭݹsg``!C+++[O:&.. ..)::ZZO֭[&Ltƌ#׬Y#>Q`ׯSWTT׫֭[ c@6m$u߿#"""vޭ:]j/lmmtҒSٸqw}rʗ_~YϥZOaIII۶m[dIbbmY|ѢE_~OUUUQQHu)..|޽wޝ7o^YYٛoھ}l2ulT؋ .55(44T p=sMMM6lrtt\fMfff3FaM6^7>R2[dZ5=|Wvss5j… 322Խ3g4hь3T gqvv633:0\rgϞeee&Mrrrrrr7n 53FaoܸبRVVVYYYvvvwꚨuwT[[yԩСCU666zJݻyyy7n(Iddŋssso߾bȘ#F婪,b.,u…zSSS+++ Zkmԭ['nܸqԩz?r@ `;VUU%uS(wڻvZA͝;ŋTu%$$DFF&$$ru=MDDKKK֮ZO> ɓ6mu4-Y$..n")ft0ӧO:ujRg [[[nݼyg: NC RйYZZΙ3N @PCG6m$u߿< n*u d ͛7k'>3]snj3sL]s\ȑ#{С{OWohhEtرcźzuϙ3GWٳ?]_\*s֭[WTT1o޼y1]$mll$2gwpp;d]*==***+˧N*ubvZqqq}}A{%&&nڴZU|w\\\|uֵk޼ySQF^?5QvȑYf=ӧOT?Syʕ{utt%BMMMqq^ʜ\.W>fffSʜcpp"[AXb"s_x\ "s###E:u#hs 6lذGkoo/@Dt֭[n6?{1]UL0tT1ܾ}… SrSSSq\ ݻwYA2ׂīz=\FFEUNdԩSu͜9S}Ə?~GhsGЕG 8__ߓ'O1B,:/^﷨#oܸ155UQF\rĉ]sՆGGG~gwwCORg)^Lkz=z+d޽\{~&MLKKkjj$*?3%L@D ]VVVQQ't5={\pK{セ};w.::#--Qte:oٲeÆ 7o޴|ԡ褌7ߜ?m۔J%%LOT $޽N<|Aʎ9W_͘1eƍ}ʕ+_~v%پ}lٲm۶iN,//_hї_~SUUUTTjU`]+xH*|TTT?gdd: -))P366nnnno6:tڵk...111 Dm=XWpmO?7%9.{3gNxxA Йtmĉ񅅅7n:uСCYYYnZbIddŋssso߾zꊊ ͗1"//u!S=a;;;Ad 8ȑ#Zjjj_\\dɒCXBdqՔe˖dÇ'!00Eυ:88l߾]}(սYYYc%-ZtuH]ZϚ5K?Ysbյ0UL0tsvv66 :W_}5zhss{~} ٻwoݫ%88xs΅Tkz͛gff/rݻ, >ܱcǶmA,5󸺺>sݻet[ 7o.--uqq_սhoEu-+߁JyBCC322T-;v011Y`/hnnj422211Q >nllӟP(RRR^}ݰaA\W*~Qn޼ikk+2X-`֬Y۷o߷o_xxx^Lflllee痞޷o | &~Q]tRx½dffyʕ)Sh6N<͛\+..ի{յW^ .O^Ϛ|G?y||UGEDD8q#/aE:uرcK]6&Lh1DF+WڼPjjjFF---E۷/&&f˖- "88ȑ#"HA"##mۦT*c$%%+NNNme֬YFFF[nmss=WQQQ]]-@" :B/u$e ѢE?3z߹\.ׯ 999EA/>ȑ#+V/(>7x7ܹ~u ?#gggAfΜo7=gV]t%~33*X[Ɖgώl\޳gO}ѺEaЩ]~N H` ŝ;w;w6__P|gYYYC DAA@Y[[>TJ[kllTxV[?P|ٞ={:a'N?>o9楗^rssKLL\SSSff_4۟~i] 꺨>: @'^L0t/_.++knn:*11wineeբE&mڴiҤIӧO_`ijjjzzzZZZuΝ'FEE͜9SsXnd2Y7oܰa+2hРk׮mڴnܸqZW>x`YYY^^z#Gϟ_^^޻wo]y4c~W~WSNY?==~{Mݏ?zp=*++OާO^zLLL{{{3<3iii"y5cdggk㓑qIOOϿo_z_hh4׮]kbb2hРs^xQ=zI<`lllܹsmkkk8뻘:)wЕFY0t&SSSKKKLFFF]]]@ݻwxxYv`/&޽{߽{h[tiT󽽽Μ9#u؋ 888\|YB POI UL*&!:uԱcݻ'usϞ=S]vIG\kgϚ?5 3fP(yyyR@T1 ђ%KBBB~Rlhhs}}}>>UUUEEEvQֵBWkÜkݻu-["""ڼ@Gb/&:UR>|xիW5j…ɓ'>>fff\ݻw Gamm}RQQfdd: -))PN['OҦC]v%&&Fj"Z&ɮ\:]̹sZj T%&&F/ Ů]F)u$@ ULkJJJ:zzwZn&N_XXqƩS{:u֭+Vxyy988DFF.^877ۙ/W]]]QQ`aaQPPY1bD^^^Bxӷo.… MMM,,,AU`Ov<ݻw?~|JJJ]]]iiݻKLLY'yA9-gggljj*u$@ 狊~i0AAAaaaK,?kŊÆ ѣÖ r?''666IIIӦM9rʕ+]ϟ?V_|EVV VӧB8yMDjk'8͛7N2eƌZF>CSSӨ[nhB<'O,u`@Μ93|pooӧOKhb0,R 4 Ec\\ҥK%bSNݻwR).\C#A*/_:$cǎelxQ-]4$$ܹsR 7o?x@ H` EEERX[[ϙ3_~Rڇ*&b# d2AJAtnۺu)v㍲`T?\~IxzzٳG}k. 3x1Ξ=knnX. -bA (F}/_Ȥ'$c6S^L@W^L0hT1.kruWEEEJJ{@@@ZZZ}}mcƌ6lŋKKKU;w 2dHrrreez|bbرc r$WWW ݻw999EGG ~6[.((5&&ҥK"--m̘1r~͚5Q(I<'9uԑ#G577~l555;vիŋEoMs};wNtF|IQQј1c؋ *&e%%%ꊋ+//߻wݻw͛WVVo>C 4haaaBתU~dkkK$''o۶m߾} 9r᫯1cƍ+WJ}?yٲe۶mӜX^^hѢ/ǧHծ5Vx-۷[XX"Ž;"""Z  IDAT_2f̘={/^{aNNNQQNVH`Ќ P<|Wvss5j… 322Խ'O}رcRSS–,Y7|u׊+RSS ֣G-"##rNNN5mllM6rȕ+WFEEbccϟ?occ⋬,AjkkWZէOBqM6D:X OG5J+_}wy2::]kڼy)Sf̘tgV(R@6o s[bbɓ\:ΤI8矿Rg ZmmB:tA8Rinn...633:@-.]*It0L&tMT1~T .\ upw{KIfھ}}5E(J~8jԨ7oÄ2/==o߾ ,/_۟}͔)S{1p6-F^rO'OyfAA>׊z޽{^z.\O>zOzcEEg}/\t)""R2LHVjhhl |G}v}.QDDĉ'y~~mܹRڇ*&!:}c***~Rk׮=̈́ Z,))! @Quzʕ6/qAKKKa틉ٲeB>r䈪=66ɓ? v۷oPPcǎ[5k֭[[bqq_)Bddms=WQQQ]]+z7 #t)T1 ѲeBBBΞ=ѣ~ ٨:߿U9bŊ} 8P|oqĉׯWVV ͑}ѬYT-U?ٮdllPUUٮ} 3g,..orgϞ[nH PV^^P(|}};w6_?ǻR_Obk(gєqI;hCôx[~7kS2Yܴ%i4F+~P)KW^_<ǫ^ϣgϞr믿ݘhii9` غu[Ӄ-[ѣGʺ̙3{ .=zӧOo5?r񶶶ӫŪ*q[q]'''Avkx;N,?T`ڮOP?V(RІEFFX~ILm۶q̝;WWW7:::666&&cǎ]ooɓ'+;tPՕnڸq;ӷoׯo۶k׮G?~فo2Վ;Ǝ;a„S7o~~QFiCgddXXX}̙SPP`jj*Ǐkf'SSSSUUU\\|7nٲ9 0Ԝ8~+ 0z贴b__1c\vѣ'NT1~lluVvܹ􊊊,,,Ə_VV_G۷o?u?srww?sLMMܹsu_vttlspqqzaWܹsAu%&&FY6߿_Bk֬۷oppK. b4:uV׮]---o޼)ujԨQǏOMMuww: iK@2dȐSNIhV\L@c999iii_戎Ot"u$@UL@cmذA*//յNcHH… _4ULPk999 @ceeuʕ;>$?@ikk[[[K@[.hI UL*&:_RRRݻ'ua߾}]gg{>=u>c7@}oF H*&:Zxgfff+\/^@<{}[n„ b9pҥ.\شi… sss7m$ߵkWBB VVVG4is~l?,YnV={|7֋-ܵk׳xAA[gg✜A'jʍx,s1@/ĩ £GWRXXhcc#v7=<@ZRж>[dA桊 jw999)))RF'L`9s(EGG)1eʔccW_}ɓ477:t%KMᅴ5=I9(nM񲲲KZXXӧOo۶~¦HS "cQumdd$\LE[@]yyyuCBB.\(I2VPG˽{LLL@aaak׮VZ^x( ,Y?KdܹP(JJJbZt\.;vAh=ڣG A@kd R0fb.&5KKLh?رcvjnnqIAe ӧOrrrkkk ѣ?~׮] ,ŋk籱iʍ.Z~3JKK-Ǐ Y>O?4//_~GsMFsbt+jϞ=nUUU2ĉ &LЫW/AEFF>|PƦ^5v@8::zxxEkjjf͚O: jU1%nTǏwvvܰaիWwyLՇF^5)oڵ}ӳ5$>>NϫW[}||nݺՔk\vm vԩۼyv}ڵcǎׯ@,KVVVn~wS- 3fl6---??SN=x![[[J 4&jb999:thakO[>ssbrDvUUUS[vvv 888888<1̙3=<<<(۷F!qNN"֭YfٲeMLL ZQܽzKqqqNܹn _~ۃGuV(ǎ[j SLٵkWXX툊ھ}m``pձOy>lΜ9ۧM'oܻwK/tT5j?ϒJVs1@u^jasUnn˗d2O h댍\UG K+={T}䰰>}ٹsٳg:uƍC -**j/kkW_}Uɓ'+Ǐƌg?\vdddDDDqqqvkkot_ӧOTWaiiižcƌvѣG'Nb?sܹ֭s;XXX?/ip;w:99)3u%&&FE1RSSU>\\\>|X}SN?Olubܿ΅֬Yӷo`KKK.=CiVX!˿+ {rqƍ?tڵ_}6lw޽;d//ӭ뜜3gΌ5jݺu>>>gϞpqqٴi Ǐ;vo1uT77?cUrss:tʕ+Wo߾}~~~  5Tƌsoy^x?{O,6bZ̔~~~->ӭN>aÆS* gΜ;wnnˎ Mj,@m۷wq\LPk?ӰaÆ?J@zb幺i Yp¬Y>m۶RgІÇ6lXZZYfЖ:@oO ʕ+RPhDyN<`9=f jMT1<զR ?x…fffR@T1@*&!22R$fffF bZ}?|xިbZ_S1TKMMuuu2d'|狹ZDMmTi7O㏓Aן5k}+ UL& jMu355>JKKsK,5kaF|8::VUUJd-[6g~4ULPkU1_/5kHLMM)a46bĈݻw+[Ν;ooKKKܹю;r\.߼y7o,ozvZƭ]s9WC4s1@Y[[+w:O?߿~S U XXXP(TUsTt(++\Րs!攖nݺuƍwiܹxظs UTPܲƎvQWWs9Wx /_^~}>}-Z$ub@[ѣ={DDD\~]AXϯK4h[x/&U۷9sB^z_~*LII)((:DFF;wJ PMe^xO>133kR-[陑!uwBl4ULPk)))r<88Xu7%K矟|['ULPk\l2zbZ+..V(,) d H P&~q)~ 4 UL& j*&g)FiK 8L $3{I&uY H*&5ZjHsΔ0*&)S:u:*&N:QhvRBz Apppطo)NHgg{rּhrrQǎ3f7|:$єRwwGBVpܹ;wHd>3\n: 5RSSSYY΋/2d?>{1cܹs'))^Z>j*S>~:) v-W^Rn޼yРA111 deekԩǎL&ߚ> V1b]hhh^^^VV_ 0`ӦMEEE#G0`@ZZZTTW_}%Ruedd<1ڵkmll._ؓ5֧ Č1ظ[nϴA7xC-//vȑ#۷oߧO''A4x7|͛ǏolpMӭ[3gz{{Kh!447nhD>g) \xqc!ƍR q-EI PqFA,X"UTTt*Z և>cfccvڵkUUUΝ/]deeU]]-o4u5k4RY /((۳gOQQA<==###=,YާOWܾ}gϞ|ӧk;vܹs]t;uT Y|ÇPY7=<cƌ#F\ ƍ=zhEՓAHfƌ999K,: je:tNOO߲eĉC_(•+W|||nt x0GGG+++)SWWW߹s'>>%%%FFFYYYqqqCC6=ShJ4ŋ&&&FFF//ⶑWX+´i/_ܫW'~ ?x嗛{]5w :T $cdddmmmjj*u$@ZOˆvww0a‚ BBB̙#O6777󋏏/((Xt_.]ԬA KHH#""Lallꫯ/++[t\.?}mT_=##Cy+WzxxL2nܸq , swwR}mxƟӧO=ur5ZmddAڰAرcO=~̙s @@knŊ6l:Hb -a^t);;[@-u@W!!! .$ϳhC?l0S EAAAULPk[n6m:ѡC?Pܮwtt|뭷~iPC[~YNbZ+,,T(RbMfmmܭILL|W\]];&a0@}hK8B>|XQQ"CUWWP Ж:@Ʋ+**RPP{͚5+??>޽;))o߾֭0aX[t 6mdffpM6wڕ`oo/B~~~rrѣG'Mܯ_-[K,ySdϞ=|󍵵E"##wU;v8qb߾}C ۷;ХKhAA[ggbeisc#-?/]tܸq:::; 1bAmVVV3g߿Aa.&:裏^{MѣZvذa͋S߿yΟ?؍7:::v}ʥ)}}} {0a N2y}jiiM4 Ю]QFر֭[˗/?uꔍ͘1c~7Ad2YEEEVVVII Nll[Xfن;6}t-->Lj344677:}4ULPkrAH/33Quqq9s̃AiiiƍիW^F]ZZ-vzԠ˳$8pann~ͪ={Rg(;;;ݻgeeݿ_ĸ]J;7,Ptccc5д####""kn@CPffffmmݩS'nff{)ggge+==]ܸw^vv>|/666b7---q<00#===77O9_S[[I [n>|cvv-[rss]]]ţIIIׯ_ׯ_PP *n~ܐ:?~Fڍ'NP?~[nJb :tNOO߲eĉGo߾hee3eʔ;w(++vn 4G}ԧO~ѢE7oܹsrŋSSS+**tuuMLLAhv`c Bddo V}7o\RRl4iRJJoݺqFvo?~\^F UL6#::}„ , 3gPXXXttŖSL066~WO{$o>害޽{%t3vZAULPk7n:SMMMeee;/^xȐ!-r;3@QfaaammRrD7o4hkLLLEEnkkjժ#Fمeee_|񅛛ۀ6mTTT9rEEEyyy}Wb^zM:Uuedd<1ڵkmll._|b朜;XZZs` Č1ظ[nWn.x=:ދ f߿޽{fCwNJJ۷u&L .]z…M6-\077wӦMb]v%$$ leeuI&9;;o˖-?Ò%K~f%ٳg7|cmmhѢ]v?}ǎ'Nطoߐ!C;|ÇF즥%nzxx)'jkkWWWϦ:I}AAA5Q6޾}{֭Çwtt޲eKnnxΝ;ć陔t~տ&ެGRB/u$@ZHH\.olIFC[l8qhRRRbb۷tttL^]]}ΝÖeee^v 4G}ԧO~ѢE7oܹs[홚cǎMHHqFo֬ŋ&&&FFF7G>> @IHHe60goLD\LPkߞ^eP4֠AݻץK}ب|j/ذ h+b_5%%R=:|p/;vXsϟ,ڵk{5k~ zW_}o>kkk ѣ?~׮] ,ŋk籱y`jjhѢƎ~ᇕٟ~i^^^~n?܋660hC;&gΜ)u$@@Yƨ5kW\\>ys疗EKKKGGGRر+7o%:pB;;;}}}`A\ܹnRYeH&=ţ>}zNNNBBBGe2KllܹsG PCͽhcêIWK.TSKKԩSy&6lԩS=ZXrhn޼P(ʤf͚ ;vl nw^ EGG:ts*%$$m߾].{xx$''P(;6eALk׮'x^z=1vcOg=Q KJJT?7MaFk/j՟<M٣GANǏTqǏǻ<1@76`cm}&0UL@c 8y bŊ&&&uZd2ٶmƍ0w\]]ؘ;66ݻw'O\^^lСC_hnڸq;ӷoׯo۶k׮GnpCgdd(g.&''ϙ3Դ<?} \4iҨQosٍ7~S?kjj/_q-[47 ^aU OLL<{l5*''GOOO Hhٲe}]&26UC,=:--w̘1׮];zĉUnݺU;w~g== Ǘ}::: sN___'''e栠.]ĨY;FjjjݜN>aÆS\~7//n\fN߾}---/]T{&P660ZsY[[?f@XT͛7ʺv+u@gkk{ bQ92v7xRge@uUŋ$T1J\]]4,\Pc:w>śJhV^I RRRnݺ%ur+u$@@YR 2BqM &M$322@롊 jƍ \ 4þ}{Ҁfd H P&~q)~ -/^>>22{С$-\и$ , zj2c 9V-~˗/ 2=vXժUPY؈0*&`5kh 7FFF޽{7&&޽{cƌIOO4i|hݺuwnԨ… +O~ŋ׬Ysĉɋ/Yfǎ-[$)===66c߾} lܸiӦH~gQQQk֬)~ztt/e˖m6jw8p+"-2uFFԩS/^/I_=p@''gp j k1@Ѩbkƌ 5m۶ӧI&666~SSS nxzz~۷o7nMٯ_?)I[oՠA[[=zwǎN2xFY[[4hϞ=%`eeչs[n͚5ĉ]vpBnnn_v$IYYY۶m>|3_8P888ԩSGt j[n-:Μ9 :}$I͛7_899=z̙3zҥˣGnM4_?>Of͚/jժ~zֶEZ􌏏,qƑ#Gn޼9///&&ӳ]vCepT T1@֭coo/:Zjp'?~\~q޽Ď;lٲf͚{_r7kkkENNΐ!C4Ǔo\hcc˚o߾bŊ;$&&._<99988ĩ_{իڵkڵb>ÅR P9ٽsILL<~ `<{;w޾}{ԩ&L8~^sۋÌjժM6'O,^4|IÆ ɓ'^:$$JS9r޼y'Nxw % Pi,[,44o߾}QddرcNlٲ-Z8::r޼ysssk׮ݑ#GYVE[۷6mڐ!C~ҥZj$ӧ͛7m֧O*UP|C^tgϞj*/J… nj֬S;EEEӧnݺnݺ-aɎ?>xv}7PX DQQQaaaD)VX׿Utdggt4A*&(Z>}joA@$77k~;x<,SRSSu:ݓ'ODh/_(pZLP4yk@X2hT1e@Ѩb_ԩSGtiZ{{{ATnIII?W׮]EgʀhT15}wYtI?{uԩUF9r$I9994l066CYYYeB"9bĈ'Ni7&1lذGk*jϞ=Bj֬Yߍ-;w,z*2[ *Ϗ=/(hvjM4ڷo_ǎcbb~zꅅ?/F3n8ҠA1c899i c3f>|8??Ĉ)S׷p#G/Iғ'O6lвe5kHd*F'O6ƚsv[*vEE3 cƌѣǶm 6ڎ7gϞr$IÆ SK.})4U*.^/IRIޓ'O^f͹sZl) ի;tp-wwwWQ#FX~;gν-UU̙3gΝgϞ5'p8|A͒l߾HϤ$Vonӧϭ[͙+222%%%&&Ʀ俧7kB=++k...~~~iӦqׯ7g3C:;;ϙ3gyyyYZ1$I:t:t `q-I݋LNN$)88p6))-[l۶mvruu-9S,Yܹs+V-Zd,z{{OW^}ժUܮ8.IRxx5k~*3È#+s,Umҥ˄   UL%pB\\ܭ[^nnn%qtt,ҳ~$9rp,SNݱcGÆ Mt3g#G={۱ݺu3ve{z-__kNtC CJdcc5o޼3ln *?SV0@t D , {=ڵ$/b4R}Ɲ;w7m\bEHH0L^J"纸Ku5CCClٲ~GJnݺyb֭%IZzx懔/**ʜaKsv[Pt7o%@!tjۧVEg򈊊㏋W^HJZre^8n8e˖mݺuƍ72dsrrvvv*\J*feÆ 5k֡Cvڕ~ڵkGcccǎ{5jL!v&?\%ޖ9sܹٳp3=%ZLPdN/:;JԥKG>x_~]vMIIٷo-.nzڵ+V8sΕEEE̜9رc\zu~ZnmވW^yeƍOL!zcs-sUmINN~̌ ?%MLLLHHhܸ,*ԻᄏyM6΂/.:۷o׮ݱcDgPOzٳ?(: P( &i (˗/)PIQEbk4:uRRSS4FFFN8QH `rjD@J4mڴiӦNQ<<<_.:EKF91b|...PAX vy^$:Jt(ׯ_޷o @Pxi9sfѫV(JwMAs5ZhD@JgϢ&//OӥT1@ju^^ T*I  `#:NG `iX &/bZL% F`Q*&`6mh֭+:aZ *7~@%EO5iҤI&N@$[[[)*&(իW% C d%:*&ݼyStܸqCVwIt`$IR UL%ZhQXX޽{E L~~NKNNbrj___A)yFt@ N ZLP.K IDATKZL% E`Q*&`ɚ4ihի':aԩjmlsiРQZn-:P6*#vtttppx,T^ղ`iX @YDAPPK.ݸqCt¤ۋT1hѢEaaa{0z^]~]t u}ZݺukAP6J%pssR$I2 k1@O-O0 dT1@b,;rQ,Y&M4MzD L5Z b;P;wԮ]VZ颳PqX UzuV`,k1(?bPJtҥ7n@LZꫯT1hɒ%aaaw0z^]~]t u-ZݱcGA*J$ :MEGGʼn ULP|N,:ӣG^z @P^0a-&Q墊 L6JEdM4h40UVjVVEX"\T1K6~NjN@$+++)*&(Vw7e7aP.V`,;P*&]t)..ƍ&;;[V7kLt /VZmٲyF8{y白ǏܹvZZ5__|$}0ҥKv%:azN~ *7 IJ(\:NV\LҶm[)fܹ&M_k׮wٽ{NjQ!wi„ 䒃\~Pt)))fXti̓7nܘ+IRddd|||ddСC8_*… %v9sԫW]vϟ7gggoڴ)$$iӦ/$IK,i߾ǝ=z$I… O<)geemذATZu XO$iƍ:urss[~jB$IڿFFFn999)))z*U6lغukߥy z왖vСa#:Te)22ݻ1113fLzzI/_oM6ߖ/|}}Kɑ#GZرcӧOxŋk֬9qŋwv޼yNNN!??؞ C޽g̘a0rrr:$yW7md0jժuO/<~iwݻׯ9󆅅EEE{N6-$$dΜ9 6LJJ2 oR]z`ݻw/>2*ѣ%IZj y$I/G8p @ٰ,(,k1Ϝ9 :}tVVVlٲbŊݻwٳyێ;gIOOիw.]=z(IRDDĦMz?OQxKUs9wz;wܶm[:u'ojb^V[~}yǏ/Ydg:tkv~W^qttT]z˸\bi4U*{{{V{EAe@TlժÙ3g%I:qD``$I666zرcG޽{Z61JJJJ$-[Y={6mZ=z56l2dHǎԩĀn \`ADDD||yׯ&˳y$If͒$SN5jX`2?7o4q!Ǐ/:T*ZLPFiXs:ٽsILL<~  jӦɓ' bŊ`wuҥ999~nkk>a„Ǐ;wl߾xwYpZ|L~'.((pBZZ9ݜ;p:88T^Zj/ʕ+jժ1?NNN$iNNNW^˖ K\r߿PRI.[,44o߾}QddرcÇ_tVZ߾}ݻwO_ %_:;;m74h}޼ysssk׮ݑ#G"""ߡC 8fTTԻ:Ç4ށӧ׮][V:ujʕ/$44TuV6{lFޢE^z}GSN Tw9SN68T =͛GGGr>|xرϟ7sc(ӧW^8rHY2 @Q[lٺu/:HEݻz-AX:`RSS9bddĉIק֯_b{6/.%''{zzS!._g^27NLLF@Jոq"cƌ/W\ @|[[[>>PO? n޼yݺu wxO?4|??:|۶m$IR?|Zj[$`֭y@@租~}vy] 5jTxF]p*&@%v̙ۛ萝 :}tVVVwܹm۶:uɓr^zy{{{{{wѣG$i˸(_T1*WWcǎ֡UVgΜߞ8q"00Iݻw߸qq$lٲf͚{_$կ_?--7o,R UL%JHHKII1f|Ç .\Phggo̙3'11˗/0`$I/_>x`nnCիU&Imxx ?ܹ}vy+Wʕ+y P<F@V\?gTTԻ:ÇE:,[,44o߾}Qddرc%IΞ>}zڵjSV\)w7o^xxyڵkw=44TuԩS!!!L~NPT׳h޽cǎ֭ۊ+DgP>e˖-]tܸqH$͛GGGwQÇ;*Jt4IHHPT7~jO77̌ WW tĉk{e`#:T=t颃deegrsѢE1%Lxyykf3SWZ#(((((Ht QKȒ"x뭷.]*6~&g`oo?uoРA.\š EXYYկ__~]~} xÇ[liٲΝ;Wk1*&(UL5nX^2vvv3f̐_۷gnVK1H_b}wΠA[Y@9tE;v8wܿ/BRT1@=z\vmYrJ߿\$)++ɓ'2TAAe(I=zW.C?|_umAAA? ULJ`ʔ)Ud}q %IRfffy}].CIQ^CeggP!33\={9sD@@ݺuD8::ٕPVVVժU+$IrrrRJ emm]jrJ$ggg[[rǹ~}J<ԦMٳgwޝoX&t .,vvv2$IUbwpp($Irss+e(JZ.C%[hQ=$$d `-&%$$zzz駟zUEsӧڶm{ݓ'O֨QCDF%/E?񵿿LLٳg|뛓t:]AADkǎjzʔ)rwSNIwߝ?g[Q`^LPt;wܹs}}}g͚5h kkkqP\‹2@0vXsꗬX,\T1x)ӓ*&bQ墊 Xƍk4@cǎԮ][t*ULP.%3f̘1cD b/P޹sťVZPqbP+?޽{:ujժh9"IRNN$ 6-PVVViS_V;::}/_̚5TSwy"N>>&$3Y}' C~ǎ3Vg̘2s=)&>&aYqرѣG.(Abbbrrrƍׯ/: aҎ9RNa̘1=zضmܲa[[qYn5$:??ذajzҥ%Nm0FŸ6F͚53t*{{{IT*۰afϞwޑ#Gʝz:ܺue0Fh~'c-[R_~VJII}C&L?GU^=((h֭7n޽{͙y-bĈׯ߱cGwE&=//>YYYׯwqq31?U|֭KIIy}'4_ ;DDD|>)cc_Z{Xˁ*&(͛jٳEbE8BdI 7o:e˶m۶k.WW㄄o,YRKdN*eȐ!_~qNNwpI׬YSMM1bĺuz_ԝN;wC3˹$1*~hɒ%իW_jnggg|X~;~xyL5sL{s}||ڵk'Iu:ݡCL_H>ZQٳ:vhzsyH3>5di_3?&BVR 3ؔvLhΥ==^JT1@b`JbT+W޽{G?#""e˖ۗ67xcȐ!)Ľ[U*ի80`&'';vǜT!??ǿ}Jk׮cǎEGG)LTb~ӧ}" o߾QFAv޽'O;=2g3;hРUVݺu+66?뭷~VsҥmK?lذYf["^oOPv֭ɓ'9sѣG 3f̨SN.]L_u҄"lO b1}J}`0L:W^h4z4v*󹁁۶m;uTV>쳡C%AAA=zxqi̜9رcErS2GG8vڽ{olmmM_u3iB}'1ؘ XK3Ted@EZt?%KRZ~a"""֭[': P6Jѳgjժ@ UZ5JEKMM .9qD!yLȴ3W庫/o*&X4ׯNaL30`(~)С%LTF*+33޽{իWx>lРݻw*qk1@\]]. W_}e,aX X P deeS%`-&@%rʀO>%,k1ʕ+III50_\ۨQ#YwՆ NT+P谰A**J𜜜pgg琐AjJSUV}ZA=C*m'ѣݻ+cҥO?TM 2WWWZ,uRꫯyQQѼy:~]F#Bll#G.]:yde˖8EEE~~~U ]6&&&!!aW'Hl Ӄݻw^q֬Y>  իӾ}Ξ=[1.`pss36lX] _۷o߾)47o4Rbnnn|ѯ_:MUYik#\תPVV6mڴ7ZYYtE>FBo|ր<nѩ=zjœ/rʔ)?y^y޽{AhٲODDĕ+W9s굿Ç}qm:NUYi{9]BqqNINN׺-[|7nXVVVXX{nn̙m۶ׯߛo9yGFFN2%22ѣqqqݻwXpommm]tٲe;vTTYYY7o6>} ETUS* 2dҥӦMﺟ|I6m 4a„ E@._ju4qsΥ_,zO?6ɪUrssr흔$uRzV-++:&̸MPHzVVF~;|}}%.&ׇ~R#uhW_}fӦMQQQƍ: juMV[\\,u ) 0a„ N& _  c/&dqGY/)suuUR 2{{{؋ E0eoVFFF``AH^TlR #jsǏo_Tuww߹su~~/8~>M{1@?;;;e0---82..SNuggŋ:>>_~Bˋx2b|)ʶmJ@3׳g-[5v̘1wٲeKϞ=lSZZ矏9w6lsNku:ƍ<==w#F{ɃtĉvڕT9}M6߿%113;vŮY˫G/_ "ڵkO>]%+%%%۷oWڵ{饗~7Abbbzaee{nHůKhN؋ lkƌO~M6{ʔ)#F,00u֕C~g zݺu#un۶믿V*-NHHm#G,]tU&3zW\9|SӃݻw.2x {1-OOϸS>qd@@QvtիWw500}GyqRR w^Pڇ߿ժU={:tܹs+h 0qDc߸ò$99y8suݺu377 :x={DEEyyy?%KKK___??ԧ˗/gffIT*U}8p񅽽Jx[XX}ƍq9;;;;;ܻwŋu---0`Ϝ9SqAUd ۹sGRRR=<<3}*k|aggwڵr%;;[ 2Çi߾}gϞ}~ *gt1(11{Ϟ=R k׮iRЯ_:q#ff~,,,z}ݧ0`'*,++6mZ>ydAANf.&ׂ T*վ}YZZN2e'O7oܻwok[h1f̘/]FE``Ǐ/׮]+..tVVV999 [" _7njݓ:BbH+22rʔ)666G{M,X>gΜF\paرvvvvO5} .qS~G!!!vvv111C Yti* Q?ݻwڵY4_-[&u#GJIyy֭[G%uH _7a^L&?ڵo!uHBZLJR...R ]vvY Hlll{b|LӧO.u  t:#@.x.&׍7ݻױc6mHCIgϞ_}U#,sN׀@@._'uR QTG:|844W^NNN;{lڵkΝW^UҢ EG@c:sŝ;w._`0HFիZL ,ܹSd@FSۺsΝ;?;wM6 "--W_5JOOop0 exa܄L{1ȟ`xQ}/^>**J𜜜pgg琐A=a IDATjJU[~NqF777OO;v}ӦMwqqILLƳ[1Y>|xQFSCpppHKKsppHOO rww޽{ 5o B6lXZZW0b|LYhhhFFFppAHSNJ^:ܭ[7ss󠠠V8qw㤤01**j޽,==}ʕNNNÇ2eJ Ńrrr^zcjJWZճgϡCΝ;799^bb %%%ӧOqdYYYZZڪU\\\ju?XZZ8Cm~nݺU٭[_~^"gt1@vڥh*ߧY߾}/]V^^n|[7n7޽{/^|844W^NNN;{l36L899UٵkWf.&ȗRlժA4s7o4Rbnnn|ѯ_:u׿VZeggߞ:ux?{Wlmm8XFLZ "??⹘eeeӦMS'O,((]Z90''k׮U^իUM]LS7zG]zɗudii9eʔml6hb̘1/^} .`6m[`Axx9sj\W\HHȅ Ǝkgg'2O>iӦ͠A&Ld}zRg>> ^7==뺺6x˗/7x]3nzlҤI}Q>}jP(|W̺˺Mw]@؋ uV#i<~^f?xOiS>|Jђ'ɺh$YN$P]L/OlФiF7&%%%%%>ۍQ̙3+UKޒ%K$YWT]jR)ɺhM.&&ǀmFGG/Y^4hwVVx^b|LRTlL5͛o)B+Vk׎^&ySpe>}?wRg2RXX77_ *,,|𡃃ß'),,\fYxb l?>>>رcR.&@u3g&%%Irj333ZAHi**55U 46r{{{رC tMV[\\,u]L////JUPP u B!`:.&WAAV-//:.&ȗqq0A, _t10qt1&.&]L)JZT*@JWh4RЄ 4QRԊS6uԩSJN؋ uFcoo/ur/R ^L/'''#~mʕIIIz>77ODs^L&ܹscǎիמ={ZhdɒJ x^؋ kSSSz}˖-Ν`;J AӉ9?}EΦ4iN) e˖Ԯ^Z600P6))Iv"YYY"۷-**^777( PUnn?|!crƌ-rppS^kp-].H`T'3~e)M@6bFb kkcǎk:| @GDDGGG;vlܸq2^Lɢ E0eJRV+Jv-Yŋ~۶m;|r@h sss1cƐ!Cԏ?luС֭[۷: }ƍ8f]LǏw\,4b.&fffj4RddJھ}Ahlt1h׮]۶m:)i;wHFMRݿ_ 4* j[RRb0P(A^L/WƯ/=ztΝjѣGA(++S5--S%%%5ίj,Xзo֭[sɒ%ozY^^P({9;;i-::bwimFY%ү*&.&WÆ kӦMJJʡCt흒ҲePO?]\ɕ+W\\\fϞݺu?~~~ݻoܸ_('=znݺO?ܹsAXxql=z Ѐ`4 ,jժUYYYiii˖-G nݺ/55[o7V}]n]G%·~kaQG޽kccsȑCV9Z1w}7bĈݻsU P)B1rHOOϨ 4ivڶm[ppp;woJ,4*b|}/f~~F0aBosrrVxx+WRRRjla Ю]#GΝ;w֭W\˜/_r\Pm4 $gddL\J%-L uF?# A|6??6mJNN>pȰ-[T*Z&>q#FQLLLpvvP` T*IGV>h|۵kWڴ%K~wN:uAM8Ν; nݻÌ[nm\gDNǏ8 A׮]U*V>W_uԩw"999ȑ#\>cƌ+~w/޽{ Sm۶u{{{O<hZb@sP(6o7;vٳvڴiS˖-ku֘1cM\VIE+ׯ/Z(;;޽{߹sgA233lr) ??}ݹs̙3SN=~)r?I@$ ̈́ϱc޽;q_ʕ+&M)IJJ[_׿~ܹرcǗڵRww䬬[.$$dŊ*//3g w}/K>}  ~Jʑ>\[`@h@J*O?:MQl ?(ŋgڵ-: _*h9>>ĉR.&ȗFj %%%k֬9}]й?UO<3gݻW @XHwYz͛> 'wpp{P/t1@.o,++~ / x؋ 0Yt1@w1߿nݺ[n VWX)YDV+rVT̬Bxj;k0DxP(Ej׮]+R+7 fݲeHHmzzHkkժէ~U[-fo3f̰:Mx@?~laaann^^^^ZZiӦ߼yS^{-""/u:Yϩ%Z9/rvƌ2 ˖- MNNr !R[cF533f@䱬OSP(zȴ"Vzk-{o<M {1@4Myyy||ի4hЊ+F]}.۷oTz{{7v̙"gE bڵ"^BػwH`?*b?b"m?JհuAnpI&V%K4V8Zq"}'C.&ȔBP*?ۍ--Z?W^q;w7tnlmmVK3g66::ے\˗/'?\W=THdW}"'k0AQ'N`kk;ww}ں򘧹+,;ʢ{P@&xǏ;vl̘1o^bܹs^Z1F/d :tٓ&MMJ̙3wx233榾׫T͛7KF'''yA||%4Q{NLL:)t:V+~xg˂ 2UZZR[YOOC8qb_I,ϕ&BzVۺuk1|MEqd>bL]L).&dqGY)sqqQ*J 4o޼bLLɓ'O,u  0Mt1@ڶmhx233S*R@3fxxxH9+ ˗/KbccU*7bQRRwBBAHIiZN'u]L"J5h ( Ax.YHPǏk{I^L)  `؋ 0Yt1@bLw 8gggZ*uR3gΟgkkk܋ի]tߥ@b/&Tǎ5qb3AK.IT*ڵk@c GIII R ?C޾}[ 46 S*jĈRQ(  ,٣GZ-ZL]L)cҸ3f[[[KFd.& 0M<d.&`✝jA (x ӥKwޭ[/JFEdѣGW\ttt: .&yṘ.&y @^b S