RIVE ! B  TomorrowjDSIGxGDEFwwhGPOSLJ΄TGSUB0(OS/2es`cmap Dgasp`glyffhead2 6hheauD$hmtx S 0locaC$ddmaxpT5h name^݇hpostolpreph\'_<]ʐ8[LL4PXKX^29 JUST 8  RX  WDDDDDDW[WW WqWqWqWqWqWqWqWqqWqWqWqWqWqWqWqWqWqWqWqWAWDDDDDDWW>>;+>> >;>A2A2WW/WW/W/W/W/W;W/wWW*WWWWWWWDDDDDD DDDDDDDDDDDDDDDDDDDDDDD0DbWbWDWWWWPW>>>>>>WD+ + + + + IIIIIIIIIIIIIIIIIIIII      x y y y y y y y y y HHHH:#:#:#:#:#:#:#:#:#:#:#::#:#:#:#:#:#:#:#:#:#:#:#:###iR/F/F/F/F/F/FiFVFiFiFFGFGFGFGFGFGFGFGGFGFG9GFGFGFGFGFGFGFGFGFGF0 iFiFiFiFiFiFpRppRRRRRR#;RRRRRR*RRRR{R{R{R{R{RR{RVFVFVFVFVFVFVVFVFV@VFVFVFVFVFVFFFFFFFVFVFVFVFVFVFVFVFFiRiRiFRRI)R'9'9'9'9'9'9WO!O!O!O!O!lMlMlMlMlIlMlMlMlMMMMMMMlMlMlMlMlMlMC F F F F F . 5 5 5 5 5 5 5 5 5 !5!5!5!5G  +   ??D9z@3[{3D DLD9z@3[3N DL9?3z(RSS4R??w?RR%("9RR/R  RTR_R_!R[R[!?v9N9;9v9 <<5555AA!hh!S55OD/FD8<>fF?7?D??O?D????`W?@y ??Rq?q???FF?:?:?KRKR`9KRlMc??- D WFnWD;"55WW  eW505}[z~}zG)i[xp !d/<!//R !!/#+//<~XXX0 /9~1H~-37Y #(5     " & 0 3 : D R t !!"""""H"`"e%' 0:4J*07Y#&5     & 0 2 9 D R t !!"""""H"`"d%'h U_ l;AHK+߼ߞA!ILJ.Px6<>>@JRRZ    %+?@FIWY[cdl: "%,-4SUV\ch}~8<36 "9,/6QJLN'kzmovb3B57P>NoikmT #$!()<-7=.C AE D HGVTKUOX!Z#$]&_(^'`)b+f.h0g/i1Ln6JRWYX]`_^fed|yj{wz|Dq&*\a*ej2B MO5;MSu=KZ[lxagw?Qx@7549>=?; !#'(%)&"$   8:>02341RPyA{Cp8r:s;t<q9}EGHI~Fnprtuvs###=`$c(V @c:t$Cj 'a>f.f  % E q  C y  3 J o 0 Q m  1 ^ t .DYz 2PnCp M!Nt'S+\>}'Q ,W0Qb{&KqEi"Kk#JvAd4U{ \  g !!@!!""2"\"""#"#R##$$J$$$$%%;%d%%%&&,&m&&&''E'z''($(i((())=)s)))*4*T*m**++<+m++++,,,2,O,h,,,,,,--,-J-n-----...%.8.K.].{....//:/Y////0.0Z000111t1112*2O2v2223'3T3334(4O4x4445;5r55556 6+6E6g66677&7S7z777788>8X8z8889999[9999:#:Y:::;;-;_;;;;<<<>>D>r>>>?????Q?o????@@@@i@@@@@AAEAXAAAAB B"B0B`BBBBBCC&C9CMCmCCCCCDDD!DPDgD~DDDDDEEEE'E3E@ESEfEyEEEEEEFFF F2F2F^FFFG.G^GGGGHH?HfHHHI%INIuIIIIJJ!J5JBJ[JtJJJJJJKKLKjKzKKKL9LULLLM#MZMMMMMNNN)NEN}NNNNNNNNOOO0OMOjOwOOOOOOOOPPP+PAPSP`PrPPPPPPPQ Q(QEQnQQQQRRRRR3RLd 5335357!#5'!JJgbNbQ68jGddG+:;* 33#'!!#_?>Y|{ 733#'!!#(`g|_?>Y|{ '5337533#'!!#?=h=?v_?>Y|?G11G?{Q73'5337533#'!!#$`f{m?=h=?v_?>Y|?G11G?{Q '5337533#'!!#53?=h=?v_?>Y|!X?G11G?{vvQ'3'5337533#'!!#*|f`r?=h=?v_?>Y|?G11G?{ !%575'#'73'5337533#'!!#-A *"*/f,Gg?=h=?v_?>Y|:9 #*/,F;!?G11G?{;#''##7733773'5337533#'!!#cH%%4Y|E$@=F$ @=?G11G?{73#'#3#'!!#idiKMM_?>Y|UU{ 7373#'#3#'!!#`g|idiKMM_?>Y|gMUU{Q73#'#3#'!!#53idiKMM_?>Y|!XUU{vv '373#'#3#'!!#{f`"idiKMM_?>Y|gMUU{6 !575'#'7373#'#3#'!!#B *"*.g+FidiKMM_?>Y|g:9 #*0-F:"MUU{A#'##773377373#'#3#'!!#fH%%4=aH!$4Y|F$ @=E$@=UU{'33'33#'!!#|`_c|_`G_?>Y|{533533#'!!#XX_?>Y|vvvv{Q 33#'!!#53_?>Y|!X{vv '33#'!!#$|g__?>Y|{ 575'#'733#'!!#/B *"*.g+F_?>Y|;8 #*0-F:"{ 573#5'#3#'!!#??=h_?>Y|H>>H22{] 5!3#'!!#b_?>Y|CC{_'57'!#3#3!#8:0?>`9Z|;C#*>{'573'375'#3#'!!#==`==C&&_?>Y|=J>>J=2%%{ 73'573'375'#3#'!!#)`f|V==`==C&&_?>Y|=J>>J=2%%{'##77337733#'!!#dG%%4Y|F$ @=E$@={ 3!!!!!!'!!# "LhY>?Y{TST{ 73!!!!!!'!!#(`f|"LhY>?Y{TST{Wq3!!75'!75'!Wh.Ui*6-7:i>Vi9t87<Di3'7!'!!7iiMf:P77Q:hiif;P7/7Q;gDi73'7!'!!70_g|iiMf:P77Q:hiif;P7/7Q;gDi'3373'7!'!!7"iKMMKiiiMf:P77Q:hTTiif;P7/7Q;gDi7#'7!'!!7#iiMf:P77Q:h&iif;P7/7Q;gDi73#'#'7!'!!7hdiKMMWiiMf:P77Q:hUUiif;P7/7Q;gDi53'7!'!!7(XiiMf:P77Q:hvviif;P7/7Q;gW 3!%!7'!W ggUQimiW'337355!5!!!!%!7'!iKMMKitD ggTT\T\TUQimi 3#53!%!7'!3#WII ggQJFUQimiJW '3373!%!7'!iKMMJh ggTTUQimi 3#53!%!7'!3#WII ggQJFUQimiJW 3!'3373!7'!5!5!!WiKMMKi gg[FNUDUU imipZgJZIW= 3!!!!!WuaTSTW=73!!!!!$`f|uaTSTW= '533753!!!!!><g=?ua?G11G?TSTW='3373!!!!!hJMMKiuaTTTSTW=73#'#!!!!!hehJMMuaUUTSTW 7373#'#!!!!!`f|hehJMMuagMUUTSTWQ=73#'#!!!!!53hehJMMuaXUUTSTvv= '373#'#!!!!!s|f`hehJMMuagMUUTSTWI6 !575'#'7373#'#!!!!!B *"*.f,FhehJMMuag:9 #*0-F:"MUUTSTW=A#'##773377373#'#!!!!!aG%%4?=guaH>>H22TSTW=]5!!!!!!a^uaCCTSTW_='57!!!!!!3:,]ua5;E!TST(">W='##7733773!!!!!`G%%4M 353#5!#3>ZZZZT9TTT>g7353#5!#3_g|ZZZZT9TTT;O '53375353#5!#3z?=g<>ZZZZ?G11G?T9TTT+`73#'#53#5!#3+hehKMM7ZZZZUUT9TTTM'33'353#5!#3W|_`b{_`ZZZZT9TTTv5335353#5!#3XXZZZZvvvvT9TTT>M5353#5!#3XZZZZvvT9TTT>QM 353#5!#353>ZZZZXT9TTTvv M'353#5!#3|g`ZZZZT9TTT>M 575'#'7353#5!#3A )#*/f,FZZZZ;8 #*0-F:"T9TTT;O 573#5'#53#5!#3;?><g:ZZZZH>>H22T9TTTv]5!53#5!#3aZZZZCCT9TTT>_M'57#53#5!#33:,ZZZZ5;E!T9TTT(">x'##773377353#5!#3H%$4>[s0[VM[MTW! 333##W|}\3MVUWw 333##W|I[lQFW !'53373!33##h[67Zh|I[li77YiQFWw7333##N`g||I[lQFWw'337333##@hJNMKh|I[lTTQFWw 333##73W|I[l`(WLQF误WVw333#5375##W|I[R~C1QSB44FWE 333##535373W|I[lXW/X]QFDvvI1L[Ww'##773377333##G%%4>H22iiiiQ777/Dr] 5!'7!%!7'!bii\ii 777CCiiiiQ777/D_r'57!'7!3%!7'!:'ii\i 777;D"iii!>777/Dr 3'7!%'!!7ii\iiI77 7iiii77 Dr 73'7!%'!!76`g|ii\iiI77 7iiii77 Dr'##7733773'7!%!7'!rG%%4<ghhe66H>>H22ii$u77>T35!75'!'57!!!Xk66hh76hhT77hiT7z7ii>T735!75'!'57!!!!_g|k66hh76hhT77hiT7z7ii>T'33735!75'!'57!!!iKMMKik66hh76hhTTT77hiT7z7ii>T7#5!75'!'57!!!#k66hh76hh'T77hiT7z7ii>T73#'#5!75'!'57!!!hehKMMk66hh76hhUUT77hiT7z7ii>T35!75'!'57!!!73Xk66hh76hh'XLT77hiT7z7ii误Wp3733#'7375'#57'#Whi\{ie;Qt7I>7xii=~if;P7KB>7D 3'!5'!5!%!75!i7/iiL7Fi47QiiQ7 3#5!#TTs 3#535#5!#3#裣ۤVETTE '3373#5!#hKMNJh_TTTTs  7##5!#&TTs  3#5!#73'WLTTs误Iv 3'3!73i[7 7[iix77YiIv73'3!73;`f|i[7 7[iix77YiIv '533753'3!73><g=?i[7 7[i?G11G?ix77YiIv73#'#'3!73hehJMM^i[7 7[iUUix77YiIv'33'3'3!73|_`c|_`i[7 7[iix77YiIv53353'3!73XXi[7 7[ivvvvix77YiIQv 3'3!7353i[7 7[iXix77YivvIv'3'3!737|f`i[7 7[iix77YiIv 575'#'73'3!73BB )#).f,Fi[7 7[i;8 #*0-F:"ix77YiI*"3'3!73373#i[7 7[A]=wiix77Y?iI*73'3!73373#;`f|i[7 7[A]=wiix77Y?iIQ*"3'3!73373#53i[7 7[A]=wiXix77Y?ivvI*'3'3!73373#7|f`i[7 7[A]=wiix77Y?iI* 575'#'73'3!73373#BB )#).f,Fi[7 7[A]=wi;8 #*0-F:"ix77Y?iI*!'##7733773'3!73373#wG%%4?=g`i[7 7[iH>>H22ix77YiIv]5!'3!73ai[7 7[iCCix77YiI_v'57#'3!73#3k:,i[7 7[im5;E!ix77Yi(">Iv'573'375'#'3!730>>`==C%%~i[7 7[i=J>>J=2%%ix77YiIv'##7733773'3!73wG%%4H22H>iwiA7Ji^QQFfX6P#z%73'533753'57!5'#5!#5'375`g|m?=h=?hh 6hXQ|g7啕>H22H>iwiA7Ji^QQFfX6P#Q !%'533753'57!5'#5!#5'37553?=h=?hh 6hXQ|g7iXD>H22H>iwiA7Ji^QQFfX6Pvv#z%'3'533753'57!5'#5!#5'375|g_r?=h=?hh 6hXQ|g7啕>H22H>iwiA7Ji^QQFfX6P# (/575'#'73'533753'57!5'#5!#5'375B )#*/f,Fh?=h=?hh 6hXQ|g7;8 #*0-F:">H22H>iwiA7Ji^QQFfX6P#d*1'##7733773'533753'57!5'#5!#5'375.H%$4H22H>iwiA7Ji^QQFfX6P#73#'#'57!5'#5!#5'375}idiKMM=hh 6hXQ|g7DTTiwiA7Ji^QQFfX6P#n% !7373#'#'57!5'#5!#5'375_g|idiKMM=hh 6hXQ|g7MTTiwiA7Ji^QQFfX6P#Q!73#'#'57!5'#5!#5'37553}idiKMM=hh 6hXQ|g7iXDTTiwiA7Ji^QQFfX6Pvv% !'373#'#'57!5'#5!#5'375B|g`idiKMM=hh 6hXQ|g7MTTiwiA7Ji^QQFfX6P#_ $+575'#'7373#'#'57!5'#5!#5'375A )#*/f,GidiKMM=hh 6hXQ|g7:9 #*/,F;!MTTiwiA7Ji^QQFfX6P#k&-'##773377373#'#'57!5'#5!#5'3751H%$4fX6P#%'573'375'#'57!5'#5!#5'375==`==C&&]hh 6hXQ|g7D=J==J=2&&miwiA7Ji^QQFfX6P# ")73'573'375'#'57!5'#5!#5'375`f|U==`==C&&]hh 6hXQ|g7(=J==J=2&&miwiA7Ji^QQFfX6P#%'##7733773'57!5'#5!#5'3750H%%4<g<>iii7# 77D>H22H>i9iie7I+c77F'3373'73!!!5'#iKMMKiiii7# 77DUUi9iie7I+c77F73#'#'73!!!5'#hehKMM%iii7# 77DTTi9iie7I+c77Fu% 7373#'#'73!!!5'#`f|hehKMM%iii7# 77MTTi9iie7I+c77FQ73#'#'73!!!5'#53hehKMM%iii7# 77YXDTTi9iie7I+c77vv% '373#'#'73!!!5'#N|f`hehKMM%iii7# 77MTTi9iie7I+c77F$_ !'575'#'7373#'#'73!!!5'#B )#*/f,FhehKMM%iii7# 77:9 #*/,F;!MTTi9iie7I+c77Fk#)'##773377373#'#'73!!!5'#><g'iii7# 77DG??G11i9iie7I+c77F5!'73!!!5'#saiii7# 77DCCi9iie7I+c77F_ '57!'73!!3!5'#:,iii7#5 77;E!i9iie7I(">c77F!'##7733773'73!!!5'#;H%$4H22H>I6Ri9iSSihi77FE'33735%75#'735375'#iKMMKi7QiiQXiVgg77DUUI6Ri9iSSihi77FE73#'#5%75#'735375'#hdiKMMq7QiiQXiVgg77DTTI6Ri9iSSihi77FE735%75#'735375'#L2'7QiiQXiVgg77DI6Ri9iSSihi77FE535%75#'735375'#X7QiiQXiVgg77DvvI6Ri9iSSihi77R# 3373#'#RXPhX5gSi^9i#3#53533#73#'#R>>XPhX5gCIUUISi^9iR#73#'#373#'#RhehKMMJXPhX5gUUSi^9iR533RXXXDvv R 33RX R733Y`f|QXD  '53375333?<g=?wXD>H22H>  73#'#3hehJMM$XDTT  '33'33|_`c|_`XD . 5335333XXXDvvvv R533RXXXDvv RQ 53353RXXXXXDvv vv'33U|f`MXD # 575'#'733`B *"*.f,FKXD:9 #*/,F;!  573#5'#3 ??=g"XDG??G11 .5!33aXDCC ;_53'57#33RX5:0X6Dvv;C# ' >0'##77337733G%%4H22H>i9iiiF777F73#'#'73'37'#idiKMM,iiiiҬ767DTTi9iiiF777F% 7373#'#'73'37'#`g|idiKMM,iiiiҬ767MTTi9iiiF777FQ73#'#'73'37'#53idiKMM,iiiiҬ767aXDTTi9iiiF777vv% '373#'#'73'37'#U|g_idiKMM,iiiiҬ767MTTi9iiiF777F+_ %575'#'7373#'#'73'37'#B *"*.g+FidiKMM,iiiiҬ767:9 #*/,F;!MTTi9iiiF777Fk''##773377373#'#'73'37'#DH%%4777F  3'73'#37'iiiiժ797 i9iiiqT777 F 73'73'#37'`g|iiiiժ797 Di9iiiqT777 F'##7733773'73'37'#BG%%4H22H>is8g^QQM73#'#'3373#5hehJMM/hX6gXXPDTTis8g^QQI'33'3'3373#5|_`c|_`hX6gXXPDis8g^QQM53353'3373#5XXhX6gXXPDvvvvis8g^QQMQ 3'3373#553hX6gXXPkXis8g^QQvvM'3'3373#5 |f`hX6gXXPDis8g^QQM 575'#'73'3373#5B *"*.f,FhX6gXXPD:9 #*/,F;!is8g^QQMF3'3373373##5hX6gX<]=rXPis8g^EuQQM73'3373373##5`f|hX6gX<]=rXPDis8g^EuQQMQF3'3373373##553hX6gX<]=rXPkXis8g^EuQQvvM'3'3373373##5 |f`hX6gX<]=rXPDis8g^EuQQM !575'#'73'3373373##5B *"*.f,FhX6gX<]=rXPD:9 #*/,F;!is8g^EuQQM#'##7733773'3373373##5KG%%4M'573'375'#'3373#5>>`==C%%OhX6gXXPD=J==J=2&&mis8g^QQM'##7733773'3373#5KG%%4hh66Aiif;P7=iiQ77D35!5!K?wTlDa 3'57'57!375'375'#iH0ii0Hi'67778iH2ii2Hi*87z788LX3'7375!'57!375'#e;Q6=hh;hhD67f;P7=iiiifG77DV3'7!%37'#ii@ii777iiiiQ777/9v 353#5339qeqT9TsT@4355''7!!D6Q;ehv`8Rhh66Aiif;P7=iiQ77D35!5!K?wTlDa 3'57'57!375'375'#iH0ii0Hi'67778iH2ii2Hi*87z788LX3'7375!'57!375'#e;Q6=hh;hhD67f;P7=iiiifG779a 53#533972q7a<<<?aL575'#'733E\++:9aJ'++;9Y<3aL'7375'#5375'#'73m:*+ooof++;9!!9a;++D;1*+:9\""n9(aL 5#5733#'5޶<..@gaH<<..@fB"C"`;++D;1*+:9\""n9H;TO#5#53#'573533#3#35#375'##}hh}XqhhqTS7G76HnnThhnnThin7{y77FbZ3'735#53533##5'75'#5!iiQXBBXQgg77i9iSIXXIRRFhi77JJ?3'5#535#5357!'!!!3#!7hWWWWhMf:P76Q:giIFIif;P7nIFI7Q;g:537#53573#3#H166c{U1ppcqI2FscI2[F-c?r35#53!!!!3#XXQI TSvIDqO5#'73533'!375#53#5#sgiqXf:P77rL[Tnniinnf;P7/7jxP}UUn?3#533333###LL[^kmdxI  Ix?p3535#535#5357!''3#3#!?SLLLLh f:P8TJ?Iif;P6I?JT? 35755753773753TTTT\7[i_NDNCNCDDND7iDr373533#'###DiXi[7YXY7+iMMi 7C7?#'*3#535#533333#3###3'#3'#35#5#LLLL}[KKKKmW@#h?J?II?Jt???p?3#535!3#!!5'!75!LLiLLi777Ji_JTi@875?#3#535#535!3#3#!!'!5!!7!LLLLiLLLLi+*8)JHJziJHJig*H(?y35#535#53!!!!!75'LLLLii*77JDJ~iiDJc78W'!5375!5!5'#5!#3##Z66Ѕffh$Q7MI7II 6Ili?p3535#5357!''3#!?SSSh f:P8TSif;P6ST@3#53'#53'333333#3##Er`O=;`S_:=O`rFvuIFIvvIFI  k!5#535'#533333#3#}hg~I'IJPI'I?553?X5ww?f '5353w86XX --TvvvvR#'55B"C"?w2j %5#53533#IwII?L25!?LII?mEt 7'7'77's4444m4444?iOy 535!53#IIccIIccFV5!5!FIIIIF%V7'7#537!5!73#!!8]}b?{6\|a%,II,II?mvt7'7'7s44m44:mpt%<4m4?t 7'7'75!441m44II:~t %5!<41m4ϡII?2x %5#53533#5!IJJԆIIR+'##7733773'##7733773?U-,>HvU',?HqU-,>HvU',?HT+&MIT+&MIT+&MIT+&MIR)'##7733773?U-,>HvU',?H)T+&MIT+&MI9( 5!5![JR 73#'#Rb[uu ~~ME 3373#5#'MX5gXXPs8g^QQ?# #''573'375'#'573'375'#43iiiig>::>:hhhhh?99?911j~jj~jI:L::Lj~jj~jI:L::L? #+3''573'375'#'5733'573%375'#375'#43iiiig>::>:hhhhiiii?99?9>::>:11j~jj~jI:L::Lj~jj~jj~jj~jI:L::L::L::L   353'Y-]']'\Df ('7!#'#'735337'!!7375'#ʆjaMOiiJX382^__A^8oW`SZY>o9bMMiiII32___`8qNX>W#'!'577'5737775'#37'ZKhr1rhic5_9^\2F7l7=/TZSirs|ii|bh9g]EM77M5CTbF #'7!###riiMX8|ziiIW!5!75'#'57'57!!3375'#h).,<:dcI,33z63{]/,Ba,LDh'7!%!7'!'573'#37ʆXX::>:MLj~jj~jqQF:L::LII5735#\G0L73#73#\G"\F5735#\G}53!53yXXvvvv[53Xvv'3l|g`73`g|z73#73_`|`_|73#'#idiKMMUU'3373iKMMKiTT '533753?<g=??G11G?'573'375'#==`>>B%%=J>>J=2%%~'##7733773G&$4>H22G73L3()X5373D^>X:iQ53Xvv[73'XL误x73L&p_ '5733V:,C6;E!(">K5!,JJ!73!`g|/C '533753m><g=??G11G?<q'3373iKMMJhTT!73!M'/d73#'#/hehKMMUU/53!538XXvvvvR53RXvv!'3|g`!73#73`_|`_|/]5!/aCC#_ '5733]:,C5;E!(">/ '573'375'#l==`==C&&=J>>J=2%%/'##7733773G&$4 ^ <v 2 *   4.Copyright 2019 The Tomorrow Project Authors (https://github.com/MonicaRizzolli/Tomorrow)TomorrowRegular2.002;JUST;Tomorrow-RegularTomorrow RegularVersion 2.002Tomorrow-RegularJust in TypeTony de Marco, Monica Rizzollihttp://www.justintype.comhttp://contrast.partsThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFL2L$     bc%&d'(e !"#$%&'()*)*+,-.+/0,12345678-9.:/;<=>?@01ABCDEFf2GHIJKLMgNOPQRSTUVWXYZ[\]345^_`ab6cdefg7hijk8lmhnopqrstuvwxyz{9:|}~;<=DikljnmEFoGHprsqIJKLtvwuMNOPQxRy{|z}STUVWX~YZ[\]     " ? ^`>@B  !"#$%&'()*+,-./01234 !aA5# 67_89:;<=>?@ABCDEFGHIJKLMNOPCQRSTUVWXYZ[\CRAbreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni0200uni1EA0uni1EA2uni0202AmacronAogonek AringacuteAEacute Ccircumflex Cdotaccentuni01C4DcaronDcroatuni01C5EbreveEcaronuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4uni0204 Edotaccentuni1EB8uni1EBAuni0206EmacronEogonekuni1EBCGcaron Gcircumflexuni0122 GdotaccentHbar HcircumflexIbreveuni0208uni1ECAuni1EC8uni020AImacronIogonekItilde Jcircumflexuni0136uni01C7LacuteLcaronuni013BLdotuni01C8uni01CANacuteNcaronuni0145Enguni01CBObreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni020Cuni022Auni0230uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 Ohungarumlautuni020EOmacronuni01EA Oslashacuteuni022CRacuteRcaronuni0156uni0210uni0212Sacute Scircumflexuni0218uni1E9Euni018FTbarTcaronuni0162uni021AUbreveuni0214uni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE Uhungarumlautuni0216UmacronUogonekUringUtildeWacute Wcircumflex WdieresisWgrave Ycircumflexuni1EF4Ygraveuni1EF6uni0232uni1EF8Zacute Zdotaccentabreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni1EA5uni1EADuni1EA7uni1EA9uni1EABuni0201uni1EA1uni1EA3uni0203amacronaogonek aringacuteaeacute ccircumflex cdotaccentdcaronuni01C6ebreveecaronuni1EBFuni1EC7uni1EC1uni1EC3uni1EC5uni0205 edotaccentuni1EB9uni1EBBuni0207emacroneogonekuni1EBDuni0259gcaron gcircumflexuni0123 gdotaccenthbar hcircumflexibreveuni0209 i.loclTRKuni1ECBuni1EC9uni020Bimacroniogonekitildeuni0237 jcircumflexuni0137 kgreenlandiclacutelcaronuni013Cldotuni01C9nacutencaronuni0146enguni01CCobreveuni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni020Duni022Buni0231uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautuni020Fomacronuni01EB oslashacuteuni022Dracutercaronuni0157uni0211uni0213sacute scircumflexuni0219tbartcaronuni0163uni021Bubreveuni0215uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautuni0217umacronuogonekuringutildewacute wcircumflex wdieresiswgrave ycircumflexuni1EF5ygraveuni1EF7uni0233uni1EF9zacute zdotaccentf_ff_f_if_f_lzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lfuni00B9uni00B2uni00B3uni2074periodcentered.loclCAT numbersign.01uni00ADuni2010uni27E8uni27E9uni00A0uni20B5 colonmonetarydongEurouni20B2uni20ADlirauni20BAuni20BCuni20A6pesetauni20B1uni20BDuni20B9uni20A9uni2219uni2052uni2215uni00B5minuteseconduni2116uni02BCuni02BAuni02B9uni0308uni0307 gravecomb acutecombuni030Buni0302uni030Cuni0306uni030A tildecombuni0304 hookabovecombuni030Funi0311uni0312uni031B dotbelowcombuni0326uni0327uni0328uni0335 uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uniE0FFuniEFFDuniF000plus.01 2@G ,DFLTkern K:jjjjjjjjjjjjjjjjjdjjjjjjj    NVVVVhn ^4444 ^ d n x ~ K?FGHIJKLMNOPQRSTUV[cdfghik|}~Vb}~ FP:=/////5555555555555555WF<2hKj    FF456789:;<=>?@ABCDEFGHIJKLMNOPQRU\]^_`alFFlWWWWWZZZZZZZZZZZZZZZZWWWWWZZZZZZZZZZZ"<2:=<:<:QQQQQ}&}!0hijklmnopqrstuvwxyz{|hijklmnopqrstuvwxyz{|J%&'()*+,-./0123456789:;<=>?FGHIJKLMNOPQRSTUVYZ[\]^_`abcdefghijkbP 8 &*"   |/%9/!%//!(//5   !!!! 4!  )+V'Y[S]dVf^ #,13_`a@$%%&&')+>??)@EFVYZ[[]`aabbcdfijjkkl('  &%    $#!"#,133RRUU"V[ bbcgh|}}~ !9$%?@EFVWW!Ykl       ""%( ++ ,1334RSSUUV[\abbcgh|}} ~   DFLTlatnAZE .CRT 6KAZ >MOL FROM NTAT VTRK ^locl2locl8locl>loclDloclJloclPloclVordn\ XXX66XXll4ag_f $,l4 DOFSharedpostfxj enabled focusDistance focusRangeaperture blurIntensityblurIterations renderScale tiltStrength tiltCentre tiltSharpnessgetset getVersion - ' ?1 6A6FFFF6_S @?ffffff?? ? @     TomorrowjDSIGGDEFww`GPOSb &|hGSUB0(OS/2ews`cmap DgaspXglyf:>head{2 6hheaSD$hmtx8E9 0locarDdmaxpT5h nameh@"postodpreph\hQ_<]ʐ'8ei'LL4dXKX^29 JUST 8  KX                          P<<<<<<PcP P 6PzPzPzPzPzPzPzPzzPzPz/zPzPzPzPzPzPzPzPzPGP<<<<<<PP<</<<</<M(M(PP<PP<P<P<P<P^P<PPLPPPPPPP<<<<<<<<<<<<<<<<<<<<<<<<<<<<</<rPrP<PPPP5P777777P<55555AAAAAAAAAAAAAAAAAAAAA                <<<<IIIIIIIIIIIIIIIIIIIIIIIII|K;A;A;A;A;A;A|AfA|A|AAPAPAPAPAPAPAPAPPAPAP PAPAPAPAPAPAPAPAPAPA:%|A|A|A|A|A|AKKKKKlKKC(K(K(KKKK#K-KKKKKKKKKKfAfAfAfAfAfAffAfAffAfAfAfAfAfAAAAAAAfAfAfAfAfAfAfAfAA|K|K|AKK?"K757575757575PY%Y%Y%Y%Y%|F|F|F|F| |F|F|F|FFFFFFF|F|F|F|F|F|Fd u u u u u ] N N N N N N N N N <7<7<7<7`%2%_% %.%FF<<<(|z(<<A<<<(|(F<A%<<(wK%KKKKFFFKKU2_FKK< KKNK|K|(K|K|(FvFFoFvFC<<<<<<((((<<K<;A<Q<7yAFAF<FFuF<-FFFFoPFF FFKpFpFFFFFFFFFFeKeK{FNK|FFeFG +<P#AZ<AR<<PPP<5<VA2VV2*A2]W@(<P(<<K@((<(X<<lVXXX0 /9~1H~-37Y #(5     " & 0 3 : D R t !!"""""H"`"e%' 0:4J*07Y#&5     & 0 2 9 D R t !!"""""H"`"d%'h U_ l;AHK+߼ߞA!ILJ.Px6<>>@JRRZ    %+?@FIWY[cdl: "%,-4SUV\ch}~8<36 "9,/6QJLN'kzmovb3B57P>NoikmT #$!()<-7=.C AE D HGVTKUOX!Z#$]&_(^'`)b+f.h0g/i1Ln6JRWYX]`_^fed|yj{wz|Dq&*\a*ej2B MO5;MSu=KZ[lxagw?Qx@7549>=?; !#'(%)&"$   8:>02341RPyA{Cp8r:s;t<q9}EGHI~Fnprtuvs"""<_!`!N3V+d-T DfAd7p  = d C u  ; ^ s  7 Q n ' > a {  "C\v5_ 5iQ 3\A|Bn1Xs-S3]-J_v"FcAu@p#Nu.Nz&FjA|  > u !%!k!!!"#"["""#)#k##$"$D$_$$$$%%5%b%%%&&=&n&&&','_''((>(e((())A)n)))**A*v**+ +%+F+l++++++,,,2,F,g,,,,,-- -8-W-o-{------.!.:.\....//=/d///00P0001'1X11122$2Q2{2233I3x33344G44445"555P5o555566D6j66667 7B7a77778 838Y8x8889979`999::@:e::::; ;K;v;;;;<<2>;>X>x>>>>? ?3?F?x????@@4@S@}@@@@AABAZAhAAB BB!B3BFB\BoBBBBBBC-CNZNgNNNNNNNNOOOO3ODOQObOtOOOOOOOPP6P_PPPPQQQQQK?q 5335357!#5'#ccKd^dn+,_TeeT.-.-  33#'!3# 77Xd!I  733#'!3#$e77Xd!I  '5337533#'!3#FQcPEb77XdFI,,IF!I b73'5337533#'!3#eFQcPEb77XdȚFI,,IF!I I '5337533#'!3#53FQcPEb77Xd1yFI,,IF!I~~ b'3'5337533#'!3#$fFQcPEb77XdȚFI,,IF!I  !%575'#'73'5337533#'!3#+A#$73u1GwFQcPEb77XdE4#731L6$FI,,IF!I U#''##7733753'5337533#'!3#cE#GBrE#FBFQcPEb77XdB%GCB%GCFI,,IF!I 73#'3#'!3#hheCC77XdDD!I  7373#'3#'!3#e[hheCC77XdmSDD!I I73#'3#'!3#53hheCC77Xd1yDD!I~~ '373#'3#'!3#YehheCC77XdmSDD!I E  575'#'7373#'3#'!3#A#$73u2HhheCC77XdmE4$742L6$SDD!I U"'##773375373#'3#'!3#cE#GBrE#FBhheCC77XdB$HCB$GCDD!I '33'33#'!3#Ƌehe77Xd!I 533533#'!3#yy77Xd~~~~!I I 33#'!3#53 77Xd1y!I~~  '33#'!3#e77Xd!I  575'#'733#'!3#.A#$73t2H77XdE4$832K7$!I  573#5'#3#'!3#FEPc77XdJEEJ,,!I t 5!3#'!3#77XdZZ!I T'57'!#3#33#2@-6725 td@K!&RI '573'375'#3#'!3#CCnCCE77XdCMCCMCA!I  73'573'375'#3#'!3#%ekCCnCCE77Xd CMCCMCA!I '##77337533#'!3#fF#FBqF$FB377XdB$GCB$HC!I 3!!!!!!'!3# <:iE77Xdrrr!I 73!!!!!!'!3#$e<:iE77Xdrrr!IP3!375'#!75'!Po0Qo+,,,o6Po2\,,,<u3'7!'#37oo\eOI,+IOeooePG,S,HQe<u73'7!'#37&foo\eOI,+IOeooePG,S,HQe<u'373'7!'#37heCCehoo\eOI,+IOeDDooePG,S,HQe<u7#'7!'#37#oo\eOI,+IOe&}}ooePG,S,HQe}<u73#''7!'#37hheCCkoo\eOI,+IOeDDooePG,S,HQe<u53'7!'#37yoo\eOI,+IOe~~ooePG,S,HQeP 3!%37'#PXXUnXUXP' '373!!55!5!!%37'#heCCehusXXDDUrrrrnXUX  3#53!%37'#3#PDDXXxxEc9UnXUXcP '373!%37'# heCCehXXDDUnXUX  3#53!%37'#3#PDDXXxxEc9UnXUXcP 3!'37337'#5!5!!PheCCehXXP.4UDDD*XUXo9cpcPH 3!!!!!PZ{rrrPH73!!!!!eZ{rrrPH '533753!!!!!EPcPEZ{FI,,IFrrrPH'373!!!!! ifCCeiZ{DDrrrPH73#'!!!!!iieCCZ{DDrrrP 7373#'!!!!!eZiieCCZ{mSDDrrrPIH73#'!!!!!53iieCCZ{yDDrrr~~H '373#'!!!!!MeiieCCZ{mSDDrrrPeE  575'#'7373#'!!!!!A#$73t2HiieCCZ{mE4$742L6$SDDrrrPHU"'##773375373#'!!!!!VE#FBqE#GBiieCCZ{B$HCB$GCDDrrr/H'33'3!!!!!egeeZ{rrrPH53353!!!!!yyEZ{~~~~rrrPH53!!!!! yZ{~~rrrPIH 3!!!!!53PZ{yrrr~~PH'3!!!!!eZ{rrrPH 575'#'73!!!!!!A#$73u2HZ{E4$832K7$rrrPH 573#5'#!!!!!EEPcZ{JEEJ,,rrrPHt5!!!!!!EZ{ZZrrrPTH'57!!!!!!3@-\Z{5 @K!rrr&RPH'##7733753!!!!!YE#GBrE#FBZ{B$GCB$HCrrrP= 3!!!!PDrr<3'7!'!375#5!#5lonfPH,+shTooePG,S,gRnkLL< !'533753'7!'!375#5!#5EPcPElonfPH,+shTFI,,IFooePG,S,gRnkLL<'373'7!'!375#5!#5#ieCCfilonfPH,+shTDDooePG,S,gRnkLL<73#''7!'!375#5!#5iifCCwlonfPH,+shTDDooePG,S,gRnkLL<3'7!'!375#5!#573lonfPH,+shT(v[ooePG,S,gRnkLL<53'7!'!375#5!#5&ylonfPH,+shT~~ooePG,S,gRnkLLP 33!3#!P}C}}(K3#5353!533##!!5!P==}C}==}CchhhhcK]P73#'3!3#!iieCC}C}}DD(K<O 353#5!#3,noon,&3#5!#orr&3#535#5!#3#ܞ͝?\rr\&'373#5!#heCCeh}DDorr& 7##5!#'}}orr}& 3#5!#73͡)v\orrA 3'3373o},,}oor,,GoA73'33732eo},,}oor,,GoA '533753'3373EPcPEo},,}oFI,,IFor,,GoA73#''3373iieCDqo},,}oDDor,,GoA'33'3'3373ԋeheo},,}oor,,GoA53353'3373yyo},,}o~~~~or,,GoAI 3'337353o},,}oyor,,Go~~A'3'3373-fo},,}oor,,GoA 575'#'73'3373\.ʅDDDv: ED533537#333fyy\.ʅD}}}}v: EG 7#333353\.ʅܮyv:}} ED '37#333e\.ʅDv: ED 575'#'737#333@"$73t2H\.ʅDE4$742L6$v: ED 5!7#333f\.ʅDZZv: ED'##77337537#3336E#FBqE#GB\.ʅDB%HCB$GCv:7 35!5!!7.5o9cpc7 735!5!!e.5Do9cpc7'3735!5!!heCCeh.5DDDo9cpc7 535!5!!y.5D}}o9cpc%`3#53573#3573#3###N))dK(dK(\\y^rdc+Hrdc+H^SS%3#53573#3573#3###!3N))dK(d)\\yy^rdc+Hrdc+H^SS %3#53573#3573#3###!3N))dK(dK(\\yy^rdc+Hrdc+H^SS%3#53573#3#33N))d(\\y^rdc+H^S %3#53573#3#33N))dK(\\y^rdc+H^SFE'5735'#53#5'375#TOSi,WK(sEUfQ]V22])12FE'573'375'#TTTTqqEUVVU]<d3'7!%37'#ooJoo,,,oooon,,,S<} 353#5333'7375'!!!!dQJ,, ppdSI,,yroo<g3'7!'#7!%375'ooUdQJ-0 pp,,2oodSI,,oon,-135!5!D(Vr<m 3'57'57!375'#375'#oC-o'o-Co!,,,,,oD-oo-Do!o,,o,,,Ac3'7375!'57!375'#eRJ,0ooDoo7,,dSI,,oooo7,,<d3'7!%37'#ooJoo,,,oooon,,,S<} 353#5333'7375'!!!!dQJ,, ppdSI,,yrooFq3'7!'#7!%375'ooUdQJ-0 pp,,2oodSI,,oon,-135!5!D(Vr<m 3'57'57!375'#375'#oC-o'o-Co!,,,,,oD-oo-Do!o,,o,,,Ac3'7375!'57!375'#eRJ,0ooDoo7,,dSI,,oooo7,,<[ 535#533<1*1[OOO<[X575'#'733DS*8=>[\$)9=>fO([S'7375'#5375'#'73e=8*ess\)9>>>[=8(9M))9=>`p>[O 5#5733#'35ϱO++C[GHOG[K#'H GB.7-K# '535#53357''#'733H H1*1ýS*8=>B.7-eOOO\$)9=>fOK# '535#5335#5733#'35H H1*1P**CB.7-eOOOHGOHZK#'*''7375'#5375'#'735#5733#'35H G=8*ess\)9>>>FO++CB.7-e=8(9M))9=>`p>HGOHZF}353Fy}}}73)v\nF 5353Fyyy}}r}} 5373Fy)v\}}F} !53!53353yyny}}}}}}K7353V y ny"޿}}K* 533Kyy c ~~!2 7575'#'7!53,JQdoqyZ,ISdo]}}F*- 53'575377yoj+JQd~~o\Z-HRdK253Ky2}}Kd7'573NN|OON{NN{N<'7'7'37'KFmg^hlIM=8V[)po*ZW8]K 37#537#53733733#3##7#737# wx y i y vw y h ihargr____rgraaag35mN3I5mNK253Ky2}}K37#537#53733733#3##7#37#yiyyh,ihrfssfr?fKETD '73#3c-cc-cccc(E1D 537'#53(-cc-cccsccMKED''#53773#3d%22%dz!99!zdE%c%Edc!9:!cED5377''#533#z!99!zd&11&dc!B:9B!cd%c%dKETD!#3K cc(E1D53#5!( c9cFT75!FJccFT75!FJccFG>75!FccF)>75!FccFT75!FJccV/5!cc<}i73i>y>,%oMMo,&,F35#535#535333#3###HHHH$~HHHHc8cc8cF3#535!3#!!5'#375!IIoIIo,,coWcKo,,, F3#535#535!3#3#!375'#IIIInJIIJn,,lcAcnncAcnl,,F35#535#53!!!!375'#IIIIpp!,,ecAcuooAcel,,P=!5375!5!5'#5!#3##D,,oooobn,(c,ccJcSoF3535#5357!'#3#!FRRRo!eOI.xrroePG*rrF3#53'#53'333333#3##>jS G01vvpvv21G Tk>ZZc7cjjc7c/ !5#53'#533333#3# qqƬc7c8Bc7cF253Fy2}}F '5353KIyy <>%%sggg\Mr:GR77P#'!'577'5737775'#37'TBox!moof)ZOZXu$?,a,/O RIovkzoozecNbV>9,,9J4NSA #'7!###moo-Ky3|moocZ<!5!75'#'57'57!!3375'#l-*$;;oM#000fy$am"Bc+#'<:Zoc$/1/uf;$5\$A<'7!%!7'!'573'#37כ-]]h^uubHDm::rLGj&ћ/c]]]y wweFH;:PEnA 7'7!%37'#3#'#5375'#ƅiMMML3+5`0 ==IXM MM'3m+\QQY 373#5#'!#5!#dB@cHHHc(bYx0XXZ'573'375'#xdd~ddhR!"Q!dddd[!R!!R<73?@01ABCDEFf2GHIJKLMgNOPQRSTUVWXYZ[\]345^_`ab6cdefg7hijk8lmhnopqrstuvwxyz{9:|}~;<=DikljnmEFoGHprsqIJKLtvwuMNOPQxRy{|z}STUVWX~YZ[\]     " ? ^`>@B  !"#$%&'()*+,-./01234 !aA5# 67_89:;<=>?@ABCDEFGHIJKLMNOPCQRSTUVWXYZ[\CRAbreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni0200uni1EA0uni1EA2uni0202AmacronAogonek AringacuteAEacute Ccircumflex Cdotaccentuni01C4DcaronDcroatuni01C5EbreveEcaronuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4uni0204 Edotaccentuni1EB8uni1EBAuni0206EmacronEogonekuni1EBCGcaron Gcircumflexuni0122 GdotaccentHbar HcircumflexIbreveuni0208uni1ECAuni1EC8uni020AImacronIogonekItilde Jcircumflexuni0136uni01C7LacuteLcaronuni013BLdotuni01C8uni01CANacuteNcaronuni0145Enguni01CBObreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni020Cuni022Auni0230uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 Ohungarumlautuni020EOmacronuni01EA Oslashacuteuni022CRacuteRcaronuni0156uni0210uni0212Sacute Scircumflexuni0218uni1E9Euni018FTbarTcaronuni0162uni021AUbreveuni0214uni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE Uhungarumlautuni0216UmacronUogonekUringUtildeWacute Wcircumflex WdieresisWgrave Ycircumflexuni1EF4Ygraveuni1EF6uni0232uni1EF8Zacute Zdotaccentabreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni1EA5uni1EADuni1EA7uni1EA9uni1EABuni0201uni1EA1uni1EA3uni0203amacronaogonek aringacuteaeacute ccircumflex cdotaccentdcaronuni01C6ebreveecaronuni1EBFuni1EC7uni1EC1uni1EC3uni1EC5uni0205 edotaccentuni1EB9uni1EBBuni0207emacroneogonekuni1EBDuni0259gcaron gcircumflexuni0123 gdotaccenthbar hcircumflexibreveuni0209 i.loclTRKuni1ECBuni1EC9uni020Bimacroniogonekitildeuni0237 jcircumflexuni0137 kgreenlandiclacutelcaronuni013Cldotuni01C9nacutencaronuni0146enguni01CCobreveuni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni020Duni022Buni0231uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautuni020Fomacronuni01EB oslashacuteuni022Dracutercaronuni0157uni0211uni0213sacute scircumflexuni0219tbartcaronuni0163uni021Bubreveuni0215uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautuni0217umacronuogonekuringutildewacute wcircumflex wdieresiswgrave ycircumflexuni1EF5ygraveuni1EF7uni0233uni1EF9zacute zdotaccentf_ff_f_if_f_lzero.lfone.lftwo.lfthree.lffour.lffive.lfsix.lfseven.lfeight.lfnine.lfuni00B9uni00B2uni00B3uni2074periodcentered.loclCAT numbersign.01uni00ADuni2010uni27E8uni27E9uni00A0uni20B5 colonmonetarydongEurouni20B2uni20ADlirauni20BAuni20BCuni20A6pesetauni20B1uni20BDuni20B9uni20A9uni2219uni2052uni2215uni00B5minuteseconduni2116uni02BCuni02BAuni02B9uni0308uni0307 gravecomb acutecombuni030Buni0302uni030Cuni0306uni030A tildecombuni0304 hookabovecombuni030Funi0311uni0312uni031B dotbelowcombuni0326uni0327uni0328uni0335 uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uniE0FFuniEFFDuniF000plus.01 2@G ,DFLTkern K:nnnnnnnnnnnnnnnnnhnnnnnnn    Nbbbb| r ,HHHH r x K?FGHIJKLMNOPQRSTUV[cdfghik|}~Vb}~ 22PP:2=lFFFFFPPPPPPPPPPPPPPPPWdFFKj((     PP456789:;<=>?@ABCDEFGHIJKLMNOPQRU\]^_`alPPl#22<<:=l!2(<:=(<:=nnnnn}&}!0hijklmnopqrstuvwxyz{|hijklmnopqrstuvwxyz{|J%&'()*+,-./0123456789:;<=>?FGHIJKLMNOPQRSTUVYZ[\]^_`abcdefghijkbZ 8 &*"  fF7UF27FF2<FFP|  ! |!! !  )+V'Y[S]dVf^ #,13_`a@$%%&&')+>??)@EFVYZ[[]`aabbcdfijjkkl('  &%    $#!"#,133RRUU"V[ bbcgh|}}~ !9$%?@EFVWW!Ykl       ""%( ++ ,1334RSSUUV[\abbcgh|}} ~   DFLTlatnAZE .CRT 6KAZ >MOL FROM NTAT VTRK ^locl2locl8locl>loclDloclJloclPloclVordn\ XXX66XXll4ag_f $,l4Math3Dj?*xyzmathsqrtbufferwritef32floor,ipairspairsminmaxtableinsert|stringfindsubvertsnormsindicesv3add3sub3mul3dot3cross3len3norm3lerp3negate3ZERO3UPFWDRIGHT writeVec4 writeMat4 buildEdgesbuildQuadEdgesbuildSmoothNormalspostProcessMesh6!!!6"""6####6'##!#!+ )##"##"# # "6/##!#!I 003,##!#!I 0 6 H###6  0& .>?7 # " #!  " #!  " # !6=3336A   !   @?@Dp    @ `A _C554(: ' ' 5  7  8'  + '   J    0 J    0 1 5 7J4  (9' @?@ 0 0 (5 @; ) ' I  P  ) ' I  P  ) ' I  P      1  :55 @;4   M   5   7   (     @ ;##!  #!  : J4   4:5 @=4      :55 4 (  :  '   '   5    7 8'  +'     11 0' M579' 5 @  = (O \`(<- d`'J- d`   J4  4:   @?@P HG?4 @@?@\`d` 4O4O48694( ' '     "   "  "6        "  "  "6      #   #"   #  #"   #  #"6      #   #!   # ! I  $   6 H   #  #   # 6     !  !  ! 6        !  !  ! 6        !  !  ! 6     ' *48.   #   #!   # ! I  $   6 H   #  #   # 6  966  A;D  J  P   J  P  J P 6     J  X   J  X  J X 6   :   !   !   ! 6    )  )  ) 6    "   "   " J  X J X H  A  ; ' " " "6###6 : 6    * @?$& .>@  A P X?@?A@@@@@@@@@@ @ @ @ @ @@6$KUH 6)J6++6-P6.T    i! "F#/     !"#$%&'()* !"#%&'&(&?%&'*(&%&'&(,%*'&(& GpuTypesj_G GPUTexture GPUBuffer GPUPipeline GPUBindGroup GPUSamplerA @655uu@ ClonerSharedjenabledmodecountscalespacingXspacingYspacingZradius radialArc radialFacinggridRowsgridCols gridDepthgridGapXgridGapYgridGapZstepRotY stepScale MAX_CLONESdefaultsgetset getVersion bumpVersionclaimrelease isClaimed 6@?@@ v@            - C ' ?G L ' ?P  T Z ^ (A@FFFFFF F F6   _ S  J e <    @  iEarly_Access_3D_ScriptsЃ D DjPNG  IHDR9My cHRMz&u0`:pQ<bKGD pHYs  ~%tEXtdate:create2026-07-10T19:00:32+00:00.%tEXtdate:modify2026-07-10T19:00:32+00:00"9(tEXtdate:timestamp2026-07-10T19:00:32+00:007MIDATxyx$Yuƒ]%jQTU]@/@y x xo챙 O77k߫T*I]%{FG*2\"3O*S=O*s߸č{=Whx5T$ZGXeR QX$*$RtZ,b󔈪ɔ @wQ,rZV+z;("粩?&W*UBkUЀxR!nIR I2 R Ӏx^٭"Q ԭ6X1%XrkUЀarWjU4E'RoVHJת$h J+W)EC"IZH+j@P+ ֯V)%U?8mD*!NTLf>THʽQZmRҀHN+zeɤZ*㥵tqsmڕLi%,V rkUNrEbϩLj% pTU>X+Ʉ(VN\q :MjUDRC4NUtTTZ|NTDBEZ4Y0Mj%:^DRC$_.E\KSA%C`BCVXU* 3A+#DtAVe_I j喳`v*"1:ܮz%c DdZ5xhb*DZ,ET`&\XRhâzU @z׏N+@G"WZ'-ܟ+P׫,*,FѼo F,8{s0JXl>Q@eV# i 6zP贲.vgD jiԫhN+UJJ۠R8mriuX)'ҘifTy !htC cO@X +,T+mX}OT2߮gXzeEVI^fAB}_w%e%WB1`tt(cP+E̚Qn}4lH1nDP+d ,-Eʲ\)TRl;^d"&΀FbU:_J HP֫`>bm4ڪWR$IbttجKesWaAЊ[^] 'ج4ZEtmnRNвM+JH۠I*yBpZ좀2#fDAOk% *{]M`%k^oƎ`n_I'z]zy5ETgZi`ɾ ABZ 浫D+MӐL& (%h:Ti>VTZQD @z" ]T*p+0])VF"| .XZQLMt@&Tv%) VT۷(ZvԩV8mH+ʠEBI# L~{jE$^Yh,bXP,+kET(Ɇ:H۩䁅,+DbT4sW(T0hz"WDzeIdzlV6H B64dx/3o3U @_lRNk&A,P|󚋽^}M_VK?[oTK_gGiV0SQ8+`͕h%ZDj,A _>/.he%]LB-T+ t^vՙV"A"JGdy X+}Qbn=_V5͵AXF ^Qju˷e-IgU4Z%*RҐ&2:.P%m@A(WkR+ ZY=OLeHlҮ^Uy*AUyqV VT~A4x0VIB!Vvk+D5x"tt*o6x0MA1O,M+h**|ZV(ժ6H j%yv6]LU,AD6HlҊ^UzE جV-k youW/6ɼVT J8AB*Fy1EyֵD(@ ފFFX$W*`cyiEVIWʄ\*q*oa1>.p$]"Z O{., Z %a_i* P6Uh}QU0-RXҨW/ FZ +՚,IkV`5*.V[ _+1E|ZeWV[XdT Zej!f n3V5%쁸E6AFm-%Jʲ8C^skO IGzEӿ]PzܦhUn߮z]AV<=oOk#hK],&簙rґ* 3 ҵEPV *BZ)땾mЊtpPJ"ntrVuUA ԫO+^J5doϨW/)fҿjRYdKkAJt1fRдt*n}uEctPR%@ ^ STZaA+ ~id]*-ESZ|UaQ+0%M)ZӋ9ҦWTKoJn"N:9dV<Q\VZz}I'vJ,0̐yu^>V)eV׳ Vz_4};VzE4HJ]PJQϣVз2à *Z%*kOYj^=?"v-A8V] 8W,_N)ݷ~#+km0M@:P@>C6',zʚjq,UڒEZ% Ҫ6Hw1̷A#WkZ Z%௖Nuk>UzU>Ԋp-}0]m#`)>(diEVE)UiZe44l%`k/d MKqKAqf@l9j.yAXXI_ZA~" u6Y VJ1Պ@5 _ZYe, GhFhJyR+Eqa4VηSjE3VTT++REJRf!47ԊpKt :Ԋ *VvHv bfz4lJXZ9ltT d=ULWr8}8 @  k*KWż-UWjȂ*GSRd@dTB$buZRYC%ja (fUS5"( dΡU*i3A/ pmpy2KA`3)ϤZI9|{sI*ūʇl0Ph*o7ZtrϷhjdiU6S p'Wje+K.lT\WeqqFQWPeTP*w3Ĉr^R\VJU AJ_lUTIv E?ƩB\f3"e'W"dI,~&U зƕ%(ݒW3Ee"BeAU1:n!ԊlrVD ٿJlϟfUT3;)=T+3꭪TF(tr" 6@߷.kAkKZ%?ܟk\2j+}VtDY*^峙nU]nT=e|RjE9FWXRM^=jE6($QJWtZY*g"Ԋ z,X22("lT6Xo*+JDVE*WQL+|H#&HIMߴӪhe\R+[*6z09^(m.x!?/M*tZYe6fmi%d"ߞJQf)zE5MEٿI >VX2U6 VT*^Jz& әOЖ^20M20-3GfV"z[/KB,*drk%Ԋ*xaiKTZej :5 j\ bVC+3Vt+3 KRI,J){ ZFyZU_e^3!!JʭPVM+6(ltH VTzEUmPTzUJ9S095W >Veի,:,=l]ls(($amAVuWF]2˛Yb.jtr]6WK+}ƒ lJUz%U^A.\__mi!ի8Vt^QAJ5 J ^+3B9eY#Jje^ayiLiETJ Z贊i%r6h#Ԋ ȥ5t+[Ƀ-NBN.*?iE%ì0*Mf- ۝jMƔVyPO16Y(2D+r"ڏJeJT\_*+oX}.h2aR+*iSV<*VVy}V8]"׫W@}\$]6TWU=V%ƥ ehU왽ZI"8kW4F|6Sk%hGʜ=[i(>SӷR h[H6G\ IŴ2wwlVY(oUE\ܷ)ZhƥnrHze5EYt^Ny᧔iIq +ъ^>ekyTZٔo/~}b}[fWt %W/ie7UQi۠zUfQ+%ӷ>sz%h+zERt}JUɡEUbT`+Q m46ի"LjtpkXPj%׫Vd4Vf߻@'P굒财 ^tZ)RZQݟ'(V }nfb1(@?3SVm*WU% Q ^J!e4[RS.j%V#TUP])Vr-j |FYJiŠ Lի:j%5Ѿ7ws}2jd27nƍ%jES>YKP[V?gx\ZZኞժWfKӠ~ӬjUR+ ebkD 4OUhӊ6OXa"zוDUd]jE89v6HB^DZQŨH&.UN+zEe$ՊnuyjEsJlzfLJ)(EUL& 3x6 ===H$)ɦ[ICf)@ `jj ͩ~?v4B!D"X,H$*i͛7(Iq2ˤ( fff ^j ՊD"Z`ff$IS`h =k3T!ǿ_S/\,22R|{ZvpbEWdUI+!}[˨ڢ׋>_l2V2W[}ku"Y*JT+AˮWTnTG׿JO6U2EXjdZI +*5V2VQ׫"Ze7_%B@JJ:yy5̔Z-d.Ts|p}B$QXM}`cT~BF=h)+Jh(o'n&Ҋ\CEQAՕD,ʔS}PVc);kEe$jF>msѸ~)PR}{U뫤2S׋#"/W}IΔ_Uq; A:dIBmBZ[=;kiJ)dAY%%WTvQ+b*/@%I\hU^9m"׈>dJC:'Voa<*@@'68ӟ 9}m# mP51I^26'fxX~~was4PɠUO7qi`6۱k#;hX %ҙJX L 8\\Τqs {^|gr{<۷T ǎC"ƍz!Iv;qʕzػw/4MC4A4űcrsЀ֢A]vavv%wӦM|bX,l8q ȑ#88V.>X}JX]F4.<$WD*VV|V"YmP\f;>4'cx@36f4<ۯ Wpx[8 Uº&;&HTc1=F]Ma|OMD<׹q 㟝)՛d:;1s'Kj_AwOJ=C4xj(juYy|Z 0垻Bq2 L e/:|+2VQˤX A=܃v#E$Ο?hii] 0::X֭C<ǫ M`Zqw CCCA It:####x. pH$<11s݋A`I EQ099 Me `X܌d2s/466"#K7zYH$؈cǎajj ---طocfbbFTU5@~E mt QԈ*J8BI\1].ժȹMJIUtUԭV6'Yk]+@'Ӫ IQڨT5Uװ&ZR+ɬVELWA?·Sj%gJ&TcdKʐ|JDQ(3tnE֪$^തC3(` kHHH(> Zm)p )WGZ5*5Vuꕆ1*hU潐rҘ>ၢ Epa*+wh۠\NQ zELH3t,o qFDc ,] p#?Neiջޅ_{|#W{;~6\}8pн΅.٣>Mn|sp^|HŜL&qi]vj" Aї_~v킪ESSS8y$6o ͆&$ LOOc׮]HRe8u̠id9=rСCF9qiر~zH+W;b$IBxW\ǭ[" 6`ӦMx""xG4ECC&&& "mۆ_gff---hnn$ B9%z_QjbZeN+I*ӷ:JתzEʛ*.jJdԪ\`TZ} ^>MkTE6TZU\ \"l&*ŁJX"WԣdJ4|kZqCEE߅^ Y{F \-d ?o--ٺըԋH$R4A,͛ڊys~688{{$1<< M UUCUU߿ׯ͛7!y$ItwwgSe p:8x :;;q)~r < >}. 7o$IPz}v8x^#HsNĉEGn /78s &&&0>>/rᮻBccU6`kk+FGG!2糾D`' Z]|yU5MZZZىx?-p;,td빥ӅO?\7~xs/c[{W Q<{t=;_jq\>~PV{%|Ю QEj;zp,ת\zUd2x S^gg'.\Pft-t<_h(m2-2c5,?Vj |V]#znJW?Up$JzEej5k%hc)ZiElԊ/X+sy %W֊VZZ+ѼVIKu)J[m yP+QneVMjU;*_s5gPAvϑ9ˠd{gvsZ yRT, >UUmp*VڠGB6֫O|ZQRݜV9Fh%UQ(Uf SsZj%sjPT ˻ϐY*)F+AH4QV?e`V+WhPL 2\4Ze|.ۂZN4h&%i!LMP4/]Ľs#%/OAG7? l2[#w`c $Yww`;w6n>valذ!ov#=(v;>N7[AŜ?HXn(=w%.^ }}}: 5ͤv$"H^J0998NDQA8N\\.LMM 6 ~~,~ zhhMMMY{D m =т A(XM 46hE8.>iVke*:Պtd2};V{ij%ծϺ5j <|ԣVmP_-WVVmP`a~EsJ| +:DAX8Rm#IV}S b2L~8ibFqjj T 7nǕ+WLi6Uܹ.]e9++"V+dYF[[p̙:pTUťKFr E< L&eqp\hjjµkf(E(؈{+v\2IUUJ0??T*ehe#mip:$ @8{,ZZZqƼ߸q7l 044\.\p `ttŰUtj 3334 hkkݪZѶ@ڠ> TNCDt_XE jbuZAJj>@Y[}6TCPrj#qJMDK~1g\GJ$,2< +6ke9ju贲TRPz%CU5p+ض+!(w6g|WaF7^ jh"{V|cxPU Bw>^) _UC6`8шq}ՀEC?4|/aOa,$M,pdt614T[:\Xh$.:kW_ŏOTtT677wAfOqIZsMիWDZm6lذHCCCE*URz*v܉; U@zkkk+`~~ǏG,:(pv܉;(!"q@8ӧUHR뮻  k.`0^l۶ 022H$D"hkkC[[4MC4ũSi? ox`rrn݊Fc7MbjV߿$w0\. ϟ?۷c۶mPUϟG0U͘HW8$ɬ`iF"+y@_IUWλNY+֪޵BjUVZk!mT) 2^+JߞlvB(`0=lZƿ\RfezU 5ЪrZ9eʥz*ӮҪP}r|i+[+WmKR3&<ԛVm0Iҁrj%Y(W*ԪH#I2hO^6Ho'J(o_߹}zLF8U^Kz׆q&2|'j&hus2?m'U>t"xp+Eß5 A|}xHwi㸻qo\>Qo.$SL'ˍOׁ}7O<'wEBI,{Vn Gd2Ŗ+ڪIJ@[#ZV(U+AӃ7"J̙3]D6[Yi`$I*9.c\D"_| 2BВvhx<^t ###y&TU]b E@E8D"[l ?55'O-0VrgNR$ X)t:`u&?mFE"SұlN)SfIUerfʲKgyr}L0#P.,Vli&mTei-dTiJ̮.g*Pʜe *Do_ZIZQզ>pJUiBlEWK ]A8w׫AJ*JȰY#i+W+Aϩwh%Z+dzA3g|ZZ eZM+IDA> _jɿK*^VkTWfB.UVyUϠUU.B}?Z-db׊VR+IUVؼڵWꁟ4fI$ 3ڮBJ|aVyU<ϒy :bnK άV1'. rαi8+V!U%bAv5UzX+i[ͷM+Veݷ 2oW%)yD߆]u)\+1}PnkEBk+x ;LJכuczŴHZ+-kժW:h=D]իU EA|2TgZ-2i^Xb'VeļH+yql- 2Q5lٙPk3Ydʓ\KڞP .K9MGW[oZUkE\S}*y2[uE$ӊ$֪ԟVE|;kHJ:!*[V%hEBٹ }nUuWVXZLjUƺJVe?; uxV ժWwjPDZ+J+QvREZ k"W**kUAU.9ETd^HmI5ܟcy -iYӣ?eEmhX]<8ZiKwV^kU#V]BǯVKYݝNYKh`a.Y| S2rjkk%Fb3_-VfIZ:WϠˉ0R_aٵ'ZU'iU^ \JWĻ4dǀKx.eԪ*JV *wVZ :~e^)5 E;՘YP̦ |mUXU>S'c2UfJ2TgW^Mh&59fP;6ek5@v7\e @IbįFqR Wi+Z·כV^ yCaS%,C%X+}ԣVYPծ׫r Yjտ*%k>O퐵*EלV^rke<;Vm^3ZɰVk%gNXNJT[XyKa8 3 VYзg]he夋ԃVղ)m LEwcy4&ǗU6-*AñV5횩뫖7csSvV"ZiyE@*ϦzUq']/]>C=kU. *h/DtEPWg2KdjU gҪ!iZUNLA:?j'SRsiU|קV*Lr\o6 ы*Mmp heZɚ~BL&!#y09`vl3;`ij RQhU-Z\P;kAb6,VFG OZ}{eJ R?ԷoWQIi-iz*tjsk1[Z˧@7+j|+Zϐʽu^NԬw۟3>kUB1WVy(r^zE-Y Gtr_[Ξ ?f̟2^y iUٴ5CPVe:`gjdkekU#ajd2i%CȂ錀4OgJW`*I^[TZH$+iMaz_rfm4&@?㞂j_r4SVl[m0=rU5WzKV W`9}e"Vr\/VR}HCUAֈV[ U\/*0߯#1hEŔꯖY@ʺC)TzՓVMT~|Ձ2Qg7ZZ?SUUf}C[gbkX+FHdFdv=K;ou;~fV3T 6hGBi+u~O=뵼h2cs-ZNP5jRWO>n}XhRVQ6X̎zϔuv9>S)jyS[TVjumayf}zQJ45*v3ze^J(r+36}R>h&9RzWfʴܾykV-UgjիRVo_QȴEqmdAf}XٿY}'A`fiRDQJb5j˴eZ2pֶM\f^2գM\as=ڴ^MY6׫hjy^Z6ף]hZ,SLiKf-zuZj˻Yk-ZӃ˻2Xv2pꇕh3TDWcyV+Xzm2ԫ],X0 0 0 0 0 0 0 F 00 0 0 0 0 0 0* 0 0 0 0 0 0 03 0 0 0 0 0 0 ì"Z0 0 0 0 0 0+ AȎIy,$IA$ =wA6(ߦS[XT&5ܩg(PUuUEj.$#RkmڲR56g$I$ QɃ!#U^T d%w"ȪL~^/$IZUH$C<n/x=3 0 0 0 0 0G>i! bjjh^ͰC44 PlhiiYQk3LVJraaaanc}-.=B~akk%dZcL1Z`:XWSm Oji!@8~?0>>^+65M˹4f8NLOOCUլ$8|>_I0::H&C[[`P׋X,V+A@SSn7ƐH$jm0 0 0 0e xbnEDT0 0eAv8pʛi)XW@"22$A,kEQj]%Ȳ ˅YR)@(C(K3Z4lbACC`5MTIviɺ)(yF8FSSxn7vQ* ˅p8\HϗUGAn7. Vuzbff---PUsssuSaaa) tX+t@^ er˧ nmNӎ5555.\(p:8qTsZp[k:VTU\a<\xLeqӋ,,xjƩs/z|casc"xYi&_@ztvve/ ڱc6mڄg}eA} VYt{ӦM>o}[8yd j-EU KF155UIFKw2D"HRHRD"Y34^.dYF*8^oPX\H& 5@4AX,xZrp,wqSSD2l˅VB%T*`0H mZֆH$0X,PUհ?p&%c||ꪫ 0 0 0 Nv> =<>}j|x&_ك߿o|ѭ5Ў`'o޻[/F{Q:ػwoXq444oߎ 08\Cns=裏^y\z#ZAzŬ4`vH歀 LX!`~?\.ǑL&111a@2Bcc#2o XTʩ)"rze&H 6' MӲ&drԄɼw=j{@eavvvm@UUn#dzN 0 0 0 1NID*`!q1XVX,$I$Iu5QԫX,gt~s1;;lmj"H<0#lky,˒Css3"HEmb9|EAgg'&&&*Z_0 0 0 0Ldj/`MQ 8݀(* hJUghll(E/o~𖷼phllӧgXV/2/ȑ#{L&aZOG?Ѳ_żp}Ҁlnqk>ĕ+Wp}_װe|>͸x"7o|#Nu>~8z(:::O~'pUڵ y&8`En?~=1 w7 +rg?Ytuuᮻ—%\z//W_"6B#!ln)^{p*?uoڄ`7v,҈=5xq;> ;g?X,Yq]wC~k___>ßb1x[ނػw/O<.__g>|^pwv}Ů& {<|~;;;[q"T^6{R^߹9~XV8N̬~=t:!BU]:w0??nߣu~~. 4xvcbb鄦iew=??ÁFv:iFCCl6\.`mAO-z܌p8P(pN^sss.Wzj?%Vv;VkEAl ڲޫ&(C>77ӉcbrX,1a+arrҰ`|||Eaaaf5|_mϝ< ;""?^M%H/2~:x)=s۱}v鱧k^&QwiIb}"=+6cg{}q< 9/[فR-e3ˇәXԄm^/^{5l۶ w}78l@: >aB(폀;pa>|T ;v~3>11A Iec>1c,/ vwwrᩧp+fݍsZ Bm5k(@ F҃%c);XK" $gggտP*b4T* #ICChA+=$cp:pY$3/"^/fggN4LLL`и&+ }@CC d}B$A @KK>=%w8ι2|>VEf[R+j].n7s.*%Ȫi $Y fffn:%bsXV\zݺuX6ዦOYOe0 0 0 0 gu%8Ͼ߇7q H_DRE[2Kf1M 8Ο?]vrjB$x^c^*` GM(xm`譌~C S5@#w`OWo޿WGeH L+tЯ .ł.D"aa[)$TUO?6l߾vے1X, = ===Fgg'tq˖-?M6OO >199/YWX^Qu[;о PF fDFI|G2b1V{B!#v=JiC 0V\.Zq4mlF8F$oH&D jJsH$,C,)8C f41uAQ,%IY6Qڊ骪VJTAxœW}aaaaVX~; "ҿq>H@ pB0n8'N>tvv駟}UAwqȲCCC5]Ӏ:=nuB ~;$1ݵ99;mNHpb(9V߱ݛǶkIYsqy8pzq6N'zzzx~z|>K7wuΜ9T*?9&&&aÆ%CCC$IhooϹ┡|K_… Wc_JU|ɬ8v؁7_?{ٳxߏ͛7h*6&8y smW#X133P(EQrx`cc#B0x^h4 eDEx<+jOXzhjjB<G8ASSnwE/)ʐH$zQ{/v( ڦIRFss3$I2V\%l6477cvv nVHe$Uaaaf-QT\O`ϖKA~=_85m^(A+xˡ8'J,'NGϙܹsO~wpy1<<6^yxjGz|4EղF߰6[/ =Flč06ʵ W^Ν;q…nGWW4M~_ ^uBQ?h;;v쀢(8y$.^ncK/ݻwcppn!JappX5;;A׋ϟ7&?1lقk׮e޼y'NN8'NW\͛73Ğ8q7m>ׯ#J կǡCwwbؽ{7:iɟI+A$5fKK%VUDA+~^D{Abuiu枿VfuֱlhllHwƾTZ-@&!|><"B$IBss3n޼I+ޏdte@SSSyWZ,abb`{^κOhkkl*xPYlٲ7n܀,~ӘێrZ]۬5=+jZ)Z,j+~X6syLJy%gdžO+,$ ܹ ÍM^9P$kٗ.O|Xݎ@ @[)Z{<#kjESSJ $ V5+k]o?pBAv"c%RkN(KE4{.?לvv{SS"7Z8pN8۷'N3gjm 7o.Zzԫ``X̔Ǐ kl%:+&ZI$CCC0mhh\t*\[,ajE4 #{PU"H`~~_}?|&ẘС JUx═r!  0 0 0 0Lmc DR{K't2cB*D"ZT|` [0Mf_fׇxo}[*pZ0A+`I$@Akr(>+GnJrݣh̓t E dilDѺ Bа* փ{T v.4ڊ}Eە@: <;;"'Ax< ʲ0 0 0 0L~}sCὁK Rs.04vׯ c jm j3}Ho:r gX}2$I+&2&qN8͛7aXkWK4M8ZZZp8rAxn:b1<]І34 faaaUPύe0aE/bRXC頵>,/fiubVƌ:=(7;;p8\mmmp:E[Keji몜9zzhQa٠( FGGWe^ 0 0 0 Ô3c!x,"norVt+sq<3:_0 0LE 0@i3PVJ`uDD~O<2C=G8ff$IgggH$VdaaaaZTELUqo,},Zaa*d|fLiښX0 0 0 0 $T;C!xمp0XQU FR8`Q'3ũ ^P(YEA`aaaaafUt OfoV v^Y`&b"81Pjm2BX,b$ UPU4j-,HRUыYJE `ZfaaaaaV%xo堪*DQ +~$IP``EH\WI`ZH$LmXkdY.p`~~~a&?󘟯^!V:fAŢ 00 0 0 0 0 ÔA"@8&E@%L" fy߆@sm<~_EeRS ̝zN'DQD<b,=IvFyE01 np_E@:ʆ0Zj˻Yk-ZӃ˻2Xv2pꇕh3TDWcyV+Xzm2ԫ]*DžkaaaaaaaaaaaaaaVfaaaaaaYEpaaaaaaaf!'Z۰fYV5n|y``-֙<yX+:XlX:֚kdi[M֚kZezdS/zȉD60LT>Yp;dsp[a\ߙYf%\Z\ju);eY wk+N_hT*M(h+q$I+ @j*TU $5z )Pv^r EQ սTjbZUI/S9| W>| FC4df|E6gZ0 0 E<{azz>VCCT 7n܀(x'`ۍs^ ì0 }>كcrrxMMM8uߏ\vmٌ޲e n7NbrrX,hnnƆ pƍ `zz:onnϟ($IeE$e.[n9χh4_|M6ajj sssU&zhllč7߿,ZiAӃ@ EQ0==e _NC*BCC6l؀'N,ݞ={DpҥiZt:K n .͸xb*uռDOO^/4M _H$R v^y6l傢(˗J:n,˘/wX,޽{K/QHnՅh4%mذpSSS󡻻>ϘsE񲏹{nB!\~ `۶mhnn(@__$ x"E1u&[.\@28}XmeΝp݈qnܸjŹs҂i|(r2m6ϓw޽ؒ6oތyIf 0t;@ss3TUѣGDߏ;@X Ǐ7>ٴi݋~8q---!2;fkի.)DQwa޽p\FA QMA4 {tÐeN0L] _&$b j$Ia) łv " BUUq AQ477}\$A~zh`0HZ}O> ł'|oߎ۷?ߟ,G1f)_~o|p87nX Ry}>:;;1==]sg@X,عsgp. 2Ο?A|ec۶mpt:sNzcXrCCCe [l)7ssshllz7o"oܸ֭ VΝ;K.Aeܹgcb19s׮]ᨨ566bݺu%NeHTT,lٲ677qYWlvwwcvo>ӧqyȲlԍrɜݍ\p'OD{{;l6_ٳgq!fff Ivܙ5]ͭV+nvto;alݺ7onGz;ܳg(V̙3YߣZؾ};Z[[ommEsssN`aV.ox`̙3Yϔ{/E~# ஻2VCAUUۋ~;F@x E1']0[PU8p^}UN0LYT"2Z[[FىvXVҥKb;D`qUlݺ. dCWWۑH$( ._x<h9`X6,`In:ףOF8 0 ØDe\.D"$I\.`d[ ^FK>ŦMr)F_V]]]꜖R}TUC$g2>t^˻±(ɓ 27jbΝ|8}4N|>C_~D]]]8tdY͛7с~8p1@?<<_~ԃ~75t,AWW bpCCCyv133P(dgZƍ( , 6n UUqMAtttr/Ek I( &&&0>>M6arrW\1l] M l BCC80n7`X*i&\.hP(I#@um>իزe <׋/" __I@_?dYFCC.^h~z~$eDoo/~o]Yp`۶mb.]22哶lقUГ-7oB!\v ^4 6 ```sss,˰l8s ۇX,ӉqcƍedCCCYYݍ@ Ƚr励}6mqetuu!̙3>[nao޽F]Χ q9C%nn CCCXnDA;::aX,˗/# p`ǎPCCC2Vl766"JAUUb1鶺m6x<(>LLL`ӦM|ZEPq$ شiΞ=[0 ìMn7_P###hooƍ!v;yR)LMMׯ7AFFFpQ9r8(Fd2vڵ ?}>E<$IB{{{IVV+111a~###釡;v(pj ===/  H?h{<\z.\@KK $^~eB!lذvH%755 .`Ϟ=|8s .\fcϜ9ݎ^Zׯ(faƦMzqFn @ ̕>fPJ\g1BUU# His̠oz6mxDZccG?Ξ=^xMMMxꩧ~b?'O⩧$Iؽ{7v܉xgyfcb38NرN׮]Z###BMMMr \.nݚz sD24V3jԩS–-[ z{{!IN:7n`֭ZX,ӧ( `۱}vԩS͛t:aۗLdmWxKX,ӧOիfb1'zʕ+`aZqI9s^6 ###8w\I'… p\ؿ?n7.\Pq\F fb1D"LLL͛ؾ}{^sv%LNN _ǹsn:x^HۍQ?[nq clx Jy ߺ\.-644ƍxe(7obrrgΜؓ$ Ǐ lق~ky&n6#ȼM6'Oıcr χ1E:8s n7> ǃ3gTs[ZZF,Wnv{ϗs `*N:A?ǃSNرcn7=j`0P(?} 2^z%\t {jfCCCΜ9c*333Ǐya!'CQtttH^/<~?沶)7իK*", N<{G-1tȑ#p:{'ݻׯId۱w^ce-5^ 8~`bb˜(0 S*VlTQRy^3}!hoo7f}l(p:J x饗 6mڄh4j<@NLL3C011ݾ{3 0 CC enݺ{z<A賉t-`rrX yg~zlܸ֭[IڵkHR8tA@WW4M3[gΜAWWK86}E"444ԺȦx<PR@rvvgϞEkk+ZZZсWbjj nX966fc].h!ʿP(EQvHf+3#ҷy^j$IA0y=5I5\kA@CC ٞz]ٰap_WꌌרjyksUUȈ<fffޞ84}h \FUχT*esArB+땦.vr yfƠSuJ&bιl+_?S7fMy+)`vv|2֯_˅477c֭|E$attdv `s0 0L4 Ołd2 Y9CR6ۇW|Akk+}QAe3 %cccX,غu+Ο?oL2Yr%Vt~) $z꩜V2رcdUJcc|MӌtX dx(, MpZk0 0L =# bjj `RAa$ f=99EƀpWWDAH /~hhhۗ|gx衇؈D"at-KV/sƷ0&9Nymkkix"4Mƍ^])fffR(kW"`Νp8H$PU5砒,YuAXmmmFϼdҸ~GsMIRyb1X,D"F`A9ł۷C4?~aYuW Zp\ƀYL,˹RZ qرè,lփ\*qYܳz~Gim])\xhllSعs'4M3&8}``=1Cl6[V[ZΝ;aX ?7eYjj͛7 ?\N[e{쁦ix嗡iS{"0 9<~cll gΜ1Auq?(sˊbvmX,~:>Xւ٢Μ9^(9@yY矇(x饗^={/_d,˸{b2W\WʦMӃun?#IS{buZbZqFnǶmJ'۷_Wpbhdz;ށ??Ν;裏M6>G#Gp}K|_pa<7aL6|3Aoo/_r,OR)_~ɳJOOOIxmv8 |ÇCgggo, >'Xr<ǃ}kx{ߋWel]vp-oy UӫV=1~栧[LSSpԩ,X M={[ЎY\.c0, 0 Ԏxl҂>|xIXgxg9,1MMM8v_488h U~g?1<_V>-Է?g>|;~'xo|'pK_G>|#oodWe}׿u|{LNNMozv;|A| _ooW~Wiadkii.{=YOr'ć>!+xޖy}<? xGp5G?Q஻f ͛hmm133c P(ud b,[lw Mt:qҥ&''il6ga& EQ˅xRTnbv " aΝp:x<ױsN޽ӰX,E8ဪԔxzzxO$155elj<:u شin݊TzzY:T /_֭[mܥDQLMM"+ v||wA@cc#199 YivQiZիWw^߿пXߏ[iٛqD"&;`0czz7R}޽صk"N羚pK&pvk꺔Cfƪ̉;f\v @DQDSS*blقi455 100]vAŬ?%===zP---8qyccwCC]f:͛˗133cd)8{,v܉m۶U-ebdM1ϯ]F߿`Xɭ$*#ۍ;wf}d@4E{{;nܸM0;;Nx<8pAʕ+t:aZz I\}[SNeSNy'3 0LR);@GG~ ֭3R ?CZxgr;155Q{nݻp-O~B},cccFox']r'O}MѣGYaX,k8p~ӟq`0ƍaZ*v;^{͛m{2fFY}Cj, Ƙ,ː$ X 6 ~q%^ȲlT*^{ ===bF0Y?(+abbؼy3.]7b``҂~ee ؽ{7:;;?zVܹs'q|Ň>%տ+˲M%J.L] $ž  bE333Ø4D7,˘1RTMNNPƱEA"0DC<7*FFFExܸ!@izs) _u^>XkVYZ%Ia#i3M)"].N'0dY6- TU- N&F b`ddv³>!ܼy7oބG8ƫ7YԜ=y_13119 bvv8y$oߎӧOc~~CCChhhi8ydT.=27U`W{ږB)ufggi~yxx*E"b18{p JA@<74S1+~pu#<>>n0M&yfV;Lb||nۨdMMMHR5vT 7n@*2lPUB]VX,oL着j<3S4j.x<^>?333Phӣy#80fff2A}D*B?Rfffc0Q2닦iqqEZij3xӟYl6l6F*:_/}iłRUKC*25p-Ez( n޼i=99 ՊQq^G"tbnnccc2߸/d2i /i Ɩ k] j*:9ހ(5u5c'I` pŬ,xPSSSlPn033xb1LNN"azzNH7n0k(B8B2ZJZO`[__Ǎ7 qF~hfd*A}Ge<#صky|7_pY|?}{YǾq݋|#x0;;??C,0y(?BitݽdNԶ'xcccǦM`Zo֭y# i.*)Coo/KNsUKE14^=W{]Og3Qn}NRH&lIj;ZY5k>`L BqcxGGx嗫[{{;6oތ'N50~ao&vލ}Cx{ O .F?3|Eww7H$׾~Y~GO|?0==w]O?СC˅__hV xǏ 7Z +O:elfa1"|WU\iQUO?4ߏR%1GO 0 0 0 f|||Lgr2Tehh(k)cf3zV։ <3M6$H@#޶̌y- 6&7׿\~{{nlٲy{O<~ӟbǎFW^yT 6l0N֭oo  ~;o?q<,Ap8 ?|oo?裏bbb.]2&5 `Æ ƛ&(g{o}[K_o;GWUc].fŪ kV| 0 0kD"W^yf0`690 0 0 zI$Ł+t G޽{ /`pp===K2$I|>ȲlÎ㘝cvww|.r,#ԩSHR6Ru n⋈Fx;ށ? կwq.\ÁO}Sp8Ooy[011Go;݋??ƞ={E#oopm__ZVS|7Vܹ<OW~Wp \v =bhhkC$|cßɟO<ʕ+xp ȑ#F`ƍsϡ۶mkVk9HYUA`aaaaaat^z%w}x' Μ9EQp _o{ &&&0::K.hjjO~_|oxc apppI>bFwppذaCI/3 oHOX GO|x ccc__>1a>qw`zzG|ӟƷ-R)|[_O>$4MTS?7-29^xo~^{5c{^x׻ޅxgկ~6lEK._"{{xꩧ*{9m e X{(-Z2kEG9{fxO`^ |wij} yX僵u\>fp8PDbd2XI BTUE<_=jbɹXcc#}A@SSSV jY---8oii f\_mz+Xb::ΜCKt喉U'00 0 0 0 0 0 S>2oWh4o25M[q`nxI2@Z\`6[o]aaaaaaaUaaaaaaaVaaPUuERKjٿe}#M _~ zjUUUsXYRJaheשk< 0aaUUjmƪbyP< ROuv}VTokJf^\aVfa#E)yUc}aa0 0LnNgM` 00 0Lijdaaaa"Z0 0 0 0 0 0 0 A`aaaaaaaUaaaaaaaVfaaaaٻ0sR{uje7 2, !L6HBeB L6 3 !3!3$0%ʒ,%]{]Qm-lYm硱.9URWB!< p& !B!B!B!x'dbbbB!B!B!Bd``5xcB!B!B!B=}ߧ\. :QT(h Ðe1qLբjiqL٤n@)EV;/ !B!B!B!v֙EFk-IPVq]qTJrjJ)rs 1S2qlLB!B!B!B<U&pRa``zς=ZqS4eeeN@MӔ 4T*>10 P($|gdde) aw:$axxL&CR!MVZ!B!B!BqQJ=-ՈϘ 8bJ)"V0 )wp]R  )J\&ldz֞q\ell .J(Ynrj5IrZ~>1RH$IrحVB !B!B!B!.333ٳ8<}1;;{^>c&p,..KRq_BZP,lvC 0u~{ALB!B!B!,\ݻwsemzfffy6"mVT: ?c?W_v%ww\r%]zx;owmr-mZk7yLLLylwݼfǎ)~'rÜ]s5 /{6SV+lJ)swrs]wq7',1KKKmP(0<я2== OOs5\uU/yK6m$LMM155aݻ)^2w\ve\|c[nᦛnc_=x+G>|^W̐f?LR~A/hlꜝy8j~SuVq2|>z_2\u:2ccc 1>>!țdallm۶8YPjqj) 166F&9zb(dZÌ088xB!B!B!f۳g |s9z(vw-[i>[nettmg2nJRa2L?sNZV?9l>9VVV۾{|]OozӛVOo}[v-o`޽|ӟG媫y{_+~wwQZ>֭[1"oo~ɟGGy[ʁx׻{/?ȏnLOO1Ї8x \s 7pЇ>Dst9[R}QsZkF?n}XvZ-<ې}B^ߐu)+++1E* Z~60"Qw^zꥥ%f,--c)J{{<+^in~p+o~@/oѣ/gzzcǎ˿|=U,//3>>Ύ;طo۷ogvv||+y}e{{c>222?g?7dY~~۷WW:wy͞Srcg< p$,..2>>yt:'XAlXv>1fZ,Ǟb{l87(Zk[ZZ_~7xK^͞{rW1ǎ{s622R}8pTmz9k6|oK_RVWW?tF?ǏSuE8fqqvi5Ǔ$ZsB!B!B!~ ^ױuVy衇֒$ gF+/6OFkM>ꫯK.u^YfRy>(6z"yqplyk6>tM|#x??~y277G\G=/mcD5; s/|~,--񒗼O$o{۞1sv!=8fiiI !B!B!B@z"0wj{6غu+armF\>/6 㫯?fzzoǎ~<\qfOW_ZZ_jZ\\$Ik$IY/| vܹaήZ~W~o-˿̖-[ꪫ͞S馛Al7|y7P!B!B!B<)W\q7t\\.(zc KKK\{dYr}kqBcxG<奈y(Rp!KU2>>ξ}X^^faa{Ow~~;wre?~im+_Jǹ馛>n~?3NFGGַ#L!xNRJQ(jmAl6 !B!B!3>z~ah40ƜR,//rXjEQyVWW) .[lAkR5Ɔ6>3?3uqo0 yի^Ż.>povWEnS2RT*rLX<9z3 J5bA. W*ǡRn IPTPJQ,f'#BqB>u]"wfhhZS(dǎiJXL`!B!Bl*XYY__xᇙnxn&𸫯K.￟{g|A}?}ǟ|;v7 __O~__쮊 levvv]%=&g STjX]]`eeqֲL5D?@}B!ą:烧|IӔYZ;wddd \% C<4 }B!B!s[,..޽{jH|;q-y{b߾}ٳi$a?~arQc0KKKi| I%ciZ}*yk'?I?888p|>yUppꋶhӡ8I% 4ennuIӴ|V_1 Cfggq]$IDQÇ7cB$k-A033sYk-GnnqsA1LOOsalقyi#B!BLy^??q}Q,7x#vGe||%VWWe޽߿rM7ħ?ih\蕡>r _`qQvɞ={x.<(غu+z)-555g?u#I?ZkꂎO<7mJd=cM'Wo}a"B\L8pϤZk-DB!B!\uUr9fff{PJ133׿[o: 7ѣGYYY_"vl6 =zNC^ m?~L&~FQWU8fbbbS}vIEo?RWN)c-]X!gR\Z7;B!B!8\fgg9p(t=:\wuo?SyJR\Ð0 l k-B){СCg#IFGG3 a?Oօ$B!B!B!6 7x}6J)|8qh6'e8ۿ[4=u:<)]~XkY\\̜ڽ h%,//osd !B!⢖ϗٶm 밲B^'gU!Bmvv{~r7sA|ߧT*@eΝ@dRa.rtې !/ SX\\g?TUJ۶mСCg}__KK4 Z_k#L&̉>δΡxfypdϞٓ:81f"B\T*rxGRahhPbB!E%P(x֚F]ZZ"l69|0###=CEQ.Z#feqqz2A0??O>GkM^jQ9vX?pv;֢"VWW}LdC qi۶m?~|ö ضmgΣ>w.rg?{y1^1ZU*ml . .&b#х!|\='sum$Blph^IcB,ajUBV.쮜w5\sgBOH42g[nV&B!B!.jB>_!) k6ahTٺu+Ri(B!6#PVa0`1W[, ` PX&c d%:QbeE604>  B!BlM 1nL&C&!sUTd2$If!S8,,,HX!B!%iZE:rQ 8qk IjӔUVxKǨGnNZ6bjl'1vUJL6SH6 Ҍ8FբjmT!B!#.xZKբaH8cFnTu],CCC?~$IgeeacqZ&&&PJ⹹94S&B!B 5@ IXVIE㘰ۆ4!JcAjP Jc,Da%J:xytKe. j͞!B!sތ'm4w@C/iϩVL&`lECCCe0$Ñ#GXYY<.b%nt !jll) Bd (HԤe^ÚtFEZ(VoHƐ$ VkZ ]0F+l.K74[ tivEX)B!B\6%tQJn焕<4Ӟqsݦh000 Z~j!BT&9vrrLB!.,hP=q\,C ƒef{۵UѱQbU/3.ad'{q5' NL lL۶mchhq6{jB! ^\.h46df21D?։g*Ik$IB8_T t]8~Bbe~~~SQJ1111zB!\XCTXhv[N:$5X X0R6Jl5CUz1(,`O(h6:$I5 r̰1l&!Btrl۶ un۷o'c?CyZ/媫7 onv6Mozb|կ8yk˿fOx ڪX,2 r_T9|ZI:+X(,..v֥Bjr%PTNySSSQBI\/58Nh5k4j$IRZi| #Ƹ(e q%"R\<#h0Z4Q($.at-ã\~ u!B\5aǎLMMW-[SJRtc[6{?ć>!^򲗽??7~76[}7|3wǏȏp| Ryw]z}Nj^͞g=^zymg[kY]]gB s Ӟgy¶2F5BE$abbVEDŽa8F㤋fr8#BqbHVl255I/y*dppB ,ɓQ*!t8qO$kub=]r9AUmRb,8ahh0V+AQɕ\8R`AZE\($hw5B-[200@ZV5!B'K/رcu]ڵAdtt$IlsN0\.iR4M$">Le׮]qUWq!Zf offfw\s5| _<}kپ};A|{wqn CCC|_%^򒗐d'?, ^z饴Z-կoE e2 ?gnzn6~amoo~'&_<ԧغu+}k;x[[netto|K_=y۶m=y_YYY/})Nc O^Wsuב)wq_WO;L-CO$Ix ۷oo{i)oٿ?+++O96c`V 0`! CZOdiiGt:Z-fgg Ð4M9~x$LZ%IZGB *cx` '֐)h6iooYjNM. EemJZȂk@Qo 5*R@e{>I6h@8%\®]زe܌.BEa֭޽q8p> {E/zg$ɻg^.n-[02287pw&"&&&x+^A&ǀN,lp 7pm[;?~~j(&''T* {3?3||'z!O\wugll97{{d2G?8u]kL[nS|/x_ |bHEV@o^ꫯ''y"y{-0ZC?C37pZٟ _k~~l6KVMOOWqb!#[$;8Nl6.&5ktJ6e8s K` &%Q,i4X@) Xq|F+j 44h?Sڄj- Iriryc +++*jB!÷-0.㪫ȑ#{、i޽{xG^B߉jg;[k-_IGy7l۶Ufff8pfywu7qcrrWx9rz(g>/}KگW__;z_SոЇ>cϞ=կ/'ɰx ou]~g~8YXXo}+';+1>O񖷼ۿeii. k-{c?IϿc:^WRVYXX~?O{{2?)Ǐgݼ/{-ڽ{7L& _ettK/}kOyA`!BYz}#B^ k-H 4KD)(*lV 8|vNbV]enaKR˃%814[3ӓMzV\n7tSʥ۶MS.noT !"ag֭\wud2Nl,4u:$ MSjBw3ݳLLLLvW_6ql6 |Z4Mi4m\wuh? _~omQq 7>[,cFGGOۿ |~rÇ~ۏ!qS*(5}wLo۴ <+JN|+_<$399_νjlzz;v/})[B!B!(e(3$E+Q(14Ѭs2Q:Z$hv8p`8k#$$caJ{t!\ \*Rk@ >zh+m,$b(lcBbfyyf)YB!x.2=JE.24%MSJRiLu9=!ϳ|R>|>яn77|?_x|m9r=*u]~~lñ??[wuo۹ԧg>CફoT*O)l6m۶,ӵyq'KXk%8K[I/[o5SSSR\y5B!B!nƺ8gʢPT j&({4a7$MǧX.ZA'b P.pV4I.Inw0&Q(h6Aj!ϢU/[$Ie˴V;aaI6_`=رJB!x򦦦rr9Y]]`yy+l6K.5yM?t\+qCP`~~8d2 ~Ig/~\qb|fllG~d2gǎ|'a#Hi஻ oxC]wŷm~׼5 1>swsN~GL&3lb/x\wx;;w7qʶ_v^:y׻u_g$I'E= S~  !B!⢣g<Wc-x(RX,AhcR:.@ yu,/U}?Y@uf$MJ1iDkCkؒxd2`M^fq 2NJP(k.那B!cyx~7Mּo=G}J$v)~~ko}[j5VWWiZg۶m=쳲o>>rW8SSS:sss|Sg7E K=c~טsO|ӟ>a׮]|_GG09{>m+_J~WY.k_vw~xF??__8__Oo(~ԹPRIf5ݟI-w۞lLR]vq kϞ ٲe '}rl۶C5rL}HdŧS,gS>VDb#х!|\='suHX!8OXg`h5-PQ4lhP( PJ>kzC0Le($iLu8`|,/Β$ij Na,k֚|>5f ,^vNv! RzjJ^`BwA/grr򼭓z:r.ƹ1 K9h!B!B\TvfK(B5JXR7IQ8ڐϺPJcloJ0|$=\5DqcR2Rijn 90FiJ|'ѪWnvg\Wi1 Q5q}|ٺu TfH2%;v0==MP@k#B |B'O!B!Y1IluҸ lL&5v7"뻠4V]hw"|C00)`0&!M%[hG1Z)1L&GC+@ %R,fzёQ(|R>IREi/K+-8^z)[lq͞~!B!3B!B!8_RdE48+7XZ\rmqe~aL [&&Yo RIaee(PƯ{DKѢϬ{Lcj4!HP%"4&N,J{^JN[pQF H(\tB!-t‰2־9 {V͑$fDB!B DB!B!Hh C\k-_\ J98XA` "ਔRb0!S4aVc`$f DAA㐦zKIcLL%@6VqM, J<ŬbLBb N/@:wo=L5@4;]ڝR "ZkVVVHӧYK!B$,Bg9J޾5uwKo侯dMjG1:c%rE(04B=ҢL\!B^z)Qq!:Z ($$k HMXcHlRN7`dtA$СcX +^&o%;ds98$s) DeZ&%)mxfMQ'( P*9z8RFKQk`lJ&㢴&@q&pBL>~XRP`0KCQ@%8Oy Ohh5\7Ŧ* >(qo,B'aiiipNTv\{&&&NYV f.<,F&Sh{~:;J Mp]MwXm?&KZK2} om%,n!f S{d.&TuxT* xlQ _p@0hd.y4 pe,]g*͞!xVQ &wx*aF\Bbŧs{cK'{b0t|c/s(I9~$*zI-T,ne4v{Ҭ=n֊ՙQPPJv> [pr;kk1(Ec-"h'Y-9,kS_yIb|k: oɒ+zfcm2>S SrG1>PhCl&[w2qr@n+a5ԒɹtZ jD7eG8J9I-͵N3adkQd<ݥ1:PЎ4ŀ€G&&mLNuwwknT?ӻ1,zġr%2yeGbC)vÔWG)1629U8tKKcd:m.-/am!dƦsT2hh 3i7bi< 7!|ѩIA_kz'GUC>A|e~RGL_Vb7jgheY9ex2ˮkHS-]6\Y4:6HBT )lv,,-!IJ1Zi<1n;"MSi) \%#wGuk-\-o6$iH2FVE1ۦn7 (4i/V^1)ѽLeP,d16eiy0ڿ&XmưD)ۻ%5aqJi4Âkv|<7 E0겸&s)TVX\\s2!B!渠AKP < ,d)Ac-\VUw.Id`k-GHbwɹ\z0j5\#m.(Q2sG;Ll/)=&V-"s?ԢRq=#aRk(d|M^1jaSezuv];ohE(;ྯm&} 3yh]U.{ S9w6{zBg#GpwVoh%;z( Z4exڥh)6MP(֠4f>&q^f$6Dv/`{541QhIK.Q!JRX142JRyF1+U@hEc(qr=fnqG(5^/ZכԚl+;'!Q=M1&EkA:͓khgn~0XpzGB!x5Ckg_"Yd~y~@yu>+Tۮ-]O:t HbCѪ\dSx;=c%N3QW]2yI\24BnFީk8c/sX:gae)+ fPZx-;x:(KKoFi_'(tKic|&Gqq;v3& Q Xc7h'}{L֊l鿾'J~hS\|A.;XiR_6͵-9ts-{X8dnb\%ܑ|% ~srʢ !svKS>>?lN\+k,BrwƵ^K٥Iюpť*6z߷ abx,-ѱ!IfrVh.ŒO=m)[ >l4 C6&1_Di Mr\>5q(ZJ\M(eI(f OضLnDcjser(ee=5gVNĠOsՅn?XQdIîeOp=Ж,s) 4VC %[>^?8c.|켮B6ЬuvZsRۃ:ǁ1CJփʎ7ucՎZ_ciບeǨYOٮB]ٺx* y}gﱅc~/1{)4A%9YG!8֨V=zK.E;޺sˀ*)a2vM[Vp\QJqdv(27)0xﻬb0hz)뒦n2P.SFkcSy!391A&JDGk$iRDZ`{( NR,AJFYC/hꕓv,KK=Zԛp\f0A(v}/ &QHmX5PV4  Zv-`!B!.h>I-jK>c9quPK!ZF emY|Y>=t0Hhz?Od?Ve$Ku{֘;_H^[ 02sYyv(V| %_q^C&gZ 9X00?. Sћ^&\ه,niĘS<R'n f&wCi0C`^ {z{i+ݫDax"Ǟh ڍJb̥e`u1`UY?X;e;QR[ u k]e'vN~MV>3iEK.ټGX Nd񲚡jy˶E+a82) ARdΫ+W9ЬEk1G:\rE@ZG=Ij[Iwu(em.d` |D= ШTF3ե/.1 v]Su`îkʘԲp]_w{KW#IJe~m o8B!ĹJe|.e,V)U3X@ F_#SeP,WQ` j}"tmc v=e(k+&mFErp\\.C$V۝.C5\Q +Wkc{oRPR e$!֬߬2G3PΓ$)a$'JnH'p` < qP!xkm݈Rg֭Efgg%#X!Bgg8~7*OKРt2y4.=[Lp\E6R] cZ8}kūf5LHC6beqM}=8[ g .Q2!DAJNhT{kC1A5X 48iJQ9mhNJIC45 (=o&` ,iXMOƆuSj(E6mke?q?֘^S-(zA+e6j/`Xq}iVAB84`k,zqmj1ڍ륱oE3եn;VC45]Џ)VB& /6t'߽/Z nwn3K!M R/v/]AXZUIKc-{11:XۻU=`t&ݽyڬ;ҟpLOSz<}L=z:;Iyj|+vq\MqXpicwTz.jx€T{<n)h,r&ksA-'|cz ! CKc4IzUkF$ $5k{A$M{kb !fWr Cbu" It3hhjIJHK$XKe|FG1CcuVz5#CZMP 9n72X^Q8Zuڭ6Ʀ8Noq$ٌ.(]I1'QI)a7!SXz߹ Z+\D6qT,02:h}l'IFGGiZ B!6A&KJ* ݕN|82 w@9}2?qq',cLEOg)ulSz O_ۛ50>O? JY)YcY<9 KO+j'3aR[ ڏ] ܧH$y )B!sR-;dPhqoXOrKy F6AݦѬVm'iteHF(f(C0$`!(ۡny >'>Ph&4[-ebV+ۻ(J0!xV(P\n$ !McNrM 4]ʥ,bU,0==*n B>[ 64^ߖ k\' :4 =|s]2 -%B\-S966]9. u1΅}ꂗB!8V?=MbXB!$NnRR) ˂Pk6iH)Y'5$X,N4vhw;Zq99w7dWa81ja׮]/P(O ٜ~^h*E2S˔ʞ={ؾ};\n.B!X7666JjL׽uU~/{{vرa[բZRV(TUj:[n?3 gB!B!ijN&7@0Al~=$ \8pۧA+:.q:.n纸K؈i1( I( 8^0  i`mG;.hRcH€0($Ea IMX2Y>a{>C,,,aL/j$m2 "N(8&Vo/3:2j$IťUUh |V;@+:IB(,2B f'"u0PX,R9~B!67ߌ1ۿeii ׿\y~DQUW]ŕW^I|_رcr뭷gj{//| T*`7tǏg odyyQ,'kKq]o|߿ݻws 7o}kng>4ehhnQcccDQ77dYnVFFF8t~;x+0Ɛ&dYlطo7|3||3Y,P ,B!BgeqQ JA;@/ZB`eeYc1+˫MWjtZ4DqH`Qĩ! CC4 (85(MXtz'`q@B.cz$(w<.` !tcR|"3'BY QZYm$+0vGq6&&'=(h[d2B!h{IVPL 5e^6o/H " aHm$Hɰq}&&&(|B!Mfff;qsW׼4Mqgttb r vFkM6xccc㮻:عs'??82==/CCCuZn"o~)J?~{C?C/fϞ=,--133-BRaqq׾Xk7Me* 333UZc^#?#LMMq!!AjXXXu]~;w ^^m6^uVE/z([q֌6K;.R6m%$X!B!*~>^ظXIA+U. C IjQh2k4[XZZϸZB&5 N DaS|?* :)&u&bd2>|v5hQhFdžY\vQ 4A c-IPZ]hK[IJDǀJk&NdaqW2;袵ıHK1s  f*Rl7fFSuØŘ|>rj,BluY[[۰-"(y{|}pWraqIӔ/oزe f}ykغuirST۹k㘿˿$MS?Fضm~;w}7`qqr9>O~.vLn.KXСCq|ߤ\.377^2VWWҗW\'8x a=n NG?Q/n׸˯ʯ0;;˧>)^qWrIp^@B!B!ijRj}Yǁ!ϭaMJ% TtZm(ϸiDiy QctZ.XC%.8@ `sTJ%V=P{ij_\hr\!MnI[*5$QRp(| NR124HЍ75avr9 1( H0eblť|qZPJ$'Vk1(&+*QlQO$`ۧ4E+hrl߾G([l9>V* +aJf$>3 ^{-o|/|k_?ϫ] دM*"so}ی>_L((((~hSҾ(!H5MjYuI"ecZx<@JHl:DH xD DxQ%*X6] 'OP2hM7[B销:Rm'I>*QiBQ&$Z @xoH qx?Tu ?Jg9pN$ Z}.J)$4Mcd֚c:;NO0 II IExT$ HҢlW-I:/yEQEȲ__'~'ٟY4 o&??ʏ؏,y뭷>|k_㥗^ggqoZHտa4| a?o9WWW /7gUT{]~~g~0B| mW ?S?>x8l6x㍏m{>~C=19M|C-~kŵ(T#NH7xZS9B@۶AB(1^bZwa0] 16ֆ ʌ+_f~}9ι":(~@|M?GyW躎_55_W !['''kTU)c ھ=4׿u5N4oYq||̛oIu\]][[hWy?f7 3k_~, Rc7___2/EO]|;yE//'_:: ]_{}u zMF[u?9duĵ~Zq>>k-O{W(3)GDR H))uSCIMg Yu}@`+a$ՒܴskΠ ]L/ LbF(h[GZJq8H2l<P2U){Heݒ$ %I_΁ͅ'@^7l-mAIR,Ka6mxqMfT'B_ `h% <%3!EI-!xҬ5 W5{`R~EQEQǮQ?((((z?tVQ95X4: 9`M]oj0_n^ly, h'O*!Gl6YDz1`:br~/s<~0{Cm͓ӆ-!f ۴\LI+oE$Z2P:Y| vð,9MK xXۢ!14m@vxq  o56ۚ-q)'cNOO߆QEQEQC#QEQEQEQ}Ib8 Au?Ni$GBkEg,I*& kD|GhLәsT,O`4HҌ%UJ,MgBH;H!4Y*%(!v5 !Afu}U,xi#ZpruyZrX.4M_|y(izWUcྺ:R d CfGٰt!UK;7sm%R)B!Y/7c ! |G$O7U E6BK嚦:'7,-=ŲC}P F#GOK yuTx!Jc]@)0rt4rAu 4!O,V+Bgcv˶Zs}=ApEQEQ}ށ((((' M]B@t:$M5RgWx*@eTUŶ)#AQ j4ZAdFvf[1tFPW ՚|ir~vpMҬ Z!}*ZXgnNl 3N9 #| !6i`lQB5ڶLSV&DnJ1lݦnkÒA􇐦eZRo/IR&} ]=dTUgvvssy9OY$os& 2aزjNq0q=yzJ>l}Xl]/2AER $. g81ւH))˒m/$U >4[1e1x!WWWx?iEQEQ}8(((ϴ4aB> u}/h!T5ϣsp4A :[jE^yf[vmJ v%MSIRiƲ\"eZҙ(%H Z ~ z F9:gSpq~`x1,S ZZ$>TL%( M b:^ mg OjVU]q0ppS1 `L_( ٜ #<`"B{t(@HwsM?8Sҷ}M1A"Ut:d0LY\vAp8f:X,Xk?kEQEQ}&|nB`ιܶH[:}\N(((㓻(f}|b},B!'d8flbceNT %1W jDB1(n7-UErAKu[3sxo=xwdWAۗ B };䌦y£K{%YX79&ob'QBqxpvAIE^,vKm)).K|p>$mk8?}E3>$XmK R1Xtpq@vI")#$:E鄮khZ"( f񘋋 z}"(~ڻ~&D}`o~ϟPNI ܿ4M{w}`)%g:~}f<|K_ ;wp||FY:wg:2s,wR 5>~&It:cGڞ?}:,l6vfWUb7BWbW*ἧi;1ƴ,Vkێkifg7d^3B%R*nKv7p{DGӴ ]cYoB"Z|%w ʌiZ> 53v>AG շ먪vv!,u1!U|0җĝ;wWEQEQ}>J+Fg{zMH|Իz =4M,Y,t]Ge4͇0Rr||L]2C^ﵝs=kH-RLS1,  CBl͢(HbEQEQEQ,c}s9=='cQJG!$IUe@HҘ/G*Mek˲d6ѣWWWcJ)!iJut]M\%ݬ9{/SZ$a4Ѷ-mxpp@eXk1ưn !0 ؇u]ﷵX,HӔtJ$c{!,CkMUU,Kfnb^ca<c!I...jzfyzzf>pttDJbXL#6,hꖦm%9ރ۷Nx|zQ[):ik-{!@$ }`>Z4 B{RJB9eYҶmEQEQE^ "t !-9yW׬7 $EQt x|lvbAT-ն<}80fwz:% lZ.;ϓ}h,RXBduм VsLgT[-=hMyNY?W6aA ue6tN1ְ Cԭ)!Ǐ@iLYB>H&X̬ fJH4m )If2ӹ I4J' ]ki;Bk7 ZI6YmZ%Ey14(1]iq0 ն+)5H#xj(2tFR ސ{NH%%ME'tYbmVG Q!!(R3d4m1u1NW\__;N,((>>89f3eYr~~!!CЇOϒ}/7?{~_MG),~: ٞs$IknPJ+TmϻT/3Ҷ-]wJ޴9*ݧ+O>3ylߧnf{7RzfO7/$Iڶݷ~7OۿcQJ{ Z}UEQEQEY9pxxA"4Xӡu޷Y^-R$* \ U4GSPmk9'c[5xmh R=FȄCyպ"MSj#:f4˩""˃Gg@&i>%> )A)֒GI" 4M*J]͗FzC,"&LבgZ=K*--xC@i1ꄦ $5!d_-r Be)EQbmv5-5.xbf\!hA"4MH[tE6$4k2gΆSm &ӌ',V5qxrHQ+>P(((anۖ3ᾊ&RX,>/ι}MmC}F#VB}%fa6qtto= rpXo'9曵,=j 麎$Ixi4g^s`y{U~sbi/~seY4>P;ܶ-,ߛ}(*h`_n9Rj_i ~(((vJȲMk]_ Ÿ@HBHq8 W˛o>ƺ)$JKucB+Tܻs՜i麖pvU1HrW[7][#__oam6]k8:1{awr+@$V*m躊0%2*' A+_Ou]#|"Cv{x{l'mn;D[B stt); cpm6 c̻n~Y=sOW޴N><<{]~9oUUeGGGX۷ʺy^Uwgж> ]o0>sWk-eY2kst]l6m[4#3EI ((LAAdX #55ܢjP & Isg;dd\9<8, >t?5 )mB}]V]۷I-$.6J @2 X,D[4Y2/vppqixע!B4}Z階B9ko5<|;AAUu4]<>!PW "NR<<>t]CUYT({~.wDC~ qR<]ru5'զci2?шGo:x|.{QEQEeaHU{M+~-uMjo\URJy&` Ako\>|ybz]CfbٿmM݄BڶW !0`kzoS=7-k>Mzo-v ܄79G۶s|3Cs1׻s{|8kc>~\+o罧:nt]o}cyxps !mW3of۶E)f _D83mUߏJS)M H-uc:\}giQ[utfKI{rtzmpOYXq!ppppX6,wٔ8(k;[6-3Xkkc 4_S{%`]?O9I4 XJ9K5jƹ1 ZJbwyBնƹO^kôiP*kʾ7yZ ҬD :tG"wEJ4El:`2b:p808>2Y]z|EQpӑ݊~kOo]uqu]ױX,HӔc=z~{y4 /lrwnp=_amgh%JY1%I2A `6\54MG?80 J=|N5јrQ2z}xή7T q]ί.i-M5g2)64RzܹsͶf\C3₶sbL Wy!] $Y҄AY0 H"M@D[KJ*Z˺jꎶ,[;(>O{W>v>k/_E8,g7)>v?hMp||!!3mߏfψ};h!vM!W~aEQEQEQ DJ]'E$XkB%As[3tɬk$Ae GCw}RY/Y/+Bـtt0FȲ$I R$I`PеmZ &USS ޛ ױXnx4m x\H-MEx>V ;hZCmv]&Z 0oeLG4;5Z!s5gggx$2y-ހV</G,+<:KuSami (%AAQo= zMО&)wփyiֻ vU~[Ǘ |aqJz<%eYrscp0)9>2hih])A>] K.vip8zj[lY(~~G~d|>w-~a.뚷z )veϺY?!gZisEQEQEQëPU-q ml$˜3bH&`SBkCH"B"d8Ht$'M:M!%̗s(fIkH i1a[Ó+C m a "ZZ%''{˓S ABJhS7-Ac\Z\6dBkHRE,M+ݐfM۲4dF+I:`:CBeSW JI-qE _s|x< CM@HDc _. 6 -Z ݱDgdeq.0ܹsC?~}є{sf[1_5E*oΓ%4M(2"O((wg?j:ί֬5ujEOOrrr_G.I{/}R(((nRY,OS`Uȉ>=E-AHI hۚ7l A0, i@!5w!1֬ɀ"Ϩue ERiD6= 4Rp2KfeYZP<7dyj)UA8;$Kr@YH^,+Ӷɸۛڃ pbLw %$lLS|H$I}6mKeܿx}Q (((( ,G(:c P}h@Sc-~F.$x2tv!j<%3 'bb2.nHӄtgȠ,LF8\Q 3|1'I4Yf~rvIf_>8lR*sȐcj1֓;y&|I! _zG1qbhvogWMuO%%ʌ;fyʭ)"`4xņGg׬6-*xAJIe@_`uO Ӝ9yo:_ CK/k<6 woͿɯʯ^kqvv9~m?Cτw~Z]?(E1(((S#)9U=Ӏ}@y3 ~!\_1ϋ8jDxgAHAO`pMcI g=) k= $p#:Kg, RV V%ւ4UU?Cx8(( v"Bk6$a &4R%%U"d 5(`X|[>j^gK>hM$e`0޽{dY)%9ڶ݇]ὧistú>vLZ͆\\x|r(i>_߿zk2L \]]4W_}W_}W^y=;;؏=%;Ç?Îτ3ߓR ot!pEQEQEQE !`T)gfn[|rhPR9B(M'|@8Geǻ&GH5>hLMm N [;q2. p~~[ E]c2C*ꪥP(} 3.396U@x^DŅ 8xLFcպ!MIqWUKg 1g[:Rc0͚XۡD4g\\]lz>Y?][)$igbpC`vc:!D@?_xzBYߒ ,RƀKe[iK(! 1M辝 H7 c=y97_~8%ZosWuu舓FeYR3mvmq=S!$)*(WCB8LNLWkVGQ4MÃ_O&g 0 hc /EQp}P5 l6_3IRsw{2`e1!Ae)A傺xMҟ愦u,- Kt:`\R*^ozϝL&ܻwp`0,˾J)6/&y0(@~p2Td^wl<:ji/cEbOOZ|+_7~70?_opttĿ?ַop}Oܾ}#U3FQ8(((O`Bh})XonbyI_+n`Mc0 (%JŴx lc]aM*r<+9?FHR,V!X֓f%I|HY}hl{/pޢ{5c,2sw8ǷOTn2ͭ)]%E8;$Ik0ƃb;2QҙQ߅}TWkMе 諳3(PJ`۔B*( UEs xȓ'׈1%xA(AN&$ZS 9^ v$w}h|+I o,Gl7B:︞/ޮ p}&(Lg88qy9GJs`ǰ(3f#k?~~gwy!m÷_Bew޽{L&9U7!ĻM8 *D- !JKf{oK.9/wկʯ <o/B?|k_i~W|η-~G~[nf3B|_*]x7>Î/1>oyǖ7;>{9duĵ~Zq>>k-O{W(KbB98, >x!U⃇] et)t+p?7OiV|`p18%jiI>8$Ҿ ,@p諉ZnX,7}M`!Mݲ٬ϳF "HAH65A!ܽ{(`lvjϼER9w믃YF5$RL"=((z-ZK^~%x1m=ѣ3ii%áB+Ot Dҷ24iǜ]!x 4nwD`lB|:r0aLgnYo,eR!MS',>Q%c:jB$䄻wR%i{~z:\y1uӏygE{xp]`orYQ6899H8羫˅֚MR>k 7_Ae7E(((fcl5Bk6ORYoBٰdKo#}\Z4Mi;<%s !9CU8 wUI6B3(g;V~r/zڮˣ4uV[o}舳 |'/84#N8=7$ZvBBӴ8g-ggxW#f0Ȩص ljD (9aZbL_hJc<1/cZH6L 4Y*^Ak Iѿi.Vj_BB`ڠ`wBH`m@HX6l78c4#B~ql{$ۇL%u̓w o~xNir{]WG% *E0!ϺҊh<9_o>Xg FQΐ]^7QQ>hc*C((((>1Rj| RHVЗu`!DhM\?rT x ,[@($R|ØkvEHeY84EDJA4l yppp9J%`v0e`eR}?ku$qkǭCuMel--M5e.jW_`MɈ <,r;f1skPWkO0`L93 MS$ہ RiB^d,[Ū!M5:3/TBeΒ 9c eo}K[+ JfRVƑɌX\6 y5IBi]W耐[n;!g,$-݆,4Q*E|ռb4Lҗ^K...c=/Kϝ|jlC!EQ /p}$A)t曯|ޏAzBjـoPZ½C"ͮ?(ϺGQEQEQEQ)I3#LRFaefSH6#CmY~֯iFUݔ9$}#@JU@`sM i1{OekL֛ !>Cp!]iL/j5H4h5 dLU]-0g 3>dbwUڎK쫟ݭn>,˄2A8|?/Yzr!]B#( 5|odENY\(ЉYzmAѵDs(?*N YK 肣)W8v-gHZc:+ UQeiжIpN`D8=+@A[\:c.}(4-x֠TAtM|Ѱeν{1LxalL\,yK)yxF(5~-oZ:\ȕR~Wp|l৽sfT#Vג(x!w&_7ě(,DuW}sɈɉkŵzZ}|1xc(sK$!RB vv]Ç@} }Dwܢsbc,uci;}A|`д=B8oAA KI[s)ZGgn ƣ!uE uM,s!5y$a0(h/8%%''TUXg 3&A>i hMKSBViR] Jqx0nK*sP2E)MkzAYj1Mi۾Z ɰ,I@JpPҴ-NN,>tN U@>n {kH4yq ރs B !LѵeYZG}z㞙=쫍{ FȄ-xAA6wEKe O{W>v>k$3_/+((((B0)]E)z_*qLuDwBtWYkItk}*p޳Z.6tA]am7pvSacZs_EIDg9'O.#@쫔MKcP;.Tg[E!'ĮьÓ;yFZ^+fOz~o^۾=w~~txƵXx'6 QEQ}8(((u⠘4`Pg\cCj1i)%(-Yl!wM$ьFvWIX=s@%hLUUԚ,K}i<% U'])Etܹ}Uھvc MR}~ڮoq%x%1ZT:D(W\w~Ww~'52_$M2hU~bEQE_q&&OF\ON\/gGQE_M[`ھoQtm!8"$M`צbM҄P{OXJiF1۪&@v()@x4#I> ڍ Gbt-Ip*pbp8ĸ8$0_-aRB$}3j?c F)4KX6oV]t2D*fKy<)%mA0(HdLݴ8LVhJG4]= ΁5Ѩ;V宲8vk I@0 GhH&ڦUңfHB*je`RBJE]?U)քGTEvl6[A{;Bu-BH%KiZw0݀ k[f 2\]"(!߇'h:n՗2(1 (qXY9B!)+EwV)YD]j=^~VO?3 3%$B%¡$)StĶnYmOEQg1|"#(((S4͜8Dhf&p8}% I)Zuzd2Zvr^ IXkik-ZkXki#$ Ƙu0{1((-b>G,)-DYе,{t"%X{ +d(%щч,+aW- B@ӶHy"D)AUا>yiw*jgIo;>b8\bo-HpΠdz:(%0UĂH0NtEʀ e@v-^54a yn7wP%5lLU # ",h% l\η(v]yw} d gI!JN# N4 m;`17| Z"mku ɠ, g:w9yx2Bif68hd:2hs,HD'ـC.ǪdBHux/Az>8h.pq 1/8i*NOO@ל-sr)2zT-MӇ[a0GJxtܾx4b>_U@^TUuAQ!vO kof{F!նi-Hb8X@e esXUޢ2E% nsym x繸8:t2(r..Ò #ӡO@%ArY;4O+ x1!@2m pm>:߯񶮙NJ|<ϐR6]n:x?~FrDYַZxz 8pz$\_0|3ཡ ck,ƴ}[4g ĶKer!g>w}Uр[֭!5y}+lѣxgM2]$ }k!ۈKɭ[븼Zپ%ãC,g1_np#QZm!I^lsEgXAEm'''.|bZcgeɾ zMYLS~_p$𐋋 هjml6F!!$I!t:Em?88@.Pk-ysppd2z`֚,˨ !L&} o֓)%`1 Bж-iRlFl}6Ippp@4`}&.?+!~ĵ~Zq>>q&pEQEgLCA@\ͨy !AW_;g隺o*_Lӌ,JPmj\}L93]"`[UG#!k"85u%Rz2g4$jNjBѠT Es6m|0;b+z@yBP $[D?{+K7ĐS݃۴1-M.PwHwHH9`8H1ظcp."#*WwUU#VvDo2g1[)mHO)w;A8$R4xU%xP)Uw n]uW k77C&-`Bm sl |"l]\~~m͘×N{Kc oF,c4MKk18U(b4Qp>١k4M9::ZۉJݾ;o7W7>&MΙ9^w}h_e'F !:w\R5u&NwF,'I}f34EJٍ27oz s PZkvvvc8RUU'n_F[~vsm$s85xH4ML& $Inͣ$Iݗ~QET}z^u '@ @=g<}zp#Ht*J BjoHT{9h@Ј#A$$4Q만CzݻqxH1Qn-8$𾢪HDM7+ +N_qy1mnKY,q-&1l=XTqzt̠?`)+R $kAt>J;x8Xa NRu]1G찿{kl#⦽)4KMww"5o'g#]O;opiʂ8(4ⷐ!8Z!bghÃڕ!Rƨ(!IN^Q A  ; l,Ph8BfP54 7uպJ(8RnfO͑*_7+7|Yvru;q/MS=z?y>rn>ZPkM% ZpzT)qES k[iUB6-f5JwSP5QI"͏O#?>Gw!VN9%<)*n[>y[5]|>1EQA1su:vëժu~NT^*gϞunEWm6шj ''' sil6,K4Յ|vv9{O<ܯ>| ? պP*_]n7"o;8:uݭj%fNl~n9eYrxx wy{ﹹ$I^}7w$ Vu~u]w7Eݔв9d|>*<۷icư]~ @ $g I:NQBc[קR*s-IDYUֽeiW9UNU+޹FM^^k֎d].U}Nv0 kXKYc'YnB*ƣ!h%ZM?rE`EIO@(~0H9;;bB:t1nf `< (3-P)t $Xa*Dss=Cx=`^/%[kR)R8eFSDZyg $K{E~|OZIphLUȲFXnSv&JIkIZr %.ZEiSypqqT UYeC TcR(ʲfgrxxtLO~K\<8iq~kXm\i;>|Kvy'.ٿMMvV*EXDeXSPeGT .e~綷M"ucEq;Ô~oOP`@#&{ﹺb(8VRrpp@Ywv;4Ekظy`yw74BWF#ʲd0pqqx<މ xيڭ;:pj~K`9;x8o},[V`޿r>8i'bocڢ[xS|kۘ퓚͋QQ1ͺ袤eu+ow&8]no}J[VUU]dI6͛}Ҋ^: p @ 00p}uRS0e%"#u8gV+yZOQVL PU!u r#sEh< !=ieI' hHVTxgށ2cwg%~*+kQ5yj1u(YCc1<{~EY5S'Mbsrni$b%SFTٜJpKeSO?CkBaG=Tep|:%/j&!Am Rj_,/:e0պWo|BW= Cq@㘪:Ç6,MlXptt ^hh4"{m>~믺kn2txw.eki]꺾Mu&`v.[cog8֑}mJbH9?{LdsT E^RJ+oKs(67+`kzgCk+v}$q R2NVUEX\XIӘhhAPDU5E3`M BaLweJb^2XY1hC8 ^vN]k../R ;`]ǡyAQUG,XfJ=dx$Ez]mZi DӏE p8d6Ϩʊbոf,mrԕK|$|٬SֆH l!Px[ZtYHL\]ewG u\{DItf\Olr1_+ک.8wija.k$QJNCu}WAHzUAydO83z`(r|GE\\xENZE|$Ikeۂ]7Է%o{]Wk^M篢@3"t۪Z3lpn:Z;mk0`E>rJN؛?1^RՖ@ |eYuq>3_ٲ,)}...RpRU-e> bz;ax<w"s(Rv`0`>G$<DyNp619>>8ۣ,Ʉb mhF q\^^)Q g8899,.xs[ivZ5MSnnnn @]Uխnmw@*xxLEA$Fnsv8v,uފσm.9~SK.˲f7t7d@ @ ֲ\\$ ǔ5֬yC౶H@"F:htKH7Yx,M i- {c9g');eF˲yOt^?a<%U$DJ8³J=sX,8"i88IDATg+$sssM t+|㡬21X+R)[2E 7c蛈8IR.)˫)VHaK emI |P95֖bG`hyb1yB⽥r7Tu'8g4фk"0]>A"^!"ϸyy~ͲkNѣ((˂'.7bGGyF(+-ysxTPu#{pYBB]lN/?$MSz[7tP%e|U?ORhM7˄͎͟ޖo1#G lw+(gdD2EJtym܎mJݭ1zX%Q`?cB,t |"04EYns||ÇF|;;;ZU'''!rzz%;;;zrVGujY,C~nnWX,6lnWgҮS;lF{rJjb2#_x쌓1N] v]/!4'wmxZx棥7:]Nc羏˛!8fh4JD4}xO>8p~zzhL @ |eu)^{9u9g4FE{ F \LTe*w6xHg)uhPQ @ub28}W#w+R>c5!PI?|k|w;`ksn@ Wޑe LU}4nb0:FG1ROyq&(H(Q 4i1s%`oQ!xJI(2u>B6B^itHQdY!;G\ @Jr|O8۬QZ1()_ulc Y$?i\,1vq,$Jޑg 4{ bjβW`kGHTk!%Ql6[q+O)i8zӘ]ф{L#nn,Y4Sl 4PB! $SXkqi*$[饊jR#ĺU8c bQE)h49G]7}xOKwrx]9%N.ˊ8đ`ZP/QawȽ=@DCNNNΞv o,͎w佫iȨOAIO)38[#FyGӷ6kk6_SJ}DQD/Zܰ?Ě8j¿8j8{ Hk*>Nqx=%)yVY T@ӻ %!J4UUdh^FxMWw lsWNjP2FSQk Rn> N - 1ܮs%%|4|W |THӔ-8Zom]ާ_$IrgEa `@ @ |S9o,g-z𭍣 ֮JۈRd; JXF)c-1,348$ $K4A tZ$b5J*BhV˼T H"b8LkoUGBuLbxq0:DquuޠD{{\\\ὤKuB[nPY2+@6S'Oq}5)888@K!;<~BUTMo dXjEJIfYMH4eY6n[Xw+1 ,K/ܻw9OO#.//_5f_ߧ( ߿WU~7~pOO7{3y@ @#b1g\0EqYytPkGxjcqCHIy4}qӛ64!rqx,9E E(U&KajA!ւX![2sbpR W7upW$*̔DZ$/@'*xiljƵt:^` _2g=$M \].Jp}3 kF>ch% $ewPQXm8?EG'.X`,BE,櫦Y [!q^GD{DIn7gϞR5E^PWKS0x\bZG[fqc=,C7cAxC]eHQ,78)4M eXK}Fш~O'IWEQ0͘N(SU*'N] t͛Bs&Z(n"vW]ngzD9O5NIdC7qϛ7#H_q|0a2G?o=n'RF#8::~^O?ɧ?i~w~?gC>OcR|_d>}/}K;;|ӟ73'@ @ >2xY.<'  0/h <k-I[w0Ɠ9um;\+Ux< b55ν#4Ntr`=(<7M?h^ MF>K E!;Ok"MbPOInn2>G'|ӧxטcX ((4p Z1α΢k ^O7˩]FyMvgu֒(+X+q#g,+ڢoT9hHڀL}’ek JG $ӦY _"ig:[a6Q,Ȳjf󜸰=!'}Nv8jMj`BEш|VV$5)ƽsxS$8F|ÇL&vvvd_&\QUB(jՒVU:oUU^޶ ڊ/~%4#0EM%:r'4pwEѝЛ$ Mn<1hX?`<378qttėe<+_ 0˿W~D//9߿Oe_8@ G =VRx;H{XwoBG246PV8J.ai)..RHVˌ!O տ"MS/?{I/|~<{;eZ%R[op}^6A@ @ {|>cspp~k_;D6{:"ĹdJ84kjQA AԵ۸{qVps3"*q[q$c9O/89'I{UEW\]O4HJok828R!X( zBh]Lߛ0Uuk,BZov #) J+,W "jH'# k=t,ȳ|t6qDtֵEJS;v+2MYLoj)CŌ)ulv> HaṃTo(B;;L+NJNOv&}/(bw4d1R5) @!OHGYU$=*oֹA#Dkqpp@?_ҭjM=ov诵v"iEhI@vnk~^(ӣDi$/@Ʒ:~("[Mw>ۮsDq`0w֥du^1 ?,LseIY\]]oފ(- C>c=zt<)Ϝ|؛|D@ @ i\^^WhB^ I"d&x(^/9ʲbRF&DԢj3M%6$༧'1HӈX)0uB!dB,)k+ʛu^oh/躪c5ϓ$YX'I"vHg>?ٟY8f4i~W?'''ܿ(t[ȏo;;;f$IomtJ8 0a;a;a?@ dYbqC F B PCYg޹!ΈCJCY,+d4-xpckc',fl8: وEQS BH@݈Nd<㼣Ha b0XJa((+CՔyJ,MyN]LvF`[OcؙLHl=Z+VYFyXP5c+H=j'EM}|ǽ&g7]oUqtt,P$I£5$L3NR*Hӈ rfoG)g?Y^uz-v6ߊ:qw3Z9Mmmﶾۯm.oeҊJ8)%I$I%\Sdqܹ۟\\c3Zo#7.s$)iY5p|$ is˿@SNOO`g_%%J)iǏsssvGsz-,m[űEѭ߿/@ @ =sSf7S& D=$eQtKTKl+xXug >H,ǬLU3 pqI'/r!>|Ԩhq $t9K^XS5)ٲFk-*!b4gq(NH!ih E|^\ q$QR#b&!GE(%xX5qxgI 7`:[Gӳ 8jB"Zq~Ѱ֒g_9KQ4|>GI 4"8[StGK*ъ0YeZ/pޡ:DO#Rs}3E͛$XCU`1AHNqvz7 ԶFY?/BybtרvVBz!"H麮8qۜ*_{c ܷy.U=J).3)IK$q15)B;goVfGpۏΧSbꓕsXz/f@໑x{~_vW~W^:m ` "p @ )hI== ~8n];ty癌UE5ȋF0'ss.,sRRI+4"TuG)DoEJi &b؋FV*˜~ ql-VL10"ւXW, $RHi1N"X{ʺkaowjUa]ŊlaEIgggxYFhƢ $R3'Qv"%rʰJl87%Abfӈ q90a,iM-n+`4cXOYUŊ2_`j֣XkF쌢rXGRU5Rc&(ٸmctCYVXU(@# GeŽCH*T#\{15eY!(8&I4m#[]6uWv7R(u 8˧hbwQ׆lmW|x?mmu!>r4MQq6u-gS(VDnY-Z?0@ @ =r4~p|}U'B*u~=aKr"J"x#%=Ry I68k(ƃ(Hxf67{@H"'4v Vew`#I4i,)k5S+XÏ3RKQ\T5ڵ( Lv&_SMjHjR "'8j!<Yn.kq}39w+`8'ժBY!|3(ъ{Pxle$J5Q` $^#pأ2s|^ZcܾЮ*ýCt&)ӳs\n༧v#RU%v̳Wيo'=q3j$#:Uo!7ͱ|9I%)\PN4G@k`0薱)n˵,uo{@IOyAm@ x"p @ yb819&MG8eD p4`z=EH}j)kR8,+ʢDQfFmchv4E wUT$iXʚv)i`ynG*N^iN/=EQހX"BuZ}8( ;7BnAK(Z0MsPX<~%e]X^E,wgqNCG)7qEnhOV)$Z+jU婪goo,XVuMQ]# !xZrl6憼~5Zk!_O}SEA]םZ-eVݜ.;]{pD<8<|%E :G)eU#[*BDpzi,^*o۟mɛdsN%1Jk9jB)Emol~n?oE` P7hS?85o=~@ x"p @ rj$Nc7QqG{, 4$|ܬTÝyQSq8CEJg=Z+qewbLFڋ#+cCK@❡7HӘtIQ{ ;\^L^$ 7B|s~qH$xb`Kؙyk ՌzPVXպ4X֡.k(`KTpȳ9;$w  <9>^@\\\M8Q RJ$_Gk9ϩs޾LhBkƣGZ\.)˒Ǐo|_E1,KvwwwEQpss5ivӭڊ ]Q[P/8G$qh|7rݗ]UZ8&N8w؛)nBo/F.,$/k)Ṣw99֝X*w|"I1Bp7s3Ϙ/ @ |gD@ @  ӷ?t}?&<Z$4i⎭5(%駚j1ڹ+cM=7"kZtٛ0/p4ɸlyS!q1l3N21uU ui8gR"8g"/ё$I{yլgfw𐫫9@0 Xe9X)>a zL&~)CY,1Sh #+,9~-E ֒$2غxpBF)uey}VyF',0*njtJeQJ"Į΢fyzq |?BJJsvvJ"^PV%Ɩ8,*DB5$Ix<&"0tb`X`Da!>шf8稪ϟ[(>j!D'B#[]؜cmc' Z)~~Ci$2~'z%Wx}xxg_-yt3| FOkrd0w~7{"]R zi.t *upvwI @ J]ל=!wusH+Z3cЏ#A^ klB4}.RSYCaſ41R,s4n֦[P#:"p8Y-oH^(⼥sXe*.  7SʡX$M( =Ӌ $)5WWDQ:F*IkDi5EV4c2HW9Ŋrα78Q9(^x\I{ 8/PB j[ 3Mz%M5Ș̰YMQN cs}kko|gs8!: IRDr0[,MQְGgT<?lB [.^#*MF1'O4'шxL"䄢(X.,K{{{\%EQt{9yn~}sɄC8EQn9;;֚oo[oe b{]V .߻MK@BvXj$(Nt>1]tUUdYFiz+wS \~w,`8TOc0+Gxd'"\mtoW=14;׋?ȟ@ 3ށӗDl6c>pxxxAI+yPxw6Ua|@ @ aggKO zΔRT!'qA"k1XVp̗I 81%E 3',+M3LCYK,.$hҍ%B8p+Ժ7Uhp'Orxp@G+E_-͇()j휿݊rnۂPxǛ !h{V wcU{''EQpssC]!8::쬋)hp笵sw OJp8$㮛el@MӔ8j]@s?qQ%R[wB$IRrssai7Ƙ$cFQ}Ţw}t}*ywV @ 7r~p`|Ƞ?(4uUP%q,`k/xB륔EѹG2q7`C Ŭ:X2X/k!MJ kp}O7ῌ6Çw pmtQdY:$I§>)>OS%WWW ]wUme]泹 !yw w7ݲ|m!Dwl[to ۽ۂ=h>7g9OήwRDwSڞMw;~z(-}.n@(lvwwq_:b}=ϟz2!Ipzz 4w !x뭷FJMnvvv݄'''TUrzz$! "vww;mBs|~h4b:v~nVʇ777ݺC,kɤ=L&,o'@ ߽xY,Ŋݽ#PchHbt:1RFHB:qx:g0Rնyv6bKYjv㺦`Su^Ge pyEUz$edkԵF|DP UUHNl_'+ap^wH:b0ry=@#@HG*+kks, jSC{ DgW鍵/ IzHp~>3;>7sBE)\^.6nfb-Gi "YPQl"/>_o9wn]+D jpÚFd`0OY-ggDyj㭯 4B pT%#շ8N9Z>c0n(p||ugFؾt3wS\-rCY]rE$I҉ۼ)2qXֺKhy[%Y1n 6M!]]"y9(2!f x+1-Aw3r5DVގ Nqu$yp??g00i`0ٳg52HӴ RZL&!8<_]( &>;]X_-16GEc]<_376QMصzC5Bg9k8kR o֡d^BY9SfV) Is|ܿ^R,KNOOo5x趫www8wш7gg)eܕ~ucژi_~RJzж|g6ӱX,PJӉ̭^+viVɀ9&|d3X[+.\[cD+e@ |`N`h▁.fySlm6h4MN}, ,`2tӶbb+|NEuwg 777u.>yS,b8vBg{p3<|s޻wlt:e4qrrǏOvT~E%M[;dY!qS{EwFoHuMeD(,c2\.vڃ( L&\^^;{2[z=xh>8(FT^ THN5=R o8yXg!Z7փZ Nrit73,s/5O8"eRȲo+%W qNJ ω}j&K3Z^3"鸕R\ eA"mMi ɘ_bpuorm;Y.p Q8\Zq~qI]V "^ȋ3p)"@Q֦,Q=8d|qq|B Ve㫔d8ru5EP{{_ܺWH~r5+ M%>]].fn9>>fww,:.s~ ϛbpkz5qwmv3yS n#ܠx[n]›)*o旅Z{ēLia Xտ%"e=ݬ@$#( 3DZrh}s/Mv|GjR], vvvzuM/Din}eY>Z9Qr$$ilr>Z3kicm{;;;q -Qu'˹uoY݁pY~EQvZ}d恗yЛ點X}+w@ @K*w>2XKV,Cdq2@ejF>:yJH4f1_q@$5U_bc4HX(inU`(GBX/Bp=3q1UYX̙2Jq: fy /B1H%Զ*%ipPa#K sY.s@j͖_#H#h%Ϟ=k\]2M/r$Y5.Q@(j#X9sq3xptURLmȋ !5{VZamIc*VdxSalV&1,6/AXX\6RJx ~'FEe}gg7||3,.m%ˮlnǫ:~_F+ҶFM!]]w=EQ}p>tݵv})I7c7{l R8=zv޸)+\*q["]ݿw;bp1DJh)@C/..8<<𐋋 8^>WWWw6n^<}!r$< x ۟@ 9Ѩ; `@n탴@o弗-c s>|؉DQ۵ӌdmXEՙ{m;]Yn$IBǝ{׸k\弗m)˲>88 I;OڃW8@ @{ k-Wω%GGv(r}stKA!ZIokUwoou3e>}6kYLW%2H 7׋VM SVyDКs$IJH46 qS5-\_ϸ:GYO$=D;3jS#;[7MI]<`wҧʗXWkH\p~qEY,HƁ]TyAEF6v]u4 }NA:*#{~!$UeޠdFXv`!Xdx1u oIP[FFo+x_i2|ӟRX,k]=uZm{sW תZqS-!yW<ϻm{e o N͈#z=ٌEVk23>WunO&'G,ym@EѥgBz}~~[]Fo=$opȗ%~7|+?g?_?1u,g~g׾//wտW7tI5ߧQWWW\\\|[6bwoםkZCY y*Ԧ[ 39=f:'+ʲh\xؙLp9O)_;#^ÙH xA%LF=hG-q^԰Xf?ΣG'=ʲ\a+$Jyb-};2zj1%K?MƌF(r{C([+Bqprquqsis:G| R3Aic=opV~2 u5ISŷ@q|S./|CO<SlE|.ڈ6Y6227c7Bݻ-"p&c~'j$I[v-븹̻"6z3 =Htol1 ounvo{[ ~7AR` 87@;7x??ǃԧ>aG'~'__G~G>?'O???G(??OO?^oͿ?y|so͟S[Jn!c~~eoo!;;;ȏ/>|^nW|>wQuSAp8DMs\]]OE(HӔvvvx77qJ)NNN}0Nc={.3pH\-GGG///g^so?:??ϗ%yR/???O~/"^?GI_~Ww~8>>'O^ _Q{C=94i~[n+жq#,[1\]]!uZ/..L&qLQb1ێ&;<==]rDeLS&Iw 31QZVUuKLbqm2|>bheS2ͺi(tJ.5Hk~!6l\f3z^7RNgv @ {..Mo'訇35d^ ڈ80q"RVZ6=lA*EVW@/yF^:ޭzm̴(J(3x2~k y^ԌB%#.ί1ެ㮛bcsIs,lx< Npqu`=8r|ބdKKGIDQE1ѓJzmMaȐї%%EiKtH3z/:<8q hl)-R6px' z%z cpH`cÇF<}kwza߉2ެڜf݄RxӧO;nmqQkqW{֚㠵Quoܐe7z [c{+ixb/|EqW^#wb.A[6TH{Ǔ <󜝝i & J)O?aO?M]]=OOX, h}^N_4_"~=ggg=? o _uK;ݿ/ oOOc/{3W8?>9|M>}1LmQ7yۊƯze.ݢsssst/{޵>ؽw}.5lsw݊w2G];NW]۵wS{pv@ @{q}tam15H )XxBG().b|q*%xh c%RjbiI^8xT˚OXDsaQ2A%=^YV%Z+q $[N.FW6ͪK0HcjϽ.uhXxh')@ɦ)1Wu{N}Us~qXEF)< ߿ꊫU٤u#@8Lycg[Oάcc% 8'pDn"q#f9XJ!QalqC+z_d}'>ol6W/n*7o+7o:c)4VnǛ2^& z8&21 LkBzq#ޛ4óΈpx6i6㠛=d i8\1ũ![p:@UY1g3Ayޟڒ%f7ƈvv]̬Ʀ\L 0ǺXWXH q{ygt,a ]!K`0-QI^cW}VffկE;3bǚ{;)O{??$"__|K/aOEO4?#?o+7xz}kK/忌R].//F?3?s䭷zbp8"ܾ[H)۝ #}09U_O?r/X,7%.ٌm~oLSFse$ I(MPMl0DaK hwĬf0AYq@/kր̖XgV1%  " @:R,ex2Q2" ڛ8ԚlY!9gŒ$rԺ5mCβbhӸdZ#;bk4kj$i| /)Ѹtc SlJ/3qʶ.]iW%uQcQ*~6 ]m{ZNzoR@ׯ\;Nn0F'>IDh9nڸ6/or߶ꢡ'(e}SJK/DUU\\\;`Ν;O9껀nvT=CWr*z9ǯJbn! a )~0>4EQGG|k_=>>K_^z7xCoCJIUU/~҇>o~w.w0}~~k/ݿ;!dr偄oQU?S?ū׿.Ν;E׿i;?Xx<x<K ۿE2b2qzzLUVH!ͦ $R)*N@k %AB,2@͗΁h]3LS2ZS70+96c14[+6(4y2;먫 nӗ ,Aŗ_r:g<=#F Ib#H$:S1Hb* Ј[8FkGYiBm0FZ9B4]8`0`X)Ue!6ibi89Y(E& p!l" doS0B'8+XΧsHѸsDIHUA^aI!Ie9x:Ysi6Mu7NlVlgVJ=!^ \~ PwFQqQl6}^ߏM]ĭ㹍Uv1 69]}p<nA?OeeÇ m+n߾whCtA8ݼױIn-"ZG{[̳<ϧ{q]ܹ{?!|;ybMy7+ ݿm!'ϧ?'~~/%* ??7~7?CտWȏ{{{o6[?!+IG>^0??Jet:Pu }xX?;~?V{x<ϟ.{{]N.^ΰb1LcB爣8ͲFv 1 FdYՈ Hpk4`?`6_PiM$ p)8GJXcq%lSk)BqLL9 EsTPXѢsxЌC:hh$aO6A+[C0$/3ꪠ,4F0H۝qnI{0*&T(D 1YQ 4Ɩr{(ԕm2ALYX]#m.&&Zrx]L+ +_ Qu7sǍ؊RJ꺦,Nm]a$Wd],KyݰY֚,Ð_~,fվ xv +}7 NnӍz|tZ ÐwﲽMdY1y?XkETRC]U'.K'w4!?Dk8H>6YێGG'Xdl[mgGNQba6א[nsu$pE8뺛~fmI4Mpn9GUUeya,G~ڶ9G|;$I:"?o.[qLۏv \6;"Ȳ k-xp86{=y]Ρ Da1uIϐ*DHu%Xw}Ba \!$a 1|x<Ƌx<x<"fwg2E^jkDO %JXS!iH(m`8)XEQbLO䑂 FlVi㢵!#}h5A6rrZ"Ø8N A N/@HTSY! $*"%iSEE',9_aPDHGF@(AJ*#g,tIgp\L`!QJVXcak`:!"@&NY65еe4R dr P!EM:YO?#ܽ{#sb+&IBǝpEI< eYWmҊ~\?!<~o\M_ⴵN[!/v +q_w ڢ* 7}i:U $u1#(yj<q! RDў(e8L(=|oxx<x<S1ÇsFƣ N˂J$Mc4@,/Dit ;J1Uiaf( Im,X*W%Y.*GT %$Xc/2 dEDaLU- $VVqe6r45F 9p,­%1s\(q%qp!9΁)94@Ȧ[[]`B\Kk 8agwó7/=Z0^u26Qуa5]AN\➝5''XSloݺݻwEvז1h]q+uvS34mq;_߁w:˲x%"*iZw_8/kM8iم="x<x<ϧc Y6#zD%&/2ȂGxL]WLKk#XO&Q%gh[_ݞ 4MBR%etٮIHc5 \\ZD,aeY0 !EIkbr-$o.a5B" E,6]h 3-RPA_$Rئ 9X%f_]@]5YAQ>"%w}M71n<+V4g 0THʍubYR^ CRʦw%ײ,Vmm_ӰRŕ;hvJN@5Xk;y]f}׻R6mk-9׉}a?^uoY!ѨlU5u]wu]wcFhONnE~$~}/SKrKwf~]`__Nq`k bZx<E`x<xM4Ni{@).! in&N[f0x<E`x<x<9NN[ Ґ鬉NM$r$Nb#RMsYkZiRu'RJ*m+R!WA!V8ɋ[W\\^0DXSs9˙L"BIAI!Xt4js%i5J)8f~_9l #Y %%y%Nqq=Z"h4H Jd0m3gdE HprzEQblRI (N)KZQUƣXf$Q@0 3ь c{99=9b6(qV7b?Dq5\qn$I^w϶uc+NfŭPs]@VJ)UU]GO۲.싺0^_pHuݹBk Kk}mY`APa뢠[z'W#dA͐DkXAeeXTx<"x<x<gS(6U0 cz4XK%9xgI@ vv&mC^,ɳ)B(PH!Xk@8(% E B[c{a:$/sQk'@JSdٲWJL&E m44"iwa()jFEQ .Xi:~%A$X  $ Ă ǮVkMcr5&R)Z2VsG]W(ؽgy@JyE^ V*`ѵ]=x<Ƌx<x<1(2H1yQ!*@`EqO:X)y^bCR Qu!m-JWcQ,BĮ8b90Mf9+r{)h@We(1p9_"ZNGG'dyT!q!P5e]6RIҀ Pܲ+vRN/'R1Yr`, a!99f!d| 8IeX5Ujw9a25Abs$jc*[⻛.bjvJtr@Y5X( yZohmVcL֡) u%b z7M;x[ݏn3I.//w^'z,scuiEẮɖ3G|svyx|Ni"!DM1l>G]FI].8wսi}u!jN.߾Mwݸ}x</^x<x< b(\=]!Vi,fk2(jJc1I3`l@`ip=ӞMb>WBp#šĚF b$@ 1VWH(q?:hg4nb +<|pGsRxw]^rr>q&W&#(b8yp20 I?|uVxm /6VU&IB4,(NmͭȻ.Eۏn߾NK=y{Vn|"p:$g%9PZÄY,I` ^^}7+cTIDAT$XWe.?8n`c k ip2|xx<x<3LD\^mE&cKk T8]TiVƙ*QmU2 QY8BJPe[0˥F!$BB]&:yMk X9a1ucNP!4"˖!!og4B40u(nf,'R)5` #"Fq9G80  AT umwAba.' Z;nlq||vLyE]UXg( mD+?CemYrRelVҭ9I&MS8V$ ;EuAu+$I7:tc]|~~r1czrq {;;MLg5p ֯e={={]' !pB!eD(5΂%.QAr.~l>,Kʲb`k05x<ǟEx<x<s|rMpBU躤5{EIUV"MN/fׁj}ͽv;:GUUqI8?_)AIH5Y)jm"Mc@QW%z kj GcvwY.2P!)0LAhJ j`C)2矿EYVTe N*GFJaviick$+V8ZW\\qQ%84K|F $`kDkD hmqpyZ⸉Gӏ]{/ߟv4`菒9ǝ8܊ZA]o],$Inݺl6( p~ծ צHi)%cw1++.65hbS֒t6Q>wQTxtuֵ}"`}?hٹ2mkk;`0 /@Px<x<|ǜfaJl+qhn!@ Sq X*'RXQU%=mD޲- D(5~쬥5y^X*" )1qnf/ ID]s0Bq*1ј)SNOC̻go'RDMT1L aI&:4eeQB!j"]#]2.y֨9F' C[ À"_pmvHD`l),bY $qq nM=﮻GiKKܼy#^}U|#[eRL&>ϡf>`0xB;y[woEW~Eqw˵ka孷b6]~D6ݾ֒Fwnׂˌ$nk."ZQ~ZOFBbR()' Mv\\\ L f=؝B^x<dh4b6u>(iTe'޸qGQŕ<x<x~h\S97o,3j N`JH)*cx&)HD8ш|Dc BPi"sX+q`j$Y*ݸuUL Hn8CH !_C< nlr2X&!q=?8Z51V [-3RQ5$I"Xm(΄OVB: Etl1gg{s_B}@864+9=z}ys ?Ml|>( ʲa:2 y&A7(,˘L&hɲrzzќx<Tx<4c6KnL €7wC}e&޽KUUx<Es-}>a8M(ΧHAFeu;2Pes PTevʀ[Q5D VZan V r1YNEXkyt0$_A#BH=89+d&8IQ!j iр:bFV:,` AUkO0ZcCsXWDQ+K!r|aܿJ=v]b()?]|uH)IӔ,xtt)0Br[[Q8ܟӦ} `]UՕgir~~NE$IrEm_o+A-?}7rK]ם k;7~pnˌpD8\ҏ-GKP>+vl mx</{'p{#w2ѵr좜n鵖4M),KR n.Ŭb\ǃ|x<8;;cww_~C0MKx<< Kn޼Co!d3u#fEQFC0 89HA4nsu eֈ+'pTl9Jh>t+%e)PB hi먫8"hv8?ù8 YdaP2+%UmMΏ)B پ3$"YIm#Lӈ"o\BjzVXg2_ k!fJ=:8??jbOQx<cY 4t=Mnm,K౨$If8rmʲd8r||Lpqq|>ݻF=`GUUsn޼IesݻǍ78;;y<TuɃ%l"Ilc{jsOMv#+b_}}gzz+mV]ow]G??h\W_ӵ;[5!mM=gTwc__f=!3 Ŀo B1$7oEawCa(Sc4x<]D6dY=wfYPyKnx/<F,Kc GGGcRS%lY>4x<|999֭[!dwws...x<SOO)lfϣ3tUᜦ*(.+F$e&i`]R ڀ )B5"8I'xV竽Xm)lR=e{kSl]3p@ I(R LGDALH%YfYTDQq #H8oΑUd*VH!hdĽECRp|rHZr~~N]HH d0%R9lQ!`͓_ ع#~} ˛t]w6-BqZ_m߿_o!%oxӾWUU:p}],H) VGAc]nMZ(vAt bsP!]ÍJ޾_sWU@DXk. x<''"?X,OL+sE溮9??>&'x<:iosvv$I8??'x<4ˋso>G:C!EcMM* YVeY1 J)?/PR"$hk5 +]$IDb5jj>ĪQkʪBH(ɀ3ΐ G 7n'Bbi擢qTUr%)&_] +Gۊ 0+6)"ƒ-3lm =Lg9Q?8 L(LHVT 9;c&%R@#.?LUX=߼m}"m7^{ۏ^w~pB.6pmds+߯zeٕm׽R~~$u>]T)3dpyha\+EC1~yyYƃ&IJx<}җīFx<$9>>$6?x<YɣlmeI< cjX2_TF6?@akp5"]F50ϖ錵 cbI]kPH)HhցX6`rR,Y $% 8>>.3 1sM场Y̗ITptQ5TЍ,(y1#J..kiJQ4NO!, @Ν;L&2t%7wKUHL/)$n6 U[q✟&:ֻ~םл)z]틽>֝`޾{ /]í}$IVNnپx~Bi]םouGR61HaſN\v\>::lM UmXf3_Os?v%`Hϰ +VgBŜe@mE#RgY,Tu^̎QJq>ɨ'B[g. hkэ˳ Hs 2y pn-Xm.wM^Xi#ca"p_ ϭh }Qmvz4to޼u]wjh*FeSo;VX|]s{͛|?x><-U{M"x<x<00I [섨 NUEeӧ8%]Qd do'`kR=aT@Ax.$柧6\}|/*PJ#4dF'X'g/Hc8mܦm޾pw  [%9eYRJ)1hD$W}w9G$y9.z`ێSۻ.? ^s0 z'KA+5.tO܄;oщ--1,˚bx>- C^y+>|Ç\EگZ9/{</}K|_om/ҕi._?vx<x<@]qz|l1#n'#dL]ڀq BR΂0Hp2l3HPކFX,Yg ;x{@(drJʒCm f01 8=Z f¢R98TX#X}dk-Xqʭi\ !z"R5[h֢lo<*F*ۍ`H(/bD#KלVlm|7g(8992ϩ8!i1ܸqT'o<ω}sTUuj63bݟ(߾gkXA]`V=׉9w,ڟ=I C xcL&x,޽{q(꫼g)%ooQ6x>f>| /h4bXS?S|_vrQu î|86 YE`x<x<χ, d-`D4Ngd (rzz W&m 7>"Ipx%z\EuYJٝ뮑>mt;^RE6+Fz#^uu߹x<$ BO#|! //o|-~~z(]NJ??k_gggx<x<x< c 3(d89BDipgA(u+QI6]c5yOkʲdV` Fk(FW%A:ʪr:g 0H0J r 2L AxR%BIvQ#0r:651qlGn]:'6}WߧV[R 7Fq2268v.V]ǽqwa_].o{Ine,K>|7.z0d2֚((!D)@'ږeŤ&IÇWߓ}ЈƘ78JJ,jjۓf?8&InօOi@oƉO<@sLS^}Uf tq#t2y;?7o,9߿`K%Y"DfcCka9K*Pq|rpH%F7Y4N@Ilb|шP5}ƭ\H89=V*h:$*TR0\6L%ym=:,Khs @@Yׄd|>&UY"};FAI 3v(g 8'N4N5x]xl;n۞ZhVHMi7uo7un t.ؓO8coof]b+̶cۊ]1pȍ7x׮|iZX [ڐ-{p@SUq_۫yvv\1~%/_ty1zi^^c0eWOIÿ7hDQW"=FG.Ux<x<x4[fu鍭899$[9qD1R"mg[U\Jpp9YE Dc1Y)p0&#뚨c+TXhuٸAKmQ6P2rp =x*zkkFRLCK>yat}z#T5ۣ{X+8(y6PcaUnVWz c:!nVm(y.඗7JGoܹs[n9%ٌrE(ֲ\.Y.3_M[WQRՆ#./fdyɽΩ*MYyyvMtEHVQ1u͛o+)ss4X%ϻxif]~= x<x<\i=z[n3ZGq2ٿmla!dR*0aiX(2)2 "BB$#g-;xyD+|8h^UG,ш0L!\;7=1$qBgQildE9|onR E 06XaV[_gZ1۾$颔>Jow/)e'q|j)k-ysqqqZ3ư.ZgXt/Zkκ~]sx?wv-k0,<(Ԝ^)Jh3QDG \ͻ>_uqαX,xwx8)l].yCjmx}1kU s)fH@0HB:g:/ᐢ( WU#*E^dZVb(v3v}_&wN`)J$ i2NZ!Zfq3:ף1ЛƤ!n۱닠B.(.N?O45J)1}kmN/LRNN/PA8- [ I1 ϖH`" n_Z >ΤgpXK5c€1;CƜ\.wx,{kx<LJ=x<x<);?ˍy΃o3yy{Lg3l%1ee@Z,s(鸸rh%׫u]3ƀUk%\aBQ -%QRp8gQA U٘$㐲1ƚ[n0LԵ]xw39e"u]'D"8JNOϯca']oucsk㫪 k-u]okћ0 Z#kMO;_Um0ΑD;;\^.88X %Ԋ@4k/2..-ah36(k~uI4oka('GJn;xxtx<ϧ/{<x<x>RY.c{W3HGH9"C`1[З0  $Y[La!/rʲF+0A ΂FA pP͋Fmdn PH,;PY@va"?jƁ*R)R Dф֜_t0OAm/o/õu:ne0PWz47E@ Od^RObqXѦXV]aiodW1Al>A͛یI'Rٛ3i?Xc,AYi$Dƈascwd( ޹ƃGWyx<>x<x<X.d[ܼumH PVt*,Ch4&ٺF'QHkRA:PSd^TV¯]t4b4=07987:eo]$n6qԈA`VBh./g[U;;;. /bf+wuMUU#]qdt:)~n/nZs|bOˌluh"ȭ,5d8^.g phLmeVQ%Ac q?]%&,R*'C0_qxtNVjigX|һ4 j"x<x<>|g&C+V\\0 $c$R8'4K0! %YcpM"F[cNNNqF`-R4]n|DhՆܺօ vGqs] 띳aA;vv_a6qa$A,__a0c8wQcoկ~+~֢Dܾ Iʲ|sEcY砍;i|K?MkC];9 )E-+3RVev `gwFpX>F<+99~"[Rq`PG{M.溮p[/$EiXGYUeE<:_3ƍ7>]Bc~/{<x<x>63+<Ęh0[b]H& er,V A6͸Fb5^uM,4b(N1Ir@3$qQU+-JJ;a0mcחY|}Vg"ׅO!@*P@E%;J@EI.V~CtH kGGGq{! 1p[]~pE7nEQt뻼d\vrm[ ˦, A0f<#fTU1M/FK`h2/g%lds;ơܾbQ Xo` e<**ڼx<ӏ=x<x< @yzh ?!Ϙ&czyrd{{ Lm@Lf4 #|r%d407JjmPR!Mp\UsP֌8|U~lyӮƳv_~Xk C !07#@ #%Q2'5Pvysw6_Wsຮ;8MS0٬EvΑ;k 2nv{|s7w0N p\N3]ox>xx<x<fgϸLgg'1BH,ad))ȫv\ZM_p@It7`׸]ġ}]U]:>N^ZKUUDQtō/K$b|5 . o<]YܮZڗ&[%(%#@""_F="ŭ[Z3;W_}EuWUE@whE%6__d\vbkQ5 ÍnlYa!In "$JqDY֘Y%yYPV5 p+ŢQ ,y:t:,Mu0_e"3b2`%XܻwiP֚<|:"x<x<Cqg~x?v˳w?)s:. Kp#Q D#WHE]՜_`Daǫx^i"eىkmdֺ9֕p$ int;PJQ%QunuӺ?8y;XJ!CJRX]DqA,&F< "ĉF /1?u]#*x 4_ZQ^w"p}*t1g;nM ;Y[=2R$I ۹(;=Q];~r>b,H /x RA&\8J]fH!U]Ȅ., D @kM^TX3 db\؏=wO)m5u]QTGvy<tE`x<x<g0 N"y#:6)TIIun~l+0*|NQi ( N||~*_ HkZ=C0gY/ŗqJ""DV"p#+>s~~η-ַZs֭+n?uWUEU8b<8:%+. J}j//`Úg7D8E[uZ[#d3!R\րі383 4%R<|0b;$M"2݃ BekRՆÓKyx<)Ëx<x< UUrキ޽ ֔$V"H$(V!'(cAG``2Nv&L&)A6""t-ƘNLfݴh93RMqtf?Л\O7|]m3б͏@~X-9! EH ¡"@*Es־r~~Rf3P5Oq,+wyc?>J"e-CX@vAt_k>~1z1@}ԖDua%m c5R q /( IcMT$R%)K*SaZ[&0䥗^&" 0fGx<ϧ/{<x<x>S8.ɲaO,/xLēc(DȔDIbYᄞ$J)@k.g?nY`@"*2.瞛U}}dx<*㟹׃x\wjz^ssQZx<.֢d@p8B<#rmL+ N,'/JGZM %k]/,(X{+U)UA+j𭖩j/!Q|Vi> !*+0B2X$DVp(#B!ex*ںwm%a>f!DEѩ[9TQdZvWcq+vw{<x<x^h3 Ьni>+E5@ba4] 8"g#sq1KgDaRhl6NE1ẓ34N aXC&sEs0 ύt>}9֩7V @KKKr @(@T)V^t5WneH)ަQE}^-9ZWbTs%A@a:.j cY|^j^(s9VOp-"e~Fe,Y^jǁҒc<5X!1Z6caư>JI6888Ka7_ZKN5+X]NX_1``0bʕ+LS>ϒRc=*'r,!x=x<x<xԧ]@9-a1Rz(K)8Bڭ[ z֌Ss[}ARvtJf34Ra֚~h43귭DYnN=뗮RcB;rY34PT^k51Tnuofssf3vExQ}FAc,;ʖR&/q׽w4A6%Q.""e)4Kbtv @pRHNCrm1ZspHc]9ЌFc(́8GE^ EJfeu8+x .\੧Tϵ?BC?C eeeTtm\|<ϹqF-r uC7$I3<>)+Wprr x1pU677r {{{X^JQx9^x<x<W88>>;bUZ ygc&6X[*E'ejSaÀ$nh4jXJY 4Z~NNNfv];c7=@w˿ oxЇ_Uwjt:ٟ'''|ww}C1;.^O}C 7G?>7>1;"g~t{</{<x<xKsvY![qlAդ55pXkѝ"m[b-QpcY+E(Z_ah4N82fY^ZtwGQDEAeAPb<.`! *PR1k )Zkc4:09 N4悬,;t6CJpsǶ@p Ap31F+97~7//[VZ^Os.\ʕ+ߒx;N-x'_~x<x<o󜽝4Z]/&]d8a$LsB;)Ɣ"ߪmc6"g%"Vf%..IBp%V8EO3LfIѨm>[.Zg_xh\-cj9Gݮ;O:.tQ]t/% +h6y.;~:+ I.qg-ѰveԷq% ctc40[' ,7 H(g-R  L)(Y "UEpsGI6X__ܸ͛qû=|2hą jӟ4iO`<ï?88ozӛofVWW|_IӔUzީe>E>X񝍅^Ny񹜿f;]t& 7B!FLH@ ,yV̷@Xk2|фhtou6K V"EkAF`p2a(25K-\y4; r]S1:?ʰ:5X_i}2kkﱳsςypttĵkHjۿ۷-o%nIIiu~xGo|#mG?s_ A?dYWկ#; _G??;N;__b^Os>RJ7O~E[E`x<x<ks('X" WX[s82 Sь#h]|c&Nn[wWb1PY)iEv0 y^JLNXkI6vYa<תe^^1aX;+~cm4ZZZ[WpZSGpz}$Zk|Iqh4,--O|9?F#/ci4c7MutEt:nܸ>9y1/^dcc{w/2RJwh46= /{<x<x^Shy)#Yx!UAYY •$ vU$Yr*jpu8f=w^̌l``+pbq(RIS\p:L4 AIP2M\"%h6vpQg JpJRR~bC9(?`F֮,dzV+!" J%3?agg^oCj,/uXB =c2؃F%VWW988h`UmۿZE~~ߧ8?S>sڵ۶U?w?8xꩧ~:{w~wN;g>?Λfo;??ȯʯC}i絊t:/=N=,W)'2i>iJļmk8NQB+]K~ -ΕR8[ sgA)Vf79:s qH d@"%!d^)Dqp8Lg)XC(VVع1L44[M&RЅ *B(EBI3 EmPEFdt6?,LXYnCO?}Gy;w9Gʲ~!gsb;E`x<x<kJ`lFtZmጡݎny4rn刭:+71^pXB( 8cZ󖷼6EQ)1qs#hosV, 7gGlkW &8a1C`K-pK$f}ɕ+WCx<ˈ7x<x<ٻ]>\wۜ•31_Ze)av)CIv];Z-$>FZ>;s=zZ9!2(h7?81mM5WSEq99`cgc,kK$B^*9K|c0ȌF[0Tڂ0P(%Ri RVW°:((660(%)rM)ݺBxLNXp8QDa2*[?+J5Ô)~u<㬭r{<yN`x<x<}cN wb1 ui8\}-c1 zx+aLSnܸ<@өZk&i29::b{{Wr||h4:5Sϛ;yЕ`ZɈntHY|@doD+-L&[:'gh\e*._^g2I=MSۋ "|RJPbRHvAyLR Jh!, mXZiix\+ 5`J1τU8QFS:@Yc}¸hBE!"̠3PʛJksΖυϐ(elGN &p,n1RA1i3;}WZt;]zac6MNz(V҇~W\Z;E`x<xz}RGvNSa-ԞeƜz91nTz|YvϊՋV$Ibii)|+<Z-ZV-2'I2'SzJ).]ǵEߚG2ŒVk`a8xqۢ Ɣ}6'mpty9$8'"GWII1BR\!IdF1kM|k3vˆt(Uեnm5 $C qx8g.bk J*84E"De?E2:0$帰8gHPBot KY 8WI?(Ϗ,gYIUFn6)ah2ip:>,^ ϋxCA4MXZZh#y+7˲ZfL&˷b\QUwcW?"cq=lrU._~4駟… t]F$I֒e(z*QlSs]X=k|^ J8pnnUtqCpt) h8kQa@3i0tN繡j0 $aiˠ# 8CVhTPB;nl%(7хo˙!Zyn0(Eϕd)F4;<",Ic-ge=v}‹w2W^x<x<jBvt:L`X J(^z.tZV.ywJql8f(ƘZ^GRNC&"0*٘2~jq%03 Xy9:qFAE𐥥%NRmkQvv;ķ:Kר:8sS8 IhvWuNo̓@)A#9 ',-uxy QZQu+aKv׹2UnW`Q|v &lE q0&+!y&q en2K3 )VV9?[ ,0uk6Ja`}cxXԢ18IѺ O@(8ь&,8d"tKρ-ϧ0!R*I@Evt8t` K7Ig9istt  m0Dۂ%8f82 T~ L/^x<x<ի<3z(}ME\t-8 ]!PJaHѨX!q"I0prr`0㤧i-VBk\g9G,//JEؕ9yElnn.EQRʋ ZZF8.\gy8tY]gȋc_<;ĕSw9tF]zg P,-ΊZ]tqA*\]goOdi}jڎFPQ.Y^)A,#b:Wp"d40WV9 ! ! "` )r#d*+b 8Z6#  Ði@[¼\PdAb]y8'x˨@ Uv^tZ!FdE0#/,+K66։v{gsq [cϾ_A+(7M&3(jYr\u3z n.\`cctʧ>)4%$!MS)e`T-GQD8&21Xle6FkϛﳯYW8\.Þoܷp=,%R*JWCiB]迵Q6Q.M P ;| {{:xQ?ՎNf8NkbX:n8S Tk,Q)P;El*4#O3j59< \o6:Q"b0"6q<fJmC[PR"dyإhҴ(ݾtz@ōu{Lrɴ:K,uɲ#l9L'y:!J:5* sYfs;;7~z3x<!Mx<x<{TQnY__ӷ(DEwpZ%V Zܭkee$IX<>jj~~10 it]|A\>O<l6 ð C8&cVNSwW1+^G$f+y^Yũ3-^OkN/sTܶݯ嘩@\εCk uk1֡CuJ"$B<&PG8 )$ NA:8[`дZ %1ZbB(RSږ˃$e2˙2!VĝE3PS7JgTLrQlu”bj)N0B;8QBP?&)֕"z*t) % !`cc  r y^Gӹ/]bxx<xCLS_h4"2,(8)96V c Zn4c$u ٬vVc6Ɛ)fIT#S}wrVblϮo=7}vٳ,.(/nkEAK `@mP㘫W1Z4qppPO?4Zk.\@8L&clmm`&c1uxL$Ir0YuV"l`yyf%C) Vj$IH%7sMy4cFH !jCFJ֚v]w'IRG>kIFAQor@ь RRS[mYV`7O5.{Bwitg?eNzSp uq ҂ %[0`2Z K!\xYj2*NsLaJY+h4b41h5Q}rm1Vdj`Dfg;HƃAc QqJv+zugn< 1N(L)m^fl$@N,vMf!HB/n͛/x<+!{U"x<xKM-R:Baa6Kt1w.fw~A!0wBf{č@XG*z)0`}}4Y‘#R(B ɐ0hH!B礰e˝6B(g y1쟀(0ftVKd4.p @HFiQF2 DҜi4#$4(g n$,-@I@2hIZ2KPr2KSҴ$MOR @ +M]{$I8>>f47rx<`_>mo{o}[͛7'>qW7tDQ?۹(EV;- |'< +ҐD!;K)dcñǧ?&e<ɱslPZqi687BHI(ەs5#Z*$229.\@߸}6L&vvv)XYYagg{Y㻿yꩧ_%.???A~4Mx"\rz WQ> BnܸQXuEv{==Ëx<x4MY[[3 oo|~/g?Y[7o_.4w~w}-o!2~c Ї>?z,//ŋ8<<$ ?#? g񘵵5~~Oz={=x<x<(}o_Y![lll&fYl6cii Vգ$ 7od6q=kmqݳi1vVo%.E걊6"qejjr-W«v+'.:[y]gY&WoV ֺR*ESc8$aP19p>Fg((PPHD870eDQH,BXz(#g-t8iYj7O(L)i58f(*3U@( !P+`0b*I-Vs(@HҬ@ip @WFH>--a½iF:eq߸rB\y&4l2KSv8^kqvvvyQ#5=k-7o_k|cg=y?#w\z#.]g?zݫW/WGGީ>,Z:{{{L&~w]\x??_"??P<|}a c>w#P ƿ˿l6&.]:u㝔;>>/x?^x<x<bBťKNjIӔ~O'MSZ4+tss38"8h)g֚`Z nfI$2xi۵6W^e6|c AJÕ\]fVE$[yfu[ WYmww1z\(\qЋ-!tCJPҡ"q`Csz…g(ҌhRMӴ]ז[`<3g B˴;8f:r!Hyx#QڃA#.,YՋ$617n#ݹjbJ'3ZM\Eecq1 zY\vzG=9|-#\ `l)V"ЌPhC!,pj7N33Xns)i%@c_C"Y7Nv#VEj w=+~bʡZ3nA,y"YgyXkImBS `<1p\/%JIܫ@b$. J *[emmCbBZQRhY6"T(VЌCE |<99w! XH5H$v>'ƀkY;7 0Tu YR\DNE EQIڹ"2;w tjmG@B['8J7QVVVxgN^ xK.qrrR?>Ah4xg899ʕ+no)~7b+>[[[^@)uJR4ƩEWo(v@k/}kR9888uGyzQ^ɯx<x<ϋF)l/u~Eǭ֚tx<+pǬsҥIedYVoR4M*eDmQEQ+*NTX)EEc(td2a:2HӔtZ_@WǾ(VWwQUJ*FlF7?__gϥ*GXmpBs /r3syg@V$ CL,+P"il-ٲk7̲c8EJ!Bʀe<'rYFZ-TB"@.YNYFdHHT8,iD5I]QY[$qpxXBas}%M) ue!qAdS6{[<_R:ֺMiZ>)#?#z?C?ďsrr?O\=~?W/sx<kJ ÐM.Nfypbl6#2ш)Bq(b4O9B&f:r pM6׮]huֈM푦i-*Vz CRu/F:9I:y2B(EX ̗.]c666|2J)>O<P:/ݷ7{܏1˿c T\W|^܏ ^<|{\=~^<x<~fщbkkk׮BR6Y*,9}B0y'N ­xv:(~OǬtKKKt:FQ-i @EH)Y__nG߯E0 r n]mZVOÕY98YYYc+qAݱXF/9:NBpwQ(>{~|^R8t( A4Xn=R`FF6PuLv5}&ǿ8q֓kdc0X!%Q1m 98@)I6+ݾGtMOrc@IA*幉Òg!NJx2A+W/osd6E)(`2c1L&# ӤݠٌY^nsQ RdYH(EZ$0V#,u;Lf:/0 " YfV# G 0! 1Rh`- 4lڧ %Ñƈ&B8 +C,$nr7Ar=i}um#$"g3eu4X_kjDh]֟{݊F[܏s:_I*㟹דZ~`ossqx<j& qt?^Z2<<@өG6k|tبEec D]!vvVݿUwplթh4hZp(0vY[[;%WM1*y6cܮƘ:z0 8|V|]x+b7oY?e;p(U:i My84o]$/T9ַmqwB`e:2N^Fm8ꥥPl9nI`uT愪t6JeJ0VJJY1! ¡ X[4pFWgƘZ>5mLK Z$JBQj,j>4e8aE8d.DbT AgPA;$}+`3P`mIr2y8b) 贚& WylmQFCrڭ.~ h B8f,(ùh-%B:bY:2 T JHpqF+! MKqZ(pOX])AYQ~8g2ynq.]\coodZ>|,5vay'8<<`8{hqˇA{<y5G۾\x<gi$ L絼9GlLݽRe$$ Zwk-f f9EγcRr%:yшpHEaHg<i-W"J^VTh:;#vݽYtK$$ј&*&Zh#QhXڅsw1{q,g,rE/.o?* v[}82@(A^hf V̅+jfye I! @ x4ΝK:DetUϳØ,jEq|2th & 7wK.5Ku -a \Jyuf4 Ec-8gh8/i>K#4yp]+|c~uFʿoW|GcǏ}$7oS<.GC=/?O{w,7߳~%p‡?rl'JK>t%뙻7xW#Oh^m{:<꺐ɯ6>ɯl~<B؃h$1FF!}PSE߳޳=|1wqFg'l7!l,"6Vv͍7N!y͛7 ÐM0{8FkMQ +7n5ƽ=(իdYA-b>\rFA'˲Sr.:cDQt|Vύ1dYFժ#^ZױRZxDسZQЧq Oҫ#0kƁѰ.]sZKemvֆ JjaI .X cPR!PpE2wb0F %6aqHA,$Ix2Ùrg"c.l5..hicfiK  puoWx`%.)7 UO G^+zO+Wh+%~=q-" 2/^V1ϟB)[}o!$ Zd͞72hwO;aE:d#\>E8is"uAFD$4M򕯐~Rlllntǵ Z힜ܱG?]9s<8pi9x%(/FG>/rS> G2v.+-5E{gc_/x|] O>$ZM4FRĂnCUB$JV\djZf5vG^ Xp~`8Ra.J)Ad(c$$ "h฼a 9IBb0`A)0MgyӚԩ( P@BH,֔`0IDV3_xOk*R ,؂4IҙU ptnFK \i fL٢w's> ٕiܴiZ`% Kgh+AyISOvÈx<܁O4x7_^A{cr/>|m_|>|4+{|Jqg;y.g}!GcvoO'oS/<}9X|G#z ϗ6~7o?C昿x&/5zym_80,u fwegs\L tIXcYG1ys7k$I|2fgy0d{{-LZxb+AUJ(H$IȲtIvMLS RDQDǤb+!c+|TBѺ9L#e`HN\#eyeMR$q9`)")H X˗;8" Q2&E MgdEAip ?^olMu![[R$IDV8r#i(Pb*El[[Sh@kIV ƣcF5(GAHEegVJ`'1ւ5hmHvA`4!@ Zt5,-upyvvvzh9::" C&F-ʑ{|T)z_kM!fY?/ RʺOVJ>s'YWsBߊms8 ^^u1LS&ɩqR 5u?).?pBc=e' r(  9#B2 %(E|&P9[,JtG=*Ӭ$H3ō0dٌ(м7ka M.]8ΰ;w;ẖL#D=ЅX!hƐΦh]#$#ի9<9tᨺ-t D4_xѬ2ٺ>YHk]):8$R@^J4tڴM$aIЎdLgS0DeG''#z!4B80 RGD#+PJoA<v#J^ys?vz^gy:7aUs}/%_;О>¢xRyx@p? MO/~̵_8^fO~g%vB#Woy ۛ+dAQp0&Šs S:)Z@ihN-2l/ɩEnDQDEZ-@\yce<,--1a1ӕ$ QTR}1N甸9ɤ]t-u|,~_Ȣh>%VËyk%E|p{X<9+tgww5Lceot C].ZJxI(n\Nf7n >Kf4TA}QQ#HM6< ןXR<+WʓO^ן% D*J{γjQ*!B iw: S)IP2bdYN5:!fukQ l-bI8: )ᔴyt2eue AIEGGܼu5 mvŃW/rEZF+unbW"Ѩ7<ʣ>J:x<+ YgprS<ʫ]~@+Oݰo|~z:m[zE?¢_ιF Pf?Oȏ%WyXiI~al{:|z^x^[h4b4JH` //ֲ =b)1cÐv;f: I\&:wQ0\*:( ,_ֵ0{ppHʕ+9QvMl6c41L({Y^^㢫,!aι( /v.e*1EQE4=GSx|֙kq鼟G%V(HWC<`TC~.#lnmpppLfXa) cu2d:ep(It2 րPeװk5{(aj6(Rese@E(DŽAŭutq%a&8GS D%j +gu Hprr!YsyݞKk*s|{=]U}wxA ~#?~O?(_ 9_ͼ׌b%VZV^c6 mG,-wxvw7;"=` oey.1=/^ݒa  #@am=ۛ 7!eqGX`s}6@f!Yj缍y9VTu:s\ss̙V?/'GbJ XB_>㩥 &n υyQ1Q!Ay<^*!.fiiWBaiiima20 FLSURqf,B(qjfm%vRYly(Yub+MLɰFSMg!)6gnP5 RDD;X#<$Ewi;LjkX Ns,eumUV9`4%RRK,-t;-v7D[5pHyJ)߫$]~dBߟnW*^Ǎ7u]0@ bU\u 1*e0PQL!Ib8[de.b !RVugiVp߫,ZcOI, vvuTqi[H@ Q}~tXvvq"HUڰCt:]$Vcm `<)P" hSG3ƀE,Y^]9nãc1.:G,u:xGH2_.ERG Y6 |vByQJpc-8\gem0Nƀ4ϓxʫ.& ^N ?㸟;z)e0ihhhhxiDuw?p~9|/9QG^N?|(}o{4?o'#Gr";_޾;U)nb^U~{޼B+54"-O-\ۊP!{qDr#xsʴɇe.5RJ( dD,ݿnq-m: \w.//wboo]Y__}7[Mw] µ⡷˛OI.[]xnBxH!EG==Z̫>L:ZMQ̠Qܚ'{ݼŸE*H 8>>&MSZys3wݎcn߾K.1N9>>f:;[YsxQ;ڲ,^nZq<_n:2<q'-L9>>>{ǹ$Q )$ZΝ[S2!dq:e+sVx2(MR:Xxs Qv䑴b ptU%$) X`t@8(5^౼f<aB13 2iª ,"iZG>K%5X[isz]a͍UF1EQ}&x9%޴.K&(ı"_ƒ)ڔϏ)j3WfA=/xcft }4QJ.;8k2V|R~t&H"ت!*S:k+K-hDzCCCCCëś݆Ww^nĉ;/7"O;_8VFgdO ?/>7W/S}ۚه,05䛾o]W1{y8^2INBy?wnj1WNƒ%X&e`˴<~us-z[%cvwwFe dYKKK6Av2(TE1[eA0ry4B0GUםi[$IB$}J䎹W,R c"iO |su1xtdHo,{FPRl 0V8g)&'[ QeJ>V8%MYLP8#harCg`4yV`P cpu6ʽ]/XYixz=C|BRRܸP^?m jx!7oPjY\X&H3k<:WCO~,|>G7·ӅFF97JDX3{TK۞UAȸKܿ]N0OJc(JC{q(Gky0<4bts}_(Apu֚4ML&:GGG!L&s͛\r8B{xr-8E70 tNK))ׯdg@ףT*" ; lwBL40#Gbgn@eeɄau,ֹvTƔ2)X_d$qRVJ v\5%e1 84\XXS_`$ @H8 ֖,_y'~PBa!N|kf8CwCU k I;b0a INYqEJ]T`a{{)}-vMsN`g=RY^(3L&Ŭp|#+vTIbvv( JBS G)$- [H)r.v;(J|/$Bq@ =b"/r) K-Kɍ7iה_ s~MЏz ;{㓿ůQ㞼g&\?| z- }6"sR {NO?u|3k|$xߏ}2?}F>䯖Ny$9L_pg~%x"S3wϛqVZ/>wSs<1khxI"o'|v0|D;Е(vyhhc4:a!G!8`YJ"vדDz:Ny}o!qe;;;z=VWWY__!;;;sm%Uˮnzʲ$h^]pc0Z;VJkkk\py/pbǵE,Kʲ$"|?{2?S󘙒'f8 ya|xVֹSgAI|z3'8<:fÖ>vJ0LK@ Up*b]Jy>kKF=BiD2ߗ̠EI6%G͛f9#WBzVBh%QL顔DI0NpH)Pj6n'0N3I"Isx0 WJ!m.]"Ny $J`Zx_U#W+fEiPRJMY[]G95aO O<kUDVlJ:,ԌG$9sLmÅW۷/mhhhhhxP!x]?w#_i὏zo>E'>#g>'^s??.ҫ0GWf^Ikx5y~<&/M| 54<,"pfzXݷcJ;˓-:Ii8S8*GmaQ;} ݭIo}0 #8c~i1[nE/_& cd2EVd2Q뱞&.<][}8Ðsα.{{{YtϝXeY~?A CJR>+΁i!bRzL)<%BsH!1cC(%Tsnc]]AI-fRh'amLU ye*W2 EglÃ#¢u6֘PPb,liwVVW}s+@A3P$2f]l530bL]fDQ,fN@0O@ cʙhm`QŊ݃y ӭm,I0 88<ƺj̗H<%Ȳ0jq(!0q(mB 9:|I f+v0P$NO'$Zc2fva ⪈jg<Ѻ@!%ɔ4hҡAt2rY,n.^z8O=ϟs=RCKgget:oyꩧ?.k6}EƱ>}744444444 =ŷ rN;ӊep0tZ+/ upM-jg/\v`Wǖ2!XgɊO)ZIHi QQ8.+zv/ExCY^J\~}~_ 7Qf<ϷczʓO> 0ukg"Q5';x[!L&ʲӵ ׋ \t5/.W~+ )g 锯|+WLak#*geU7XR189{,^g9>>$p1yDRjR.4Q>[{x |Orx0$V񼈥eYA94+(ǡAJ@J&i R 9F Es;`Y#$+JvXkagm! ͍eW:E<Ο;;ܾ}+~74܋wlnn/:>>O577w__|׀RҥKuk ˅ |2?;.}//jDǂ뇎O|g>uyI3 _  ybzW7upCCCCCCCC8g竮$&-CMivq~(õx wG  h1!JIȈ \̽_o];{k9󜝝`0oEQ"csa|q𐣣* ;~!ZzyRַ=H5Z.qp/ b"O קRTDфh{(ekkmF+~AKdE0R(6Oy p3!y[Zxt0$iBJ X N:6GbQ4h]b@HCVVz#8$QE]z0o>8/h48:< ˂!J -P^p8a,X`:dF[EVKI]xm)f43qs4-@Hϗz8YYZgW8>>bgge7o䛿cEk6=agg !ԧG>p8d4qԧ>E|C_<Eh4od2a0ǜ;w_җn)˿ŋG?oo!?S|+_:~o&4~7o۱1>nFտW?͛7G?ۿ7]]-oa208{,'>G} \rhtǹ]3 րS0`Pˀq^. ǽ1ac&9<%{ThKc Ξa0j.vB GUm]␤E)Z3 +<:K)tSL)HdYoHt2 u#( lo!Q~c>hġJ&S>sjWhX]pum,+rtg0^( Q1F;\,=.-]jף% c E)I b3%8ԘiEDL'c锲,XFICun;!T~opk5>j:툢,% W~~ Ę)==m[,p؟{?=_ ?AVWWy,o~ _Źֈ KKKSv r =aoo+SWK^}?J_R,낟K~a $J gϬPX%-,:\oQ;M9) g( &{Ei0JBdK, !.:O usbo]eRs,CE1B^YYa:ΗBcOB1hZtc\paX-Zk@kypUݝ?Tօn7>wַ?[Ra +|tSׯsڵWMϏq8ɋHY9)P $JCiAa1,( ֚yts4C8R`ay k ͦl]Ɣ:Gɘh,-H/F8<졭Fʥi1{ B8`ss,2ANy8:  kBzhc8>-)ʳց`91ܛˀJ&ָYϰE H Ɖja$Zuk16G!%B:uلͮc Z:]R᪒g>fss,"֭[ֲ™3gH|;5;yOOyǕ+WxWzEQ$mcNz,y&~_t,o͛axjRJC0Nظ2ve?O#74444,a8̈)׼'%~``qRdpH+nvUf8)]2XSdR>u`DexR!!pn + 4p Jmh;?* Zpt<<_ p,P~R)oM4KKlll_^k~._?A$͛@uԇ>!\͛Z-._2Gy{swq կ~˗/3 u]|+_ayyۿy{e_җZƍm>MM<3\v gyooCwoy'?|C2图Ny[zGT8[^N?|(o{_MpCCCCCCCC m%owpBS}ş/ `u.&b @IAi,WutNsv>q{?(Aq[toEo(/:;aHQsTJi:d,r]Zzww=Νu0['_OZ>yO.{NG;L&ܺuo|#%Iq`f%R'+5Oډx"|/*X:<`1>$J|8c[!qg@(t]~_s%xa>_{~`b4$LP$2u~@7gѨR_8:DQ$ͨ\ѕ(/Cd#X#cS5:5(ZCgܺ`BڱBat60Hz~Zgh1KBEOIB^XJgWloaXݣ%Z,,vdxL(SGDSmA*j&WgGy,=3@y)m5YQa( ՘Eh/t %sR\p-1e79N(X^^~臰=X[[B/|˷| +|u_oo||Pu?IO5;w]ܸq_ Ї>~nݺt:7NYYY#Z5|7n`<jxy?C4}Yш -.}$K CMjz^!hZ?0Y~vk^yϭ5iW9)R0N-x-V?ݿX(.xEj-='oY!]}ݓsU _EQŋ̻ r^]|Ƙ8^C߼y!\ZO;^cpq_j>'ω,8ш~Z c0^8,-pix4%W )(?(%(gݿVOqتV*1>"pB@u ɲ(Nce H4#=J΄[Zlnq||z}/phLAbY^YB:皓(U[*AHwiѴ/Bb!<FUa c`IV B!GG)G(eϓQMsuX9:<`Oc- $a)YYY2O(EiVE9WpFbmQ9|C !XxTє3g/ir ˢ…2V#c2-fHWbv1v;"/J.V}R$$Msx(CEIc|*Οj߿⑆//g??[[[t:;bkohdYv>.jYzٟ;)_k8 zq~ _ _΋}Y744444444<9w˧v/ƃk"͜:(WQe MwΟ:2-g=ϛA۷onw>WEQ+duu(L&z=4Хz=s… ,--v r{{nOOeYg00^Ohw0VV.jGCHRBT"DeJjtZXJcCm,#,-Rsg\3Vq8st#;:PJ0LG8 Rae"*LPYTI* m nDDSO+sc_pZI 8C+XJb1NV)SRF2 lOPcKoH!+s#T֠ gI!#DS!+Q9+&#=:6;lYPCk,R S3 JL~_}m>hhhhhxxrSi毡A)ŋy'hZw?('{u!RbQlLQLwk7yn-ׂm-.kQ~^ŸfvfY6}kwQ]Zx9G$Ah4n h4'n8YZZ9Z5OYwy#k_*J)ַ~G`=qڋiβ^ǭ[888x$I{Vp0ձ0 B uh £ |R00[VycLT͍RcQX,B9֖V7aLt>ӟ6jhhxcxC8Gʶ{䦇^|S@|Z￧|9_\_CR˗/O+(XtvrB^Zu,udq}1EQ-r<*v<ȭ1GلWDpNQDj2#ZռZe@0ppWfZ-Ν;ǥKe;y1!^''(9& J)0@ױNjnZz۵3Zβl.b\ϋ"i۷o6h1c$G?9s+WҥKZ-nݺ5b!y^Ƕ~3it:ewwv+&IW8@xU_k3ȋʥYU fiZ0c*a5[[ sk3M34!SX- ah!J gi|I:6u@QhcrS NxKni:ak{@SOv9<axZ%/}(t/ۣs9677 Ð,JԙNe!*'ŋ<}kzN9NvCveP8ȯ"x^1! N@T{J6 (V"N# "c:b;'%rHZ~Dʶ,@J#i.q֡CqHj|RL)MYvf:Mq<#C 4BZ!$)aDLyf8O& cp奈Wdmmk׮qtt_ Fnhhhhxwok\MpCCC~9Ë5?VZ哽Wl54$ш7n0L^Kk-e`:wۼբp8S%G8^BܨoA- !pRtvhzChhxS',t~Ez Ŀ܄ΣkƏ;2khxtqիW9{,QW_lDq~\jX)5wR~58Ko%k!v֑ϵ{~Z{]%0$2+WyNnK$lllOɄR*sW1AL&uu] oߞ8" H!yZ8;NY  Fe!gBQ8 5ƎY|6Q0zq!)?HLO|RDQ4w.?Qɵ]u;߻DakgbQ)|^1c1(tܸq!GGޱRtx'FEA{p5Ga,G]]vao%ns PxD8 d F &Ky`e:\ya1V$ZA6j%R8aa-Ұ~f%t(O;걳s0utq&BI4U$`8z m Dp@6j$qVⱿ7Acgm5I`|Οmd4y-D((k7ob\UotiK]{}$F k J=, ϫ.<+cprKiX[Yfw2Kp8Y]Mt2eY^4"pCCkI8 ot~W A-tfuG?oMM^154v/^dccb_l-wR]kAEGo}kZt:vvvgiiNCsѸb\ioj]>M /h< *ď:Hϟw/,`~ _:^^6籺:G=oVvMfuu)ϱ{q{R==y_us}̟ٟsEz׻p@/F?/-˲;zkbo-O~xvSf%l#`ee (b>VԬ,e2p5NK.zk'qZ-`ii3g̅Ts'^\>MSޞqGJR~\:ma:]#,3{@`<-hwk"8f%Y3(F N^ڝ.KvFۍp"soxj⥤z(?WLl毡ess~n{w]'PR;yR@<)c;{(׎("x<_Hw p-בЧ{\6|2@#Lss+\5!IpnݺTŸ9s;罻q3|}1Ȳ7orܹjXZZ;O'_ܶz.F׍ ;Dq m\mQi̤^fv"L\YP9EAYT[S>:*z56KVUP[-(X_]!Bg3ф"N<$[HWWⴳUx;H/B"bGQ);Yn(Em&S]Bfɕ2O(8rCQ ڑ"0Z$%q%%I#)fǦ:GΟ%#CtY7k5iVEA՟QTLjYt7X똤X]#Gj\ShG+n1 }6I-{Y]E=kRI D*Z;biϠmu^[#GY@< IBTJHy ]|$.]0b<q-' T``4cNGg,?L8<Kύ77(Vk{qqhc~#q/w:^eП:~틏Qo^~O|S_o? gs﮾)WZw] µof^ $… ={VO=/:JiɯO>bb yw{7Ð0 oO=[[[L&npڻܾu]}!ZPaNsJm])B!!}31py.^8A^n=k-GGGN${{>'Z1{{{Q*"VJ0HPJR Dz'@ȋSYgpI[kho=v4ؙlt4N0Lgq aNS$QXEdjg5VH|3l΄vW8y6 )D"@(9a Jyh]] !! e1D!%YQenެQ)8p%gΜaoSj[%.[琳ӱrS=V.Ԉ*=KJ]"B0rYХCR9 kt< ? BxZe%]{H$HY]0iJ R1I(>24Ok8/P%nFEi%EO Nq5r`8“f9c%`ㄢ, ˲-O]f:I t:{hQV^d &emM' X[kqʲd{{߀H){Q%A:S; 8T¸Y.-!kV2ܺ]&iuA윮گ 8!L :-~ ܼy`PmCCCCFnhhhxHS/~#?.\?tį‡>=hhhhhxL_ӿ:~Ó?֣f!AO~Gߢxw?a4G_Jͽ߿\  x5|U|_dk-< Ng>Mkw1^_\ fBC@[JDmT:!{GfuuxL'j߄:K!c<"a}3gΰzG:"4]shf%MSy="` Ta$3ș6/PB"Ԕ"cU+¢ZLcF I%0W^?h*O_P~/j>ɏ~~ţlԝ'{z(c+/Ip]I/04PJŋBރD䥊pzinߓ㸗\Z;ĭggt2a<_v(c:S$Y۷wRX^Ɓ- ll!ހR "zKR;<,L8JEXkFs/"Ν;[n1 (ᆆ1 1.x3w^ze+9 ?xiҭsf%J).]իWxiH{}}rċ/ dbsEw@/)%oy[ZsϱC%Sݿyߓ9dcysS怚ŒCIv-9Oqov"Mj V2NH%}]5;;;ptD ++7ܸ~,  D1cwo6-VWY__gww{z'?%_O5o3_i_6]7 o z7&GA={,M^L{1adWֻW7I{{R.\];q<s Ο? b9|-(7GoRT-^ YƏb' ?FW[+WҨ8W ( Zh'-caCg/V b+<+qNŊy`LF[K'JDauY9,% Z$L,<:E"Bc !%VlUGto0aiˠ?D3; \v'/s-qCPՈe4bϥ')J=+.N)BĬ2 %NR%Xnӊ}66 ;E)! Cy67[dib߉˹-##2n]3;AV `Aɀ%^`XZ/0lJ`؆aE`eA˵(RƊrLO_뒕q;鞞#2\sdW?8_rnODߧ/x$ݿݎ}zhe.]k-u]SUEQP5eY"N!>F4h#.XJi}MG{l=碶H`*!ڂղivS =jrAcGP Px.nQo'E9F;: ޚ~>oz|!m;w~:J0=Uޓw{OZﷅٺEI<-^[o+eIYtqx<( Vf}m 7wʨŚDFDqzlVo]gnl-^^;Oe 9uܩRjO{XôGnJhHA$eYQGpxzu#gQb$ \a"N4!!FIpzA ޠ@PH p(%y AǼڛDWhfsEc Q3ބap#5ƀGRVtg R ("/k)$Yfs僰~xx9=k\"Dhs!2`4U aB)g#"MVԵ 3B,w]YlmڐeK i ipxtk,kzIBQaY^#3>>ZA8B IbNpg G(rJR/푭(;/-:UTOIOjv5â yDjJB0~G rFѰO:.J!ZGe ) cyܿ(67ttttt|TuRI^>fE+@Hk(% QZ N"Oe8EK#IXc؝QNT:Bbq AQx_ᬧJ<t"pGGw7?GN|QL/lm{y~W󏽻{!GGGKcΗN OJ{9zw)Il⠵֛enwonUUmV ޓ)eYR5yEFwpXgƬI#uVDQQ:¾{Z?]yrR۹=՜<_qpXF&c(%㘪qoP q"` ؋w 򢤟86fgS|I"(_pޚD6MU0J ..  ()5 =J Ɠ]NB4I'quY\D0夜| W(( ;jSK$k%{{\C35 ãCޭ(+D Ah1Z޽  #GFB]xI k]s$eDIG̐|MXcZkvFNOO{ ŲF86aUh!óq :gNU (k3!^ʃVLbXxe9wcs&/2t4D=T(%XsԜ/&[ఔyƍ()(tr~/^q)6k{{ݿ[$IȲ,"UEE_~vaMM],^E $JJd!Cg,,һ; Y ,'1I,5elqX,BnA!J moH1RyYfZbb͌8,Rp0j soЧ2cm=XqRkYc" +!zTei9|h4dXBsYՔ5JCNΦӎg4q:=lSIQ)<PyQ,+7dUZzql8!4Ji@M@@(E4R_cFH*/X׀@*pi/n"H" p|2]Z6%ULv{,334M3 8 {e@ %Z*(f\C*$^DV9EYmNHtłE(0 TDYV#&Cn^?bggwX,nܸAQ?/̃g:%}gWqGGGGGG'oz_u'bnэ_Gqxx/h4zx|Ogs{b/ q"png+ȶ߶|׭@\fgf٭Pn3#9+lJ* 5e(RA q:*wo+ظ{KRܺux몪8H]ל x9{C"`GJ9EmܴA5ơhLy<%XlsDzSE kɋ FGC˜Vk$H18Zg+sj/xHSŵY 7]q"΢2==. * ekk< OJ,~}Uo+nm$ i> -oG;e|,uv3(6EAǏ8hM]b5fh_SQ[@xdëCp(zxxH z=V\Z /pppهf]wUq|[ h67l'wF~zr>qi),u`mjY9,=J(DZa^.FdkGY-&qx@8bR1ƠuONc-Iu]Q,yp)eU1B(d"3}+4ô7n{)Le:G5}834ǀ`Zs~*֚$Qܽ{kdf!;ksh)1&2@`4ܾybSVUBbCvh:BWPB*@*>rv|b$ςpjx>S{y;:::::::::::y{81q_25 <ݎn_)q{u&Ix;>un?boQގ~nosP6R =UhQ#:bNPPܿOC8ժd>xC`Il/)wa>3N^x7on,K߿i]bvz~wc!4dyNG\X5X+yhG-vw{RՒy ~zv1}H~/&&:De}v')Jk\^`k`m-%A|E\.%uUPU i aSP$UYltMF^k=yQӋ-E0Pk{H^8vQ'=h'1j LC89[cBIؼ^!r֫ck$I/ 1HRM>7$d40, 8.( J)"AeZ!8eE$ZQۂq (L/±wS9ޘ.,'{\'/ʐиCcX( 58Jiu``8 kc1k%YU7bqe|]p*'wqIp}NNN9Q_$2NOOys_K~j/._Ws{y饗A޽KeeY/~W //o6wGGL&ܻw}>O[[2Lf0{Q??ʫQUGow{,ޅC>u)p n7{i;>$I7od<_$v-2vm! Z- nVۈ6z[y;y[ގܶ"*ָH:RTI)d'"uH<+9y8 OQ{f;mt!@kMCkMTUF87pvvq!eYn&Ye8k\IduczcL,(*2ocR3XxL76hA(` {X1smEQD)5yQr NV1{H!%xs+KnYn `X!f6$68CUTHn޸)(D؟0x߸e8ɲc փDVf'JcCKAsz6(KRa?"VXk΄TPKH!d B\EQ䄯kÙN $؛,cc(Yr@  Ƃ15DaLAQzƓ$(J-R 5k,֊8J+ {4AKM~ \s3 Hd6@)*XM/G@R(1ӳCJwΝ;V+~wbp8d2l?C,CJK/ėtie76}rqvvƍ7F#?#DQDgXpM)QoC=EMYGG'7Iο/{ܹl_BzLuttt|'O~( _"0OE|!2/k=,kt~/,nXmGoBy;v9~9[ouwXs#vvo0N(3㉣5YYA̿8^/ڌo!Tu>9KW3sz8:8 e;aF?fzz%a5NF(\-PE F URcM(341=!BHbҬYjpcZ|ceDAR CkIX,W*$ ui>Rwܽw/DF~0bN99={5hlmmI 8CBDXQ̵k#P(-ʊFHm)ySeZ6mt}*ːRA4M9*2jS?qRg Δ BHSk@E$5ae'S+=Um(M"qX*Bܹ,SNN,y8;`ZZNRkDs=ӱpb8٧Lg 7n8w^' o^E׿{ttDx|3_֤[^}U^yx߲~pYgEܽ{^`61N#c...Jg;6}ބo7?Vft| Bp?3 531跫g ?MKz::>tޚz^zoz8}<÷o{q󝯟-NCw;y׍O^z9L}6u]s=Fl˂UqWM9Xo+>n?кRV,o?"iۻ-o+oGAo|- _$UABK*0iRQĽQ:Fݿl]a#D*;SKq{6nv̜sh7"j_"u]QϧđRGX+py!RI.~{zeU3zW(&L&CV|hculn& %U$ Zon(s{jcpxt]֠_`Z1;!y,R I,VA]-o,ZIHXgAj@eXAqV Vaãڒ799QWA$ED &?xkkXg51hĖ{S9b IRt3${{{,yY޽ZlT^B;XYADdYNQalUBí[y,$^t5%"˖eM m iӰ]H*Y,8oPB -;:W)xw|9De'gxVgoBR˝c";,8Xp> 9;_S5.R0 뜪`w'`K/̍7{. 7n`wwRip8$c_5o~Ex7}f'u>Nޞr{: ni |MG+o mݚ\#LZG{QCTq~ض<'}4(*<): v|9z{Gzw,[R+8B9OQgZ.0O(#c0إ c0Avk?MlQV8WWh1 ;H;qz6B*H(YυÙ2ܿwY3fӳ`Z[GfyxrHQ1Ɓ@h-X4QH%x)˚YbQ27^xz->/} k-ggghuwd}BfEQ?_2=d5t"pGG_ym:U/ԯy Gz&𵒟TQoF'|{`?H|z7~l:><&f;+>9R$I m}^|EskV+,{϶_v?M/Ubvw;te'ͻ۟.Emn+6[k(:kWժ!"MXDt'8/ٶо|i)˚9Qc,sTfo2b2in"UV޽{Ǝ>{lEU1$\5%!Ib3,[dw#Mӳ8#%Ҕ,ԡyYi#)CDr<s|VmNsHu6.,E*8wǻ6cK$\,v׮?[<k$ɐ.E^C*ɽ)TQY^r&vt<3}Wvܯ_=|}>~5w{?~Dw|2/|ԛpv3֍_w $"& I^)(67n y}ZE~_{կ~|NUUe=>4p+n;mmnmZk7oQ8G+c~n܊\Sd+bA/Ե,kN*NIct"|/wdYAQ@;w㜧j"خinǽ='VnX,ܻwsL0uͽ{ok7I{{v!>,³^-XX V 2BuHHhHUVH!X9Ms%5;ʲ9Oi=JF <:qh8 m%•8SQ8xbD*ŊCNh^G\8#Hc*+FJE"AٸgCGGuBh(FKr58@&p6r`kgcҨbP:AkAYX'B1=?GG 0n I^y! 1e]S2tcVRWwOq-hADFYJDh ܀𔕡*1pAEH<,+L),$a;Cu d&Qx)e,/H8'8==CHPp{̗51锓GȎ.ι+?˾:::>ÖK"2wMԪ'R!RzP r+z۵|u{1um )6,,Ky>|z;cN[?ܧ%i5U :%sKB갗̋ XО՚~/dIBUx/DlϲHyV&~8z:5T0;#/=BEXk)k1Iל@j≣UQPV8>~lM%JEwR AKtz-F H}38W3/eƆlsw~~orv]CM^2^K<"cj3&!yO zO& &TƑ A]rUGi2l:+8h驌AX75(KLpSzC h+Zȫf<-^DFEk,sL]\x W֚ "pG)6øYsGJGN?FIA^ v$iP@QEd2&NKʺb:B2NJ$)Xօ᭻ӈ]q#t߽{1҉ߗݾz&gcw_i:::1o#u;?5躁;>4~7UK^?|֍_wdg?Y],YVhgooo#X_͛7q,_o~ܿ~ CF{ܿۢes[}i"?7 ߿OU{#Us^c;/w^[3m1(>o ۏܿ]nޛiͿ1c=ɀ("{⹯'vgRrȼ `[{{_pxtDiNN(5l")@+ $'8˪CXA`%5 jӜChN^6k MƜΚU7W/pޑ9V@YYXD )85xV9`8H̗NP9Y.µ;J*PXᛛ8<~|aH>WsyV(ϯƔx(VbAQdg !@*iA*4 UX޴{prhpR)5\{,+nأ*-eU!$$q)1ֳ73j['mEYY}lh 6>TH;;=Мy< JJk򂣣N b6;ƁwӟQxq@ib@9JUͺpJ%xB(4·8(F$\Xbm*p0ŗ^"czMbDGGGGdzӉ߷g? )?9oul+]B<.C/9?M_-/{{{x頻,7QmewEJp8zf00yyu7xWY.<iP-\^e~Bz/曜^U8mѷ#8~$]ep|U@|{U|ܮ*uYfs!Qqoj3n_}mnUo\f(H葘V?>>7섋O09V9cut6~r&V854aIkfLvvFD: _V<9i]X( &F[xRGH("= aL{iVrA$va;TTm(L<<áB6seNZWL&\/Z()y7 JܵB`M ސ1(!?HFHIռAx DJGBop@m*.Ru -0¡s*$8CG{1Y^vy)4֖DsqqCHxtŒ^j(Kzw5c% ;bC:A\DQ{rz=zo]sN>fR; RQk%б JEH!9%Ut.%m"BѯkO8`+N^9p\v7|zmsvGGG߮9y/ϧwtt|xk9?O :]LJo~1ތ/|ow|u|$I9筷SU#!qVU9_W?o|tW^/c?c'nO$Ie'x,++m|[ѷ}Bo!x[ n-|YEAQ1З]#rKPt#(=~=WM/`8q>ÇkeANV |x1Itir.KG0::[ @pjgqg1#@HH'9-Y-MB# ka42މX qdjx[@HFjOFcvkMNyp.J͗quo-4zEڏ^=B & 4"8~ MuqIxdz\e(%(8qX> O*L8oQRZ-YsX)p@=H8:""=28 RށR ?GY~}1ѐ %kY˸@rrrF2yܶ ;Mx Bބ 84I0젢%-"~iA$Qp ӂ E)O(4š58p,-* FTuZ\, 1w9>]x饗x7uGGGGY):::En_%1+hgިx?.C~g'Kh_K?Жߍ_LJE|Ekb`XQzwmmUUܻw{!dww7oܟ87bx'@kH)|zY 񿭰xC5Ovms+Nm1*78#˷(Gzmwon/;:e#dw)RiTiˎ|pTxWe{w~c '''|dߘ(uןUΈ[[< #n}4Q@X1a[8S QЭ˷-`R! 1 Da|GzfЃ|E`=X[39 4Zzjd^BU3{|ӟƍ 9_wq`y𵒗c~w|7P~Wn:> ܹ?s,˚^wWE_slƫʟ韲\.FO$5~'~k׮=V沈y{Y~]nUUr5֏C+_mݿW ۿk?_vnǶܺ/ EDcuD(AHw$$Q]>DCOU}N>f6ßړRhA p8N:_s5PXg Z9* %Bqpj'qP,Hk'!Byrb1?CI ր)$I2_d|ko 𝊔1JI.ƂBO[:H,+R Q32&DkRgh%{`0'IQTdEDyy`luMY{1׋%q⡕j74D+DQO8!uS"hNPJ.fGR"P oLjD OEfczIDSF@!"5y^v#≣0IočJiJi1v"BO%ca~qA@@SU0_d #n߾x0M3ΦKd+>9?jH::::>(~`zǟQO=/l̛g䎎 ?O>_K~_.;?=`2ÿ=7q/9tċӃz?z7 _+7ҍ_wh!Zk...p<j}Sv/zOێOޞg}5~}_NݻV+/^y7'X^^}?9(˒zb؈:j,c6a%MdvZ'}.[aj[q,ˍ-˝~Fnlj޷ge{J¤74ignS z )R%QkqzWy;CBJ(eͿ$UJ2(ЉG[.>xb¹aOSk%99mVD*4!c"8M= /~9<`l v{0NaQ*BKKY~tȃ3ܶ;6!֮8?c4X-.ܼyOp+\Rw8/ JKituOU^H tgl N g;dv¡:svvFU]#MssoPƱ XgH>*/V=s1_ Iq8>ٌF&3ߋ-}/n'qSE0GGswtttttttttttttt|۷os5b\>8tn|΃xxv>$s1DQe9—u^mL5{{{8,܈P1inuEAxd_n_o qyZc8qD.c海fOL矜81A{w:7c BJDZ*;9PJ1jc$[$ ~?&)V Sj8?ɻB'A{ % ''$ITӄCvw3އ.a_2&|7 ov;d6[l:^dPj"Q^/ԥy B 2j'iZ!lzyC|ͅ_# р~oʬ.iƣQB lP9oLDZP!${2%Aβ5EQb+`6_2yI"t֭[qrrt:%;::::::::::::::>VTc Պn[|wo EQo}k=LL&p||18q^<}:_E(hb :{in_۸[A~i~xó O}''س?\EI^$f>;>88=}1I:$c2_a(H =R0-+ȅh yx|q;;#..4KB)FEK#.fVE!Cx7i*c)ˬYcQVRᜡЃTm96֑&.9DL+H+r< n\BHh)C]ex_rm7lNH憕I ZI " X !*=6]y| &a6B9?_Œ Nl*-M7>~pD󦳸Ҕݤ)'Arb. )IIK]g-Oh Hd/I5&Zcz(!Jaʜ899yR!$ "eY|RAhHPxfKj$U\@zBZ =8 gsV eg>>f'wttt4t"pGGGGGGGGGGGGGG=eYn%Irڟ[1÷-G$Pq#|OUbѺn/ dYFhxNdۊm4w \cpU+O{/8lg=@1_đfo<@ `? 9tzSn?)&" A\,>c]\i[rM8!@c1$ҠUyU46BAR PRqދ, ƹbM&.kCTܾy|K0hLxp|;3n\? +Zq۶kΦx}8JuM(9JMp,K9X()֩)t+jk˦L~t-^o,Sj\˰ R !CoBF RiY|YXq8ƍz=ݻǽ{h{:cI) [Y}OrnZ%Yqqq۷9<IEK坝Ȳ, yY~?Z'Dmm;nZ...L&shcW/;[f{{?_~cz$Z"9ؑ%!'9_|OgO1!eqU%_\`l yVICV{ B'*inq#-ƚD ljfóf9k RD+ʪ8qbmcZ>ϛkオnA0s6h\bq B7ZbMV) o VH{`@zP*O(dI6~#XV}chBHLU3;=x5%Vؚ)S)cj38iV@Hs>[;X IxSuFeöxX/_eX5 ~3MAETDQ!= p|j`, tS(]B?Hᶂ { yYg:=gBph",l#{GZ]j=sp~Qڵ$Љ+*q08::]8rBP:quorb#ut<-{%o*Ý1{{7%f 1j|D+>t R 8jD {k&Ibf<' ]p~_,bkӄxfG(!jva4aꊺ*>ޘwf'[-q"RrA$$$q"la/@5Aj^/gnߺsxyWx1Yf UJUK1αd؞O/6P!dLWdYѸGfyy^|eEcy|VJ I:|օD~Tı&Ic#kD0K^֌=F1ΖeảmcZ3MgA|]Q;B\P988x %Z1hjJ"USGYYHkEmyǍ$e^1_񦹩 < γ6\9| rtt!+(KJG}z>QqF_,:cE+^/~[|r?Ht(8999988쌺Y.ydp$bj+RLtEyF@o/uۂcnӸ~1}Hv(ʊ񨇔9޾?{uwt%`yV`nThgxC"UwFBdЏV  mŖi"B4!W eN$IZc@ Jk֓K2F qoH;'>:F+/*9?Ry\{Omr\Lq΂.fp `s^#Tp?f *c3;"CIٸ!M84[lhspmdy ·`YfȲ%UZvm' G=NN8Ww*Gm\3hMu8mQp8,FWo!(sqvzF]ýJ%8 >4cl]cawC̦KH,EQ #&Upj7n-cEif0N՜N 9=ޅ=ONOO;NXEm;mV|Zg؊r||LQru...6>q̭0|Yݎ^ܻ !/#vy'"qxRgt>L{yǽnQvzñdS,W!y2d:[?}z31Mۻd&YN kEA)z"A*p,+ou#r̖*QVmz#%ހrDFII^T^HV^/EkEY=$ 'S HTERRPiqY ^iVch\("'MlݢE%%BG|7ba;FH"BHr|p@sjp֐֖:!YMDŚsfZ [799kv]b cHkǔ`o|ܸJA+1A?&k5mIp4b6˨Wx4V@֕R"d Ϡ# #ܻwEcqa{v۱{z,Koܮk[n~/wӴv@8!חB?yt9Zw4k uΐ|˯?}e.P3\ٙ3>Kvk8ocXmG6bYxIcE9==fglnҟbxgzx,elM%h !Zg3D3E䫒6[|k.,Z53XCޠVΐA];:::DRJzVO{ϡ{ǹ|e?M{ۏgkNNNhL&LS1dYƫJ+h\׶{Yy{mB ܸq!Ħwx[˲|Dݎn]ŗqk~p=ov h v"f.xpz_oSCގ=UU1bLIswQsq>Gɦ?݁2 =Vi8"NŹ)dȌ7۪-u:)*\ϼM,XO_F\~G 9-"`CszDNH; &Nbz^;B_eqrEYVLvǜM8$^Xu페#Dc@-Ur`buQy7e8#ZxjdR (k!_b$lspp#J\.:N<[Qvjz $ov[[1ܼy5;;;aeZկ~=/2Iong2hd\#f5Wx Uss%)RѸ%JAeXc0 B RI,r|@fbMY:"mN89= ʲHMQw7 FTE PBDw08oQHlT%u‹댠 Z'rB *$,^xgԵe4LOψ# i"8}wttt{|wW-orU4R&ZJx<̳\.җė%#i+^Wvνlj Wu^^V|_޽{EAUUEAQeyp6*\z?z݉ Al6|(:+q^0xq'w|dϙw~ LI%xC߭Vu؈xVYp0&R,xt[od:?d`6%K0I|5;u5_Fb*O{#cNyJ4{ԕJ+$R jS5bْӄVXWdEByuk=.y" 6 B@JѺJF(-jr]qC7xT`k=,"֭[ gW^swtttttttttttttt|lhm1*aS-{8eZy{9...Ba_טfO$׮],z>8 lZ,ɟ ??LE~W>?.{iI|.vZ^ Hrs1}}lZk\$VǦDnچ Jl ԸBlc.Lz<$6}!i!yyyyʴ"uզ~^)|,^4Z3??O$MSKXYYرcaxͼU_O/rU8F)5Ί\7 tqd^1PhS2 0`}{ ]XüEV3FukR: &ART]"VhGL`z>F`8ź2$I֮_K:  pK U`Li4*IV9 B1 8hh4)u4ÐP.À0 K:. iCW7wm8 ,X%1u81 (%8kD;֑e -449J9hL-d8{-%._H(\U*ERN!) C!XXCcBmVK3U\/ ~J!%Uf"=^ۛ ʼ sdЪ'" P\EYj<:9;I* RZHE LJ[whUu4OWU~:X6!VՕ~39?E~~`vOO_?g?Y9/̮?㥗^!Μ97 ._|)>[{=<<<;P,#MS:Z: !RR%JӰpg@C}Wkuek-DQs,BP% /^d~~%oҽQ%.^e뱶Fݞej0wg|y&`e4A[W.31sn1Z-BR:ޤ=2 H8d8RV19X5yAQVջU@ZŸd*Vp֒kcS,J 0V@a4("%ԓ<QڀZX-^=0RtZu7վBe9K Ujp֐$> &AkǡVV XVRV39 ,=ɼ`"}PQ`"暋9`"KYac&4[u J `wf8кXsWJʋ-pDa ,j6. / `"PPm ZuI:NYX8(>byynw@Z 3>9HE"}rJ M( *R41J*670"T*"NP8RTԗo}Twskkk|S''駟| MSz5yLđ1gnGp0:,քB8ɝ:@"kfyi0e/nLB*sQ Ѯ\|OFT0H666hԚ4j5"ZKd#+)M:[]!iZvPf(4ʥujB*+乮mi4" ,Z2BŊN0' 5)J.s EYRE\B d:q0ynRO&qZDN;v%t2 @u5ZV#+JBl$,,αXt:-IK$c@˔~kޕ~''|r>7e__~<=[fyݬnŋ@uЏȏ\*!yyyy1h4 3֢TU6 ,wgY9o3̜^>sfvwloo377G״\^g8✣jewVNVNMgv]f{mw}T|lnqL_{\ !stxtz2Ŕ N8AH1gԒ:X s&[ $ND\h]M;Ifm} +&p!r:aZu4Zhq|$APNYun@S4MҴG0Rq(jVm@(F/[n΋,!2lnnNXc0QjKUj VD#jnyɑCk1kL21 I)!0P@^T+"B; eY6F  y/#?#]/b϶wZ[[ծ߶㬯cS|yyyyށeZ=C^ccwW[ Uwk< *dYvMoh윻-ΐxZ;Z@YAownVfvD%1lkuwֲ.sC\`lp=il@8 8q8vkuC8 Ȳ "(51׾,c~ QQ"qZL;~538 pX( Hh$aDG ΄4[[S)sjIG2DE\85 PZE xbF U;PhCYMrqɡCˬmaENԚ0jʀvA@KjIBV1eUj6-WZP pNc`}c04q ('ͼ'q@*YB0ln "Isg eɳ1f'( 7_@T:Ŕ9xD-N83%Bk[@BRObg v0&m Vas HyV2?!7̥zZk~'~3goͿ~X\\W_~x{?tyJgmm_WZ_#Gw/~o<<<(Y3ګ ^,$Y*W ,K84ܐR!3[ ec Y$ɬRf۾QQ@H  $lm/~M?׻Ykv7#iuQ(lbn6$0 ɲ K65 FU:YJQh: JSXYNUlDUqV`@JȲK/`ApR l2@kGՂ ɱYq%Vj',R( FCx68RxQ"MCNxy__o;V뭫+n[Dzo3խ[g4~ـywz8r5uJxUިxN/7g;\8YXXƘkBj5:1-ʲn݁uji)%qߨT߉vwǭH˱fHސa_} gAw?QJ5G6Y^bLsl$Ut)JUIKH(K듂!$)KTK A(4^9,jl 7n 5)K55 ZpTD1XG*ܔ dii+`J֥@E!(a.ZOQZBn7Yئȫ ]% z,,iA{ƅK+NN*fJJH2X\l5_zW"eU; Ck] H z#$ sM.\R!L ! JVWY\>M!/4eYC(tZ< X_ B]d tZZj0 sT0!T]hXgQRStԘHF(nnhH-ν~UСCZVU6t:oYݸ{q5 !x{É'hZXkY]]_nOaRy_sy^W{yyyw c1A0 g4}CXMv++hήsכ]sۻ+w{Uoooh4fw;2<QqU6;8g~[k)bֲz5h۱W}3;{p`r: M. %JW [:_Wri¨Ԡ˪U=\j,Zllv߰-5 Eh4PJQKj A`pVC9A%AD?̰"+XX: bXgcRRE8G׻)Xm0dÇte !"RQPլalʖZ$/r60ileqA dѰk% %ZL4j1aM)@*\uYP%(cr4+8rd5\]Ye;3v8Z7:V#N4]FY9]jh[BEh79y*Ct}66)uBpP]Tm %JJr_85IfREG!n=9xyWC`<<<~OYDQ)%eYavg썮?s,[YahJ)1loo$ Ǐ'c^{jFmtw~CaѬ䩝⽾^o{Zl@9ަqV=gW`WϿBRksqjq4@+WQ"R['1R|Z;FcJ4v!$J!ZY]b4y^b]Ukp4kD(3 Cσug dTѶ M iW8.JJ]3A0 :Ў(1YìoR%nz $ r LX 0h_zGHQH!!4T6.FBdyipeX$Q0V#XKb7ih!ȳ0 BI Q]f&YQ38~jQ .euKX;R BH^ X,ENyAS0Z*zZ=q Q sKlmJѬa()˪uk5qd4.]$°o3[NnC`<<<$5x6vpgڽ*Lo !fwmcUsιYzNaRjV|8qGrz!οH)QJ9Cyw0{7Z;ޢvGKWYQ%̇st1fC;)g5:@1zѦ5$bt YOvX`-J k1ΑĊL)u@'c0LDn#5J=i/4%5aUjCIfyu;7,YuHׁba[@ZAŔ)Vm#M 8,sbD8bl@1Q{V(M68h2ӢcҲvFN1il#c)MD c8'+%/r2KPJrxyK/S!RIynqV.`l@fCŸ@X,(p"9!K cM=cTW1vyq¨%ag_&S qEO<ۃ=<<<;XXX@)h4iu.\~ͮ; v;wwRkB콶9pN`֚1qE,^(>3RUuF#i2U"P YI@p*0jDq E$E!U[nbR1w=H\3N5E^%Fc$IqzjIHQB2ej L(iȳRD8z[[i1͖XF:NQ1 \x0(AY(T?ӈI>kk><ۃ=<<<;!nY8)|$ޫn[vwo{ _w V]391`@EU%^usOgzg|m6v9HӔ.]`0mx:5A8 [|"]J]BZ^?7 Fk阪A0aO#>g5~Uc(Ԏ9PE!Ae Q%]%QNKUVڪ W8FcTl SpشY' HrylZbmA-ryTcЬ'a,ÐfFP ,8tC,) -rfծG t=c:@1yqVbXlYJ]pU, UZHG;u$FZ4ͱe] A3%׷0Ƃ01JJ=~tՌ_&sM /,J !% uGZu6,-- % , Glyw-{yyyw`9X__gii0 g-w2iwѩ!5x^*kȲ *~Ykmwyn7z,(i[>J^!~m*+++׭p)($:KeX[fRpp!<! g(n\R,.-V)BA0Z )Jj5?<:|yyyyށ6VgZ,g*TwxvW+ՀyWzM`)%A5/~,v;[\{TެpαrʛޞyrQ+W/rYd¢9KaP*0C8!i7) l%)6$p-J1Yp8ZVa:BX`Pb2Cb,Ȫ4._Z9{%4j5i Bu{8Q1@ hH0Q( .]Z$B)SVմN`8kkQ5c9Pa@Y[ݤ `6$$RǏW^)UnFF.-J(T(pX 3k5ˇ x p*QPѪp8* d&3a4[вZ!PFI- F+R`E0VgR:Z`c¬yF><<<<@SJ)-];Di}ow{a67 G1eRVat۹ce*j<{ ̬Fk-|ߥv<ϻ9c /_ rI"TQE AYa*Rf c'$&H>eln#97@xi6i1 Jd7T0`LQKƹjatIQDaLX$JJXS +]N"e \$ɘD9PH)pֲ B(%ı"/-΁p(?BOVG&B #,᠚,TU;l%s9J(RE,K9⸁5m%/,B9\a@U3]5gVK~=ІvNTV홝18'h7#XBqq`lP0J:iF?X]`mF$vY>VW{d<ϻ{yyywmRhQّ[BwlNj߿Y{Zkֳ{Q5p!Y{ikvFx|,!빸J`ys^}U?AeYr9-2Fq5׾^m Ucͮ A-Y]]9QZMĤY^UZքĸ$JB @bA0Xk \ amA̵;"HP*@,Y]ۜlӢKզLatVPhx],>uj-]n1KHYV$8 Ť[k<[81XRSp qլ*p㐋`\:Y)IY#TRg i4\(51eX>&ֱ2ovRм='ȋ4+ڢeBO+ j5 FU5ﰶ E%v4Bii#Pc1y<<<-"8&MY{CUެzvowX3tZS,|UJQיg4]nsmjiEx^q+4^{nbzn7s7UIyޝ10o3t9@u 1VPU ^8S!EɈ0 # VLr'!vXfVzn6p0Ud(uIY◪XA,"ڭ4ϰ֡ըP`%F[R2$kwZm d(,/1Qc`-¤N@IH"I XEYVa8'Qjrbm jiF!T-/^ZZjҨEllo!DTY30c=( c/| jaG("6+^GGJqEB# @TBg[v4g~pDNB*N0hv+lmm=o9窪GD&C(K=VRDq@Qg-¹Uq,y.fcKX[Vm(" #.F"B,Qg@6(&(0+<  @s-66)@(MT{8g( BJE)$i6" z.5Uj!ssloMGd׈9@(C9sJ<S! C `4 8vpm i>nLlln0Jh{AQj#Gs *ylәc۟2pi5,VV֨j!qTK\EbCkGU#,*Y[۪vXaI@h4h4}:kٺ-~C`<<<,!Iڢntf߿Q׹^0|gPugecLsR; ;XkY]]e4n4BP嬂x vw^3x%-u6vf,ʕ+iQx%:KDI'F!Z[hL$IDU՛++:Va2jQ)ΙqL RՂd@"MS B*$]v4p]S*C H#I]y1%BL+#q80=7|@ ։6 1ΠWU ףݬ32 H8G:1eh]Bb4vlllc $ѸѨ%Xt8njdLktnX><e@U3Ͼz4WX\TUtithr`W^PU%vۣՈ"" bG7 gJZMrR3cfUw4R3uHjB"reIKQpȑk+g'Ky77]nvPúp/>~>><<<.7 f..\ʕ+>@Պc=F%^x.\my2?&__s]CREy5THl6Y[@E,+ A%v|I ^G< ξviV ,`<9Z`)YQTX1eΒDYGŅe=GcXS%TCE;;,p,j:my8YI-d4A甆;%vҺ; ;\RԶٌi@mI# &ess÷<ϻEjߖAE'ŋ!?ǻ>T!eO?݃v>N<ɏxqy>5[cC`zs=˹.{W/ ^766x(nAwӧ>SO=OV<._|ϟo͋s ZKo0Ns+*3h $0?̨~U׈Ao//CR= /2?~/ /}}cAtI>O?6}_䳟7ތ9~iz)N:ʷ-y}^ػ[F#~g8.B`%MS._ŋɲǿ7c?wi>s?s0x+ _G5ZQXYYX Be BQ()(NZWjqҡ92/R Vs'/W%A`q"T҆aLz,e1$$5,:,hCG(1N3pBG`hPB&-+4 qVU@:q>L 'uƵ$n!"(X8,zL K^yIKoo/{Fćyy7~w7^ܧqov8f80| N8w ^x>OuՕ>0xQ~|{৞zgyW|վoO4 l㵵5Ξ=K{-={3}sss<3>|Ͽ6( Ug(H6d5wQqb8!`6XPR @TH)yaG l9Qy~6 *d!$fpsBa43N6k[Ʌ4 {}bqE0ԓ;CXVs~]57Y%F [,/ |o}{V({i7u7~w7^ܧqov0( G|gN-J 굈8R41q0g $L-NbMNqc8az^-1ekR@նT  X;X7v(; )%R9faz[ym!}^~{)??ɓ'{)w[>O/|~x݆Nïگ~^=蓟$79s~/?q??S/<{FR;vZ%U,%>̃]:& ?qV2 EjRUf9MKt%a4.lu*O?'ON2̵[lu?@ $BVV `z50 k,Qj4hc<&Lgp xљkP׉fnoHb<6Оyw'|Wz!yywz/| Dɓ'?_{;u=O=~/<{=#יkXY.걾mV׷i6;Z> 1R*Hv*~\'~Cs,-5IbE- 1N<!ܤ-emm!BR`TU#',^0edEOjw[:Z;Ҵ$-;b`(rFa."rjI]<> ~/{ mϻ-v_"=~/{t:~7 }Y!y''w~ygΜ&<~/{4 >>OE ^O Q世0t G>ѐhD?`ms(H HQqH D@Yize NҨ7X[[g}u@9m9GDeVVNDDCeqMg'!9~0qHZ-٬%IQ87n/Gm5$N"`:X`DJ27"/MU, i^(.Gt~z=J>_^6hӼү}n}yAp7/=V ػW9s{w"?h]ni"$%yj&R(E.-aJH41 AJf*`SY ln& [[]9X eck{@"d[UswKcuu8y(N=@Y-,J*XĤc FkZ^SK0@(zhF( rll*`;C{ܓO>Cʯ]ϴ_9yA>^z޽jOSGΡMUh)рtWeAK(iPE,qZjbjQn7HjkO,--BTgQB1: 04*YV./v^<իk5i,DJ5Z zO)%M?đ#,̷8sbDH [@'OsY[b}" `FWywW!=W~W{;n ϻ#;Ob8~~fR}O~ 7t:|U&}峟~/>qgN"BJu`$ Z!^P%Yd8vU.\O2<ﶵm~w~gq_'>ȏ2{qi_yށv)g>x^)O?4G{l6Oj#}zwy}FXΫ^W7/~pUX F A QBBaJ)B!8{ cڝy02\J+3Q"! 8a&׭ֺ. UEi|e8;>X6/]7}4݋8X4e8賱!~?DJI ϻsI_ V]B__#'?om?CywKy^yޛt)~^ݑgyƟ]|N8J`-QU+#T$qRC;(a}c~kU3PE1N0*n8^orbMEU,UkAYVV5Ygaan9nkJtm0ܓD(8c4QJL8QUH[+Wiڭ:ѣ<,,, 2FG~fq?0Fn#[wG{//Gexmk۾"裏6M=3z݉N+<-|ӧO2<< wSo=BYY[gB#e@&X! ÈZaHÖ%ت"7 jI$i D U+`uy[ɳbL:!1!B9Ny;tZM:I212uIVL $ i)`0faM$BBI,FB~Gy3g}/> (PJկ~}kG~o@u"n/"_=y1!'O~/; g~g|5;ȇޭx}O=N]<ϻ-'}xyoBwYV )uFMֲ:7ku&G)(Ih6[H9ԅpDQgqi zC pRJp9GD2evQM!!ܹ˜p˗V\"&6i5VX$".C 0MjܱN'aq֢MA4W]Z C^{{xG8q&f6?8gΜ!"?O<3gf!p {1>1<;[yʋ/ٳggnnEN8YXXG% C$s-g{wO|ɓ'yG{]n[Azw/{~~ηWO#L[T!@EMZRB0JK5Uheue@)G9(V~iʥKXZZ⡇`~~|5; dee'Np=KJvMݦ3 ȲK.桇"Zvv\^^իDQć?~<@!='%xMxw+vv|}ǪΜ9#<߻ywGz)^y[੧%x-'xGȉS9}C4MF <|xN|0?LV/8na잷<8q'O2Y>dԙ3g{S|0yoyzw=y*\!2L9S`uI-G@b(1$I$ޠV&87+!-v q$iҙkM*_ڬsz}i%yQPP()qVO8rh'^=D gEiuÑ6&gϞ|XAQ8PJqU|Z˗%VWWj\t/ˬo0 1}sp…gE_>f/]ķ-DQ__rE/p9!PU KdYX~/{ލͻ{w^sܞ{~kiS=~/Oyo'.@5/vnn__ĉzWczE~qw=/8ޒE3gԩSwg}n ?'d޹s8w~/@{'駟~/{o_Flmm)ι=A,..RJL !Rξ}=t,߽ c9©SX\\ct1c1hh4"2,c<~w0LnbEʪjZ7s]Μ9g'x|3Ծ~c/ſ೟~ﺷyvo7=/*W !c6ը/>q}Yh`iVǂ JU|C JhÌ@8 (di(Z(S%q1bB0t XiAd0Zk5zsB 0Z9J nv_ z,/ϳ|(0?eg-V$5`/ {Z?\2Vf~yW{YϷ~PO|x#˲~X9q>w{w۷;wR۽EO?>uc<~/u/En֚˗/j=dg( _),p5`e<eRJ(nSy8tFFA^{ngؼ麦kR^s4`Iֽs'Ν~/㮴Us/>侄*PZigBRsPea9Q6^B p!Vp0BےPI1Y`])$AТh2 'svl\4+ƢTz`sBXDqHĖ9z"X]+}=fdC?[^;ot;a9o-gܹօ Bۏcŋxw݀3t=[[[{|ݑ^K<< B;v{dYƫVm*@Y+PUn| xvy?JkJ[;B7ky Xp @c QH0$I$p"qb4S>|Χ4m4$IBٹш`p8(Y`j?q_ݫ-p[ko״BõtӪӵLaRՈx.0*@"Xȋ[ Ŭs CRa 8cJ0))>r`h4p@q"):(6Dh ])j(B^yy<{<<<ϻ3=,"8fnnn֕9GQc.~c56/2Ing۽Q jfs{;Dy}^=w<8_} 0 qJK$AQ#Y^rMol]t[Rͦ~k)hQQEJ8Hg`>~/tImڴITjN{qޫM|i\-?ztהij=AȶmEQMOOe+T,ɗ˓iJE(lPVz9MCa*)=M$ C Óm-[730 ɐd$Yܒ/reFaT֬iTH2*Wul%qY8K I~ +JΝ;(`XdUॗ^ nIZkjjT[[R)nR,3'+ 411U,UVT*P((*Nkbb^++mܸQijg_F ^܋]:>ijSC_iClmI^yԮx"D,R!! E%S ܒ|ӖLSmJeHyox EQEdKŢ T<8=)$˔ʱL傂d"ѨFFҚs <_5Ʉ,S`fr{R"Uzcq e&H2e|5j||DdػkHDW.v]W###a׍wƍFz뭷F-ĉJ˲ޮqGD"]Veill^8kppP͒l6{[Nvuu-kP 5}י3gn:[N+WT$, m5;:W;-APpqe9SB_+x60q_~܍JjtUm+KvblGBQ~H2}a/4;4ML_x\ ydƔjhU.tZ)C~`HD\\9A _@%+j+tAɔ|fjǢd;E[Ӆieɲ)4l_aJr3 +*3&&'J%F4˨&a+Q6 ҼА$I6nܨǏEWV4ĄN>X,V۷7P"P{{ɤJN>}#n kG, {U__bxY[,500kT|)MT[[$/ EƔ499;CׯW"3x˶r_庮lۖa0J.sg7{_:p'&&@~\8Z[ɉ7h:\yڐe[ZbrQIG*ZMLd nɗkJcr'3MIa*j27%Lh,_~>ʱ,])0%Pm] P&;%)' ئ $.R!?-ǶUt YdY9TF~ ي*+×,CO:yf V.ʕ+L&|@SkkbyyٶL�uVٶA544hƍz7~),/;W /]~#H䪽"e#N_lv꾾>yǴWTBӧOkbbBDBk׮-;5;2qK٫ m/ |]^)L2n]Tҙ3=SmJ+5](SIшBA@$C욦)%E,ÕIXRlFAa2e4$U(eQ%k亞@ȴL9QGPh_RĉɲM =٦܄>)u\P"^ƤF%Ô_)lG|FBQH[$ijmmU*y:w\yƄKC`IT"ԔN84M4䤢ѨN:%IzwT*411חG0 544h||\5557m$ǔ٩ WX1qkr8{H$bxSW'_z"0 e9kfgTehhHR"PKKeBޞ /<{qţ~/v .ҩg]L,_zqJV4JU+tOә y,C섢G)n R5ՐJ*q%ߞ{O/Se**va z\Wٙc 3@)Yd,;"v:rKJiILsf|AdLkL/t5@ţⱨR`f"QK)_If]x ,/{P(_heKΚ5kyfE˶m=cԑ#Gt} vMDbD '.p[ZZn^6˶k٬/Ԥ.0twwQתUtI Dqʮ9'^Wf9sFol٢kזtJKK{^g]~YTf/T8Ҵ5p=Vhuz #Pz_DB+6y%M]%jvL\Q2$Ӑcr]OC#|I!E"JLӖȐPԶd;A 0e,R`jnxL#؎Jf /(Ţi)۲eFːa:Z2Tre;2ay+ߕr?F>駟`9G>~:}VZ?+ΎZ[[m6>|XgΜ)6wGZo TJժUb >}ZZv֬YslذA###$mٲ%} 588֟Znt$[ V]vZ +*Iuuu:s a哸uuuZzΝ;wY=BZpk׮4w6D `/]Us_44;;}:uJ*˩MsF γ8~}A}/{;p{A,S"RĎ3y)_L_})U_IU~zBc8 9|cfDnsKGe$Ke+UT:0)BDa4dȔWO*y`}adKF E}W73}tQǑ[*=/ˉ\x/JnInɗ3/5qnV qo 0MSw?7Mm߾]?.XlVGG:gιoӦMֆ ";XBXLXLV$(JI?&r}W2 ELSBNLAQ5r2a~ܠK_w]^j*y?ɤz{{/~<3 kKRd2W_PI2$W<i = $fԱe"19#Dz/T,dIlJ:K466OO֛o9'F׾W_}UTJ?guvv?iإK뺊|L"w߭SN- |%Wowi2͸˷e}9%^RA/KN\~444Qu]s=zSOKjѿ\ OOOX,0eOK=;ųy!@ϟ El^HBK dRmMFGu/hZ'Ӱ/ 䙁ܢ'۶yd2-CXLL˖$,YVRQ d0gF&5(;1Rɕ IAA(˱-܂$CM &ƔNݸA'rJ=z'e۶,ҟٟ @oΝ hӦMWޮapAB`yf5001mܸQwqG.q% YiYUnzvG_'#grJ% Sj]]d2)oirrRɔ-_sg Cc)7{ 0h$"̣MI2$Ӑ)|i-SBA鱴L˙ɩ)5x nIK%BX-Ò*҅1ےd?ɓ'˟EymٲE=zzzO}J?};у>x@?.X2٬}vWlUtw ^B`hzzZ'OuI=#zeYe% v%CK{ZU~ܥϙ<==]캮 B6U$b&R9GoXtUW_lvr$ɒ@)P$ |OF J}}MF%OKyOlKNQѽ#ⱨTqf s& RUsJ&k4={q_֦;C$_tͿ7jii0P*K/iƍ{L&uXd#uU(ʷ=#䤎?~MNNu]m[i*+HlK٩l'FFF89fWZNVTeAhfo R_YB_4Mǖ{RȰ|ٖ%ܢ[p%w!,ua&!0pرez'2 \u]fJ$eYJ$zFJFˁam[R6%9X4腹K2'YX,T^A%CLPı@2LSi%?+m>)ӴUg^y"F4׵c=a[@ l֭?~ſEǎoX<АhT555:sZ[[ܬ Fd˽'&&4111FXhTvڵKtKLs2jllV}*YFLEt^uu1e2$CLÔ|Oc#?;X ˗[2M)qT,)0$"LKfFo(uޅ%_LkhxL4)0dٖ꒶ϟtػ p2v u.cY8pzzzݭ.uww]'u庮r\;C+V(ADA 庮ŢT(411!T6? e|y AUpME l;@ϕaY}W53]t r]WŒ++J.gz GΗjJMd*=ɔISSrKtiHǐ_X?.U0Wj\Ygg:;;SOI2߯{AP6gܹsZb"Hy뺚*Uԉ*^R^qb*2@A`.ɛY3sB[2-)R>m˔!/dʐdHLh<=5d]Ra0!'K4f&ٳ fKPNT멧ҡCݭݻw]]GGG%, =~t+Nkrr @ϟՙwy8G2 Kj,=*q$S2MG2gBh$D"|$ˆ__iYDɸ0 R,b-44*(˴MKA ƕ {7r9?weF%/JܦJ몶ou\וz-B`nģ OxJvz/~12Pa>+J1*],N3r:~]v]Pq߯/}Ka qy9RiZEEuLvRK!r$S|_e˔^^hđ$JbQxLXsgWP.Ucwq_M!0Pym޼>5mq]fȑ#׺u.橧$`SOvVoo.&L&l6%j+0b2|K]D"\./Ob⩘hʕ2/)*J)J)\m+LӷpDB۶m/jA۷o ijm۶+NǵuV=Cڼys}0 ao6*SO=E .* 4>>i%;&˰$W$XVy*h I\/dʴ,ٖ? N\ PMMRjkkeYɤFo˲n8^bZ[[H$ǵj*bk>'O?O|a*ۿۺ;j*'кuf}Ԋ+dnݪ;Sׯ߯]vi]VO---ںu>Iy_뭷tT~ڹsgem޽a qU5>>ё>*4mٖ-ڬkZYֵȲ-}}9)ijj2] ڶm566}J%֪AL&sf#<+_-FU*,˒eY* rG*HN###y#WccΜ9S^<alc{0FU(U( KW=a nݪ|>G}_O<>ڶm'xBwyx Iү~{ƍ~PǏ$رCzl֓O>villLz衰w*ޮt:v)w+*QOOOU+ΌgϞKT8p@a qUTnB-kt)MMM) I #Py3]<_vT,jhlxiFUJԥPW%ִRk^]SSS*JzyTJBA㒤9 P}}UW\__/IiZj411+VHUҢ^544ȶmٶq9&A 0NdT[[r,I2MGU(Ag^3WZh4z꨼Dj*J%ٶaMMM-OX@֭}+_ hmm;#%IΝSSS Pcc~_{)]s)mܸQ6mRbX>Xs]WsQS {Bk߾}ڵkWإ?y} ]]]a\מ={/]*T%W͎ 8קIhZH$<$?d*PCCJyWGCLKSMM<ϓarMU[ոMK[ݦd2y]3?b؜QWn0 %+>?ϗSSS !r,+9}}}TccקsΩVQ||ʕ+z{{קBPgR)ٶ~9sFhTuuu'&&KO:\A$Dv.Smm h19sךRmmɤ œ{=oW^ {=L Bv tuu TJ9* =3o+R1k``@CCCwܡx<[6l{wY 7χ+Py晰K%e#Rw^5Uqy:>%kLJf. >prrRLo_ـu6Oݡ!577Va(NK\V\5kH Ο?/iobKKKRL&3wq&Q$Qkk$)jrrriK'> }[ twwkʕ- H^}U铟1ysyI33[~򓟨S=Xy믿l6;gYg /haT[i`{ ܚ^aIڽ{uְKA5>>l6  Ub!Kl賟,CCsΰK~^F*i޽[O?4CCU,4eLX .2n=w} :{n.@U۷o `hmm'>G>m޼Y9M}c=vhjjR, {S%￟0xc& :nޗeuuu]p͎ ްaa2q ˲dY^{5ի~m9r䚯}v)8{\U__v0 cA_oWܗׯ7Ͱ75 ."3z'O[]TL&(`&=sӣݻwkϞ=ڵkvge5*Qmm(*jmmU{{Ѩ鴎;&ueM\NǏ=ܣT*L&Ç_{hhH488A=:|RbFGGH$t=(LjppP'NЃ>X,7VGޮ ۫>~X}}}Z~r=*%I7nԚ5k4==ÇP(YyXP":zU#*eYf.z9{;֯_;vh寺7 E30-p>ݻw]ݻW{U{{vܩr`q9ԔΝ;իWG믿zH}}}V{{~uwwATJϟW[[>я̙3:r{l6iթ<?b^yҹsҢq *HשSDhrrRtZJ$ƍ%|شi^׎;L6m=ܣw}WeP.h?`0aȲ˨Haٳۿ[m,i\NuT*Jw^]6,{=vsaܹ ( zzzx?M8mݺu2MS/ޮIuuu)J-P~믿);S*?.X,^q}|>555TooΞ=R$IڲeFGGˡrWWd۶X,qq;wNe޴iz->}Zhƍ2 C6mґ#G+ifHSS!0 !0@KW3pB(F&XLWV[[r+|>'NݖE"A󦦦$I |=ϻsh<%zKޮ3gΨ>V)I%ibbBT*d۶lV4pyo]^m۶"aaZ,Q]]] X2vEܠ{Nwq06554MH$իW}544藿٬Yֵzj9L&S^f /V7o֦MJu{w*?~~ f8֮]E8qjՂ{Ppe_gϞyvZܹSZzN<_^mkݺu7m۶4M+L_4m6MNNjttTzw$͌ooo4OxƍڰaǯGP*R"azuQm۶Muuu/}_---o]^Z[[e|M;w.O?vdw^FPŢz˖^Wl*I-(sppPhI9rǔJ%;vlz/^3663g̙3=ܹsjl`F27ݻ޿@Ç{N p 7g-QWWBpО={y 2 # T\ڻwv)B`d~۷%>|X===vI,B` Kiwwnvsd2ܹ`laXvܩÇ]ڿRTإ B`MKi߾}a@(eGՏ~E]׾5}k_ {I:֮]ݭ){'3h޽a2;wԋ/򗿬={``$0hΝd2a2׿uutt]U`Z~ao6 ݭ;wF߿_Ja /|aQYI'tTnڵkѧȼv ATWW~˘'"` v @Uڷo__җsΰ#MٱcG%,B`ٷoO$2ؿRTep[n{g z߿?2ݻ+*?0ea%>! vF:=q+6ov UR3aQF`Rv U*b1 C---ڲe~a}C]wݥx<.0C0[B[~>O(\v.])D'-Yn+Zn|MA $M}lW~+iOLsa'p.nʎ;χ]%(Nk׮]_җեK]*]dRO?$)jJ&g쟅]"թE?4s1?qEQR`%z*Sv-h+B*p:|aX^~Kv?xnڵ+2$?0C  {`yV<c䂯 TUXzafa%{I>U=/}KJ*p8ehhHMMM ׬Ya\y}}}a\Yn}ULo>]7X^٬}]=ZbŜ}ݧ?gkXԎ;.KD6%B'^~e=a%o>R)}_a@Rggge` ԩSYvqŰKwyGlVЇddVZ!PT\ez =ؿVOOm]GOO>޽{φ]nݪ{]7c1uI_e߅]PD'OTPĄ~_T*n3̜/j|{ ,!v u aP^~e-I.Nؽ{wE .q˛:{zۅJ=zTa%,7j߾}UR`ea%b!"|?*UTa,|,!XUL @3τ`?0WB܈<|djO\ `) \G/vX"juNt:;wp5:p@e``0`1WL&o~a /a\~]Ʋկ~5.Ɋ}7MP*%?0jv X8,oU/| a\S6%\d/2q]weDž ѣmG?R]]] >lN<[SO=v)*l=ԿpR}}} |\%˩FyVj\uUbMq*511 ZA@g.&E|-.w^uttwᩧRWW#}s/_K K. [Va]q_MA/O|)>|+hlx .駟^2'*vl fްK"YJUGO+_JإWu1}$^"=N?Cإ6նmۖݻw駟0`[z.R=T7^f=\_-ZE^~e}U___إWo[_W lL&g>_CW{NwV:o>uwwk߾}ںuk<:::B@`դiڵKE>|X{pb߾}ڿy޽[mmma $a{Uww ӣݻwk߾}ڽ{7aTU>x\b12k)yKjܦXnS$mLO`0[. W /~z}+_!F׷muvvꓟ$pzGGڶm/RoV%2}Ym۶MU}"NkϞ=joo׿R=2N{P0]]]ڽ{6lؠ??Ç. װ-Y5d2媒Pؼy>kZ~=C߯>K:z<$Od _m/OǎuѰKZ07G߯͛7pH8uwwhvܩ;wCbow,A C]]]Lޖ]]]\mIfϞ=җ򗿬={N{{{sNq0ed\۴kmrGbQBaK{ !_jhqzWǾZ8\Nk:YԼi)|t#!0A@!*B U!0TB`"PEarJm޼Y$[tN+W/۶sN Ò6:x2Lػ d2X,R)qibbBQccFGG%Iz衇亮:T~x<MMMX˲T[[RT^eYjnnԔr"ʯJf$IZv٬oScccѶmtQ`, ؽޫKʲ,[z٩:+۶ki``@۶meYm[===Z~ iz511quYF>J^}Uj֭ @*?,˲d&&&dojÆ ڲeK_Gц Ŵ}v{ァ͛7̙3J:}tػXTcc6mڤW^yE)455_Wza HN>^m߾]O~)uvv!p,ӛo~555iǎrG8^|Ee2_Wm[D"-[400F=ӱc֦_~cǎiժU;/EC L566jttTÒ^J9իW^6 >IR&ʕ+4g2r{%֬Y{GdRTSS#I*Jd22 CTJ$3gΨF---?X}Zz^u*I8c4/!02#g>0 };C=ga,yuuuڴi~ao>я*4MJr86iddD?ְKBKKFFF.b= 2 CL v\1 q4999gbXإU!ijjAP}/B`eu]YDT,. ӊ|L2\,SϟW]]RTy͛588vi@URSS55khxxp^z% }sS<j͚5z. lVCCCھ}l۾UV;ԉ'tTX7 }oV}}}aTC4MرCD"J$ڼy>СCf N#L.ܸbܐlۃ`?/}pr\וa:IRsssyY2ιTJznb)[Z5W6- ЪUԤyq={VSSS&qT,U(,Osn ]$X8Ah``@>*B U!0TB`"PE@!*B Pe|ߗaa`9b8a TSS#Ӽ+5lĺ*MZꚘPz-B`*.UjXjltPE04@,k^)lR5nrjܦ y޼_ضx<.j *q*Jjm2 Ca(L<WX ZARi)|Dd۶\׽k*\!0TB`"PE@!*B U!0T;P=C]W_}U###eXLDBcccZn6oެ(Iɤ{1uwwٳa&b$0^{5kfsng2۶F{r~ymݺ|֭[,0`[n8{= ʕ+eY?t:۷u]544T*̙3jmmU"P>סC444$Ijkk+W=ܣh4*500'OYw}\N:͛7+Lu]i 8qBͺ뮻DT*ק^mڴIdR>^}UԦM455d2EH`eQ۶mӉ'\gϞU[[D"W_}U?ϕ|@T[[t:.yuttȑ#.qtR)?z-}8D"Zr?GL~3jllT"P"?ӧO?~mutt(Jw^~e\.7xCw> {TccFGG5<<,IUoo$ȑ#ZzR (?Odrrd8U{i͚5{L&%I555RL�JtAI:sjjj"JJ$I穱Q| Fr@ L9Rtzuvv*Nk||\SSS-[jժUĄ$4+}/kh3ghbb"X&''f͚r\SS7*ɔV-[ oVCC^|E {1AhzzZmmm:r$iժUra:~Ţ$;eYVػTooXZzΝ;+VhͲm[֭[~\N۷oW6իn=`4Mr9 kllLP2TSS4==m۶MG3Xnh4'"Geg8ϋ}=c_-R$ȳugywAs)*ittTV.SPPmm<өS466&4N%͜* +ߞ(5MS婟UWW'۶uiMMMihhHT*ittTLX'u500L&h4̙3rGDBV.Ţ"t96MS|\íaKqbͷMeo_Ͼl$OԎUՆ`?/}pr\*UpCf677%tɕj疶l"۶uqutth``@N <i)|8Ţ œe0םwީzHLvYA 211,3 !0TB`"PE@!*B U!0TB`"PE@!*B UX (/B`LT{{ەL&u MNNaN0|+M6s֮] }Ձ. 8:q℆8٩Ç+0 B`0՞={٩??5<<vy@UyzW亮$T*ĉd2ze悮`zGР/~ѱcǴemٲE?.XҢXѨLTTZQ!0a iddD>5kք]PV^AJ9˃ /0q /b,i9r 4*X5gł PrG> X,S|^+VIl6ҀNp̀wʕX,SoѨ{1IR}}x={6Ҁ000H$k^~۶uwuO֡C{(^ 4*Gj۶m}_Ν+x\۷o:uԂH& ),޸=-a_jW 'uݫ:IRsssyY2TX-hݺuJя~E})[Z5W6-[[[ѡ|>Lj* СC*J&qT,U(,Osn X<߅]P4<<R)'O޶ۄpg.Jm3,B`"PE@!*B U!0T80k],#0.yU6UbM\W|+d PTkTud۷? 0nmonSz'uZU}Ű˸%-jlCO`"PE IO`wIoS`m[x\U6UbM\W|+d P&kTx,IjiiQ$)РL&Ce`K&ؘbyy*R<hyy]]&&&بIMOOq566*NkttT/$顇:tP5455L&#I,K*JYfMMM))hjjTJlV\NLب+WjllLկlΝ;uرw5({Wwu\וeYz뭷{侀Suuur]Wm^m&˲e۶zzz~zA 4/jbbZf|AJ%9Ajmm֭[T,Xe0 MLL(7Ԇ e˖r]9 6(izU*ݴi{=EA L566jӦMzW4<<6Ԕ~_)І 400 I:}z{{}v'?٩XLoԤ;v:_|QLFѼmSL-[400F=ӱc֦_~y:ɤVX_ػX4TKK4<<,IUoo ^E"ff2\p Ӻutw;(/,Kmmm*JooG*֖CKz뭷a2P Lѣڲen*u! kӦMz%Ilv#~= @tZL3=_WGG>E9sFk,JӚRz\2MSY~b>vF2dv ~FxǾ?rr]W] XB$IedRbqޯaѨ,O$* zq9[J& Iҽ+۶uQI3e!8*JkwWMK[&qT,U(,bH`e`IZuJ놴w}ZZZ߯X,UV^+Uk0T_ױc$Iz400vYH`TްK,F@!*B U!0TB`"PE@!*B U!0TB`"PEaˁa @ ijooW{{ɤ|N8I}?? o!02i&}sڵk511~:p@eUq=rG'NАQ{{:;;uaEQA [c\ڳg:;;:~. L\u,S</~Q###:v옶l٢-[g?YK^]]ZZZK3`|W4i*J 6 X"X466IR:~Z[[. ---QT< 2 CL v\1 ۶,KӊFaTH$rYA}Y/E9^T>ʕ+,kjjR6 4*iXocctoh4{LT__x@gϞ 4* (hڵW߶m}'0nӧu!=fz. ѣڶm|׹sao<N:5Eʸ! 97n~FxǾ?rr]W] XB$IedRbq^Ϸ,K;u)NG?FFFxni)\۴jnmmUGG2LԪU444CT*]wQXTP\+.fǑyaRfF%Hs 2 CX,2(Hh͚5:uꔂ (/onnV.S. DT˲dYVe`qRK XECnԊ+t}<64ﻛM6l7EEI#if$w]c85rHc# `A$r^o]^cF;9tS)7z[eHD Fzy<F###f|>DDDD Iqj[&:r"j6eBbJŔqX>{>N{ >6laX`2V>`0,ZbF<G*FAuu50R@$`ee>o vDђFD.C0Tޛa4VD" (Y7^.%IB6 qY,?ze H0{=$v8c]`=  |* =4._ Պ|>Z7obeeCCCPT0 P՘ESS$I(xW.,,`hhW\Q:FA8G}Nnz,,,0L SxFQSSft:,--r8}4:::x!|>Ԅ'd2x"qE|vN<?p/_<A7 Ʉ7|555H$w}da"ڌA`"""""""""""ct" "~?~?DQloV I4ΉDtLL&V $IO}gϞUF\.T*\tIYl6.={Vkkk DDDDDDDDDDDGlxi$"2 ^/kT&n/YhP[[ܻw>hjjzmH۷oHR|HrxJޛ/sssu$~Dt.ܻCea [oJB@ Z RۉD"d>XE477#l6#"""CRIT7.Y,!"Q,{U^l6Catt/TnAPWWNvt:dYB!b) `߃$mBp(DGDDDDG(8y$~?|>߁D* KnBϞ= FS94j5T*զ^E i4ܷumݎ=)YVNkJ=7g^A`Xpy:u O133BKNBGGGIp2N?!^{5jz|g;^o]]e$0~?n߾OJgtbbbwA*^G]]Ο?{ayy긿p^GUU|sssE d zK Z Fb1]xzYbNgϞE{{; z=VVV{Ο?moĻ!Iw\޿6,+ׯѣGZw.nE~ef_Kճ(ɓ';\ss3rVVVJ*F444`yyYIL&Ӗ}؈j%e[, ,@X͆T*W*vjF%nl6yQj*UNACEh4DN<h4Pʨy`uu/]K.͛hiiA(Kwcc#n7"b13gr! ڵk(hiiQ1VVV\. ʕ+V\|`=ڳlngΜACC<A?ATv IDAT._L& ܸqcG%* \.,W8wpuT* 츬555۷t:ӣԃ$I}6jkk;@:Ə~# :uJw^/.\V뽘ID"~eYPCVcppn@"!*Rۋٮ 8{,^y?۽jkk144{wGG0xdp-ܺu ( >=*DQf %cX3Vr `vv~*Jiñ|Z555P^`0egD"XZZɓ'Kbkmmlޗ@=qק*__A> .VWW1<< `=8v.Ţro܌9ܻwmmmG~'փW^PFǃZ<|>XYY`@OOώ6E$PVk!H͛xW+jTlgg'>3Bɓ'իWq=9sd2Ex= L&'Jh4> N:mQVV˰x2}>BDDDtE~DQx<et~C$ ߇`@gg'"4氰7_סV^kjB$ ٟz{{J?>C|_Euu.6m?J?Bє&vE`0| _@>(F}뭷`0V166>X,~/ˈb0P122^0͐$ >^Rqܻwn{Sy ֆ6x^455a~~px_ ӉVl tuu [>Ps\XYYQRELMMߏ\.t`X,V+Ybɓ'?/mZ.yq5~HJxD" wߏ477clllWL&fa4h }}}p:xo.Yg[[|>DQDWWrj4czz555CPZF0ѣGd2ܲS|>5ev### 8F<EeY]]rnי (e8<N'"D6e_٨SSSPhoo^|ׯ_k/⣏>z麙 qگVVVߏ[nݻ/5u$͛;N,_7 hZܻw{0111btt;ZPjSFB477c~~H.kǃ| ҥK?`"za UL&yĉE,E|;߁F[ ]]]~:z="}\p:T*/| x׶D?N' zzz033`=8jggoHoݻO>gΜ^]]ŕ+Wp8?[{4c``CCC Bwy%=xڎnooG[[-,2N&X,%#a7Jp\R ,K$Jr#Z۷o#NZ7oD6l6[{zzz1==Fttt<3<;;.XV!(}{zz0>>F!%2`߯u:nݺBsΡ^ZwttX?_8yAP,KP(!~9A"qid2ܽ{8yOQ,qYVj5FGG؈VLOOX\\hę3gvKRH|r Vmt:]=P"(t0L%+\N222~ ʔ5rP[[[n̙3)HK[[l6FGG?qIkZ,%.\\v ʵRgc@ t EP `6wlH$x!–{{{67<(O>,xU.i%ggffvNDD UL5ho\\.O?o&oL ---8q:::~wSpDEyYFezR) X1X,[>X[[ɓ'qmn_Sݻwop8PWWL'| .^z kkk_>LVW_$I{~~<'|;w@ܹsFMM ܹvNCCCuq)QXn#QK.HÇ8}4,iYA`""" x0==;::`ZMM 111~ x/_F}}]\\Ҧc~~}կWI*s򗿌eBgJX`dccc8wְV2l6J"0( |1i瀿 i4hZ@`pMR $azz/0&''ڊ-CV h$2R2Nelc{h4r:_Z|nϭdYXlPjDgmm-ڰ)ƲI)hoo$tlvGFM&Sh%!~<744 t>h=-w8/t(y].:;;z`:h""}dJFuzHt8-VU:zzzh077W^ybz~4#v%-n /_g ۥ}K֧38=}0T*Z*£G0<<ǏC  z3fի%sl4::`zzz}z y( .]I̚d4{KD0Qt:QUU= "F!I~?~?A_ZX<O X>Z[[Q(6mC~u+Avt>XӸɣnwI2C$%VX?ϟ?qeL&IPSSkiiA$Auu5氼 Ѩ^SSSJـsÇ{`z8q2*D)A\.׮ﺺ=,'&&sb=b htuup  V ~455()fɓOj,--!*4099X,Ν;X,X^^~4ؒ$A$d2qeY8͛7qf\vmGe|hmmE>W1669vX,Mєի[vZ Ѯ1LDDDtDF"`||s 텛7oVU*J+lJ599'OQ<{ww7.\S2j/bppx!~_Wtp=r?"ӳ=r7߄lf(ocrrgOcu/B"ĉw--- A 655!`0B弰H^#vp`z)[^^F?L&rp֭,,,V$mX,"[y_uu58F*x^qnt:TWWyZVm X,tvvblllO~Lv}%Iϲ˅~dY[,|^|jp\sΞ|l6tttTw~̉EW_2ccchnn?yax<?T>{y+̹s >䓒MMM0Ld2Jg`=][kk0UUUÐ$ XL ~uttP(`ffv h4b`+++F0LQD @(BMM L&L&尺 A_4$DQDww7Dmm-4 ӃD" `tt~]]DQ3S \.]F#fS^\.]&A6-IAn`@>G(R8NR)HV[2z`0nCD"$ fT*}Fl`Fw$ LLLJ7  *=. hF`PX>zcFeRE4^є)Պv,..َdh,LMM $,Nrl6r9e_n7^r=*va6N!VE.KFMM z҆aXVێFFr}* FQI53[]ksss[vp/NsS$}ffyڗktvv*S,--abb[-{]?j4%N>pt% f={T èښr=×788yu# "J!*.svSrPXFvb+qb_v4 N,Ow\ZYY.J<8+ `zXW;Ǻ;; x o dziyPɟw4WqAuYz=,+p`; αQkjc3 ?MR=wg7y^Uh4z裏^*ی Cgg'Z-2 06LMMY.A>|r>6:؆h`; ylohii믿o~T%vch044,..*Fsp=& 01UWW7xWhmmſO۷SܸqH%:rj5N:wbiiNR)y3!""""""""""":Ο?t:w}033Iy??M)h{HX^^|> <~xRA LDDDDDDDDDDGDX$I%əjx;l/T*ա+X,e󨪪R^\\,w1,ݎp8ֿ;Μ9A|ߋ`B^=,;ABZV5%DQD&)wш*B&t=jrvbe.Žjn+z]4PSSx<= 0jq'弞իd2M |k_(~m|+_)wh4 χa՛4nclllO 01fƷ-;?<~7aq]^{ uuuj0ǹsp]D=ݦ`X؅L|`zXW;Ǻ;D @R(?؆c~lb,@*˞50ϻl[X, `\(kzxl2W>2 466bX,ɓ'D";'Fl6ip8\ʊk$auudYX_="I&&&099Yl0LDDDDDDDDDDDDDtj{ LDDDDDDDDDDDtDT!&"""""""""""*3J!Tr*AёeZ͆l6 ߏ}ŋ1::P( ;w׮]CP(w5!B@D#HgΜA<Ǎ7055jx<}ݮ`v( QYp$0I* (bHROFH$D6dB[[ 4H$r`X` 177vTUU!bffh`2P__VU,..ܵx:pY;wΝÙ3gRpeٹs^đDDDDDDDDDDt$r9ܺu xWEXݻwKKK?V۷o#H,4ٳs Ǎ2"pt>w`Y$kהfXVLOO:L555nG,X,`vv011l6߯DDDT& ёFqÁB@{֠j BI 2wo.>*XŒƔrs, !"Z-DQD*B0Dkk+8" ͆3g(HR-nnnFWW:VVVRՅ[nP(xDt1LDDDDDDDDDDGRcc#X," n+s޽{(EPTp\r rzӺ n7혚z2ˣo޼ bppT (p:utfzF#򾁁2|EI]"#x|Ge$׋?PZnwA8Fcc#Ν;5l6z|gfp\$z{{a٠j nW …B!DQ466* GyaX`_d2xdْr9e^YP*A@>ǽ{`0B!ݿ---h4O# pEO_FD GU*DDDDDDDDDDDDDDsўӧ7-wf]< 0)JJO?dy.+wш1ٌL&D"<~luuuhiiNC8Ç100P(f$ <~===D"Q6m0bx4a4QSSYϗj, LDDDDDDDDDDDtLYVH$\t X]]œ'O`2044p8p:doX,ITWW(ollTs\h48qBƠR+, jkk199 _!:8蘪G<(`eeEyƍGUUt:z$Ihh4:L r)|Oxp8aٔ,--ayyBt1LDDDDDDDDDDGho˿D>/Kqeܼy)kHh4[kpeaB!$IfuIF$%ˌF#x $I$ mED 0)v_WӟHoZ-tqx<%l2сH$`0ׯJ/ lW\tuu&9˨8N) >}jZyKبWKY^[[__w r*KC:믿^?fDUUUZZZd{hN z{{]D#b9s|>^~X]]?[χ/~җ>~~4z=?ۿۈX,q@0oow)&Jza6؈%DQX,466bffTjQ,@Xt:q-F( E:FPĦEQܼy(ysa*FCCO~__o@,˗~gΜg}7'||c~~d|^ܻIx"0^yp0z{{qΝ}-K6ţG6-ܦ333ʿ ʊh4`=.~'LMDDDDDDDDDD{$oĉ~)Ν;ݎ&\zrhii;#>8e]7o,P$ Q$AgMD LDDDDDDDDDD3_xտW1X,w}@iii?̔}wK^o"`__E.S[믿^O?_p;w033͛7JܻFDDRT:)w!+p8F|pX;Ǻ9r; ?6055b'c2LG(Jw//ɓ'ٟY+_;LMM+_ NbbVAtm5Ӕ QPTxW/} *F#<>)q\x7 "z=.^/~x`0.]Boo/|MlwŽ{4u:DQ, Tן j_%ǏK5L}f[neen[}JKK ^_DDDDDDDDDDT1Ν;Á9XV\p`J (B$|sb@2D2//bt:WJh4 χᒎ2ۍvv&"""""""""q-|xQ]]t:e4550??:X,x\á>^3wei{innF8VJBww7]ΒjyX,xo} _Q΅~_%z{{G&)wZwޅ(xPWWV ш~;wwE4m_~DDDDDDDDDDDCUUaKZ8s \.DQ4N8F__r]TzWahOSx0337xPBx011Q7\rxܻMGP$=po޼;wP(ˡX,beeerVWWV6F$LLL`rrd~a:h"""""""""": FP(%sE͡333%jtvv"b_v===ō7L&a4j]tŒO|&!I~H`"""""""""":/AxΟ?# WFtuud2JH#pn}sae2RY,|:̎q\thfs^K^YY8*K_<>-?N]l""= 0U??-wXa0LDDDDDDDDDDDDDTA&""""""""""""" r P(rV*`@XA(waܧX\J+ |~Gbyb1T*Q%o%Ӌ$I; 0LDDDDDDDDDDDTv4:[y*.OsU*AU Q%Q(a,qܧZʕL&v.u:.;6qhgxɄB|>_DQs: Ubii \Vdo|>|sVEss3c?y466"l6G?rB4 |>RDA`Qa4j|& Dccc0Ͱlp:IXV8!HP( +( L&^""""""""""""* mmmpj$ T X 8wrVWW#@"P>DP,p8p8`2`=δ|&^ow=7l6!xU*a`ۡjT* IJUL&zHx<ՊD"bǃa F TUUmZ/N\.ܻw>hjjܼyuuu ǡhk4d2L966^,* |ܻOT;'< X#wV+0t:P[[xT*zzzVqeXf`JD X,eWVQ( IҦ[sX5y[)/K:F|pX;Ǻ9ޑoT*URxolmx>6:N/&2E~b d2˥,X,2>i4dY圗Ƀne+++žTYiF|pX;Ǻ9a=Gc}lÏmt4^ ^&[6 ===d}G8e}:e~}M頉d$UlWJ 0H4=2i3*DDDDDDDDDDDDDDA`""""""""""""" 0Qat@LryH38c]j$r*GU*DDDDDDDDDDDDDDA`""""""""""""" 0Qa0LDDDDDDDDDDDDDTA&""""""""""""" ;v8rd2yU*<ћjAd2m?c0fbP05"""""""""""""CjG#X,f)j5z=AlVU^[]]E,JR&IyFl޴-X2X`0(eY,..*  Ae& @+Xn`2QxׇXV嵮=֎Fl6R)dYl6,//C$l6%EZ*ߏ:DQZiz@(n HӘZFKK$NRAss3(Ai477cll :---ʶ<ܬlsvL&fffDDDDDDDDDDDDv% ?r\DTQ<f Vq%x^ܿ}}}BXܓmjBd2l+PX,TUUoZO2p80??^Nbj466d2ɓ'VWWhu644&''!Q]]Cuu5jjj`6aZL&1;; F/3""""""""""":~o?~7 I]4PWW!`qqQ94 Ν;CwyǶ][uuoFIPUU,+ ( JAr9qHx`0`uuLmmm-\(n˂ 0, 077X,gJDDDDDDDDDDDt amm w|>ܽ{mmm]<#pkkk^uW}:;l6C,..bnnsss>O^$!NoZwPhhTIT**%@:~vЀT* 8h44P(^_U^d2k$)s[}Q Fr9R)eYP@"j}^$ !"aX6\|~~l hhh@6UR??K(lFgg' 6}|~ѣG">|ch4r9&""""""""""ckuuVvpߏ.QE|`(x?t%$P(lZ>W;!I,DDDDDDDDDDDt]zL }kx<-wш*B42u#ۍve^9tA`"""""""""""":ln|[;#??|FT1޽ QkZF8w޽h4, Ö^NLmt0Xusc]D"AR]xc}lÏmt ?vz1rHVb d2˥,X,W" "Xُq\t,:::łb׋'O h4 ٬rTsQ$ .QŒ$ ,Y_&""""""""""""":݈sU*DDDDDDDDDDDDDDD]Ec?Nhw$IBX,w15_xlыs7ecnP(_DTnG&L{?>Dhg t\w:xQʁCw>*"":.Ze8y +p`; y^]R)Q<\3vP(@$x(MK&""""""""""""" U&""cKϡ[OϷS,;I-ۭD(n<6|?]lw/h:;DDDD/NRm^oы`%Aֆ 4l6%R,FaXP__lF$ QG(rjdRU<ш.1R)eyoo/]̊x I ,n޼YևK\UL. Fe-FA>/k' ٌnL&@2Ap #N.诨T*==6j5"|Qjii+#$abbo~mLMeԣPXOە+LyGA`Ap9T*ܾ}Lf_vLӡ >Ba_ADDD$IoH$R3abb h4 0 g>lx<0 ]Wcc#R0??Boo/FGGl{2Zh4U455amm `Zq}ۍ-븣zx<$`0ɓyךh055u`ڠU  ߿D<$IVHN>uuuXXXxՊX,HH$Id2 auuE5"~&EwdhnnƧ~;]ݍj7^*CMM 0rjkkq ܼyx@`DQ,ݐm'AaÁ~ܿpxۖ;K>^zp8h4G( lhjjăy?o4q9P׹9B]jܹs(x R(8}4N'"~?FGGYŋX^^ZVŃvYFSNm=x"Ďzz:u UUUf ^lV[({)T* rO>A4"""}&''q޽gGE/~ɄB|>_]}2W>2>Y,BuzhZ-7h2R`X* v"[~JfFQ{<tvvuLDDDc[]tt:466"JNȩrەQH] ^vbttT %#ZuZr4`ش\LMAiZPf4 \U577b`0 ## (gXJH$Ǐc||xmmm_RA+u!}j(d2A>ro+:zc[h4t:形(l6o`0Q{[y}ЉF ~2G3H4k;x^  xޒ՘}n`tɓFÇL&եԙl`0jԕN 0tb(V-yl6vF$;iwNGbdd###$ ý{0??ԹfTVUN>@"ɓ'J6}@ |ߝv&$Ihnn.YuFfX\\,yj=j frw8yQL&qm `hhd2A`Xhxfq %kYDQ,ٸާn&I)m%V3o|.4 ^}Ur9|Ǹ}6".^Xf67I?٬OzE:N=::fmjZ?rg(VW^yt~!߿.)'|O>}YI9.]|>F|Z֒WvdEQj}u Q(r i; xH$L&v1==BNa;NCݻ$ CCCʍB*½{`ۋl6rbbB z{{]DDDT&ZxlVI,zrjԬNCCCVWWrmSSShooG{{F9NfܹsGH$唇CXD6(|o ɄT*VR5LMM=9#HXv_ Z A0??ee='OT=Rx[,8q$AELNN" zz(buu555?~X ݰlJqu䯶I鰟,bSԶ)ԛzKFbFQ466*($ݻrTzūT*!``` (AEe٩S2DPz=R "fffł>AQeĹl-SkݾRp8VTm32e2e4<^xѡ2A<Gkk+J >X^^Fww7t:ҹ!Ν;J@$R)L&|VOXZZBoo/&''@9ev\NϭTUU8s q)LOOl6ܹsr DQę3g`6Q,Ns+++ʼn'B[n*nuuuavvSSS RP,1993gb(}ZPP^ JFX,TWWCEb1ܸq $"^/n74 N>[nl6cppP͸sBN8t@ESSBVt裏P(pTUU!CVݻxFGQ|jx"4 A@2ĭ[N144*{>״MMMzlmm ]]]0d28}$O?\t X & LXLp5ա :b ƍBhiiٔyh4… FFFMBdrJFpt: 4 n߾i{OJXVcvvVME~!Z2]b1\~}ژh l6t:"Jrvcii E>D&ɓ'555!ѣG0LCkk2cyyOFCCn޼ ZܺuBDDDe"Pd2Z|J]yJ`=PӇa AP(jgV\^^V1^G6GTl6nѱ)PՅ|>444M > pݸ{.4t:`Zq iF3V 8RgˡǏ>;yfZWhK鲍 %144ݎT*L&G!͢uuuESSShhh@SSfffw܁Vӧ@^ww7b?~tww󡶶t݃rj"}T*455ɓ'$ P 9] :::c~###hllr`61>>z<|pxs8$fsI0wA4о֓(hiisG:N$gSFBHDG.}vj|Gh48`|bAnKHh4\.TUU)#s1h4>3VE$ACC]Ipy"@,,,(h[nAE\pSSSFoo/K:|rsׯI`~~p\( O˥\B!j… ZpH$%呧txRpytuuѣGFb$ٴ\N Ӊ?b*j>cjx`6q%$^{58Nl6$ \vMI)9W5ݶA`y,"N'`4T^WI^\VU !J! """"=]N|TUU)B(ncmm$8 Iwj"#@|ѕrX,"(kN}HhX9T(d2ammMFP^߷zs8hoo(%#f3122NSIѬj177WRGrfA$A455n+(v]XX)Iѩj`4ܬ̔u"bQ:'I%cOXDWW0;:) ȡڮVlyY[\XX|aɉD"h4zBMM t:]Ib؃2Bl6+Al6@ }5%lՊt: ۍ.n.&T*8N8NP23yޒQ;UUUB^R<j5|>߶9x\ftZseeEy<qT*mV^||~i <3338s̾VN&wRl6ed|mm uuuH(l6[Ap@Ewp||J;)@"JÇpݨGUUUI0OX˩gff I ]`+}/l6x^:eqq$c "r}Q, \099_m6VWWӣ?vz}K$JP(Tr]4ۍ^ N#իGcc#1??\D`ەh4njj©S`DDDDDmX#GhM7/rT?29LQ9q3y4pfJ0M"_c&JJR74~ԉ%x`(N9U×M49-j%|VuIPUUF466brr$X,nVTiFZeB!ܹsg>:%GY'a4Bx pٵw܍p8q wPUUf|><~{;MNѽUbmLMrہDsVk4mUV,fJ'H7,IK d2)խd2,,,X," *89]| bgxcI|w>~;^N?J L&KfEqrY~.2 jkk7-ojjB(F)~*%#pwr^m\.Wro$WVi=j>}ODQhZTUUm;rI& aTWWo 7 '7']Н/h&yPc2cb(sr?@4ny"n p:rJ4`qqQ98Nc֢A`Aڊp86>LG򯬬:}4 A6hhJB]]fggQ(9{?ybyNo]&>_ TUUNׯ+CCCpX[[+>Af48>w\fd\YYAss3z=J< t:st:e-H@+Fmm-< j]An;,n\Nӵmѻl(Ӗ3FÇ!Q__絵õkJcU;!o, HBʵF4E$)9 \͆aΖw8WJ6LʜOw0٭:$Iܼy* o6w/Fd1 DZJ7`555x n7.\iD @GGL&AP#='|q e2"""LX$,--CăT,133v!Np `mm (rĉH$p:ۦ/5ͨWF$I,//fZV%]\\Dkk+z="\.jX\\DCC,2nꪒ~y/.,,(s$[V$ B! HFL&TUUm9[~_}^iZPj[>2[ܰ5%rj`%ZlJ.K \]=77͆~AmGu%Iա* .k[ ӧ rmnntX,tXYYf+{ͦtxZ>P(X,!8b1B!455HDmmmj;Dqi < [7v~ۍH$RiJ*% 'cppP5tuubʼeee555[ݚdڊ-ƩSfxmL&%۷܌'OX,[+dcccS:!ȝc,FջGd2̙3Hq=>>~enzŅ pY%un;@ Zb1\p^kkkr<oPh5Ơ(.w1RY/zbM+2 "VWWf p85 T*dY,..beeEa)]$"227CT9;Ǻ*عXWm{nӹ)独Cv  e.VNFn$p:VRnZjXV忍%ǙNRᰒ)$IZ-T*(H$ZAL&P(ԜJ|>|>y塾(H&H0 SyN)@cP(l6t:vF >o`<Vjyʼr-..b  )#EA@&A2T4 bJmQL&r9A@*B2T9. rw-ZzZr?tfYPP{ol6+'JP(ԸUTJm&7LX^^V暕Gb \$auu|:^DdfdO~DQq}x-d۞ǒ$m$w\SSS%߿sY^Sε(c@r:b< Jx<|7(q* `$|(B8F2TJ bA0??̹P((H.lF6"jX,( UVD$QNwwZlTRhlVFq:>>&)Ɣ X,85H.+:HBAO]^^VzxP(L&IR}3dYY=zqqY^మqn\.L&8g`۬B5ƬOOqXc((eIR)׺=}oo~_ v֢]tX,͛宣]U αJ>v8qg2/=$IJ9_ y;)<_6 Q9ԼjzV ٬tFERai#IyI)ycGnj>ZnKKK[?HB\ZvG#cVyUT*N>@ |>Zd2%rzNZ|T]΋~O˝u:ݡ:rݻ. 9,súǽv}B~qŲS-텣xl2W>2>i4dMӄ=\eeeEx 0FsexElc]b}qʶ A:*2Aыj8 e_6|T}Z;cyy^WGGqe \.{UCT*T*ܼyn*z{{QWWuMMMP(PUUVEZ-VVV؈fT*(#V+zzz`0@$`pp8u]uDGSϟV2l6^}UX,={T ɓ'|[oQgEb B8Cgg'zzz'OD6< HӸtf3޽[#:8jll(OGu ;( ׿à@@!!M)2+n^uMvG6bx<!Y1Ϲn{^un\9VpX-e}ߧP% C% CшzCQc8nIӔ$Ix>;$a:r8W'4-EDDDDDDDDDDD~)^Xk(8`0<zQe~cd2ZKeV+. Q3lyN'(,K4eTy<Av  0t?hv6sLдy:ݴy\c]jFN#(QgǤx!!CRYQ>qQ2Bvh(݀ehpĪY2gݐP Fڱ iIQw't:P)!6#`b)o)2DΥ8!V "I(! "?5PB2D`j㡄X $d0Q b%!F1J@B#`(@B#0P5P F*5P] Fj5P]F j?PcG#!A:qX{!:<݁$H#,G X@`9 r$H#,G X@`9 r$H#,G XnMǭt@RU')W8dH Zdj88S6H#,G X@`9 r$H#,G X@`9 r$H#,G X@`9 r$HnwPIzv2/F 6wصyv7@~Imv7F)iݍ#C,F '*%_dĹav7$ r$H#,G X@`9 r$H#,7 5v@ԭ訰jg `HnBY$e N233+$dDWGGGmH$vpHRU$޼- $ i%`"_vzD(tǮFH%`"@A? J E0$ &W(a TgwH_5aЎwz7~\Aj[OVmm˨ި*W.sP^ß?]?xfVb5m kjƕ5vV+G !ʊCa)6FHpa |qѵ9~pn,FIWH!@h߯cM%]P%O@F/~sO1H1FbgFJb/*`*SfiӽhK_{'r+E 1t)RlH W #HH%Hb8 ޔ A)+e\>jlx u죃:сPkzntnSӢ hu)uAתcQk'}/@lh_a)  LYHn+m׭ {^)W.OVǣ7ׂnGUxIT0Q7w~_cg+w am+7Uk\{%z$^WoL.P_TsS+R؝714ʅam뺩=k$}uU,Xvaӱ}*mU)VBF8E0#$ ّFif^Ò~E[vbIgj~O?X|q5tuk}C{|n:0߲.yyBWƗ[&a(O}wB B$-5AS]v=/K}Z/ 弤sW+뛪C)3𻲒NiՌ Ga)~ PBP !e.::.N݅zK͚K|딚UK[}XI ,t܅iڹvUYhu+w8>q5󙾴Xܥ~܅i! 2Թ̆zsbÆ %w zF)wӗ<]\r$Pn.NMOׄH%5k=R&x}]x /W]#X4q]uꇽjPE @"ž}nKhI>?\.4B;{D~1X(WaGj}/ޟ ndG&z7PK>G'`wAz5#\I50_).UkQy}SOwF*95[.[W5>uOHNMSVԺy̝~) tEuq]ZK5tXׇd|`{~`tw)g<$x]x..KvO@:w:m[~K= n.+(7Cݶx}yLNM5w:=5>\f^җXsdPryzHIεj+pfÒZ)QoV?u/-V\_=ɩi=Ⓕ}MCQ7&^ e[4"%5zT-;VE{ӗ^ZqGL$B )J7^{7&CU$g"R:޹b-e@DZ} %T~ݘ#go!>F;95MYtϚX4OY_*5+[|~ WVᗔu;4"%@\_L.N}zi>ٹv7:M7%Ө }Ctq]. v0ZЮEn*ڣuCyy3Q%ȜX4OZ[n/-VV%BiKj3_ܯf~iy_ghOSS5"QCQ7$^B不gr8ӁPjVv0=]%PŒȑ$N?G&`x4g)~I{=X>kƂ]'7=z$O:gEB !lxM9s`p}: ѹy`5nxY%6g|twPkv3_sD k3JB Z[%i7%M7Vre~Iӗ&s7]FP1{h0ۖ@$R}ܞPE @p~{wX#\FÆפ- #HR)ҹ):ua^5>KT1zn5Z ?ɔ$ajF|#oDCn.ܡEFPuah]I VOwWM0XQy!kz ?}HW4xyߐGk}9^?ku>C2C/y\ۡKep//E + $ӸaH\&heHkR ?/m3%Q Io{8^MI@w˰3Ա>^r$ħs.~eL@SGFf7 qb <?ݗ^]x]aR&h Oji̧bʴ D#RR-MuPm;w4Jwtt1oZeJmU<-Hԍ+(Թc临(&:ެ~X_}v7%jSӔcYM}gO!]U:0ԶFHjm},@p+9?st~$iZIut3P$kkSi6 @2kbi 騤:ڄsK8}/ _Z$I}}/dc .G v7 }/ѓ)+S+ellIRՆ~燔15#>H?TOwF]'m50Kԡ%itlԅyv#$̝חm-^7\Cvq6tcHIcݖ%܅:JB畜E3wr^KRnǐbjT%XSRu,I%m;#~׵n}JwεC5t`mC*]\rF]}C~xoMjQ efYV6;ߖT#f4G FmY6ɸi9}nLDv.6m樱|%ܾx{vF۱j,)e\V߲Qڦ]\rr^oodjm 9dKiv"( 簿nGߗjӋKEK(#Y-C ^I }O09sK..[.QspN]tS>k>ZV)c~ЦKqs6}8vB鞺w ݥk6=]6tmqbF?6J-n"S'X5@:؋7LsY\,6 vHʓ_Ylnlv#Dm2CmB@beoK;*9%UWn)15ʺiF){ I%@ ;F]pZg{:߫yEM!I:^I_[oJl %P38~t mKfMО3Hm&QW"~ɴM?mꪊAx5n}^vhtno|];ŊePc>׻Fb#iK}+V:@}J#ے:%Y_$)C.W+OJ*d`hhզ^^0QfE0T#w6eH*ڴX{7V3<kFp<^P}/@qMё]Yz||FsMr᠆@BpM0:7OYBr^Hڹv5+)Ux}̷5A#RRC*,$Rjnu,&/ys1e|6Ym-JݷPMեu-\Cn[~mF1(CۖK4w:n}4.̳ǏuoO5kuS%J )ny?j-na;*3}@BfG| >,Iu+E9*IM զiBM&\0A^B j͕QSX{ {5u0_^f}Ǵv '2ء^ٗ@}p.Jf$ q؁tJ~/eoĂK&Z>C=7d?~ 6twiouq]>\:Dk_҇Z[sj]N_}>CŪ" yߺ).7Z騵3]/?M͚+L&_+I_C;׮Ur5M_Z5ttЫ>{mmٹvj}?8=~&pS8\ӗU_}ՕX@X2}Oٙe+2:_V6;a VѬMͧ$K `Ԧ Sm &LiȊ@:sG}v?LWxî>";}uuEXaP‘Zz{?5%Pk}Fsn3[cZ;#6DRݍTff.xjքv<%iDJjo8:=@m tHSshҳkm%aTt7e"}uU~Zo<~z/wev\A?Ա}ώxv"itޮE(7S&{]xBy@/jK͎fvlkIe5ys2J\Tnչ; ]x(_ڻG)5kC(T!ځ֪2ضV֖TM2&e~T;lفxes@%lZlsHhMFm*661R04ԪNG%-6~4fm*Z,1b b%cDyPq=xߕpuk:U/C%~@ڏjS͵ƭ=K5G|̛E2;% v=tI5&@ ^NǡC'|睾>r\ƍ1?C.)EO>ܽ6?pSIWmjn7"&ĵ]Y>:tNצF!!W{6͒10H,moݾ|𫯼g;z]nXTw1۳Xғ^6kesm߼t?ΏJڤࡄ<OFY?_tjӺQ:WkS ubmƜ҆mr;9;5uP iz?e[Ԥۗ/~?LK;va؜alv9\2ڽO/즦~˷l"Gvv5߰N_6LstlvIԱ/khw{v7~t:-7kӨot+ͰX*fw{$;6|P3j_}`…Q3`; ow1YivϺ9vL`59с`/9*en nP7T7`=7\hWȴOJKK3dࡳтX5r,83)CyHKKӢŋO}x w jS[UUU@vQ4 l28֞Kp^\ibָq6-Q}$]"K/(i1呒xG|pC~u+H*Ĕg9 V3j%d6&^Iv7"R9{!uHx _leu45u컴@R@φN?2T sV6; d}|o4Ǧh\Gz+{-O~S/lɨM2jR1ɚV|{4G}wKex"IOh|(]tL 6UUUDz.f`/ѥb[fffoWtttY2I?DQImv7$WN %1f xvvttEc aEn9nhw͢EI+̙I9#ݩ١^!3dPUUU692:"g{쯓娤XkOEnho_i3sw2jS«M2SM֦ Ik޿a#Joٻd;o?{םO-[LߺwfN23LMQiR?wn(BR ~UuttY:1-訵Aݽr 6̬t`@‰-FsKO7h۽ֽ[YN^Hw52+tHaMnY',ĸ}L!--M[ۓS'O@զ6IM2[mۯlv62ĸwo;7.p:zr1c=_fFFH"QXJKK+d®M+ < $āF|{znjj $_wtt,!{nV,FP17E` 1 #,YDw _Nw/E JKKkyQ`]@;r|_S5,[OOJզb#TTUU[P $D_y$iŊr~rx ##WUUE4*KUUUTVZZ)mQŠ+,U0$}:v l@!ש@`SNӓ㗷n޼k^}ɓC~mDt[I旿v4G`=;k}-[[_zg1"}E6 6._0he;XߨRC[3G>3}i0Bt.HmavzL$LS5ݽrFHv jj$Ҷ h{z =XQ'=IR]#%TXWlu;X#쳾6,[~P0$l1B8*+q9|*l2}CBݏYѤ:nDh`ʬn'Q!m`@kF/(qFKW,>xfǐŢnOΞֳVq睧̜Pvb}\(s1C 52n|_ hɾV|kOOPvb֦2 Nmj gts.v7G"l_򎗆Zw͵~>Bُ9U|ߜAnc֦~V/f{ab`@6U'n  63?n4nq͖i_:sy~~>;yc>?{0ܰ/ be3v۶u|>0r9J6I*0o4j+n3||`;Qc(pMQ9Rb3M~O\̉v1p}=;>qP6|@uttfff^aw;ѮS7hw`뽖c}"}CUUU5Z_>ʼ#4X uto]<*)"?:(rڴd(ݔIM$lS,NRNm.@LI9+B_ BMMUUUm 6m'~gb1RQa  4tŒ >yPkwU"F^W삂 )FDBM$UWe{}/.oi'iʼ>[!8Z _]ڳo_zw:9v̘'O UUUERVIcI;*W8v6sV6;$ji(]bxТ3l92jSkj:I]^5jB9ٕFI|zr4Gq.2^+g r9mmkyZX^k{\ޝ2=nHs}ϧM\u~ c۫6Xw(T-֤e }l\F _gy@/$KcCG`mZ%ߵiTwz!xB \ I ̙4r'I-:=zI7xR׺ZDcs"7[\@x/NӧPBMiMr{jYV{lf9 {[Ό(^jaߵ{&GӧOWS q7] 6Rhz)!~tFXw8:իw9| g.9c|mk9s\~ʸX9V6;ΰ@OOOa4+_јl{f[-$ ?/oi,㦠ZU+cN-,DÆ%Z֜O )5-63OmrM1S(;&Snbe`4Gc#$0"|V |";iÆ%.ב']ȂT\(O.r$u lhh[DsϽk^)R@y%FABMuVg <xA P~!*㵱^7k_;(,U}gSmgơ?_dyQGTh Y=$@] Q&`c BuiwD߰38l9*Iyi(mui41`"Ici\;HGqc6d0DH,M?D֬]zOIg);mq9>o'2$f81KӘmst81W=qbyN_/{ޘ/K:c嗟 s2 .II $njRݫCCb6Յ•@m<,t:C rɂTҾ%sp)ڤ`5<x1*בI޽[SS. q7m9UUUmnˎ-4_ئD<>Cy}.vfM! ]L3#?egt*#܋m_UUVZZ6Wj.I^5eO9ߊ `9﷼IW}~ }UUU9zKPI.  jѻ•~},5jd~----TKj4RK-o~$d.oGM!@ ,ob`N% NKKZ3tUUU5p@ʼ~](q1TΧq`SV mijKBE6qS?R)\j6zJ$e$WHG>FoP#H5~ R@06gڵg!f|tp|W=6nۮ6b ae3GD?{냏;U~m[Tޜµ,ܚTZAꑹj6fX+I~V 5ܧ==u8^˷7I4 9:AmiiikYߗTeϗ4[ n?+2Fn D1l,\x-߾}ᚼPQUUUSZZXZZZgnBܦFRy1eFzDGZj,XP9W/ˡ죪5}B5)V#BP`]m$@}bn޼-[]zI Ifmj"dn cz`j^mڣ9"@b``.;ÿ_Zq?Œj0e2I}`Q0Hh,X|/2}eٹ^ZZZ,,mV6;Hht:;״ ֯Woe'fmڤM9UUUealV&6Zm0 *j2Z{za֦hզ8šn60Qku;Xod蘘s~jԹgʎ2EV44T_0+&Yd,O0,c"1cF5s*)'LI/ȸo%@1ێ|dYFSS׺_BiK0uʖpi>\!_m( 2?oqï3Y쬓/Dih\G8t«t:|S}p/O@A«M2SM֦FI6!c7O"--M/lv*wʔB9[QF.m t6(dN(J0Q HqJ@aą]rk-J\p8¶m'ǎspAX:ˋdh](f_m$7x O qپݿTv^ULv8ʻe?m%mxmt< đ@#ߟ|Ǐjbuܾ V"Y+?M"I(! WvٻgdƖ-!̙3G?#mnes_x Oq]u{[dV{t|y9@m2;/jj6Lslwo;rVdM%wݽI99 Ԧ q~{4Ge 8HqJ@a U2 HZ9T!!#C d|'\~gxA,?7z 0-u=$9 n#ٷeW]6ݲdiyv7j ZmXt|զ__XM2jS;7LsFȐ1J۲NF ȨndԌ6S%j 0V49$ek7d2$U~;)))k˘Ċ&gG-I;7xCݰE. ĔVgT_x1Jȑ7ai}pA4rb6e6T42@|{޽;j&M>#B ;%jV4Cؘ勉 $GFm^|MݍM`7{3!ic#)!TE2AkIe`bRb80@+#%ۘᮞXgy&ޝIIIiIIIr:ںu:;;%I'N… 6Q2uŊNpߟb_ W49'K챸ac㈿hrJ}cc'˨qqZ )בkoٜadDMF:oK$5n\,RW: #kE:E˖-yffmUq{CƁDkМ5{%KL5UiYV|SǏ9Щe,#+\a %丽0_rnbՅ;:|mIS-[hɿxꩆ=udo0wQ[%޽[O?뙣GQf(A|/̩Sf]]]jLy>9p_:eK]2~dS^uFzzXQ2mN^7>wsG?ծl_6"{{8{n6q#YXIIIzWz~7]uoR#H{e$I~Q(e}/lOt$^-i}hf M2jmۦUV>Jzt饗JCdR6;d0|Z7K_k%:龼zcc F)FC n*qĞ IIIIi̙$=zTKeΫ8KƇyT4ި!Cԍhn *MTU-Y&ͽamzU]={Ķl٢&tw V>_eo%{=;5ȵiמ@W]u~iע'Eӊ&{SɊ&o]$iݍq@a 7NJ"LDөJG ]|k6;ow$rmQu#bDc8/եnU=}RkvE>O/+555ɓ6kuNv8V<,XNS.^gP-ڍz/|'6e>8G~2ŋ]aoIFm:}{+IIIi{J@O=V^-I] Mfccه2?KKd4ŭePpy= y`&fmz꩐6wm۶~(p{UwHcs)B Hz#2*1E2Oؾ_z*%z _aIzCuVm۶5GYto@R>fn>6;sM}z>Q7u96I>H۷eˮ2~'{|cߑuCf:v5&POT-}OTe46lęk?NOOOWl٢_|qXɲew} ˻?ͬS~ kS;MU2nܹ͛Dm+4f~۷o͛7k˖-%˖;V|:-jGNݏ]0!k>3杗6nYI 9#G'k>HxE}N w뺑>|GÊ*#$ 9o1(ӊ.KNt)}!bٿ\Nt: kUVj% ׍7ޘ!gx׮c:e;ySO̾(w'eÒ}n_ $ϮU 4syكrB3.:G͛}Ƚ6-Y1z@kS9y[g1l/a/" V% ;r=Znx'fϞ].X, q6t 񜌛`O[I}auG?\0X>=Ӻ馛$#Zk5@F8B-lS %H C=g& HZM9w$,ܘ1c>9Fnqs3L~庺p䞶l٢-[$91 ,CWcNΤ'{{ĉ]~v /}IZS?94:53q'gno>-?iiiz'?OKW:=7v̛:P-#L㳾xܝMGւ ӧ>}k6ۻ?rɟ\}~r H?d-tue͸;yfm޼_mrIϿrgZڽOݻw4߂ TnݩÝ rguӥ 2>q\$P=<[wTeS;u[{.ya۶~gY0kӕiɒ%*モGam ď?<* v NC 5v4@hIiU_Z=X|J.VJD/DȰ u#P7SH݂ٛn{oR}}}HvuuP p~Xic?.3h\ffg\\b]2nLMCe^/3C a6]w-^o^Ҷ4g*/=+-c1c.kݼ@,ݾʼlg^}ߝnwmz{?S+LF&n0^ZHKh>>~BtG}.*_G:Rrچ6'?l>,GKOO :tȠ3hr3jEsȢ_˯nxHSr޿}&IK#ڞ/u#P79grߟ>Pk.ߙ6yR=w$ SJ*o_;iΜ9ʕy^f煓r*bh˿ΙS|k%hcf3O?mI yYYO?+2n!r^Bs)Iĉ]3gJ5m4Oz?rE4BW49ߘpqcMRuxoo)EzeXg9D !\kJs3|rɑcs_~ms%ĄCiuMå 'hƌ:o$={٣Q#nԍ\ouCum\1<ӟ upn޳R>:4{NI k4N?>kEsuڈ)χmٲ%̓qզ;TgO&#lKy=hҋ/ڴd~>iy7.^hg7c… *==]G :/\Px$#)1Okİc]m9S)iYיw9읙vΔoYO=TU31:e ށ%2%2EV49HVh$i\eU$c+6;>V+m۶iҥ!o&IҷeӜ/ѰY'IE^*\7;vx^/_Wow7JzI>X@݈KnC@hzigs^V?E`~~̙˯wjng:ܜk7dLp[]ʼ_`Ȩjco~a}sk& H>$Oޣ(쐴2/;GWȩi#z^~9i iΜ97yT*na,{fc#Jpm&VVV2fΜW_}7{Y'E~hr>H7YC9]^.p11*I0`9ޗZJqZnz{{j/vQ{тIڱ11z5cqv` ݛga~9˫,#aǼB5W_}I=3o+n*ZacM23;"iԍU!ꆥA&-nIs^^ƌO?={ {!Iv75{pW"I8i&OѣOhr7Kj8~ >uΙ&Y%7^^FzC<|jSZZK6Q4DzBI%-+rm)c~iߞ=$iVaaѣOR ĭ2I*//׶m۴k׮Guk%P"e)%4 05:3V49$j X*IZFȩP^5c=aB !q>H>'*C!dJZ裏MOO32FVbwCWmxƌIRfP ħZIOJVZ3gGՌ3{ccȊ&|}/Ĩד>V49d\èOۀUH*JKKU__K 2-\P=ᱝ6}fccNJ&vվ;m9 Y-Ƣ V^^[nE>^y啾/2-\P7|\_lj&m K1qDE@݈knfhuv7L?PQOt ^[wyryKCxFM}/qLRFZZ5>h(}/ .… uM7I{Kݍl ^$mC|G|0tJ*Tp8fz駵uV+:zue;Х^mIn@ yNn󲏡P\Kr8in{3))Lq|Sќjns(u9F ǜ۟+6;ncqԩS\z饩n7}92B TW}/jnA:e6In +Q%#V49$lw;?$6CRgw#LMRRR%HJ7qk=y@DMԍF8eu!F&aÆwYK-M@k[_0^t觭6(4mNmv7vĽ@|ژhQ41:e|m!Ѵ1Qcw`=m:EɒI\a|Pgw;6 kџf6^E @"q QA)i\XҾJR>K$+D5O=|۟>AC0Z-&M5ۍʼ:BXas$UJ|v^"]+}. Fe^v|'i:{dwk>%-a%u\f>Q6l"2'czI:ˆ>bw@l"*oi/T"cyʼjۼlyٳ>7@@-$P-#+׻m3R?( $& B#y2FNXWҾ2/nn$. *WXZ(4_+C0`9lRyKdLPmw@H@*oi/xyٝv$B__^X@,w Cij->)HyG[oP*I%-*^aV yY\yKHI%D 4! E X)ɘʼld`+P,HR:/5B2X_"㵒4\>ARǺyT330W\;c' 2/{GyK{:Ǘʼnۭ.oi'#mHZm9@ IZ*iP Ie^v6CYe^v%R]1uVWeʼ:D@ %H7Oi$2/{@I 1nH<$H#,G X@`9 r$H#,G X@`9 r$d}HPvܮ@BRIv^P{{*׎fH4ےjh XߖT$B vPd QlS[HŊ0d_ A"#a@D(++PQ #HH%b`A@D(p+FRl$B X1Fb/ J bxA@D(_a)v +NkwɐT'i%Ў}!.V$Hޡh,-. ?     333333?/?012345%$6789:&*Q?';<= !"#>?@A 0 i  B. ? ?  0 <<i    C. ? ? 333333?/ 0 i G  ?  eD. ?  ?RQ?333333? 0 x x E.  ?  0 i    F.333333?  333333? G 0 i  <   H.333333?  ?ffffff?333333?  0 d I.? J'I    4(D.   ' ;?(K ?L  X (6>S\jr *D. 0i i*D. 0i *D. 0*   *D. 0      *)  4  4 *D. 0e??*?G G*D. 0G *D. 00 0*D. 0d d*D. 0d *D. 0 *D. 0 *D. 0< <*D. 0<   *)J p0 PM PJ p0P M  J p0 !M!!<"M<"<"&#M&#&#$M$'%I  '0D. 0$(M (D. 0([)M[)[)*M *J p0*Y+MY+Y++,M+,+,-M--7.M7.7.>/M>/01M112M223M 3*D. 0)34M45'%I  '0 4 (6D. 0 '6 4777]8]8]89 Y@(L0     @M/N0123?$@)p0MbP??K0%$678:O9&*';?<= 0 P d<. *@@(L# ]]YY++0]  Q<=6789RSA @65    7@FF@F@@FFF@F@F@ F@ F@ F@ F@ F@F@F@FF@ @!F63"#%$ %q&' (W) * X+ , - .|/F04S@TOU?V@R@;@G@J@      WXYZ[\]^_`abcdefd@"#$%&'()*+,-./012  GltfLoaderjtablecreate^[ ]+[\"]concat"\/   _^%-?%d+%.?%d*[eE]?[+%-]?%d*tonumberbufferreadf32readu32readu16readu8readi16readi8 componentTypeSCALARtypecount bufferView byteOffset byteStridelennumbersource baseColor roughnessmetallicemissivealbedoImageIdxnormalImageIdx ormImageIdxemissiveImageIdxColorrgbapbrMetallicRoughnessbaseColorFactormathclamproughnessFactormetallicFactorbaseColorTextureindexmetallicRoughnessTexture normalTextureocclusionTextureemissiveFactoremissiveTexturexyz attributesPOSITIONNORMAL TEXCOORD_0uvindicesmaterialvertsnormsuvsname materialIndex bufferViews accessors materialstexturesmeshesimagesipairs image/pngmimeType byteLengthcopydatainserturistringfindbase64,sub_b64mesh_ primitives_prim_ rawMaterials rawTexturesprint$[GltfLoader] GLB chunk 0 is not JSON readstring[GltfLoader] JSON parse failedpairsbit32rshiftbandwriteu8tostring#[GltfLoader] GLTF JSON parse failedbuffers%data:application/octet-stream;base64,$data:application/gltf-buffer;base64,)[GltfLoader] External URI not supported: indexOffset indexCount[GltfLoader] '': empty / too smalllowermatch%.(%w+)$gltfglb' —  primitive(s), image(s)!': not a recognised glTF/GLB filerequireMath3Dv3norm3bytefloormaxsqrtVEC2VEC3VEC4MAT2MAT3MAT4@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ parseGltfFilemergePrimitivesToMeshDatamergePrimitivesToSubmeshedparseGLB parseGLTFextractMaterial ^ _ ` a  ' ?z  '      D-  '  J) O   (D- ' 5   J) O  ( <-   J4 '  0Od  ( <-   J4 ' J) OK4  9OK4  0O K4  'O K4  O K4  OK4   <-     J4  '    ~z  <-  '  0 1?A@0W@G@[@ \@ ]@    '  <- I> 0@0 ?0@F '   '   J) O ' 55 D4    '   J) O  '     ' O ' ?@W@F@h '   '   J) O ' 55   '   J) O=    '   J) O '    '     '   J) O ' O ' ?@_@A@M@F@ P  '      J) O O O O ' O ' O '    '  <- I>  @0 ?A@V@^@]@@Y@@[@ @ 3I+ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF     v >O JJ O JH O JE  O JB  ,O JD 8O JA D@@@ @,@8@D 0q00  0   0# M 5  '    5   x 0  0 x 0    ! #  0 <O)!(8 ')!JJ D989O!OO)!(8 ')!JE T989O!OO)!(8 ')!JH `989(8P#!(8I#!!( @O JJ D3O JH `)O JE TO JB lO JD x O JA "'99#@?@0<D@@T@`@l@x@I( @P' I( @PbM'@?6 4 4I( @P[I( @P I( @PB4> 0 ) 'I  D. \` 0 ) ' I   D. \` 0 ) ' I    D. \` 0 ) ' I     D. \` 4      XI( @P XD. \`I( @P D. \`iYI( @P I(  @P'   I(  @ P  bM ' 9I( @P I(  @ P '   I(  @ P  bM '  ` I( @P I( @P' I(  @PbM'3!I( @P*I(  @P'   I(  @ P  bM ' M   M z"I( @P541 0 ) ' I    D. \` 0 ) ' I     D. \`0 ) ' I     D. \`  4     l#I(  @P  I(  @ P '   I(  @ P  bM ' Y $ !?"#$%&'  ()4@*+o@?,-\`./0123456 4O4O 8       94( '   '     v  s   p n l j    "  "  "  "  "  "##"##"##"##!#!I  H###    !!!!!!!!!'~  83    #  #!  #! I      H   #   #   #         9     8 &          9 !  ) ! )  ! ) " " " J J  H 8 " #" #"#9 789@?& .>@?@  M ' ?'M ' x00x0#   !  P   ?P"  JI(  @ P    FF qM  '       M  '    M  '    0  FF  (0  M' x 00 x 0  ! @O( 8#!' JJ H'JJ H'JJ H9  (0 M K M' x 00 x 0  ! @O"( 8#!'  JJ H'JJ H' JJ  H9  89  (0   0  0 M' x 00 x 0) ! @  |O( 8#!'6JJ  H' JJ  H9kO ( 8e#!'6JE ! x)'!JE!  x)9JO ( 8D#!'6JB ! #)!'!JB!  #)!9)  ( 8 '6)!' !  0)!' !  09 8 6$96$ 89*%M'  4  (08 '95  (0  89O 4O&M'4'   64'())*%**++i,i,--Z./9090313122Y3Y35:@;?<=(0@H@ @@@>?@>x@p?@ABCD !"#EF$%&''()%*+,-./0123  5555z555  5 `@  ; w 0 M5' !x 0 0 @   H6& J4 \`L6 @& J4 \`<* l" l0 'J-  |6" @& !J4 \`6 @& J4 \`:  `@  ; (Z#$ 1%5 `@;&1  J4 \`:: 6 ) %  ' ( *GHIJKLM`@NO?P@QHR S\`TUVlW@X|Y !EZ[\]^%'(   KH OKH KH  KH  KH  O  @ <    I(  A P  @      ' '  ' JH  O  '  \   \    &   5 4 \0  A ;5 A=:x0! x :       A@ @(@0@ԓA_@`a<Ab4@PSA\G\0MAcANI+ )*I  '   8&J)       ) ! '  (J'  $K   0 #include using metal::uint; struct VOut { metal::float4 pos; metal::float2 uv; char _pad2[8]; }; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; if (vi == 0u) { x = -1.0; y = -1.0; } else { if (vi == 1u) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out.pos = metal::float4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out.uv = metal::float2((_e21 * 0.5) + 0.5, 0.5 - (_e26 * 0.5)); VOut _e32 = out; const auto _tmp = _e32; return vs_mainOutput { _tmp.pos, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] ) { const VOut f = { pos, varyings_1.uv }; return fs_mainOutput { metal::float4(0.0) }; } vs_mainmainstruct _6 { float4 _m0; float2 _m1; }; static const _6 _32 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _14; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _14 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _25 = 0.0f; float _28 = 0.0f; _6 _30 = _32; if (uint(gl_VertexIndex) == 0u) { _25 = -1.0f; _28 = -1.0f; } else { if (uint(gl_VertexIndex) == 1u) { _25 = 3.0f; _28 = -1.0f; } else { _25 = -1.0f; _28 = 3.0f; } } _30._m0 = float4(_25, _28, 0.0f, 1.0f); _30._m1 = float2((_25 * 0.5f) + 0.5f, 0.5f - (_28 * 0.5f)); gl_Position = _30._m0; _14 = _30._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._14 = _14; return stage_output; } fs_mainmainstruct _6 { float4 _m0; float2 _m1; }; static float4 gl_FragCoord; static float2 _13; static float4 _16; struct SPIRV_Cross_Input { float2 _13 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _16 : SV_Target0; }; void frag_main() { _6 _9 = { gl_FragCoord, _13 }; _16 = float4(0.0f, 0.0f, 0.0f, 0.0f); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _13 = stage_input._13; frag_main(); SPIRV_Cross_Output stage_output; stage_output._16 = _16; return stage_output; } HSLTvs_mainvs_mainfs_mainfs_main#L GLSL.std.450vs_main Ifs_mainBEHIH#H#G *G GGB GEGH   ;   ;  ;!++++@@++?+? .. . " + 0 ; C;CB F;FE; H,J6;;; = !!"# $#%&%>>$&"' (')*)>>(*>>(($$=,=-P.,-A+/>/.=12132=45465P736A08>87=9Q:9> :A;< ==<>=><>Q?9>?86I@=DB=GEPADGKK>HJ8 PBRShaderjBTSR 2W 2WWWX]W @ b Tvs_mainmain#version 300 es precision highp float; precision highp int; struct T { mat4x4 mvp; mat4x4 model; mat4x4 rotMat; mat4x4 normalMat; }; struct M { vec4 baseColor; vec4 emissive; vec4 pbr1_; vec4 pbr2_; vec4 pbr3_; vec4 pbr4_; vec4 pbr5_; vec4 flags; vec4 flags2_; vec4 outline; }; struct L { vec4 camPos; vec4 ambient; vec4 d0dir; vec4 d0color; vec4 d0params; vec4 d1dir; vec4 d1color; vec4 d1params; vec4 p0pos; vec4 p0color; vec4 p1pos; vec4 p1color; vec4 envP; vec4 shadowColor; vec4 viewport; }; struct EnvUBO { vec4 params; }; struct VIn { vec3 pos; vec3 nrm; vec2 uv; }; struct VOut { vec4 clip; vec3 worldPos; vec3 worldNrm; vec2 uv; float viewZ; }; struct FOut { vec4 color; float depth; }; const float ENV_PI = 3.1415927; layout(std140) uniform T_block_0Vertex { T _group_0_binding_0_vs; }; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec3 _p2vs_location1; layout(location = 2) in vec2 _p2vs_location2; smooth out vec3 _vs2fs_location0; smooth out vec3 _vs2fs_location1; smooth out vec2 _vs2fs_location2; smooth out float _vs2fs_location3; float D_GGX(float NdH, float a) { float a2_ = (a * a); float d_3 = (((NdH * NdH) * (a2_ - 1.0)) + 1.0); return (a2_ / (((3.1415927 * d_3) * d_3) + 1e-5)); } float G_Smith(float NdV, float NdL, float k) { return ((NdV / ((NdV * (1.0 - k)) + k)) * (NdL / ((NdL * (1.0 - k)) + k))); } vec3 F_Schlick(float VdH, vec3 F0_) { return (F0_ + ((vec3(1.0) - F0_) * pow(clamp((1.0 - VdH), 0.0, 1.0), 5.0))); } vec3 evalLight(vec3 N, vec3 V, vec3 L_1, vec3 lc, float li, vec3 F0_1, float rough, float metal, vec3 alb) { vec3 H = normalize((V + L_1)); float NdL_1 = max(dot(N, L_1), 0.0); float NdV_1 = max(dot(N, V), 0.001); float NdH_1 = max(dot(N, H), 0.0); float VdH_1 = max(dot(V, H), 0.0); if ((NdL_1 <= 0.0)) { return vec3(0.0); } float a_1 = (rough * rough); float k_1 = (((rough + 1.0) * (rough + 1.0)) / 8.0); float _e35 = D_GGX(NdH_1, a_1); float _e36 = G_Smith(NdV_1, NdL_1, k_1); vec3 _e37 = F_Schlick(VdH_1, F0_1); vec3 spec = (((_e35 * _e36) * _e37) / vec3((((4.0 * NdV_1) * NdL_1) + 0.0001))); vec3 kD = ((vec3(1.0) - _e37) * (1.0 - metal)); return ((((((kD * alb) / vec3(3.1415927)) + spec) * lc) * li) * NdL_1); } float ptAtten(vec3 wpos, vec3 lpos, float range) { if ((range <= 0.0)) { return 0.0; } float d_4 = (length((lpos - wpos)) / range); return clamp((1.0 - (d_4 * d_4)), 0.0, 1.0); } vec2 dirToEnvUV(vec3 d) { float u = ((atan(d.x, d.z) / 6.2831855) + 0.5); float v_1 = (acos(clamp(d.y, -1.0, 1.0)) / ENV_PI); return vec2(u, v_1); } void main() { VIn v = VIn(_p2vs_location0, _p2vs_location1, _p2vs_location2); VOut o = VOut(vec4(0.0), vec3(0.0), vec3(0.0), vec2(0.0), 0.0); mat4x4 _e5 = _group_0_binding_0_vs.mvp; o.clip = (_e5 * vec4(v.pos, 1.0)); mat4x4 _e13 = _group_0_binding_0_vs.model; o.worldPos = (_e13 * vec4(v.pos, 1.0)).xyz; mat4x4 _e22 = _group_0_binding_0_vs.normalMat; o.worldNrm = normalize((_e22 * vec4(v.nrm, 0.0)).xyz); o.uv = v.uv; float _e34 = o.clip.w; o.viewZ = _e34; VOut _e35 = o; gl_Position = _e35.clip; _vs2fs_location0 = _e35.worldPos; _vs2fs_location1 = _e35.worldNrm; _vs2fs_location2 = _e35.uv; _vs2fs_location3 = _e35.viewZ; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmainH#version 300 es precision highp float; precision highp int; struct T { mat4x4 mvp; mat4x4 model; mat4x4 rotMat; mat4x4 normalMat; }; struct M { vec4 baseColor; vec4 emissive; vec4 pbr1_; vec4 pbr2_; vec4 pbr3_; vec4 pbr4_; vec4 pbr5_; vec4 flags; vec4 flags2_; vec4 outline; }; struct L { vec4 camPos; vec4 ambient; vec4 d0dir; vec4 d0color; vec4 d0params; vec4 d1dir; vec4 d1color; vec4 d1params; vec4 p0pos; vec4 p0color; vec4 p1pos; vec4 p1color; vec4 envP; vec4 shadowColor; vec4 viewport; }; struct EnvUBO { vec4 params; }; struct VIn { vec3 pos; vec3 nrm; vec2 uv; }; struct VOut { vec4 clip; vec3 worldPos; vec3 worldNrm; vec2 uv; float viewZ; }; struct FOut { vec4 color; float depth; }; const float ENV_PI = 3.1415927; layout(std140) uniform M_block_0Fragment { M _group_0_binding_1_fs; }; layout(std140) uniform L_block_1Fragment { L _group_0_binding_2_fs; }; uniform highp sampler2D _group_0_binding_3_fs; uniform highp sampler2D _group_0_binding_5_fs; uniform highp sampler2D _group_0_binding_6_fs; layout(std140) uniform EnvUBO_block_2Fragment { EnvUBO _group_1_binding_0_fs; }; uniform highp sampler2D _group_1_binding_1_fs; smooth in vec3 _vs2fs_location0; smooth in vec3 _vs2fs_location1; smooth in vec2 _vs2fs_location2; smooth in float _vs2fs_location3; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; float D_GGX(float NdH, float a) { float a2_ = (a * a); float d_3 = (((NdH * NdH) * (a2_ - 1.0)) + 1.0); return (a2_ / (((3.1415927 * d_3) * d_3) + 1e-5)); } float G_Smith(float NdV, float NdL, float k) { return ((NdV / ((NdV * (1.0 - k)) + k)) * (NdL / ((NdL * (1.0 - k)) + k))); } vec3 F_Schlick(float VdH, vec3 F0_) { return (F0_ + ((vec3(1.0) - F0_) * pow(clamp((1.0 - VdH), 0.0, 1.0), 5.0))); } vec3 evalLight(vec3 N, vec3 V, vec3 L_1, vec3 lc, float li, vec3 F0_1, float rough, float metal, vec3 alb) { vec3 H = normalize((V + L_1)); float NdL_1 = max(dot(N, L_1), 0.0); float NdV_1 = max(dot(N, V), 0.001); float NdH_1 = max(dot(N, H), 0.0); float VdH_1 = max(dot(V, H), 0.0); if ((NdL_1 <= 0.0)) { return vec3(0.0); } float a_1 = (rough * rough); float k_1 = (((rough + 1.0) * (rough + 1.0)) / 8.0); float _e35 = D_GGX(NdH_1, a_1); float _e36 = G_Smith(NdV_1, NdL_1, k_1); vec3 _e37 = F_Schlick(VdH_1, F0_1); vec3 spec = (((_e35 * _e36) * _e37) / vec3((((4.0 * NdV_1) * NdL_1) + 0.0001))); vec3 kD = ((vec3(1.0) - _e37) * (1.0 - metal)); return ((((((kD * alb) / vec3(3.1415927)) + spec) * lc) * li) * NdL_1); } float ptAtten(vec3 wpos, vec3 lpos, float range) { if ((range <= 0.0)) { return 0.0; } float d_4 = (length((lpos - wpos)) / range); return clamp((1.0 - (d_4 * d_4)), 0.0, 1.0); } vec2 dirToEnvUV(vec3 d) { float u = ((atan(d.x, d.z) / 6.2831855) + 0.5); float v_1 = (acos(clamp(d.y, -1.0, 1.0)) / ENV_PI); return vec2(u, v_1); } vec3 sampleEnv(vec3 d_1) { vec2 _e2 = dirToEnvUV(normalize(d_1)); vec4 _e6 = textureLod(_group_1_binding_1_fs, vec2(_e2), 0.0); return _e6.xyz; } vec3 sampleEnvLod(vec3 d_2, float lod) { vec2 _e3 = dirToEnvUV(normalize(d_2)); vec4 _e6 = textureLod(_group_1_binding_1_fs, vec2(_e3), lod); return _e6.xyz; } vec3 computeIBL(vec3 N_1, vec3 V_1, vec3 albedo, float rough_1, float metal_1, float ao) { float _e9 = _group_1_binding_0_fs.params.z; if ((_e9 <= 0.5)) { return vec3(0.0); } float _e17 = _group_1_binding_0_fs.params.x; float specI = max(_e17, 0.0); float _e23 = _group_1_binding_0_fs.params.y; float diffI = max(_e23, 0.0); vec3 F0_2 = mix(vec3(0.04), albedo, metal_1); vec3 R = reflect(-(V_1), N_1); vec3 _e33 = sampleEnvLod(R, (rough_1 * 4.0)); vec3 _e37 = F_Schlick(max(dot(N_1, V_1), 0.0), F0_2); vec3 spec_1 = ((((_e33 * _e37) * (1.0 - rough_1)) * ao) * specI); vec3 _e45 = sampleEnvLod(N_1, 4.0); vec3 kD_1 = ((vec3(1.0) - _e37) * (1.0 - metal_1)); vec3 diff = ((((_e45 * albedo) * kD_1) * ao) * diffI); return (spec_1 + diff); } vec3 applyShadowTint(vec3 albedo_1, vec3 N_2) { float dark = _group_0_binding_2_fs.envP.z; if ((dark <= 0.0)) { return albedo_1; } vec4 _e10 = _group_0_binding_2_fs.d0dir; float NdL0_ = max(dot(N_2, normalize(_e10.xyz)), 0.0); float shade = ((1.0 - NdL0_) * dark); vec4 _e21 = _group_0_binding_2_fs.shadowColor; return mix(albedo_1, _e21.xyz, shade); } vec4 fs_color(VOut f_1) { vec2 uv = vec2(0.0); vec2 projUV = vec2(0.0); vec3 w = vec3(0.0); bool local = false; bool local_1 = false; vec3 albedo_2 = vec3(0.0); float alpha = 0.0; vec3 abGlow = vec3(0.0); float rough_2 = 0.0; float metal_2 = 0.0; float ao_1 = 0.0; bool local_2 = false; bool local_3 = false; vec3 emissive = vec3(0.0); bool local_4 = false; vec3 Lo = vec3(0.0); float _e4 = _group_0_binding_1_fs.pbr5_.w; int mode = int(_e4); uv = f_1.uv; float uvRot = _group_0_binding_1_fs.pbr4_.x; if ((abs(uvRot) > 0.0001)) { float c = cos(uvRot); float s = sin(uvRot); vec2 _e17 = uv; vec2 uvC = (_e17 - vec2(0.5)); uv = (vec2(((c * uvC.x) - (s * uvC.y)), ((s * uvC.x) + (c * uvC.y))) + vec2(0.5)); } vec2 _e35 = uv; vec4 _e38 = _group_0_binding_1_fs.pbr3_; vec4 _e43 = _group_0_binding_1_fs.pbr3_; uv = ((_e35 * _e38.xy) + _e43.zw); float _e49 = _group_0_binding_1_fs.pbr4_.y; int projMode = int(roundEven(_e49)); if ((projMode == 1)) { projUV = ((f_1.worldPos.xy * 0.1) + vec2(0.5)); } else { if ((projMode == 2)) { vec3 N_3 = abs(normalize(f_1.worldNrm)); w = pow(N_3, vec3(8.0)); vec3 _e71 = w; float _e73 = w.x; float _e75 = w.y; float _e78 = w.z; w = (_e71 / vec3((((_e73 + _e75) + _e78) + 0.0001))); vec2 pXY = ((f_1.worldPos.xy * 0.1) + vec2(0.5)); vec2 pXZ = ((f_1.worldPos.xz * 0.1) + vec2(0.5)); vec2 pYZ = ((f_1.worldPos.yz * 0.1) + vec2(0.5)); float _e106 = w.z; float _e109 = w.y; float _e113 = w.x; projUV = (((pXY * _e106) + (pXZ * _e109)) + (pYZ * _e113)); } else { if ((projMode == 3)) { float phi = atan(f_1.worldPos.z, f_1.worldPos.x); projUV = vec2(((phi / (2.0 * 3.1415927)) + 0.5), ((f_1.worldPos.y * 0.1) + 0.5)); } else { if ((projMode == 4)) { vec3 p = normalize(f_1.worldPos); float phi_1 = atan(p.z, p.x); float theta = asin(clamp(p.y, -1.0, 1.0)); projUV = vec2(((phi_1 / (2.0 * 3.1415927)) + 0.5), ((theta / 3.1415927) + 0.5)); } else { if ((projMode == 5)) { vec3 aN = abs(normalize(f_1.worldNrm)); if ((aN.x >= aN.y)) { local = (aN.x >= aN.z); } else { local = false; } bool _e172 = local; if (_e172) { projUV = ((f_1.worldPos.yz * 0.1) + vec2(0.5)); } else { if ((aN.y >= aN.x)) { local_1 = (aN.y >= aN.z); } else { local_1 = false; } bool _e189 = local_1; if (_e189) { projUV = ((f_1.worldPos.xz * 0.1) + vec2(0.5)); } else { projUV = ((f_1.worldPos.xy * 0.1) + vec2(0.5)); } } } else { projUV = f_1.uv; } } } } } if ((abs(uvRot) > 0.0001)) { float c_1 = cos(uvRot); float s_1 = sin(uvRot); vec2 _e210 = projUV; vec2 pC = (_e210 - vec2(0.5)); projUV = (vec2(((c_1 * pC.x) - (s_1 * pC.y)), ((s_1 * pC.x) + (c_1 * pC.y))) + vec2(0.5)); } vec2 _e228 = projUV; vec4 _e231 = _group_0_binding_1_fs.pbr3_; vec4 _e236 = _group_0_binding_1_fs.pbr3_; projUV = ((_e228 * _e231.xy) + _e236.zw); vec4 _e241 = _group_0_binding_1_fs.baseColor; albedo_2 = _e241.xyz; float _e247 = _group_0_binding_1_fs.baseColor.w; alpha = _e247; float _e255 = _group_0_binding_1_fs.flags.x; if ((_e255 > 0.5)) { vec2 _e260 = uv; vec4 s_2 = texture(_group_0_binding_3_fs, vec2(_e260)); vec4 _e265 = _group_0_binding_1_fs.baseColor; albedo_2 = (s_2.xyz * _e265.xyz); float _e272 = _group_0_binding_1_fs.baseColor.w; alpha = (s_2.w * _e272); } float _e277 = _group_0_binding_1_fs.pbr5_.z; if ((_e277 > 0.5)) { vec2 _e282 = projUV; vec4 ab = texture(_group_0_binding_6_fs, vec2(fract(_e282))); float _e288 = _group_0_binding_1_fs.pbr5_.x; float uvOpa = clamp(_e288, 0.0, 1.0); float _e295 = _group_0_binding_1_fs.flags2_.z; float uvEmiInt = max(_e295, 0.0); float abAlpha = (ab.w * uvOpa); float _e303 = _group_0_binding_1_fs.flags2_.w; if ((_e303 > 0.5)) { abGlow = ((ab.xyz * abAlpha) * uvEmiInt); } else { vec3 _e311 = albedo_2; albedo_2 = ((ab.xyz * abAlpha) + (_e311 * (1.0 - abAlpha))); float luma = dot(ab.xyz, vec3(0.2126, 0.7152, 0.0722)); float glow = (max((luma - 0.5), 0.0) * 2.0); float _e334 = _group_0_binding_1_fs.emissive.w; abGlow = (((ab.xyz * glow) * abAlpha) * _e334); } } float _e339 = _group_0_binding_1_fs.pbr1_.x; rough_2 = clamp(_e339, 0.04, 1.0); float _e347 = _group_0_binding_1_fs.pbr1_.y; metal_2 = clamp(_e347, 0.0, 1.0); float _e355 = _group_0_binding_1_fs.pbr1_.w; ao_1 = clamp(_e355, 0.0, 1.0); float _e363 = _group_0_binding_1_fs.flags.z; if (!((_e363 > 0.5))) { float _e372 = _group_0_binding_1_fs.flags.w; local_2 = (_e372 > 0.5); } else { local_2 = true; } bool _e376 = local_2; if (!(_e376)) { float _e383 = _group_0_binding_1_fs.flags2_.x; local_3 = (_e383 > 0.5); } else { local_3 = true; } bool _e387 = local_3; if (_e387) { vec2 _e390 = uv; vec4 orm = texture(_group_0_binding_5_fs, vec2(_e390)); float _e395 = _group_0_binding_1_fs.flags2_.x; if ((_e395 > 0.5)) { ao_1 = orm.x; } float _e402 = _group_0_binding_1_fs.flags.z; if ((_e402 > 0.5)) { rough_2 = max(orm.y, 0.04); } float _e411 = _group_0_binding_1_fs.flags.w; if ((_e411 > 0.5)) { metal_2 = orm.z; } } float _e421 = _group_0_binding_1_fs.flags2_.y; if ((_e421 > 0.5)) { float _e429 = _group_0_binding_1_fs.pbr5_.z; local_4 = (_e429 <= 0.5); } else { local_4 = false; } bool _e433 = local_4; if (_e433) { vec2 _e436 = uv; vec4 e = texture(_group_0_binding_6_fs, vec2(_e436)); emissive = (e.xyz * 0.2); } vec3 _e441 = emissive; vec4 _e444 = _group_0_binding_1_fs.emissive; float _e449 = _group_0_binding_1_fs.emissive.w; emissive = (_e441 + (_e444.xyz * _e449)); vec3 _e452 = emissive; vec3 _e453 = abGlow; emissive = (_e452 + _e453); vec3 N_4 = normalize(f_1.worldNrm); vec4 _e459 = _group_0_binding_2_fs.camPos; vec3 V_2 = normalize((_e459.xyz - f_1.worldPos)); vec4 _e466 = _group_0_binding_2_fs.ambient; float _e471 = _group_0_binding_2_fs.ambient.w; vec3 amb = (_e466.xyz * _e471); vec3 _e473 = albedo_2; float _e474 = rough_2; float _e475 = metal_2; float _e476 = ao_1; vec3 _e477 = computeIBL(N_4, V_2, _e473, _e474, _e475, _e476); if ((mode == 0)) { vec3 _e480 = albedo_2; float _e481 = alpha; return vec4(_e480, _e481); } if ((mode == 1)) { vec3 _e485 = albedo_2; vec3 _e486 = emissive; vec3 _e488 = abGlow; float _e495 = alpha; return vec4(clamp(((_e485 + _e486) + _e488), vec3(0.0), vec3(10.0)), _e495); } if ((mode == 2)) { vec3 _e500 = dFdx(f_1.worldPos); vec3 _e502 = dFdy(f_1.worldPos); vec3 fN = normalize(cross(_e500, _e502)); vec4 _e507 = _group_0_binding_2_fs.d0dir; float ndl = max(dot(fN, normalize(_e507.xyz)), 0.0); vec3 _e513 = albedo_2; float _e514 = ao_1; vec4 _e518 = _group_0_binding_2_fs.d0color; float _e523 = _group_0_binding_2_fs.d0color.w; vec3 c_2 = (_e513 * ((amb * _e514) + ((_e518.xyz * _e523) * ndl))); vec3 _e528 = emissive; float _e535 = alpha; return vec4(clamp((c_2 + _e528), vec3(0.0), vec3(1.0)), _e535); } if ((mode == 3)) { vec4 _e541 = _group_0_binding_2_fs.d0dir; vec3 L0_ = normalize(_e541.xyz); vec4 _e546 = _group_0_binding_2_fs.d1dir; vec3 L1_ = normalize(_e546.xyz); float d0_ = max(dot(N_4, L0_), 0.0); float d1_ = max(dot(N_4, L1_), 0.0); vec3 H0_ = normalize((V_2 + L0_)); vec3 H1_ = normalize((V_2 + L1_)); float _e562 = _group_0_binding_2_fs.d0params.x; float sh0_ = max(_e562, 1.0); float _e568 = _group_0_binding_2_fs.d1params.x; float sh1_ = max(_e568, 1.0); float _e575 = rough_2; float s0_ = (pow(max(dot(N_4, H0_), 0.0), sh0_) * (1.0 - _e575)); float _e583 = rough_2; float s1_ = (pow(max(dot(N_4, H1_), 0.0), sh1_) * (1.0 - _e583)); vec3 _e587 = albedo_2; vec3 _e588 = applyShadowTint(_e587, N_4); float _e589 = ao_1; vec4 _e593 = _group_0_binding_2_fs.d0color; float _e598 = _group_0_binding_2_fs.d0color.w; vec4 _e604 = _group_0_binding_2_fs.d1color; float _e609 = _group_0_binding_2_fs.d1color.w; vec3 diff_1 = (_e588 * (((amb * _e589) + ((_e593.xyz * _e598) * d0_)) + ((_e604.xyz * _e609) * d1_))); vec4 _e616 = _group_0_binding_2_fs.d0color; vec4 _e621 = _group_0_binding_2_fs.d1color; vec3 spec_2 = (((_e616.xyz * s0_) + (_e621.xyz * s1_)) * 0.5); vec3 lit = clamp((diff_1 + spec_2), vec3(0.0), vec3(1.5)); vec3 _e634 = emissive; float _e641 = alpha; return vec4(clamp(((lit + _e477) + _e634), vec3(0.0), vec3(10.0)), _e641); } if ((mode == 5)) { vec3 clay = vec3(0.72, 0.6, 0.52); vec4 _e651 = _group_0_binding_2_fs.d0dir; float ndl_1 = max(dot(N_4, normalize(_e651.xyz)), 0.0); vec3 _e657 = applyShadowTint(clay, N_4); vec4 _e660 = _group_0_binding_2_fs.d0color; float _e665 = _group_0_binding_2_fs.d0color.w; float _e670 = ao_1; vec3 c_3 = ((_e657 * (amb + ((_e660.xyz * _e665) * ndl_1))) * _e670); float _e677 = alpha; return vec4(clamp(c_3, vec3(0.0), vec3(1.0)), _e677); } if ((mode == 6)) { vec4 _e683 = _group_0_binding_2_fs.d0dir; float ndl_2 = max(dot(N_4, normalize(_e683.xyz)), 0.0); float bands = (floor((ndl_2 * 3.0)) / 3.0); vec3 _e694 = albedo_2; vec3 _e695 = applyShadowTint(_e694, N_4); vec4 _e698 = _group_0_binding_2_fs.d0color; float _e703 = _group_0_binding_2_fs.d0color.w; vec3 c_4 = (_e695 * (amb + ((_e698.xyz * _e703) * bands))); float _e713 = alpha; return vec4(clamp(c_4, vec3(0.0), vec3(1.0)), _e713); } vec3 _e715 = albedo_2; vec3 _e716 = applyShadowTint(_e715, N_4); float _e719 = metal_2; vec3 F0_3 = mix(vec3(0.04), _e716, _e719); vec4 _e726 = _group_0_binding_2_fs.d0dir; vec4 _e731 = _group_0_binding_2_fs.d0color; float _e736 = _group_0_binding_2_fs.d0color.w; float _e737 = rough_2; float _e738 = metal_2; vec3 _e739 = evalLight(N_4, V_2, normalize(_e726.xyz), _e731.xyz, _e736, F0_3, _e737, _e738, _e716); vec3 _e740 = Lo; Lo = (_e740 + _e739); vec4 _e744 = _group_0_binding_2_fs.d1dir; vec4 _e749 = _group_0_binding_2_fs.d1color; float _e754 = _group_0_binding_2_fs.d1color.w; float _e755 = rough_2; float _e756 = metal_2; vec3 _e757 = evalLight(N_4, V_2, normalize(_e744.xyz), _e749.xyz, _e754, F0_3, _e755, _e756, _e716); vec3 _e758 = Lo; Lo = (_e758 + _e757); vec4 _e763 = _group_0_binding_2_fs.p0pos; float _e768 = _group_0_binding_2_fs.p0pos.w; float _e769 = ptAtten(f_1.worldPos, _e763.xyz, _e768); if ((_e769 > 0.001)) { vec4 _e774 = _group_0_binding_2_fs.p0pos; vec4 _e781 = _group_0_binding_2_fs.p0color; float _e786 = _group_0_binding_2_fs.p0color.w; float _e788 = rough_2; float _e789 = metal_2; vec3 _e790 = evalLight(N_4, V_2, normalize((_e774.xyz - f_1.worldPos)), _e781.xyz, (_e786 * _e769), F0_3, _e788, _e789, _e716); vec3 _e791 = Lo; Lo = (_e791 + _e790); } vec4 _e796 = _group_0_binding_2_fs.p1pos; float _e801 = _group_0_binding_2_fs.p1pos.w; float _e802 = ptAtten(f_1.worldPos, _e796.xyz, _e801); if ((_e802 > 0.001)) { vec4 _e807 = _group_0_binding_2_fs.p1pos; vec4 _e814 = _group_0_binding_2_fs.p1color; float _e819 = _group_0_binding_2_fs.p1color.w; float _e821 = rough_2; float _e822 = metal_2; vec3 _e823 = evalLight(N_4, V_2, normalize((_e807.xyz - f_1.worldPos)), _e814.xyz, (_e819 * _e802), F0_3, _e821, _e822, _e716); vec3 _e824 = Lo; Lo = (_e824 + _e823); } float _e827 = ao_1; vec3 indirect = ((amb * _e716) * _e827); vec3 _e829 = Lo; vec3 _e832 = emissive; vec3 color = (((indirect + _e829) + _e477) + _e832); float _e839 = alpha; return vec4(clamp(color, vec3(0.0), vec3(10.0)), _e839); } void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1, _vs2fs_location2, _vs2fs_location3); FOut o_1 = FOut(vec4(0.0), 0.0); vec4 _e3 = fs_color(f); o_1.color = _e3; o_1.depth = f.viewZ; FOut _e6 = o_1; _fs2p_location0 = _e6.color; _fs2p_location1 = _e6.depth; return; }  T_block_0VertexEnvUBO_block_2FragmentM_block_0FragmentL_block_1Fragment_group_0_binding_3_fs_group_0_binding_6_fs_group_0_binding_5_fs_group_1_binding_1_fsvs_mainvs_mainfs_mainfs_main2W// language: metal1.0 #include #include using metal::uint; struct T { metal::float4x4 mvp; metal::float4x4 model; metal::float4x4 rotMat; metal::float4x4 normalMat; }; struct M { metal::float4 baseColor; metal::float4 emissive; metal::float4 pbr1_; metal::float4 pbr2_; metal::float4 pbr3_; metal::float4 pbr4_; metal::float4 pbr5_; metal::float4 flags; metal::float4 flags2_; metal::float4 outline; }; struct L { metal::float4 camPos; metal::float4 ambient; metal::float4 d0dir; metal::float4 d0color; metal::float4 d0params; metal::float4 d1dir; metal::float4 d1color; metal::float4 d1params; metal::float4 p0pos; metal::float4 p0color; metal::float4 p1pos; metal::float4 p1color; metal::float4 envP; metal::float4 shadowColor; metal::float4 viewport; }; struct EnvUBO { metal::float4 params; }; struct VIn { metal::float3 pos; metal::float3 nrm; metal::float2 uv; char _pad3[8]; }; struct VOut { metal::float4 clip; metal::float3 worldPos; metal::float3 worldNrm; metal::float2 uv; float viewZ; char _pad5[4]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; constant float ENV_PI = 3.1415927; float D_GGX( float NdH, float a ) { float a2_ = a * a; float d_3 = ((NdH * NdH) * (a2_ - 1.0)) + 1.0; return a2_ / (((3.1415927 * d_3) * d_3) + 0.00001); } float G_Smith( float NdV, float NdL, float k ) { return (NdV / ((NdV * (1.0 - k)) + k)) * (NdL / ((NdL * (1.0 - k)) + k)); } metal::float3 F_Schlick( float VdH, metal::float3 F0_ ) { return F0_ + ((metal::float3(1.0) - F0_) * metal::pow(metal::clamp(1.0 - VdH, 0.0, 1.0), 5.0)); } metal::float3 evalLight( metal::float3 N, metal::float3 V, metal::float3 L_1, metal::float3 lc, float li, metal::float3 F0_1, float rough, float metal_, metal::float3 alb ) { metal::float3 H = metal::normalize(V + L_1); float NdL_1 = metal::max(metal::dot(N, L_1), 0.0); float NdV_1 = metal::max(metal::dot(N, V), 0.001); float NdH_1 = metal::max(metal::dot(N, H), 0.0); float VdH_1 = metal::max(metal::dot(V, H), 0.0); if (NdL_1 <= 0.0) { return metal::float3(0.0); } float a_1 = rough * rough; float k_1 = ((rough + 1.0) * (rough + 1.0)) / 8.0; float _e35 = D_GGX(NdH_1, a_1); float _e36 = G_Smith(NdV_1, NdL_1, k_1); metal::float3 _e37 = F_Schlick(VdH_1, F0_1); metal::float3 spec = ((_e35 * _e36) * _e37) / metal::float3(((4.0 * NdV_1) * NdL_1) + 0.0001); metal::float3 kD = (metal::float3(1.0) - _e37) * (1.0 - metal_); return (((((kD * alb) / metal::float3(3.1415927)) + spec) * lc) * li) * NdL_1; } float ptAtten( metal::float3 wpos, metal::float3 lpos, float range ) { if (range <= 0.0) { return 0.0; } float d_4 = metal::length(lpos - wpos) / range; return metal::clamp(1.0 - (d_4 * d_4), 0.0, 1.0); } metal::float2 dirToEnvUV( metal::float3 d ) { float u = (metal::atan2(d.x, d.z) / 6.2831855) + 0.5; float v_1 = metal::acos(metal::clamp(d.y, -1.0, 1.0)) / ENV_PI; return metal::float2(u, v_1); } metal::float3 sampleEnv( metal::float3 d_1, metal::texture2d tEnvMap, metal::sampler envSampler ) { metal::float2 _e2 = dirToEnvUV(metal::normalize(d_1)); metal::float4 _e6 = tEnvMap.sample(envSampler, _e2, metal::level(0.0)); return _e6.xyz; } metal::float3 sampleEnvLod( metal::float3 d_2, float lod, metal::texture2d tEnvMap, metal::sampler envSampler ) { metal::float2 _e3 = dirToEnvUV(metal::normalize(d_2)); metal::float4 _e6 = tEnvMap.sample(envSampler, _e3, metal::level(lod)); return _e6.xyz; } metal::float3 computeIBL( metal::float3 N_1, metal::float3 V_1, metal::float3 albedo, float rough_1, float metal_1, float ao, constant EnvUBO& env, metal::texture2d tEnvMap, metal::sampler envSampler ) { float _e9 = env.params.z; if (_e9 <= 0.5) { return metal::float3(0.0); } float _e17 = env.params.x; float specI = metal::max(_e17, 0.0); float _e23 = env.params.y; float diffI = metal::max(_e23, 0.0); metal::float3 F0_2 = metal::mix(metal::float3(0.04), albedo, metal_1); metal::float3 R = metal::reflect(-(V_1), N_1); metal::float3 _e33 = sampleEnvLod(R, rough_1 * 4.0, tEnvMap, envSampler); metal::float3 _e37 = F_Schlick(metal::max(metal::dot(N_1, V_1), 0.0), F0_2); metal::float3 spec_1 = (((_e33 * _e37) * (1.0 - rough_1)) * ao) * specI; metal::float3 _e45 = sampleEnvLod(N_1, 4.0, tEnvMap, envSampler); metal::float3 kD_1 = (metal::float3(1.0) - _e37) * (1.0 - metal_1); metal::float3 diff = (((_e45 * albedo) * kD_1) * ao) * diffI; return spec_1 + diff; } metal::float3 applyShadowTint( metal::float3 albedo_1, metal::float3 N_2, constant L& l ) { float dark = l.envP.z; if (dark <= 0.0) { return albedo_1; } metal::float4 _e10 = l.d0dir; float NdL0_ = metal::max(metal::dot(N_2, metal::normalize(_e10.xyz)), 0.0); float shade = (1.0 - NdL0_) * dark; metal::float4 _e21 = l.shadowColor; return metal::mix(albedo_1, _e21.xyz, shade); } int naga_f2i32(float value) { return static_cast(metal::clamp(value, -2147483600.0, 2147483500.0)); } metal::float4 fs_color( VOut f_1, constant M& m, constant L& l, metal::texture2d tAlbedo, metal::texture2d tORM, metal::texture2d tEmissive, metal::sampler tSampler, constant EnvUBO& env, metal::texture2d tEnvMap, metal::sampler envSampler ) { metal::float2 uv = {}; metal::float2 projUV = {}; metal::float3 w = {}; bool local = {}; bool local_1 = {}; metal::float3 albedo_2 = {}; float alpha = {}; metal::float3 abGlow = metal::float3(0.0); float rough_2 = {}; float metal_2 = {}; float ao_1 = {}; bool local_2 = {}; bool local_3 = {}; metal::float3 emissive = metal::float3(0.0); bool local_4 = {}; metal::float3 Lo = metal::float3(0.0); float _e4 = m.pbr5_.w; int mode = naga_f2i32(_e4); uv = f_1.uv; float uvRot = m.pbr4_.x; if (metal::abs(uvRot) > 0.0001) { float c = metal::cos(uvRot); float s = metal::sin(uvRot); metal::float2 _e17 = uv; metal::float2 uvC = _e17 - metal::float2(0.5); uv = metal::float2((c * uvC.x) - (s * uvC.y), (s * uvC.x) + (c * uvC.y)) + metal::float2(0.5); } metal::float2 _e35 = uv; metal::float4 _e38 = m.pbr3_; metal::float4 _e43 = m.pbr3_; uv = (_e35 * _e38.xy) + _e43.zw; float _e49 = m.pbr4_.y; int projMode = naga_f2i32(metal::rint(_e49)); if (projMode == 1) { projUV = (f_1.worldPos.xy * 0.1) + metal::float2(0.5); } else { if (projMode == 2) { metal::float3 N_3 = metal::abs(metal::normalize(f_1.worldNrm)); w = metal::pow(N_3, metal::float3(8.0)); metal::float3 _e71 = w; float _e73 = w.x; float _e75 = w.y; float _e78 = w.z; w = _e71 / metal::float3(((_e73 + _e75) + _e78) + 0.0001); metal::float2 pXY = (f_1.worldPos.xy * 0.1) + metal::float2(0.5); metal::float2 pXZ = (f_1.worldPos.xz * 0.1) + metal::float2(0.5); metal::float2 pYZ = (f_1.worldPos.yz * 0.1) + metal::float2(0.5); float _e106 = w.z; float _e109 = w.y; float _e113 = w.x; projUV = ((pXY * _e106) + (pXZ * _e109)) + (pYZ * _e113); } else { if (projMode == 3) { float phi = metal::atan2(f_1.worldPos.z, f_1.worldPos.x); projUV = metal::float2((phi / (2.0 * 3.1415927)) + 0.5, (f_1.worldPos.y * 0.1) + 0.5); } else { if (projMode == 4) { metal::float3 p = metal::normalize(f_1.worldPos); float phi_1 = metal::atan2(p.z, p.x); float theta = metal::asin(metal::clamp(p.y, -1.0, 1.0)); projUV = metal::float2((phi_1 / (2.0 * 3.1415927)) + 0.5, (theta / 3.1415927) + 0.5); } else { if (projMode == 5) { metal::float3 aN = metal::abs(metal::normalize(f_1.worldNrm)); if (aN.x >= aN.y) { local = aN.x >= aN.z; } else { local = false; } bool _e172 = local; if (_e172) { projUV = (f_1.worldPos.yz * 0.1) + metal::float2(0.5); } else { if (aN.y >= aN.x) { local_1 = aN.y >= aN.z; } else { local_1 = false; } bool _e189 = local_1; if (_e189) { projUV = (f_1.worldPos.xz * 0.1) + metal::float2(0.5); } else { projUV = (f_1.worldPos.xy * 0.1) + metal::float2(0.5); } } } else { projUV = f_1.uv; } } } } } if (metal::abs(uvRot) > 0.0001) { float c_1 = metal::cos(uvRot); float s_1 = metal::sin(uvRot); metal::float2 _e210 = projUV; metal::float2 pC = _e210 - metal::float2(0.5); projUV = metal::float2((c_1 * pC.x) - (s_1 * pC.y), (s_1 * pC.x) + (c_1 * pC.y)) + metal::float2(0.5); } metal::float2 _e228 = projUV; metal::float4 _e231 = m.pbr3_; metal::float4 _e236 = m.pbr3_; projUV = (_e228 * _e231.xy) + _e236.zw; metal::float4 _e241 = m.baseColor; albedo_2 = _e241.xyz; float _e247 = m.baseColor.w; alpha = _e247; float _e255 = m.flags.x; if (_e255 > 0.5) { metal::float2 _e260 = uv; metal::float4 s_2 = tAlbedo.sample(tSampler, _e260); metal::float4 _e265 = m.baseColor; albedo_2 = s_2.xyz * _e265.xyz; float _e272 = m.baseColor.w; alpha = s_2.w * _e272; } float _e277 = m.pbr5_.z; if (_e277 > 0.5) { metal::float2 _e282 = projUV; metal::float4 ab = tEmissive.sample(tSampler, metal::fract(_e282)); float _e288 = m.pbr5_.x; float uvOpa = metal::clamp(_e288, 0.0, 1.0); float _e295 = m.flags2_.z; float uvEmiInt = metal::max(_e295, 0.0); float abAlpha = ab.w * uvOpa; float _e303 = m.flags2_.w; if (_e303 > 0.5) { abGlow = (ab.xyz * abAlpha) * uvEmiInt; } else { metal::float3 _e311 = albedo_2; albedo_2 = (ab.xyz * abAlpha) + (_e311 * (1.0 - abAlpha)); float luma = metal::dot(ab.xyz, metal::float3(0.2126, 0.7152, 0.0722)); float glow = metal::max(luma - 0.5, 0.0) * 2.0; float _e334 = m.emissive.w; abGlow = ((ab.xyz * glow) * abAlpha) * _e334; } } float _e339 = m.pbr1_.x; rough_2 = metal::clamp(_e339, 0.04, 1.0); float _e347 = m.pbr1_.y; metal_2 = metal::clamp(_e347, 0.0, 1.0); float _e355 = m.pbr1_.w; ao_1 = metal::clamp(_e355, 0.0, 1.0); float _e363 = m.flags.z; if (!((_e363 > 0.5))) { float _e372 = m.flags.w; local_2 = _e372 > 0.5; } else { local_2 = true; } bool _e376 = local_2; if (!(_e376)) { float _e383 = m.flags2_.x; local_3 = _e383 > 0.5; } else { local_3 = true; } bool _e387 = local_3; if (_e387) { metal::float2 _e390 = uv; metal::float4 orm = tORM.sample(tSampler, _e390); float _e395 = m.flags2_.x; if (_e395 > 0.5) { ao_1 = orm.x; } float _e402 = m.flags.z; if (_e402 > 0.5) { rough_2 = metal::max(orm.y, 0.04); } float _e411 = m.flags.w; if (_e411 > 0.5) { metal_2 = orm.z; } } float _e421 = m.flags2_.y; if (_e421 > 0.5) { float _e429 = m.pbr5_.z; local_4 = _e429 <= 0.5; } else { local_4 = false; } bool _e433 = local_4; if (_e433) { metal::float2 _e436 = uv; metal::float4 e = tEmissive.sample(tSampler, _e436); emissive = e.xyz * 0.2; } metal::float3 _e441 = emissive; metal::float4 _e444 = m.emissive; float _e449 = m.emissive.w; emissive = _e441 + (_e444.xyz * _e449); metal::float3 _e452 = emissive; metal::float3 _e453 = abGlow; emissive = _e452 + _e453; metal::float3 N_4 = metal::normalize(f_1.worldNrm); metal::float4 _e459 = l.camPos; metal::float3 V_2 = metal::normalize(_e459.xyz - f_1.worldPos); metal::float4 _e466 = l.ambient; float _e471 = l.ambient.w; metal::float3 amb = _e466.xyz * _e471; metal::float3 _e473 = albedo_2; float _e474 = rough_2; float _e475 = metal_2; float _e476 = ao_1; metal::float3 _e477 = computeIBL(N_4, V_2, _e473, _e474, _e475, _e476, env, tEnvMap, envSampler); if (mode == 0) { metal::float3 _e480 = albedo_2; float _e481 = alpha; return metal::float4(_e480, _e481); } if (mode == 1) { metal::float3 _e485 = albedo_2; metal::float3 _e486 = emissive; metal::float3 _e488 = abGlow; float _e495 = alpha; return metal::float4(metal::clamp((_e485 + _e486) + _e488, metal::float3(0.0), metal::float3(10.0)), _e495); } if (mode == 2) { metal::float3 _e500 = metal::dfdx(f_1.worldPos); metal::float3 _e502 = metal::dfdy(f_1.worldPos); metal::float3 fN = metal::normalize(metal::cross(_e500, _e502)); metal::float4 _e507 = l.d0dir; float ndl = metal::max(metal::dot(fN, metal::normalize(_e507.xyz)), 0.0); metal::float3 _e513 = albedo_2; float _e514 = ao_1; metal::float4 _e518 = l.d0color; float _e523 = l.d0color.w; metal::float3 c_2 = _e513 * ((amb * _e514) + ((_e518.xyz * _e523) * ndl)); metal::float3 _e528 = emissive; float _e535 = alpha; return metal::float4(metal::clamp(c_2 + _e528, metal::float3(0.0), metal::float3(1.0)), _e535); } if (mode == 3) { metal::float4 _e541 = l.d0dir; metal::float3 L0_ = metal::normalize(_e541.xyz); metal::float4 _e546 = l.d1dir; metal::float3 L1_ = metal::normalize(_e546.xyz); float d0_ = metal::max(metal::dot(N_4, L0_), 0.0); float d1_ = metal::max(metal::dot(N_4, L1_), 0.0); metal::float3 H0_ = metal::normalize(V_2 + L0_); metal::float3 H1_ = metal::normalize(V_2 + L1_); float _e562 = l.d0params.x; float sh0_ = metal::max(_e562, 1.0); float _e568 = l.d1params.x; float sh1_ = metal::max(_e568, 1.0); float _e575 = rough_2; float s0_ = metal::pow(metal::max(metal::dot(N_4, H0_), 0.0), sh0_) * (1.0 - _e575); float _e583 = rough_2; float s1_ = metal::pow(metal::max(metal::dot(N_4, H1_), 0.0), sh1_) * (1.0 - _e583); metal::float3 _e587 = albedo_2; metal::float3 _e588 = applyShadowTint(_e587, N_4, l); float _e589 = ao_1; metal::float4 _e593 = l.d0color; float _e598 = l.d0color.w; metal::float4 _e604 = l.d1color; float _e609 = l.d1color.w; metal::float3 diff_1 = _e588 * (((amb * _e589) + ((_e593.xyz * _e598) * d0_)) + ((_e604.xyz * _e609) * d1_)); metal::float4 _e616 = l.d0color; metal::float4 _e621 = l.d1color; metal::float3 spec_2 = ((_e616.xyz * s0_) + (_e621.xyz * s1_)) * 0.5; metal::float3 lit = metal::clamp(diff_1 + spec_2, metal::float3(0.0), metal::float3(1.5)); metal::float3 _e634 = emissive; float _e641 = alpha; return metal::float4(metal::clamp((lit + _e477) + _e634, metal::float3(0.0), metal::float3(10.0)), _e641); } if (mode == 5) { metal::float3 clay = metal::float3(0.72, 0.6, 0.52); metal::float4 _e651 = l.d0dir; float ndl_1 = metal::max(metal::dot(N_4, metal::normalize(_e651.xyz)), 0.0); metal::float3 _e657 = applyShadowTint(clay, N_4, l); metal::float4 _e660 = l.d0color; float _e665 = l.d0color.w; float _e670 = ao_1; metal::float3 c_3 = (_e657 * (amb + ((_e660.xyz * _e665) * ndl_1))) * _e670; float _e677 = alpha; return metal::float4(metal::clamp(c_3, metal::float3(0.0), metal::float3(1.0)), _e677); } if (mode == 6) { metal::float4 _e683 = l.d0dir; float ndl_2 = metal::max(metal::dot(N_4, metal::normalize(_e683.xyz)), 0.0); float bands = metal::floor(ndl_2 * 3.0) / 3.0; metal::float3 _e694 = albedo_2; metal::float3 _e695 = applyShadowTint(_e694, N_4, l); metal::float4 _e698 = l.d0color; float _e703 = l.d0color.w; metal::float3 c_4 = _e695 * (amb + ((_e698.xyz * _e703) * bands)); float _e713 = alpha; return metal::float4(metal::clamp(c_4, metal::float3(0.0), metal::float3(1.0)), _e713); } metal::float3 _e715 = albedo_2; metal::float3 _e716 = applyShadowTint(_e715, N_4, l); float _e719 = metal_2; metal::float3 F0_3 = metal::mix(metal::float3(0.04), _e716, _e719); metal::float4 _e726 = l.d0dir; metal::float4 _e731 = l.d0color; float _e736 = l.d0color.w; float _e737 = rough_2; float _e738 = metal_2; metal::float3 _e739 = evalLight(N_4, V_2, metal::normalize(_e726.xyz), _e731.xyz, _e736, F0_3, _e737, _e738, _e716); metal::float3 _e740 = Lo; Lo = _e740 + _e739; metal::float4 _e744 = l.d1dir; metal::float4 _e749 = l.d1color; float _e754 = l.d1color.w; float _e755 = rough_2; float _e756 = metal_2; metal::float3 _e757 = evalLight(N_4, V_2, metal::normalize(_e744.xyz), _e749.xyz, _e754, F0_3, _e755, _e756, _e716); metal::float3 _e758 = Lo; Lo = _e758 + _e757; metal::float4 _e763 = l.p0pos; float _e768 = l.p0pos.w; float _e769 = ptAtten(f_1.worldPos, _e763.xyz, _e768); if (_e769 > 0.001) { metal::float4 _e774 = l.p0pos; metal::float4 _e781 = l.p0color; float _e786 = l.p0color.w; float _e788 = rough_2; float _e789 = metal_2; metal::float3 _e790 = evalLight(N_4, V_2, metal::normalize(_e774.xyz - f_1.worldPos), _e781.xyz, _e786 * _e769, F0_3, _e788, _e789, _e716); metal::float3 _e791 = Lo; Lo = _e791 + _e790; } metal::float4 _e796 = l.p1pos; float _e801 = l.p1pos.w; float _e802 = ptAtten(f_1.worldPos, _e796.xyz, _e801); if (_e802 > 0.001) { metal::float4 _e807 = l.p1pos; metal::float4 _e814 = l.p1color; float _e819 = l.p1color.w; float _e821 = rough_2; float _e822 = metal_2; metal::float3 _e823 = evalLight(N_4, V_2, metal::normalize(_e807.xyz - f_1.worldPos), _e814.xyz, _e819 * _e802, F0_3, _e821, _e822, _e716); metal::float3 _e824 = Lo; Lo = _e824 + _e823; } float _e827 = ao_1; metal::float3 indirect = (amb * _e716) * _e827; metal::float3 _e829 = Lo; metal::float3 _e832 = emissive; metal::float3 color = ((indirect + _e829) + _e477) + _e832; float _e839 = alpha; return metal::float4(metal::clamp(color, metal::float3(0.0), metal::float3(10.0)), _e839); } struct vs_mainInput { metal::float3 pos [[attribute(0)]]; metal::float3 nrm [[attribute(1)]]; metal::float2 uv [[attribute(2)]]; }; struct vs_mainOutput { metal::float4 clip [[position]]; metal::float3 worldPos [[user(loc0), center_perspective]]; metal::float3 worldNrm [[user(loc1), center_perspective]]; metal::float2 uv [[user(loc2), center_perspective]]; float viewZ [[user(loc3), center_perspective]]; }; vertex vs_mainOutput vs_main( vs_mainInput varyings [[stage_in]] , constant T& t [[buffer(0)]] ) { const VIn v = { varyings.pos, varyings.nrm, varyings.uv }; VOut o = {}; metal::float4x4 _e5 = t.mvp; o.clip = _e5 * metal::float4(v.pos, 1.0); metal::float4x4 _e13 = t.model; o.worldPos = (_e13 * metal::float4(v.pos, 1.0)).xyz; metal::float4x4 _e22 = t.normalMat; o.worldNrm = metal::normalize((_e22 * metal::float4(v.nrm, 0.0)).xyz); o.uv = v.uv; float _e34 = o.clip.w; o.viewZ = _e34; VOut _e35 = o; const auto _tmp = _e35; return vs_mainOutput { _tmp.clip, _tmp.worldPos, _tmp.worldNrm, _tmp.uv, _tmp.viewZ }; } struct fs_mainInput { metal::float3 worldPos [[user(loc0), center_perspective]]; metal::float3 worldNrm [[user(loc1), center_perspective]]; metal::float2 uv [[user(loc2), center_perspective]]; float viewZ [[user(loc3), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 clip [[position]] , constant M& m [[buffer(1)]] , constant L& l [[buffer(2)]] , metal::texture2d tAlbedo [[texture(0)]] , metal::texture2d tORM [[texture(2)]] , metal::texture2d tEmissive [[texture(3)]] , metal::sampler tSampler [[sampler(0)]] , constant EnvUBO& env [[buffer(3)]] , metal::texture2d tEnvMap [[texture(4)]] , metal::sampler envSampler [[sampler(1)]] ) { const VOut f = { clip, varyings_1.worldPos, varyings_1.worldNrm, varyings_1.uv, varyings_1.viewZ }; FOut o_1 = {}; metal::float4 _e3 = fs_color(f, m, l, tAlbedo, tORM, tEmissive, tSampler, env, tEnvMap, envSampler); o_1.color = _e3; o_1.depth = f.viewZ; FOut _e6 = o_1; const auto _tmp = _e6; return fs_mainOutput { _tmp.color, _tmp.depth }; }  vs_mainmain struct _6 { row_major float4x4 _m0; row_major float4x4 _m1; row_major float4x4 _m2; row_major float4x4 _m3; }; struct _7 { float4 _m0; float4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float4 _m0; float4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; float4 _m10; float4 _m11; float4 _m12; float4 _m13; float4 _m14; }; struct _11 { float4 _m0; }; struct _14 { float3 _m0; float3 _m1; float2 _m2; }; struct _15 { float4 _m0; float3 _m1; float3 _m2; float2 _m3; float _m4; }; struct _16 { float4 _m0; float _m1; }; static const _15 _187 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float3(0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f), 0.0f }; cbuffer _20_19 : register(b0) { _6 _19_m0 : packoffset(c0); }; static float4 gl_Position; static float3 _162; static float3 _165; static float2 _167; static float3 _172; static float3 _174; static float2 _175; static float _177; struct SPIRV_Cross_Input { float3 _162 : TEXCOORD0; float3 _165 : TEXCOORD1; float2 _167 : TEXCOORD2; }; struct SPIRV_Cross_Output { float3 _172 : TEXCOORD0; float3 _174 : TEXCOORD1; float2 _175 : TEXCOORD2; float _177 : TEXCOORD3; float4 gl_Position : SV_Position; }; void vert_main() { _15 _185 = _187; _14 _161 = { _162, _165, _167 }; _185._m0 = mul(float4(_161._m0, 1.0f), _19_m0._m0); _185._m1 = mul(float4(_161._m0, 1.0f), _19_m0._m1).xyz; _185._m2 = normalize(mul(float4(_161._m1, 0.0f), _19_m0._m3).xyz); _185._m3 = _161._m2; _185._m4 = _185._m0.w; gl_Position = _185._m0; _172 = _185._m1; _174 = _185._m2; _175 = _185._m3; _177 = _185._m4; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { _162 = stage_input._162; _165 = stage_input._165; _167 = stage_input._167; vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._172 = _172; stage_output._174 = _174; stage_output._175 = _175; stage_output._177 = _177; return stage_output; } fs_mainmain\7struct _6 { row_major float4x4 _m0; row_major float4x4 _m1; row_major float4x4 _m2; row_major float4x4 _m3; }; struct _7 { float4 _m0; float4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float4 _m0; float4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; float4 _m10; float4 _m11; float4 _m12; float4 _m13; float4 _m14; }; struct _11 { float4 _m0; }; struct _14 { float3 _m0; float3 _m1; float2 _m2; }; struct _15 { float4 _m0; float3 _m1; float3 _m2; float2 _m3; float _m4; }; struct _16 { float4 _m0; float _m1; }; static const _16 _1043 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _20_19 : register(b1) { _7 _19_m0 : packoffset(c0); }; cbuffer _23_22 : register(b2) { _8 _22_m0 : packoffset(c0); }; cbuffer _32_31 : register(b3) { _11 _31_m0 : packoffset(c0); }; Texture2D _25 : register(t0); Texture2D _27 : register(t2); Texture2D _28 : register(t3); SamplerState _29 : register(s0); Texture2D _34 : register(t4); SamplerState _35 : register(s1); static float4 gl_FragCoord; static float3 _1015; static float3 _1018; static float2 _1020; static float _1023; static float4 _1026; static float _1028; struct SPIRV_Cross_Input { float3 _1015 : TEXCOORD0; float3 _1018 : TEXCOORD1; float2 _1020 : TEXCOORD2; float _1023 : TEXCOORD3; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _1026 : SV_Target0; float _1028 : SV_Target1; }; float2 _158(float3 _157) { return float2((atan2(_157.x, _157.z) / 6.283185482025146484375f) + 0.5f, acos(clamp(_157.y, -1.0f, 1.0f)) / 3.1415927410125732421875f); } float3 _190(float3 _188, float _189) { return _34.SampleLevel(_35, _158(normalize(_188)), _189).xyz; } float3 _72(float _70, float3 _71) { return _71 + ((float3(1.0f, 1.0f, 1.0f) - _71) * pow(clamp(1.0f - _70, 0.0f, 1.0f), 5.0f)); } float3 _207(float3 _201, float3 _202, float3 _203, float _204, float _205, float _206) { if (_31_m0._m0.z <= 0.5f) { return float3(0.0f, 0.0f, 0.0f); } float3 _241 = _72(max(dot(_201, _202), 0.0f), lerp(float3(0.039999999105930328369140625f, 0.039999999105930328369140625f, 0.039999999105930328369140625f), _203, float3(_205, _205, _205))); return ((((_190(reflect(-_202, _201), _204 * 4.0f) * _241) * (1.0f - _204)) * _206) * max(_31_m0._m0.x, 0.0f)) + ((((_190(_201, 4.0f) * _203) * ((float3(1.0f, 1.0f, 1.0f) - _241) * (1.0f - _205))) * _206) * max(_31_m0._m0.y, 0.0f)); } float3 _259(float3 _257, float3 _258) { if (_22_m0._m12.z <= 0.0f) { return _257; } float _277 = (1.0f - max(dot(_258, normalize(_22_m0._m2.xyz)), 0.0f)) * _22_m0._m12.z; return lerp(_257, _22_m0._m13.xyz, float3(_277, _277, _277)); } float _39(float _37, float _38) { float _44 = _38 * _38; float _48 = ((_37 * _37) * (_44 - 1.0f)) + 1.0f; return _44 / (((3.1415927410125732421875f * _48) * _48) + 9.9999997473787516355514526367188e-06f); } float _57(float _54, float _55, float _56) { return (_54 / ((_54 * (1.0f - _56)) + _56)) * (_55 / ((_55 * (1.0f - _56)) + _56)); } float3 _94(float3 _85, float3 _86, float3 _87, float3 _88, float _89, float3 _90, float _91, float _92, float3 _93) { float3 _104 = normalize(_86 + _87); float _106 = max(dot(_85, _87), 0.0f); float _108 = max(dot(_85, _86), 0.001000000047497451305389404296875f); if (_106 <= 0.0f) { return float3(0.0f, 0.0f, 0.0f); } float3 _123 = _72(max(dot(_86, _104), 0.0f), _90); float _128 = ((4.0f * _108) * _106) + 9.9999997473787516355514526367188e-05f; return (((((((float3(1.0f, 1.0f, 1.0f) - _123) * (1.0f - _92)) * _93) / float3(3.1415927410125732421875f, 3.1415927410125732421875f, 3.1415927410125732421875f)) + ((_123 * (_39(max(dot(_85, _104), 0.0f), _91 * _91) * _57(_108, _106, ((_91 + 1.0f) * (_91 + 1.0f)) / 8.0f))) / float3(_128, _128, _128))) * _88) * _89) * _106; } float _144(float3 _141, float3 _142, float _143) { if (_143 <= 0.0f) { return 0.0f; } float _152 = length(_142 - _141) / _143; return clamp(1.0f - (_152 * _152), 0.0f, 1.0f); } float4 _286(_15 _285) { float3 _355 = float3(0.0f, 0.0f, 0.0f); float _349 = 0.0f; float3 _344 = float3(0.0f, 0.0f, 0.0f); bool _337 = false; float2 _329 = float2(0.0f, 0.0f); float3 _358 = float3(0.0f, 0.0f, 0.0f); bool _353 = false; float _347 = 0.0f; float _341 = 0.0f; bool _334 = false; float2 _326 = float2(0.0f, 0.0f); bool _356 = false; bool _351 = false; float _345 = 0.0f; float3 _339 = float3(0.0f, 0.0f, 0.0f); float3 _331 = float3(0.0f, 0.0f, 0.0f); int _367 = int(clamp(_19_m0._m6.w, -2147483648.0f, 2147483520.0f)); _326 = _285._m3; if (abs(_19_m0._m5.x) > 9.9999997473787516355514526367188e-05f) { float _376 = cos(_19_m0._m5.x); float _377 = sin(_19_m0._m5.x); float2 _379 = _326 - float2(0.5f, 0.5f); _326 = float2((_376 * _379.x) - (_377 * _379.y), (_377 * _379.x) + (_376 * _379.y)) + float2(0.5f, 0.5f); } _326 = (_326 * _19_m0._m4.xy) + _19_m0._m4.zw; int _406 = int(clamp(round(_19_m0._m5.y), -2147483648.0f, 2147483520.0f)); if (_406 == 1) { _329 = (_285._m1.xy * 0.100000001490116119384765625f) + float2(0.5f, 0.5f); } else { if (_406 == 2) { _331 = pow(abs(normalize(_285._m2)), float3(8.0f, 8.0f, 8.0f)); float _432 = ((_331.x + _331.y) + _331.z) + 9.9999997473787516355514526367188e-05f; _331 /= float3(_432, _432, _432); _329 = ((((_285._m1.xy * 0.100000001490116119384765625f) + float2(0.5f, 0.5f)) * _331.z) + (((_285._m1.xz * 0.100000001490116119384765625f) + float2(0.5f, 0.5f)) * _331.y)) + (((_285._m1.yz * 0.100000001490116119384765625f) + float2(0.5f, 0.5f)) * _331.x); } else { if (_406 == 3) { _329 = float2((atan2(_285._m1.z, _285._m1.x) / (2.0f * 3.1415927410125732421875f)) + 0.5f, (_285._m1.y * 0.100000001490116119384765625f) + 0.5f); } else { if (_406 == 4) { float3 _480 = normalize(_285._m1); _329 = float2((atan2(_480.z, _480.x) / (2.0f * 3.1415927410125732421875f)) + 0.5f, (asin(clamp(_480.y, -1.0f, 1.0f)) / 3.1415927410125732421875f) + 0.5f); } else { if (_406 == 5) { float3 _499 = abs(normalize(_285._m2)); if (_499.x >= _499.y) { _334 = _499.x >= _499.z; } else { _334 = false; } if (_334) { _329 = (_285._m1.yz * 0.100000001490116119384765625f) + float2(0.5f, 0.5f); } else { if (_499.y >= _499.x) { _337 = _499.y >= _499.z; } else { _337 = false; } if (_337) { _329 = (_285._m1.xz * 0.100000001490116119384765625f) + float2(0.5f, 0.5f); } else { _329 = (_285._m1.xy * 0.100000001490116119384765625f) + float2(0.5f, 0.5f); } } } else { _329 = _285._m3; } } } } } if (abs(_19_m0._m5.x) > 9.9999997473787516355514526367188e-05f) { float _543 = cos(_19_m0._m5.x); float _544 = sin(_19_m0._m5.x); float2 _546 = _329 - float2(0.5f, 0.5f); _329 = float2((_543 * _546.x) - (_544 * _546.y), (_544 * _546.x) + (_543 * _546.y)) + float2(0.5f, 0.5f); } _329 = (_329 * _19_m0._m4.xy) + _19_m0._m4.zw; _339 = _19_m0._m0.xyz; _341 = _19_m0._m0.w; if (_19_m0._m7.x > 0.5f) { float4 _581 = _25.Sample(_29, _326); _339 = _581.xyz * _19_m0._m0.xyz; _341 = _581.w * _19_m0._m0.w; } if (_19_m0._m6.z > 0.5f) { float4 _599 = _28.Sample(_29, frac(_329)); float _608 = _599.w * clamp(_19_m0._m6.x, 0.0f, 1.0f); if (_19_m0._m8.w > 0.5f) { _344 = (_599.xyz * _608) * max(_19_m0._m8.z, 0.0f); } else { _339 = (_599.xyz * _608) + (_339 * (1.0f - _608)); _344 = ((_599.xyz * (max(dot(_599.xyz, float3(0.2125999927520751953125f, 0.715200006961822509765625f, 0.072200000286102294921875f)) - 0.5f, 0.0f) * 2.0f)) * _608) * _19_m0._m1.w; } } _345 = clamp(_19_m0._m2.x, 0.039999999105930328369140625f, 1.0f); _347 = clamp(_19_m0._m2.y, 0.0f, 1.0f); _349 = clamp(_19_m0._m2.w, 0.0f, 1.0f); if (!(_19_m0._m7.z > 0.5f)) { _351 = _19_m0._m7.w > 0.5f; } else { _351 = true; } if (!_351) { _353 = _19_m0._m8.x > 0.5f; } else { _353 = true; } if (_353) { float4 _667 = _27.Sample(_29, _326); if (_19_m0._m8.x > 0.5f) { _349 = _667.x; } if (_19_m0._m7.z > 0.5f) { _345 = max(_667.y, 0.039999999105930328369140625f); } if (_19_m0._m7.w > 0.5f) { _347 = _667.z; } } if (_19_m0._m8.y > 0.5f) { _356 = _19_m0._m6.z <= 0.5f; } else { _356 = false; } if (_356) { _355 = _28.Sample(_29, _326).xyz * 0.20000000298023223876953125f; } _355 += (_19_m0._m1.xyz * _19_m0._m1.w); _355 += _344; float3 _716 = normalize(_285._m2); float3 _722 = normalize(_22_m0._m0.xyz - _285._m1); float3 _728 = _22_m0._m1.xyz * _22_m0._m1.w; float3 _733 = _207(_716, _722, _339, _345, _347, _349); if (_367 == 0) { return float4(_339, _341); } if (_367 == 1) { return float4(clamp((_339 + _355) + _344, float3(0.0f, 0.0f, 0.0f), float3(10.0f, 10.0f, 10.0f)), _341); } if (_367 == 2) { return float4(clamp((_339 * ((_728 * _349) + ((_22_m0._m3.xyz * _22_m0._m3.w) * max(dot(normalize(cross(ddx(_285._m1), ddy(_285._m1))), normalize(_22_m0._m2.xyz)), 0.0f)))) + _355, float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), _341); } if (_367 == 3) { float3 _789 = normalize(_22_m0._m2.xyz); float3 _793 = normalize(_22_m0._m5.xyz); float3 _855 = (clamp((_259(_339, _716) * (((_728 * _349) + ((_22_m0._m3.xyz * _22_m0._m3.w) * max(dot(_716, _789), 0.0f))) + ((_22_m0._m6.xyz * _22_m0._m6.w) * max(dot(_716, _793), 0.0f)))) + (((_22_m0._m3.xyz * (pow(max(dot(_716, normalize(_722 + _789)), 0.0f), max(_22_m0._m4.x, 1.0f)) * (1.0f - _345))) + (_22_m0._m6.xyz * (pow(max(dot(_716, normalize(_722 + _793)), 0.0f), max(_22_m0._m7.x, 1.0f)) * (1.0f - _345)))) * 0.5f), float3(0.0f, 0.0f, 0.0f), float3(1.5f, 1.5f, 1.5f)) + _733) + _355; return float4(clamp(_855, float3(0.0f, 0.0f, 0.0f), float3(10.0f, 10.0f, 10.0f)), _341); } if (_367 == 5) { return float4(clamp((_259(float3(0.7200000286102294921875f, 0.60000002384185791015625f, 0.519999980926513671875f), _716) * (_728 + ((_22_m0._m3.xyz * _22_m0._m3.w) * max(dot(_716, normalize(_22_m0._m2.xyz)), 0.0f)))) * _349, float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), _341); } if (_367 == 6) { return float4(clamp(_259(_339, _716) * (_728 + ((_22_m0._m3.xyz * _22_m0._m3.w) * (floor(max(dot(_716, normalize(_22_m0._m2.xyz)), 0.0f) * 3.0f) / 3.0f))), float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), _341); } float3 _910 = _259(_339, _716); float3 _912 = lerp(float3(0.039999999105930328369140625f, 0.039999999105930328369140625f, 0.039999999105930328369140625f), _910, float3(_347, _347, _347)); _358 += _94(_716, _722, normalize(_22_m0._m2.xyz), _22_m0._m3.xyz, _22_m0._m3.w, _912, _345, _347, _910); _358 += _94(_716, _722, normalize(_22_m0._m5.xyz), _22_m0._m6.xyz, _22_m0._m6.w, _912, _345, _347, _910); float _948 = _144(_285._m1, _22_m0._m8.xyz, _22_m0._m8.w); if (_948 > 0.001000000047497451305389404296875f) { _358 += _94(_716, _722, normalize(_22_m0._m8.xyz - _285._m1), _22_m0._m9.xyz, _22_m0._m9.w * _948, _912, _345, _347, _910); } float _977 = _144(_285._m1, _22_m0._m10.xyz, _22_m0._m10.w); if (_977 > 0.001000000047497451305389404296875f) { _358 += _94(_716, _722, normalize(_22_m0._m10.xyz - _285._m1), _22_m0._m11.xyz, _22_m0._m11.w * _977, _912, _345, _347, _910); } return float4(clamp(((((_728 * _910) * _349) + _358) + _733) + _355, float3(0.0f, 0.0f, 0.0f), float3(10.0f, 10.0f, 10.0f)), _341); } void frag_main() { _16 _1041 = _1043; _15 _1011 = { gl_FragCoord, _1015, _1018, _1020, _1023 }; _1041._m0 = _286(_1011); _1041._m1 = _1011._m4; _1026 = _1041._m0; _1028 = _1041._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _1015 = stage_input._1015; _1018 = stage_input._1018; _1020 = stage_input._1020; _1023 = stage_input._1023; frag_main(); SPIRV_Cross_Output stage_output; stage_output._1026 = _1026; stage_output._1028 = _1028; return stage_output; }  vs_mainvs_mainfs_mainfs_mainb#[ GLSL.std.450 vs_main Ffs_main8;=?ADEFH#HHH#@HHH#HHH#HHH#H#H# H#0H#@H#PH#`H#pH#H #H#H#H# H#0H#@H#PH#`H#pH#H #H #H #H #H #H#H #H#H#H# H#H#H# H#0H#8H#H#G"G!GH#G"G!GH#G"G!GH#G"G!G"G!G"G!G "G !G!"G!!G#"G#!G$H$#G&"G&!G'"G'!GGGG GGGGG8 G;G=G?GAGDGE         +I@ ; ; ;  ;;;; " ;"!$ %$;%#;&;"'!,+-?+.'7!>!M  , N---+O+P@! c   +do:, eOOO+fA+g@+h8, i! ! +@+?+!  ! !    ++ #=,  ++!  +  + !# $, ./ +/0+1=+/2, 3fff+/4+5@+/6+/7*8+9гY>+:Y7?+;ݓ=, <9:;)=+>L>+/?+@ A, A@@@+B?, CBBB+DQ8?+E?+F?, GDEF+/H+I@@ K . L. N P . Q S.T.V. X Z.[.^.`.b.d.f.i+l+m+p+qN+u++A+_+ + +  ;;  ; ;  ;;  ; ;!    .   9;98;;;=;? B;BA;D;E Q.R6+,7)7*(//0**1))20-31243-5465476.807886=>7:7;7<9??@-<A:@BA<C:BD-<E;DFE<G;FHCGH86 LM7J7 KIQQ RNKS-J T+SO- UTP VRU WKVW86 bc7 Y7 Z7 [7 \7]7 ^7_7`7 aXjj kZ[  lEkmY[ n(mOoYZ p(odqYl r(qOsZl t(sOunOvuwvwevx__y_-z_-{yz|{f9}+rx9~=pn|9 Lt^}~ gpnhP   N-`  a i  \ ] n867 7 7OO B- +O-86 7 QQ Q +- P 86 7 = &= '  E9 VXOO 86 7 7= &= '  E9 VXO 86 7 7 7 777A#= &= 'A=eA= (OA= (OP  .  Gg9  (O9 L -   9 g N-      86 7 7 A    A   = OA =O   E (O-A =O P   .86"#7! ;Pge;Zab;P\e;SUV;KMN;Pje;Sef;Z_`;ZY[;SRT;KJL;Shi;Scd;Z]^;PWX;POQA$%A &= '= (= ) = *!A+#= ,&= -'kkAn%ml=on r+opqn/srQ t!>JtAv%u=wv xwyxhzy{z{ |w } w= ~J ~.Q|Q}Q}Q|P  .>Jzz= JA%=O  A%=O  >JA%u=  +pqn/0Q !O  1 .>M2Q !  E    3>O= OAZO=AZO=AZO=hP  >OQ !O  1 .Q !O  1 .Q !O  1 .AZO= AZO=  AZO=  >M4Q !QQ !Q 5Q !Q1P >M6Q !  EQQ Q +- 5P >M7Q !  E  QQQQ>R>R8=RQ !O  1 .>MQ Q        QQ>U >U8  =UQ !O  1 .>MQ !O  1 .>MQ !>M w h! "!" #w $ w= %M &%.Q'&(#'Q)&*$)+(*Q,&-$,Q.&/#.0-/P 1+0 21.>M2!!= 3MA4%=54O 655 736A8%=98O :99 ;7:>M;A<%==<O >==>W>A?%l=@?>Y@AB%A=CBDCEDFEF= GJVH'*WIHGO JIIAK%=LKO MLL NJM>WNQOIAP%l=QPROQ>YREEAS%m=TSUTVUWVW= XM  Y XVZ)*W[ZYA\%m=]\ ^+]O-A`%_=a` b(aOQc[dc^Ae%_l=fegfhgijiO k[[ lkd mlb>\mhjO n[[ ond= pWq-d rpq sor>WsO t[[ut<vu w(vOxw5O y[[ zyx {zdA|%l=}| ~{}>\~hhVVA%= +->]A%= +O->_A%l= +O->aA%A=A%Al=>c>c==cA%_=>e>e==e= JV(*WA%_=Q>aA%A=Q (>]A%Al=Q>_A%_=A%m=>h>h8=h= JV)*WO  >>g= gA%=O A%l=  >g= g= \ >gQ !  EA&=O Q !   EA&=O A&l= = W=]=_=a9 s?= W=YPs0= W= g = \   +eA=YPs2Q ! Q !   D  EA&=O   E (O= W=a A&l=O A&ll=         = g    +eN=YPs4A&=O   EA&u=O   E (O  !( O "  #E" $  %E$A&&='& (('-A)&A=*) +(*-,# -(,O .-(=/]0-/1.02% 3(2O 43+=5]6-5746= 8W9 98=:a ;:A<&l==<O >==A?&ll=@? A>@ BA C;BAD&m=EDO FEEAG&ml=HG IFH JI! KCJ L9KAM&l=NMO ONN PO1AQ&m=RQO SRR TS7 UPT VU WLV  X+WeC YX= Zg [YZ  \+[eA=]YP^\]^_s7`_a`aAb&=cbO dcc  eEdfe g(fO9 hGAi&l=jiO kjjAl&ll=ml nkm ong po qhp=ra sqr  t+seN=uYPvtuv`wsHxwyxyAz&={zO |{{  }E|~} (~OI I= W9 A&l=O A&ll=      +eN=YPx= W9 =_P   .A&=O   EA&l=O A&ll==]=_9 b= j >jA&u=O   EA&m=O A&ml==]=_9 b= j >jQ !A&_=O A&_l=9dA&_=O Q !   EA&=O A&l==]=_9 b= j >jQ !A&=O A&l=9dA&=O Q !   EA&=O A&l==]=_9 b= j >j =a = j  = g   +eA=YP86  ; = = = PA  A =Q P-A >A =Q P-O AP >A  l=! Q "P#"O$!#O %$$  &E%AP' >'&Q (AK) l>)(AZ* l=+*AZ, >,+=- Q.->.A/=0/10>/1Q 2->2Q 3->3Q 4->4Q5->586F 6;QPR=:8= <;= >== @?=CAP7:<>@CA$GA H= I= J= K = L!AM#= N&= O'SS9T"7AUP>UTQV7AZWP>WV=XPQYX>DYQZX>EZ8  BloomHorizjcBTSR  2  3 2 2!2d!" 02vs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; smooth out vec2 _vs2fs_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } void main() { uint vi = uint(gl_VertexID); float x = 0.0; float y = 0.0; VOut out_ = VOut(vec4(0.0), vec2(0.0)); if ((vi == 0u)) { x = -1.0; y = -1.0; } else { if ((vi == 1u)) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out_.pos = vec4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out_.uv = vec2(((_e21 * 0.5) + 0.5), (0.5 - (_e26 * 0.5))); VOut _e32 = out_; gl_Position = _e32.pos; _vs2fs_location0 = _e32.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; layout(std140) uniform UBO_block_0Fragment { UBO _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; float luma(vec3 c) { return dot(c, vec3(0.2126, 0.7152, 0.0722)); } void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); vec4 col = vec4(0.0); int i = -4; float threshold = _group_0_binding_0_fs.params.x; float tx = _group_0_binding_0_fs.texelSize.x; float w[9] = float[9](0.0539, 0.1216, 0.1945, 0.221, 0.221, 0.1945, 0.1216, 0.0539, 0.0396); bool loop_init = true; while(true) { if (!loop_init) { int _e51 = i; i = (_e51 + 1); } loop_init = false; int _e24 = i; if ((_e24 <= 4)) { } else { break; } { int _e30 = i; vec4 s = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((float(_e30) * tx), 0.0)))); float _e38 = luma(s.xyz); float bright = max((_e38 - threshold), 0.0); int _e43 = i; vec4 _e48 = col; col = (_e48 + ((s * bright) * w[(_e43 + 4)])); } } vec4 _e53 = col; _fs2p_location0 = _e53; return; } UBO_block_0Fragment_group_0_binding_1_fsvs_mainvs_mainfs_mainfs_main // language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4 params; metal::float4 texelSize; }; struct VOut { metal::float4 pos; metal::float2 uv; char _pad2[8]; }; struct type_7 { float inner[9]; }; float luma( metal::float3 c ) { return metal::dot(c, metal::float3(0.2126, 0.7152, 0.0722)); } struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; if (vi == 0u) { x = -1.0; y = -1.0; } else { if (vi == 1u) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out.pos = metal::float4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out.uv = metal::float2((_e21 * 0.5) + 0.5, 0.5 - (_e26 * 0.5)); VOut _e32 = out; const auto _tmp = _e32; return vs_mainOutput { _tmp.pos, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] , constant UBO& u [[buffer(0)]] , metal::texture2d tex [[texture(0)]] , metal::sampler samp [[sampler(0)]] ) { const VOut f = { pos, varyings_1.uv }; metal::float4 col = metal::float4(0.0); int i = -4; float threshold = u.params.x; float tx = u.texelSize.x; type_7 w = type_7 {0.0539, 0.1216, 0.1945, 0.221, 0.221, 0.1945, 0.1216, 0.0539, 0.0396}; uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e51 = i; i = as_type(as_type(_e51) + as_type(1)); } loop_init = false; int _e24 = i; if (_e24 <= 4) { } else { break; } { int _e30 = i; metal::float4 s = tex.sample(samp, f.uv + metal::float2(static_cast(_e30) * tx, 0.0)); float _e38 = luma(s.xyz); float bright = metal::max(_e38 - threshold, 0.0); int _e43 = i; metal::float4 _e48 = col; col = _e48 + ((s * bright) * w.inner[as_type(as_type(_e43) + as_type(4))]); } } metal::float4 _e53 = col; return fs_mainOutput { _e53 }; } vs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const _9 _49 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _31; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _31 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _42 = 0.0f; float _45 = 0.0f; _9 _47 = _49; if (uint(gl_VertexIndex) == 0u) { _42 = -1.0f; _45 = -1.0f; } else { if (uint(gl_VertexIndex) == 1u) { _42 = 3.0f; _45 = -1.0f; } else { _42 = -1.0f; _45 = 3.0f; } } _47._m0 = float4(_42, _45, 0.0f, 1.0f); _47._m1 = float2((_42 * 0.5f) + 0.5f, 0.5f - (_45 * 0.5f)); gl_Position = _47._m0; _31 = _47._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._31 = _31; return stage_output; } fs_mainmain/struct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const float _54[9] = { 0.0538999997079372406005859375f, 0.1216000020503997802734375f, 0.1944999992847442626953125f, 0.22100000083446502685546875f, 0.22100000083446502685546875f, 0.1944999992847442626953125f, 0.1216000020503997802734375f, 0.0538999997079372406005859375f, 0.03959999978542327880859375f }; cbuffer _16_15 : register(b0) { _5 _15_m0 : packoffset(c0); }; Texture2D _18 : register(t0); SamplerState _20 : register(s0); static float4 gl_FragCoord; static float2 _37; static float4 _40; struct SPIRV_Cross_Input { float2 _37 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _40 : SV_Target0; }; float _24(float3 _23) { return dot(_23, float3(0.2125999927520751953125f, 0.715200006961822509765625f, 0.072200000286102294921875f)); } void frag_main() { float4 _60 = float4(0.0f, 0.0f, 0.0f, 0.0f); int _62 = -4; uint2 _83 = uint2(4294967295u, 4294967295u); _9 _33 = { gl_FragCoord, _37 }; for (;;) { if (all(bool2(uint2(0u, 0u).x == _83.x, uint2(0u, 0u).y == _83.y))) { break; } _83 -= uint2(uint(_83.y == 0u), 1u); if (!(_62 <= 4)) { break; } float4 _108 = _18.Sample(_20, _33._m1 + float2(float(_62) * _15_m0._m1.x, 0.0f)); _60 += ((_108 * max(_24(_108.xyz) - _15_m0._m0.x, 0.0f)) * _54[_62 + 4]); _62++; continue; } _40 = _60; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _37 = stage_input._37; frag_main(); SPIRV_Cross_Output stage_output; stage_output._40 = _40; return stage_output; } HSLT_5 _16 _16_15_18_20vs_mainvs_mainfs_mainfs_main# GLSL.std.450(vs_main!$&afs_mainZ]`aH#H#H #H #G G"G!GH#G"G!G"G!G! *G$ G&GZ G]G`     +     ; ; ;! +гY>+Y7?+ݓ=,  " ;"! %;%$ ';'&!)+ *+++ ,+-@@+.+/?+0? 2.3.5 7 . 8: C H S [;[Z ^;^];%` b+f?\=+gl =+h+G>+iMb>+j3"=, kfghiihgfj,l....+m+n+o r t u~  ~:,~**+ ,~  67 86() ;213;245;768= #!99:;#*<;=>=>1+>4+<>:?#,@?ABA>1->4+@B>1+>4-@@<<=D1=E4PFDE./ACG6*>GF=I1JI0KJ0=L4ML0N0MPOKNAHP6,>PO= Q6QRQ>$RAST$,=UTVU>TVQWQ>&W86a)X;Cpl;rqm;;=\Z=_]P Y\_Abc*=d=essAuvc**=wvAuxc,*=yxzz{}=~:{Q :* ,*P~,~>||=q:n{QY=qoyP.VdeWO 9w (.=qn>kA2==p>p}}=qo>qz{=p>`8DOFBlurVjiBTSR A A 2s v 3 72i L#2~#$ 42vs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; smooth out vec2 _vs2fs_location0; void main() { uint vi = uint(gl_VertexID); float x = 0.0; float y = 0.0; VOut out_ = VOut(vec4(0.0), vec2(0.0)); if ((vi == 0u)) { x = -1.0; y = -1.0; } else { if ((vi == 1u)) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out_.pos = vec4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out_.uv = vec2(((_e21 * 0.5) + 0.5), (0.5 - (_e26 * 0.5))); VOut _e32 = out_; gl_Position = _e32.pos; _vs2fs_location0 = _e32.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; layout(std140) uniform UBO_block_0Fragment { UBO _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); vec4 col = vec4(0.0); float radius = _group_0_binding_0_fs.params.x; float _e8 = _group_0_binding_0_fs.texelSize.y; float ty = (_e8 * radius); vec4 _e18 = texture(_group_0_binding_1_fs, vec2(f.uv)); col = (_e18 * 0.22702703); vec4 _e29 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (1.0 * ty))))); vec4 _e31 = col; col = (_e31 + (_e29 * 0.19459459)); vec4 _e41 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (-1.0 * ty))))); vec4 _e43 = col; col = (_e43 + (_e41 * 0.19459459)); vec4 _e53 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (2.0 * ty))))); vec4 _e55 = col; col = (_e55 + (_e53 * 0.12162162)); vec4 _e65 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (-2.0 * ty))))); vec4 _e67 = col; col = (_e67 + (_e65 * 0.12162162)); vec4 _e77 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (3.0 * ty))))); vec4 _e79 = col; col = (_e79 + (_e77 * 0.054054055)); vec4 _e89 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (-3.0 * ty))))); vec4 _e91 = col; col = (_e91 + (_e89 * 0.054054055)); vec4 _e101 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (4.0 * ty))))); vec4 _e103 = col; col = (_e103 + (_e101 * 0.016216217)); vec4 _e113 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (-4.0 * ty))))); vec4 _e115 = col; col = (_e115 + (_e113 * 0.016216217)); vec4 _e117 = col; _fs2p_location0 = _e117; return; } UBO_block_0Fragment_group_0_binding_1_fsvs_mainvs_mainfs_mainfs_mainc // language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4 params; metal::float4 texelSize; }; struct VOut { metal::float4 pos; metal::float2 uv; char _pad2[8]; }; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; if (vi == 0u) { x = -1.0; y = -1.0; } else { if (vi == 1u) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out.pos = metal::float4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out.uv = metal::float2((_e21 * 0.5) + 0.5, 0.5 - (_e26 * 0.5)); VOut _e32 = out; const auto _tmp = _e32; return vs_mainOutput { _tmp.pos, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] , constant UBO& u [[buffer(0)]] , metal::texture2d tex [[texture(0)]] , metal::sampler samp [[sampler(0)]] ) { const VOut f = { pos, varyings_1.uv }; metal::float4 col = {}; float radius = u.params.x; float _e8 = u.texelSize.y; float ty = _e8 * radius; metal::float4 _e18 = tex.sample(samp, f.uv); col = _e18 * 0.22702703; metal::float4 _e29 = tex.sample(samp, f.uv + metal::float2(0.0, 1.0 * ty)); metal::float4 _e31 = col; col = _e31 + (_e29 * 0.19459459); metal::float4 _e41 = tex.sample(samp, f.uv + metal::float2(0.0, -1.0 * ty)); metal::float4 _e43 = col; col = _e43 + (_e41 * 0.19459459); metal::float4 _e53 = tex.sample(samp, f.uv + metal::float2(0.0, 2.0 * ty)); metal::float4 _e55 = col; col = _e55 + (_e53 * 0.12162162); metal::float4 _e65 = tex.sample(samp, f.uv + metal::float2(0.0, -2.0 * ty)); metal::float4 _e67 = col; col = _e67 + (_e65 * 0.12162162); metal::float4 _e77 = tex.sample(samp, f.uv + metal::float2(0.0, 3.0 * ty)); metal::float4 _e79 = col; col = _e79 + (_e77 * 0.054054055); metal::float4 _e89 = tex.sample(samp, f.uv + metal::float2(0.0, -3.0 * ty)); metal::float4 _e91 = col; col = _e91 + (_e89 * 0.054054055); metal::float4 _e101 = tex.sample(samp, f.uv + metal::float2(0.0, 4.0 * ty)); metal::float4 _e103 = col; col = _e103 + (_e101 * 0.016216217); metal::float4 _e113 = tex.sample(samp, f.uv + metal::float2(0.0, -4.0 * ty)); metal::float4 _e115 = col; col = _e115 + (_e113 * 0.016216217); metal::float4 _e117 = col; return fs_mainOutput { _e117 }; } vs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const _9 _35 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _17; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _17 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _28 = 0.0f; float _31 = 0.0f; _9 _33 = _35; if (uint(gl_VertexIndex) == 0u) { _28 = -1.0f; _31 = -1.0f; } else { if (uint(gl_VertexIndex) == 1u) { _28 = 3.0f; _31 = -1.0f; } else { _28 = -1.0f; _31 = 3.0f; } } _33._m0 = float4(_28, _31, 0.0f, 1.0f); _33._m1 = float2((_28 * 0.5f) + 0.5f, 0.5f - (_31 * 0.5f)); gl_Position = _33._m0; _17 = _33._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._17 = _17; return stage_output; } fs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; cbuffer _12_11 : register(b0) { _5 _11_m0 : packoffset(c0); }; Texture2D _14 : register(t0); SamplerState _16 : register(s0); static float4 gl_FragCoord; static float2 _23; static float4 _26; struct SPIRV_Cross_Input { float2 _23 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _26 : SV_Target0; }; void frag_main() { float4 _49 = float4(0.0f, 0.0f, 0.0f, 0.0f); _9 _19 = { gl_FragCoord, _23 }; float _60 = _11_m0._m1.y * _11_m0._m0.x; _49 = _14.Sample(_16, _19._m1) * 0.2270270287990570068359375f; _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, 1.0f * _60)) * 0.1945945918560028076171875f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, (-1.0f) * _60)) * 0.1945945918560028076171875f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, 2.0f * _60)) * 0.12162162363529205322265625f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, (-2.0f) * _60)) * 0.12162162363529205322265625f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, 3.0f * _60)) * 0.0540540553629398345947265625f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, (-3.0f) * _60)) * 0.0540540553629398345947265625f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, 4.0f * _60)) * 0.01621621660888195037841796875f); _49 += (_14.Sample(_16, _19._m1 + float2(0.0f, (-4.0f) * _60)) * 0.01621621660888195037841796875f); _26 = _49; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _23 = stage_input._23; frag_main(); SPIRV_Cross_Output stage_output; stage_output._26 = _26; return stage_output; } HSLT_5 _12 _12_11_14_16vs_mainvs_mainfs_mainfs_main# GLSL.std.450vs_mainSfs_mainLORSH#H#H #H #G "G !G H #G"G!G"G!G *G GGL GOGR        ;  ; ;  ; ; ;!+ ++ +@@+ +!?+"? $.%.' ) . *, 5 : E M;ML P;PO;R T+Xyh>+YCG>+Z=+[g]=+\ׄ<+]@+^+_@+`@+a.c e fm6;$#%;$&';)(*= ++,-.-/0/>#>&.0,121343>#>&24>#>&22..=6#=7&P867 !A59(>98=;#<;"=<"=>&?>"@"?PA=@A:B(>BA= C(QDC>DAEF=GFHG>FHQIC>I86SJ;5bc=NL=QOP KNQATU =V=WddAfgU=hgAfiU=jikjhQlKVmnVWWonlpoX>bpQqKr!kPs rtqsVmuVWWvutwvY=xbyxw>byQzK{kP| {}z|Vm~VWW~}Y=b>bQK]kP VmVWWZ=b>bQK^kP VmVWWZ=b>bQKkP VmVWW[=b>bQK_kP VmVWW[=b>bQK`kP VmVWW\=b>bQKakP VmVWW\=b>b=b>R8 MeshLoaderjujtableinsertmathsqrtcossinxyzvertsnormsindicesncipairs/stringgmatch[^ ]+sub#vn match2vn%s+([%-%d%.eE]+)%s+([%-%d%.eE]+)%s+([%-%d%.eE]+)tonumberv 1v%s+([%-%d%.eE]+)%s+([%-%d%.eE]+)%s+([%-%d%.eE]+)f [^%s]+f^(%d+)//(%d+)$^(%d+)/(%d+)/(%d+)$ ^(%d+)/(%d+)$^(%d+)$clearfind {a:} [%-%d%.eE]+ ^%s*(.-)%s*$ ^%a[%w%s]*: Vertices:PolygonVertexIndex:Normals:bufferreadu8readu32readi32readf32readf64inflatecreatecopypcall readstringcharDtFILYCnumsdilSRVerticesPolygonVertexIndexNormalslenprint[MeshLoader] '': Binary FBX v? — geometry arrays appear to be zlib-compressed (encoding=1).K[MeshLoader] Re-export the FBX with compression DISABLED, or export as OBJ. ': empty fileKaydara FBX BinarytostringminFBXHeaderExtensionKaydara v  f lower%.(%w+)$fbxobjrequireMath3Dv3add3sub3norm3cross3postProcessMeshbuildMissileMesh buildCubeMeshparseOBJparseFBXparseModelFile +J4 J4 J4 J4 J4 J4  J4'M"M"# # ! I      3 $      $      8 %*))I   I  ( ##D4 4  # #  D4 49 ?ư>@-DT! @4@ (4  4'   D4    D4 ?+681'+!!! ! J4     J4     J4     J4     J4     J4     94@? 2  48/'+J4    ! J4   ! J4   J4    ! J4   ! J4   94@? 9   4 '           8 k$  "#!"#!"#! "#!"#!"#!8+$ "#!"#!"#!D4 @J4  @99 ' (  8 7(82# ! !'! '! J4 @J4 @J4 @J4 @J4 @J4 @99 ? @D  # #z  # #55555757575 75  7 5   7 5   7 5   7 5   7 5   7 5 75 75 75 75774'     D4 T@     D4 T@548     ( (  J4   T@ 94   4 '     D4 T@      D4 T@      4 ( 8    '   9  4     8-) * I  h  I  p  FF F  ) )  ) )  ) ) ! ) ) ! 9 8/ ") * ! I  h  I  p  FF F  ) ) # ) $) $% ) $) $& ) ) & 9      '   ()  *#   # 6.+,*-/ffffffQ?ffffff{Gz?p= ף?333333 ףp= ?)\(?Q???333333??ffffff???T@@-DT! @hpGz?333333?p= ף??-DT!??Q?Q?333333?p= ף?ffffff?zG?   +,-^55556 5              76  5                 76   5                  76    5                 7 6      5               7  6       5           7  7 0@;F4 '  0@  ; J4 `J4 `: ' ' ' J4  ` J4  ` J4  ` J4  ` J4  ` J4  ` :6  *  0@?`@@     01   4'   J4    4    J4      D4   ? '555555FFFFFF    L <-  PP<-  P!  $    I>  @I>  @I>  @D4 <<-  P  $  I>  @I>  @I>  @D4 <<-  P5  LyPx  $ I>  @I>  @,  $ I>  @I>  @  $I>  @  $ I>   @ 4 !1! #4!' ! #J4#" !<!! ! 4! ! #J4#" !<! " #$%&#D4 !<!  J4 <:4(8J4 < J4 <' J4 <9:        $@< !"#?  :1   4'  4      J4      4      J4   ?  \5555 FFFFFFF5 @  ; ;3('' J4  0 4 (8 J4 0  J4 0'  J4 09 0 :      @?0$0 5 4!   4<-        N              . ' 4 4 <-   P' P ( O  ( ' ' <-    0L I> @J4 H:' 4 ' 4  .      4 <-      T 0 <-  P (  T ( ' <-      0  L I> @J4 H:  '  %&'(?)@0*@HT+,!5   0@;J4   P :%0@PP   44 54(  '   '   D4 P'54  4 (      ' '   D4 P '      -./@?P@ JB 01 JH 02 JG 03 JJ 04 JL 05 JH  'JH )!02A@ @ 0@6} JH ' JH ' JH  '5O) 8T JL   J4   p '  JJ   , J4   p '90O. 8 @      A F     ,(   8   # D4  p9 !!02@5 p @4,?788@9 A  !    0 JH  ' JH )!' JH  ' JH )!'' JB ' JH ' JH '' JB 'O !  ( !589  7 JB     I*  4 'P '6 J4   L  P '6 J4   L  P '6 J4   L  P '6 J4   L  P '6 J4   L  P '6 J4   L  P      6" x!J4  L   P #     6$ x!J4  L   P D%5  JH    ' JH   ' JH  'O   8 JG 'J4  L '9! 6( x!J4 L |P P) JH     ' JH    ' JH   '5 O #  8 JH ' JH ')!J4  L 9! 6* x!J4 L +P + JH     ' ! 6 ,J4   L  P - JH     ' ! 6 .J4   L  9P/4x! 1Cx!; J4   L  :5P24x! 1Cx!; J4   L  :P34x! 1Cx!; J4   L  :  "  O 402A@ @1?:(;4<=L >?@A@BC !D#!E3%!F)!G+H-ICJK  KH LFFFF F F F5 5 5FFFF F F FF 4 4   `@  1 `@ 5' 4    '  '  D4 <'54' 4   ' ' D4 <'  0L7@2M`@NOPQ@?<@   O  @@1    ,   84K  H<- P  ,  M   ,  M  ,  M  ,  M  ,   M  ,   M   <-  PP t !  " 0 P #      P$        %0LM@@NR: %,ST8@UHPVW-.XYZt[\]IA @KF@ @ FF@ F@ @ @ FFFF@ FFF F F @F@FFF@FF@@F@FFFF@FFF@FFF6 |n^@_`abcde   fghij  Lighting3Dj%/mathradcosnorm3v3sinazimuth elevation directional direction writeVec4xyzColorredambientcolorgreenblue intensity specPowershadowpointpositionrange environmentblurshadowDarkness shadowColor viewportWidthviewportHeighttimetableinsertwriteUBOgetPrimaryDirectionsetFromAzimuthElevationaddDirectionaladdPointrgbarequireMath3DnewnewDirectionalnewPointLIGHT_UBO_SIZE *I I I     I  #I  I     3 #   W:ZSI  I  I     I  $  # I  $  I    3 # L 4L A    $   bL4LA    ?i   '   ` D *  ,` D * 4` D * '       r L4   L=  '  A  A  A  ` D  *  ,` D  *  4` D  *    '   r    ' !   '      '      '     L4     L =   '  A  A A  ` D  *  ,` D  *  4` D  *    '   r    '!    '       '       '     4        2   '      &  ` D  *  ,` D  *  4` D  *   '    r    '      '    4        2   '      &  ` D  *  ,` D  *  4` D *  '!    r   '      ' !    ' "#r#$#X%  # |&   '' ` *  ,` * 4` *    '()8*j+ ,   o@`,`4`0@ @@ H@P@T@X@\@`@b@d@f@h@j@l@ !sL4  LJ4  "#4  J4 "# a66 `pD56  !"#$A `pD6'  !()*A `pD7L56/ `p|. 2 } "  0 >I@@@ !$%&'( ffffff?)`p ffffff@N@ ??,@%& ?ɿٿ?%+,- . 6      A 8ЀD0r N@333333??)8Ѐ?  6  ` D0 r0 & )`?$@ "A @@F@F@F@F@@@ FFFFFF@ F@ F6   I  . *@+,-./n@   Gizmo3DjCqnorm3sub3xmathabscross3v3cossinadd3mul3tableinsertyzipairsdirrgbbuffercreatewritef32writeu32 transformVec4visiblenonepositionscaleXYZclampsqrtdraggingdragAxis GizmoShadershaderprint[Gizmo3D] GizmoShader not foundformatblendsrcColor src-alphadstColorone-minus-src-alphacolorOpaddsrcAlphaonedstAlphaalphaOpzeronewvertexfragment vertexLayout colorTargets depthStencilcullModetopology triangle-list sampleCountstride attributes float32x3slotoffset float32x4comparealwayswritepipeline indexCount _axisStart _axisCountsizeusagelenvboindexibouniformubolayoutubosgetBindGroupLayout bindGroup_ubufMat4values hoveredAxis setPipelinesetVertexBufferuint32setIndexBuffer writeMat4 writeVec4 setBindGroup drawIndexed_vbufinitGPUrenderhitTest startDragdragendDragrequireMath3DGpuTypes GPUPipeline GPUBuffer GPUBindGroup       K     I 0                8X* ) ) I   00I 80  U # U # J4 L J4 L J4 L J4 L J4 L J4  L J4  L 98X* ) ) I   00I 80  U # U # J4 L J4 L J4 L J4 L J4 L J4  L J4  L 985!'+ !' !' '+ !J4 L J4 L J4 L J4 L J4 L J4 L 9'0?@-DT! @ @00 80    L ?0@M      K     I 0                8X* ) )  U  I  80# U  I @0#  J4 L J4 L J4 L J4 L J4 L J4  L J4  L 9J4 L J4 L J4 L J4 L J4 L J4  L J4  L ' 8!'+ !J4 L J4 L J4 L 9' '0?@-DT! @ @  80 @0  L ?55555   @ ;@4   U   U              J4   04" J4  0:4R @)  (  8 H) ) '   ')#')G#??'    I  $    $ $ $         ' ) # ' ) G #57 A ;Y  U) I  $ $$$2/' ) #' ) G #" "" "# #!! !! ! ###$!"#$$!""#D. X  ## !" #"!"#$ !#$""##%!!#&""!$%&I$ #`# #  # :$& .>?? A  !X"`e#$1eP6   y   x   {           I 8Ѐ   $ $ $          I 8Ѐ   $ $ $)3)" " ##! ##!$ U #$ 8Ѐ& .> @:0yE> e#$ ` s  @566  7 6  6  J4   XP 6 #  5 6 '5 6 ,607  J&7   6 5   s M"6  7 8 9  6< ?Ѓ:  @ @ 3   6B ?Ѓ :  C C  3   6F  G 6 6J SKH56LG=7IzMN%&' @()*+,-./01234   5     XP6789:;<=>? !"@<@A$%&BCD()*+*E?(@-).+/FGH1234IJKLMN:;OЃPQ:;ART@S:D;ETUVHIW)*=X 4rz   (        #   dr8*    @  9IPRTXYZ[(\]^_`q= ףp?abHcLKd;6   |P  |5757 p  O   g!?\#$IPRTXYeJKLfghijk    |UA @ @@F@F56       6        6       7@FFFF@ @ @ FF@ @ F@@FFFF6%@&FF@'FFFF F F F6)(*l@mnopqffffff?)\(?  333333?  ?   ?@ @ !"#$  6(    PBRWireShaderjzBTSR u u    .  r**P+ <vs_mainmain #version 300 es precision highp float; precision highp int; struct WireUBO { mat4x4 mvp; mat4x4 model; vec4 lightAO; vec4 pad1_; vec4 pad2_; vec4 pad3_; vec4 wireCol; vec4 params; vec4 pad4_; vec4 pad5_; }; struct VIn { vec3 posA; vec3 posB; vec3 nrmA; vec3 nrmB; float corner; }; struct VOut { vec4 pos; vec4 col; float viewZ; }; struct FOut { vec4 color; float depth; }; layout(std140) uniform WireUBO_block_0Vertex { WireUBO _group_0_binding_0_vs; }; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec3 _p2vs_location1; layout(location = 2) in vec3 _p2vs_location2; layout(location = 3) in vec3 _p2vs_location3; layout(location = 4) in float _p2vs_location4; smooth out vec4 _vs2fs_location0; smooth out float _vs2fs_location1; void main() { VIn v = VIn(_p2vs_location0, _p2vs_location1, _p2vs_location2, _p2vs_location3, _p2vs_location4); bool local = false; VOut out_ = VOut(vec4(0.0), vec4(0.0), 0.0); float thickness = _group_0_binding_0_vs.params.x; float screenW = _group_0_binding_0_vs.params.y; float screenH = _group_0_binding_0_vs.params.z; mat4x4 _e15 = _group_0_binding_0_vs.mvp; vec4 clipA = (_e15 * vec4(v.posA, 1.0)); mat4x4 _e22 = _group_0_binding_0_vs.mvp; vec4 clipB = (_e22 * vec4(v.posB, 1.0)); vec2 ndcA = (clipA.xy / vec2(clipA.w)); vec2 ndcB = (clipB.xy / vec2(clipB.w)); float aspect = (screenW / screenH); vec2 edgeRaw = ((ndcB - ndcA) * vec2(aspect, 1.0)); float edgeLen = length(edgeRaw); vec2 edgeSS = ((edgeLen > 0.0001) ? (edgeRaw / vec2(edgeLen)) : vec2(0.0, 1.0)); vec2 perpSS = vec2(-(edgeSS.y), edgeSS.x); vec2 perpNDC = (perpSS * vec2((1.0 / aspect), 1.0)); bool isB = (v.corner >= 2.0); vec4 clip = (isB ? clipB : clipA); if (!((v.corner == 1.0))) { local = (v.corner == 3.0); } else { local = true; } bool _e72 = local; float sign_ = (_e72 ? 1.0 : -1.0); vec2 offset = ((perpNDC * sign_) * (thickness / screenH)); out_.pos = vec4((clip.xy + (offset * clip.w)), clip.z, clip.w); out_.viewZ = clip.w; vec4 _e93 = _group_0_binding_0_vs.wireCol; float _e98 = _group_0_binding_0_vs.wireCol.w; out_.col = vec4(_e93.xyz, _e98); VOut _e100 = out_; gl_Position = _e100.pos; _vs2fs_location0 = _e100.col; _vs2fs_location1 = _e100.viewZ; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmaino#version 300 es precision highp float; precision highp int; struct WireUBO { mat4x4 mvp; mat4x4 model; vec4 lightAO; vec4 pad1_; vec4 pad2_; vec4 pad3_; vec4 wireCol; vec4 params; vec4 pad4_; vec4 pad5_; }; struct VIn { vec3 posA; vec3 posB; vec3 nrmA; vec3 nrmB; float corner; }; struct VOut { vec4 pos; vec4 col; float viewZ; }; struct FOut { vec4 color; float depth; }; smooth in vec4 _vs2fs_location0; smooth in float _vs2fs_location1; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1); FOut o = FOut(vec4(0.0), 0.0); o.color = f.col; o.depth = f.viewZ; FOut _e6 = o; _fs2p_location0 = _e6.color; _fs2p_location1 = _e6.depth; return; } WireUBO_block_0Vertexvs_mainvs_mainfs_mainfs_main // language: metal1.0 #include #include using metal::uint; struct WireUBO { metal::float4x4 mvp; metal::float4x4 model; metal::float4 lightAO; metal::float4 pad1_; metal::float4 pad2_; metal::float4 pad3_; metal::float4 wireCol; metal::float4 params; metal::float4 pad4_; metal::float4 pad5_; }; struct VIn { metal::float3 posA; metal::float3 posB; metal::float3 nrmA; metal::packed_float3 nrmB; float corner; }; struct VOut { metal::float4 pos; metal::float4 col; float viewZ; char _pad3[12]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; struct vs_mainInput { metal::float3 posA [[attribute(0)]]; metal::float3 posB [[attribute(1)]]; metal::float3 nrmA [[attribute(2)]]; metal::float3 nrmB [[attribute(3)]]; float corner [[attribute(4)]]; }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float4 col [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; vertex vs_mainOutput vs_main( vs_mainInput varyings [[stage_in]] , constant WireUBO& u [[buffer(0)]] ) { const VIn v = { varyings.posA, varyings.posB, varyings.nrmA, varyings.nrmB, varyings.corner }; bool local = {}; VOut out = {}; float thickness = u.params.x; float screenW = u.params.y; float screenH = u.params.z; metal::float4x4 _e15 = u.mvp; metal::float4 clipA = _e15 * metal::float4(v.posA, 1.0); metal::float4x4 _e22 = u.mvp; metal::float4 clipB = _e22 * metal::float4(v.posB, 1.0); metal::float2 ndcA = clipA.xy / metal::float2(clipA.w); metal::float2 ndcB = clipB.xy / metal::float2(clipB.w); float aspect = screenW / screenH; metal::float2 edgeRaw = (ndcB - ndcA) * metal::float2(aspect, 1.0); float edgeLen = metal::length(edgeRaw); metal::float2 edgeSS = (edgeLen > 0.0001) ? (edgeRaw / metal::float2(edgeLen)) : metal::float2(0.0, 1.0); metal::float2 perpSS = metal::float2(-(edgeSS.y), edgeSS.x); metal::float2 perpNDC = perpSS * metal::float2(1.0 / aspect, 1.0); bool isB = v.corner >= 2.0; metal::float4 clip = isB ? clipB : clipA; if (!((v.corner == 1.0))) { local = v.corner == 3.0; } else { local = true; } bool _e72 = local; float sign = _e72 ? 1.0 : -1.0; metal::float2 offset = (perpNDC * sign) * (thickness / screenH); out.pos = metal::float4(clip.xy + (offset * clip.w), clip.z, clip.w); out.viewZ = clip.w; metal::float4 _e93 = u.wireCol; float _e98 = u.wireCol.w; out.col = metal::float4(_e93.xyz, _e98); VOut _e100 = out; const auto _tmp = _e100; return vs_mainOutput { _tmp.pos, _tmp.col, _tmp.viewZ }; } struct fs_mainInput { metal::float4 col [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] ) { const VOut f = { pos, varyings_1.col, varyings_1.viewZ }; FOut o = {}; o.color = f.col; o.depth = f.viewZ; FOut _e6 = o; const auto _tmp = _e6; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmainP struct _6 { row_major float4x4 _m0; row_major float4x4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float3 _m0; float3 _m1; float3 _m2; float3 _m3; float _m4; }; struct _9 { float4 _m0; float4 _m1; float _m2; }; struct _10 { float4 _m0; float _m1; }; static const _9 _54 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _14_13 : register(b0) { _6 _13_m0 : packoffset(c0); }; static float4 gl_Position; static float3 _18; static float3 _21; static float3 _23; static float3 _25; static float _27; static float4 _32; static float _33; struct SPIRV_Cross_Input { float3 _18 : TEXCOORD0; float3 _21 : TEXCOORD1; float3 _23 : TEXCOORD2; float3 _25 : TEXCOORD3; float _27 : TEXCOORD4; }; struct SPIRV_Cross_Output { float4 _32 : TEXCOORD0; float _33 : TEXCOORD1; float4 gl_Position : SV_Position; }; void vert_main() { bool _49 = false; _9 _52 = _54; _8 _17 = { _18, _21, _23, _25, _27 }; float4 _72 = mul(float4(_17._m0, 1.0f), _13_m0._m0); float4 _77 = mul(float4(_17._m1, 1.0f), _13_m0._m0); float _86 = _13_m0._m7.y / _13_m0._m7.z; float2 _89 = ((_77.xy / float2(_77.ww)) - (_72.xy / float2(_72.ww))) * float2(_86, 1.0f); float _90 = length(_89); float2 _92 = _89 / float2(_90, _90); bool _93 = _90 > 9.9999997473787516355514526367188e-05f; bool2 _96 = bool2(_93, _93); float2 _94 = float2(_96.x ? _92.x : float2(0.0f, 1.0f).x, _96.y ? _92.y : float2(0.0f, 1.0f).y); bool _105 = _17._m4 >= 2.0f; bool4 _108 = bool4(_105, _105, _105, _105); float4 _106 = float4(_108.x ? _77.x : _72.x, _108.y ? _77.y : _72.y, _108.z ? _77.z : _72.z, _108.w ? _77.w : _72.w); if (!(_17._m4 == 1.0f)) { _49 = _17._m4 == 3.0f; } else { _49 = true; } _52._m0 = float4(_106.xy + ((((float2(-_94.y, _94.x) * float2(1.0f / _86, 1.0f)) * (_49 ? 1.0f : (-1.0f))) * (_13_m0._m7.x / _13_m0._m7.z)) * _106.w), _106.zw); _52._m2 = _106.w; _52._m1 = float4(_13_m0._m6.xyz, _13_m0._m6.w); gl_Position = _52._m0; _32 = _52._m1; _33 = _52._m2; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { _18 = stage_input._18; _21 = stage_input._21; _23 = stage_input._23; _25 = stage_input._25; _27 = stage_input._27; vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._32 = _32; stage_output._33 = _33; return stage_output; } fs_mainmain struct _6 { row_major float4x4 _m0; row_major float4x4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float3 _m0; float3 _m1; float3 _m2; float3 _m3; float _m4; }; struct _9 { float4 _m0; float4 _m1; float _m2; }; struct _10 { float4 _m0; float _m1; }; static const _10 _31 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; static float4 gl_FragCoord; static float4 _18; static float _20; static float4 _23; static float _25; struct SPIRV_Cross_Input { float4 _18 : TEXCOORD0; float _20 : TEXCOORD1; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _23 : SV_Target0; float _25 : SV_Target1; }; void frag_main() { _10 _29 = _31; _9 _14 = { gl_FragCoord, _18, _20 }; _29._m0 = _14._m1; _29._m1 = _14._m2; _23 = _29._m0; _25 = _29._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _18 = stage_input._18; _20 = stage_input._20; frag_main(); SPIRV_Cross_Output stage_output; stage_output._23 = _23; stage_output._25 = _25; return stage_output; } HSLT_6 @_14_14_13vs_mainvs_mainfs_mainfs_main# GLSL.std.450 #vs_main ! fs_mainH#HHH#@HHH#H#H#H#H#H#H#H #H#H#H# H#0H#<H #H #H # H #H #G "G !GH#GGGGGG G G!G GGGG       ;  ;;;; ; ;;  ";"!!$ %' +'&+)?+*, +*)+,8+-@) .+/@@+0 2 . 3 5 . 6 8 9+':+'=+'@ C_ k  z +'+' ;;;;;"  . 6#$;213;546=====PA%( &77A9;(:&=<;A9>(:==?>A9A(:@=BAACD(&=EDQFPGF)HEGACI(&=JIQKPLK)MJLO NHHQOHP POO QNPO RMMQSMP TSS URTV?B WUQP XV) YWX ZBYP [ZZ \Y[ ]Z,P_`]] ^`\+Qa^baQc^P dbce)VP fe) gdfQh ih-PkliiiijlMHQm nm) onpoqrqQs ts/>1tpr>1.pp= u1vu)0 wgvx<B ywxO {jjQ|j }y| ~{}QjQjP~Az4&>QjA4@>A8(=OA9(=PAz4=>= 4Q>A"==>Q> Q>!86$;===P QAz&>QA=>= Q>Q>8Grid3DjE GridShadershaderprint[Grid3D] GridShader not foundformatblendsrcColor src-alphadstColorone-minus-src-alphacolorOpaddsrcAlphaonedstAlphaalphaOpzerotableinsertnewvertexfragment vertexLayout colorTargets depthStencilcullModenonetopology triangle-list sampleCountcomparealwayswritepipelinesizeusageuniformubobuffercreate_ubuflayoutubosgetBindGroupLayoutslot bindGroupvisibleinvert writeMat4 writeVec4xyz gridScale majorSpacing minorSpacing fadeStartfadeEnd setPipeline setBindGroupdrawinitGPUrenderrequireMath3DGpuTypes GPUPipeline GPUBuffer GPUBindGroup f  @566  7 6  6  J4   XP 6 #  5   6 (   s M") 6 ./ 2 `3)  6 6  S7  45 6 : / 07  5  z;  < @           XP !" !$%&'"#X@$%*+,-&'()*+45,-890.* Kz.          @    6      P                /"&.)0123456789:!;<=T6 p /7?8?9 @:9@6"&.)>?     k A @ @@FFF@F@ FF6   @@ABCDE FramebufferPoolpostfxj ctxwidthmathfloormaxheightformat gpuCanvascanvasnew renderTargetpingpongviewpingViewpongViewsamplerminlinearmagwrapU clamp-to-edgewrapVensuredisposerequireGpuTypes GPUTexture GPUSamplerBIYfI   J  I   J  6  b  6  6``  6        /*I  J  I  J  b    Db   M  )6 fI  <J DI  <J D o         <DVA @5u@FF@F@@FFF6   @   HdrSharedjenabledshowBackground imageNameopacity intensityyawpitchrequireGpuTypesdefaultsgetset getVersion setEnvView getEnvViewclaimrelease isClaimed 6  ?  3 ' ?7 < @ D  H N R0A @@6FFFF F F F F F6_S E Q e <   @ ?       HdrSkyjYnewwidthheightformat rgba8unormbuffercreatewriteu8datauploadviewpipelineubosamplerlayoutubostexturessamplersgetBindGroupLayoutslot bindGroup_envView HdrSkyShadershaderprint[HdrSky] HdrSkyShader not foundblendsrcColor src-alphadstColorone-minus-src-alphacolorOpaddsrcAlphaonedstAlphaalphaOpzerotableinsertvertexfragment vertexLayout colorTargets depthStencilcullModenonetopology triangle-list sampleCountcomparealwayswritesizeusageuniform_ubufminlinearmagmipmapwrapUrepeatwrapV clamp-to-edge _fallback _fallbackViewMat4 fromRotationY fromRotationXinvert writeMat4 writeVec4xyz setPipeline setBindGroupdrawinitGPUrenderrequireMath3DGpuTypes GPUTexture GPUBindGroup GPUPipeline GPUBuffer GPUSampler4 6  p( ?      @ @ !"#$%   &   '(XP)*+,-./012 !"345$%&' 6d@78*+,- 9:;<=>?@A45657589:;BCH   #DEF z   a      M        z .  p  (p#      @   P         9CGDE pF(pHIJKL5MNO~6 p     9BCPQ  (A @ @5u@ F@ F@ FFFFF@ @ FF@ F F 6   R@STUVWXYClonerControllerj enabledmodecountscalespacingXspacingYspacingZradius radialArc radialFacinggridRowsgridCols gridDepthgridGapXgridGapYgridGapZstepRotY stepScalemathfloorsetclaim_claimedinitupdateadvancerequire ClonerShared T6-'I  T@-!!QQ  * * k k   M M   ll S      ?T@1 e I P U 6   @?@@ v@            ZA @@F@FF@F@F@FFF@ GridShaderjzBTSR W W m p  4J ) ** <vs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { mat4x4 vpInv; vec4 camParams; vec4 fadeParams; }; struct VOut { vec4 pos; vec2 ndc; }; struct FOut { vec4 color; float depth; }; smooth out vec2 _vs2fs_location0; void main() { uint vi = uint(gl_VertexID); float x = 0.0; float y = 0.0; VOut out_ = VOut(vec4(0.0), vec2(0.0)); x = ((float(((vi << 1u) & 2u)) * 2.0) - 1.0); y = ((float((vi & 2u)) * 2.0) - 1.0); if ((vi == 0u)) { x = -1.0; y = -1.0; } if ((vi == 1u)) { x = 3.0; y = -1.0; } if ((vi == 2u)) { x = -1.0; y = 3.0; } float _e33 = x; float _e34 = y; out_.pos = vec4(_e33, _e34, 0.0, 1.0); float _e39 = x; float _e40 = y; out_.ndc = vec2(_e39, _e40); VOut _e42 = out_; gl_Position = _e42.pos; _vs2fs_location0 = _e42.ndc; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain: #version 300 es precision highp float; precision highp int; struct UBO { mat4x4 vpInv; vec4 camParams; vec4 fadeParams; }; struct VOut { vec4 pos; vec2 ndc; }; struct FOut { vec4 color; float depth; }; layout(std140) uniform UBO_block_0Fragment { UBO _group_0_binding_0_fs; }; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; float gridLine(float coord, float spacing) { float scaled = (coord / spacing); float _e9 = fwidth(scaled); float d = (abs((fract((scaled - 0.5)) - 0.5)) / _e9); return (1.0 - clamp(d, 0.0, 1.0)); } void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); FOut o = FOut(vec4(0.0), 0.0); mat4x4 _e3 = _group_0_binding_0_fs.vpInv; vec4 nearH = (_e3 * vec4(f.ndc.x, f.ndc.y, 0.0, 1.0)); mat4x4 _e14 = _group_0_binding_0_fs.vpInv; vec4 farH = (_e14 * vec4(f.ndc.x, f.ndc.y, 1.0, 1.0)); vec3 nearW = (nearH.xyz / vec3(nearH.w)); vec3 farW = (farH.xyz / vec3(farH.w)); vec3 rd = (farW - nearW); if ((abs(rd.y) < 1e-5)) { discard; } float t = (-(nearW.y) / rd.y); if ((t < 0.0)) { discard; } vec3 world = (nearW + (t * rd)); float gs = _group_0_binding_0_fs.camParams.w; float wx = (world.x / gs); float wz = (world.z / gs); float major = _group_0_binding_0_fs.fadeParams.x; float minor = _group_0_binding_0_fs.fadeParams.y; float fadeS = _group_0_binding_0_fs.fadeParams.z; float fadeE = _group_0_binding_0_fs.fadeParams.w; float _e68 = gridLine(wx, major); float _e69 = gridLine(wz, major); float lineMaj = max(_e68, _e69); float _e71 = gridLine(wx, minor); float _e72 = gridLine(wz, minor); float lineMin = max(_e71, _e72); float line = max(lineMaj, (lineMin * 0.4)); vec4 _e79 = _group_0_binding_0_fs.camParams; vec3 camPos = _e79.xyz; float dist = length((world - camPos)); float fade = (1.0 - clamp(((dist - fadeS) / (fadeE - fadeS)), 0.0, 1.0)); float alpha = (line * fade); if ((alpha < 0.01)) { discard; } float bright = mix(0.35, 0.65, lineMaj); o.color = vec4(bright, bright, bright, (alpha * 0.8)); o.depth = dist; FOut _e103 = o; _fs2p_location0 = _e103.color; _fs2p_location1 = _e103.depth; return; } UBO_block_0Fragmentvs_mainvs_mainfs_mainfs_main // language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4x4 vpInv; metal::float4 camParams; metal::float4 fadeParams; }; struct VOut { metal::float4 pos; metal::float2 ndc; char _pad2[8]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; float gridLine( float coord, float spacing ) { float scaled = coord / spacing; float _e9 = metal::fwidth(scaled); float d = metal::abs(metal::fract(scaled - 0.5) - 0.5) / _e9; return 1.0 - metal::clamp(d, 0.0, 1.0); } struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 ndc [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; x = (static_cast((vi << 1u) & 2u) * 2.0) - 1.0; y = (static_cast(vi & 2u) * 2.0) - 1.0; if (vi == 0u) { x = -1.0; y = -1.0; } if (vi == 1u) { x = 3.0; y = -1.0; } if (vi == 2u) { x = -1.0; y = 3.0; } float _e33 = x; float _e34 = y; out.pos = metal::float4(_e33, _e34, 0.0, 1.0); float _e39 = x; float _e40 = y; out.ndc = metal::float2(_e39, _e40); VOut _e42 = out; const auto _tmp = _e42; return vs_mainOutput { _tmp.pos, _tmp.ndc }; } struct fs_mainInput { metal::float2 ndc [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] , constant UBO& u [[buffer(0)]] ) { const VOut f = { pos, varyings_1.ndc }; FOut o = {}; metal::float4x4 _e3 = u.vpInv; metal::float4 nearH = _e3 * metal::float4(f.ndc.x, f.ndc.y, 0.0, 1.0); metal::float4x4 _e14 = u.vpInv; metal::float4 farH = _e14 * metal::float4(f.ndc.x, f.ndc.y, 1.0, 1.0); metal::float3 nearW = nearH.xyz / metal::float3(nearH.w); metal::float3 farW = farH.xyz / metal::float3(farH.w); metal::float3 rd = farW - nearW; if (metal::abs(rd.y) < 0.00001) { metal::discard_fragment(); } float t = -(nearW.y) / rd.y; if (t < 0.0) { metal::discard_fragment(); } metal::float3 world = nearW + (t * rd); float gs = u.camParams.w; float wx = world.x / gs; float wz = world.z / gs; float major = u.fadeParams.x; float minor = u.fadeParams.y; float fadeS = u.fadeParams.z; float fadeE = u.fadeParams.w; float _e68 = gridLine(wx, major); float _e69 = gridLine(wz, major); float lineMaj = metal::max(_e68, _e69); float _e71 = gridLine(wx, minor); float _e72 = gridLine(wz, minor); float lineMin = metal::max(_e71, _e72); float line = metal::max(lineMaj, lineMin * 0.4); metal::float4 _e79 = u.camParams; metal::float3 camPos = _e79.xyz; float dist = metal::length(world - camPos); float fade = 1.0 - metal::clamp((dist - fadeS) / (fadeE - fadeS), 0.0, 1.0); float alpha = line * fade; if (alpha < 0.01) { metal::discard_fragment(); } float bright = metal::mix(0.35, 0.65, lineMaj); o.color = metal::float4(bright, bright, bright, alpha * 0.8); o.depth = dist; FOut _e103 = o; const auto _tmp = _e103; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmainOstruct _6 { row_major float4x4 _m0; float4 _m1; float4 _m2; }; struct _8 { float4 _m0; float2 _m1; }; struct _10 { float4 _m0; float _m1; }; static const _8 _36 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _17; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _17 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _29 = 0.0f; float _32 = 0.0f; _8 _34 = _36; _29 = (float((uint(gl_VertexIndex) << 1u) & 2u) * 2.0f) - 1.0f; _32 = (float(uint(gl_VertexIndex) & 2u) * 2.0f) - 1.0f; if (uint(gl_VertexIndex) == 0u) { _29 = -1.0f; _32 = -1.0f; } if (uint(gl_VertexIndex) == 1u) { _29 = 3.0f; _32 = -1.0f; } if (uint(gl_VertexIndex) == 2u) { _29 = -1.0f; _32 = 3.0f; } _34._m0 = float4(_29, _32, 0.0f, 1.0f); _34._m1 = float2(_29, _32); gl_Position = _34._m0; _17 = _34._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._17 = _17; return stage_output; } fs_mainmain5 struct _6 { row_major float4x4 _m0; float4 _m1; float4 _m2; }; struct _8 { float4 _m0; float2 _m1; }; struct _10 { float4 _m0; float _m1; }; static const _10 _57 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _12_11 : register(b0) { _6 _11_m0 : packoffset(c0); }; static float4 gl_FragCoord; static float2 _37; static float4 _40; static float _42; struct SPIRV_Cross_Input { float2 _37 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _40 : SV_Target0; float _42 : SV_Target1; }; float _17(float _15, float _16) { float _23 = _15 / _16; return 1.0f - clamp(abs(frac(_23 - 0.5f) - 0.5f) / fwidth(_23), 0.0f, 1.0f); } void frag_main() { _10 _55 = _57; _8 _33 = { gl_FragCoord, _37 }; float4 _67 = mul(float4(_33._m1.x, _33._m1.y, 0.0f, 1.0f), _11_m0._m0); float4 _75 = mul(float4(_33._m1.x, _33._m1.y, 1.0f, 1.0f), _11_m0._m0); float3 _80 = _67.xyz / float3(_67.www); float3 _85 = (_75.xyz / float3(_75.www)) - _80; if (abs(_85.y) < 9.9999997473787516355514526367188e-06f) { discard; } float _95 = (-_80.y) / _85.y; if (_95 < 0.0f) { discard; } float3 _100 = _80 + (_85 * _95); float _108 = _100.x / _11_m0._m1.w; float _110 = _100.z / _11_m0._m1.w; float _120 = _17(_108, _11_m0._m2.x); float _121 = _17(_110, _11_m0._m2.x); float _122 = max(_120, _121); float _123 = _17(_108, _11_m0._m2.y); float _124 = _17(_110, _11_m0._m2.y); float _132 = length(_100 - _11_m0._m1.xyz); float _138 = max(_122, max(_123, _124) * 0.4000000059604644775390625f) * (1.0f - clamp((_132 - _11_m0._m2.z) / (_11_m0._m2.w - _11_m0._m2.z), 0.0f, 1.0f)); if (_138 < 0.00999999977648258209228515625f) { discard; } float _142 = lerp(0.3499999940395355224609375f, 0.64999997615814208984375f, _122); _55._m0 = float4(_142, _142, _142, _138 * 0.800000011920928955078125f); _55._m1 = _132; _40 = _55._m0; _42 = _55._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _37 = stage_input._37; frag_main(); SPIRV_Cross_Output stage_output; stage_output._40 = _40; stage_output._42 = _42; return stage_output; } HSLT_6`@P_12`_12_11vs_mainvs_mainfs_mainfs_main# GLSL.std.450(vs_main!$& gfs_main_befgH#HHH#@H#PH#H#H #H #G "G !G H #G! *G$ G&G_ GbGeGf       ; !+?++? " ;"! %;%$ ';'&!)+ *+ ++,@+ -+.+/@@ 1.2.4 6.7B L Q X `;`_ c;cb;%e;Xf h+j'7+k>+l #<+m33>+nff&?+oL? q . r t  + 677    +86() ;102;134;657= #!88 9#* :9+p;:<;,=<>0= >#+p?>@?,A@>3ABC#-DCEDE>0.>3.DDBF#*GFHGH>0/>3.GGBI#+JIKJK>0.>3/JJ=M0=N3POMNALP5->PO=R0=S3PTRSAQU5*>UT=V5QWV>$WAXY$*=ZY[Z>Y[Q\V>&\86g)];qpr=a_=dbP^adAhi -ssAtui-=vuQw^QxwQy^QzyP{xz|v{At}i-=~}Q^QQ^QP~O||Q|POQPQ BjQQBAi*=QQAi+-=Ai+*=Ai++=Ai+=99 (99 (k (Ai*=O B +Bl .mnoPALp->A1p*>= pQ>eQ>f8 SceneObjectj ( transform getMatrixrotationxyzMat4 fromRotationZ fromRotationY fromRotationX colorShadowcolorHighlight wireColor wireThickness wireOpacity showWireframeColorrgbanamemeshedges quadEdgesmaterial material3DvisiblegetWorldMatrixgetRotationMatrix buildEdgesindicesbuildQuadEdgesvertsnormsnew fromLegacyrequireMath3D Transform3D Material3DnewWithMaterial3DdefaultMaterial ) ! P  P#  (P# P  P (P-6  ,"  ,]  ,Y    ?Y@,4 3 6 Z.  *  i*    V +    !"?C6 Z.  *  i*  6]]YY++ V +    !   Q $A @ @ @@@@@FFFFFF@ FFFF6    #@$%&!'( Missile3DShaderjtBTSR     ^ 3I G(](P) 9vs_mainmain #version 300 es precision highp float; precision highp int; struct UBO { mat4x4 mvp; mat4x4 rotMat; vec4 light0_; vec4 light1_; vec4 specShine; vec4 eyeAmbient; vec4 colorShadow; vec4 colorHighlight; vec4 wireColor; vec4 wireGlow; }; struct VIn { vec3 pos; vec3 nrm; }; struct VOut { vec4 pos; vec4 color; float viewZ; }; struct FOut { vec4 color; float depth; }; layout(std140) uniform UBO_block_0Vertex { UBO _group_0_binding_0_vs; }; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec3 _p2vs_location1; smooth out vec4 _vs2fs_location0; smooth out float _vs2fs_location1; void main() { VIn v = VIn(_p2vs_location0, _p2vs_location1); VOut out_ = VOut(vec4(0.0), vec4(0.0), 0.0); mat4x4 _e3 = _group_0_binding_0_vs.rotMat; vec3 worldNrm = normalize((_e3 * vec4(v.nrm, 0.0)).xyz); vec4 _e12 = _group_0_binding_0_vs.light0_; vec3 l0dir = normalize(_e12.xyz); vec4 _e17 = _group_0_binding_0_vs.light1_; vec3 l1dir = normalize(_e17.xyz); float _e26 = _group_0_binding_0_vs.light0_.w; float diff0_ = (max(dot(worldNrm, l0dir), 0.0) * _e26); float _e34 = _group_0_binding_0_vs.light1_.w; float diff1_ = (max(dot(worldNrm, l1dir), 0.0) * _e34); vec4 _e38 = _group_0_binding_0_vs.eyeAmbient; vec3 eye = normalize(_e38.xyz); vec3 h0_ = normalize((l0dir + eye)); vec3 h1_ = normalize((l1dir + eye)); float _e51 = _group_0_binding_0_vs.specShine.y; float _e56 = _group_0_binding_0_vs.specShine.x; float spec0_ = (pow(max(dot(worldNrm, h0_), 0.0), _e51) * _e56); float _e64 = _group_0_binding_0_vs.specShine.w; float _e69 = _group_0_binding_0_vs.specShine.z; float spec1_ = (pow(max(dot(worldNrm, h1_), 0.0), _e64) * _e69); float ambient = _group_0_binding_0_vs.eyeAmbient.w; float light = clamp(((diff0_ + diff1_) + ambient), 0.0, 1.0); float spec = (spec0_ + spec1_); vec4 _e83 = _group_0_binding_0_vs.colorShadow; vec4 _e87 = _group_0_binding_0_vs.colorHighlight; vec3 baseColor = mix(_e83.xyz, _e87.xyz, light); vec3 finalColor = clamp((baseColor + vec3(spec)), vec3(0.0), vec3(1.0)); mat4x4 _e101 = _group_0_binding_0_vs.mvp; out_.pos = (_e101 * vec4(v.pos, 1.0)); out_.color = vec4(finalColor, 1.0); float _e112 = out_.pos.w; out_.viewZ = _e112; VOut _e113 = out_; gl_Position = _e113.pos; _vs2fs_location0 = _e113.color; _vs2fs_location1 = _e113.viewZ; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain\#version 300 es precision highp float; precision highp int; struct UBO { mat4x4 mvp; mat4x4 rotMat; vec4 light0_; vec4 light1_; vec4 specShine; vec4 eyeAmbient; vec4 colorShadow; vec4 colorHighlight; vec4 wireColor; vec4 wireGlow; }; struct VIn { vec3 pos; vec3 nrm; }; struct VOut { vec4 pos; vec4 color; float viewZ; }; struct FOut { vec4 color; float depth; }; smooth in vec4 _vs2fs_location0; smooth in float _vs2fs_location1; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1); FOut o = FOut(vec4(0.0), 0.0); o.color = f.color; o.depth = f.viewZ; FOut _e6 = o; _fs2p_location0 = _e6.color; _fs2p_location1 = _e6.depth; return; } UBO_block_0Vertexvs_mainvs_mainfs_mainfs_main3 // language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4x4 mvp; metal::float4x4 rotMat; metal::float4 light0_; metal::float4 light1_; metal::float4 specShine; metal::float4 eyeAmbient; metal::float4 colorShadow; metal::float4 colorHighlight; metal::float4 wireColor; metal::float4 wireGlow; }; struct VIn { metal::float3 pos; metal::float3 nrm; }; struct VOut { metal::float4 pos; metal::float4 color; float viewZ; char _pad3[12]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; struct vs_mainInput { metal::float3 pos [[attribute(0)]]; metal::float3 nrm [[attribute(1)]]; }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float4 color [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; vertex vs_mainOutput vs_main( vs_mainInput varyings [[stage_in]] , constant UBO& u [[buffer(0)]] ) { const VIn v = { varyings.pos, varyings.nrm }; VOut out = {}; metal::float4x4 _e3 = u.rotMat; metal::float3 worldNrm = metal::normalize((_e3 * metal::float4(v.nrm, 0.0)).xyz); metal::float4 _e12 = u.light0_; metal::float3 l0dir = metal::normalize(_e12.xyz); metal::float4 _e17 = u.light1_; metal::float3 l1dir = metal::normalize(_e17.xyz); float _e26 = u.light0_.w; float diff0_ = metal::max(metal::dot(worldNrm, l0dir), 0.0) * _e26; float _e34 = u.light1_.w; float diff1_ = metal::max(metal::dot(worldNrm, l1dir), 0.0) * _e34; metal::float4 _e38 = u.eyeAmbient; metal::float3 eye = metal::normalize(_e38.xyz); metal::float3 h0_ = metal::normalize(l0dir + eye); metal::float3 h1_ = metal::normalize(l1dir + eye); float _e51 = u.specShine.y; float _e56 = u.specShine.x; float spec0_ = metal::pow(metal::max(metal::dot(worldNrm, h0_), 0.0), _e51) * _e56; float _e64 = u.specShine.w; float _e69 = u.specShine.z; float spec1_ = metal::pow(metal::max(metal::dot(worldNrm, h1_), 0.0), _e64) * _e69; float ambient = u.eyeAmbient.w; float light = metal::clamp((diff0_ + diff1_) + ambient, 0.0, 1.0); float spec = spec0_ + spec1_; metal::float4 _e83 = u.colorShadow; metal::float4 _e87 = u.colorHighlight; metal::float3 baseColor = metal::mix(_e83.xyz, _e87.xyz, light); metal::float3 finalColor = metal::clamp(baseColor + metal::float3(spec), metal::float3(0.0), metal::float3(1.0)); metal::float4x4 _e101 = u.mvp; out.pos = _e101 * metal::float4(v.pos, 1.0); out.color = metal::float4(finalColor, 1.0); float _e112 = out.pos.w; out.viewZ = _e112; VOut _e113 = out; const auto _tmp = _e113; return vs_mainOutput { _tmp.pos, _tmp.color, _tmp.viewZ }; } struct fs_mainInput { metal::float4 color [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] ) { const VOut f = { pos, varyings_1.color, varyings_1.viewZ }; FOut o = {}; o.color = f.color; o.depth = f.viewZ; FOut _e6 = o; const auto _tmp = _e6; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmainstruct _6 { row_major float4x4 _m0; row_major float4x4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float3 _m0; float3 _m1; }; struct _9 { float4 _m0; float4 _m1; float _m2; }; struct _10 { float4 _m0; float _m1; }; static const _9 _38 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _12_11 : register(b0) { _6 _11_m0 : packoffset(c0); }; static float4 gl_Position; static float3 _16; static float3 _19; static float4 _23; static float _24; struct SPIRV_Cross_Input { float3 _16 : TEXCOORD0; float3 _19 : TEXCOORD1; }; struct SPIRV_Cross_Output { float4 _23 : TEXCOORD0; float _24 : TEXCOORD1; float4 gl_Position : SV_Position; }; void vert_main() { _9 _36 = _38; _8 _15 = { _16, _19 }; float3 _48 = normalize(mul(float4(_15._m1, 0.0f), _11_m0._m1).xyz); float3 _54 = normalize(_11_m0._m2.xyz); float3 _59 = normalize(_11_m0._m3.xyz); float3 _75 = normalize(_11_m0._m5.xyz); float _101 = clamp(((max(dot(_48, _54), 0.0f) * _11_m0._m2.w) + (max(dot(_48, _59), 0.0f) * _11_m0._m3.w)) + _11_m0._m5.w, 0.0f, 1.0f); float _102 = (pow(max(dot(_48, normalize(_54 + _75)), 0.0f), _11_m0._m4.y) * _11_m0._m4.x) + (pow(max(dot(_48, normalize(_59 + _75)), 0.0f), _11_m0._m4.w) * _11_m0._m4.z); _36._m0 = mul(float4(_15._m0, 1.0f), _11_m0._m0); _36._m1 = float4(clamp(lerp(_11_m0._m6.xyz, _11_m0._m7.xyz, float3(_101, _101, _101)) + float3(_102, _102, _102), float3(0.0f, 0.0f, 0.0f), float3(1.0f, 1.0f, 1.0f)), 1.0f); _36._m2 = _36._m0.w; gl_Position = _36._m0; _23 = _36._m1; _24 = _36._m2; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { _16 = stage_input._16; _19 = stage_input._19; vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._23 = _23; stage_output._24 = _24; return stage_output; } fs_mainmainstruct _6 { row_major float4x4 _m0; row_major float4x4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float3 _m0; float3 _m1; }; struct _9 { float4 _m0; float4 _m1; float _m2; }; struct _10 { float4 _m0; float _m1; }; static const _10 _29 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; static float4 gl_FragCoord; static float4 _16; static float _18; static float4 _21; static float _23; struct SPIRV_Cross_Input { float4 _16 : TEXCOORD0; float _18 : TEXCOORD1; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _21 : SV_Target0; float _23 : SV_Target1; }; void frag_main() { _10 _27 = _29; _9 _12 = { gl_FragCoord, _16, _18 }; _27._m0 = _12._m1; _27._m1 = _12._m2; _21 = _27._m0; _23 = _27._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _16 = stage_input._16; _18 = stage_input._18; frag_main(); SPIRV_Cross_Output stage_output; stage_output._21 = _21; stage_output._23 = _23; return stage_output; } HSLT_6 @_12_12_11vs_mainvs_mainfs_mainfs_main# GLSL.std.450 vs_main fs_mainH#HHH#@HHH#H#H#H#H#H#H#H #H#H#H #H #H # H #H #G "G !G H #GGG GGG GGGG        ;  ;; ;; ;!  ++ +!?," ,#!!! % . & (+) 1+2+7 >+G+R+g+k t } ;; ;;;  . 6;%$&==PA ''A(*)=+*Q,P-, .+-O/.. 0E/A132=43O544 6E5A187=98O:99 ;E:<06 =(< A>?27=@?A=@B0; C(B A>D77=EDFCEA1HG=IHOJII KEJL6K MELN;K OENP0M Q(P A>SR)=TS UQTA>VR=WVXUWY0O Z(Y A>[R7=\[ ]Z\A>^R2=_^`]_A>aG7=bacAFdcb e+d !fX`A1hg=ihOjiiA1lk=mlOnmmPpeee o.jnpPqfffroq s+r"#A(u=vuQwPxw!yvxAtz$>zyP{s!At|$)>|{A}~$7=~A}$2>= $Q>A)=>Q>Q>86;===P QAt>QA})>= Q>Q>8 DOFCompositejMissile3DWireShaderjQBTSR    Z p iP[ *(vs_mainmainN#version 300 es precision highp float; precision highp int; struct UBO { mat4x4 mvp; mat4x4 rotMat; vec4 light0_; vec4 light1_; vec4 specShine; vec4 eyeAmbient; vec4 colorShadow; vec4 colorHighlight; vec4 wireColor; vec4 wireGlow; }; struct VIn { vec3 pos; vec3 nrm; float corner; }; struct VOut { vec4 pos; vec4 color; float viewZ; }; struct FOut { vec4 color; float depth; }; layout(std140) uniform UBO_block_0Vertex { UBO _group_0_binding_0_vs; }; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec3 _p2vs_location1; layout(location = 2) in float _p2vs_location2; smooth out vec4 _vs2fs_location0; smooth out float _vs2fs_location1; void main() { VIn v = VIn(_p2vs_location0, _p2vs_location1, _p2vs_location2); VOut out_ = VOut(vec4(0.0), vec4(0.0), 0.0); mat4x4 _e5 = _group_0_binding_0_vs.mvp; out_.pos = (_e5 * vec4(v.pos, 1.0)); vec4 _e13 = _group_0_binding_0_vs.wireColor; float _e18 = _group_0_binding_0_vs.wireColor.w; out_.color = vec4(_e13.xyz, _e18); float _e23 = out_.pos.w; out_.viewZ = _e23; VOut _e24 = out_; gl_Position = _e24.pos; _vs2fs_location0 = _e24.color; _vs2fs_location1 = _e24.viewZ; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmainn#version 300 es precision highp float; precision highp int; struct UBO { mat4x4 mvp; mat4x4 rotMat; vec4 light0_; vec4 light1_; vec4 specShine; vec4 eyeAmbient; vec4 colorShadow; vec4 colorHighlight; vec4 wireColor; vec4 wireGlow; }; struct VIn { vec3 pos; vec3 nrm; float corner; }; struct VOut { vec4 pos; vec4 color; float viewZ; }; struct FOut { vec4 color; float depth; }; smooth in vec4 _vs2fs_location0; smooth in float _vs2fs_location1; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1); FOut o = FOut(vec4(0.0), 0.0); o.color = f.color; o.depth = f.viewZ; FOut _e6 = o; _fs2p_location0 = _e6.color; _fs2p_location1 = _e6.depth; return; } UBO_block_0Vertexvs_mainvs_mainfs_mainfs_main/// language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4x4 mvp; metal::float4x4 rotMat; metal::float4 light0_; metal::float4 light1_; metal::float4 specShine; metal::float4 eyeAmbient; metal::float4 colorShadow; metal::float4 colorHighlight; metal::float4 wireColor; metal::float4 wireGlow; }; struct VIn { metal::float3 pos; metal::packed_float3 nrm; float corner; }; struct VOut { metal::float4 pos; metal::float4 color; float viewZ; char _pad3[12]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; struct vs_mainInput { metal::float3 pos [[attribute(0)]]; metal::float3 nrm [[attribute(1)]]; float corner [[attribute(2)]]; }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float4 color [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; vertex vs_mainOutput vs_main( vs_mainInput varyings [[stage_in]] , constant UBO& u [[buffer(0)]] ) { const VIn v = { varyings.pos, varyings.nrm, varyings.corner }; VOut out = {}; metal::float4x4 _e5 = u.mvp; out.pos = _e5 * metal::float4(v.pos, 1.0); metal::float4 _e13 = u.wireColor; float _e18 = u.wireColor.w; out.color = metal::float4(_e13.xyz, _e18); float _e23 = out.pos.w; out.viewZ = _e23; VOut _e24 = out; const auto _tmp = _e24; return vs_mainOutput { _tmp.pos, _tmp.color, _tmp.viewZ }; } struct fs_mainInput { metal::float4 color [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] ) { const VOut f = { pos, varyings_1.color, varyings_1.viewZ }; FOut o = {}; o.color = f.color; o.depth = f.viewZ; FOut _e6 = o; const auto _tmp = _e6; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmainstruct _6 { row_major float4x4 _m0; row_major float4x4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float3 _m0; float3 _m1; float _m2; }; struct _9 { float4 _m0; float4 _m1; float _m2; }; struct _10 { float4 _m0; float _m1; }; static const _9 _38 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _12_11 : register(b0) { _6 _11_m0 : packoffset(c0); }; static float4 gl_Position; static float3 _16; static float3 _19; static float _21; static float4 _26; static float _27; struct SPIRV_Cross_Input { float3 _16 : TEXCOORD0; float3 _19 : TEXCOORD1; float _21 : TEXCOORD2; }; struct SPIRV_Cross_Output { float4 _26 : TEXCOORD0; float _27 : TEXCOORD1; float4 gl_Position : SV_Position; }; void vert_main() { _9 _36 = _38; _8 _15 = { _16, _19, _21 }; _36._m0 = mul(float4(_15._m0, 1.0f), _11_m0._m0); _36._m1 = float4(_11_m0._m8.xyz, _11_m0._m8.w); _36._m2 = _36._m0.w; gl_Position = _36._m0; _26 = _36._m1; _27 = _36._m2; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { _16 = stage_input._16; _19 = stage_input._19; _21 = stage_input._21; vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._26 = _26; stage_output._27 = _27; return stage_output; } fs_mainmainstruct _6 { row_major float4x4 _m0; row_major float4x4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _8 { float3 _m0; float3 _m1; float _m2; }; struct _9 { float4 _m0; float4 _m1; float _m2; }; struct _10 { float4 _m0; float _m1; }; static const _10 _29 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; static float4 gl_FragCoord; static float4 _16; static float _18; static float4 _21; static float _23; struct SPIRV_Cross_Input { float4 _16 : TEXCOORD0; float _18 : TEXCOORD1; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _21 : SV_Target0; float _23 : SV_Target1; }; void frag_main() { _10 _27 = _29; _9 _12 = { gl_FragCoord, _16, _18 }; _27._m0 = _12._m1; _27._m1 = _12._m2; _21 = _27._m0; _23 = _27._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _16 = stage_input._16; _18 = stage_input._18; frag_main(); SPIRV_Cross_Output stage_output; stage_output._21 = _21; stage_output._23 = _23; return stage_output; } HSLT_6 @_12_12_11vs_mainvs_mainfs_mainfs_main0 #_ GLSL.std.450 vs_main Sfs_mainJMOQRSH#HHH#@HHH#H#H#H#H#H#H#H #H#H#H#H #H #H # H #H #G "G !G H #GGGG GGGJ GMGOGQGR        ;  ;; ; ;; ;! ! +! +#? % . & ( ) 0+!1 5+!6+!: <+!? K;KJ;KM;O;Q;R U . V6;%$&===PA" ''A)*" =+*Q,P-,#.+-A(/$ >/.A02"1=32O433A57"16=87P948A(;$:>;9A<=$ 6=>=A<@$?>@>= A$QBA>BAC:=DCED>CEQFA>FQGA>G86SH;UTV=LJ=NM=POP ILNPWWQXIA(YT >YXQZIA<[T:>[Z= \TQ]\>Q]Q^\>R^8MaterialSharedjrequire Material3DshowDotsdotSizedotColordotGlowdotGlowIntensitydotGlowSoftnessdotModedotCountColorrgba getMaterial setMaterialgetInputValuessetInputValuesclaimrelease isClaimed setLighting getLightingbumpPresetVersiongetPresetVersionsetDotSettingsgetDotSettings B G L Q  Z a f n s ' ?{   NA @26 H  P P RF F F F F FFFFFF F F F F6!r f   e <1Q] "@@ @(@     H     BloomCompositejEBTSR  @L@* j@ \@F ="@ vs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; smooth out vec2 _vs2fs_location0; void main() { uint vi = uint(gl_VertexID); float x = 0.0; float y = 0.0; VOut out_ = VOut(vec4(0.0), vec2(0.0)); if ((vi == 0u)) { x = -1.0; y = -1.0; } else { if ((vi == 1u)) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out_.pos = vec4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out_.uv = vec2(((_e21 * 0.5) + 0.5), (0.5 - (_e26 * 0.5))); VOut _e32 = out_; gl_Position = _e32.pos; _vs2fs_location0 = _e32.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; layout(std140) uniform UBO_block_0Fragment { UBO _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; uniform highp sampler2D _group_0_binding_2_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); float intensity = _group_0_binding_0_fs.params.x; vec4 orig = texture(_group_0_binding_2_fs, vec2(f.uv)); vec4 bloomC = texture(_group_0_binding_1_fs, vec2(f.uv)); vec3 result = (orig.xyz + (bloomC.xyz * intensity)); _fs2p_location0 = vec4(result, orig.w); return; } UBO_block_0Fragment_group_0_binding_2_fs_group_0_binding_1_fsvs_mainvs_mainfs_mainfs_main// language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4 params; metal::float4 texelSize; }; struct VOut { metal::float4 pos; metal::float2 uv; char _pad2[8]; }; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; if (vi == 0u) { x = -1.0; y = -1.0; } else { if (vi == 1u) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out.pos = metal::float4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out.uv = metal::float2((_e21 * 0.5) + 0.5, 0.5 - (_e26 * 0.5)); VOut _e32 = out; const auto _tmp = _e32; return vs_mainOutput { _tmp.pos, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] , constant UBO& u [[buffer(0)]] , metal::texture2d bloom [[texture(0)]] , metal::texture2d original [[texture(1)]] , metal::sampler samp [[sampler(0)]] ) { const VOut f = { pos, varyings_1.uv }; float intensity = u.params.x; metal::float4 orig = original.sample(samp, f.uv); metal::float4 bloomC = bloom.sample(samp, f.uv); metal::float3 result = orig.xyz + (bloomC.xyz * intensity); return fs_mainOutput { metal::float4(result, orig.w) }; } vs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const _9 _35 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _17; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _17 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _28 = 0.0f; float _31 = 0.0f; _9 _33 = _35; if (uint(gl_VertexIndex) == 0u) { _28 = -1.0f; _31 = -1.0f; } else { if (uint(gl_VertexIndex) == 1u) { _28 = 3.0f; _31 = -1.0f; } else { _28 = -1.0f; _31 = 3.0f; } } _33._m0 = float4(_28, _31, 0.0f, 1.0f); _33._m1 = float2((_28 * 0.5f) + 0.5f, 0.5f - (_31 * 0.5f)); gl_Position = _33._m0; _17 = _33._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._17 = _17; return stage_output; } fs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; cbuffer _12_11 : register(b0) { _5 _11_m0 : packoffset(c0); }; Texture2D _14 : register(t0); Texture2D _16 : register(t1); SamplerState _17 : register(s0); static float4 gl_FragCoord; static float2 _24; static float4 _27; struct SPIRV_Cross_Input { float2 _24 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _27 : SV_Target0; }; void frag_main() { _9 _20 = { gl_FragCoord, _24 }; float4 _45 = _16.Sample(_17, _20._m1); _27 = float4(_45.xyz + (_14.Sample(_17, _20._m1).xyz * _11_m0._m0.x), _45.w); } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _24 = stage_input._24; frag_main(); SPIRV_Cross_Output stage_output; stage_output._27 = _27; return stage_output; } HSLT_5 _12 _12_11_14_16_17vs_mainvs_mainfs_mainfs_main #m GLSL.std.450vs_mainTfs_mainMPSTH#H#H #H #G "G !G H #G"G!G"G!G"G!G *G GGM GPGS        ;  ;; ;  ; ; ;!+ ++ + @@+!+"?+#? %.&.( * . +- 6 ; F N;NM Q;QP;S U [ \`f6;%$&;%'(;*)+= ,,-./.010>$>'/1-232454>$ >'35>$>' 33//=7$=8'P978!"A6:)>:9=<$=<#>=#=?'@?#A#@PB>AA;C)>CB= D)QED>EAFG=HGIH>GIQJD>J86TK=OM=RPP LORAUV =W=X=YZZA\]V=^]Q_LV`aXYWba_QcLV`dWYWedcOfgbbOfheefih^fjgiQkbPljk>Sl8LightingSharedjnewmathmaxrequire Lighting3D getLighting setLightingclaimrelease isClaimedsetPointPositiongetPointPosition setEnvAmbient getEnvAmbient     &  / 5 9   B     K   J  ]   cCA @FFF F F F FFFF FFFFFFFFFFFF6  e <  k     @         GizmoShaderj:BTSR    $ $ H^ vs_mainmainC#version 300 es precision highp float; precision highp int; struct UBO { mat4x4 mvp; vec4 color; vec4 pad[11]; }; struct VIn { vec3 pos; }; struct VOut { vec4 pos; vec4 color; }; struct FOut { vec4 color; float depth; }; layout(std140) uniform UBO_block_0Vertex { UBO _group_0_binding_0_vs; }; layout(location = 0) in vec3 _p2vs_location0; smooth out vec4 _vs2fs_location0; void main() { VIn v = VIn(_p2vs_location0); VOut out_ = VOut(vec4(0.0), vec4(0.0)); mat4x4 _e5 = _group_0_binding_0_vs.mvp; out_.pos = (_e5 * vec4(v.pos, 1.0)); vec4 _e13 = _group_0_binding_0_vs.color; out_.color = _e13; VOut _e14 = out_; gl_Position = _e14.pos; _vs2fs_location0 = _e14.color; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmainw#version 300 es precision highp float; precision highp int; struct UBO { mat4x4 mvp; vec4 color; vec4 pad[11]; }; struct VIn { vec3 pos; }; struct VOut { vec4 pos; vec4 color; }; struct FOut { vec4 color; float depth; }; smooth in vec4 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); FOut o = FOut(vec4(0.0), 0.0); o.color = f.color; o.depth = 1000000.0; FOut _e6 = o; _fs2p_location0 = _e6.color; _fs2p_location1 = _e6.depth; return; } UBO_block_0Vertexvs_mainvs_mainfs_mainfs_main// language: metal1.0 #include #include using metal::uint; struct type_3 { metal::float4 inner[11]; }; struct UBO { metal::float4x4 mvp; metal::float4 color; type_3 pad; }; struct VIn { metal::float3 pos; }; struct VOut { metal::float4 pos; metal::float4 color; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; struct vs_mainInput { metal::float3 pos [[attribute(0)]]; }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float4 color [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( vs_mainInput varyings [[stage_in]] , constant UBO& u [[buffer(0)]] ) { const VIn v = { varyings.pos }; VOut out = {}; metal::float4x4 _e5 = u.mvp; out.pos = _e5 * metal::float4(v.pos, 1.0); metal::float4 _e13 = u.color; out.color = _e13; VOut _e14 = out; const auto _tmp = _e14; return vs_mainOutput { _tmp.pos, _tmp.color }; } struct fs_mainInput { metal::float4 color [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] ) { const VOut f = { pos, varyings_1.color }; FOut o = {}; o.color = f.color; o.depth = 1000000.0; FOut _e6 = o; const auto _tmp = _e6; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmainstruct _9 { row_major float4x4 _m0; float4 _m1; float4 _m2[11]; }; struct _11 { float3 _m0; }; struct _12 { float4 _m0; float4 _m1; }; struct _13 { float4 _m0; float _m1; }; static const _12 _33 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f) }; cbuffer _15_14 : register(b0) { _9 _14_m0 : packoffset(c0); }; static float4 gl_Position; static float3 _19; static float4 _24; struct SPIRV_Cross_Input { float3 _19 : TEXCOORD0; }; struct SPIRV_Cross_Output { float4 _24 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { _12 _31 = _33; _11 _18 = { _19 }; _31._m0 = mul(float4(_18._m0, 1.0f), _14_m0._m0); _31._m1 = _14_m0._m1; gl_Position = _31._m0; _24 = _31._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { _19 = stage_input._19; vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._24 = _24; return stage_output; } fs_mainmainstruct _9 { row_major float4x4 _m0; float4 _m1; float4 _m2[11]; }; struct _11 { float3 _m0; }; struct _12 { float4 _m0; float4 _m1; }; struct _13 { float4 _m0; float _m1; }; static const _13 _30 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; static float4 gl_FragCoord; static float4 _19; static float4 _21; static float _23; struct SPIRV_Cross_Input { float4 _19 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _21 : SV_Target0; float _23 : SV_Target1; }; void frag_main() { _13 _28 = _30; _12 _15 = { gl_FragCoord, _19 }; _28._m0 = _15._m1; _28._m1 = 1000000.0f; _21 = _28._m0; _23 = _28._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _19 = stage_input._19; frag_main(); SPIRV_Cross_Output stage_output; stage_output._21 = _21; stage_output._23 = _23; return stage_output; } HSLT_9@P _15_15_14vs_mainvs_mainfs_mainfs_mainh#M GLSL.std.450vs_main @fs_main9<>?@GH #H H H #@H #PH #H #H #H #H #G"G!GH#GG GG9 G<G>G?  +       ;  ; ;;!  ++?   . ! # $ ++, 2 :;:9;:<;>;2?+A$tI C . D H6; != P A""A$%=&%Q 'P(')&(A#*>*)A+-,=.-A#/,>/.= 0Q10>1A23,=4354>35Q60>686@7;CBD=;9==<P 8;=EEQF8A#GB>GFAHIB,>IA= JBQKJ>>KQLJ>?L8 LightIcon3Dj8etableinsertmathsincosnorm3xabscross3v3mul3add3yzipairsbuffercreatewritef32writeu32 GizmoShadershaderprint#[LightIcon3D] GizmoShader not foundformatblendsrcColor src-alphadstColorone-minus-src-alphacolorOpaddsrcAlphaonedstAlphaalphaOpzeronewvertexfragment vertexLayout colorTargets depthStencilcullModenonetopology triangle-list sampleCountstride attributes float32x3slotoffset float32x4comparealwayswritepipeline indexCountsizeusagelenvboindexibouniformubolayoutubosgetBindGroupLayout bindGroupgizmoinitGPUvisible_ubufscalepositionMat4valuesColorredcolorgreenblue writeMat4 writeVec4 setPipelinesetVertexBufferuint32setIndexBuffer setBindGroup drawIndexedrender syncGizmorgbarequireMath3DGizmo3DGpuTypes GPUPipeline GPUBuffer GPUBindGroup   2J4    J4    J4    J4    J4    J4    J4    C K4  J4   K4  J4   J4   J4   K4   3K4   J4    K4   J4    J4    J4    K4    '   8 V# * ( I   (# I   0#8A#*I   0#I  (#J4 J4  J4 J4 J4 J4 K4 99    8 !  ' +! J4 J4  J4  9    8 B  8 =) !!) !'+!' )!!' )!'+!J4 J4 J4 J4 J4 J4 9 9 '    8 ! ' +! 'J4 J4 J4  9 '  ?@-DT!?@-DT! @(0 @-DT!@@@D@I         I                          U    U ' 8[* ) ) I  4 I <   U # U #  J4 T@J4 T@J4 T@J4 T@J4 T@J4  T@K4 T@9)8[* ) ) I  4 I <   U # U # J4 T@J4 T@J4 T@J4 T@J4 T@J4  T@K4 T@985!'+ !' !' '+ !J4 T@J4 T@J4 T@J4 T@J4 T@J4 T@9' ?   ;On?@-DT! @@4 <   T@???$@x555       @ ;       :4R `) ( 8H)  )'  >  3   6 @ =   8  A A  3   6 D  E 6  6 H SI F56JE;7 G  zK L pM   N @ !"#   $   XP%&'()*+,-./ !"0<@1$%&234()*+*5?(@-).+/67812349:;<89=>?89?@T@A8B9CBCDFGE)*;FGH txz   (        #  DD*  PD* XD*   @ dr !"#$I9>@BFJKLMN( o@OPDQRPSXTU8VWXYZ:[G\ GL 6 6  `pD lP p  %I?KLQffffff?G9>@BFJ:H\]   O^`plaA @ @ @@@ @ F5                   7 @ FF F@ FF FF@ F@ @FFF F F 6_@`abcde %Camera3Dj%G posOverridev3posXposYposZ_pospitchmathclampyawdistancemaxcossintargetxyznorm3sub3UPcross3rollabsadd3mul3negate3dot3Mat4values_view perspectivefovDegradaspectnearfar_proj_vp_dirty_tYaw_tPitch_tTarget _tDistancedampingpowlerp3gridinitGPUyawDegpitchDegZERO3newidentityorbitpandollysetOrbit setPosition clearPositionupdate initGridGPUgetView getProjectiongetViewProjection getPosition getForwardrequireMath3DGrid3DGpuTypes = D J  , k]sAD.  (k  uJ <I  DI LI  DI  L    # # !   # !   ##!   s  K  +   I x /I  DI L !  U"     U"     !  U" 3    U"     # $  3  $   3  $   3 'P      Q( *P +I  -  . /0  1 1 Q(#  2  34_h!_h!? ( {Gz?  < DLxư>P P!"#$%&'(T!!D. @)*_h!_h!? @(_D. 0kI  0I  $0I   0  I   $0   3 # 3 3#         +         u)     U 3#  U #     _h!_h!? 0  0$0Mb`? +(/!J  /{Gz?,  ( I I /")*,(  ,k] ,  Q@ k/u 4) J 4G k k" #!k " #!u/ u" #!u    -MbP?) *, +?N@.4/(  Q(  (&  ('  s(   K s(  '    p0190I  0I  u0  J  J 5 k   u0-000d@0@,k] '/ ! $ Q% $ & $ ' J s() x* + /, - . / 0  71  p2  P3  4  5 6 7<@2" 63@ 4 F@!?#?$Y@%-50)*,+6 &'(789:;<=>?@ABC?@A  DOFBlurHjiBTSR A A 2s v 3 72i L#2~#$ 42vs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; smooth out vec2 _vs2fs_location0; void main() { uint vi = uint(gl_VertexID); float x = 0.0; float y = 0.0; VOut out_ = VOut(vec4(0.0), vec2(0.0)); if ((vi == 0u)) { x = -1.0; y = -1.0; } else { if ((vi == 1u)) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out_.pos = vec4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out_.uv = vec2(((_e21 * 0.5) + 0.5), (0.5 - (_e26 * 0.5))); VOut _e32 = out_; gl_Position = _e32.pos; _vs2fs_location0 = _e32.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; layout(std140) uniform UBO_block_0Fragment { UBO _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); vec4 col = vec4(0.0); float radius = _group_0_binding_0_fs.params.x; float _e8 = _group_0_binding_0_fs.texelSize.x; float tx = (_e8 * radius); vec4 _e18 = texture(_group_0_binding_1_fs, vec2(f.uv)); col = (_e18 * 0.22702703); vec4 _e29 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((1.0 * tx), 0.0)))); vec4 _e31 = col; col = (_e31 + (_e29 * 0.19459459)); vec4 _e41 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((-1.0 * tx), 0.0)))); vec4 _e43 = col; col = (_e43 + (_e41 * 0.19459459)); vec4 _e53 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((2.0 * tx), 0.0)))); vec4 _e55 = col; col = (_e55 + (_e53 * 0.12162162)); vec4 _e65 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((-2.0 * tx), 0.0)))); vec4 _e67 = col; col = (_e67 + (_e65 * 0.12162162)); vec4 _e77 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((3.0 * tx), 0.0)))); vec4 _e79 = col; col = (_e79 + (_e77 * 0.054054055)); vec4 _e89 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((-3.0 * tx), 0.0)))); vec4 _e91 = col; col = (_e91 + (_e89 * 0.054054055)); vec4 _e101 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((4.0 * tx), 0.0)))); vec4 _e103 = col; col = (_e103 + (_e101 * 0.016216217)); vec4 _e113 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2((-4.0 * tx), 0.0)))); vec4 _e115 = col; col = (_e115 + (_e113 * 0.016216217)); vec4 _e117 = col; _fs2p_location0 = _e117; return; } UBO_block_0Fragment_group_0_binding_1_fsvs_mainvs_mainfs_mainfs_mainc // language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4 params; metal::float4 texelSize; }; struct VOut { metal::float4 pos; metal::float2 uv; char _pad2[8]; }; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; if (vi == 0u) { x = -1.0; y = -1.0; } else { if (vi == 1u) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out.pos = metal::float4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out.uv = metal::float2((_e21 * 0.5) + 0.5, 0.5 - (_e26 * 0.5)); VOut _e32 = out; const auto _tmp = _e32; return vs_mainOutput { _tmp.pos, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] , constant UBO& u [[buffer(0)]] , metal::texture2d tex [[texture(0)]] , metal::sampler samp [[sampler(0)]] ) { const VOut f = { pos, varyings_1.uv }; metal::float4 col = {}; float radius = u.params.x; float _e8 = u.texelSize.x; float tx = _e8 * radius; metal::float4 _e18 = tex.sample(samp, f.uv); col = _e18 * 0.22702703; metal::float4 _e29 = tex.sample(samp, f.uv + metal::float2(1.0 * tx, 0.0)); metal::float4 _e31 = col; col = _e31 + (_e29 * 0.19459459); metal::float4 _e41 = tex.sample(samp, f.uv + metal::float2(-1.0 * tx, 0.0)); metal::float4 _e43 = col; col = _e43 + (_e41 * 0.19459459); metal::float4 _e53 = tex.sample(samp, f.uv + metal::float2(2.0 * tx, 0.0)); metal::float4 _e55 = col; col = _e55 + (_e53 * 0.12162162); metal::float4 _e65 = tex.sample(samp, f.uv + metal::float2(-2.0 * tx, 0.0)); metal::float4 _e67 = col; col = _e67 + (_e65 * 0.12162162); metal::float4 _e77 = tex.sample(samp, f.uv + metal::float2(3.0 * tx, 0.0)); metal::float4 _e79 = col; col = _e79 + (_e77 * 0.054054055); metal::float4 _e89 = tex.sample(samp, f.uv + metal::float2(-3.0 * tx, 0.0)); metal::float4 _e91 = col; col = _e91 + (_e89 * 0.054054055); metal::float4 _e101 = tex.sample(samp, f.uv + metal::float2(4.0 * tx, 0.0)); metal::float4 _e103 = col; col = _e103 + (_e101 * 0.016216217); metal::float4 _e113 = tex.sample(samp, f.uv + metal::float2(-4.0 * tx, 0.0)); metal::float4 _e115 = col; col = _e115 + (_e113 * 0.016216217); metal::float4 _e117 = col; return fs_mainOutput { _e117 }; } vs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const _9 _35 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _17; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _17 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _28 = 0.0f; float _31 = 0.0f; _9 _33 = _35; if (uint(gl_VertexIndex) == 0u) { _28 = -1.0f; _31 = -1.0f; } else { if (uint(gl_VertexIndex) == 1u) { _28 = 3.0f; _31 = -1.0f; } else { _28 = -1.0f; _31 = 3.0f; } } _33._m0 = float4(_28, _31, 0.0f, 1.0f); _33._m1 = float2((_28 * 0.5f) + 0.5f, 0.5f - (_31 * 0.5f)); gl_Position = _33._m0; _17 = _33._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._17 = _17; return stage_output; } fs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; cbuffer _12_11 : register(b0) { _5 _11_m0 : packoffset(c0); }; Texture2D _14 : register(t0); SamplerState _16 : register(s0); static float4 gl_FragCoord; static float2 _23; static float4 _26; struct SPIRV_Cross_Input { float2 _23 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _26 : SV_Target0; }; void frag_main() { float4 _49 = float4(0.0f, 0.0f, 0.0f, 0.0f); _9 _19 = { gl_FragCoord, _23 }; float _60 = _11_m0._m1.x * _11_m0._m0.x; _49 = _14.Sample(_16, _19._m1) * 0.2270270287990570068359375f; _49 += (_14.Sample(_16, _19._m1 + float2(1.0f * _60, 0.0f)) * 0.1945945918560028076171875f); _49 += (_14.Sample(_16, _19._m1 + float2((-1.0f) * _60, 0.0f)) * 0.1945945918560028076171875f); _49 += (_14.Sample(_16, _19._m1 + float2(2.0f * _60, 0.0f)) * 0.12162162363529205322265625f); _49 += (_14.Sample(_16, _19._m1 + float2((-2.0f) * _60, 0.0f)) * 0.12162162363529205322265625f); _49 += (_14.Sample(_16, _19._m1 + float2(3.0f * _60, 0.0f)) * 0.0540540553629398345947265625f); _49 += (_14.Sample(_16, _19._m1 + float2((-3.0f) * _60, 0.0f)) * 0.0540540553629398345947265625f); _49 += (_14.Sample(_16, _19._m1 + float2(4.0f * _60, 0.0f)) * 0.01621621660888195037841796875f); _49 += (_14.Sample(_16, _19._m1 + float2((-4.0f) * _60, 0.0f)) * 0.01621621660888195037841796875f); _26 = _49; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _23 = stage_input._23; frag_main(); SPIRV_Cross_Output stage_output; stage_output._26 = _26; return stage_output; } HSLT_5 _12 _12_11_14_16vs_mainvs_mainfs_mainfs_main# GLSL.std.450vs_mainSfs_mainLORSH#H#H #H #G "G !G H #G"G!G"G!G *G GGL GOGR        ;  ; ;  ; ; ;!+ ++ +@@+ +!?+"? $.%.' ) . *, 5 : E M;ML P;PO;R T+Xyh>+YCG>+Z=+[g]=+\ׄ<+]@+^+_@+`@+a.c e fm6;$#%;$&';)(*= ++,-.-/0/>#>&.0,121343>#>&24>#>&22..=6#=7&P867 !A59(>98=;#<;"=<"=>&?>"@"?PA=@A:B(>BA= C(QDC>DAEF=GFHG>FHQIC>I86SJ;5bc=NL=QOP KNQATU =V=WddAfgU=hgAfiU=jikjhQlKVmnVWWonlpoX>bpQqKr!kPsr tqsVmuVWWvutwvY=xbyxw>byQzK{kP|{ }z|Vm~VWW~}Y=b>bQK]kP VmVWWZ=b>bQK^kP VmVWWZ=b>bQKkP VmVWW[=b>bQK_kP VmVWW[=b>bQK`kP VmVWW\=b>bQKakP VmVWW\=b>b=b>R8BlurPasspostfxjGbufferwritef32shaderprint[BlurPass] shader not found:newvertexfragment vertexLayout colorTargetsformatblendsrcColoronedstColorzerocolorOpaddsrcAlphadstAlphaalphaOplayoutubostexturessamplersgetBindGroupLayoutslotviewsamplercolorloadOpclearstoreOpstore clearColorbeginRenderPass setPipeline setBindGroupdrawfinishpipeHpipeVuboHuboVpingpongpingViewpongViewcanvasmathfloormaxwidthheightubufHwriteubufVDOFBlurHDOFBlurVctxrunsizeusageuniformcreaterequirepostfx/FramebufferPoolGpuTypes GPUPipeline GPUBindGroup GPUBuffer  A@@?@ AL   A @ @@@F@ F@ @ FF@ FFF 6   B@CDEFG  HdrSkyShaderj_BTSR  2  6= 2 2!   .2vs_mainmain#version 300 es precision highp float; precision highp int; struct SkyUBO { mat4x4 vpInv; vec4 camPos; mat4x4 rot; vec4 params; }; struct VOut { vec4 clip; vec2 ndc; }; struct FOut { vec4 color; float depth; }; const float PI = 3.1415927; smooth out vec2 _vs2fs_location0; void main() { uint vid = uint(gl_VertexID); vec2 p[3] = vec2[3](vec2(-1.0, -3.0), vec2(-1.0, 1.0), vec2(3.0, 1.0)); VOut o = VOut(vec4(0.0), vec2(0.0)); vec2 v = p[vid]; o.clip = vec4(v, 1.0, 1.0); o.ndc = v; VOut _e20 = o; gl_Position = _e20.clip; _vs2fs_location0 = _e20.ndc; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct SkyUBO { mat4x4 vpInv; vec4 camPos; mat4x4 rot; vec4 params; }; struct VOut { vec4 clip; vec2 ndc; }; struct FOut { vec4 color; float depth; }; const float PI = 3.1415927; layout(std140) uniform SkyUBO_block_0Fragment { SkyUBO _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); vec3 dir = vec3(0.0); FOut o_1 = FOut(vec4(0.0), 0.0); mat4x4 _e3 = _group_0_binding_0_fs.vpInv; vec4 nearH = (_e3 * vec4(f.ndc, 0.0, 1.0)); mat4x4 _e11 = _group_0_binding_0_fs.vpInv; vec4 farH = (_e11 * vec4(f.ndc, 1.0, 1.0)); vec3 nearW = (nearH.xyz / vec3(nearH.w)); vec3 farW = (farH.xyz / vec3(farH.w)); dir = normalize((farW - nearW)); mat4x4 _e30 = _group_0_binding_0_fs.rot; vec3 _e31 = dir; dir = normalize((_e30 * vec4(_e31, 0.0)).xyz); float _e38 = dir.x; float _e40 = dir.z; float uCoord = ((atan(_e38, _e40) / 6.2831855) + 0.5); float _e47 = dir.y; float vCoord = (acos(clamp(_e47, -1.0, 1.0)) / PI); float _e57 = _group_0_binding_0_fs.params.y; float intensity = max(_e57, 0.0); float _e63 = _group_0_binding_0_fs.params.x; float opacity = clamp(_e63, 0.0, 1.0); vec4 _e71 = textureLod(_group_0_binding_1_fs, vec2(vec2(uCoord, vCoord)), 0.0); vec3 envCol = (_e71.xyz * intensity); o_1.color = vec4(envCol, opacity); o_1.depth = 1000000.0; FOut _e79 = o_1; _fs2p_location0 = _e79.color; _fs2p_location1 = _e79.depth; return; } SkyUBO_block_0Fragment_group_0_binding_1_fsvs_mainvs_mainfs_mainfs_mainm // language: metal1.0 #include #include using metal::uint; struct SkyUBO { metal::float4x4 vpInv; metal::float4 camPos; metal::float4x4 rot; metal::float4 params; }; struct VOut { metal::float4 clip; metal::float2 ndc; char _pad2[8]; }; struct type_7 { metal::float2 inner[3]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; constant float PI = 3.1415927; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 clip [[position]]; metal::float2 ndc [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vid [[vertex_id]] ) { type_7 p = type_7 {metal::float2(-1.0, -3.0), metal::float2(-1.0, 1.0), metal::float2(3.0, 1.0)}; VOut o = {}; metal::float2 v = p.inner[vid]; o.clip = metal::float4(v, 1.0, 1.0); o.ndc = v; VOut _e20 = o; const auto _tmp = _e20; return vs_mainOutput { _tmp.clip, _tmp.ndc }; } struct fs_mainInput { metal::float2 ndc [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 clip [[position]] , constant SkyUBO& u [[buffer(0)]] , metal::texture2d tEnv [[texture(0)]] , metal::sampler envSamp [[sampler(0)]] ) { const VOut f = { clip, varyings_1.ndc }; metal::float3 dir = {}; FOut o_1 = {}; metal::float4x4 _e3 = u.vpInv; metal::float4 nearH = _e3 * metal::float4(f.ndc, 0.0, 1.0); metal::float4x4 _e11 = u.vpInv; metal::float4 farH = _e11 * metal::float4(f.ndc, 1.0, 1.0); metal::float3 nearW = nearH.xyz / metal::float3(nearH.w); metal::float3 farW = farH.xyz / metal::float3(farH.w); dir = metal::normalize(farW - nearW); metal::float4x4 _e30 = u.rot; metal::float3 _e31 = dir; dir = metal::normalize((_e30 * metal::float4(_e31, 0.0)).xyz); float _e38 = dir.x; float _e40 = dir.z; float uCoord = (metal::atan2(_e38, _e40) / 6.2831855) + 0.5; float _e47 = dir.y; float vCoord = metal::acos(metal::clamp(_e47, -1.0, 1.0)) / PI; float _e57 = u.params.y; float intensity = metal::max(_e57, 0.0); float _e63 = u.params.x; float opacity = metal::clamp(_e63, 0.0, 1.0); metal::float4 _e71 = tEnv.sample(envSamp, metal::float2(uCoord, vCoord), metal::level(0.0)); metal::float3 envCol = _e71.xyz * intensity; o_1.color = metal::float4(envCol, opacity); o_1.depth = 1000000.0; FOut _e79 = o_1; const auto _tmp = _e79; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmain0struct _6 { row_major float4x4 _m0; float4 _m1; row_major float4x4 _m2; float4 _m3; }; struct _10 { float4 _m0; float2 _m1; }; struct _14 { float4 _m0; float _m1; }; static const float2 _34[3] = { float2(-1.0f, -3.0f), float2(-1.0f, 1.0f), float2(3.0f, 1.0f) }; static const _10 _39 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _23; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _23 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { _10 _37 = _39; _37._m0 = float4(_34[uint(gl_VertexIndex)], 1.0f, 1.0f); _37._m1 = _34[uint(gl_VertexIndex)]; gl_Position = _37._m0; _23 = _37._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._23 = _23; return stage_output; } fs_mainmainstruct _6 { row_major float4x4 _m0; float4 _m1; row_major float4x4 _m2; float4 _m3; }; struct _10 { float4 _m0; float2 _m1; }; struct _14 { float4 _m0; float _m1; }; static const _14 _54 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _18_17 : register(b0) { _6 _17_m0 : packoffset(c0); }; Texture2D _20 : register(t0); SamplerState _22 : register(s0); static float4 gl_FragCoord; static float2 _29; static float4 _32; static float _34; struct SPIRV_Cross_Input { float2 _29 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _32 : SV_Target0; float _34 : SV_Target1; }; void frag_main() { float3 _49 = float3(0.0f, 0.0f, 0.0f); _14 _52 = _54; _10 _25 = { gl_FragCoord, _29 }; float4 _61 = mul(float4(_25._m1, 0.0f, 1.0f), _17_m0._m0); float4 _66 = mul(float4(_25._m1, 1.0f, 1.0f), _17_m0._m0); _49 = normalize((_66.xyz / float3(_66.www)) - (_61.xyz / float3(_61.www))); _49 = normalize(mul(float4(_49, 0.0f), _17_m0._m2).xyz); _52._m0 = float4(_20.SampleLevel(_22, float2((atan2(_49.x, _49.z) / 6.283185482025146484375f) + 0.5f, acos(clamp(_49.y, -1.0f, 1.0f)) / 3.1415927410125732421875f), 0.0f).xyz * max(_17_m0._m3.y, 0.0f), clamp(_17_m0._m3.x, 0.0f, 1.0f)); _52._m1 = 1000000.0f; _32 = _52._m0; _34 = _52._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _29 = stage_input._29; frag_main(); SPIRV_Cross_Output stage_output; stage_output._32 = _32; stage_output._34 = _34; return stage_output; } HSLT_6@P_18_18_17_20_22vs_mainvs_mainfs_mainfs_main # GLSL.std.450 vs_main Jfs_mainBEHIJH#HHH#@H#PHHH#H #H #G H#H#G"G!GH#G"G!G"G!G *G GGB GEGHGI      +  +I@ ; ; ;  ; ;  ;!!+"+#@, $"#+%?, &"%+'@@, ('%, )$&( + - . . 0 3+ 5+ 7 ; C;CB F ;FE;H;;I K+O+P@+Q?+R$tI T.U W.X Z+ o w  6 !;+*);-,.= //A01*= 21P42%%A36,5>64A08,7>82= 9,Q:9>:A;<7==<>=><>Q ?9>?86J!@;TSU;WVX=DB= GEP ADGAKL5=M=NYYAZ[L5=\[Q ]AP^]O%_\^AZ`L5=a`Q bAPcb%%dacOe__Qf_PgfffhegOiddQjdPkjjjlikmlh nEm>SnAZpLo=qp=rSPsrOtqsOutt vEu>SvAwxS5=yxAwzSo={z |y{}|P~}QAwS7= +"% AL 7= (OAL 5= +O%P ~VMNXOOPA3V5>AwV7>R=VQ>HQ>I8 GlbMaterialjdtileUtileVoffsetUoffsetVrotation extensionstypetablenumberKHR_texture_transformscaleoffsetname material_ doubleSidedOPAQUE alphaMode alphaCutoff baseColor roughnessmetallicKHR_materials_specularspecularFactorspecularColorFactorpbrMetallicRoughnessbaseColorTexture normalTextureocclusionTexturestrengthemissiveKHR_materials_emissive_strengthemissiveStrengthBLENDColoralphaKHR_materials_transmissiontransmissionFactorKHR_materials_ioriorKHR_materials_clearcoatclearcoatFactorclearcoatRoughnessFactorKHR_materials_sheensheenRoughnessFactorsheenColorFactorKHR_materials_translucencytranslucencyFactorindexspecularglossynormalStrength aoStrength emissiveColoremissiveIntensityopacity transmission clearCoatclearCoatRoughnesssheen sheenTint sssRadius sssStrength albedoIdx normalIdxormIdx emissiveIdx uvTransformalbedoImageIdxnormalImageIdx ormImageIdxemissiveImageIdx primitivesipairsextractMaterialinsertdefaultsource overridescountactivepresetmathmaxclampao matOpacityclearCoatRough shadingModeuvTileUuvTileV uvOffsetU uvOffsetV uvRotation uvProjectMode uvOpacity uvEmissiveuvEmissiveIntensity isClaimedgetInputValues wireframe wireColor wireThickness wireOpacity wireQuadsoutlineEnabled outlineColoroutlineThicknessboolean projectMode fromInputs hasAlbedoTex hasNormalTex hasRoughTex hasMetalTexhasAOTexhasEmissiveTexuvArtboardActivepairsprint[GlbMaterial] unknown preset: ''+[GlbMaterial] ===== Material Registry ===== materials: active: preset: ' [ACTIVE]stringformat* [%d]%s '%s' alphaMode=%s doubleSided=%stostring9 baseColor=#%08X rough=%.2f metal=%.2f spec=%.2f9 normalStr=%.2f aoStr=%.2f opacity=%.2f ior=%.2f8 emissive=#%08X intensity=%.2f transmission=%.2f= clearCoat=%.2f sheen=%.2f sss=%.2f uvTile=%.2f,%.2f: textures: albedo=%s normal=%s orm=%s emissive=%s [override active])[GlbMaterial] ===========================rgbarequire Material3DMaterialShared GltfLoaderGpuTypesmetalmatteglassclaytoonunlit parseRegistry getRegistry setRegistrysetArtboardTexViewgetArtboardTexViewisArtboardTexActivegetActiveMaterialresolveresolveWithOverride setOverridereplaceOverride clearOverride setActive applyPresetPRESETSdump defaultUVT6?" vI( @P @I( @P I( @P@  _6I(  @P v I(  @P ' I(  @P  I(  @P 4 00PI(  @P 4 00I(  @P  I(   @P?@    ( Z100I( `@P  G I(  `@ P       i  vI(  `@P  I(  `@ P -I(  `@P   I( `@P   )   4  0# 0#! 0#!# 6 [I( `@PYI( `@P  ` I( `@PI( `@P !I( `@P "I( `@PI( `@P #I( `@P $vI( `@P%I( `@PI( `@P &I( `@P P' +*(vI( `@Ph,I( `@PI( `@P V-I( `@P .vI( `@PX/I( `@PI( `@P. ?0I( `@P .vI(  `@P1I( `@P+I( `@P 2I(  `@P I( `@P ~3I(  `@P !vI(!#! "`@"P"  !:4I( " !`@!P!+I( " !`@!P! ! 5I(!#! "`@"P" !! ~6!4"!##"$&!0%&##$%%'!0&'#$%&!"#$$&!0%&##$%!"#!#vI(#%# $`@$P$""#G7I("$" #`@#P#I("$" #`@#P#! #"8I(#%# $`@$P$ !#!6#M#Z#9###G #  #  #i #:G$ $#;#<#=#>#?#e@#GA#?0#B#C#dD#E!#?@ABC9 :;<=>?@A0BCDEFGHIJKLDEFG55554  @ ;      (  J4 P:E5 @  ; < Z 8 5 9 9  3 3    Y Y      ii 545 ZZJ4 P: 4O  5  5  5     ZJ4   P 6b4  HI@J?KP DEFGLMNOPQR  I( @P@   I( @P@ !J  D.  b M 6(   )) i ))i  ))  )) *)) ) )*+e,))4?))?G))G))-))0d))d))))<))<./P.0.1.2<.3& 4 5 M  i Mi i  M   M  MM4M44MM>6M>6>6Y7MY7Y7+8M+8+89M997:M7:7:;M;;<M<<=M==FF  I(  ?C P @  M     I(  ?C P @  M ) )   i I(  ?C P @  M ) ) i   I(  ?CP@  M ) )   I( ?CP@  M ) ) *I( ?CP@M))I( ?CP@MI( ?CP@M))e,I( ?CP@M))4GI( ?CP@M))G?I( ?CP@M))?I( ?CP@M))-I( ?CP@M))0dI( ?CP@M))dI( ?CP@M))I( ?CP@M))<I( ?CP@M))<I( ?CP@M#I( ?CP@M#[%I( ?CPA[%'I(  ?CP@M'.I(  ?CPIB /I(  ?CP@/P 0I(  ?CP@0 1I(  ?CP@1 2I(  ?CP@2< 3I(  ?CP@3&  CI(  ?CP@C! %D ZEFMG4HMIUJM 4K)LyMNMO YPI(  ?C P AYPQPOST U MN13V56W'89X;<=>Y@Z[\]^_`?ab  !"#$%&'$Y@4 @7:CcdefghijklC mno ?p@qArstBuv     PN  @=:w@N  M @=:Nw@NJ <. OSTUP #   @ 1  M `@=  : Px@yzNw`@Q @ @ b4  1   @b;  @ <    Z I? PA @ <    i  @ <    e ?  @ < ! " # G$ @ < % & d' <( ) *)+ <, -I?  PA  4.I?  PA  U/I?  PA  0I?  PA  @  1  M @ 2 :| @34x@{|M}P~QzI@R< PA1347'5689;>C?@ABN     M0     %6 < < %doLI@VY@56Y@ "<~A @ @ @ @@@@@ @ F@ FF@ FF@ F @ F @ @@@656$6'!6*6164686:06;>6<@=F@>FFFFFFF FF6P ?@A&B2CD}E F GH 2I0JyKTLM9NVO Q@     L2e ??1? !"#ffffff?% &"!?? ("){Gz?8'RQ?7333333? +%,&-./0"6@23 #333333?Y@% 5"!67@696%6?@ABCDEFGHIJKLMNO WireDotsControllerj' wireColorColorrgba wireThickness wireOpacity outlineColordotColordotSizedotGlowIntensitydotGlowSoftnessdotModedotCountalphamathclampredgreenbluegetInputValues wireframe wireQuadsoutlineoutlineEnabledoutlineThicknesssetInputValues getMaterial showWireframe outlineNDCsetDotSettingsshowDotsdotGlowmaxfloorclaiminitupdaterequire Material3DMaterialShareduY   Y+ +d   R   Rw w    B  B       ?    4  YdD. P*#  $Y  ,Y 4Y 5>>77 H   Y+  D. P+@  dD. P  r- H    Y +  D. P+>77@ q  Q6 &   ' wJ  )P  w R  R  ! !  "J  )P  "  B#J  )P  B# $' 'I  +P   D. P  $ %' 'I  +P J  )P  %, Po@$,4H     !"#$%? P!PJ  e " #6 pY p pR  Y@?*@@   @  #$  pA @ @@@FF@FFF@F@FF %@&'LightingControllerj+new lightAngleazimuth lightHeight elevationsetFromAzimuthElevation directionalColorrgbaredkeyColorgreenbluecolor keyIntensitymathclamp intensityradcosnorm3v3sin direction fillColor fillIntensityambient ambientColorambientIntensity environmentshadowDarkness shadowColorpoint_setup setLightingclaiminitadvanceupdaterequire Lighting3DLightingSharedMath3D)4 |  ZoS"L  p  (p  4p  I@ R@4@$@"%&'   P0 #A @ @ @@FF@FF@@FFF@ FF@ FF@ FFF  (@)*+ HdrControllerjBstringmatch ^%s*(.-)%s*$^"(.-)"$^'(.-)'$mathfloormaxbufferreadu8_avgR_avgG_avgB _avgReadyprintformat4[HdrController] IBL avg colour: r=%.3f g=%.3f b=%.3fdatawidthheight_ctx setEnvView _loadedNamefind%..pngtableinsert.jpg.jpeg.webpipairsimageview#[HdrController] loaded env image: '' xblob decodeImageandThen9[HdrController] no blob available, using neutral IBL tint"[HdrController] image not found: ''setenabledshowBackground imageNameopacity intensityyawpitchclamprad getEnvViewlightIntensity setEnvAmbientclaim_claimedinitupdateadvancerequire HdrSharedLightingShared  .  5  S#*I  J   ) JB   p ! ' JB  p ! ' JB  p ! ' !   $  *   $  *  $  *  @   A P0  @  @@   p?@o@   AP0<  &@P  E57  ( $ 1J4 <1J4 <1J4 <1J4 < @A;    :@ E` A     1  @A;  \   &  ! FF " :#$ % @ A& A' (1  E)?   (< !@A"#A$%&'()333333???*+,V v S6  , .  ,  ,FedD. H*erJ P*rkI XkI X QMJ P* @ -./01234",Y@5HP6X789    e :;<#  .   "$  .   " 6   ./"1Y@2834<; ?  =>?   A @ @@@@FF@FF@FF@ FF@ FF@ FFF  @@AB  CameraSharedj newyawDegpitchDegdistancefovDegdampingmathfloormaxabsrequireCamera3D getCamera setCameraclaimrelease isClaimed setAutoSpin getAutoSpinsetViewportSizegetViewportSize setSceneSize getSceneSizesetObjectSelectedisObjectSelectedsetGizmoCapturedisGizmoCapturedsetArtboardScalegetArtboardScale  6   <@6@F@{Gz?  ,  2 8 < A F I  J     K OJ  J   T Y a e m q I    & .>{ [A @FF F F F F FFFFFF FF FF F F FFFF6& 2 e <    C   C  @     OutlineShaderj_BTSR O O $s >  A$e e $ " /$vs_mainmainw#version 300 es precision highp float; precision highp int; struct TransformUBO { mat4x4 mvp; mat4x4 model; mat4x4 rotMat; mat4x4 normalMat; }; struct MaterialUBO { vec4 baseColor; vec4 emissive; vec4 pbrP1_; vec4 pbrP2_; vec4 pbrP3_; vec4 pbrP4_; vec4 pbrP5_; vec4 flags; vec4 flags2_; vec4 outlineP; }; struct VIn { vec3 pos; vec3 nrm; }; struct VOut { vec4 pos; vec4 col; float viewZ; }; struct FOut { vec4 color; float depth; }; layout(std140) uniform TransformUBO_block_0Vertex { TransformUBO _group_0_binding_0_vs; }; layout(std140) uniform MaterialUBO_block_1Vertex { MaterialUBO _group_0_binding_1_vs; }; layout(location = 0) in vec3 _p2vs_location0; layout(location = 1) in vec3 _p2vs_location1; smooth out vec4 _vs2fs_location0; smooth out float _vs2fs_location1; void main() { VIn v = VIn(_p2vs_location0, _p2vs_location1); VOut out_ = VOut(vec4(0.0), vec4(0.0), 0.0); float thickness = _group_0_binding_1_vs.outlineP.w; mat4x4 _e7 = _group_0_binding_0_vs.mvp; vec4 clip = (_e7 * vec4(v.pos, 1.0)); mat4x4 _e14 = _group_0_binding_0_vs.mvp; vec4 clipNrm = (_e14 * vec4(v.nrm, 0.0)); vec2 offset = ((normalize(clipNrm.xy) * thickness) * clip.w); out_.pos = vec4((clip.xy + offset), clip.z, clip.w); vec4 _e34 = _group_0_binding_1_vs.outlineP; out_.col = vec4(_e34.xyz, 1.0); out_.viewZ = clip.w; VOut _e40 = out_; gl_Position = _e40.pos; _vs2fs_location0 = _e40.col; _vs2fs_location1 = _e40.viewZ; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct TransformUBO { mat4x4 mvp; mat4x4 model; mat4x4 rotMat; mat4x4 normalMat; }; struct MaterialUBO { vec4 baseColor; vec4 emissive; vec4 pbrP1_; vec4 pbrP2_; vec4 pbrP3_; vec4 pbrP4_; vec4 pbrP5_; vec4 flags; vec4 flags2_; vec4 outlineP; }; struct VIn { vec3 pos; vec3 nrm; }; struct VOut { vec4 pos; vec4 col; float viewZ; }; struct FOut { vec4 color; float depth; }; smooth in vec4 _vs2fs_location0; smooth in float _vs2fs_location1; layout(location = 0) out vec4 _fs2p_location0; layout(location = 1) out float _fs2p_location1; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0, _vs2fs_location1); FOut o = FOut(vec4(0.0), 0.0); o.color = f.col; o.depth = f.viewZ; FOut _e6 = o; _fs2p_location0 = _e6.color; _fs2p_location1 = _e6.depth; return; } TransformUBO_block_0VertexMaterialUBO_block_1Vertexvs_mainvs_mainfs_mainfs_mainb // language: metal1.0 #include #include using metal::uint; struct TransformUBO { metal::float4x4 mvp; metal::float4x4 model; metal::float4x4 rotMat; metal::float4x4 normalMat; }; struct MaterialUBO { metal::float4 baseColor; metal::float4 emissive; metal::float4 pbrP1_; metal::float4 pbrP2_; metal::float4 pbrP3_; metal::float4 pbrP4_; metal::float4 pbrP5_; metal::float4 flags; metal::float4 flags2_; metal::float4 outlineP; }; struct VIn { metal::float3 pos; metal::float3 nrm; }; struct VOut { metal::float4 pos; metal::float4 col; float viewZ; char _pad3[12]; }; struct FOut { metal::float4 color; float depth; char _pad2[12]; }; struct vs_mainInput { metal::float3 pos [[attribute(0)]]; metal::float3 nrm [[attribute(1)]]; }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float4 col [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; vertex vs_mainOutput vs_main( vs_mainInput varyings [[stage_in]] , constant TransformUBO& t [[buffer(0)]] , constant MaterialUBO& m [[buffer(1)]] ) { const VIn v = { varyings.pos, varyings.nrm }; VOut out = {}; float thickness = m.outlineP.w; metal::float4x4 _e7 = t.mvp; metal::float4 clip = _e7 * metal::float4(v.pos, 1.0); metal::float4x4 _e14 = t.mvp; metal::float4 clipNrm = _e14 * metal::float4(v.nrm, 0.0); metal::float2 offset = (metal::normalize(clipNrm.xy) * thickness) * clip.w; out.pos = metal::float4(clip.xy + offset, clip.z, clip.w); metal::float4 _e34 = m.outlineP; out.col = metal::float4(_e34.xyz, 1.0); out.viewZ = clip.w; VOut _e40 = out; const auto _tmp = _e40; return vs_mainOutput { _tmp.pos, _tmp.col, _tmp.viewZ }; } struct fs_mainInput { metal::float4 col [[user(loc0), center_perspective]]; float viewZ [[user(loc1), center_perspective]]; }; struct fs_mainOutput { metal::float4 color [[color(0)]]; float depth [[color(1)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] ) { const VOut f = { pos, varyings_1.col, varyings_1.viewZ }; FOut o = {}; o.color = f.col; o.depth = f.viewZ; FOut _e6 = o; const auto _tmp = _e6; return fs_mainOutput { _tmp.color, _tmp.depth }; } vs_mainmainstruct _6 { row_major float4x4 _m0; row_major float4x4 _m1; row_major float4x4 _m2; row_major float4x4 _m3; }; struct _7 { float4 _m0; float4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _9 { float3 _m0; float3 _m1; }; struct _10 { float4 _m0; float4 _m1; float _m2; }; struct _11 { float4 _m0; float _m1; }; static const _10 _42 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; cbuffer _13_12 : register(b0) { _6 _12_m0 : packoffset(c0); }; cbuffer _16_15 : register(b1) { _7 _15_m0 : packoffset(c0); }; static float4 gl_Position; static float3 _20; static float3 _23; static float4 _27; static float _28; struct SPIRV_Cross_Input { float3 _20 : TEXCOORD0; float3 _23 : TEXCOORD1; }; struct SPIRV_Cross_Output { float4 _27 : TEXCOORD0; float _28 : TEXCOORD1; float4 gl_Position : SV_Position; }; void vert_main() { _10 _40 = _42; _9 _19 = { _20, _23 }; float4 _55 = mul(float4(_19._m0, 1.0f), _12_m0._m0); _40._m0 = float4(_55.xy + ((normalize(mul(float4(_19._m1, 0.0f), _12_m0._m0).xy) * _15_m0._m9.w) * _55.w), _55.zw); _40._m1 = float4(_15_m0._m9.xyz, 1.0f); _40._m2 = _55.w; gl_Position = _40._m0; _27 = _40._m1; _28 = _40._m2; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { _20 = stage_input._20; _23 = stage_input._23; vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._27 = _27; stage_output._28 = _28; return stage_output; } fs_mainmainFstruct _6 { row_major float4x4 _m0; row_major float4x4 _m1; row_major float4x4 _m2; row_major float4x4 _m3; }; struct _7 { float4 _m0; float4 _m1; float4 _m2; float4 _m3; float4 _m4; float4 _m5; float4 _m6; float4 _m7; float4 _m8; float4 _m9; }; struct _9 { float3 _m0; float3 _m1; }; struct _10 { float4 _m0; float4 _m1; float _m2; }; struct _11 { float4 _m0; float _m1; }; static const _11 _30 = { float4(0.0f, 0.0f, 0.0f, 0.0f), 0.0f }; static float4 gl_FragCoord; static float4 _17; static float _19; static float4 _22; static float _24; struct SPIRV_Cross_Input { float4 _17 : TEXCOORD0; float _19 : TEXCOORD1; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _22 : SV_Target0; float _24 : SV_Target1; }; void frag_main() { _11 _28 = _30; _10 _13 = { gl_FragCoord, _17, _19 }; _28._m0 = _13._m1; _28._m1 = _13._m2; _22 = _28._m0; _24 = _28._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _17 = stage_input._17; _19 = stage_input._19; frag_main(); SPIRV_Cross_Output stage_output; stage_output._22 = _22; stage_output._24 = _24; return stage_output; } HSLT_6@_13_7  0@P`p_16_13_12_16_15vs_mainvs_mainfs_mainfs_mainl #s GLSL.std.450 vs_main gfs_main]`befgH#HHH#@HHH#HHH#HHH#H#H# H#0H#@H#PH#`H#pH#H #H #H #H #H #H # H #H #G "G !G H #G"G!GH#GGG GGG] G`GbGeGf        ;  ; ;; ;; ;!  " +"! $+&?+' ) . * , -+".+"/ 2= C+"N P+"R ^;^];^` c;cb;e;f i . j6;)(*==P A # !A$%!++A-0%/.=10A23#!=43Q5P65&746A28#!=98Q:P;:'<9;O=><< =?E>=@?1QA7=B@AO=D77=EDBQF7QG7PHEFGACI(!>IHA,J%/=KJOLKKPML&ACO(N>OMQQ7APS(R>SQ= T(QUT>UAVN=WVXW>VXQYT>YQZT>Z86g[;ihj=_]=a`=dbP \_adkkQl\ACmh!>mlQn\APohN>on= phQqp>eqQrp>fr8Scene3Dj objectstableinsertipairsremovenamecameraclearambientIeyeDirlightsnorm3v3dirdiffusespecular shininessadd removeByName findByName setCameracountnewrequireMath3DCamera3D SceneObject defaultLights  8J4   @8;  08 :@0   8488 Z  89 ) @8;Z:@1y8 8<84@ 16  56  6   7 {Gz?    ? ףp= ??N@ ? ףp= ?Q?,@   ɿٿD )6 58  y   I }  2       O &A @ @ @@@@@@ @ @ @ F@ FF FFFFFFF 6    @   DOFControllerpostfxj5enabledmathmax focusDistance focusRangeclampaperture blurIntensityfloorblurIterations renderScale tiltStrength tiltCentre tiltSharpnesssource_sourceW_sourceHpoolwidthheightensure _hasOutputcanvasviewblurPassrun apertureCoCpongViewcompPassimagenew rgba8unormprint3[DOFController] failed to initialise post-FX passesctxformat setEnabledsetFocusDistance setFocusRange setAperturesetBlurIntensitysetBlurIterationssetRenderScale setTiltShift setSource ensureSizegetImage hasOutputrequirepostfx/FramebufferPoolpostfx/BlurPasspostfx/CompositePassGpuTypes J  J MbP? <.  <. I  D.  S    <. T?  "<. |M <. M J    ? bK'  $*/5=K'T#I  0J 0T#I  0J 0b b b  o b b y    00 :Abbb) `B  S 6 6 | |   |    6 y@{Gz?    y  bb  i)I  J )I  J          @    6 2 f  b  b B | K" '#  %  &  '  (  )  *  +  |,  w-  v.  6/  0  1 3?  !@"#$@?ffffff?    ?@%&'()*+,-./0   !"#$%&'()*+,-./013A @ @ @ @@@@@ @ @ @ @ @ @ @@@@FFFFFFFFF F F F F FFF61@2345      GlbMaterialControllerj@ _lastIndex_ctx_abW_abHProjectionComponentinstance _abInstance _abCanvas_abTex _abTexViewmathabssetArtboardTexView_dtadvancewidthfloormaxheightcanvas clearColor beginFramedrawendFrameimageview getRegistry setActive roughnessclampColoralpha baseColor emissiveColoremissiveIntensity uvProjectModeuvTileUuvTileV uvRotationrad projectModetileUtileVoffsetUoffsetVrotationmetallicopacity shadingMode uvTransform uvOpacity uvEmissiveuvEmissiveIntensity uvProjectionuvArtboardActivereplaceOverrideinitupdate drawCanvaslatergbarequire GlbMaterialGpuTypesE O  T "I   {Gz?r Z &I  `J  $` I  `J  $`  6 b   6 ` &   `$` |    y(I P dD.  (P*  4O 4O( I  P       dD.  (P*  ( I  P      2 ) P( I  P      2  ( I  P      2   &( I  P      2 i ( I  P          ' I  `P   D. (P  P( I P        PJ  lP  ( I P      J  lP &(I P     &I  tP 6 %   ! $ 5 M M  i&( I  P        i& dD. (P *  i&M M  e'( I  P        e' dD. (P *  e' (( I  P        (' I  `P   D. (P  (M ) * dD. (P *  * [+ [+  ,J  lP *  , 6- Y.  2/      0  P{Gz?Y@(P 4!"#$%&'?`PMbP?lP(tP)*+,-. !"#$/012345678%6" $0B 'P 'P    !(63Y@%&45!/"#0$'1  9:;     !<0B=PA @ @@@@@F@F@ FFFF >@?@Card3Dje transformVec4mathmaxrotXradrotYrotZMat4fromTranslationposXposYposZ fromRotationZ fromRotationY fromRotationXabsMat2DvaluesresetVectorxymoveTolineToclosesaveclipPath transformsrcOver drawImagerestoresqrtceilclampfloorartboard worldWidth worldHeightopacity doubleSidedvisible_depth_canvas _bloomCanvas_pingTex_pongTex_sampler_bgH_bgV1_bgV2_bgC_allocW_allocHcardstableinsertipairsremoveclearadvancenewvertexfragment vertexLayout colorTargetsformat rgba8unormblendsrcColoronedstColorzerocolorOpaddsrcAlphadstAlphaalphaOppipeHpipeVpipeC BloomShadershader BloomHoriz BloomVertBloomCompositeprint3[Card3D] Bloom shaders not found — bloom disabledgetBindGroupLayoutlayoutHlayoutVlayoutCminlinearmagwrapU clamp-to-edgewrapV gpuSamplersizeusageuniformuboHuboVuboCbufferwritef32write colorViewcolorviewloadOpstoreOpstore clearColorbeginRenderPass setPipeline setBindGroupdrawfinish_ubufwidthheight renderTarget gpuCanvasimagelayoutubostexturessamplersslotsampler threshold intensityradiusbloomenabledcanvas ImageSamplerbilinear beginFrameendFrame getCameragetViewProjectionm14m24m34sortm11m12m21m22m31m32create drawCanvasrequireGpuTypes GPUPipeline GPUBindGroup GPUBuffer GPUSampler GPUTexture CameraSharedPathnewCardnewDeck    K    0 H  #  # !  # # "   ?-C6?0          H  # # !   # # "   #     -C6?? +I I VI  `k   ]   0` # 8`# @`# `    0`8`@`#  :" " "" # # "I  H""" " ## "#3## !### "#3## !##"#"#"#" P !"& .>?PO         J6  J6    Y J6 Y E        )!)!)!)K @H##! ##"! )! )" "##!I @ ??-C6?@@)!)!)!) !"#K!$!% #@#H"##$"##$!##$"##$"#!)!)""#!#"! !"I  @! )! )! )!"#$K"%"& $@$H#$#%##$%!$#% ##$%"$!)!)""#"##!!"#I! @  ! )! )! ) "#$%  K#&#' %@%H$%#& $#%&!%#&!$#%&"%!)!)"" ###$ !"#$I" !@!!! )!  ) !! ) !#$% &!!K$'$( &@&H%&#'!%#&'!&#'"%#&'"&!)! ) " "!#$ #%!!!#$%I# "@""D @ * I @) I  ,@<. 4@??-C6?@@?@ ,@!4@EK  0H##!##"   K!" 0 H #!# !! #!# !"   ! "K # $ "0"H!"##!#"#!"##!#"#""!"#$K"%"& $0$H#$#%##$%!$#% ##$%"$! !!" !!!!"" !"I" !0!"!j"I " !0!"!b"!!"" #$!%&'(")*+,!-./# #J $$$ $ $J6'( & ,&$$ $ $J6'( & ,&$$Y$ $J6'( & ,&$$Y$ $J6'( & ,&$$Y$ $$$$$E$ &$$&#$$&'()$$$$I  X0D. `0H'8A#G# #!! !#!#"! !"#"##!!"####$ !"#$#$ #% !#$%#% #& !$%&'%&8%(#('G)(#-)#."(!,-.#. )#/#(!-./#/!)#0$(!./01,2-3.4//K2526 404H34#5/3#45!*4#503#45"+4#.!-.'',- -*-, -+-,9%9(8\(8W#"!!"' !#$!#$'"#'!"'%#$%!#$'"#''#&'!%&'$%'#$ & $& & %& ( &(! ( '(! * (*" * )*" , *,# , +,##,'.#-.#.'0#/0G1,#01#0,G2-#12#1-#2.#3/ 4567890:2;$<%=1>2?&@'A0B3C(D)4 4567891:2;&<'=1>3?*@+A0B3C(D)499?-C6?00?,"X0!`06#   $@%&Y@'()*+,-./01234  J4 567  @;  0 :8@5690 6:5   @;   :8@5(#; 6556 67<=>?@ABCDEFGHIJKL    ii  @ @ F       i   S   b   S     S     6     6   %  6   P  6     !MNOPQRSTU@V WXYZ<[\]^_`ab@@cdefg   A ? @ A BC,/e&)./%/0D. -)p-+ ./012-3456789 :!;"<#=$>%?&@ABCDE,. ./012-3456 789:$;%<&=!>"?#@ABCDE,.: *5?8P@(#*xy-C6??)67P0X0+.|$%'{Gz?&!p!6 XP 6 5  I    !??@MNOXYZaefgw      hXP5I9:;uSA @u5 @  (q   ( q  4 @ @ @ @ @F F @@@F F FFF@@@@@@FFF@@@FFF@ FF@!FF FF@"FFFFFF6%o#$&@6(<4    #$ CameraControllerj5^mathmaxatandeg focalLength sensorHeightclampfloor_camcamPosXabscamPosYcamPosZ setPosition clearPositionnewyawDegpitchDegdistancefovDegaspectnearfartargetdampingcamYawcamPitch camDistancecamNearcamFarv3 camTargetX camTargetY camTargetZgridshowGridvisible gridScale setAutoSpinautoSpin spinSpeedsetViewportSizemsaa setSceneSize sceneWidth sceneHeight setCameraclaim _dragging_lastPos_initYaw _initPitch _initDist _initTarget_prevYaw _prevPitch _prevDist _prevTargetX _prevTargetY _prevTargetZrad_tYaw_dirty_tPitch _tDistance_tTargetisObjectSelectedxzcossinorbitupdatesetOrbitpositionhity getSceneSizepanModepanSpeedpan orbitSpeedsqrtasin resetViewinitadvance pointerDown pointerMove pointerUprequireCamera3D CameraSharedMath3D J J )$I )I  @d %N0J  J  ) $  I    ) I   D.  (   @  ( l'I  D. ?s-I  I   dI    d      -C6?  } 6 * 9 uN0 J   H J   H )$ I  T ) I  \  D. d  g2  '!"#'!6$6$ %&' (:)'*I  , D. d  -./ 20 e1234* =5 %6g7 g2 r8* 9 :1;g<2?= > ?  H@T\d !"#$%&'()*+?,-./0 123456789:;<**I 0* I 0  D.  00 1J H0/1g2?  g2g2?N0J  H0 J   H0) $  I  !0 ) I  #0  D.  00$%&'() ))'*+,'*6-6- ./0 1:2'3I  50 D.  00  678 9 7=0>?8_h!_h!?00@9{Gz?H0A :!;"<B@00#$%&'()*+?0,-.? BhcI  I   dI  : 7  2 I  0 #%  " d" I   D  I  L  #  !  #  "  #  !  #  !  dx     -C6?  (1C)=0 DEFD GL HI=%gr 345J6B? C1K2LRY\ptw ""  J   $ $   J   $ $    I  0      I  0    dI  0        # #           t# ) " d"I  `I h#! #" #!#!d3 t#) " ," ,!d",!I tK  $" $D. !I #!$%D. !I  `# " ,d",!I t $ " #!  d"#!dI h#!  d&3 t# ) t# )   x' ( )1CK2 DMN$  0-C6?  OPQE-DT! @RF`Gh@St{Gz?TsWMsWM?HL 12L5*2N0g2 d    dt  !6 :8=%g !r"#$1%&?'( ) * + e, - S./ !"?   ?RPOU$&()+-. 123456789:;<VIWXYZ-A @ @ @@@@@@ FFFF@ FFF@ FF@ @ F@ F@ @F FFFF F F F [@\]^      GPURendererjcolorBufferHalfFloatr16floatformatblendsrcColoronedstColorzerocolorOpaddsrcAlphadstAlphaalphaOp _mrtEnabledtableinsert_ctxwidthheight gpuCanvascanvasfeatures _mrtFormatprint&[GPURenderer] MRT depth-colour format:E[GPURenderer] Float render targets not supported — MRT/DOF disabledMissile3DShadershader'[GPURenderer] Missile3DShader not foundnewvertexfragment vertexLayout colorTargets depthStencilcullModebacktopology triangle-list sampleCountstride attributes float32x3slotoffset src-alphaone-minus-src-alpha depth32floatcomparelesswritemsaapipelineMissile3DWireShader+[GPURenderer] Missile3DWireShader not foundnonefloat32 less-equal wirePipeline PBRShader float32x2 pbrPipelinesizeusageuniformpbrTransformUbopbrMaterialUbopbrLightingUbopbrReady [GPURenderer] PBR pipeline readyN[GPURenderer] PBRShader not found — PBR modes unavailable, using legacy only PBRWireShaderpbrWirePipeline pbrWireUbo OutlineShaderfrontoutlinePipelineoutlineMaterialUbo$[GPURenderer] Outline pipeline readyE[GPURenderer] OutlineShader not found — outline feature unavailable renderTargetdepthTexview depthViewmsaaTexmsaaView colorView depthColorTexdepthColorViewdepthColorMsaaTexdepthColorMsaaViewubowireUbo ImageSamplerclampbilinearsamplerbuffercreatewritef32 _dummyUvVbo rgba8unormwriteu8dataupload _fallbackTex _fallbackViewminlinearmagwrapU clamp-to-edgewrapV _gpuSampler initGridGPUgizmoinitGPU lightIconskyboxmeshvertsnormsindicesxyzbuildSmoothNormalswriteu32edgesipairsindex quadEdgeslayoutubosgetBindGroupLayouttexturessamplershandlesnamevboibowireVbowireIbo quadWireVbo quadWireIboquadWireIndexCount outlineVbo indexCountwireIndexCount bindGroup wireBindGroup pbrBindGrouppbrWireBindGroupoutlineBindGroupcameralightsgetViewProjection getPosition getLighting viewportWidthviewportHeightgetPrimaryDirectioneyeDir_ubuf_wbuf resolveTargetloadOpclearstoreOpdiscard clearColorcolor depthLoadOp depthStoreOpdepthClearValuebeginRenderPassstore skyEnabled skyOpacity skyEnvView skyIntensityskyYawskyPitchrendergridobjectsvisiblePURenderer] no handle formaterial material3DgetWorldMatrixgetRotationMatrix_pbrTransformBuf_pbrMaterialBuf_pbrLightingBuf _instanceUbo_instanceBindGroup writeMat4writeUBO getEnvAmbientreadf32 setPipelinesetVertexBufferuvVbouint32setIndexBuffer envBindGroup setBindGroup submeshesresolvematUbo indexOffset drawIndexed showWireframe shadingMode wireframe wireQuads_instanceWireUbo_instanceWireBindGroup _pbrWireBuf writeVec4Colorred wireColorgreenblue wireOpacitymath wireThicknessoutlineEnabled_pbrOutlineMtlBuf_instanceOutlineBindGroupdiffusedirspecular shininessambientI colorShadowcolorHighlightcopymaxpointposition syncGizmofinishfloorresizeimageinitCameraGrid initGizmoGPUinitLightIconGPU initSkybox uploadObject removeObject renderScenegetImage getSamplergetDepthColorViewrequireMath3DScene3D SceneObjectGizmo3D Material3D Lighting3DLightingShared LightIcon3DGpuTypes GPUTexture GPUBuffer GPUPipeline GPUBindGroup GPUSamplerMATERIAL_UBO_SIZELIGHT_UBO_SIZE6 6          56 6 _ 7 l  J4 8Ѐ      8Ѐ    6bb Ml O    @  @  @FFF 6   5 6 "5 6 '6*7  J!7    + ,  6 2 s :3 M4 5 @ 6     6 8  5 6 :5 6'6*6=7  J!7    + ,  6 @ s :3 M  8A B   R  6   5 6 "56'6*7 J!6D56F7J!7    +,  6 2 s :3 M  6G  6 L  AM  6 N  H  2O  6 N  H  P  (Q @ R  @ S   (Q T   1  6 8  5 6V56'6*6W6Z6]7J!7   +,  6 @ s :3 M  ^  6 L  _ `   6  6 b  56"56'6*7J!7 +, 6c s:3 M  d  6 N  H  e @ f  @ g   6 i  :3 M  j j `k  l :3    6 m   :3 M  n n `k  o  n p  o l  BA  6 q     Sr Sr `k  s :3    6 m   :3 M  t t `k  Iu  t  Iu   Sr  s  t  Iu  6 L  v  6 L  w yG zz{  | ч  0?;< @C!=E$<&%>?p@@AHIJKBHJKCDEFGHJ@U!#$<& @B@#$X&Y@H@;$[&\IJKLa-./0?MNOPQ-h1RSTh1UVWh1(XYZ[\]^G_`abcчd҇HCJef((g҇hijklmnopqr b  : O704s b  : Opt04u b  : Opv04u b  : Op 04uw/ ! .*4 @)  8;   ( )  5!6"K"J7!"! ?LM #60L!S1.56 4!M! 7 /N$A9!O #60 N" S1  .5 6!4"A9"!6"A#O#"7 ! /}PZQ6 a R S T U V W)!! X Y Z)! ! %[ z\ ] ^ b_ ` bxyz{bc@8@?|d(@@} @~(@0@4@P@J@@A<@@@B@D@F@H@@@?@$%&3$%)5\./,23;]E>BCDkr./>?22!S2"C2 C@2FC2C@a2IJIJMNRSTUVWXYZ[\]^_`}Nb8   I  l  M     y      8}  : :56 `!J577 6  ` J5" !7J4 %06(D&6- `s'q.1560`577 60 `5" !7J4 %06(D&6- `s'q. 1M>2%34 5 %3!6"O7#o89  ':9 <C8=;S>P }?!Z@  ! BD!C"Z@ C D!E"VF"##"$+G$%(H% %M!&IM&%%%&6J'AK(2L)M*N+O,HP-Q.$RM-/-/'M.0.0I 111S2*34#1 111S2*3@4"1 111S2*34$1 111S2*34$13*1/T13+41!2U13+1(T13,4512U1 111V154 5C4KJ,W6,7W 5Zd5KJ,[7,8[ 6Zd6KJ,\8,9\ 7Zd7KJ,]9,:] 8Zd8;#=58#>14!<=>24!<=>34!<=><lA+B?=2U?A+?>T?AB7~?M>@>@|M?A?Ab}B^ CCCSDBEF#C CCCSDBE@F"C CCCDBEFGHIC CCCDBEFGHIC CCCDBEFGHIC CCCDBEFGHIC DbE!YD*CD E(bF!YE*DE F0bG!YF*EFH!*GHHID. FDF GGGHBIJCKDLEMFG GGGHBIK!+LM D. JDJKLMG GGGHBIJKLMG GGGHBIJKLMGIBG@TGI=G`GIJ:GdbGI;JfGrgGIJAGiGI<GpG=!=N==K==H==E=>?5@M@A@AD?EB!2UBD?B>TBD=B`BDEBdbBDeEfBrgBDEABiBDnBpB 'b( Y'*&' ((b) Y(*'( )0b* Y)*()+ **++,D. )D) ***S+,-#* ***S+,@-$* ***+,-./0R* ***+,---...///0R* ***+,-Ξ.ޟ/Ξ0ޟ* ***+,-./0* ***+, .b/ .*-. /(b0 /*./ 00b1 0*/00* ***+, .b/ ].*-. /(b0 ]/*./ 00b1 ]0*/00* ***+,-&.'/(0)* ***+,-./0*,*T*,*`*,-a*db*,e-f*rg**zm*,-zm*i*,n*p** q*A*%z+ +=* *+,-./* ***+,-/0 +J/0 ../0*,*T*,*`*,-w*db*,y-f*rg***,-*i*,%z*p*:9$ 4۬۬D&D&>> 95;\]VTY[4SW.A0#&'?)*+,/w-C6?CDE>BCD30@bd4@8@<@dxeIJ|}~o@b(b0bY@_DMbP?MN?tv ?\I  J  I  J  b  .   6 : M`:   6 : M`l=O:O  6    SS`:    6     : M`II  0Q( 4RST UVW? XYZ[  bbYa 0005:lOb 8    IS6A2( !"5}# &@' &@( &@) &@ * &@ H+ &@^, &@ 5-./ 01>2%34O5o6c7 p8 9 E: p; < .= >  ?  @  A  B  ]CD@@@45;\]RUVTZ[XYajkre>IBCDJEMNbc@tvwu!eA @ @ @ @ @ @ @ @  @  5       uE@FFFF F FFF F @@@@@FF F @@FF@F @@@@FFFFFFFFFFFFFF6 !  "@        BloomVertjZBTSR _ _23 2H >2p  ,2vs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; smooth out vec2 _vs2fs_location0; void main() { uint vi = uint(gl_VertexID); float x = 0.0; float y = 0.0; VOut out_ = VOut(vec4(0.0), vec2(0.0)); if ((vi == 0u)) { x = -1.0; y = -1.0; } else { if ((vi == 1u)) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out_.pos = vec4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out_.uv = vec2(((_e21 * 0.5) + 0.5), (0.5 - (_e26 * 0.5))); VOut _e32 = out_; gl_Position = _e32.pos; _vs2fs_location0 = _e32.uv; gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w); return; } fs_mainmain#version 300 es precision highp float; precision highp int; struct UBO { vec4 params; vec4 texelSize; }; struct VOut { vec4 pos; vec2 uv; }; layout(std140) uniform UBO_block_0Fragment { UBO _group_0_binding_0_fs; }; uniform highp sampler2D _group_0_binding_1_fs; smooth in vec2 _vs2fs_location0; layout(location = 0) out vec4 _fs2p_location0; void main() { VOut f = VOut(gl_FragCoord, _vs2fs_location0); vec4 col = vec4(0.0); int i = -4; float ty = _group_0_binding_0_fs.texelSize.y; float w[9] = float[9](0.0539, 0.1216, 0.1945, 0.221, 0.221, 0.1945, 0.1216, 0.0539, 0.0396); bool loop_init = true; while(true) { if (!loop_init) { int _e41 = i; i = (_e41 + 1); } loop_init = false; int _e20 = i; if ((_e20 <= 4)) { } else { break; } { int _e26 = i; vec4 _e32 = texture(_group_0_binding_1_fs, vec2((f.uv + vec2(0.0, (float(_e26) * ty))))); int _e33 = i; vec4 _e38 = col; col = (_e38 + (_e32 * w[(_e33 + 4)])); } } vec4 _e43 = col; _fs2p_location0 = _e43; return; } UBO_block_0Fragment_group_0_binding_1_fsvs_mainvs_mainfs_mainfs_main // language: metal1.0 #include #include using metal::uint; struct UBO { metal::float4 params; metal::float4 texelSize; }; struct VOut { metal::float4 pos; metal::float2 uv; char _pad2[8]; }; struct type_6 { float inner[9]; }; struct vs_mainInput { }; struct vs_mainOutput { metal::float4 pos [[position]]; metal::float2 uv [[user(loc0), center_perspective]]; }; vertex vs_mainOutput vs_main( uint vi [[vertex_id]] ) { float x = {}; float y = {}; VOut out = {}; if (vi == 0u) { x = -1.0; y = -1.0; } else { if (vi == 1u) { x = 3.0; y = -1.0; } else { x = -1.0; y = 3.0; } } float _e15 = x; float _e16 = y; out.pos = metal::float4(_e15, _e16, 0.0, 1.0); float _e21 = x; float _e26 = y; out.uv = metal::float2((_e21 * 0.5) + 0.5, 0.5 - (_e26 * 0.5)); VOut _e32 = out; const auto _tmp = _e32; return vs_mainOutput { _tmp.pos, _tmp.uv }; } struct fs_mainInput { metal::float2 uv [[user(loc0), center_perspective]]; }; struct fs_mainOutput { metal::float4 member_1 [[color(0)]]; }; fragment fs_mainOutput fs_main( fs_mainInput varyings_1 [[stage_in]] , metal::float4 pos [[position]] , constant UBO& u [[buffer(0)]] , metal::texture2d tex [[texture(0)]] , metal::sampler samp [[sampler(0)]] ) { const VOut f = { pos, varyings_1.uv }; metal::float4 col = metal::float4(0.0); int i = -4; float ty = u.texelSize.y; type_6 w = type_6 {0.0539, 0.1216, 0.1945, 0.221, 0.221, 0.1945, 0.1216, 0.0539, 0.0396}; uint2 loop_bound = uint2(4294967295u); bool loop_init = true; while(true) { if (metal::all(loop_bound == uint2(0u))) { break; } loop_bound -= uint2(loop_bound.y == 0u, 1u); if (!loop_init) { int _e41 = i; i = as_type(as_type(_e41) + as_type(1)); } loop_init = false; int _e20 = i; if (_e20 <= 4) { } else { break; } { int _e26 = i; metal::float4 _e32 = tex.sample(samp, f.uv + metal::float2(0.0, static_cast(_e26) * ty)); int _e33 = i; metal::float4 _e38 = col; col = _e38 + (_e32 * w.inner[as_type(as_type(_e33) + as_type(4))]); } } metal::float4 _e43 = col; return fs_mainOutput { _e43 }; } vs_mainmainstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const _9 _38 = { float4(0.0f, 0.0f, 0.0f, 0.0f), float2(0.0f, 0.0f) }; static float4 gl_Position; static int gl_VertexIndex; static float2 _20; struct SPIRV_Cross_Input { uint gl_VertexIndex : SV_VertexID; }; struct SPIRV_Cross_Output { float2 _20 : TEXCOORD0; float4 gl_Position : SV_Position; }; void vert_main() { float _31 = 0.0f; float _34 = 0.0f; _9 _36 = _38; if (uint(gl_VertexIndex) == 0u) { _31 = -1.0f; _34 = -1.0f; } else { if (uint(gl_VertexIndex) == 1u) { _31 = 3.0f; _34 = -1.0f; } else { _31 = -1.0f; _34 = 3.0f; } } _36._m0 = float4(_31, _34, 0.0f, 1.0f); _36._m1 = float2((_31 * 0.5f) + 0.5f, 0.5f - (_34 * 0.5f)); gl_Position = _36._m0; _20 = _36._m1; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_VertexIndex = int(stage_input.gl_VertexIndex); vert_main(); SPIRV_Cross_Output stage_output; stage_output.gl_Position = gl_Position; stage_output._20 = _20; return stage_output; } fs_mainmainZstruct _5 { float4 _m0; float4 _m1; }; struct _9 { float4 _m0; float2 _m1; }; static const float _43[9] = { 0.0538999997079372406005859375f, 0.1216000020503997802734375f, 0.1944999992847442626953125f, 0.22100000083446502685546875f, 0.22100000083446502685546875f, 0.1944999992847442626953125f, 0.1216000020503997802734375f, 0.0538999997079372406005859375f, 0.03959999978542327880859375f }; cbuffer _15_14 : register(b0) { _5 _14_m0 : packoffset(c0); }; Texture2D _17 : register(t0); SamplerState _19 : register(s0); static float4 gl_FragCoord; static float2 _26; static float4 _29; struct SPIRV_Cross_Input { float2 _26 : TEXCOORD0; float4 gl_FragCoord : SV_Position; }; struct SPIRV_Cross_Output { float4 _29 : SV_Target0; }; void frag_main() { float4 _49 = float4(0.0f, 0.0f, 0.0f, 0.0f); int _51 = -4; uint2 _70 = uint2(4294967295u, 4294967295u); _9 _22 = { gl_FragCoord, _26 }; for (;;) { if (all(bool2(uint2(0u, 0u).x == _70.x, uint2(0u, 0u).y == _70.y))) { break; } _70 -= uint2(uint(_70.y == 0u), 1u); if (!(_51 <= 4)) { break; } _49 += (_17.Sample(_19, _22._m1 + float2(0.0f, float(_51) * _14_m0._m1.y)) * _43[_51 + 4]); _51++; continue; } _29 = _49; } SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; _26 = stage_input._26; frag_main(); SPIRV_Cross_Output stage_output; stage_output._29 = _29; return stage_output; } HSLT_5 _15 _15_14_17_19vs_mainvs_mainfs_mainfs_mainh # GLSL.std.450vs_mainVfs_mainORUVH#H#H #H #G G"G!GH#G"G!G"G!G *G GGO GRGU    +     ; ; ;  ; ; ;!+ + + !+"@@+#+$?+%? '.(.* , . -/ 8 = H P;PO S;SR;U W+[?\=+\l =+]+G>+^Mb>+_3"=, `[\]^^]\[_,a####+ b+ c+ d g i jq  rqs/,qt+ u,qvuu  6;'&(;')*;,+-= ../010232>& >) 13/4!54676>&">) 57>& >)"5511=9&=:)P;9:#$A8<+><;=>&?>%@?%=A)BA%C%BPD@CA=E+!>ED= F+QGF>GAHI!=JIKJ>IKQLF>L86VM;8ea;gfb;rwv;=QO=TRP NQTAWX=Y=ZhhAjkX!!=lkmmnpxx=qywszty/{z|{n||Q }y/~} ~!Pq!qy>woo= f/cnQN= folP#VYZW= f c>`A'==e>epp= f d>fmn=e>U8CardControllerj & getCameratargetxposXyposYzposZrotXrotYrotZ worldWidthmathmax worldHeightopacity doubleSided_ctxnewDeckfaceprint0[CardController] No artboard assigned to 'face'._deckinstance frameOriginnewCardadd_cardadvance drawCanvas getSceneSizedrawinitupdatelaterequireCard3D CameraShared C & k!k!]!]  V V   J 8Ѐ  J 8Ѐee   MbP?  8Ѐ5 * e 0@M o     0@F \ ' & k!k!]!]   a p    x6 pAe         @Y@!"  #pA A @ @@F@FF@F@F@@ F@ FFFFF $@%&GltfViewport3DjgetInputValues fromInputs GltfViewportnewwidthheightformat rgba8unormbuffercreatewriteu8datauploadview _gpuTexViews _fallbackView _albedoIdx _emissiveIdxgetArtboardTexView _normalIdx_ormIdx _gpuSamplerlayoutubostexturessamplersgetBindGroupLayoutslotsampler _texBindGroup _cloneBgEpochemissiveImageIdxalbedoImageIdxnormalImageIdx ormImageIdx getRegistry materialIndexactiveresolveWithOverride hasAlbedoTex hasNormalTex hasRoughTex hasMetalTexhasAOTexhasEmissiveTexuvArtboardActiveclone baseColor isClaimed roughnessmathclampmetallicemissive emissiveColor useTexture gltf_modelrendererhandles _submeshes submeshesipairsmatUbosizeusageuniform indexOffset indexCountsubmeshresolve bindGroup_envUbo _envUboBuf _envSampler _env1x1Viewwritef32write _envViewSeen _envBindGrouppbrWirePipelineoutlinePipelineoutlineMaterialUbo _gpuTexturesmarkNeedsUpdatescenectx _cloneCountgltf_model#clone_ removeByName removeObject setRegistry_primBaseColor_primRoughness _primMetallic _gltfImages_submeshArtboardOnmodelstringmatch ^%s*(.-)%s*$^"(.*)"$^'(.*)'$find%..glbtableinsert.gltfblob parseGltfFile primitivesimagesmergePrimitivesToSubmeshed parseRegistry rawMaterials rawTexturesprint#[GltfViewport3D] Failed to parse: ''([GltfViewport3D] Blob not found. Tried: concat, buildCubeMesh;[GltfViewport3D] No 3D model loaded — using fallback cubespecularnormalStrengthaoemissiveIntensity matOpacityior transmission clearCoatclearCoatRoughsheen sheenTint anisotropy sssRadius sssStrength fresnelPower wireColor wireThickness wireOpacity wireframeoutlineEnabled outlineColoroutlineThickness shadingMode colorShadowcolorHighlight showWireframeColorrgba material3D_submeshBaseMatadd uploadObjectvertsuvsuvvertexuvVbo _fallbackTexminlinearmagmipmapwrapUrepeatwrapV pbrPipelinepbrTransformUbopbrMaterialUbopbrLightingUbolen decodeImageandThen activeModel _dotPoints _dotMvpCachefloor MAX_CLONESscale stepScalemodecount radialArcradabsmaxcosradiussin radialFacingMat4 fromRotationYstepRotYfromTranslation fromScalegridRowsgridCols gridDepthgridGapXgridGapYgridGapZspacingXspacingYspacingZnamemeshedges quadEdges transformmaterialvisiblegetWorldMatrixgetRotationMatrix getMatrixrotationxyz fromRotationZ fromRotationX findByNamegetenabled getVersion_cloneVersionSeen _cloneLocals_cloneBgEpochSeen _cloneTUbos_cloneWireUbos_cloneBindGroups_cloneWireBindGroups_cloneOutlineBindGroups _instanceUbo_instanceBindGroup_instanceWireUbo_instanceWireBindGroup_instanceOutlineBindGroup getSceneSizegetViewportSize_msaainitGPU#[GltfViewport3D] GPU re-init failed getLightingpointpositionv3color lightIconinitLightIconGPU _gridInitCamelapsed getCameracamera [GltfViewport3D] GPU init failed initSkybox _env1x1Tex clamp-to-edgePath_dotPathPaintwithstylefill _dotPaint _dotGlowPathfeather _dotGlowPaint setCameraaspect _displayW _displayHresize setSceneSizeopacityclearCoatRoughnessuvTileUuvTileV uvOffsetU uvOffsetV uvRotation uvProjectModeisArtboardTexActive uvOpacity uvEmissiveuvEmissiveIntensitysyncFromInputs wireQuadsobjPosXobjPosYobjPosZ setPositionobjScalesetUniformScaleobjRotXobjRotYobjRotZsetRotationDeg_dirtyinitCameraGrid getEnvViewshowBackground skyEnabled skyEnvView skyOpacity intensity skyIntensityyawskyYawpitchskyPitch envBindGroup pbrBindGroup renderScenegetImage_dof setSource_dofVersionSeen setEnabled focusDistancesetFocusDistance focusRange setFocusRangeaperture setAperture blurIntensitysetBlurIntensityblurIterationssetBlurIterations renderScalesetRenderScale tiltStrength tiltCentre tiltSharpness setTiltShift ensureSizerun_artboardUnitsPerPxgetViewProjectioninverttransformPointnorm3sub3dot3sqrt_lightSelectedsetObjectSelectedgizmonone hoveredAxis_lightDragging _lightLastPtrdraggingdragAxissetGizmoCapturedhitTest startDraghitdragsetPointPositionendDragVectorxymoveTocubicTocloseindicesbit32bandsortceilpypz intervals getSampler hasOutputsavesrcOver drawImagerestoregetDotSettingsshowDotsdotSizedotModedotCountdotColordotGlowdotGlowIntensityalphadotGlowSoftness _dotModeCache_dotCountCache _dotSizeCachereset transformVec4drawPathScifi_satellite_04.glbinitupdateadvance drawCanvasdraw pointerDown pointerMove pointerUprequireScene3D SceneObject GltfLoader GPURenderer MeshLoaderMath3D CameraSharedCamera3D Material3DMaterialShared GlbMaterialLightingShared LightIcon3Dpostfx/DOFControllerpostfx/DOFShared ClonerSharedHdrSky HdrSharedGpuTypes GPUTexture GPUBuffer GPUSampler GPUBindGroupA   %  4 6  p`@?@p@AB CDEFG  iuU z M   ? 1   @ 9CA B 6 ] , , - - i. i. C C D D E E F F G G 4H 4H ?I ?I GJ GJ K K 0L 0L dM dM N N O O P P V >V W W X X Y Y Z Z [ [ ]\ ]\  ,  , % M   ^   % ) _  dD. b  - M   ^   ) _  dD. b  i.  %c    B    d  M   e nM   f M   4g  )h  yi 1M   j  k  6m[ p"[]\ p]\YS pYS+T0q+TU0_U>V0rl  s t  u   v D +w4  z䁇) { '`B ; '`B)|;'q (q){}`Bno p025!"# qrstuvCwxyz {|}~7,-.CDEFGHIJKLMNOPQRSTUVWXYZ[\1Y@34()*+,-[\STUl?  䁇 @L@@AM;d'I      ?3 #! -C6?5-Ow'I  @    I  $@I  ,@ (K 8@(8.O # $ I  D@  Q# I  P@  Q# #!    3  ll#I  $@! ' x  # ! #9-O"*#'I  @    k$'I  @    %'I  @    ##   (  ( (()()() (  8 (  8 7(82"M&#" '#" (##!  ll#I  $@' x# !#'99 9 'I  @    ()(8." )#  !*#  +#  #!      ll#I $@  '  x  # ! # 9,??3@$@,@Dlv@8@D@P@-C6?lx@    &##6 Z..FV F+     ! P  P#  (P# P P(P@V@+ *r8 1 } 9@V @ +  U:WXYZ9    ' mor    _    P* 4O * P* 4 ( K  4          XP  `P #  hP # 4  # # F VF+   '  8 1} 9  6!2"#}$5%& 'M (Y)8' 1## **++.,.,FVF+  ! "-}$/. M /64/.]5 M /6 4]5 6  M   !" #$%&   6 !Z7 !M  !"#!!"Z7!""8 !"M! "#$""#8"#""9$6 #$#"$:"7;$Z7 #$#"<$8 #$#"=9i&%>U:9W?34XP`PhPXYZ;$F.@p@AB0123 ^f  C p p@     4           4       D @            p      V:vp@@ f &y yr  C   p   @ M M 6  4       4      D  |          !  p"      #   6 )  ,   7M  >7 8 79M  79 79 Y:M  Y: Y: +;M  +; +; <M  < < =M  = = >M  > > ?M  ?  dD. 50 * @ ? A  A A ]B  ]B ]B Y:  Y: Y: +;  +; +; <  < < >7M  >7 8 8 C dD E F G  C qH I  C J K L M  C  N OU9$F025~7.8()*+,-\]1340^@@ rfy    $ _  Q   > e%rkOo6   r)        Wc6 A 2 F E D C  2 M >    M       Y!     <"#'$#}&5%MM'M(M ))     )) <"}& 5%   * *+ *+,T-   .T-aw/ 0{13 _  23456789:S;<T=>|?@A|B{1  C DvE6FG:UV?O$F.?9;=`  $$ " I  I     #  $3 ?  Q$)($ 3 )'.                 i    i     K                     ?@  ' K   #"#"  3 I    "    3  : *e      : y I @I @     # $    $$         c b  _   O P                      )*    e   4  1          )                   3@?:? y   -,  e '     " $   " $      k         ;:  7     I  L    I  L         #  $    $   $      O  :3L ? 3#"e k  g    :  o)!J6  !! J6 ! ! J6  ! J6    i"! J6 " ! J6  " J6    i"" J6 " " J6  " J6    i!" J6 ! " J6  ! J6    i܋I?  5 @;:>@ ?*4*I  058-   '    '    6   ! !)     ! !)     ! !)    '9 @30?@ UUUUUU?  )'K 0 *y7A f9AA0A ! )'K 0  * #  !)I   $   '  y7A f9AA0A?3$? *4*I  0O55  8=   '   '    "  "  "  "  "  "##"##"##"##!#!I 40) ! '9 F FFFF5   8 S ()'  '  '  )'K P0*I 40)'K P0*GG##6 # #! #!  # #! #!  # #! #!  9  @30?@?40xV4Ay7A f9AAP0A 34  " # I  'J J ?3  " # I  'J J ?3 "  A" " "" " " 3# #!  H"""##!# ## "# #"# # "#! # #!! !# ! # HzHz>?   ( " # I  'J J  "  # I   ' J J      @;+      '    '             M'  !:5  8   9 < 5 @  ; 4'2 : ?3>@@k<  )'K 0 *y7A f9AA0A0*4O4 5  P@  ; $         : " " "         5  H H FF FF5 8 5 8 5994* I  8Ѐ8() '  '  '  D HЀ "##"# I " !8Ѐ!' !J HЀJ PЀD PЀ "$##$ I # "8Ѐ"'!"J ! HЀJ PЀ    D HЀ! "%#$%I $ #8Ѐ#'"#J!" HЀ J PЀ   ! D PЀ " "&#%&I % $8Ѐ$'#$J"# !HЀ!J ! PЀ 8 #!"8! % $%#4&$'%&$%9!99m@5FFF FFFFFFFFI `ЀI hЀJ PЀ5(82'!$ !# !!( 8)'%!$$%##$ !"##$%"#4$#%%$$%4&# %&'(% '#( (#%"&'(!$$&'%%& &$!$4''&'6'!'E"'&#'$'< '&99 4O5 5 P@;O# < $"##!"#))#'()"K($)$ ''P''*&(!%!&I % $8Ѐ$J#$ "PЀ"# $ E% &(&"'8&,)-#',-"K,$-$ +'P++**(+ < #)*+*+,#4-# +-'/+ .#/ /#+"-./!.*-). .#+"/)*!,./!**-'++4.'-.6.),.$.%. .-9&: *>P@& .>(@@38Ѐ?@HЀPЀ8xV4A`ЀhЀ? y7A f9AAPA 6789:  O4O *4*I  P4?@3P : O4O *4*I  P4O O O 5  @;  : ?@3P@>@2 T  e) D.  $E       ]8yr       y    V #   ) )w)J p8yR D!"#$%!$# )pR )&'I  +D.  $ )pR D!B,J p-.M /0  .1./0 2 2Ms3 8    9p5                      2s344. 6PC;9%"7&"8'"9(# :#'; '-&H'<&#(#'#)$'#*%'++&*+*#+I(,( +>+,?+,I),) +>+,?+,#,(!+,#-)",- -./+0,1- -./+0,1-:E @@A:{Gz?34$U9?p333333?p>PCMbP??333333? 5dq de    fyr8y s %!"#5$5S%&'(<)*n+,1-T.{/u0 3U45W6t78z9:P;5*<5/=5]>5?5Z@5ABC5DE)FGHI J K L .M N O eP Q SRSa8VU:\]^_SH  IJONKW<`FA @ @ @ @ @ @ @ @  @  @   @   @   @   @  @ @ @ @ @5u6% (` (`@)F F@*FF F@+F@,F@-F @.FF@/F@0@ 1F F@!2F F @"3FF!F @#4F@$5F@%6F@&7F FFF FFFFFFFF"F@'8F@(9@):F@*;@+<@,=@->F,FF)F F*FFF$F%@.?FFF FF F&@/@FFFFFF FF FFF@0AF&F@1BF@2CFF.F FF FF-@3DFF#F FF"F F@4E@5FF@6GF@7HF@8IF@9JF@:KFF6F7@;LFF @O@?P@@Q@AR@BS@CTF?F@FA@DUF FFCF=@EVF/F0F2F1F3FDF:F;F<EW@02I@Y@7@ !"#$`     !"#$%&'()*+,-./0125;<=>?.  !"#$%&'()*+,-./0125;<=>?@@#yqL :Qqc65G7{%%BUqYY8h<%@չ\ < 8`DDD Thumbnaild oDD%(7 Circle_Scan :=;7 Timeline 1:L>;<=<>57State Machine 19Layer 1>=?A@9Layer 2>=?A@ P"E`DDDHUD 2>> CC CG%+G%̱%AA%A.5B%B%% D  G% +G% ̱%A A%A .5B% B%% 4SKDG%+G%̱%AA%A.5B%B%% DG%+G%̱%AA%A.5B%B%% ,&'G%A'+G%A'̱%'A%'.5B%A'B%A% >/0G%A0+G%A0̱%0A%0.5B%A0B%A% H89G%A9+G%A9̱%9A%9.5B%A9B%A% p}ABG%AB+G%AḆ%BA%B.5B%ABB%A% LLJHCHC% BM NR@/NR@/@NR)\% BSTq=Tq=@Tq=@@Tq=@% #BZ[q=[q=@[q=@@[q=@% ` Cabq=bq=@bq=@@bq=@% Chiq=iq=@iq=@@iq=@% :o pff/pff/@pff@)\% Luvq=@vq=vq=@vq=@@% u|}q=@}q=}q=@}q=@@% `O q=@q=q=@q=@@% b@@@@% xPCQCY Y Y CY C% ȕNQCZ CY Z Y C% ȕNQCZ CY Z Y C% xPCQY Z CY CZ % ȕNQZ CZ CZ Z % ȕNQZ CZ CZ Z %? PB; KGYK?GYK?GY@KGY@%? P KGYK?GYK?GY@KGY@% P KGYK?GYK?GY@KGY@% @B KGYK?GYK?GY@KGY@% ?9=@ @`D)D)D HUD_ElementQ8?)\?)\? CC ql7(A(%w ꣮Aql7(A(%w ql7أA  ( (A%w ql7((A%wG= VmVm ŷ;= B= %w ǷB; B %w ;ǷB!" " B%w ; ŷ&'= '= B%w ql7ql7+^C^C*7>!b"^C-&-&'? ql7ql70^C^C%%A%(((? CC6(B7 888 833K@8GA8A8@GA8@33K@8? 8?%===%6E FzAF?AF?\?F@HJF@QFzFQFHJF\?FA%===%6 S T\A\ATŒA\AT)\o?T?T\FT\\TF\T?T?)\oT\AŒA%===%6 BBa b\\b\bq?տb@տb\A(FAb\A\Ab(FA\Abտ@bտq?b\%===%6 Bo p\\Ap\Apq??p@?p\AFp\A\p(FA\pտpտ)\op\ŒA%===%6 B} ~\A\~ŒA\~)\oտ~տ~\(FA~\\A~F\A~?@~?q?~\A%===%6? $A {B3s   WqV؇>WA@p#^T>%UB@VE?W5?·ST!U?HaNףH(|==E1)3+)\k%µ)VMK?WAAHAT=UAAV[?W"@pA= @TտUU@Vt?WzA@AuATUA@V?W?QAffATU?q=A)\AVM?WU?AףAT'Uyk?V?W?pB{BTU?Vo?WB@GBu'BT'ֿUKB@V:?W? B9BT ֿU\? BKB B3TB B]BG BoBV?W{> BqBT>?U*>\AfBVW=AeBT?U=VuͿW9?QABRBT?UѦ?)\A>BVɿW=QA=BTh5?Uм=VWN?33A3BT?U?VW=A#2BT˯?U=VؿWƩA)\#ATw؅?UAVWƦAQ{6TP#%?UĎAVW=)\{7TM?UK=VtֿWrE?kITh?U?VտWK=kJT}$?U=Vu WN@)_Ts?UN@VO%W;5=z`Tf?UF= oVCWڭ> LqT 'Uy>%===% q} . oBq ]B qTB KBk =9BVW\?.'BT{0?U?VWKB@ WBTů?UB@VIW?RAT$?U?V$Wyk?= pAT?U?zAVW? uATq?U?VWA@q=)\@Tڪ?UzA@V_WU@T@UF@V BoTz{U{ղ>B`VT?W=B)_T5U=V2$@WN@AkJTx#U BTɿU=GBRBV?WѦ?\eBT@KĿU9?V?W=fBTIUݽ={ qBV6@Wo>B oBTW?U'>%===% )\=B BpVrS'@W/BAqB@T+UAAVX8@WAAu= #ATUAAVHWAA)@TL>UAAV-8WXAA3pT?U/BAV 'Wy>T;6@U>q}\"V9WF={"TO%U;5=V1?W?tzT%*U?lG.cGV!>Wa=bGT0@U=VǾW'?kQTnx.@UD?V!־Wa=LPTK.Ua=V>WHA ףzD@TI@U̎AVWRABPBTg/@UHAV!־Wa=HaQBTK.Ua=Va>WD?aBGT0U'?V!>Wa=#cBGTK.@Ua=kBGtBzVwPW?B{"TN(@U?V5W=RxB\"TKx4UTJ=ẊBV꥖>W>BpTU>%===%6 u R~?^CTnmU0?y?CVW{.?Q@@RxCT.G@U'.?(D@ WCVl"H@W0? \=JCV5GWն0?5CT1=U0?Q WCV4=W?.?)\kCT.GU'.? q=AC)\A:CVpWa.? 1A CTP]D@Uʌ.?335A3CVnD@Wi1?q=A CTpUa.? GWCVCW{N1?q=x{CTI=U1?sRCVY2=Wt,?GSCTXCU4,?GWC A^CQACVbW,?ffAECT@@U-?)\ACV@@W/?A^CTUG/? ffCV?W/?RCTv9$>UW0?CVC>Wk-?= RCT@U-?Q\C zA33C\A^CV&W-?\ACT<@U.?RA{CV<@W;1?ffA0CTv9$UW0? kCV)U/?H0CV V>W*,?= CT~U1?GCVQ>W,?CT8Uy.?={C R8'BCTzUH2?\$BC)+B0C./BCV;6@W0? L7LCVX5W{N1?#?CT>U7/?=; CV"U>W@o,?3\ CT5Uj.? FBCTU7/?CBQ CVmW?-?JBף CT2@U+?{NB WCVl2@Wga1? =V CV2W0.?B^ CT>U{/?\Z. CVj>W-?R CTl1U',?{V C qeB) CHaaB3s CVAfȾWy.?)hBCT/@Uy,? WmB\O CV/@W1?3eB) CTjžU 0? uu CVK.W}0?|) CTH>Uw9/?wCVS>WM+?kp{CT.U -?\uu C BCB+CV|7W,?5B=JCT,@U,?BCVtc+@WQt1?BCTHUw9/? q}CV^*W+/?f&CT?\>UW0?RxkCV>W{.?ކYCTtc+U+?RxC ŐBCBzCVrWM+? BCTyl(@U-?hBCV(@W0?=ʐBCTUUL/? q3CV&W/?͌fCT@ ?U0? HBV ?Wk-?)RxCT 'Uy,?  BCBBV4W.?BBT{%@U',? BBVL$@W0? BCT4U.?  R8BVn#W_/?q}BTW?U_/?E.BV?W?-?kBT#UM+?R8B BBHBHBV0W8.?3B=BT/!@U,?=JB33BV]!@W,0?BBTU,0?  BV W/?GBT&?U(1?h3BV!?&?W.-?+BTAB U,? qB :BBBq=B޹BRBRxB33BV@Wն0?5BBT)UT2?  BVWW0?BT6?U 0?\BV3?Wa.?(BTmpU.?{B B33B:BHBV-9W.?EB.BTi)@U4,?)BuBV@W+1?BR8BTsh9U+1?  RBV*vW-?fBTC?Uo1?H!RBV@?W ,?+zBTi)U4,?3B +BB+B)BV^FWW+? BBTYx@UW+?EBB{TB)B)B{BV@W"f1?+BBT@lFU/? 33BV"W/?R8BTP?U7/? BBV$Q?W ,?.BTUP-?.B BfBTOSU1?õBBVSW-?nBBT_n@U4,?õB BV@Wf/? )= BV W+1?\fBT(`?UW0?n.BVX^?Wa.?BBT9U.? = B =BpB^BǼBV >aW,?BףBT['@U.?hBq=BV['@W.?\BpBT(`UW0? GBVWT2?5BT+k?U(1?HBVk?W.-?f&qBT5kU -? 3BkB{TBBVOnW,?õBqBT @U*?^B{BV: @W,0?3BkBTVpU1? BVV WC2?=BT_{?U_/? QBV3y?W?-?=BTv U8.? cB)ܥB BRBV.|WM+?=BQBTM@U',?HBffBV|@W0?cB)ܥBT_{U_/? BV W0?{BTv?U0?BVn?Wk-?BT#U.? C̗BCBV1Wy,?CffBTO+@U-? CR8BV@W0?fC̗BT%US.?  ѐBVDW1?(BT8?UW0?gzBVX?W{.?q\BTCVUM+? CLB=jC3BVW,?3SC{BTT4@U+?CBV_@W S0?)CQBT UQt1? \BV_W S0? |BTב?U1?wBVÒ?W'.?"(BTU,?= B f CRtBC{pBV{}W -?CףhBTZ?Uy,?U CmBVY?Ww/?׃ CtBT{U}0? 3  eBVutW 0?R (^BTe?U{/?, YBV2?W-?=j zaBTZUy,?  CVB C{RBVxW',?= CzJBT ?U+?q]CffNBV(?W0? C(VBTMUH2? HFBV(W0?== ?BTI?U7/?\ p;BVz?W@o,?H CBT6qU?-? ZCH6Bq Cff3BVJWX+? 7Cף+BTE?UL.? C.BVU?W0?ZC 6BT!Uj.? ~Q'BVWf/?)\BTO?U!/?H)\BVy{?W,?)33$BTUf/?~)\'B C{BRCq=BV,˨Wy.?UC)\ BTC?U-? C{BV0?WW0?C{BT,˨Uy.? GBV@W/?HffATެ?U/?1AVN?W*,?HRBTUD-?  wCAC33AV!+W4,?fCGATK?U+?RCpAVk?W0?{tCATⰿU;1? ,AVk߿W0?׃)\AT?UW0?ͬ¹AV;?W-?RXATr3޿UdJ+?,A CzAC33AVWk-?HCATF?U,?"C{AV?W/?CzATS_U/? RX(AV(׿W1?)\wAT?U1?{RrAV?Wt,?)|ATFؿU,?U(A CUACQAV7W4,?CG1AT?U8+? Cף4AV4R?Wi1?CUATU{N1? 3ףAVSyпW0?\/)\@T%k?U?.?PH@V%k?W?.?{4AT*пUa.? NC33@\oCQ@V^LſW'.?)|CR>@T?UL.?ZC\B@V?W0?NC@TSZſUն0? Z\?ZZff)| ׃)|)|? )|C= GVʿWL.?lCzT%k?U?.?KCVSZ?Wն0?ZCHJTc̿Uն0? PT%kÿU?.?\/VÿW0?3T*?Ua.?{4q=Vձ?WM+? RC)\3VҿW8+?CST7?U4,?CWV?W{N1?{CR6T4RҿUi1?RC333  33s3 wVW1?ZQT11?U.?HVF?W,?= sTU.? fFCQVU'ڿW-?CffT?Uk-?CVS_?W/?qCGTٿU/?CCQ =HVWW0?=* Tk?U0?UV?W-?=T;U-? HCffVKW+?qCQTN?U*,?\oCVx?W+1?3C\Tk߿U0?HCQ \/\VWw9/?)\T0?UW0?V?WD-?\/TNU*,? NC VCW-?CT,˨?Uy.?RCVkA?W0?RCףT0UW0? fFff ffVOW!/?)|)\'T?Uf/?33$Vv?W\-?CffTQU8+? =*CG,VEWL.? C= 4Tڢ?UL.?NC7V?W{N1?=C/TUU0? \ p;== ?VIW7/?HHFT?U7/?K CV6q?W?-? p;TzU@o,? q C{KV8WL.? CRTx?U',?R CVVɛ?Wga1?PCOTVUga1? , YR (^VeW{/?3  eTut?U 0?=j zaVk)?Wy.?=* YTxU',? CGiV:W -?3CRpT{}?U -?{t C)\uV{?W}0?H CmTU{2?Cq=i w \|VבW1?)T@Uw9/?%V@W,?HwTUM+? >CHaVW.?UCT?U+/?CףV?W+/?3CTT4UQt1?>Cff =jp{V8WW0?)Tus@UW0? wVCV@WM+?luT0sUM+? {tCqVO+W-?qCBT1?Uy,?C#Vw?W1?{C=TU0?{tCR \T1Uy,?V:W/?3= T#@U.?VM@W',? ͌BVMW',?{TB{T_{?U_/?H!Bq=V}?W1?cB¢T|U0?͌B +R8T3yU?-?pV_{W_/?  ׬TV @UC2?\V @W,? nBV WL.?BffTOn?U,?fBѳVVp?W1? BzT: U,0? HaTӝlU)?\O)ܶV+kW(1?=Tё@Uն0?E{V5k@W -?  B= V['W.?B33T(`?UW0?nB)V(`?WW0? BףTёUն0?B=  3qV[W 0?@HT @U+1?V9@W.?͌T >aU,?  BkV_nW4,?\OBkTS?U-?BQVOS?W1?\OBBTUf/?Bk T$QU ,?= VPW7/?T"@U/?3Vo@WW+? B.VWP-?BT^F?UW+?B#V@lF?W/?3Bq=TU"f1? E\:RV%AW7/?5=T@Uf/?\OQV*v@W-?E=TCU-?  B WVi)W4,? BT;6?U@o,?{B WV6?W 0?BTU+1? BQ 5kV54W21?uT@UW0? = Vq@W,?5kT3Ua.? ẹBV,W -?쑶BQT(?U+?)B V :)?W!/?YBGTUն0?B ͌T!?&U.-?.V&W(1?õT @U1?=J= VAB @W,? {ԬBV/!W,?BT?U,?\ϬBV0?W8.?+BLT]!U,0?{ԬBף ^{TU?-?  VW0?f&#Tn#@U_/?q WV6$@W-? hB3V{%W',?qB T ?U;+?B)V4?W.?BTL$U0?nB HV@ W0?T&@U/?03sVz'@WS.? T Uk-? BVyl(W-?RBq}Tr>UM+?õBVU?WL/?{TBT(U0? ff5V?\WW0?Ttc+@UQt1?{TVu*@W,?cTrUM+? +B=JV=+W.?\B+T|7>U,?qBVH>Ww9/?õB)Ttc+UQt1?+BG fwqTSܾUM+?3| VܾW1?#u3s TK.@U}0?pV.@W -? )hBV/Wy,?HaaB3s TAf>Uy.?qeB) Vj>W 0? WmBQ T0Uy.?)hB \Z+ B^ VW{/?=V Tz:1@U{/?uRf Vl1@W',?Z+ TjU-? 3JBH VW2WL.?\CB\O Tm>U?-?FBV6!>W0?NB{TTK3U0? =; #?V}Ww2?B7\OTX5@U{N1?3 V?5@WL.?; TmU?-? f+B.V~6W\-?#$BTQ>U,?L'BVp>Wf/?R8/BT;6U0? uGu VaW1?u{T(9@U0?{V8@W8+?kGTQU,? { B\OV&9W-?3BT d>UD-?BBVa>W/?LBT0:UW0? 33VeRWw9/?)\nT)<@U+1?H)V~<@W4,?33T VU*,? RAV"=W+?RA)\Tz5>U?.?ףA0VE2>W0?HA{T1=U?.?RA \Vv9$WW0?({T?@UE|2?HqVf?@Wk-?TCUk-? ףABV@W-?\ATb=U,?33A)\V=WG/?A)T@U/? GsRw{VIϽW1?VTC@U{N1?RVXC@W4,?GsTY2սUt,? (2A VnKDW8+? A:TV?t=UM+?\AV/m=W0?5ATnDUi1?(2A )\{TT4U?.? 33V1W0?GT5G@Uն0?ffhV.G@W'.? q=B@RxVHWL.?ף?TpVI@W KA{HT>4IUKAV@WdRA{BT|U`AVI?WKAp@>BTI@U KAVW KAR8BBT@UKAVIWKAHB #TU KA%6 ;኿  ף3SCVI@WBf&{TBTI?U$BV|W*Bf&RT@UBVIWBf&BRTLU*BVI?WBf&B{TBT|IU*BV@Wȫ$B ף;3SCTUB  ף%VI@WHB{TH!TIUw"BV@WoB{TBTwUbsBVI?WbsB\OBBTQ@UbsBV& IWbsB\OBH!TI?UbsBVWw"B ף%TUHB%)(/Q?/Q? /Q?/Q?/@/@!/@&/@+(0/@0/@77/>EE/>SS/>aa/>oo/>}}/>/H>/H>/H>?@5?7 Timeline 1;3+5DF>CDF?5DF>CDF?5DCDF?CD365DECDEFI@57State Machine 19Layer 1?A@=> D؝E@DC uvProjection= > DzC> BC+%+,%,C> 鏄BC-%+.%.C> 2 BC/%+0%0C> KBC1%+2%2C> cwBC3%+4%4C> qCBC5%+6%6C> N*D!BC7%+8%8C> D&BC9%+:%:C(((( ( (((((((!(!(&(&(7 Timeline 1;35 DFDC=@?A `"EBB TinyCircle_02@@ HBGB?@K?@K? ޹>  ׇA ׇA%% (8 z ף@= Wף@ ׃V>@W AףTɿUAV?WAף@ ׃AT>U Aף@HVAVW,@u<= TU"f1@VI?Wi@̀@TɿUq=j@V?Wq=j@u<HATIUӃi@V@W"f1@= WAT3jFU,@ ׃AV WA@T?UAVɿWA ׃T >UA'%UUU?UUU? O| A(% 02$%((()(/> (7 Timeline 1;35DC@?A= D[E@DC uvTextureQ8> DzCRA ABC *k"lB&&'? B *k"lB.(? &@ &'?((7 Timeline 1:=;35 DF@DC35 DF DC `"EBB" TinyCircle_01@@ HBGB?@K?@K? ޹>  ׇA ׇA%% (8 z ף@= Wף@ ׃V>@W AףTɿUAV?WAף@ ׃AT>U Aף@HVAVW,@u<= TU"f1@VI?Wi@̀@TɿUq=j@V?Wq=j@u<HATIUӃi@V@W"f1@= WAT3jFU,@ ׃AV WA@T?UAVɿWA ׃T >UA'%UUU?UUU? O| A(%01$%((()(/>(7 Timeline 1;35DC 1EBB# TinyCircle_03@@ HBGB?@K?@K? ޹>  ׇA ׇA%% (8 z ף@= Wף@ ׃V>@W AףTɿUAV?WAף@ ׃AT>U Aף@HVAVW,@u<= TU"f1@VI?Wi@̀@TɿUq=j@V?Wq=j@u<HATIUӃi@V@W"f1@= WAT3jFU,@ ׃AV WA@T?UAVɿWA ׃T >UA'%UUU?UUU? O| A(%03$%((()(/>(7 Timeline 1;35DC?A D`D@DCBASE AA CjC OjCjCOCpCH>CMBC\BCOCCjCjCOC\BMBH>p% ף> BpAeA C CC%r@ C CC%r@ C C!"C"%r@ C.lC&'C'%r@ C.-C+,C,%r@ C)\B01C1%r@ CRXMBXA\BXA"C%f sD CBABBAB% sDBABBB% |A@lCX"XpXAH>XAMBX\BX"C%f B CBBBA% BBBB%/G?/G?!/G?&/G?+/G?0/G?5/G?:/ ׃??/ ׃?D/ ׃?I/ ׃?N/ ׃?S/ ׃?X/ ׃?]/ ׃?b/ ׃?g/ ׃?l/ ׃?q/ ׃?v/ ׃?{/ ׃?/ ׃?/z@/z@/z@/z@/z@/z@/z@/z@/z@/z@/z@/z@/z@/z@/z@/@/@/@/@/@/@(/@/@/@/@/@/@/@/@7 Timeline 157State Machine 19Layer 1>?A@= B E}DB Control_Cardd?? CyB%((()(7 Timeline 157State Machine 19Layer 1@?A>= C`DDD 3D_Render pDD? *B>sDsD"C&K'1 <&'?C>?>DpD!#݋D &V &'?z>?> DpD*p~!C#݋D.\?&&'? OCfD Of4face rotXrotYrotZ worldWidthL> worldHeightL>opacityBposXposYposZ4face rotX rotY rotZ  worldWidth L> worldHeight L>opacity BposX posY posZ 4face+rotX+rotY+rotZ+ worldWidth+L> worldHeight+L>opacity+BposX+posY+posZ+=4face6rotX6rotY6rotZ6 worldWidth6L> worldHeight6L>opacity6BposX6posY6posZ6?A?4faceBrotXBrotYBrotZB worldWidthB? worldHeightB?opacityBBposXBposYBposZBL?A4faceMrotXMrotYMrotZM worldWidthM? worldHeightM?opacityMBposXMposYMposZMfff? LC+āenabledXmodeXcountXscaleXspacingXXspacingYXspacingZXradiusX radialArcX radialFacingXgridRowsXgridColsX gridDepthXgridGapXXgridGapYXgridGapZXstepRotYX stepScaleX {]DpC1camYawkCcamPitchkA camDistancekA camTargetXk camTargetYk camTargetZkcamNeark=camFarkBaspectkcamPosXkcamPosYkcamPosZk orbitSpeedk?panSpeedk?panModek resetViewkshowGridk gridScalek?autoSpink spinSpeedk Amsaak@ focalLengthkHB sensorHeightkA sceneWidthkD sceneHeightkD @#DC) lightAngle@p lightHeightlBkeyColor keyIntensityC fillColor  fillIntensityD ambientColorambientIntensityA FB\D/ shadingMode? baseColor roughness4BmetallicB emissiveColorTemissiveIntensityopacityB uvProjectionProjectionComponent uvRotation uvProjectMode uvEmissiveuvEmissiveIntensityB uvOpacityUCuvTileUuvTileV%5modelobjPosXobjPosYobjPosZobjRotXobjRotYobjRotZobjScale?opacity?C useTexture iDbp?bp? DÁ q= @q= @ zzzCzzCzCzzC%((( ((7 Circle_Scan :=;3L5DFL?C;<=<>57State Machine 19Layer 1=>?A@9Layer 2>?A@= C6D@DCSCAN BpAeA C CC%r@ C C C %r@ C C C%r@ C.lCC%r@ C.-CC%r@ C)\BC%r@ CR@= 1EBB" TinyCircle_04@@ HBGB?@K?@K? ޹>  ׇA ׇA%% (8 z ף@= Wף@ ׃V>@W AףTɿUAV?WAף@ ׃AT>U Aף@HVAVW,@u<= TU"f1@VI?Wi@̀@TɿUq=j@V?Wq=j@u<HATIUӃi@V@W"f1@= WAT3jFU,@ ׃AV WA@T?UAVɿWA ׃T >UA'%UUU?UUU? O| A(%04$%((()(/>(7 Timeline 1;35DC DD@DC UI_Card_01 hB BA%01 qD@CA%D3 qDC A%  B2 )CC$OC("C @pA% @font-face { font-family: 'Source Code Pro'; font-style: normal; font-weight: 400; src: local('Source Code Pro'), local('SourceCodePro-Regular'), url(http://themes.googleusercontent.com/static/fonts/sourcecodepro/v4/mrl8jkM18OlOQN8JLgasDxM0YzuT7MdOe03otPbuUS0.woff) format('woff'); } body { font-family: Source Code Pro; background:#000; color: #00FF00; margin:0;  ADLC @!?A TeQ@?%rDOS Teȼ@@?%rZS2 AA TeQ@?%HTX Teȼ@ @?% !SMC &DLC$ @!?A% TeQ&@?%r&'TEST_01% Teȼ@*@?%r*+TEST_02$ 2CHB = @VVXοW%Y@-G!TXB@UX@VUW2X@@= TF@UFW@(@\VAF@W_<@ףzT)MUUa=@VY@WM=@33@TDοU<@%Y> PCHaB (@33@Vx&WM<@R?H?T@U>@VlIJW*=@@T'?Up=@@V?WQX@H*@= '@T"JUQX@V@W|=Y@(@TjUTX@%Y> 2C@B R@p@VI@W33S@$ff.@TC?UR@VW~X@ T?UeX@HpVn?W:<@33?TU=@VNB?W&8=@ff@Q@TG@Uz=@@@VI@WQ== @@TUQ=%Y RCp=B = @\@q=@\@V9ȿWC@\?zԿT@?UD@VVEWGuD@zTުUB@zVb#iWa@1@ff6T7U`@VO@?WN a@= @H@T%UȿUƤ`@%rY C\/BC ffffAffA@ff@%rY lC4S2C p?ppp?p?p?%Y C>C ̬p?̬?p̬p%Y lC>C ppp?p?p?p%Y C4S2C ̬?p?̬p̬p?%Y 2C'CAA%@Y> 2C@!C = @VVXοW%Y@-G!TXB@UX@VUW2X@@= TF@UFW@(@\VAF@W_<@ףzT)MUUa=@VY@WM=@33@TDοU<@%Y> PCr-C (@33@Vx&WM<@R?H?T@U>@VlIJW*=@@T'?Up=@@V?WQX@H*@= '@T"JUQX@V@W|=Y@(@TjUTX@%Y> 2C|4.C R@p@VI@W33S@$ff.@TC?UR@VW~X@ T?UeX@HpVn?W:<@33?TU=@VNB?W&8=@ff@Q@TG@Uz=@@@VI@WQ== @@TUQ=%Y RC C = @\@q=@\@V9ȿWC@\?zԿT@?UD@VVEWGuD@zTުUB@zVb#iWa@1@ff6T7U`@VO@?WN a@= @H@T%UȿUƤ`@%rY n RARpòpo@R@6@Q @@RA@poA@poÀ%@Y  RARpopò@R@6@Q @@RA@poÀ@poA%@Y f: QAAffAQAffffQAAffAQA%r C@CBPA%r) kAcA H!C C@@C% H!C@@@C% 0yD@lCXA"XApXH>XMBXA\BXA"C%f sD CBABBAB% sDBABBB% |A@lCX"XpXAH>XAMBX\BX"C%f B CBBBA% BBBB%\B> BpAeA C CC%r@ C CC%r@ C CC%r@ C.lCC%r@ C.-CC%r@ C)\BC%r@ CR