gH]kDwP~trueSpace7.51[VS_O93Y*I Clinton Reese, RUR`d8pM*#ͺOvvPNG  IHDR`Jx IDATxĽͯ}Y{s{YYYYՕ]]YW*ٲ ! W޻;b+|osП|kG?ޟӿ f ""faaRJ,RZ9#EÝDm23ڜ"BD&l6E]D"(:̌Ðg^U r7-5ݽ6,6AnDD0;1f>{wwAADW3ucq,^ "`JEK_o==gmIv r%'7RID,;%1j!&,ț_031{H7+i)dsH)L 3mtq(&S-5"Dt,xDFnjY=prE22Tdf9#vm3? bUƽ$a^.\5E׿MB1qɆQ>"X-"Q8Y488KyGPD+dCF`C6'{P01PD6yxpylxjRp+ehsx+#,13jRDEA!*6}2\E0/MD091"T'\uNrXY"R#w:)_"o_*" Rf.y;".,J"8HRDD3Cf3k&֏+'SU(/ID@8JE?pDوM7z_#ș݌:u?\j! mMX|<#AhQeҶp'NYFas 5КYJXÈhqsCNJs1˥C rS*,Y 01qp2SWؐw&U ŒUӒ؁M)eՓHfH-]ל\3AaV<98I%J @VN?@#jD$L0E cEfW:J.r1'g6caa,,PD{z`S~< A_/s2|igxKZzRJ"".infZkKnEM nc?<ErȈL@u8吨!+䶈-4(؆m/("b.pAipa&?!7r-GE-3Rg3y,|1ErŢ^GH'R*Y79X9`ʾ3 $ʄNYĒ*H.Հ,!]7 .U`UpsRUsDh?{qirߘVFևDfJ*ϦZYFg-ƀn&ZĽ0yd6%K/lTJK T Vh,$DLn#J2`xMr$~\3 *YD.. B8̓9d~ r2utjhD"1IoE#pD=ܐ^&H3k< u#aG2hJ)!`܍EzAW d4Q_~;PVPxR&"mOo}VJٶ֖7o'ye|*ZftNmf("*6GDh@\?2Ot딨KFnf49eXL.KBǝW-/6NfG0˜)ȦHlPy)E #"C,X8Hk}LR THRsufh؄,>!~R"@ ف CD$cUn$`LH/]YW7_ojq=|t37~b*W9(}_wV_JpOO(OٛVp질m9F?K,:΃EjnFL,Exc^/J˅yƒd~PL\M!$Ađ̠3&yYp=d}9h)9'?ogmn3x]FD="ӓ~o|iRjZ/QֈV Z¼r[c 5A5D5YWO,RKƔ}J1/`;;ifnWw ٻ̦$2<6hquMaaff" 7 ʚgK,ʄ C\Z^(DSB! 315pOYr",% F'QY=գBD<.FD5[nn_(zdNyFsX)bG??{oa&s &*m9P"}mGk)LJiK EhDc٧1AݽEDmnlhp5Exp̆{0;CRŅ%(g_A Zh 1m׆q\$Rbet4,Mdd2 (&Z R%d B|D]2 +ս"\M2# ,>G6FqY2] QN g^K֚ Hh"O%B"_lP}΢O~jڪ6kXp6&ֆmM_xq-m Ѣ؜ᆞ <1w9ݭ0 ٤pI?lAZJx 8Dp6p`N0 WxҺ*ssZaULYzHȫ*- %1K0e;QMaVш륃"5̌(s`t,A\Tހb,",)~Hto\$rAYgQO^["-_Zor \`ۤas(*vxs/D[xi«9WW6`B˃&>h"nd$!¯N$nKTxmhꄞHay"w'($Hι2Fd9D/\1K)sOX?l(Lڪms 8=K o~mZ|T4LDs fAWG3Ku֕T O [ eHfk~UFR ]kyӝGt3X$+'U]::evTd~V).EPT(ck5m_tN G1n<`4e&Qޤ &dWOJ j2Zhvy%h&QH@aF|]¨H>'T<բ_q/)rxYĬR@. "~~˿9T n bomj-Rp#(ךl]f>2X?aBsFĜfK#9V#MCM IʙR,4wQ[X>R %},e%=$"8n&KwCvtr?%d/.HL$>%ϯq"j[_잊j c[1K.1|ZfUuEeuߙefjDdzR7>{g-ZρFJZ 3)!h%)܌xdpGbƥ(pKwW|9 /s`w--ՈAJZW^\uvYnNG@ 4TG@gZ-u`É_@N7'S16ѥSf6ѥ\CT1tgch)ul{)n>z9]C}@`_~oO?ՒM4RJJ2K6zZkwLZ3k)"<#4gwbFj)7%fd{1!NnՓ~f F_"twU:Nů'AqZ0}5HJ.bV _) j*C7.1#>eGi,3R5 0w%Oh)afs": &ZD&^87Ǒ$TJeaKۘ&VZ/}_`fۋƋ1H;$ܶEjI̥,R' n/lcPDw9AԶmu57ѥfd9DR j)VT6Y2/s5?q)LPSCDn"kґ] ׯ*O,cwÝSuf౔/X"x# Bٜ.JD$j-"G8*d(-оيNmaHv&IuDu,uRF?m-MT}ΤBHi( ,wCC.lxm maڜfS\JⲖR Lcd0 EJs1rϓ@AD?VdbcP'UQsBCJ[ [ӑ^&T$"iv"Y%-@jU^ +9Gfd҃@vgaMF^ŇSx"9cEg%)֍眝>N~MaIִ?ٔ{n$ꖈn[~,2'EhRE1{ZKmn6Xٻk6="h>Tnvw?շ{ۄ#q$^@ϥ e 0ñY&ΩFZ ^JT]D1(ChmfƐ4MKCT"fLAq/1E8{0^U1+__Y*x諫Ɯ%ܡD }s=-tp21f6gt8䓿$>'MK%Q *eC,Lb#&Zw3+!(ͮlk_%8pMف/ FW8kb8rh$ꐜxmOX Q "Z+O׺с)% Y6fzBFؔa<6+TU"H4)k<,37tM7\4\4dԦmK]]%7&TdkREm '(a8nLeeofdeޏS0-h( IDAT.$ "ZS 2-E.IQא^rC]$UŮ ௬}Z$s0Pl j0E+&wYm 7tWsa2GZz6dA T2e݉ ԺfQ )kQ@\g(eiJmn-kk Dn;t6AiyQw˟{+nEq.u3N6A`_93X Za g"g NŅ }7U T\+I}AAmZj`aA@_zz/Q 3[&rSZ)`ʢ *K &'Ada.Rm9zpT]"s0KUAdImۈer(ҙ󠈶De>P-mQ8zu۵qC ҇t3tί@w^/I)X h)Xiۓ~k/BZ,'(WD`JRKx*PQ|+Ba]F8r+JmpIg?E͡ms3q9ElfJ#,?>9:<Zۘt(bJ?%#͍yTT/?WyйȮ,sЬpR <U4N觛k)n٘#Ƈm RqPmq^VZ~2KoL }-? h2OOh,#T ٶ32m8-L9z7;^>IU0 I,9-XxYjcHڊ:!֖ZȬ`A[|bf68 \<#<t3'RJ lFLnfsNWFDXD>fG?p[ʥTR۞"+&+\zL<=Vk-޳ԚjK xXdGJi9`Zm )?/~<`a Ey1 Fu.f-w ^pSI9\_gFn84PA6}LmUK ٓGbwA7S 8=<&OHʌfƴ69{8&? s4= {.hF *l'*a 6F#cf8pb s,ֽ."f?#nL |ӻ_:HwjУxX@`bυ{OsћR31SQ{ԳMy<[&Mk(ٶ?>w"¢-"h):79h1BEk1~*Fʶ$Zh]csZ3ݧAZ " !y/:"eۄesQj Q[6f ̃im9zasԶ%s#˅*<_5hf 5*Zop¯ð'e֩c&g݌w(%StEVvx,.)(ΒYZVmD"e3+ٯ@irBrSAi^rY*F,kPɠ+5x%OLֺ8Ox??Q<3.޽y%se ɊN`sonuXjH6Rj5诵R!V-TbZvr_GV¹^ҩ} l6z?@jüs".bɳ(}a˥Hk0ɞ{emzRç 6^gt&aU!FwO|F9W]/]ko栴uخXJ$7R aD$&\fֺ?SkKX&۵ $1 (dwW" yVlg^_4 ŁA36-z1LFR+mcQ9΃%RRL6]nwmAOiԍ"8/%̦[*CF A[w>@`5',֦;^29D$Z(SmDo!MWt7ZdZ*ԭޗ*WٶOh0Q :"2qP(ҩ:s\,QEWHsx&D V˼m3XVLQ&D,<~/~}lO9n81h ?{;jlD0dZKaV7诎\dn00FH)UyR )ǫDx8l*>Emcx<{m/u#B)l ivsGm|:"*>ơKsHTs<97Ɨ yRбHcXt=dD\s\7͉/ӆ|osvw2{k `.E~cfbڶPUFL#|LTۖN8W@d | W ů| 0HLVIx &~Q?V^Lۘx6ݕZyi[k}P+,"F:,RtBB[Y$sҏB ys(.ќ/P f6!d6ى7 4~Cy"ڶ#ß%'AWໟ&E& b)oXP`B%Z]94U\5M(DDPGai@Rc'Y1st \{m%fYiSKj݉hIQH棟,~ҧfñv;Zvc~ms`s&nOUqw0te`q-$,ܴ6wW\{k5 Ϧ8C x6c"`3):Pm^oy+=\n-꽮yėVu:$8uop5f%amU ò7b~[]Kcc<[CJD9,QUxVoGerj ims 8Z*}w0>ÌiodR/UTy` dvt:-G$DE A9_GQP?(uZejO~"8<½ VqM#@ \S~Dyz. luv:tANJ-<<)_seϪ~6 Evr aKVgj/뉊Ad/')UKK9R&£wnlc?c86Z(`"6R-^sX'6eu_ jmRGrkU`Hks6r-B"c}>{ 81rWj>7RJDDh2e+WWvq6)e~DVUT LsN۾g +C\r7Ȧ2.Kԋe b}WG<±sn<9+2 4Y).?YokX/8^ xp`;nA?Tǃ꾗 Mk$E<{mm1Ǻя;fePf?M vhiZJ?Ǻ!r^!F?' i現o|7UPhu>DPRacbFv+5 %M3ED^MԢ@ E| b:5h_g6ز\`MR|y:gu@U*sq+.:iEg?nZkxz65 3)k< 26 bvg:(=OC;wrm$g?v{x4·g2{m=Ūx/}?&ߘh~>^e{~ VSݞP!ӳ2~[Bf⧈;EH ^/~{_o_o?F rG@B==`5Fp@AaӐ&6Zn_1fnD*d]"xhm??wVמTB]]Pc;Q~x]8 ,RԦ~c`@:OhM]S|/wa\K3jFe6AZoL1:l[6ynO܏рnApGж?aF?Rv{1z<"m{iG?y|wE_5l1ڰhiN/Q΁r"\A (WP"5*DxV_d7b+Q<'}#󙯞X88:uСgbfHKsrUm{PH6~#=;,3ۍ?_xo/(<ĄWh"2#%R61cGO.U(lE DŢhO98" ע x@9t9&#n?sZbmA$繼1Snu>pK" E:S"Vl=8J rJVxNn.9-n@fnXz{T}߶9',kTnϥO Du=8O궗Zclj ՑIm;HQm;V~<\E"Kį`|:Pd\P)aqyAb_W6JeCk}7?wȆE=¼ Ha[DVK:sEܘ"sBD3l %sYMs#g˱7Li+y~2TU)CWqd!w~܉uyr?=3<Ͷu1q_"b{znۍt~_F?J۶,h }y!ȨnOеNjG?Gi[vLZǝE%R[0J?[ZZ!zTZ[02,D6k S;a5@zE-lxh ĥZ/m2ύ[F궉T?׿:T6^riFnAq@Imqq.2Σ ۾==EyA~{zbT-3xݞ?c2mmo3~OޏoG*ޛ/kva18""1IDd$v4ܾnb= p iK  D+1Mfт#9{d#6nZ+;"? wX~TӁnsN4Un79D)/}{,x0y@n c3 UsSP{s5ھy J%ɾҶq3 qsB1󜣛Ymvǜ3~D  %x]ha9!\胊VTq3,v̀8i|*"JլȽ&,?;N(ZEi"^anxv LK6f1fE鐥mOOHRmnp){6ͰʁᡓT訜u?g""PֳICwnO?v?L\]UýF%msgnO4 809@mYmGr9vb~C@d Fg4,X9UAr9 Q>xb`=(LSEU+Y0hI)xµT c1sNz;1 w;Soq<fx9Ji3Tq7-*'g5sFWU]~1Kw?_گ 'gY_lKv3׿RT$UYmɶd ] IDAT%FL1# 6XwMڷVKDۿ? 0 L:,Mk QY€:ø ږG"q}J`&Zhc@J齧} ,EKo Q8:J6C׉Ҷc coyAqaVZm ?_({~Uk%~M Sk5^.9EV}=1qb`녈d;P`3^NQEd'07 po?  qgЪ덇5N6@o,}.0І(1Xc)OY5%Ҿ1VqC\/7<6"VE;[7ؙjm4EIi֥1ZkeV.Lnjq[|pӄInȨ&r-;-WJS{)Yya7yV*e U`8G[Gv+DJ|KЌ`; Ǔ`/wF>2֓f_Q6,y&QGfGBq8k%Gcp[и;gM͹% ØCФbo 7ۿ›))ꎭdkp10:'IS cy  +Z!/c\%+cz}@fRܱD mT>Lfd5aLCqR~^%m"I`h+6ʊ uXrY>cuJ븭r)m ʾ^$PıwZi]Kq*.YbLd?'gCiP8wCt]S]}Cv-%+VTJױRE”Mk\zgҶuc=<̎x6g TEzc1bczw(u}i??Ӷɵrn“mzS \4VRifXh5Em@-glmlVz/6<5jmrJYO =4ax)\EʲYTJaPڔ֭6lJЁ0בuViBXsК4UmFja:f00 k M˹rl%¡t:T.b5R5(zbZ:9X`DمNju%%ưRa^xu"i>RJ*9i밳c,8{6[Ph)YcV#y8 KVϢe<1"1T `aJc*e au~+<Ə N.V \g0O3;Xe 7ňϳ!(DkZ?/5 ZVVM1F^d4ZݐRچ`:Q(ȑ0Ao~_۸@qӂkO [լUalZrźdc5ݰBXH3ZkX vBJÄF:1ce)N&N el33k>~AHλ0cFXf0-_=' a0Red$/g015\@f7V l5r#XtiQJak^yAc]kc͹ CnAs.x5nZͰ'F;Xdwؒ8sLڑPp0VК8v[K.60 -Ӟ3ѝ 3ؚZv^M̋Һ攣~[olC$/bOZ*]+ާmM։Lz.>Bcawy4Ze~_JcOi?ί[x>dm  o@]c܎jc9J#=a|>#"MBDz0m8qM#RJRRXZom<(1kcsⶡCc?XuaL]NBRcѓFʒO5VaG%3&G$H/Pz-Yh6pkbMG!<:gc\?`)`?ӎY>A@ ̍O qc>70_ %9kab?/F2Msp'G !yc[l](iUc.T%*vo+<#9QŅ 1t~JK9c_#`mt]\!D /X1k ;0U߮*Vj|-nN5LtjiьJ ))l$5P|L:3qD&#CLRcVMsՠ9h?-mŋ5ևyFq)Z˹ OqokNw>LJ"d80]@G_b%Z=-c::zR2Wȵ<<qVAS> 5TI2{Y\Ēy1"b3jkkHi˯>v&Ei|A- E%f|R·b֪m  [Ͳ2''#V |<#Ip80`*}U`U_nm,sr<YS uNKnefQ@W#`<`VƚǹSIddS\SjÊJIR<e"(z8# 8CЍƹXaj8 rԝehΧ/~~$#˼HI 46TdRb҇8 0ЀV2̇p"2p~(hqlRZJ)&$h^HWӺJR2&W0 /?(Z \1F'kiH͏ʡ' ^PHd(6DV<@.@7bKX0-6M @ViL{w"b&cܴ\vy ab|pu8Ȧ"@Ϙ1Zp;Wziv6c { ՂuIx{mX}酏UDra$:9&! sG΍K()` RFm}`Vi_c~~^lz9覩 .nkIY4׊unʆOSI98ʳuT"`PZZmhyį8>HQhw^kEDAn !az+d\}|EwXoFjGZOD)m1 u"(Ic rZּ¤ RҲV}Q[u`B#)~r(]`n=P?S-φ:d͹&񅯾wR܎׊-zkaYOZKji1_oy} -/~: QGzЃn7՜֦%K|5} liS:Dma zG/y(B@d!މ+p94ݵV#iEvbQa9)wpHk 7}]S\aA!Ң&}φ8k2k49FxDcʹ62cez(FcGEB+1Q ^mBȟ|7#H"0E(os_R5$ %3 &}E'%'31{M\JⰅP^\k6fs*8>a91d3,WJ "J5l=c-xJk7dA5ΙDlq!Ks8 BxhDXV2JJq3k<갬iYD V{V#/@E>#: (/6U'G\A2 5OK`M;oz_,@٨!¬U m85%E?-]{:T5#,s\/;qFaU2ͽrHQRq]E 60- =md+DRZ>f񰭏&R~~TkN7/|O1nnC#޶4R,d1(Զ#q9qR)m !,kP/ƢޣEVZ0ROcҲ!XKS*SOK-9D;#Yi?M؏#iІCVJo, ##hYq+*]&QbsS+YKD%@K0_%Z'|[k'\2([Ω8k-:)Urۡ("Ǟ(Ң}HtJ[-ԩ^i zHDjU.*ju\T62)Ư}KX ?L|"p.dv 9xAzuoШ[0qbp A:[kZZGKVo6^ 58(S\[E4k?$h3pXrɣjҾVfM~6RO26rQfbYFzV<*ŭucL8]~>גHEua7+pԲbq#dff%w׭UJiZ-X* 5zGұ|o3t@ e PZ3xZpi}+/򝚓2f?? af\\Wlu^ic!m7Tn(Dd%al\RDRemM?T% +}8ڃtRJrS7t"Rz|^׵ 0&(HWX 9֟هe͹VBx4"0#:}!+>6$"YNbXp]: (9R$d-vZ.! xe8w,wq)K:H"g1Pi8@&cfVjMNQ4O3oy}^gCcpAڹZd8`hxxwYk1+.9㌕# "8{"xބG'`ʰvZ2[CKEaouP Yry˜}4+c?z?+u)m k}˾pVƆDLq]0N[6{>y)%3N+O c۶҈"=41AMJ0n|pò6/ ֧H+މv4sqǬAp} 2G73RXbcEIJ&ɋo~#M*1Jk|Í (efBH`ԩ#$ QcX"3O@ub~> [k-O>lzk&@db"tao.hEСm;~%laG(Y""jDxc#\ *9ps5X0*1bvZ#j9Xxb[-(R%X9c@vM`0@u~*ÒAH;AAƁ v8!{'gwBmd#aK8f/K+o f+zK@eQqW>m[q(XeZk;:F A]"pBm8夘{'jkm:]97 uZys)6G$C4Xޱ\FxpF`8Ur{oZ[<;m띱3[ef&*[I 2  V^XY TZsSb5kHD5GَFтg' lH.d,Ȳ Eҩ&GȩR+ZO `ޑ3^@ZMTjj:]d6Twcf!ʢNWDį}K/}sB/15oЙ\pcc0ҦukIDAToD0sY KAQ(R(U*hm%} zeҶ z0j3Zd(GC}3Zj [a=eti-aѯ <0Bck"l-9'Î11" z2 C@Jiؐ[ukȱvl͹"68Hm`DL.ʘM`1U]i&؋&?xP~E G* _̋%'T>lrbm,ux~f#jXlֵr1 Xܒ">k{J%ecDc#hD^s6CA#m@Z1*=q2 7y|9]k +Î>>p1·[aբN jJ) _4,/7X-&"fbG3q_] dtITatF {֚OUbP"HJ"ZK:PlqkYOiqZzuNzk=< Gk%GHnMA9}7olV븮Lx#'ff s4@]4\i_Z[1ZkO k H oҍ%kanՅ!G&\0) ˜w+u-RJ2*ՔK)Py)R}=HZ !F[y J;wגKف{N{W52}#k+)وoq ]ޘ6k0YZ絆@rG(JγRp Q=I*iK1EC lRZnwjH/ RZV z+p@0%V 6Lf_ X^cӕ:nZ9icrDhz祖bT _OI2Ӓz 6 ꥤ޺.L:HȟO*5Arn%l;C6eﭦx XWK'dXKژwm&|cgnx}]iާ0!OWWxX޻0/㬴q -#(m,ٔzo(ml*)íbq$=$̜sbIT}!9z,avMOiYx1°O[k]()Slsc( Wicv)%;!D?*bVj|$^HCRc $x2S8+)*)FFyH BԒV0 Pƈ\k%gcֆvlr+'zeVk+BU΄H|cOݹyέMӗ/?(}g^ncݯ1 d(JZk!";87[>}@SZ[IJqW]iܨU|ۺV+fн`dY!},!VV,ZCyH]2o~l3Ηsy&v~@Bṅ1mkɊ^T7ۤ+,P#500Qn媷v$Rz9zp3޹0VsyZE-.PRZi]ke519ĐA7HKip =mkM+mSZacZOmi_%<ݿyo{-}nr;I&y'lZjav~%ŭINѩAW'hN$15;9s뀽ITR꺞*z/u:S7Pr&׸9E<+n[ixfb\އ ajŁ 3\ 54$M#CG1E2 z- kKIJcE.U(P:< :и1l X!rS+Swo)cs)G>;ӿj~=oCUc9v95g .h,pըvpK*8/ `NZ\r8}XCR<`pď|M) 'IZRzZN/FF%aDِxدik[k@A2iM\VdU uuAZ-J1 HG8ЗN$QI)ޔbw2ZR*Lp\ryţNpDqFcZ֭%Ǹ8s}}?<{o4r1c<pS2skwNMIiKuY&oGb̋򾕒rmI¢ҖҎf|=f#5&Cb{7Cx G e70yT^+ 6:K8l CI+., q-cA~;+BFæfz}: $ Bü>R Bu"1-'u*FOĶO maS~e1gP49rPˑykzw"X[֒}u2w&5Xf}D k=V$bcsЛZZn|RJ]`?x;=|}ϖ:kmJ+T;1+cl=:5"ɹrέ\[SY?Rk*-Jg.j797qS{SJƪͤĥc-͐ƹZˤO; 1:)L#׵fbB!"Zk"D\)X1P YбTx,GJPj΁ᑠ4D1.L^P)0[,TJaȣV{k:.C*QVA5êRP73C 4nuuФ50JI8adKJJ XkO:R[7wx"]:}p>>OzGg!RLb˒NߑzODèKzX+0?B,_5zR̊uN?{w^_W[/)eMRo`o/t5]^NcɗrܕҠA쭵íZW[2Z-Ni ŢEA}H QyM Q;p7yK`@,ґZNbڭƸ\w66vPeЁ+%;L L'n-Ī?:_oN={w7g|K}/=)i9[=ܜ'T}nX ?~W湧ݜ垝?O̩{gvfc2Nӕ7O\7yn}tzfzq;ݺ4O}O??{[/.ɻ'=)w`GȄ\1H#`oOS-m,RԆJ c,qrW)<])y ErzHnuBtt8rJkQ(Vuƻ7ʭ4ZVӞO?yuh&={; Ub^;S??Nw><8YmoݽsgrfjGɩֿ_\¼,>xP.?G_{^w͍9xujK3O1ϿvMoO}_zoO{FZxcKYM5H)p_Y)v 2f@@5wVJVU?͵rs*+@*)>Lʹoi2ƨNW5r<ü(cG"VJ,zܸY^MuƄCzoi@ crLD)"98B:3Q%,i #hJkPw$ٜ>V[`![16XG)"+@b\W!K?QSܵ?WYMw]LwYij{Oܜ߹rJ~k_Ç{O? [sƬo;o>{}?g??яo޽۷mz7{>xw}r?7LAtYJ3_7?{`xo7w{ V #Z 9_K&̃Nj8V+rSws~:_h:륵 =8x  pQtyjCk, dJ1O/Fpp>v$xJ62!QTf;؟*%+plf_To'9w>Gnݣ~o}{;o_}Sx啰Ɨ_JkϜ/__K꿽~~?ɗ?>|\Kr?/_[ܺo?z?Gۿn~b j0ikSu@l4jvXN.q1nHC~W :Q]D?O4'TFD)MA`9aʣ. c`?0ذHx.168ObGpZ_fNNԙ307z%Sc6iE _"!bHNĄvS =|n fPJ:1,Fjbhi@:nRFN7rjC+IENDB`/tfѭ8Lwb"q548@J g'JNjn*p0'FceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %8(F4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$ 0 )F(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*pLE2Data, 1#)Fz@Hoz@Ho Control InTransitionIn*FMT^RwL~YYTMT^RwL~YYTޢLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 2X+FJ@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3 ,F-1OSM n-1OSM n"LayoutLayout 럆L<_ї# 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ r+NewCommand*// Square Generator V3 // Oct 2007 // // Clinton Reese // // purpose: to create a square in truespace using jscript // // March 2008 // don't need editable mesh if assign new mesh to both input and output of shape node // // ProfessorKhaos // create faces from triangles (associates & hides internal edges of triangles) // // note: Each entry in the FaceList controls the appearance of edges corresponding to the // triangle with the same index in the TriangleList // // The number assigned to FaceList.edges(index) ranges from 0 to 7 and represents the // on off status of the 3 triangle edges. The first edge is from the 1st to 2nd triangle // vertex. The second edge is from the 2nd to 3rd triangle vertex. The third edge is // from the 3rd to the 1st triangle vertex. //FaceList = System.CreateDO('Space 3D Package/Face Edges Stream Data'); // FaceList.SetNumTriangleEdges(12); // FaceList.edges(0) = 5; FaceList.edges(1) = 5; // +x face edges, 5 = 1st and 3rd edge "on" (1*1 + 0*2 + 1*4) //outMesh.AttachTrianglesStream(FaceList); // // Jack Edwards //#define EDGE1_ON 1 //#define EDGE2_ON 2 //#define EDGE3_ON 4 //FaceList.edges(0) = EDGE1_ON | EDGE3_ON; // // Execute // Called to execute the command function Execute(params) { EDGE1_ON = 0x1;// triangle edge defined by edge between vertex 0 and 1 EDGE2_ON = 0x2;// triangle edge defined by edge between vertex 1 and 2 EDGE3_ON = 0x4;// triangle edge defined by edge between vertex 2 and 0 // Create square node to hold mesh and transform // if already exists then exit scene = Space.CurrentScene(); if(sqExists = Node.Exists(scene + "/Square")) { System.Error("Square node already exists in the scene"); return; } tempNode = Node.Create('Kernel Package/Object', scene);//create empty node in scene squareNode = Node.Rename(tempNode, "Square"); // Create transform and editable mesh inside the square node mytrans = Node.Create('Space 3D Package/Transform', squareNode); //myedshape = Node.Create('Space 3D Package/Editable shape', squareNode); myshape = Node.Create('Space 3D Package/Shape',squareNode); // export mesh and matrix input-outputs Node.ExportConnector(myshape,"Mesh","",1,1); Node.ExportConnector(mytrans,"Matrix","",1,1); Node.ExportConnector(mytrans,"WldMatrix","",1,1); Node.ExportConnector(mytrans,"ObjMatrix","",1,1); Node.ExportConnector(mytrans,"OwnerMatrix","",1,1); // Create data to build the mesh dV = System.CreateDO("Space 3D Package/Vertex Stream Data"); dV.SetNumVertices(4); dV.BeginWrite(); // 7 by 7 meter square floating at z = 1.2 meters(1.2 random value to get off the grid) // make face upward - workspace is left handed coord system //dV.x(0) = 0; dV.y(0) = 0; dV.z(0) = 1.2;//vert 1 //dV.x(1) = 0; dV.y(1) = 7.0; dV.z(1) = 1.2;//vert 2 //dV.x(2) = 7.0; dV.y(2) = 7.0; dV.z(2) = 1.2;//vert 3 //dV.x(3) = 7.0; dV.y(3) = 0; dV.z(3) = 1.2;//vert 4 dV.x(0) = 0; dV.y(0) = 0; dV.z(0) = 1.2;//vert 1 dV.x(1) = 7.0; dV.y(1) = 0; dV.z(1) = 1.2;//vert 2 dV.x(2) = 7.0; dV.y(2) = 7.0; dV.z(2) = 1.2;//vert 3 dV.x(3) = 0; dV.y(3) = 7.0; dV.z(3) = 1.2;//vert 4 dV.EndWrite(); // 2 triangles form square trivert = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); trivert.SetNumTripleIndices(2); trivert.BeginWrite(); trivert.i(0) = 0; trivert.j(0) = 1; trivert.k(0) = 2;//triangle 0 verts 0,1,2 trivert.i(1) = 0; trivert.j(1) = 2; trivert.k(1) = 3;//triangle 1 verts 0,2,3 trivert.EndWrite(); // set edge visibility for triangles faceEdges = System.CreateDO('Space 3D Package/Face Edges Stream Data'); faceEdges.SetNumTriangleEdges(2); // 2 triangles in the square mesh //set edges based on non-diagonal edge faceEdges.edges(0) = EDGE1_ON | EDGE2_ON;// 3rd edge is diagonal for triangle 0 so turn edge 1 and 2 on faceEdges.edges(1) = EDGE2_ON | EDGE3_ON;// 1st edge is diagonal for triangle 1 // uv data - uses full 0 to 1 uv space dT = System.CreateDO("Space 3D Package/UV Coordinate Stream Data"); dT.SetNumUVCoords(4); //left handed directx system //dT.u(0) = 0; dT.v(0) = 0;//vert 1 has uv of 0,0 //dT.u(1) = 0; dT.v(1) = 1;//vert 2 uv 0,1 //dT.u(2) = 1; dT.v(2) = 1;//vert 3 uv 1,1 //dT.u(3) = 1; dT.v(3) = 0;//vert 4 uv 1,0 dT.u(0) = 0; dT.v(0) = 0;//vert 1 has uv of 0,0 dT.u(1) = 1; dT.v(1) = 0;//vert 2 uv 1,0 dT.u(2) = 1; dT.v(2) = 1;//vert 3 uv 1,1 dT.u(3) = 0; dT.v(3) = 1;//vert 4 uv 0,1 UVTri = System.CreateDO("Space 3D Package/UV Triangle Stream Data"); UVTri.SetNumUVTripleIndices(2); UVTri.i(0) = 0; UVTri.j(0) = 1; UVTri.k(0) = 2;//uv triangles same as above, but can be different UVTri.i(1) = 0; UVTri.j(1) = 2; UVTri.k(1) = 3; // create mesh and assign vertex,triangle and uv data and polygon face dM = System.CreateDO("Space 3D Package/Mesh Data"); dM.AttachVerticesStream(dV);//vertices dM.AttachTrianglesStream(trivert);//triangles dM.AttachCustStream(dT);//uv dM.AttachTrianglesStream(UVTri);//uv triangles dM.AttachTrianglesStream(faceEdges);//polygon face // assign to the square object //March 2008 apply mesh to input and output Node.Value(myshape,"Mesh") = dM; Node.Value(myshape,"Input Mesh") = dM //connect editable shape to shape //Node.ConnectTo(myedshape,"Mesh",myshape,"Input Mesh"); } NScript Object Package/jScript language~൱DLh^#^c4W}@O{(XFҦV>g'JNjn*pnCA`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їControlOˁ CRih[ x! 8Activity.Run('%THIS_NAME%')Create SquareZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho! li8ʯȥJH|o7 gH]kDwP؋~`d8pM*#ͺOY~v/tfѭ8Lwb"qfw5