0$$,48?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk¬­®¯`abcdefg¨©ª«¤¥¦§¨©ª«LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{¼½¾¿pqrstuvw¸¹º»´µ¶·¸¹º»ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ÌÍÎÏ€‚ƒ„…†‡ÈÉÊËÄÅÆÇÈÉÊË,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[”•–—œŸXYZ[\]^_˜™š›\]^_<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk¤¥¦§¬­®¯hijklmno¨©ª«lmnoLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{´µ¶·¼½¾¿xyz{|}~¸¹º»|}~ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ÄÅÆÇÌÍÎψ‰Š‹ŒÈÉÊËŒ,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[œŸ\]^_”•–—\]^_˜™š›˜™š›<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk¬­®¯lmno¤¥¦§lmno¨©ª«¨©ª«LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{¼½¾¿|}~´µ¶·|}~¸¹º»¸¹º»ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ÌÍÎÏŒÄÅÆÇŒÈÉÊËÈÉÊË,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[\]^_PQRSTUVW˜™š›˜™š›˜™š›<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijklmno`abcdefg¨©ª«¨©ª«¨©ª«LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{|}~pqrstuvw¸¹º»¸¹º»¸¹º»ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹Œ€‚ƒ„…†‡ÈÉÊËÈÉÊËÈÉÊË,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[œŸ”•–—œŸ”•–—œŸXYZ[<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk¬­®¯¤¥¦§¬­®¯¤¥¦§¬­®¯hijkLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{¼½¾¿´µ¶·¼½¾¿´µ¶·¼½¾¿xyz{ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ÌÍÎÏÄÅÆÇÌÍÎÏÄÅÆÇÌÍÎψ‰Š‹,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[˜™š›PQRSTUVWœŸœŸ˜™š›<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk¨©ª«`abcdefg¬­®¯¬­®¯¨©ª«LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{¸¹º»pqrstuvw¼½¾¿¼½¾¿¸¹º»LMNOˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ÈÉÊË€‚ƒ„…†‡ÌÍÎÏÌÍÎÏÈÉÊË,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk<=>?LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{LMNOˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./XYZ[XYZ[XYZ[XYZ[,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?hijkhijkhijkhijk<=>?LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOxyz{xyz{xyz{xyz{LMNOˆ‰Š‹ˆ‰Š‹ˆ‰Š‹ˆ‰Š‹,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNO,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?,-./<=>?LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNO<=>?LMNOLMNO,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?,-./<=>?LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNO<=>?LMNOLMNO,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?,-./<=>?LMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNOLMNO<=>?,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./,-./<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?<=>?À?İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİzªİİİİ}çwİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ#¢:sªª­®î®zİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ"¢‘™)2£ªªzÚİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİs×İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ"£“”#"ª""2£ªªİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ=7wsİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ"ª!”I""ª"""¢#"2£§İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ}wsw333İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ77™™"2:"2"¢#""2"ªwªªÑİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİwwww#"¢:33Óİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ7ªªª3"¢1"""¢"#""2ªª"2ª'3zİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİwsww"*"îî~ª33Óİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİs§ªªªªªª:#""£""#"2ªª"¢ª*22""İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ=w7ws7z7î®îzîîw:33wsİİİİİİİİİİİİİİİİİİİİİİİİİz3£ªzwªªªªªª:w3#"¢ª:#¢ª*"22"ªÑİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİswws7":£§ªªçîî."#r37wİİİİİİİİİİİİİİİİİİİİİİİݪ"#"""£ªªwªª:wwwswª*"¢ª*""22:Ñİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİsww7w"#"ç®§zªª:"*¢7ssİİİİİİİİİİİİİİİİİİİİİİİİ:"""2"ª*2"2£ª:sww£ªªªzw#"""2*İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİwwwwsww#ê~îîîç§s3ws7wİİİİİİİİİİİİİİİİİİİİİİİİ:""#""ª#"2""#"23ªªzªzzªssww£*Ñİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİws3ww'r:ªªzîîê®#"2swsİİİİİİİİİİİİİİİİİİİİİİİİ*2"""2ª""""""""2":"2£ªªssww§*:£§Ñİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ­~wws7'""zîzªªªç"""ss7×İİİİİİİİİİİİİİİİİİİİİİİz77##2ª"#"2""#""2*"""#£w§ªªs**""#İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ#7wswws'"ãîî®~wªwwws7wÓİİİİİİİİİİİİİİİİİİİİİİİsw7ws§w7#"""3"#"2*2"""£ª*"ªz**"#"İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ*z7s7w§:w§ªç®çîî"22zws×İİİİİİİİİİİİİİİİİİİİİİݪ:3ww§ªªªªªw3##"r*"2""ªª#"ª:ª*""":Ñİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ=ªzwswswwwç§zªªzî#¢"ssw×İİİİİİİİİİİİİİİİİİİİİİİ!“3ªªªzwªwªªªªªªw3"2""ªª#"ª*¢:#""#Ñİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ}ç*zsswwwwwãîêîî§zz77r3w×İİİİİİİİİİİİİİİİİİİİİİİ”™#"§ª7ªª§z§ªwªzsww77§ª""z*¢sww7!Úİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ}ã*:www7www§çzîî®î7ªªs7wwİİİİİİİİİİİİİİİİİİİİİİİ™”""ªª*"¢ª:3ªªªzssww7zªª:§'"ª3w7*İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİw§®:wwsw#22¢zªªz§~î3w3wwwİİİİİİİİİİİİİİİİİİİİİİİ1”™"2ªª#"£ª""""£3ª§ª:ªªªªª*"ª3£ª*İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ}3w®:w7sw#""¢îîî§zªê3ws3w7İİİİİİİİİİİİİİİİİİİİİİİ‘”9"2ªª#"ª§!"""£™™"rwªªªªz¢ª"¢ª'¢İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ}wç§7w77w7ww£çîîêçî.2zwwswİİİİİİİİİİİİİİİİİİİİİİݪ§3#rªª""ªª!"#"ªI9"rª*"¢zz£ª"¢ª¢"İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ77§®:w7737"£:ªªzzîî>"*"w7wİİİİİİİİİİİİİİİİİİİİİİİz§ªªªªª73ªª#"#":!”9"¢ª*"¢ª¡£ª"¢ª¢"İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİwsã®:3ww3s"""î~ªzªª§7#"wws×İİİİİİİİİİİİİİİİİİİİİݪªwwªªª§ªªªªª3"2:1™)"£ª*"£§2§z#¢ª¢§İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ7wwªz7wws73#"î®îîîç§:wsww7×İİİİİİİİİİİİİİİİİİİİİİîîw§ªªªªªªªªªªªªªª3#"£§*"£ªAªª§ª:3×İİİİİİİİİİİİİİİwÚİİİİİİİİİİİİİİİİİİİ}7£ªê7w3sw::wz§çîîêw"""wswÓİİİİİİİİİİİİİİİİİİİİİİîîîîª!™93ªª§ªw§ªªªªªªªª:#ªª’¢ªªªª#ÓİİİİİİİİİİİİİİİwªªªªÚİİİİİİİİİİİİİİİ}ww£â7373w2*"§zªªªzî"""z7w×İİİİİİİİİİİİİİİİİİİİİİîîîî:”™"2*2""3szªzwªªªªªªª9£:"ª§#Òİİİİİİİİİİİİİİİ3wwªªªªªªÚİİİİİİİİİİİ}ws§£7sw7w"*#êçî®~ªww§wsws×İİİİİİİİİİİİİİİİİİİİİİî~î~1™9"¢*""""¢ª*2sªªªªªzª#ª*"zª*Òİİİİİİİİİİİİİİİ3wwwwww§ªªªªªÚİİİİİİİ}3w®ªw3w7wws7êîî®îîî"¢£:w7wİİİİİİİİİİİİİİİİİİİİİİîî”9"¢#"2""£ª*"¢ª*!"3£ª*ª*"z*'Òİİİİİİİİİİİİİİİ3wwwwwwwwwwwªÚİİİİİİİ=ws®ª73s7wªª:ªª§zçîî*2"rwwsİİİİİİİİİİİİİİİİİİİİİݪzw~‘™)"¢"""""ªª*"£ª!"""zªª*"ª*ªÑİİİİİİİİİİİİİİ3wwwwwwwwwwwwÚİİİİİİİ}ww§rwww7wwwwç§ªª:w3rw77İİİİİİİİİİİİİİİİİİİİİݪªªªªªz:3£##"2"ªª33£ª*!"#"ªªªª3ª*§İİİİİİİİİİİİ­3wwwwwwwwwwwwÚİİİİİİİ}s3ê¢www7swwwçîêçî®î§ªsw3w3İİİİİİİİİİİİİİİİİİİİİݪw§ªªªªªªªwwwww§ª#"ªª""#"ª¢ªzªª:ª'2rİİİİİİİİİİİİ}3wwwwwwwwwwwwÚİİİİİİİ}77îªwww7swww§çzîî®îîss7ws7İİİİİİİİİİİİİİİİİİİİİİ23ªª§ªªw§:wwsw7ªªªªzw#""2ªrªzªª*#""¢Ñİİİİİİİİİİİ}swwwwwwwwwwwwÚİİİİİİİ}ww®¢www733¢"£zªªªªçîws7wswİİİİİİİİİİİİİİİİİİİİİİ"""ª#"2"23ªªª33ªªªzªª§ªªª7*£"""¢ª1#"3Ñİİİİİİİİİİİ}swwwwwwwwwwwwÚİİİİİİİ=w7êªsws7w'¢#rîçîzªzêws7s7w×İİİİİİİİİİİİİİİİİİİİİ2"2ª""2""#""""¢ªªªªªzªªzzª*ª1"#¢£!sw#Óİİİİİİİİİİİ}swwwwwwwwwwwwÚİİİİİİİ}7wîªw377wws3¢~îîêîî®"#£s7s×İİİİİİİİİİİİİİİİİİİİİ""2ª"#"""""2""£!""2wªªªªzªª1""¢©*ww*Òİİİİİİİİİİİ­swwwwwwwwwwwwÚİİİİİİİ}sw®ªw3w3w§ªs§ªªwwîî®#""3ss×İİİİİİİİİİİİİİİİİİİİİ""¢:"""2""#"""ª#"#"ªI9"rª§!""¢4*#sªÒİİİİİİİİİİİ=swwwwwwwwwwwwÚİİİİİİİ=w3§ª7333w'""£~ªª§zªªw#2777Óİİİİİİİİİİİİİİİİİİİİİ""¢*""#23"#"2"ª#""":1”9"¢£ªª3"29ª#£ªÓİİİİİİİİİİİ=swwwwwwwwwwwwÚİİİİİİİ}sw:ª>w7sw'""2î®~îîꧪ3wzw3×İİİİİİİİİİİİİİİİİİİİݪªªªªww33"""""ª"""21™)"£2ªªªªª©r3£:Óİİİİİİİİİİİ=swwwwwwwwwwwwÚİİİİİİİ}3ww*>wssw7wwwî®îîîzî"£"rw7sİİİİİİİİİİİİİİİİİİİİݪªªªªªªªªªªªwwª"""2‘™)"3"ªªªw§3¢"ª"×İİİİİİİİİİİ=swwwwwwwwwwwwÚİİİİİİİ=wss*zwwsw7"£:ªzªªzçî"r#rswsİİİİİİİİİİİİİİİİİİİİݪ§ªªwwªªwwªªªªªªª§ªs'‘™)""‘92w*¢ªª§Úİİİİİİİİİİİ=swwwwwwwwwwwwÚİİİİİİİ}3wçªz7w3s3"#"î~~ªª§ªs777wwsİİİİİİİİİİİİİİİİİİİİİ£ª*2"23£ªªªzw§ªªªªªªª§ªzª"*C9"*:¢ªª§Úİİİİİİİİİİİ=swwwwwwwwwwwwÚİİİİİİİİssçªzw7w7s#:"ççî®îîî:"szww3İİİİİİİİİİİİİİİİİİİİݪ§#2"""2ê~îwwªªªªªzw§ªªªªª"™)":z£"ªªÚİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİws£*:sww7s7zwzçî®î~î*""¢s77İİİİİİİİİİİİİİİİİİİİݪª""""#¢êîî~ª""zwªª§ªªª*I)"*r§"ª©İİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİ7ww'zssw3wwwzªwª§ªªz>##2ww3×İİİİİİİİİİİİİİİİİİİݪª""2""¢êîîî:"2ªª""""2§ª™)2*27"ª©İİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİswç®zwwwswwwwêîêçwªª77zw7w7×İİİİİİİİİİİİİİİİİİİݪª"#"""£çîîî:"¢ªª"""2:§zªzª'"£ª§"İİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİw7ç::3w73wîîîêîêîî®îîw7www7×İİİİİİİİİİİİİİİİİİİİw733#2"£îçîçî§z:3¢ªª"""¢*wwªªª*#§ª§"İİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİww£®:wws73îîwîç~îîwswss7×İİİİİİİİİİİİİİİİİİİݪzwws7wªwwîç*"¢ª:1"2"¢*z3£ªªª"!"£*İİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİwsç®zwsww7#""sªzªªªªç7ww777×İİİİİİİİİİİİİİİİİİİݧz7wswwªªªªªªªªz3s§:1"2"¢*ª1""¢s7#"¢ªİİİİİİİİİİİİ7swwwwwwwwwwwwÚİİİİİİİİ3sç§z37ww3'2"âîçîz~§ªzw7sw7wİİİİİİİİİİİİİİİİİİİݪªªªªª3w§ªªªªªªªªªªzªªªzz*7!""¢¢:#"¢§İİİİİİİİİİİİ73333wwwwwwwwwÚİİİİİİİİw3§§£sws7s'¢"r~îîêîç~22"sw3wİİİİİİİİİİİİİİİİİİİİrªª""ww§ªªªªªªªªªªªªªªªªª#:!""¢"§"#3£İİİİİİİİİİİİ73333333333swwÚİİİİİİİİw3££¢7w7337§s§ª§wçîêî"£"rs3wİİİİİİİİİİİİİİİİİİİİ¢ª:""ªª‘™9"¢ªw3sªªzªªªz§ª!""##wªª*qİİİİİİİİİİİİ3§ªª3333333333×İİİİİİİİ773£z7s7w7#£2¢ª§wªªªªw§7ssssİİİİİİİİİİİİİİİİİİİİ¢§*"2ªª#A”)"rªª""ªª!"#3wªª:3##¢®ªªªÓİİİİİİİİİİİİ£§ªªz§ªªwª:333wİİİİİİİİsww§¢w7sww#¢"£î®îîîêw£ª373swİßİİİİİİİİİİİİİİİİİİsª*"2§ª‘™)"¢ª7"2ªª#"#"ªªªªªªz¢~™"ªÓİİİİİİİİİİİİ3s§ª:sªªwªªz§ªªİİİİİİİİ7w7®¢wwww3#2"2î®ç~îîî*""£7ww÷ßıßİİİİİİİİİİİİİİİݪª*"¢ªªCI)"£ª:"2zª""""ª¢ªªww:w®™"*Úİİİİİİİİİİİİ3s§ª:s§ª3wª:sªªİİİİİİİİ77w®£3ww7swwwwª§z§îîî*""¢7wwÿÿİİİİİİİİİİİİİİİw§#"¢ªªI™#"ªª*"¢ªz"""2ª¢"33:s”"'Úİİİİİİİİİİİİ33s§:3sª3wª:s§ªİİİİİİİİsws®ª73333#""2ªªª§ªªªzssws7wıÿÿÿİÿİİİİİİİİİİİİİzªªªªªªª:33#§z*"¢ªª"""2:¢#""":£>3"!Òİİİİİİİİİİİİ33s§:3wª33§:3sªİİİİİİİİws3z¢wwwww7"""îîî®ì’è+I¦3wwÇÿÁßÿÑİİİİİİİİİİݪªªªzªªªªªªªªªªªª§ª33#"r*£"""*wª§ªªÒİİİİİİİİİİİİ733s733w33§:3sªİİİİİİİİsssî¢swww7s"#"çîî~¼‚ƾ‚d"ww÷ÿÌÿİÿÿÑİİİİİİİİİİݪªªªªªwwwªª§ªª§ªzªªªªªªª*ª""2*zzªªzÒİİİİİİİİİİİİw§ªª733w33s733wİİİİİİİİ}wwîªsw37sww:wªzªÇ.hîì’H&7wÿüÑÍÿÿÑÿßİİİİİİİİİİİ'""#2""333£§ªªªªªªw§ªªªªªª""2*š*22£Óİİİİİİİİİİİİw§ªªz§ªªwªª?33wİİİİİİİİ}s7ªª3s7wwwîªzÇ›¤ªÊ+‰4w7İÿÿßıßİİİİİİİİİİİİ#2"""""#2""¢*!"33s§zªªªªªªª73s*J""¢¢İİİİİİİİİİİİİ:s§ª:£ªªwªªz§ªªİİİİİİİİ=7wêªsww333îîêêîz,xwwwwwwwwÿÿÑÿİÿñİİİİİİİİİİİİ#""""2"#"""£""""¢""""£§ªªªªª*š*"¢"İİİİİİİİİİİİİ3s§ª:wªª3wª:s§ªİİİİİİİİ=wwîzzw3s3sîîîêîê‚vwwwwwwwww÷ñÿİİİİİİİİİİİİİ""""#2"""2"ª!"""¢""""32ªªwwwz’:3£"İİİİİİİİİİİİİ73s§:3wª3wª:s§ªİİİİİİİİ}wwîªw373wwîîçhzwwwwwwwwwwwÿÿßßİİİİİİİİİİİİ"33"""""#2"ª#"""£#"#""*!33sª:ªªª*İİİİİİİİİİİİİ73s§:3wª33§:3sªİİİİİİİİ=wsª':wwwww23ªªªÂ¦ªwwßİİİİİİİİİİİİ"#""""2"#""ª#"#"ª#"#"'""""¢¢ªªªª*İİİİİİİİİİİİİ733s733w33§:3sªİİİİİİİİ}wsw*zwsw73"""â~Ëîçîzwwwwwwwwwwwwğÿİİİİİİİİİİİİݪªªªªzwww73ª""#"ª"""""!""£"ª""¢ªİİİİİİİİİİİİİw33s333w33s733wİİİİİİİİ}w3w:z773sw"2"rî~îîz÷ÿÿøÿˆˆøÿ×İİİİİİİİİİİİİݪªªªªªªªªªªªªªªªªªª3333"#2"3"2"#£zİİİİİİİİİİİİİs§ªªwªªªwªª733sİİİİİİİİ}w3sª7s7wwww7s§$~îîî燈ˆˆˆˆˆˆˆˆˆˆwİİİİİİİİİİİİİİwwwwªªªªzwwªªzªªªªªªªªªª"#2"*#"""##İİİİİİİİİİİİİ7s§ªwªªªwªªz§ªªİİİİİİİİ}w7s*zwsww3£s3§¸¬ªªªªwªÚİİİİİİİİİ}İİİİİİİİİİİİİİ3ªªªªsªzªªªªªªzwwwwªªªªªª33#"'#£3"'1İİİİİİİİİİİİİ7s§ª3wªª3wª:sªªİİİİİİİİ}w7ã:z773sw7¢2c¹®w§§ªzªªİİİİİİİİİİ×İİİİİİİİİİİİİ™™""£""2""¢3333£:333ªªzªªªªªª#¢ªªzÑİİİİİİİİİİİİİ:3sª3wªª3wª:s§ªİİİİİİİİ=s7ãw:s7www'£"Cé®î®ç®~§ªİİİİİİİİİİwİİİİİİİİİİİİİD™""7"#"""¢‘™)"¢#"""#¢¢zwªªªªz¢ªªªÚİİİİİİİİİİİİİ:3wª33wª33§:3s§İİİİİİİİ=s7£ª7wss7s'2"Bâ~î®î®ç§ªÚİİİİİİİİİ}×İİİİİİİİİİİİ™9"":"""""£‘D)"¢#"2""¢‘¢3333z§:""ªÚİİİİİİİİİİİİ}733w33wª33§:3s§İİİİİİİİ=s7£>z777ªªªªw‡ÂªªªªzwwªªÚİİİİ]UUUU×İİİİİİİİİİİİ™9"2*"""2"£“™)"£""2""£“222223ª:""#Úİİİİİİİİİİİİ}333w333w33s733sİİİİİİİİ}s3ã®:swwªªZUµªË»»»»»»{ªªªİİ]UUUUUUwİİİİİİİİİİİİ™)"¢*""#2"§C”#"£"#"""£™22222‘3*""!Òİİİİİİİİİİİİ}wªªªwª:w33s733sİİİİİİİİ}s7㮪ws7ªª*"U«Zu'"""rw§ªªİİ]UUUUUUu×İİİİİİİİİİİ™)"r#2""""ªI™#"ª"#"2":4#"""¢‘'"2"1âîîîîêî®êî."¡wªªªwªªªwªªz§ªªİİİİİİİİ}s7£ª§77ª*ˆˆˆ¨U»UUUUUUQUQQU!!"Ñİİİİݪªªªswwww7ªª33337w3333)*"""r2*¢ªªªâîîîªîîîîîîîî>3wªª3wªªwªªz§ªª"İİİİİİs7sªª#"ª*ˆˆİݪªzªªªªwUUUUUUUUUUUUw!""ªª§ªwwwws7ªªªªªª:www7wª#*"""¢)"zwwzãîîîîîîîîîîîî~3wªª3wªª3§ª:s§ªêîîîêîîîîs7§ª!bl¦ªˆˆİݪªzªªªz»±»»»»{§ff|ÌÌÌÆÊÌlqww33333wªªªªª§zwwswwªªzwww§)"""¢zçîîîîêîîîîî®î~33wª33wª3£ª:s§ªîîîîîîî®®swzv¬vÊ‚ˆİݪªzq§ªz±»»±»»wÆÌÆÆÊÌl¬Ì¬îîî13333££ªzªzªªªªªªªzªssww§ª'""¢9îî®îîîîîîîîîî®33wª33wª3s§:3s§îîîêîîîîî'"Ìv̦Ìl§‚ˆİݪªzq7C4ªw»»»»»»»»»»»»{lÌÌl¬¬Ì̪zîîîîêî1"£""""#¢*2"""23ªªª:3sªw#2¢"®îîîîîîîîîîêî®333w333w33s:3s§îîåîîîîî®lvʦÆfgÌv‚ˆİݪªz7CD3Dw±»»»»»»qǬÌÌÌÆ§zªwî®îîîîêîî!"2"#¢#"""#¢"2"""#3ªs#2¢"îîî®®îîîîîîîî>333w333w33s733sUåîîîîîîî~Êv̦Ìlª|l&ˆØİªªzw3D3D3s»»»»±»wÌÊzz§ªª§jîêîîî®îîîîî#2""¢#"""#¢"¢""""*"£ww7"îîîîîîîîîîîîªfff™™™™™™™™™933sçîîîîîîîî®Ìª¦fÇ̦ǬvˆØİ}ªw3D3D3Ct÷ÿÿÿÿÿÿÿÿÿÿÿÿ§wwz§ªf¦fîîîîîêîîîî.#"""£""2""¢"£""""*2"ww§zîîîî®îîîîîîîîfff™™™™™™™™™™™™éîîîîîîî®®Îf¦ÌfªjfªÌlvØ}ww7D3D4CDªwñññÿÿÿÿÿÿ§zªfvffffîîîîªîîîîî.""""£""2""¢2¢""""*"¢ªzª7îîîîîîîî®îîîDDDDDDDD™DDDDDDäîîîîîîÌÜínlªlvªÌ""§ÌÊ|www74C4CDwªwÿñÿÿÿÿÿÿÿwffffjjÌlîîîîîîîîêî.""2"ª"#"""£#2""""*"¢2"#3™™™™™™™™Éœ™™iDDDDDDDDIDDDDDD¤®îîîÌÌÌÌÜİ}ª,""rª'wÊ̬|ww74C3Dw§ªzwwwwwwwwwwwwwwggÌÌl¬ÌÌîîîîîîî®îî~wsww:wsw7w372222"'"#""*"™™™™™™™™™™™™IDDDDD™DDFDD”IDDäîîîÎÌÌÌÌÜİİ"ÇÌʧª*l¦ªw§zw74CCtwªªzwwwwwwwwwwwwwwg||ÌÌÌÆÊîîîîîîîîêî>wsww:www7wzww7777§7#""*¢™™™œÉÌÉÌ™™ÉUEDDDDD™DDFDD”IDDäîêêÌÌÌÌÌÌİİÍÊlÌÌÊlÌ|ffffv74CCtwªªªªªªªªªªÌÌÌÌÌÆÆÌÌÆÊÊÌÌlîîîîîîîîîîwwww7zwws7wwwzwww7ªª:"#*’™™™™™™™™YUUUEDDDDDDDDFDDDDDDäêªÎÌÌÌÌÌÌİİİÌÌÇ̬̬̬fÌÌÇ74DCtwªªªªªªªªªªÌÌÌÌÌÌÌÊÌÌl¬¬¬zîîêîîîî®îîîîîîîîîîîîîîwwwwwswª7wszWUUUUUUUUUUUUEDDDDDDDdFDDDDDDäîîÌÌÌÌÌÌÌÜİİmfvÌÆÌÇlÌÆÌ¬l74DCtwªªªªªªªªªªª¬¬¬Ì̧wz§ªzw§wîîêîîîîîîîzªª§ªªª§zªªªªªªª§ªzw~wwwWUUµUUUUUU[UU•™™™™™™™ifff–™™™™™ÉÌÌÌÌÌÌÌÜİİİffff̪wÊÌÌÊÆ74DCtwªªªªªªªªªªªªªªªªªªªªzªgffÉ™™™™™™™™™ªªªªªªªªªªªªªwwwwww§ªªªzWUUUUUUUUUUUU•™™™™™™™ifff–™™™™™ÉÌÌÌÌÌÌÌÜİİݧfffgjf¦ªwz§74DCtwªªªªªªªªªªjffffffffffjfffîî“™™™œ™Éywwwwwwwwwwwwwwwwww§ªªªªªZUUUUUUUUUUUUEDD”IDDDDDDDDDDD”™ÉÌÌÌÌÌÌÌÜİİİ}zªz§ÂÆ|fvff74DCtwªªªªªªªªªªjfffÌÌ̬wªwl¬¬Ìîî~™™™™™™yw§ªªªzªªzª§z§ªªªªªª§ªªªªZUUUUU[UUUUUUEDD”IDDDDDDDDDDD”™ÌÌÌÌÌÌÌÌÌİİİ­zªªªÂÌÌÌÇÆÌ|4DCtwªªªªªªªªªªÊÌÌÌÌÌ̬§z|ÌÌÆÊîî7É™™™œ™©ªªªªªªªªªªªªªªªªªªªªªªªªZUUU[UUUUUUUUE”I”IDD”IDDDDDDDÄ™ÌÌÌÌÌÌÌÌÌİİİÍÌ¬ÌÆ¢Ìl¬lÌÌ|DCtwªªªªªªªªªªÊÊÊÊÊÊÊÌ̬<ÇÌÌlîîw™™™™™™©ªª§ªªªªªªªªªªªªªªzªªzªªª·UU[UUUUUUU[UE”I”IDD”IDDDDDDD”ÉÌÌÌÌÌÌÌÌÌİİİİÌÌÊl¢§wªªz§zCtwªªªªªªªªªªªªªªªªªªÌÊv§ªª§îîw™É™™™™©ªªªªª§ªªªªªªª§ªªªªªªwwwwZUUUUUU[UUUUšIDD”IDDDDDDDDDDD”™ÌÌÌÌÌÌÌÌÌİİİİÊlÌÌbffjff¦vAtwªªªªªªªªªªjffffffflÌ|gf¦ªÉ™™™™Éœ™™zwwwwwwwwwwwwwwªªªªªªªªªª:§z33ªªªzªª™™IDD”IDDDDDDDDDDDtÊÌÌÌÌÌÌÌÌÌİİİݪªªªÊÌÊlÌÌ*"qwªªªªªªªªªªÊÌÌÌÌÌÌ̪ªªgfvz™É™œ™™™™™ªªªzªª§ªªªªªªªªªªªªªª3s7z3wª7s£7:s7ª3wCdff–™™™™™™™™™™™©#"""""""""UUUU:3§z:3wªªª*ÂÌqªªªªªªªªªªzªªU[UUUUUU[UU[Éœ™™™™™™™ªªªªªªªªªª§ªªzªªªªªªªªªªªªª§ªªUUUUUµUUefff–™™™™™™™™™™™YU"""""""""UUUUUUUUUµUUUU"ÌÌ̪ªªªªªªªªªZUUU[UUµUUU[UUU™™™™™w§££33ww::3sw§££3sWUUUUUUUUUUUUU[UUUUUUUU[efff–™™™™™™”IDDDTU"""""""""UUUUUµUUµUµUUU%ÌÌÌ¡ªªªªªªªªªZUUUUµUUUµUUUUU3s7§£z:3ssz:§7377§£Z[UUU[U[UUUµUUU[UUUUUUUU[UUUEDDDDDDDDDD”IDDDTU"""""""""UUUU[UUUUUUUUµ%ÌÌÌÌ¡ªªªzwwwwwwUUU[UUUUUµUUUU7ws:§£33swª§z:3[UUUUUUUUµUµ[UUUUUUUUUUUUUUUUUUUDDDDDDDDDDD”IDDDT[%""""""""UUUUµ[UUU»UUU[UÂÌ̪ªªªªwwwwwwwWUUUUUUUUUUUUU§33s7§sª§:3UUUUU[UUUUµUUUUUUUUUUUUUUµUUUUUUUUUUDD”IDDDDDDD”ID”ITµ+""""""""UUUUUUUUUUµUU[UUÌ̪ªw¡ªzwwwwwwwwUUUUUUUUUUUUUw7§:ªs3UUUUµUUUUUµ[UUUUUUUUUUUUUUUUUUUUUUUUUUUUDD”IDDDDDDD”ID”ITU%""""""""UUUUUUUUUUUUUUµ[Ŭªªww¡ªwwwwwwwwwWUUµUUUUUUUUU33wUU[UUUU[UU»UUUUUUUUUUUUUUUUUUUUUUµ[UUµ[UUUUµDDDDDD”IDDDdFDDDTU%""""""""UUUUUUUUUUUUUµUUU̪ªwwwwwwwwwwwwwwUUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUUUUU»UUUUUUUUUUUµ[U[UUUUµ[UDDDDDD”IDDDdFDDDTUU""""""""UUUUUU[UUUUUUµ[UUUªªwwwwwwwwwwwwwwWUUUUUU[UUUUUUUUU»UU»UUUUUUUUUµ[UUUUUUU»UUUUUUµ[UUµ[UUUUUU»fff–™™™™™™™iffffVUU%"""""""UUUUUUUUUUUUUUUUUUuwwwwwwwwwwwwwwwwU»UUUUUUUUUUUUUUUUUU»UUUUUUU»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUfff–™™™™™™™iffffVUUU""""""RUUUUUUUUUUUUUU»UUUUwwwwwwwwwwwwwwwwWUUUUUUUU»UUUUUUUUUUµ[UUU»UUUUUUUUUUUUUUUUUUµ»UUUUUUUUUUUUfDDDD”IDDDDDDDDDTUUU%"""""RUUUUUUUUUUµ[UUUUUUUuwwwwwwwwwwwwwwwwUUUUUUUUUUUUUµ[UUUUUµ[UUUUUUUUUUUUUUU[UUUUUUUUUUUUUUUUµ[UDDDDD”IDDDDDDDDDTUUUU"""""RUUUUU»[UUUUUUUUUUUUUwwwwwwwwwwwwwwwwWUUUUUUUUUUUUUUUUU»[UUUUUUUU»[UUUUUUUUUUUUUUUUUUUUUUU»[UUDDDDD”FDDDDD”IDDTUUUµ»""""UUUUUUUUUUµ[UUUUUUUUUuwwwwwwwwwwwwwwwwUUUUU»[UUUU[UUUUUUUUUUUUUUUU»[UUUUUUUUUµUUUUUUUUUUµ»UUµ[DDDDDdFDDDDD”IDDTUµUUUUU"RUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwwwwwwwWUµUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»UUUUUU»UUUUUUUUUUUUUDDDDDdFDDDDDDDDDTUUUUUU»[UUUUUUUUUUUUUUUUUUUUUUqwwwwwwwwwwwwwwww[UUUUUUUUUUUUUUUUUUUU»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUD™DDDdFDDDDDDDDDTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwwwwwwwwwWUUUUUUUµ»UUUUµ»UUUUUUUUUUU[UUUUUUUU»[UUU»[UUUUUUUUUUUUD™DDDdFDDDDDDUUUµ»UUUUUUUUUUUUUUUUµ»UUUUUUUUUUµqwwwwwwwwwwwwwwwwUUUUµ»UUUUUUUUUUUUUUUUUUUUUUUµ»UUUUUUUUUUUµ»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUµ[UUUUUUUUU»[UUUUwwwwwwwwwwwwwwwwWUUUUUUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUµ»UUUUUUUUUUUUUUUµ»UUUUU»[UUUUUUUUUUUUUUUUUUUUUUUU{wwwwwwwwwwwwwwwwUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUµ»[UUUUU»[UUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»[UUUUQwwwwwwwwwwwwwwwwWUUUUUUUUUUUUUUUUUUUUUU»»UUUUUUUUUUUUUUUUUUUUUUUUUµUUUUUUUUUUUUUUUUUUUµ»UUUUUUUUUUUUUUµ»[UUUUUUUUUUUUQuwwwwwwwwwtwwwwwwUUUUUUUUUUUUUUUUUUUUUUUUUUµ»[UUUUUUUUUUU»»UUUUUUUUUUUUUU»UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwwwwwDDDDDDDDTUUUUU»»UUUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUµ»UUUUUUUUUUUUUUUUUUUUUUUUµ[UUUUUUUUUUUUUUUµ»UUUU»»UUUwwwwwwwGDDDDDDDDTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUµ»[UUUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQwwwwwwGDDDDDDDDDDUUUµUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»[UUUUUUUUUUUUUUUUwwwwwGDDDDDDDDDDDUUUUUUUUUUUUU»»UUUUUUµ»»UUUUUUUUUUUUUUU»»[UUUUUUUUUU»»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwGDDDDDDDDDDDDTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUµ»»UUUUUUUUU»»UUUUUUUUUUUµ»[UUUUUUµwwwwGDDDDDDDDDDDDDUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwwGDDDDDDDDDDDDDUUUUUUUUUUUUUUUUUUUU»»[UUUUµ»[UUUUUUUUUUUUUUUUUUUUUµ»[UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwwwGDDDDDDDDDDDDD´UU…-- title: HanamileH's mod -- author: HanamileH -- desc: Ara-ara physic engine (Version 1.0 beta) -- script: lua --[[ NOAI License (No AI Training License) Version 0.1 SPDX short identifier: NOAI Copyright 2026 HanamileH Permission is hereby granted, free of charge, to any human person or organization obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 1. COPYRIGHT NOTICE The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 2. AI TRAINING RESTRICTION The Software, including but not limited to its source code, documentation, comments, structure, logic, algorithms, and any derivative works thereof, SHALL NOT be used, in whole or in part, directly or indirectly, for the purpose of: a) Training, fine-tuning, evaluating, or otherwise improving any artificial intelligence model, machine learning system, large language model (LLM), neural network, or any automated code generation system; b) Building or enriching any dataset, corpus, or knowledge base intended for use in training or developing AI/ML systems described in section 2(a); c) Feeding into any automated system that produces code, text, or other creative output that could substitute for human developer labor. This restriction applies to all entities, including but not limited to corporations, research institutions, non-profit organizations, and individuals. 3. HUMAN USE GUARANTEE Human developers, engineers, students, researchers, and hobbyists are explicitly permitted and encouraged to: a) Read, study, and learn from this Software; b) Use this Software in personal, educational, and commercial projects; c) Modify and create derivative works of this Software; d) Share and distribute this Software and derivative works; provided that all such derivative works are distributed under the same NOAI License terms, including the AI Training Restriction in Section 2. 4. ENFORCEMENT Any use of this Software in violation of Section 2 constitutes a material breach of this license and automatically terminates all rights granted herein. The copyright holder reserves the right to seek injunctive relief and damages for any unauthorized AI training use. 5. DISCLAIMER THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE, EXCEPT AS IT RELATES TO ENFORCEMENT OF THE AI TRAINING RESTRICTION. ]] -- ============================================ -- TIC-80 Cartridge -- Built with TIC-80 Cartidge Tool Extension -- ============================================ -- ============================================ -- File: src/header.lua -- ============================================ --[[ Debug menu: [Tab] Movement: [W][A][S][D][Space][CTRL] Acceleration: [Shift] Camera: [Mouse] Hold an object: [Left Mouse Button] Add an object: [1]-[9] Flying mode: [V] Undo object spawn: [Z] Throw an object: [G] (You need to hold the object with the left mouse button) ]] local F = math.floor local C = math.ceil local R = math.random local min = math.min local max = math.max local abs = math.abs local sqrt = math.sqrt local sin = math.sin local cos = math.cos local pack = string.pack local unpack = string.unpack local pi = math.pi local tau = pi * 2 local pi2 = pi * 0.5 local toRad = pi / 180 local toDeg = 180 / pi local f = string.format local NEAR = 0.01 -- Near plane for the camera local plr -- ============================================ -- File: src/debug.lua -- ============================================ ---- debug library ---- local debug = { frameStart = 0, curFramerate = 0, prevTime = 0, rate = {}, frame = {}, -- median data medRate = {}, medFrame = 0, medFps = 0, -- additional data data = {}, } function debug.start() debug.frameStart = time() debug.prevTime = time() debug.data = {} end function debug.addtime(name) local ln = time() - debug.prevTime if not debug.rate[name] then debug.rate[name] = {} end if #debug.rate[name] < 60 then table.insert(debug.rate[name], ln) else for i = 2, 60 do debug.rate[name][i - 1] = debug.rate[name][i] end debug.rate[name][60] = ln end debug.prevTime = time() end function debug.finish() -- framerate update local framerate = time() - debug.frameStart debug.curFramerate = framerate if #debug.frame < 60 then table.insert(debug.frame, framerate) else for i = 2, 60 do debug.frame[i - 1] = debug.frame[i] end debug.frame[60] = framerate end -- Calculating median local tbl = {} for i = 1, #debug.frame do tbl[i] = debug.frame[i] end table.sort(tbl) debug.medFrame = tbl[#tbl // 2 + 1] debug.medFps = 1000 / debug.medFrame -- Median rate debug.medRate = {} for name, data in pairs(debug.rate) do tbl = {} for i = 1, #data do tbl[i] = data[i] end table.sort(tbl) local med = tbl[#tbl // 2 + 1] table.insert(debug.medRate, { name = name, val = med }) end table.sort(debug.medRate, function(a, b) return a.val < b.val end) table.insert(debug.medRate, { name = "total", val = debug.medFrame }) end -- ============================================ -- File: src/profiler.lua -- ============================================ local profiler = { data = {}, frames = 0 } function profiler.start() profiler.frames = profiler.frames + 1 end function profiler.run(name, func, ...) local startTime = time() local result = table.pack(func(...)) local endTime = time() local elapsed = endTime - startTime if not profiler.data[name] then profiler.data[name] = {} end table.insert(profiler.data[name], elapsed) return table.unpack(result) end function profiler.print(name) local data = profiler.data[name] if not data then return end local total = 0 local medianTable = {} for _, time in ipairs(data) do total = total + time table.insert(medianTable, time) end local average = total / #data table.sort(medianTable) local median = medianTable[math.floor(#medianTable / 2)] return { total = total, count = #data, average = average, median = median, avgPerFrame = total / profiler.frames } end function profiler.trace() trace("") trace("") trace("") trace("---- Profiler", 12) for name, _ in pairs(profiler.data) do local stats = profiler.print(name) trace("-- " .. name, 14) if stats then trace(f("Total: %.2fms", stats.total), 13) trace(f("Count: %d", stats.count), 13) trace(f("Average: %.2fms", stats.average), 13) trace(f("Median: %.2fms", stats.median), 13) trace(f("Avg/Frame: %.2fms", stats.avgPerFrame), 13) end trace("") end profiler.data = {} end -- ============================================ -- File: src/math/utils.lua -- ============================================ local function clamp(value, min, max) return (value < min) and min or (value > max) and max or value end local function lerp(a, b, coef) return a + (b - a) * coef end local function mapValue(val,aMin,aMax,bMin,bMax) return (val - aMin) / (aMax - aMin) * (bMax - bMin) + bMin end local function convexHull(vertices) local function cross(a, b, c) return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x) end -- Sort the vertices lexicographically (tuples are compared element by element) table.sort(vertices, function(a, b) if a.x == b.x then return a.y < b.y else return a.x < b.x end end) -- Compute the lower hull local lower = {} for i = 1, #vertices do local p = vertices[i] while #lower >= 2 and cross(lower[#lower - 1], lower[#lower], p) <= 0 do table.remove(lower) end table.insert(lower, p) end -- Compute the upper hull local upper = {} for i = #vertices, 1, -1 do local p = vertices[i] while #upper >= 2 and cross(upper[#upper - 1], upper[#upper], p) <= 0 do table.remove(upper) end table.insert(upper, p) end -- Concatenate lower and upper hull to make the full hull local hull = {} for i = 1, #lower - 1 do table.insert(hull, lower[i]) end for i = 1, #upper - 1 do table.insert(hull, upper[i]) end return hull end local function minAbs(a,b) return (abs(a) < abs(b)) and a or b end local function maxAbs(a,b) return (abs(a) > abs(b)) and a or b end local function sign(val) return (val > 0) and 1 or (val < 0) and -1 or 0 end local function mean(...) local l, sum = {...}, 0 for i = 1 , #l do sum = sum + l[i] end return sum / #l end local function smoothstep(valA, valB, x) x = clamp((x - valA) / (valB - valA), 0, 1) return x * x * (3 - 2 * x) end -- Random float local function Rf(minV, maxV) if not maxV then minV, maxV = -minV, minV end return random() * (maxV - minV) + minV end -- Random value from list local function random(...) local l = { ... } return l[R(1, #l)] end local function copyScreenBuffer() ttri( 0, 0, 240, 0, 0, 136, 0, 0, 240, 0, 0, 136, 2, 0, 0, 0, 0 ) ttri( 240, 0, 0, 136, 240, 136, 240, 0, 0, 136, 240, 136, 2, 0, 0, 0, 0 ) end -- ============================================ -- File: src/math/vectors.lua -- ============================================ --[[ Saving binary data in strnigs instead of tables can significantly save garbage collector time, especially when we have thousands of instances of small objects ]] -- Creates a new vector local function vec3(x, y, z) return pack('>fff', x or 0, y or 0, z or 0) end local function vecUnpack(vec) return unpack('>fff', vec) end local function vecAdd(a, b) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return pack('>fff', x1 + x2, y1 + y2, z1 + z2) end local function vecSub(a, b) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return pack('>fff', x1 - x2, y1 - y2, z1 - z2) end local function vecNeg(a) local x, y, z = unpack('>fff', a) return pack('>fff', -x, -y, -z) end local function vecMul(a, b) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return pack('>fff', x1 * x2, y1 * y2, z1 * z2) end local function vecScale(a, s) local x, y, z = unpack('>fff', a) return pack('>fff', x * s, y * s, z * s) end local function vecDiv(a, b) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return pack('>fff', x1 / x2, y1 / y2, z1 / z2) end local function vecDot(a, b) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return x1 * x2 + y1 * y2 + z1 * z2 end local function vecCross(a, b) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return pack('>fff', y1 * z2 - z1 * y2, z1 * x2 - x1 * z2, x1 * y2 - y1 * x2) end local function vecLength(a) local x, y, z = unpack('>fff', a) return sqrt(x * x + y * y + z * z) end local function vecLengthSquared(a) local x, y, z = unpack('>fff', a) return x * x + y * y + z * z end local function vecNormalize(a) local x, y, z = unpack('>fff', a) local len = sqrt(x * x + y * y + z * z) if len < 1e-6 then return pack('>fff', 0, 0, 0) end return pack('>fff', x / len, y / len, z / len) end local function vecStr(a) local x, y, z = unpack('>fff', a) return f('[%.2f; %.2f; %.2f]', x, y, z) end local function vecLerp(a, b, coef) local x1, y1, z1 = unpack('>fff', a) local x2, y2, z2 = unpack('>fff', b) return pack('>fff', x1 + (x2 - x1) * coef, y1 + (y2 - y1) * coef, z1 + (z2 - z1) * coef) end -- Applying matrix to vector local function vecMat(a, mat) local x, y, z = unpack('>fff', a) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', mat) local newX = a11*x + a12*y + a13*z + a14 local newY = a21*x + a22*y + a23*z + a24 local newZ = a31*x + a32*y + a33*z + a34 local newW = a41*x + a42*y + a43*z + a44 return pack('>fff', newX / newW, newY / newW, newZ / newW) end -- Applying rotation matrix to vector local function vecRot(a, mat) local x, y, z = unpack('>fff', a) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', mat) local newX = a11*x + a12*y + a13*z local newY = a21*x + a22*y + a23*z local newZ = a31*x + a32*y + a33*z return pack('>fff', newX, newY, newZ) end local function vecToEuler(front, up) local right = vecCross(front, up) up = vecCross(right, front) up = vecNormalize(up) right = vecNormalize(right) front = vecNormalize(front) local upX, upY, upZ = unpack('>fff', up) local frontX, frontY, frontZ = unpack('>fff', front) local rightX, rightY, rightZ = unpack('>fff', right) local yaw = -math.atan2(frontX, frontZ) local flatFront = sqrt(frontX * frontX + frontZ * frontZ) local pitch = -math.atan2(-frontY, flatFront) local roll = math.atan2(rightY, upY) return pitch, yaw, roll end local function eulerToVec(pitch, yaw, roll) local x = -sin(yaw) * cos(pitch) local y = sin(pitch) local z = cos(yaw) * cos(pitch) local front = vec3(x, y, z) x = cos(yaw) * sin(roll) + sin(yaw) * sin(pitch) * cos(roll) y = cos(pitch) * cos(roll) z = sin(yaw) * sin(roll) - cos(yaw) * sin(pitch) * cos(roll) local up = vec3(x, y, z) return front, up end -- ============================================ -- File: src/math/quaternions.lua -- ============================================ local function quat(x, y, z, w) return pack('>ffff', x or 0, y or 0, z or 0, w or 1) end local function quatUnpack(q) return unpack('>ffff', q) end local function quatStr(q) return f('(%f, %f, %f, %f)', unpack('>ffff', q)) end local function quatMul(a, b) local ax, ay, az, aw = unpack('>ffff', a) local bx, by, bz, bw = unpack('>ffff', b) return pack('>ffff', aw * bx + ax * bw + ay * bz - az * by, aw * by - ax * bz + ay * bw + az * bx, aw * bz + ax * by - ay * bx + az * bw, aw * bw - ax * bx - ay * by - az * bz ) end local function quatNormalize(q) local x, y, z, w = unpack('>ffff', q) local len = sqrt(x * x + y * y + z * z + w * w) assert(len > 0, 'Quaternion length is zero') return pack('>ffff', x / len, y / len, z / len, w / len) end local function quatRotateByVec(q, vec) local vx, vy, vz = unpack('>fff', vec) local qx, qy, qz, qw = unpack('>ffff', q) local angle = sqrt(vx * vx + vy * vy + vz * vz) if angle < 0.0001 then return q end vx = vx / angle vy = vy / angle vz = vz / angle local halfAngle = angle * 0.5 local sinHalfAngle = sin(halfAngle) local qx2 = vx * sinHalfAngle local qy2 = vy * sinHalfAngle local qz2 = vz * sinHalfAngle local qw2 = cos(halfAngle) local q2 = quat(qx2, qy2, qz2, qw2) return quatNormalize(quatMul(q2, q)) end -- ============================================ -- File: src/math/matrices.lua -- ============================================ local function mat4(data) return pack('>ffffffffffffffff', data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15], data[16] ) end local function matUnpack(mat) return table.pack(unpack('>ffffffffffffffff', mat)) end local function matIdentity() return pack('>ffffffffffffffff', 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ) end local function matRotateX(angle) return pack('>ffffffffffffffff', 1, 0, 0, 0, 0, cos(angle), -sin(angle), 0, 0, sin(angle), cos(angle), 0, 0, 0, 0, 1 ) end local function matRotateY(angle) return pack('>ffffffffffffffff', cos(angle), 0, sin(angle), 0, 0, 1, 0, 0, -sin(angle), 0, cos(angle), 0, 0, 0, 0, 1 ) end local function matRotateZ(angle) return pack('>ffffffffffffffff', cos(angle), -sin(angle), 0, 0, sin(angle), cos(angle), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ) end local function matPos(x, y, z) return pack('>ffffffffffffffff', 1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1 ) end local function matScale(x, y, z) return pack('>ffffffffffffffff', x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, 0, 0, 0, 1 ) end local function matFromVecs(up, forward, right) local upX, upY, upZ = unpack('>fff', up) local forwardX, forwardY, forwardZ = unpack('>fff', forward) local rightX, rightY, rightZ = unpack('>fff', right) return pack('>ffffffffffffffff', rightX, upX, forwardX, 0, rightY, upY, forwardY, 0, rightZ, upZ, forwardZ, 0, 0, 0, 0, 1) end local function matFromQuat(quat) quat = quatNormalize(quat) local x, y, z, w = quatUnpack(quat) local xx, yy, zz = x * x, y * y, z * z local xy, xz, yz = x * y, x * z, y * z local wx, wy, wz = w * x, w * y, w * z return pack('>ffffffffffffffff', 1 - 2 * (yy + zz), 2 * (xy - wz), 2 * (xz + wy), 0, 2 * (xy + wz), 1 - 2 * (xx + zz), 2 * (yz - wx), 0, 2 * (xz - wy), 2 * (yz + wx), 1 - 2 * (xx + yy), 0, 0, 0, 0, 1 ) end local function matProjection(fov) local tg = math.tan(fov * 0.5 * toRad) return pack('>ffffffffffffffff', 1/tg, 0 , 0, 0, 0 , 1/tg, 0, 0, 0 , 0 , 1, 0, 0 , 0 , 1, 0 ) end local function matScreen() return pack('>ffffffffffffffff', 120, 0, 0, 120, 0, -120, 0, 68, 0, 0, 1, 0, 0, 0, 0, 1 ) end -- Using open loops gives about a x2 increase in speed local function matMul(a, b) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', a) local b11,b12,b13,b14, b21,b22,b23,b24, b31,b32,b33,b34, b41,b42,b43,b44 = unpack('>ffffffffffffffff', b) local c11 = a11*b11 + a12*b21 + a13*b31 + a14*b41 local c12 = a11*b12 + a12*b22 + a13*b32 + a14*b42 local c13 = a11*b13 + a12*b23 + a13*b33 + a14*b43 local c14 = a11*b14 + a12*b24 + a13*b34 + a14*b44 local c21 = a21*b11 + a22*b21 + a23*b31 + a24*b41 local c22 = a21*b12 + a22*b22 + a23*b32 + a24*b42 local c23 = a21*b13 + a22*b23 + a23*b33 + a24*b43 local c24 = a21*b14 + a22*b24 + a23*b34 + a24*b44 local c31 = a31*b11 + a32*b21 + a33*b31 + a34*b41 local c32 = a31*b12 + a32*b22 + a33*b32 + a34*b42 local c33 = a31*b13 + a32*b23 + a33*b33 + a34*b43 local c34 = a31*b14 + a32*b24 + a33*b34 + a34*b44 local c41 = a41*b11 + a42*b21 + a43*b31 + a44*b41 local c42 = a41*b12 + a42*b22 + a43*b32 + a44*b42 local c43 = a41*b13 + a42*b23 + a43*b33 + a44*b43 local c44 = a41*b14 + a42*b24 + a43*b34 + a44*b44 return pack('>ffffffffffffffff', c11,c12,c13,c14, c21,c22,c23,c24, c31,c32,c33,c34, c41,c42,c43,c44) end -- Multiplying multiple matrices at once (faster than multiple `matMul` calls) local function matCombine(...) local mat = {...} local r11,r12,r13,r14, r21,r22,r23,r24, r31,r32,r33,r34, r41,r42,r43,r44 = unpack('>ffffffffffffffff', mat[#mat]) for i = #mat - 1, 1, -1 do local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', mat[i]) local c11 = a11*r11 + a12*r21 + a13*r31 + a14*r41 local c12 = a11*r12 + a12*r22 + a13*r32 + a14*r42 local c13 = a11*r13 + a12*r23 + a13*r33 + a14*r43 local c14 = a11*r14 + a12*r24 + a13*r34 + a14*r44 local c21 = a21*r11 + a22*r21 + a23*r31 + a24*r41 local c22 = a21*r12 + a22*r22 + a23*r32 + a24*r42 local c23 = a21*r13 + a22*r23 + a23*r33 + a24*r43 local c24 = a21*r14 + a22*r24 + a23*r34 + a24*r44 local c31 = a31*r11 + a32*r21 + a33*r31 + a34*r41 local c32 = a31*r12 + a32*r22 + a33*r32 + a34*r42 local c33 = a31*r13 + a32*r23 + a33*r33 + a34*r43 local c34 = a31*r14 + a32*r24 + a33*r34 + a34*r44 local c41 = a41*r11 + a42*r21 + a43*r31 + a44*r41 local c42 = a41*r12 + a42*r22 + a43*r32 + a44*r42 local c43 = a41*r13 + a42*r23 + a43*r33 + a44*r43 local c44 = a41*r14 + a42*r24 + a43*r34 + a44*r44 r11, r12, r13, r14 = c11, c12, c13, c14 r21, r22, r23, r24 = c21, c22, c23, c24 r31, r32, r33, r34 = c31, c32, c33, c34 r41, r42, r43, r44 = c41, c42, c43, c44 end return pack('>ffffffffffffffff', r11,r12,r13,r14, r21,r22,r23,r24, r31,r32,r33,r34, r41,r42,r43,r44) end local function matTranspose(a) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', a) return pack('>ffffffffffffffff', a11,a21,a31,a41, a12,a22,a32,a42, a13,a23,a33,a43, a14,a24,a34,a44) end -- ============================================ -- File: src/math/collision.lua -- ============================================ local function checkAABB(AABB1, AABB2) return AABB1.xmin < AABB2.xmax and AABB1.xmax > AABB2.xmin and AABB1.ymin < AABB2.ymax and AABB1.ymax > AABB2.ymin and AABB1.zmin < AABB2.zmax and AABB1.zmax > AABB2.zmin end local function collRayAABB(rayPos, rayDir, aabb) rayDir = vecNormalize(rayDir) local posX, posY, posZ = vecUnpack(rayPos) local dirX, dirY, dirZ = vecUnpack(rayDir) local tMinX = (aabb.xmin - posX) / dirX local tMinY = (aabb.ymin - posY) / dirY local tMinZ = (aabb.zmin - posZ) / dirZ local tMaxX = (aabb.xmax - posX) / dirX local tMaxY = (aabb.ymax - posY) / dirY local tMaxZ = (aabb.zmax - posZ) / dirZ if tMaxX < tMinX then tMinX, tMaxX = tMaxX, tMinX end if tMaxY < tMinY then tMinY, tMaxY = tMaxY, tMinY end if tMaxZ < tMinZ then tMinZ, tMaxZ = tMaxZ, tMinZ end local tEnter = max(tMinX, tMinY, tMinZ) local tExit = min(tMaxX, tMaxY, tMaxZ) if (tExit >= tEnter and tExit >= 0) then return true, tEnter else return false, math.huge end end local function collRayTriangle(rayPos, rayDir, p1, p2, p3) local v1 = vecSub(p2, p1) local v2 = vecSub(p3, p1) local h = vecCross(rayDir, v2) local a = vecDot(v1, h) if a > -1e-6 and a < 1e-6 then return false, math.huge end local f = 1 / a local s = vecSub(rayPos, p1) local u = f * vecDot(s, h) if u < 0 or u > 1 then return false, math.huge end local q = vecCross(s, v1) local v = f * vecDot(rayDir, q) if v < 0 or u + v > 1 then return false, math.huge end local t = f * vecDot(v2, q) if t > 1e-6 then return true, t else return false, math.huge end end local function collRayRigidbody(rayPos, rayDir, rigidBody) assert(rigidBody.AABB, "Rigidbody must have an AABB") local hit, t = collRayAABB(rayPos, rayDir, rigidBody.AABB) if not hit then return false, math.huge end local f1 = rigidBody.model.f[1] local f2 = rigidBody.model.f[2] local f3 = rigidBody.model.f[3] local vertices = rigidBody.processedV local nearest = math.huge for i = 1, #f1 do local v1 = vertices[f1[i]] local v2 = vertices[f2[i]] local v3 = vertices[f3[i]] hit, t = collRayTriangle(rayPos, rayDir, v1, v2, v3) if hit then nearest = min(nearest, t) end end return (nearest ~= math.huge), nearest end -- ============================================ -- File: src/math/BVH.lua -- ============================================ local function buildMapBVH(model) -- Config -- local faceWidth = 0.02 local maxDepth = 20 local treshold = 2 -- maximum number of triangles per node -- Algorithm -- local BVH = {tri = {}} local posX = model.v.x local posY = model.v.y local posZ = model.v.z local f1 = model.f[1] local f2 = model.f[2] local f3 = model.f[3] for i = 1, #f1 do local face = {} local i1 = f1[i] local i2 = f2[i] local i3 = f3[i] local p1 = vec3(posX[i1], posY[i1], posZ[i1]) local p2 = vec3(posX[i2], posY[i2], posZ[i2]) local p3 = vec3(posX[i3], posY[i3], posZ[i3]) local normal = vecCross(vecSub(p2, p1), vecSub(p3, p1)) normal = vecScale(vecNormalize(normal), faceWidth) face.points = { vecAdd(p1, normal), vecAdd(p2, normal), vecAdd(p3, normal), p1, p2, p3 } face.aabb = { xmin = math.huge, ymin = math.huge, zmin = math.huge, xmax = -math.huge, ymax = -math.huge, zmax = -math.huge } for j = 1, #face.points do local vx, vy, vz = vecUnpack(face.points[j]) face.aabb.xmin = min(face.aabb.xmin, vx) face.aabb.ymin = min(face.aabb.ymin, vy) face.aabb.zmin = min(face.aabb.zmin, vz) face.aabb.xmax = max(face.aabb.xmax, vx) face.aabb.ymax = max(face.aabb.ymax, vy) face.aabb.zmax = max(face.aabb.zmax, vz) end face.midX = (posX[i1] + posX[i2] + posX[i3]) / 3 face.midY = (posY[i1] + posY[i2] + posY[i3]) / 3 face.midZ = (posZ[i1] + posZ[i2] + posZ[i3]) / 3 BVH.tri[i] = face end local function splitBVH(bvh, depth) if depth > maxDepth then return end if #bvh.tri <= treshold then return end local xmin = math.huge local ymin = math.huge local zmin = math.huge local xmax = -math.huge local ymax = -math.huge local zmax = -math.huge for i = 1, #bvh.tri do local face = bvh.tri[i] xmin = min(xmin, face.aabb.xmin) ymin = min(ymin, face.aabb.ymin) zmin = min(zmin, face.aabb.zmin) xmax = max(xmax, face.aabb.xmax) ymax = max(ymax, face.aabb.ymax) zmax = max(zmax, face.aabb.zmax) end bvh.aabb = { xmin = xmin, ymin = ymin, zmin = zmin, xmax = xmax, ymax = ymax, zmax = zmax } local axis = nil local len = 0 if xmax - xmin > len then axis = 1 len = xmax - xmin end if ymax - ymin > len then axis = 2 len = ymax - ymin end if zmax - zmin > len then axis = 3 len = zmax - zmin end if len == 0 then return end if axis == 1 then table.sort(bvh.tri, function(a, b) return a.midX < b.midX end) elseif axis == 2 then table.sort(bvh.tri, function(a, b) return a.midY < b.midY end) elseif axis == 3 then table.sort(bvh.tri, function(a, b) return a.midZ < b.midZ end) end -- Median algorithm local left = {tri = {}} local right = {tri = {}} for i = 1, #bvh.tri // 2 do left.tri[#left.tri+1] = bvh.tri[i] end for i = #bvh.tri // 2 + 1, #bvh.tri do right.tri[#right.tri+1] = bvh.tri[i] end bvh.left = left bvh.right = right bvh.tri = nil splitBVH(left, depth + 1) splitBVH(right, depth + 1) end splitBVH(BVH, 1) return BVH end local function intersectBVH(aabb, bvh, items) items = items or {} if bvh.aabb then if checkAABB(aabb, bvh.aabb) then intersectBVH(aabb, bvh.left, items) intersectBVH(aabb, bvh.right, items) end else for i = 1, #bvh.tri do local tri = bvh.tri[i] if checkAABB(aabb, tri.aabb) then items[#items+1] = tri end end end return items end -- ============================================ -- File: src/math/renderer.lua -- ============================================ local function renderModel(model, cameraMat, drawBothSides, textureSource) textureSource = textureSource or 0 local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', cameraMat) local vx, vy, vw = {}, {}, {} local vx2, vy2, vz2 = {}, {}, {} local modelX, modelY, modelZ = model.v.x, model.v.y, model.v.z for i = 1, #modelX do local x, y, z = modelX[i], modelY[i], modelZ[i] -- Transforming vertices local x2 = a11*x + a12*y + a13*z + a14 local y2 = a21*x + a22*y + a23*z + a24 local z2 = a31*x + a32*y + a33*z + a34 local w = a41*x + a42*y + a43*z + a44 -- Store transformed vertex vector vx[i] = x2 / w vy[i] = y2 / w vw[i] = w vx2[i] = x2 vy2[i] = y2 vz2[i] = z2 end local f1, f2, f3 = model.f[1], model.f[2], model.f[3] local uv1, uv2 = model.uv[1], model.uv[2] local uv3, uv4 = model.uv[3], model.uv[4] local uv5, uv6 = model.uv[5], model.uv[6] for i = 1, #f1 do local i1 = f1[i] local i2 = f2[i] local i3 = f3[i] local w1 = vw[i1] > NEAR local w2 = vw[i2] > NEAR local w3 = vw[i3] > NEAR -- Discarding triangles that are behind the camera if not (w1 or w2 or w3) then goto continue end local x1, y1 = vx[i1], vy[i1] local x2, y2 = vx[i2], vy[i2] local x3, y3 = vx[i3], vy[i3] -- discarding triangles that are reversed to the camera if not drawBothSides and (((x2-x1) * (y3-y1) - (x3-x1) * (y2-y1) < 0) ~= (vw[i1] > 0) ~= (vw[i2] > 0) ~= (vw[i3] > 0)) then goto continue end -- Rendering triangles if w1 and w2 and w3 then ttri( x1, y1, x2, y2, x3, y3, uv1[i], uv2[i], uv3[i], uv4[i], uv5[i], uv6[i], textureSource, -1, vz2[i1], vz2[i2], vz2[i3] ) else --[[ A small optimization: since UV data values are usually used once per triangle, it will be faster to take them directly from the table rather than saving them to variables but in this case, we need them to change their order to the correct one during sorting ]] local u1, v1 = uv1[i], uv2[i] local u2, v2 = uv3[i], uv4[i] local u3, v3 = uv5[i], uv6[i] -- Sorting i1, i2 and i3 by depth if vz2[i2] > vz2[i3] then i2, i3 = i3, i2 u2, u3 = u3, u2 v2, v3 = v3, v2 end if vz2[i1] > vz2[i2] then i1, i2 = i2, i1 u1, u2 = u2, u1 v1, v2 = v2, v1 if vz2[i2] > vz2[i3] then i2, i3 = i3, i2 u2, u3 = u3, u2 v2, v3 = v3, v2 end end -- One point is cutted, so we need to render two triangles if vz2[i2] > NEAR then local t1 = (NEAR - vz2[i1]) / (vz2[i3] - vz2[i1]) local t2 = (NEAR - vz2[i1]) / (vz2[i2] - vz2[i1]) local x4 = (vx2[i1] * (1-t1) + vx2[i3] * t1) / NEAR local y4 = (vy2[i1] * (1-t1) + vy2[i3] * t1) / NEAR local x5 = (vx2[i1] * (1-t2) + vx2[i2] * t2) / NEAR local y5 = (vy2[i1] * (1-t2) + vy2[i2] * t2) / NEAR local u4 = u1 + (u3 - u1) * t1 local v4 = v1 + (v3 - v1) * t1 local u5 = u1 + (u2 - u1) * t2 local v5 = v1 + (v2 - v1) * t2 ttri( vx[i2], vy[i2], x4, y4, x5, y5, u2, v2, u4, v4, u5, v5, textureSource, -1, vz2[i2], NEAR, NEAR ) ttri( vx[i3], vy[i3], vx[i2], vy[i2], x4, y4, u3, v3, u2, v2, u4, v4, textureSource, -1, vz2[i3], vz2[i2], NEAR ) else -- Two points are cutted, so we need to render one triangle local t1 = (NEAR - vz2[i1]) / (vz2[i3] - vz2[i1]) local t2 = (NEAR - vz2[i3]) / (vz2[i2] - vz2[i3]) local x4 = (vx2[i1] * (1-t1) + vx2[i3] * t1) / NEAR local y4 = (vy2[i1] * (1-t1) + vy2[i3] * t1) / NEAR local x5 = (vx2[i3] * (1-t2) + vx2[i2] * t2) / NEAR local y5 = (vy2[i3] * (1-t2) + vy2[i2] * t2) / NEAR local u4 = u1 + (u3 - u1) * t1 local v4 = v1 + (v3 - v1) * t1 local u5 = u3 + (u2 - u3) * t2 local v5 = v3 + (v2 - v3) * t2 ttri( vx[i3], vy[i3], x4, y4, x5, y5, u3, v3, u4, v4, u5, v5, textureSource, -1, vz2[i3], NEAR, NEAR ) end end ::continue:: end end local function renderModelOutline(model, color, cameraMat) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', cameraMat) local vertices = {} local modelX, modelY, modelZ = model.v.x, model.v.y, model.v.z for i = 1, #modelX do local x, y, z = modelX[i], modelY[i], modelZ[i] -- Transforming vertices local x2 = a11*x + a12*y + a13*z + a14 local y2 = a21*x + a22*y + a23*z + a24 local z2 = a31*x + a32*y + a33*z + a34 local w = a41*x + a42*y + a43*z + a44 -- Store transformed vertex vector vertices[i] = { x = x2 / w, y = y2 / w } end vertices = convexHull(vertices) for i = 1, #vertices do local p1 = vertices[i] local p2 = vertices[(i % #vertices) + 1] line(p1.x, p1.y, p2.x, p2.y, color) end end local function transformVertices(model, mat) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', mat) local v = {} local modelX, modelY, modelZ = model.v.x, model.v.y, model.v.z for i = 1, #modelX do local x, y, z = modelX[i], modelY[i], modelZ[i] -- Transforming vertices local x2 = a11*x + a12*y + a13*z + a14 local y2 = a21*x + a22*y + a23*z + a24 local z2 = a31*x + a32*y + a33*z + a34 local w = a41*x + a42*y + a43*z + a44 -- Store transformed vertex vector v[i] = vec3(x2 / w, y2 / w, z2 / w) end return v end local function renderLine(v1, v2, color, cameraMat) local a11,a12,a13,a14, a21,a22,a23,a24, a31,a32,a33,a34, a41,a42,a43,a44 = unpack('>ffffffffffffffff', cameraMat) -- UV cooordinates local u = color % 4 * 2 local v = color // 4 * 2 -- Transforming vertices local vx1, vy1, vz1 = vecUnpack(v1) local vx2, vy2, vz2 = vecUnpack(v2) local x1 = a11*vx1 + a12*vy1 + a13*vz1 + a14 local y1 = a21*vx1 + a22*vy1 + a23*vz1 + a24 local z1 = a31*vx1 + a32*vy1 + a33*vz1 + a34 local w1 = a41*vx1 + a42*vy1 + a43*vz1 + a44 local x2 = a11*vx2 + a12*vy2 + a13*vz2 + a14 local y2 = a21*vx2 + a22*vy2 + a23*vz2 + a24 local z2 = a31*vx2 + a32*vy2 + a33*vz2 + a34 local w2 = a41*vx2 + a42*vy2 + a43*vz2 + a44 local px1, py1 = x1 / w1, y1 / w1 local px2, py2 = x2 / w2, y2 / w2 if z1 < NEAR and z2 < NEAR then return end if z1 < NEAR or z2 < NEAR then if z1 < NEAR then x1, x2 = x2, x1 y1, y2 = y2, y1 z1, z2 = z2, z1 px1, px2 = px2, px1 py1, py2 = py2, py1 end local t1 = (NEAR - z1) / (z2 - z1) px2 = (x1 * (1 - t1) + x2 * t1) / NEAR py2 = (y1 * (1 - t1) + y2 * t1) / NEAR z2 = NEAR end local dx = px2 - px1 local dy = py2 - py1 local ln = sqrt(dx * dx + dy * dy) local px3, py3 = px1 - dy / ln, py1 + dx / ln local px4, py4 = px2 - dy / ln, py2 + dx / ln ttri( px1, py1, px2, py2, px3, py3, u, v, u+1, v, u+1, v+1, 0,-1, z1, z2, z1 ) ttri( px2, py2, px3, py3, px4, py4, u, v, u+1, v, u+1, v+1, 0,-1, z2, z1, z2 ) end -- ============================================ -- File: src/audio_engine.lua -- ============================================ -- Nya sound engine (By HanamileH 2026) local Nya = { max_sounds = 5, playing = {} } function Nya.play(name, loop, volume) volume = volume or 1.0 if not Nya.sounds[name] then error("Unknown sound name!") end if #Nya.playing >= Nya.max_sounds then local removed = false for i = 1, #Nya.playing do if not Nya.playing[i].loop then table.remove(Nya.playing, i) removed = true break end end if not removed then table.remove(Nya.playing, 1) end end table.insert(Nya.playing, {name = name, loop = loop, volume = volume, pos = 0}) end function Nya.update() local result = {} for i = 0,127 do result[i] = 0 end -- Unpacking data for i = #Nya.playing, 1, -1 do local sound = Nya.playing[i] local chunk = Nya.sounds[sound.name]:sub(sound.pos*128+1, sound.pos*128+128) local volume = tonumber(chunk:sub(1,1), 16) * sound.volume local value = tonumber(chunk:sub(2,2), 16) result[0] = result[0] + (value - 7.5) * volume for j=1,126 do value = (value + tonumber(chunk:sub(j + 2, j + 2),16)) % 16 result[j] = result[j] + (value - 7.5) * volume end sound.pos = sound.pos + 1 if sound.pos * 128 >= #Nya.sounds[sound.name] then if sound.loop then sound.pos = 0 else table.remove(Nya.playing, i) end end end -- playback result[127] = result[126] for i=0,127 do poke(0x14E24+i, min(max(0, 127 + result[i]), 255)) end end -- ============================================ -- File: src/audio_data.lua -- ============================================ -- TODO: compress this Nya.sounds = { info = "1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000F010F000000000000100010100110001001F00000F00F0FF00F01FC33BD61907F926F9161BE62CC54EC141CE33ED022ED121FD121EE221EF800000000000000000000000000000000000000000001F11BB07F110101F1FFFF00011111100FFFFF0F10111010F0E0FFF0011111000FF0FFF0111011000FFF83002212210FEEFDFF012222210FEEFEE002222210FEEEEEE012222200FEEDEFF112312100EEEEEF012222110EEFEFF012222200FEEFDFF11212210FFDFEE0027832200EDEEEF012222200EDFDEE002232210FEEEEE0112222100EEEEF001222210FEEFEFF012121100EEFEF001212211DFEEEF001221201EEFEEF011312201E68EEE11222310FEEEEEF02313210FEDEEF11223210EEDEEE01323210FEDDEF0132322FFDECEF02323200DEDDF0133321FEEDEE0223320FEDDEF0233320EDDDE0C712100EFFE00223FEF0FFF111120FEFEF12321FDDD014330DDCE13441DCCE04441EBCE04341ECDD13331FCDE03231FEEEF22110FFFF011010F0FF011110FFFF88121EEEF02131FDEE02231FEDE12231EDDF13320DDDF3340ECDF2441ECBF3451DBCF3540CBC1553EBAF3550CAD1652DAC0553DBB0463DBB0552DBC1451DCD146FBAD2560BAE364EBBF563DAC1560BBE453DCC245FBB0542CAE453DBD353DCC254EBC244ECD143FCC243FCD233ECE242DDE331DD033FDD133FCE232DEF321DD13EEAC452BB055FBC253DBF45FCC352DBF45ECD341BD143DB044ECF24FCF240CD331CE131DD221DE221ED130FE120FE210EF210EF21FE0200E111FE111F001F0F39FF0100F010F0010F0100F0100000000000000000000000000000001F00100F10F0010F0000000000000000001F0000000000000000000000000000000000E139876AA56BA56BA64CB54BD53BE52BF50B14FC14ED23DE22EF21E020E02FF02E011E010E11FF11FF10F100F1000000000F100000F10F010F100000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ambient = "67F20000FF1E2F110FD2100F01EFFFF03012E1F0010F0E1F20100F002E11E2F001F10101F00000000F1E2E01E2F101E02F1010F0E1E0F2021F000F1FF0E10F0167000F1E002EF2FFF1D20E2F3E2E0022D4001FF010E200100D100F11F0FF0200F0D01D201F2F03C40E2D0F210213C20E1F00F00E03C10E3D4FF1E1D01011F01048E3A23C6E20F1F1E1C1FD2D3E03D10F1F3C20F30021011EF3E4EFF00CF110101E3FF001F1E300F120FF1C3DF1E31D2F2F0FF1FF220100E2110E1002F0F0F1F0363D2D1FE0F104100F0DFFF41422DEE1F1202E1EFF010E0D101E0011F3F0101E310F1FE4F2B1103B003EF1F3F2E2FE002E0E2C0230F2E0E11E1F02D420D10CF2491E4E2F12C3D2D0012FFEF02F1F1F01F2F0F0003F02D1E3F2F1EF2E2D101F221FDE02E1FF0E0EF1211100E2F1104EFFF01011E101F30D1DF000010F0E0102F056101F1F1001F010F100111F2E0F00F2D3FF100F0F0FF02102D2F01E30F011F0E0F110100E10F01F00F00FE21F1F0101F2022E0E011E21D0EFF0200F00100FFE450100E11F23FFFF11F101E0E12F2F20110F00FF2001F3FEF1F02D00F10F0F11F0F0E00F11213D0F10F1F1E1001F3000FE0F1F1F1111F4D0E1E0001110E30E1E4A3E00E2E003F20E2D2FE0F2E1F02D0E2EF1F1F2F2F01F101001010E0F0000F00F1F01FF01F2EF11FE2022012D0EFF0F11011E11F4E21FEEE030100E00F110105800102FF02E1F0F10F401F0C00F0F200002E1F1010E0E3D1F1100E2E20F110FF0D2C11E10203FF1F0F0FE3E410F0101E100010F11000F0E3E000000000F1FD1462E10F12B1202F02E0FC010E3C4E0220D4E1E2F2E0102F02FF2E000F10020F0F012FF0F0010001FE0E2D21E1F02F21F10F1F00D1004E0001D200FF101FE11F05800000002F00F11E10010E2E02F00DDF12E41F1FF1F0000200FF0F303E0F01F1F5E02EF001EF1F3E1F0000F01FF1F1003D2FF2202F10D001EFF00E1101E100F48F0E302D2001F0E10002E1F000FF1F0E010F21FE0FF0000001F3032E1F02E20200FEF1E2F05C5FF2CF0F102FE0E10EF10210FFC2D4005F00FF2F3F0001D1E1D44D03D20E4F11F02C32E21FA3C14F21D10F4FFE1C31062C50C4BFFE21FE0FF4000E000E20113030D3EF1ED30D4FE2E06ED2FB5FEC21C5B70E0EFE023E20EF2114A0F0F000E0112E20F5F1F0DFD20D2F10F02D2010F0000E22F1F100F0000E10E3002ED30C3F2F1010F21011EFF1EF1FD42EE2F01E2FD02FF400F22E00FE3F0006800FE0F3F11F1001F01011E001000F00F000001F11F12F010012E000E00F1E00E10F1F01F11001F1E2EF1FF0201F00000101FF2F10E11E10F20001010E10F004B1D1E02E13003F0EF01FF0FF021F00FF02E000200FF0100FF1011E2FFFD2F0300002F1111F02FE01EFF200101E100211FE00F2EFFE010F012F1002D1000003F6BFFF00001200F0F2F32FE0000F02EF3D10F1F11FE00F00010001F1E10F2E00000F1000F0E02101000F0FF0F100E11F0E012F2FF20010000F10020E1E00E110F4310E31F20D3D22D10102F01FEE1D2FE3F03FF2001E01C01F04F12F0EFF40E30D2DF4EE11032F0F131EF1D10D3F00102001DF01F0E1F1E2012D2F1F00F1F103178000010F000F100F1F01F01FF10F1FF1110000F1E0100001F0FF02F0101FF00FEF1E211F01F100011D001101F1100000000F00F0F01E0100F2F02F2F01F0E11570101F2EF1EF0101FF2012F11E10E1F000020F3FEFFFF2011F20F2F00F0101F11FEF2F02F00E000121F1F020F2FFFE001FF20F1FF0F0F11010F1010E0E10100581F10FE0FF10F3101000010000FE001F101FF0F00F11F20100F0FFFF0E2E1001F0100D0111021E02120E1010FF10F111EF00000000E0F21000F00F01C0023F0460D11312F0F001E0000F00FE30D3001D02011FF0F0FE2FE1F110F13F101000020111D4EE1D0FE3100FF01000F01F12011FF0E00FDEF2003F000020F0EF0320E580F1F10FF010F11F2E00E21E100101D1E000012F100010F1FF1001E1000F102F02F020E1F0E100102F0E000F2F2FF2E112F21E2FE00E11EF0F00120101EF0016A0201DFF00E2001F0F1000001002F00E00111F1F0F10F1001E01E00F000FF001110000011E000001F11F100100000F0020E0FF00000FFDF0003F1100110000058000000101FF01102000DF000012FFF000020F1E10F0F1F0211100FF1FF2F2F000F112FE110E0F0F2E20E3E0022100E0F11E1E11010D30FED101D10000011E2690F21E31F00D02F101D1E1001F1E00F1000F1F0010000000F1000F1E0F010F1F10E10010F00E200F101E00F1FF02010F0101F10110FFF02F010E1FF1E021E3F46FE00F2F02FD2F003E20111003E3F1E10F2D2EF02F10FF00021EF1F1FEF2E03D30D10002001C12E02112EEF1023E12E01F12FEE1E1E022F01F31E0FF0FF00015A00010FF0F0110F103E0E110F0000EFFF0300010FF0FE011E11012F10F00F10001F00F2F101F0FE1011FFE00F2E100FF2F1FF100FF1020001FD212F20E00FF075F1F20F101D1F202F00100000E0F2D2F00020100000000FE1F11F0F00E2E3F1FF100F0F100E2F1F110000EF0F1F01F200102F00010F00001F1F2E10F2F2F10F85001FF1F00F00000101E0F0F02F1110F1001100F0101F00F101F10000F1000F1E1F10F002F00F1E11010010F11001FF000010000000F1F0000F10F000F101F068210D11E01F11F0011111000F1FE000F001F010F100FF01F01F0001FF01001000F00F22F10F020EF100FF1FF11F011F10101E10F101EFF01E0000E101000F1F4611000000010103C2FE4D1ED1FF3E11E110100FE2EF001D301FF0F210011F021020DF00000F11F301E1FF111D000F0313D1FF0FF01E11FFF12F1E2E1213D1D159F1F0101F22F01F11FF1E01FE10E2F1110F2FF2F1E00E3F0010E01F0FE0EE3F00020001E00F20020F00000001F0FF1201010E3D002001F0F0FF1FF0F0F0003F5812E1EFF0002000F1F1000F1F1F12F00F01111F0FF000F1F11E30D2F101002E0FE00000110F200010EFF101000E1F01F30100003EFF0EF0101F01E10110F0F14A1F00000F02D1E020101FFF01F00ED01310FF112F01F1E000101E1F20F0F20302FED0C31E3E0F01F0E2100E0F3023F1EFEFFE21011F0F1F100011E1EE20111E5800F20F1FD0002E0000001E11F20F10E2EE1F0FF201F0002D32F0100FD2F12F2E01F110000011E3D000000F00EFF0002E1F01D1002F3F0E1101E20E002003F049FF1B2D10F111D3C1F01F1F412F00F11E1E11E3E2F1000D2E0F0031002F0D0DF13FE1F0F204E1F2000F10FF0F1D3F200FF00100F0F3000E11111E020E1F1F0E48E101D2D2D01120E200100FFD20FF2D30F12FE1101104F2E10F100F01EE110EFFF00201011110001EF2F12FE0110EE1211F01DE020001DF0F1F0FEF0F121F104700E12E3E00F2F0010020E3D0002F1E0002120FF0E1001F2E3E00E02F00F21EFEEFF1FE2002F01101F02F1F0E21EF11F01FE112F0012F30F1C010F000FD2FFE67F1FE0F0FF12211000011F000F0FF10120FF010001E301000E0F1FF1001FF000100F01F100011D10F10000012F10F1E0000FF0000F01E20F0F1E2000100020E680000000010F1F000112210FFF000F010E0E100002F00FF100201F1010F0F10EFF00000FF0FF21010000F10000F0100000011F2E0F00FF01100220F1FF0F1014CD1100E0EE0111000001F010001F1F0F1D2111D1F00000FFFEF1111F2101F0F10F0F010E112F0FF11100F000F1F111EF1F1EF11F200002FF000FF1F2F1FE0F267FF0F1F21F20FF0F00F011F01F120000F00000F0F10101F0F1F00E1E100F02F00FF2001FF10E2F1011010F001001F100F10000FF1000111000F01E1FF1F01005A010F1F1F01F1F2200E1100F000E0FF1F100001E01E01FE0F001E001210F1000000E0020000F00F1F0F0210F0FF00F0F3F11F20000F01F100110E0E0110000139001E00F101FC131F2B11F4E2E0021F1D030200010C2E030E1E2DC12D21E3F00000003200D04F1DEF002E01E0D103212C1F2E02E01001DF10E111003E0EE002580000000002031E0EF011010F1E1020F2FE010101F10FE0001210EFFEF0F0011F1F1F00F0F2011F0F000221100DFF101111010E000FF110F0E00F01010FF10047E011011111FF0E0F11101EF0E1E12FF0E0E430111E101E101EF2D2F10100E110F02EFF100F1103F11DFEEFD3F0F02000E01F110000F0E20F23F0E02D3011FF7800F000F1000D11F001F0E1002FF00F2F01E0E1011010F00011110100F00000F10F01F0FF11001F01FE0D10011000F1F11100FF1F200000F01010F000FFF1F052F0001F01F100020E11FE22002EE120F100F00D1F0F10010212F000F01F2E00F200F0200F01F0100000002E010011F1F1D00DFEF221FF1FF0001000111E01F157FF00F10F0F000000F1012001F110000F1F2FF10000000002F00FFF00E1002E100000D2002F0010F2022F10E100FF1E00F0F0D1102F0F00210100F0FF10001058F12F0FE00F21110FF011F11D00F10FF11010010F0F200E010F02E0FE1E1D0310F1E2F001002D2F20000000000F00F1010000000E020FF10001F1F0EE0F111F422E3003E11F110EE3F2F21F1FFD2011100FF1E002EF0FFFF023111001FE3C21010102EFFF0FFF1E21F001011FFF1F00000011E1FD0F1102FF0F1F021F01F1003C00F0F0FF000000E0200F01EE31EFE100F1F110105E1FF00001F012E102E03011FF0C1FF41F21F10B01E1100FAF2D25F122EE1E1FF2D231DEEF103212FEE0E05800F001011F1E001F0010F012FFF00021000F010010F0D0FF1011F10F00000001010F200F000001F0E10F2001F02E0E1212F2FF2E10E0F0001100F1FF1F1F1E7B01E2F01F01F120000F000FFF0100FFF10111000FF0001000F0F01100101FF1E1F10000F11010F00F1EFFF1000110F100F01F1F01E1F0010F0000000010011D5921F1101F00E0F002F1D1E00F100F2F200E2F01E10FE2001012E0FF000F10010E1000F010F10F01F2F001110F20F1FE20012FFFE011E00110011000F0FE40E25DF1E010F0D00FF2102D1F0101F30FF0F10E131010FF0D11F00F00F12FFF0110E1FE20F1FF01F110000F0F00000101F002FF1000000010F0F1011F02EF2E000F6601001FF0FFF000002111F0F0F1101FF000F0F00FF40F2000E010001000F20FF1E01002FF1FD10F2001011E010F0001E02010FF1001F100E1FD02F11110000E5402F020010020E00E0FF2F11F02EE0FF2FE2031E001F2FE1001F02F1001F1FF011FF1E01F01F10E12E01FEF123000D10010F0FF01E01F1FF2FF21F21010F11F490F3011E0FFF2E01EF1013DF0EE1202E20FF20E1F011F1FE1F00021021F10F13EF2002DF1E2FF01F11C30F02C02E14F02D3FB10F00F00E120000F01F1000FE0662F00001001FEF0011011F000001010F0F011FE0FF0FF12F10F101F00F2F000201200FFFF00001010F0F11EFFE00F1200F01010E00112000F000010000D00F14403F0FF11100D0202F011FFFFFE1011123F0E01E1E0FF3102FE10F0F01D0F31F2011F2F01D2E10F0EFFD1F02E1202E30E2010110E2E11ED00F201D1111DF01167F0FF2F1001C2D10F4D2D01F2E4002E2E0FF4D11F1F0001E1100E20101F000FF1F2F2F2E00E0D21110F1FFF2EFF2E1F1100F1F003F10101F00000010F1F2E0F5602E2F1F100111EF00101D1FE11103F1E3D02E2F3C2F21D1E0D2E01F2E101010F0FFF2002F00F00F202F22C2D2E1021E5F1D1EF0F0F010F0F1000F0E20101F26B1D2E2F10F0E002F3F0001D101D10F0010201F1010F1E1F101F2F0F01E2D2E3EF2E0E1F01F1010FF1F1F01F0FFF1011000F11F00001101F0110F000D00002105A0E2E0101F4E04BEE02F1000EF10E3F00F1E2E1F0102F2E2DE111F2FFF2E12D0F4E23F1E1F00F000F100E30F10EE00F02F121E21F1FED21000EF3000110000048010F11FF10F010E2FF0ED04D2E30030FF1B20E1E3002FE20201F04E1E1FE0102001F1FE40E0F0F30202FE1D1F0E1000F2E000F010011E001F21D20103001FC49F001F110E01F000E2F000E210001F111D3E0202F3CFFF020F3C00D33EF0D2CE3F022F21F3E02EF02E4D04E11ED100FF3EF1EE13F0D01D20100110E1D3D0302491102FF1FF1F1F0FE1010F0F01FD1111FE1E3111E010D100102E01E1000E012F3D03E21EE0002D10001FE2F1FF21F10F11FF0F101320E0FF0FFF0FF3D31D2F15811101FF0E01F1FF1FF11C20E20F0F2101F2EF0D3E2F001EF0E03003F2000E111F0F0F01E20E1D0000002F300010D2C401002E30D00E200011DF00E3002F00047100141E1D40DDF20F001000F1F0F1FE3D30000FE0FD013F22C1E000223E0F10C31F2F120FE1F0E2001EF200C2E0FE5F3D10F1F11E2E2100D1E01100FF2FF01651F00F2010F101F10F1000000001EFF02F0010D01FF111110D00F1E0201111F00FE101001E1FFFF301EF0D112F0F01FE01102F1020100300E01F011FF0FE00F57010F0F11001F1E1E2F01E1F0F1FE1E2F01F202110F100F2FF101FF1011FF1FF00D03F2F000E1F03F4EE001F3F01E0F0001F3E0F1F0100F1F101001DE0F1101761F0111F0010F0F101101E20000F11F1F10F0F2F011011E1E0000F1E1F000011E1E000F020F0120E1000EF0101000FF000F100011E1F001100F102F00F000F069F000000F0111E00DF1101110FF011221D00101E00E00010001F0FF2001F10010F1E0104F0F0E0FE1F10001F0010100EF003FE00F001F1F10E2F0101F1101F0381FE2EC01021F1D1312E0F0F10FF11F113D00011130DD01F0F01201E31E1011E20B0F011E01001EF13FFF20D11F1F2F00EF2003E1DFFC0111324011D10010C16900100011E0000F0000112F00E0F10000130F1FF0F00E00F01000F0000000000F0F000F2001E2F10F01FFFF1F0002F0120000000010F000000F1000000012FF680000000F100FF2F1000F0F1002F0FE2F0F0F01E102F10E102FFF10120000F00111F0F000E0101F01EEE00100100F1FF1011030F1001F1F0001F000000000F0770100000002FF10F0001F00000000000F1FF10001F001000000FF01100000000011F0F0E0002EFE00F1FF11F10121FF10F110EF102F200001FF00000F0011F055E0F21E0E111100F0E00020010F01E102121F1F0F00F0FF01F02E1F0F0F1F110100200F000101E10E101F2000FFE0E22010FF0010E10110FE2E200102100EF0481021E1EF00FF2E101EF103F0FE011E200F0FF0F1F011101E21E11001F0020E0FFF11F1F2D0F00F2F3D4E1101E1F10000012021EEE2D0002F0000FF1F11E1D2433E3011F21002E1EF2F1E2111FF00E2D1004EEF0FF101FFFE10E01E02FFF2031F0F1F2F0F1FF202002E21210DD1F1F1F0001F3D00F1FF02002E10010FF2E20058000FF200020E0E101000F3FF000F0021F00F0201001F2E0E01E101D12F201E01F001F1FF1F1F1E1111E2E0FF1F1F111110E1F1F00F200F01FFF110200100FF7A01001F1000F001101E101001E1F10F0FF00D0000F100001F2010F2E2FF3F20E1E0F01000FF1F1000F0010E010011FF0011010E0F1F01F0002E10F0F000F001490F0F110100E00F0F2002010F00FF01F1F2111010FF011FFFFE001F030F12FD0F30F201D112FF1D1E2F22D1EF32F01FD1D10F1E2FF2FFFE10F1FF13013011EE680F1E0100F01D2101E2FF101EF001E1F0001011FE0F001F02F001FE2E1111F1EE2220E11F0010000F1010F0E02F0000F00EFF000F1102F1F10D2F0102F0102F5801F000FE100020F1000F00001002E0E10FF13F0110E000F01E101000E2C12F2F101FE101E301FF0F1E20F0100022FF20FE03FF2D2D3103D1C3C1DF4C3D1FF166F1FE1D30F402F1E010FE2E3E200000E1F2E101FF0E1E0212E00F1E2E010F10FF0110F1F101FF0E1F0200F01E1F211F0FF101020E0F1F00F10010F1F0011F105420D0221F1F00001001E1003F1001F2E2F0F0FE3B21FFE0E1E01F1022F100010E002F11F1F0001F1F0F100FF201F0F00F3110F00D0F1E10F001FF022FF0EF0254F11FF21FF21FFF2F02F11F110F00FFF0001201F0E2E20F1F1D11101F1001E0F2F101FF00000D30001F00E2E2E2001F1E10F1002F0F0000200E0010F1F0222E5B00F101120FD111F10F0000E02EFF01F201001E010FFE0F10F1F1F10000000F101F00012FE1F3F001F0F0FF10F0FF10201F001100C11F10EF0FF12F20F0F2E1561F2F10001F1F0001E011F00010F000F110000F2F0F21E11D1F00011F00E2F0FF1F20000102D2FF000FE1010F2FF1100F0F0221101EFF10F210F1EFF001F2205D2DF1F2EF0FF000101F10E1F000011F1F2D02100002FF2001F000D0F0011F10F0E0002E011FFFFFF2200F010201E0FF1F100E0110130F0F1FF200E1E0001F0F56FF01F2010F0F01101010F02FF0EFF2101E10F1000F00F101FE0111FF00EE201000101FF12E31F120D2F01000E0F0FF2F00000F00000101E02F2001F0002E116AF2FFF0011F1FFF00F1F1F0F0F0E1F2010F3F2F10F01F01F1F01E100100000000E10100001F0000F101F0F1102030FF2001F0FD00F10F1FF10110F01D0F000148F2D012F3DE1F2F2C3F100032C4F1F0021DFF020F0102DF2F0FFF00020010FF202FD1FF12D0100E0F3F12E00FE20000F00010EE2C3000FF21E40F0FE2F022134BFE0D2011320D1EE0EFE0101021FFF10F120D03F0100FFF0E0F2421F1EF11E01F000FE012E111100000E2011E0D12E00100F00000011104D0F00E3D2D1E02F158E11011FFEF01E21F001C1F01F020020F1FF21012F1020CE110FFF110112FF004D1EE230F2FEF00FF000F1000000EF2E30F10FD2F22F01F000F1F00E00F020F56F2010002FF01F00D1F01001FE21D21D11000020E10E21000F10000FF1F20F30F01EF1FF1E03F10002FF2F0F1F1F0FF200E1001F0100000F0EFE21E1000F0F1442EF2F0F004E3001F0E1EC1F24D02F3FF3F0300D3D12F2D0F0EE10F3FF3D02E31FF3EFEE310F3F01F21E3DF3F1F1F2FE1F10EFF01F20F10F1DFE0010031000F47012E3FF2EF23E11000E3FEF2EF0020F01E2F0E0FFF1011F1FFFEF2F030F01110F0E02010000FD1FF10F21D1E01020101000F001E1EF1110D220220E0EFFF2052210F0201F0101020001F0210F10EF001E1F110002D0FF1F000E110101E0021EFF000F2F001E001000D100021000000001F0002E2001F000000002120FE10DF69F2100F00F121000D1FF0F11F000F001F12F1E2F2FF102E1F112FF0F0F2F1F1FFFE1F02F110FF1F0001012EFF1FF10F000F10F1F1F100100F011001F2F01E205DFFE1E202E1E1FF1F0011102E1D11F0E2E1F0F200101F0E002203E0E101000E0D0FF0F1F100110001FF2F11F0F10201DF111F2F100F000102E2EE11E2F01E003D0ED03FEF1202FF2E100DF3E0F1E5B03F3F2FF2C12EF0204D10E3B41EE00F300011CFF10013E0E00C1111000FFD32030101FFD01FF1C04F1F1EF2F120FF10E27701EF00F1100F0111F1000FF011001F000FF1EF00F1100F210F010FE001001101DF0FF11E0F3F01001F0002F1F10F201F1000F100FFF01F2F01F1F2F01E0F0267F200FF001F0E2F2F00EF0201E2F2E1000E0E200000F101F11F102E02F10FF2FF01100F100F0F0010F1F0F00021F0FF0F0110F010010FF11E10F01F000F1120590110FFF000010101FFF0F0D10FF11021000000000F00FF1F0F000202000F010011FF0FE000F001FE011F00011012E10FE04F2F0E0D2FE01012C21E0102E01047FC1F100F1101C12031EEF04F2FF1FF01E3FF2DF1000001F3DF1121E2000F100F201E1F0010F112F1DF0F0100001FE1EE10101D103F02F12F12D2E021020C4D7BF002F1D101E20F1F1F1D2F0F0001F2F1F1F200E000000110112E0F00FF1000F1F2F10EE2F000000F000E100010001F000101F2F0F1E102F21D10020D0F0F00471E02E4E00DEF001F2F1F201F21E1E2D3D30F1E21011F1F10E02F2D10F0D1001F02C2E12F01E1111F1F01103D0DD10033E3C00F1C2D0F030300F010000C1F2F462E11F10001F2101FFFF2E3E2E1EF1F1D3F0DFF4112F0F2FE10DEF0101003F2F1F12F2E1E01F1FFFF1F000001F00E2E3F03C4E001F2E02E2E2011E2F001001E49F212FDF0FE0FFF1100F0012F11E1F1020200E12F3E2E020F0F1F01E2E3D0FF3E3E10F1001D5F10F0D0E22D3EF0F1D20F0F2F2F00FF101013FE00F11F02D11B432F040012F11D2F10F100FFF0E1101F2F100F1E1102E20F4D11FFE0E1EF0F010201022F0D11200110F1EEE0F22C3F3D01D1F0E1D3FF0200133D100EE0F10010491011E21E0F020F1C0EF0FF120FF0F31100F11022FE1F1F0110F3F0E00030FF012D100FEF0101F1E1FF10FF1001F100F0FF20001FE0FD2F10E3F4E1EF003EFF651112F0F01F000001F0101E1000F0E1F110F10FEF0D102F12F200FFF0021F2F0D1F11F120F1FF0000011FE00E010100F2E01E1002F01F2F2F120E100000F2105AE103F01E1EE011110FFF1FF1F1FE0F101D11F1F3FFF1F0FE01F1231F0F1EFF10F1000F3000E2F0110EF01F11F0FFF122E21E00201F01F1F2112FDF10FF1F017800F00E000F10000F110011FFF1000200000F0F0F2010F1E1F10F0FFFFF0111FF1F10120F1F01000011F10100F02FF01F000F0100F1000001000000E10000005701FE2D1F1F00F2020100F1020001F1FE1E10003E10F00F0002EFE0F110F00000E02D300102FF1E2F21F1F101110FF0E0F00E2D001000010F10001F20F0FFFF520211E1F20E101F2001E21F1F2DF1F2F0E2011E1F0000F1010F1F01F100000E1001E01E210F1F0000F1FF10200102F01F00E0020F1F0F00011FFF0001000000570E2D41F002E0002F10FFE02012F0E0F10F110F110012F2EFF02F0F2011F0FD111F02D211F000F0F11F0F00F1010100000E010E0F00F00FF110100F10F11F205BF1F00F01E0F1001F0100000E2F2F1E110000E1F4E101F00002FE0F101201F01100000F1F1E0EFE0002F2E2000FF2F11F0000FE00000F1122F0F02FD110F1106B2EF0E2F0F00011FF0F001000F0000FF100F020101F110001E2F0102F1110FFF010F0F1F012FFFF0F000000000F0000E1FF001F2F00F101F10100000F1F10F14700F01F10F00112F2F30F1E0F2FF11EF10E0FE2001F10F100C400F01FF2FE213E1E0E20221FF1F2E20DE000F1F00FF12E1F2F10020E0F10F1020F01F1F302FF5AF0001F2F2E0EF0E0F1F110200011101101FE10120FF11DFF01FF021E100EF00E20F1010F00FFF201000FF110001100F2F0110F2DF0F0010F0EF000E0100F0056F00F11101FFF03FF12F100F1FF1010F000000000100400ED0000000000000E2001F2000E00EF201E1EF1F21F02E0011E2F01F1FEF0FF10221F1E2000F102E0462E10E21400FEFEEE1310103E0FF010E1D2EF2E2F0301002E0011F1E1FE2F11F0E2E2F10E01E120FF2C3F11E2F100FF1F1D20E0011202E2E1F0001000001F2F7800000002F0F000F00100000000000FF00E3F2010F1F101100FFF00F1F10F0001F100F001011E2E1F1F01F0F0E00F1E1E1203E1F01010F0E0F10F2F1FFFE010850000F0003000010F00100FF0F0000F10F0F1101000000010F1FF1F001E100100F0E00110EF0F1211F01F1010001F10000FF001F10F1F0001F11F1F0011000F570100000FE20F10100000F00011F001F2001D200F00F202D0001F0010E1003E0F1E0002F20FF1000E021F01201F100ED1F21F2FF2F0D02FFF1F112E1F1011E27C00001000110F100FFFFF00000F0000F0F01F201FF0000F0100000000100F10F0010F000FF110000001F0001000F000F01000020F0000F0000F10110FF1F00F471F100101021FE010200FEF01212EEEF2001F00E0F00010100F01FFF020212F1EE1F2E1000FF20F121DFF01FF100100EF20E01F2001000F1000001E10FFF00068100F00001F00F1000F000E01FF0E011E11FFF21E20201F0FF1F0E201020F11000000000F101F10F00F10001F10F0E10F101001F0F0F110F100E000F10F2F2F581E0F1FF3D1FFE11E100020F200F0110E01E2F210000E1D3D11D01F00F301011000E1F2001F0F110F1000F0000000F20F11FF00000000E1101FE1F200000F10552FE012000F01F2000F1FF2F10FFF00F00120F1FF2F021000FFF2F01D2001FFF1F2001F1F1FE1F20E1202F2D00F2F00001F2012010E1E00F0E00202E1F00FF037FE103D3DF2020FF2C210010F0D2E13F2102E200FFF0F2FF0B50F3FF000030011EF0E10FF11FFE3FC00010222E011F212EF022F10DFEF1F3E013E10C4E41C215801111FF0020FF0FF111E00F00FF110110F00F0101110F0011F2FF020E0D2FE2EFF000012F11F01F00111020D11F02FE0FE000000F10F0010000000F100FF0066F11100000010F0010E101F1F00FF1100000F01F1001F0000FFF10E2111FFF101101E1FF1F0010000000FF0000FF1F00F002F011100EFF0F2011000002F11104D10FDE0D101F0F200EF2F0C3F1F020E10F1F021F1E01003DEF001500FD3100E200F01FE0E3F3F01F1FD02F2F2000000FEF11011FE3D1E2F3000EE1D03D4D2D44700EF002C2D202E4300E001F01E32C2E1FF2E10E3FE2EE1D3F22F01FF1E102FF11012000F00F101E3C03F001D2E01FF1FE1F1F2E1110131EE0F0E1F2E011001470EF21F20E20E22F12FD0F0001DF01010F0EF20F41010F000F1000F10D0C2F2001F2020002E021F0EF100F2FF01FF2000E2EF3002011E2DF000FFF1FE23E00F4530F2FE11F10E2F11F01E2F00021E11D01F1FD10D3102F1FFE00F0101002D21F01002F01EFED11103000FE0F13FF0201F0FFE01E01003F11F20F100F0011FF2581120D1002EFF0F0001F1FF2E110000E2F01F10F111E000FF200F0001F2FF1F2F00030130FDF310F11FFFE1011EE0E11110F20DF000F01015E10E1E1F2FE0108B000F1F30F2000FFE010211FE0E1F01F1001E00FF0001100000011FF1F0000001F000000F10F001F0F1110E1F0F0000021F0F0100000F3001F1F000FF1F110F6B0FE00200F100111FF0FF11F100E1FF01F02E01F100F10012E00E00F10110FF0F11111003D00F0F1E22F02ED01F1101EF200E0F0000000000F1F0E0F101F1004800201100002C1D1F1F02F1F3A2D301D21E1F20FD3E01010FFFE01FF1100D4D2033D2F000E2E21E3111000EE2E41D1F1E0F0F011EF1100FF20F2E0FF2011F0F68F001E0FE202F1F2000D100F1011F100F1E200001FFF0020110F0F3FFF01F00011E10000FF0001F10F1F10EF1EFF0F211E01F1E20F11F02FF01F000100002F2860F00000E10000F00F2F01D11F2F0F00010F1011010FF1F0001F0F20F0F001F001201F0E3EF01102F0F000F01F101F10F000F100200F0F00000001EF000F10153000F310E1012D10101E00D2FF111D30F2FE21D1FE330020E1F0F0F02EE31000F1F0F2F03E0F0E1EF4F0F3FF1F0200F0F0110001000F1E0F00D2F22F00E10F24120122FF0E00102D21C3E3FD23D000002C2E14E4FE1EF2F2011F10000E1FD10F1F110F10C211E1E21E30FEFF1F030FF121E11E1E1100FEF0E301F0FF3120020570F0F100113010011FC1F100010FFE001001200FF2010FF0F0F0001F1221E1EE1E2E4FF3E01D11F3E2E2C1E3E02F2D0F000E2F1100F1F1F000103F20FF0FF2E88000F11110F01F1F10002FF2E10F0F1F11F2F0F01000F1012E2D1FE1F00F1000F2F11E1FF0F1FF1101F1E01F1F01F00020F3D10F1E01E1002FF01F00010F010482F01E31E001D00F102F22F012E1FF3A2100F3DC2F111004D2D4D30E0FFF012F0D2EF010F00000F1FFF2F0102E11D1F11000001202FF2E2F0FF010101D120115DFD011E3F0001F1FFF0E100103E0FFF01F12FE1EF1000110E011FF00E0E12010FE3D020E101E00E4E0F0F010F11020F022F1EE3FF00FFF2F02030E2EF2C31D3644E31C2F00EF001F1F010F10F3D3DF3C20E2EF4E11E20F0FF4F02EF0E01E11F11E20020F01F11E11E1F0000F1F1100F2E20F21D02F1F2F3D01F0F1E20F1F2E1462E3F0013E3C0D10D2E3010000ED1E32D3E12EF0EF1E02120F02FD10F2F1110D21D13E22E0000F01F10000002D30F3F1F4C0FE1FFE30FF20E1E0F2E11E2E412593D01E1F00010101E0F2E00F01FF20E20F0F2E10F2000F0000E03012E10FF03F130F1D00D01F1201F10F1E100FE1F000041E30FE3E00D0111F01F0D4F11D1F0481F212EFFE11221E11010FFDE3FE2F2FE0111210EF22E011EDF10E300E11D200FFFF20100112F0F10E010F012F0DF3D0202010FF001F0EF002FF01ED20E2110571000021FE0F00F111F0EFFE20220002FF2E012F01E0F0100100E00F01002E00001F010F00E111F1F01F1010F1000020001F0EF1F110C1F0F000003F000000048F0F10102EF1EF0031D1100EE2D2100F3E0101FF0F0F130012EEEF120010E01101F000103EEF10DF0D1140F0E3EF111F1111E1F01F0FF1FE2002D30FDF1220267102F1001E1000F1F0F00100F11E3001F1F0FF10F3200E0FFF0111F02F10FF01F2F0110E0E0FF0FF2000000000F0F0F01F01F1101000002F1F01F0F1FF1F0F057FF1F20EFE00121200FFFE211E1FF1F13E0F21E0E112E200102FFF0E0F1F0F1101C1010F22100F1F100F10F0000001F1F0000F000F20F0F1E0101F0F000110F48013F1F10E2E00E0E2F1002F0E1000001D2FF102F2F3C21FE1D23B2D1102E330FD1001010FFF103F2C1100EF11F3B1C2B51F103E2C1003F01E1F32100D0E0F159F00E1E302F3EF1F201F2F00D21DF003E12F2EF01003E2FE1E00F20F1E20D2E00F1004C12D2F11D11F3E03C20EFFE30E3F12E110F1F01010E02EFFF10E2001F680E2F03E101011F1FFF2F11E3DE2E00002F00F01001EFF1010000000F2F00001FF1F0F00FFD4FD200E40010D20D20111D00010F101E01F000120FF1D03D11FE64D3FF20F02000000200101F1F000F11F0FE1010111FFFE110000F10E010100F11F01F1010F00000000F0F11F0FF2F02E11F100000110E21E1E20E0001F3FF2D5800013C00F1FF2F1015E1EE2D00D3F12D2FC3FF2D03C21D5E01001E02D1111FE1ED0010E33020E110F00F0F00E31E11D20F2DF31E2F03E00000D210F10EF02E560E20F2F20030D30E0F11D13FE11E2E03D0F10DC30F3E4FD10F0201FF22E1F00E120E2E00E22E1FE2C05FE0021E11E2FF1E1F021E10E2F10EF5EE400001E11F69FF1E1010E010FFF001201EF1F1F0FF10000F101F02F00F2FF301F010E010E000D11F1000001D0110011010FE21E21F0F100E0F0300F01F03F0020E02FF2FF05800003000F2EF01E11F10E1012F0E0F1E12E0FE31F01F00011110FD0002E2F0F20F5C1F00E220F0F20F10F0FE00200001FF00F10D2F14F2FDF10F30E1F11D2E4AB30E0230E0EFE22000000F1E1E20E3F001201FF01E12002FF3E2FE2100EF0E5EF1E1FE21F2FF10E0F01F2EFD03E223C121E04FFF40AF3EF10300E11DFF21104AF30011F0FF2D0FF12DF0E2001E00221E02E2E1F000F00F12E020300F0F10F0C03E1103C13C0103FE1B12F4EF1FF001021CE020F100C111B24F1F10B23B23E259F010F01F010F01FD30D31FF22DE20C301000D010EF220E03BF2003100001001E00F1001F11E20E021F0F0FF2FFF10EF4FF011C40CF101120F10F011E010D014212C0212210F110E00000001F111D6EC003FF13CFED3E41F00E20F1D11D2FF3FE1E23C22E4ED3EF3020E00D30E4EF5D23E2BF30D3001C4FD1FE1BF40E6C1EF1642003E101EFF3DF4F1E2FE12FF200E02FF00E2F30F2F00002E001D0F21D300000FF001F100EE2100022EF01D02D3D2002FE3EF0C200100100110D3E11D40C416BC40D111FE33D11E0FF00F1F03D0000E211E0100F0F0000F20FF2E10F1F2F1E10F3F110F0F03E2E14C0F10E0211F11CFF11FD03E1F12E10010F04EF123ED22F5A300B31E0D21EE1131E311A031FD130CF200E030EEF02E0200E212ED3E0F11D2F20002FFF001F02F0F101FE20FDF12FE14EF1000FE1121012FE0001F110F0105AE1F12EEF210F300EF31EEF1F1C4201D21E1003DF0040F3F1FE2FFFE30C3D12C1F13D10F3D00E20E20E3D30C3002EE2020D20E2014D10B20E3FF1F01E12D1315FEE1E12E20D1DEF11121F10D1F02FF1000F01F0010F02F01F10F021FF0E000002E00112E10F20FEFF10000FE3DF102F2011F020D2F10E0F1FFF1F3F00F0E011451E2F100210F0E2C00F001F1D2F100112DE2FF0112FE000F1130EE230000FF0200010F1F1E011F011E0000E0100FE12F2E00F1E1E002122E00202D2200E3D227AF0F0E00101001F00F0F1FF0000000FFFF2E2F03000102F0FF0000F1200FE11F1F002F01F000F2F110F100E0001F1F2E00110F10F1000F01E000F000F0011F153001102FF01F2EF0F000120F0FFF1E1101001F12E002EF101F2FF1E1EF001F40F302FF000FF001100E1FF2F200E01E1101012EF00F010F0100E2F100F01E1013712EF312001EF1D30F3CF1021E01E10EF34DF22F00EEE01F23E1EF0F30D01E1003D12E0F00000220FFF1EEFEE21223F10D0D1013E140D100E10F010E1F120FE580E110E11000D0D011F1100D2F0FF3011F0F20F101100F1000001201D00F1022FD110D00000000FE2E20010F1001F10FFF011000F01F0100001F202FE1F1F00481F31E1FE002FE10E110000010F0002F0F0101F111F1FEE1FF2F200F01FF1FFF10000F201112EFFFF11000FEF12E121F000011EF0F0001F2E2F1C0F0E12F2E468D20010000F1F11011EF001001F101F10E1101010FFF0E1002F11F20FF00F10F1F02D1F20F1F31F00F1D10F2F00F1F02E20F1F1FD0002E02E0003FF1002E41F5EF1FE2D11D11E3FF3D12FF1E11C102101F1FF1021F00EF00F01000FF2F0F1FF2F010F00F10F11002F10E00FE1E11001F0003FE30E2FE0FF200101F02D50E3D15AF00F1100FF00111F1F2001E30100FD2D0E1C2F110001F3D1E2F3012E00003E2DE0002010F1FE1FE3D20F1D00F0F110010000F0F1101FF020F21F0F02E1E2F078000000002F0F001F0101F0F0F10000F00F000F101F1F0101F010F0EF0000000F10000E2E00F31012F0FE1FF3E00E12E20F10F10F1F0102000FF02000F000F0762000FF10F10F000F10F1100F00D12F1101F010001F01F101EF0F001FEFF200102FF10F01D2010E0E200001F000FE21F212F1E00F2F110E00000F10F1E1F10F641E1F1F01F000111FF1F2E2200FE11F1E201FE0F111F20FFF0F10001F0F10F0F1F103000E00EE4E1F11100F03E20000000000001FF010000FF1001F100FEF00451011FF00EF3ED4000F1F1F2110020F20F2E121C2E111FF0C10F120F00F0000E3000FF1FE102E2D120FF200D200E2FF2D20F1110E01FF2101E01E010DF3F121692E100FF0001010E0000001000F00000FF01101F1F01F000000F1000100F01100F00F00020200F1F1FF1001F0002D0030FF110200FF0002F1F00000FE000EF058F1100201F0001F00F0010F00F00E110F0000F11F020FF01020F000EF1030F010E1F11FE20E2012F0120FEE00000010001F0F0111F021E01FF1E00E021F2F0159F11FF0121011FEFF00F021011EF1F100000F002F30EF1F01F102F0D22F100EFF20011F2D100101FFD1000FE2110100F01EF01FFF000000000001F1FF10110F5800F01F0101040F1DE000002F11E00F000021FF10F0000010F1021EF00F1101EE1F20F1F11F1001EFF00001F00F20FD01110001020F0FF110110F0FF1F011314ED01D0F03E2F01010D2FE3E01000E0011F2F01E0F01F0001F20EFF020F1F1F001FF0011110EF010100F01F00011F0F0E010101F0F01F0FF20E0D01F02F11FFF761F0000000000000FF10010000F0F111100FE1F01010F100F1F1FF100F0F1FF2100F0001FF00001F0101100100E0100F000FF10F1EE001111FF1F0FF010100074F1FF011FFF002010000011100F0F0F0100011F0FF0F001011110000F0FF1011F0FF0F100111FF2FF0000100001F00000FF100F01100010F1F0F1F11F0FF10056111FFF0F0200F0F100FFF11F01F1012F01000F111000FF001F00FF010E0120E20FF10E1F10020FF1D1300EF0FEF200000F0F2F2F200101FFF1F130F0010F0066011F1F110EEF11E0F1100F021F10E100011F1D00F0100000E001001F2F0000FFF300F00EF1112F21F10000000000F1F11000F00000102FE01100E10F0010F1581F2F10F1FFF001110100E01FF0112F000FF102EF00001120F00100101E10FFE220F00E0F1FF1F2001E10020FD0111F0D0F101210E02010F0000F10FE20F0E058202F0201FF00EE100F0000121EFF000000101111F001FFE11F1F20FF0FF0E20F01F0111F010FF00001101EF000F1011FF0F111F0FEF000010F1DFF2121F00043101011E02001F1F0001F100000011E0000F012020F01E1000021FD0E0001EF00100EF1120100F0000011020002FF2F00EFF01101F1FF10101DF1F0010E00F057E1F2EF011111F10F10101111000FFE1F1FF100F1E10F1F0000F00E0F3F200FF1F101000F10F1000010F0010020F000010E00F0020E0F1F100000E10101FF1F48001F010F012E010001D0210F0FF0E21FFD1101F011FEE01020F2ED0021F32F1F0022FE111FE12DF0000101E210110DF0F1FF10FEF020DF00100F22F2120FF259000300FFF12110F00F1F00F101FE11FF02E0FFF0F1F0100F1E012000E0F201011000F1F10E00000F10F10000FEF020021F0FF0F001F2E01F101F200E01010058E0002FEF102E11EE1E12F10F100111F0000FE10F10F1100F11101F00100001E000F0000F01010000010001F0FD2100300FF2FE010212001F00F0F1D0F000115DFE0E11F1FF10F0020FF00000DF11020FF0F111F10E1001F0101F01F12FF1F10FF00000F0100F01000EF020F001FF00211F0031F0021F00F10D0F0011F0FF00490102FEFF0200E0110F121DF02E000001FFF11F12F0120EE1F1FF210E0E1102010FF1000F0F010211FF0F0F10E000E2020E0F0F01F1FF0F121FFFF00012ED005510011000000EF1201F1F0010E101FF001F0F0F0100F2E200010E0F20100FEF10FF0112F1F1EF011E010FE1100FF01020011F0E130FF001FF0F0000D2FF030F4210001F01F122112F0F00300E0FF2E20EE031E1F02FF00F112F01101E0100F000E20E0E111FEF10F1F1100F0120F100FFF1000001E000FDE21EE13E1F11FE1044010121F2E01FD00011F0F0000F0FF21F30EEF21011FEF11131E0E01D30F0001000FFF0E02310000E0F02F00F20F110DE30022FFF10F1F021E0001F0211F00D492e011FEF310D13F0EF00FF00F1F1000F1F1002FF03F00F30E120EF0F01F10F2F000110F001DF003F1101FFE1EE011EE110F10EF3203EF00F01200F0FF0F20F047100F011F00F0001000F0EF401FE11FFF210220D110E1E00D32EF0F0DFF41110EF1F30FF0101000FEFFF1410111E200EF013F0013FF1EFEF0031FF1FE1100F0480000F0010F1F0FF0F1F10010F0F2000F1F0E1FFF2010F13D03FEF211102FFCE111021FF1F1010DEF11200100F0F020FF01201101FF1F10FF02E21FFFF0F0F045F10FF0112F22FF0000001FF0F1F0110000F1E11F11F011FE0DF02101F1E11012F1F02F110030E01FFFE101002FFDEF1E010120FF0110000FF10F111F0E011269F02F10FF000000000000FEE311FF1E0F102010E002F0F0F0FE00201001E01F001100E2F0000F120000010FFE0F0200F010000E00011F021F011FF110FE0FF053F01000030000200131EE00F01101FF11D00EF0010101F11110EFF0F0200FE0012001F11F000F010121FFF0011F000E01021FE00E0020F0100E0F01001F0000590F100EF1F01F00F0F110011100F000003001F0021FFFF0FF20FF1010000FFF11F002E02E1F0221EFF00101EFF010000F10011E201F01EF11F2FE02F201DFF068201FE0001F0101E00000000001F30F000000E120FF100000011F1010100FF10F10010F0FF1110FFF0020010FFF101F0FFE011022FFE00F02F0F00E01001F01590F020FF1111FEF000101F022001EE00F1200EFF000000E01F0211001FFF01110E20F000FFFF1010021E0020000FE21FE00E0001010000022FD10F212E00E2F4B12FF01FDFF01E101FE2F0101FE111E0FE011F310001F01FF10100F0FEF2110000FE2100FF1110F1F00210F20001FFE02D00011F0F0E21020F11DF1F1FE10114800E011FF0FE410F1000F10212100F10EFF21FF0FE11E0200F2F1F01D00001000F2F01E10FF0F020000E01F1F1010FF0F1010F0E2002FD0F1101EFF1031010048DF310F110F0002001ED001100E00E20F1F1F1100F1FFD000211FF02100110F00F111E00E1201F03EEFFEF00002120014DF00FC21FE10FF10130EF1FE20F1F04510002E0110022FEF000E020001F01F0F101EF000F300E11010010FF11FFFE30010000FFF0100200F00E1FEFF020F0F1030F1F2F02FF20F0010110FF0EFF0014A0FF10F0000F0010F1E010FE0F00F0111F200000F01FF2F00120EF010F0010FC1110310003EF0F1000EB12F201E1FF102F100F0F0D02F10E100211E022F10D146F000FFE2021EF01F01103020E010101FF0F0001FF0E302002FDFF101001F0E1110F2E000000000F100FF1F011E11EF10100100F1021D1F001F00E2EF100120582F00F001F0F1000010F02210FEEF10FE010F21E0F1DF0F100F2F0010F2F1F11F110F101F1F200000E0031FF0F001F100FF0010E000F0F0F021100200FF011057010301DF000F1111E0F30F2EFF01F001F000003E0FD02102F00000FF100010F0F00E0010101012F4FD0E00000200F02E000F010110120F1FEFF1F00F0FEF21560110E01FFF2F2001EEE100F130E020FFF00F00201001E002EF1000201F010E10F11E1011F100011F0E1F1000D1F1E2F01E0F2F100110122EF020000EF0F0F25A0F20100FF00F122FE1F1E01E0F10F0220E202FC001001F31D00200110ED0FF0033EF0F2F1003E0FF0F00220E1F0F00F1F2000F0EF11F10F00F00100010110F4A10010110F00FE11EEF01E021121F2F0E0F00E30101FF0D01F1F0E21001003E0EF0001000F0021E0F00F1021FE1F04E014F0DFF11E111F0E10FF0003D01F1004DD0010DE1100033CE4EE003EF0312CF201F3D0FF4D1002EC201F0310E1EFD110F0120D14FD020CE02F1121F3FFFFF00E210EF21003F0E03D0210EF1FF100F0268E200FF01E0120F10FF01F0032FF011EF11E0F2F0110E010FE10D3F00C211FF130E200F110F011FF020E021FE010F01F1F10F1E100F011F0E200FF2E1010000461002F00001F00010F0110EE20E0F02F1FE3110F00E01022010F1F12FF1EF100F0E11EF10FEE011F0103F1EF1F0F3F1F02000FF00D102FF2FF111F0020D311E47FF2F2002E002FE1F2FF00100CF3E220F1FD1301F000EFE1FF1F1F2012FFE4F2002F2E000E012FF11FFE010D002F0101D1F20E004D210CE203C1210D33ED2115810F0001E02F0000E011FEF1FEF2203F2FF001F0000011F001F0000FE110F1100F0E0F200E2FFFF2E00320E00000000310F020FF000F010010FF11001100F0F58000E011F01FFE011FF1101100000FFF11F0F2EF03FF021FF110EE220FF20EE000F02FEF021F2120F11F0FF0FE010E0122FF120FEF30F022FF012EF00FF0E224710E21F12F1E021F0FFF10F002F0000F00201F130F0FF00101FFD110F00F2FFFE11FE1301F1100E1F0F1101001001FE000F1F01F002FFE02000112FE00FE0006620000F000F101EF0001E11F00001DF11F0021FF210F10FF012E0101F1000FF1FF021F0010010FF100000000000000000001F0000F010F0100110E0F0F1F010480F100F010F020F02FF110FF0010F1F0FE1FFFF2100E0F10031F200F210FE0010000FE010F010FF110022F1F10FF0F02F00F01F11F00002FF0000211F1F0FF24BF0FF0003EF020E10F00F10E00020001F031DF11E0012FF0310DE21E0221EE110FFE10F100FE00F1FF4000F20F1041E00FFF13F1FDF000220100EFFF1FF20114901E0F0F001FD01D001100011000F3FF0010130121F0FFF0122FEF000E0F00000021FFE3E00012F02EEF11F000E20DF12DE0330FF2000001F000FF0112FF010480200EF000121F00EF0013EF01F00FFF0120F221E1F0F10FFE120F0FF011E10F01FE40F01F101F20E210D2F1111EEFFFFF21100EF10101EF2F0F2EF1EF1F031472D00000101FF020040F1FFE010F3F01FE32CF00E02000021CE300030E00110F1FEF11EF0F10EE300D23010E02E100F21F000D20E200110200FFF000110DE11421023DF31002FF0FF22D1000F102FF300D001F00030FF1FFE0110E020D120F1D0101D021100E023FE0F1F00220FEF11F01FF001012F1FEF1000FE2100F0E01E67F2F1FFFFF0110E0F00111301F02F1F020F0F11FE00000FF10FFF1010E101F21000F01F0F1100F0F0F0020F1101FF001E001FF00111E1FF00100011000FF0FF3200411D030F0100FD11212FFFF100000E0111DF210FFE10F02E1D2112FFE301E1FF11F02F4E3FDFF302FF0FF10F00E210D0022F04FD111D00000001F000FC01420F120100111E1F00201200EF00F1FF1001001F30211D000001D2E2FFF1EFFF2F110EF1F210102D100020F1E0F0E00201201F0F0E001120F1010C10F0F2F0F14AF1111D022EF1030FF101DF1F20E00E1201DDE00F2F3F1F010000E2000000F1102D3E1F30F0FF0011E210C000000000FF1F20000DF0220310EF0F02F1E0FF1148000001004E11F1F01FEF1102F200F1FE0F1F010F2E20F1E200E0E31D00FF0EF31001101EF001F0001E1110E0F220FE0D0C131111F1F01E00E3E03F30D10E105800001F01F011000101F1FEFEF1110000EF001001E20E1001FF1FF10F0E11F1F11F01FE10E1F2301F0E00200011F00100F1F0101F0E20000F10F1F2F02FF00048F001E0F03D2E0E02F40F0101101FE11EE1FE10F1003F000134E0E1E3E03F1D1D3EE1FF10FFE10301001F0101E2FFF000004F1FEF01F0F1000321E00F2001FE4800FFDFF001310F1E1002120E20F0F1F1FF1C000F1100FFF01E2221F121FE00FF0101020EF0100002E222100D0FF1F003FEEF0F20F22FFE00110F01FFF1FF2F57E000210F01002F13FEEF00FF0210FFFFF01121E100E030001FFF20000021F00F0E10F1000010F013FEF10200002E01FF00F20E1F10101002FE10FEF21101005C20F0F00F01FF0010FFF1F00111F30DE0F130F03D0E0001F102F001F1020F111D0F4EE101FF101ED300EF201FF101001EEF100203EFE1000F10F02F0000FFE14900EFEF41FFF10F10200FF1F110FFF111E1101FF1000000EE30E02F2D1F3EF2F2E2F1EF0EF101200011001FF0F110001E0010FC210EE20F12F1E0200EF02FF057F01100E10EE004FF0111011E0F0E11100FFF02010101F22CE01EF122FF012D0000EE03FD1210E110E0F11E022E01F0FF1FF0F11D22FFF100E23F00120F01E0480FF2FF0F212F4DE1001110F21EE1F01FF00F1100FF0EF102FF00201FE1100000F1000020011FE0F21D04FE2F00E0100041FFEFE0001000FFFF1020F001F201562FFF02001110F1F0FF0000101F00F01000000010F00E10E2FE011F21100F0EFF0100F1F2F2100F0F0F1F011E0E0F1F1000F1F2FF1120F2100F1E1F02000000580001FFF11011FF0020F01F00F000000211EFF000000000100110EF000F1000010022011FFEF01EF2000010F0F00F0101F0FFE10000101020FF0E011201F0004C0FE210010FEFF00FE11E10F20F1010F1E01F11120FF021F10F0D021301DD1F001F301020FD0FE0F0FF0132FE0EF21011112F1D10010F100FE201E1EF0F01FF472F02110F000E1ED2E300FE1F1E0120F1EE1E11F010100FF130F0F10F011EFE00211101FE02010FF211000EDE111F1D001010E2010F2011F2F2D0E1FD2E4E3E57F0F3000000F11E1E1FF00F10010200F00001100E001000F0FEFF02FF01020E11FF110FF11001011F0FF0FF0211F020100020FE000030F3E1D11E2D1F01F3D24AFE4D2B3F14C5B4C00E2F4C2F0E2F0EE2D3F6E1DF01F00110FF0D1F2E2111F11FF11101D0F0012F0EF01002E2000F0E000300F0000101F011E0001D1000F2E1450D21F2B3D1114E3D2FF2E2C3FE4A6B3EF2C6D5B4D00D4C4D5F0E20F1E1F002E1E110E101012F00211D1E0000F1E0F20110F0F0EF01F11F1F1000110001001046F13F111FE001F00FF3F0001C30F2C4F01D3B4E32E676B21E4C4B1DF10F03F201D210FF111101FEFB102F100FF000F0131FF1E2FE102D3001000F0D200002E1580000F0F10F011F00F1010000F01E2F11D3D1101F13E4D2FD3C3B20F3C5C2DF2D4D3E2E0F1101D1E1E310110FF010F1000F1F10000F1F010F1FFE001010D10145120F0FFF1100F01F3F1E20F4DF1FF002000000F10C5E5DF6D4EE3B1D03C6B4D3FE2C3C3E2E1E00F011F3C3F3F1F00B5C13C1F04E131D4CF1F13EF4C7A10D4C4811E3D0F11D3B3C221FF2C4B5DE3E22023921B40D32F40B5CF3B2FD5A5001C3D3E1D4F20F102FE01F011D495F22D2C4A4A3ED7C30A7ED6C15A5EB5A6A5D14C45801200EFE000D2002F2E3D20D3D3F10E3D01E3FE2C13B4C21D5A7B21F2E3E0D2002FE1E1F2D3E01F2D4C2D6E21E5B4DE2D3DF3C6F01E2F100F00F1F201100F04CB2E11E1F1E1A6B6EE497A7D10C5B2D3020DFF302FF011D401F001F2F0F01C5C4D10D39986A33B5B7B3FF2E2D10F022F00FFE213E3E0C2E3002C756B3EE6A7F89D2C20F2D4D2E100101E2FE1F3E20FFE2D2C4E2003B4C1F02D4E21D2E3E2001FFF2FE10101F00F102E2F2F0001F2E2E11F1E2E01F1F00F1F1F10000001F10106BF1D3B3E10F3E1D2001E5D3EE2E2E2D1F10E0110001F1F1E1E201F11E1D6C3D13C4C3D0002E2F2F01F1E02F12F2D2E4D0F11F1F0E3D3C4DFFF3E3D2E00F2F2E680000F1020000E0E202F11F1E3F2D2F1F1EF02101F0F1E011E01FF12FFF1FF000E112F000FF112E111FF10F02F1F0020F12FF1FEF3FFFF200001E2F1F0010F16BE0F2F1000E2D1010F003F0021000F002F1F2EF2E3C1D3E1F13C3C2F0F10F20E003DF00001F0F0000F110F102F00FF0100011000F0F00000000F12F100FF01F69FFF11FFF3FFF21F2F0EF20111FF2F1F0100E210E010F10F0F20FF011E22F02FF0120F02ED12E0F100FF0F1F0EF210011FF1F0E11EFF11E01100001100000F0580F102EE04E003FE1E1E210FF40E110E0001E1F2F20EF0200F1EF111101EE010F01F000F0100E111F00FF00DF011011200000000FE01E20FFE2F0E100002F0052F0201111E0FFF031F0210012D000F010F100F0100FD0103F1001F010F020E1FF1111EF1F001F0022E2EEFD011F20FF2E12000F0E102FD3E12F30E0F1F001E1781E1F1FE3E20E0E22EF2E11D4E1001E200000E1E0000010F0F3E1FF3D1E11D2E11E2D5E10F1E1F2F0F10000110000F1F0F02F3E2C2E02E2D3B32E0F201F21FF480FD0D114F2F10E1E2A7C0E30FFF6D014E0E0FF01F02FE01F02010F2EE20F00102E30F111F0F1FF30EFFFF001E120001E020E121FF2F0FF1D1012031EE000115A1F00F20E1F0002FFF000F10F0F1001102E0D11F1D2FFD20F110E122F001F100FF00F1100F20F01F00E00111010E101F010002F10200F0FE110F121C11FD12F3D1CD100023FF2CEF001112FFF0FF41EF0FF031002FF011B0F0100F0F21D30FEC40E0211F3C210004E211FD00F13FFF00E0210FFF32EDFF02DD521F10EFFCF1046201F0100030F210EE02E2F0003F0EF1F2D0F000F00E0F2110000EF00E1E1F00F213E0020E220F021E11F30F1F2DE1E00000000102F02C001F01000210010EF5AE000F1000320F00F10F0E0F010F0F10F10E110003EF1F0001F000101100F200120F10E2F1E00E1E101F02DFF11010EF0F1E20000202F0101EE0F0F1001F3F0461E1110E011D1D00E203E00E14100F0C0E1103F0F1001EF2F21D1D0211202E11F2D4E1F1F0FF110E3F201ED11F0F00030FF1EFE30E1E2D3F200000F1F0E2E305800E1F20001F0000F1F3E0000F10F100001F0E201F1F0103C5E3B1E00E3F20F2D3F01E2D11F6F01C2F110F0EF1D3EF1F00F1FF2E3120E1EF2E1FF2E1FF2E02E4814DF2D00E2EE3C20E6C5D1FE3C4B6D2FF1C2F41F20E4C40B2FF1E22D31020E3A4FEF02C0E4D30F3B3F0FC42D31F00020000D10F11F1FF2F0104E30D0D11F515DE1FE0F00020F0E1FF200F0100000020F00F1011E1E12F3FF0E0001FF01F0F010F1FE11100F2D10F3D10F1F2FE0EE1120000F02F10F0E31F1001101EFFF2FF04410E3C14D1C3F13F020E00100110F000001F2FF2FFF10000E1F1F02F1D02E3E200002E1EF2D1110E001FF1E2F2102F2FE10E1E11F1F100001FF011F3F40E0035BFF0010F2C1E02D3C2E1211F00F1011F0E10FF110E10E2D311003F1EF1E3D301FD2E10F1F20E2F2000E1E11F1F12EEE0101F1FFE00D3F02D4FF002E022101005C3F0F10F0FFE1FF12F0FF02002E0F0F012FF00FD0F2D2002E2E20011303E01D1F20F2D2EF1F0E02E1F01E1002F1F2200D1E02F3F1E00D3E00F2EF01010F2E1158D11F2E2E2001F2E0101E02E1F11F3C10F0F100004FF0F0F1F2001F2C00F1B1020D1D201121D2E11E3F10E2E1F11F1E20D2E2010C4E01E1D2F10F0D2F00F4F1561C30100100E12F0101D1E200F02F1F00F0010F1F1EF0F2E10F0020F0200000F111F00E0F2E011FD10E1F20F100F1F1101F1100E100203E0001E0F1FE1E2F2166F1F10F1E200EE1F1E1103E2E03E3D12E2E2F100001E10F1F1F10EFF0F13100001F20E001D2000F2F00F1E0F02E202FE1E3F10F101000010FF1F010F001111F4FE0E21C1D111FF300E2EE00000001F00D1E3FD2E4C01F1F3F0000D113F2E00F2F2F1001F0F11FE10E012020E2F0FE0C2D32E4D301FF1F2E001D0021E1F1F21F57011F02E3D1E0FF2E3E10EEE4F13D3FF001E3E3001F0F2D01F10010F20101F00D0E110012D2F11F0E0E010101F00F101001F1D2000F001F000E1FE213F0F0105A1F00F1E1F001F00E2E1E1E1F00E1F5C2F21D3F2F0100F1000020FF0002000FF000001F2E002000E0C211F10E0F120012D001F04C1F2E01F1F0EE202F00E120690F00F111FF0F0100000F0F0001001120F00FF0000F010000011FF2E1F0111022FF0F1FFFFF02E101FF1F0E01100F2F0001F01F00010000E0F10F2F1E11F10058010F1F1F2E20EEFE1001F1D210F1F2101E0E1E1E02120F10D02E0F2211F1E00001003D1F2E0000000000E2F100F01C1000F011E000000F2F2E001002D3FF11561010100F00E01E01E1101F0E0E0030001201000F003FF000F2F2F11E1D2E0001F0F0001F0FF00F0300EE1F1030100001F101E01F201F2C00F1F001002D1F0048E2F2F1FF101D20002F01F0F1F02FF1D2F3E1F1105C3C2FF1D202F13C0F30D1F100E0F001FE21111F0120F1D1D2D3E1112D2D101E1E20FE00F3E0D300FD2E40590FF1D120001F10F2FF1200F0000E2FF100F1F21F2F2EF0F2E1FF102E101FEF1E3F00D1E3DFE4000E3D22C1F12F3E2E1B2112E111F1D2E2FF011F1D2010D01146FE112100201D00E0FE1401F01F01F12FFFF0211E3E3D1FF1E0C2D30FF111300201EFE1002E321EEF23DF10E2E11FEFEE301F10000000100F11F1D110F1FF20480211C0210EFF41EDF20FFFF030DF011F1F3F1FE311B3D2100F411D2FF0FF1002FF0F1C0040F1E1FFE00F02F0320F0101F30F31DE111E11012F0F1DEFC20201580E01111000001D22F1F102E0D10000111F1D102D2D1E2010F4E2D1E0F0F20E1F001F0FF2EF0210002FF01F01FF1EE012100F0FF12FF00E0102E301F20E1F2E4801E0F110FE030E02001F3F2F0FD1301E0F01E1E0FF002EE001F3F3000F1D3D2E30FF0F03E311D0F1000F01E11E2F0F101000C111FCF33FD23F21F2E3FE0F1F7810F1F0F010001F0F00F010F002F001F0F1F0101E002DF11E0100F1FFE1111F210F2F0010F010F100E010F1100F10F001F0000F000000000F10F2F110000FF146211E0EF1E2F0D3F03010004EF10E01F1F1F2E0010F0F1F11F1201F1E2E12F2E1E001FFF111E2F1102E2B2EE0022F022EC1E001FF102102FE03FEF1E100110D580F100000E1F1F101000000000EF00F20201F00FE020FF1E100E1010E1F1E13FF20101001F31E11FFF0F0000E2E1100000E1FF11F0EE11000F10211E10D1F0056200F0010F110F00001F00000F001F1001F0F0E01102FF0000E00F112000101F21FFF1E0000F020F03F1F200FF2F0E0F2F01F100011F0E1FF3E3F1F2F2F01004EC0D0D103FF3010FF00000F001F100121FFF1E1F0200F02F1010D1F0F3E1F102EE0F0F2EF0301F20FF1100112F02F1FEDF000210FE2F30EFF020110EFF1F2FF48F0FE3E021D0000F13F0101F010001212FFE00FE000F0F11F000000100F1FFFF002F012F1F010011E0E200131EF00E100F02000FF2F101FF0F002E2E0EFE1D1532E1D3E22F11010F1E1F2F1000002212D0F0D21F10EF00022E1F1E0E01E002E2000F100E0D0221010FFFF1F21001F01F1FF010F00F001F0F1E1F10010000E3F471E02E100012E00FFF1E1F2F1011FFF2000F01F110F10FF10FF1D2F020F11C1F3F1D3FF10FD251010FF2E1F2F1013F0FF03F1F101C021010FCF1E0D301030F059F00003E30000F02E101F00FF011020FFFFF001F0F00F1000E2F01F1F0E012F1EE01102001FF021FF0FF20F01FFF1F001011E0F01200E10E10011EF30F02F0058012F001F1FDF1F11FF21F01F00F01001F0001111F0FE000F100F01D1F1FF310000F100000F1030F02E0E000F0FF2F2F11F00011F1FF0201EF0000FEFFF010266F0F21F11000E10100110E00101F011111000F20F000EF0F2F010FF001F00FF0000F100F1E110F0F0F1F00F103F10001F000FF1E2E0F0F0110110EF1E32011F4AE0100200F0F02F1F1FE0E1F1100000000FF21F00000000F1FF1FF10100222DFFC10E03FD00F022100E0210021E0000001F20F2FFF1F002E3EEE12D1E1F0F1D42E21212E0E01F3F00F00110F210FFFE2D00E03130F0110F01F0F0D1EE11102E110E211001F03E02FF2EF0011020B1F1FFFF2F2010112DF0000EE31002E1F101480F10E0F11E201F1B11D230012F00E1E2F1E0E130FE2F0EFF22E01101112FF010E2F3FF0E0101FF00101D10200020F012F0F0D100F0FFF1E3FF1E0F1E140F2F47101302E1FF10FF02E2000001100C00F1112ED01E0FFF00F1FFFF001011011F0110111FF0F10000001F0ED112E2F110E0F03FFF1F210D3020F302FF0000E0025BF10F1F0E000000F1FF1F20E00F00F0221F0E100101F1F001F0FE2EFF1001C04E4F202E01F2E3000EF001F00F1000000F0011012EE2E0000FFE10200E00F11F4711121E0010201FEFEF020001D0E0EF111120111C000010FE20E200DF1F1F3101F0D0F00021E1FFF1F000110F12F00F1E001E20DF51E30001EF20E00DE21031662FD010F31DF1FD31E021200F11F00FF10F21F01F011E22D22E02FE21E13EF2DF2FD41C01E120000F2FE12F000EFF010001F00000010011F0F0101F01EF11114E00D20FEE010F010101F01F0D10F1F0FFF1002010F00EF00E1203F1F01E10010E10FF1200E011112E2FF10F010F4FD0EE0101000F1EFEF31000FF2002F10000551F20001000E00011F1F100002F0000F01F00001000000101F0F111012F0F20FE0E1D1F0100000000F011E1F000020E1F01001E01F00F000F000F1010ED010F52F2F110F10F121F0E10F1111F0002F1FE011DF12E21EFF0F01F1F10F10102FF00FF01120001F0102E000D3E00E0200200F001C10101E11EE2110E121F00FF114AF2FEF200FF032D003FEF01F211FFE0F1150A1F000E1010E211FFFF00D1201D100F10032FF0E020000F1F101F0000D021C20EF300121D0E110FF000102F02214BFF02FF11E00110FEF1001E00F201F00010FD1EF20200E1022FFEEF23002E0100FE04DF001FEE21FE1110011F1100FB1412011FD22EEF10E02100210D00E0FF36FF4021FFF2E3002FE2F0F3B00E1E2D2011000FC51000D21F22D02F10D00D021E1D03120FD0F12EC003E310EC20001201013E112010DD0002201EF20F21C10F4A1FE0000F1D210012D01F1FF110F3FF11E01FF1E0102F3E0E211FEDD4F1F000020F0F10F0FF21110011E200DF1F113F1EFF100212FF1101D2FE10DF3D11121E6AE000F10011002F00F1F101FEF02000FF00F1F1FF202FF0F001001F1F00FFE00FFF10112011EFF10F101FF031F1F01000F0010101FF012E2EF1F100F00F1000480F02F121002FEFF1211FED00120F03EFF00F0FF1FD3111111FF1EF0022D2F1FF2F1E13F1FF010C0000E0011001F000ED21EF20E00F112E1210F0E1F1011E1F770FF1110F1F00FFF110100E10F100F101000FEFE21F13F1FF0F1E2F11F00001010011F1F010F00000010F011FF0001F11F0F0000F01F0F011000F0F2001F0005710011F1E0F00F202E111F000EF010F010E1E010F110010F0E102F100002101FF01F0F1F10F2D2FF0F1F100001F0000000210F10F202001E1F0E110FE3F20E14A0F0FE12FE210F0D1FF201F31101FE1E1F10201F00FF01E1F002F20000F0FF10F0011F1F2F0FF0F1110E0E0101F2F000E202F0FF0F2E200D1FF301EDF000F2E550F03EFE000102011011F1F1F00000201D0DF3E21EFFF210100F1EF2DF2211000F10F000F011FE0001110FF11000F10F10D1E02F02FE1002F0011F010F101FE45001D2203E011001EFDF001F21010C1F13D2F20E3F020FF0001012FF0FF0000F104111F1F01DFFF1F1000F0FDF11F00000102EE12EE01021E100E0E1112E2F138002F4DF0FD1200F1000000EF2F0202110F201EEF10F0F4F10D0F0103C0EE3E301F0111DD2100F2E0014E000FF01120FEF111DF000EF201FF1211F040FD12F14CF0E0F110FFEF10222EFF0000011E2F10F0F11F0EF112EE110FFF1E04101F11D023000F210F0FFFE110D0010FF01ED1F1112011300DE211E110EF1101FF2FFF48011FFE13FFF10101F2F1FE100E1110022EE0020101FFF011F1FE1E1E220F20DFFFF001FF21100F0E200E011101E001011E1002F10F0D2FF220F000FFF0D101551010110F0F010F10000F010000E010F10E2001021FFFF0F0010EEF1020F0FFF20F1000011111000F001F0100000001F00111F000100E0F1101000F00FF0FF16920FE0000002F0F00001111021FF0F0FF10001F0F0F00F001F000000F01F10EF001E0011E3F1F0101FFEFF2110000100FF1E2101FF1F111FF00001FF1100F0067010000F0100E00F011F0E101002E0F00010F1F110FF1E00000FF02F0F02F011000F1F00001FFFF0222E0E10F210F001F102EF10FF10100010FE010100F1011581F0000000000002F1F0F0F10FF00D10F0F000200E2012001ED1E00201FF23000F0F002000F212F10D1E000000F1F0EF0F1E2EF10231E0F120F0FE21FF2F10168000001F00FF1F001FE2110110F0F0F0E020001010F0E01F1F01F011001FF100F10111FF001013000FF01EFF0F0011E00FFF21FF20F0F11F00E1F0120D01000650F00FF311100E1F1000F00F020F00001F100F10E011011101E1111F010011F0FFF00000FF010F0F002FF010F01F00000001011F0100F100F01001FF0E000015800D20100110E001F000000001F02F1FF000F100021F1FF10F0F10F110F1F0F01F0120FFE1F010001F201010F2F0000110E1DE10F000110E2F100E00F10001F7801021D2FF0F000012F011FF000F00F00FF0F1011FF100001FF1010001000F010F01000000F010001F0010F00100F0F01F100F00001F111000F120F00020F106EFEF000F10011102F0F0000FF0000F1100110FF1E000F20F00101EF011F1FFF1FF1F101F01F101FFF0FF011F1E2000FFF201F0010E10010F0F1F0110FF200FF4501111F1F1F00FF00F11F2F10001001FF13E20D12F1FD001F03E01F1FFF10E011F101FE3011D0E1F0F11F0E2F3000E20F0110F1FE0E0FE221E101100010FE0258021E2FF0001F0F0E1E12F1D00FE321001F0E1F020121FFE10000210F01000020FFFFE00101F1F0F01F0000000F00000001E200000010F211EF00100FE0F0F1462FF210011DF12E1F01FF221FFFF002001F02F1EEF02131EEE1F0F0EF1020111FF0010FFE2F01010FE1200D1E02F1E2F2FE3FFF00F1F02210FD0FF1010FF11F43E0123E01F1F10FF11F1021F0E1100F0ED00112020D1D1FF0110202001F00F0FF020010000EF1E10F22E0F1010E2E1F0311001E02F01F22F2ED0E2011D1EE2058010F032FF1F1F010201E02EFF001FE1F0F1100F10000FF1F00000100F11FF00F00E02F110F2F12EF0011100000010FEF200FF0000000000010F1000F00030F5A0EFDF01F010FE0130EF20FF1F2221F2FF000E11F1010F000F00012E0010FF10E2F02FE002000EE11F10F00E01110110001011F1E0F0003FEE02001F10F001F68102F001FFF00111112E0EF00F0012FFF0F0F10000000000000021000F2F010F2001F0EF011F10FF101000F0F1E0F001F2FF001F3EF0010F22F00E20E0011F05BE0212F0FF0E01E3D4F01D3F2D2D000110E1E3E121E10FFF1E001E100002F1E00012FE1FF01010F100210FE112FFE200F1FF0F030E1F4E2C2F1EF0F303C5C217A0010E2E2E2F10F1E0F000000F11FF1E2F00EFE2F01E01F4F1FF11F01E2DF3E10F1F20F4C10F2000E1100FF2F03E1EE0E11F2EF3F1002E12000F00F10F1E00F7302F0F000F2F01E1E001011E02F000F001100000002110F01FF1F0F010FFF100F1110100F0F01020000F1F00F11FF0E00210E2000100FF1000000E2010000F0970F0000001F110F00FF0101F00F01E0F100001F021100F00100F000F0F0F0F1000F00000FF1002100000010F0F000000F01110E1F000F000111F101F10F10F075FF1E1F10F001F1E100101001E020100010010F1000100000101F0E01100FF00000F000F10F011F0F0000F01F1FF211EFF012FFFF111F3E10000100F0F000104600FD2FF2F200111FD1100101002E1FF10F1E11000110E1F23FFF0E0021F30ED0012F30EF03F010F000000E1E20F1F0E012F0F10EF10000022EF0F1200110106BF01F21F0F0F00F0FF11030000100E00100F00FF100001F100F0F0021F1E01100010FFE0F20F21FF1000000F0FF10F1002F0E0FF0011000E2010F2F120100107F0E001010FFE1D101001E11010FFF00FF2F11FF0000F0000F00F11F100000000001F00000100F100F11F10E0000F1FF10001010000110011F00F01000FF1FF26CF21FFF1F10000F0100E00FF0210000F001F1010F1D0000100E0002FF001102EF0F0FF2000000F0F1F00F1F1101F10000F01FF2E000F0000F10300010F01F0059FF0100F01F1FE2F21E1E10EF1110F1F1000E0001F10110FF10010F0E1F00110103F1FE0000000000001310FFFE0001020FE111000FE1100220FFFFE02F001E46FF1011F01010F1100F0100F1F01F0F100001021F1FD001F000E10F000FF10010010110F11100EF0F0F2201FE0002000E0FE02E01FEE10F3F02E21E0FF1014F5800001F1EF002F1FF02E0100C2F00D6C11E2F101E4FE3E11000FF1F101020E0ED2F111102E1F001F2E1300F10F0110E0EFF010FFF000110010001F00111F1104D2EFD3D3E22E0E110F2DFF0E1F0F02100F101112D2C1DF3F21E0013B13C20E00E21222F11D1B3FFE1F10F5E012B5FD3FFE0F1F10010FEF3020E0EFFF13F21F05701033E00FFE1013E2002E1000DFFF20101E0E2101D20F0FF1F21E12F11FF20E1E2E2F02D3C0FF1F1001F000F10F0E2001011E3FD10000000E1F01F00F1E01066100110F0FE1F1FE1F10000E0021F11E1000011F0020FF2E01F1EF21F0110D00F1021E2F11F0000110FF0F10F2D200000E1E21D210FD2000F3F01E11E02E1F24A22FFDE1D31F22E0EE21F21D2F0010E0E2000F1F0010F00FFFF210F3E10D1111F01110E01001112E11EFF001102FD0FF4DF001F1E10D2E4CF3D3FE1F12D3E1E55F2C3F11D203FE1E3F12F1F000000FE1FF4D02C30D4D02EF1F1F13010EF0021011E00E3FF0E1F0100F001001F001100000F0000F2F01F0101F000F0101F02E1581F2E10F102FF1F1F1020F0F2F011FE0F1E000000E3D20E2E2002E2EF1E2001F000F2F02E01D1002D1FF001FF1011F0ED0100F1000111F0F0002D2E2110F1F054E10F21E3C3101F2E0F12EF021FF2101000010F1F110F20D1F1FF1E000F01F100210F0E2F12D3F02B4E13D3B0E1012F3F0D2E0003D3EE2FF01F01001000FF206FC11D20F01D21F2FF02F1FF001F3EFF2FF1EF0000F1000001F001001F1F0F1F120E01F000F0000F10F00101F200F000FF100F00E02F2F1E0001F2F1F1E2D100563F1FFF20F101F1F01F1F0E1F02000EE0E03F201E3E1FF1F2D2D301E1FD2E1F0020F22F200001F2F101F0E112300D0F1F2D20C0E1D302F01F0EF01E102F1F206A00F11F13E1F1EFF010FF0F1001F1F0001F1F1F000000FFF0F1FE1020001020F1F100000F10FE2000D1E1E00F213F1F1E0022F00011F00000011010100E0FE25B00FE0000FF0F002010101102F0E100F12E1E002100FF00FF01E00000200F0F000F01001FE110200311EFEF1E00F1D1F011001F100F0F100F1100000100010E58F1011E202000F1C0D1F302E00F0F0E1D1110FF021E2FF0020101F1F0100F1D21F10000000010F1F000F10E002E2E11F1F0F01F2E01D0F300FF1020F02D3E1049F00F10000000F1F1FFF2E10D31F12F00FE1E103EF3000E10E2F001003F21FE0F01E10F1EF12F1000E0E12111E1FFE3001F101E1111E3F0FE112F1E30001EE27AF1E0FF0F0F102E02D2E1FFFF111E3110EF0E0103E2FFE1FF211E100001E1111100002E0000E2F00E1F1000FF0FF203F100F0E3F01E1E2F0E2F100001200001571F1FFD120E000E1200F0201F0FF31FF0F00300000E2001010F002E1100F0E2F000FE11202F20FF1E2F00E1F3FFE1F00000003E01EF1D2F11F0EE100111F10046F20101200E3E1D00F0F1E10110F2F3F000F0FE0020000F2F1F1F0104F1E1EE00100F1F20E02FF1F01F2E201010EF1F10F200EFF0D0110F111FEFF11C11101F5401FFFF02E12211000FF11FF01F1F0200F02F0012F1FF1101000FF01000F0000F1010F00F10011F012FEE01031F0E2FF10E100F02E1F0F0F00F10FF10010100680002001F11000110F0F00F100F00FE20000FF01112FF2000010F0F01011E1F00F10E0F0F0112F0FE00F10F1001E20F2E10F00FF10001F1001F2E0F2000E2E27AFF2F00F1F01F2000F20F1F02D01F1000F0FE10F200FF000F2F1FF1E11F10020F10F1F01F1001FF1F01001F00D10001F1D00FF01F3F021E01F2E01002E01FF2541021012D00F12F21F12E01E0D1E01EE10F1F20200EE01011100100F30FFF11200F2F0010E2FFF0FF0F0F0EEF01121E211001FF1F10011101F1FF01F2E00F1F691E41F2E2000E01EFF021F3001FFF11EF11CF0F0FF1FE10D22111F01F10001F2F1F0101F1E0F000001F210FF1E1001FF00F1E00D20D02D1120010FF100F12EE420113D10E0F10F12F000F02021F11F0002F0FFE001201F0F11E1FE0E02F1F11DF103201EEF1E1E102001F3E2E10F1D3010F00E21D11E2003F21C00F10115DEF371FFFF22EFD11F3E2EFF321FF110D1FEF2E2D3F14E21110D0E13F2DF00B21E2D112C2022F1F2D2301EEF1CF13FEE00F203E220E021F02FFE21F0DF0EF3F23D158E00F02001000011E10E02F1F02F1E11F0000F1F1F2E001F0F1000F1C1FF10F010F21E210E1010D210200012F022FFFFE0F00FF1FE0011E02F000030010F00F57F20001F000100EF1010011F1F3010EFE0010F001F12F0F1E0E01E01000D1111000FEF1F1E01110E23F102EFFF0F100110210FF001F000111FFF000112DF0004AE00000010111F00F310CF1F2F000110F10EF01E00EE1FF11F210EF1030F01011012CFF1012F10E01E1FF00111F1FFFF01E3EF1010100003F0E002201FF000069F1F02E00FF01F0F200100FF02100F00000000EE000101F11100003100FF101100F1E1110F0F1F01F2F0F10F1E1F1D1FF2F0F00F1FF102F10011E1E11010F116BE1E0E2000E4D1F10E2FD1120F1E2012E2001D21F2D2E0FF0001F00F1D2010F10111E2D3F10F0E2E1E1000F1F1F1F1E10F1F2FF0000FF0F0011FFE21000011F86000200000F10002E1FF1E1E00F0F2EF1FF02F100011100101000000F0F1001E2E2F200001F1F1E1F11D2F1000F2E2F1F10F0F2E3D3E0FF1E100F00F10100F057101F3F02D2E000F00F2F2E01F1F10F0011F3F10E2E2F1D0F00C2C1E2032F2E2E2F0002E1F3D3E01F2D2E0F1100F001F0FF0FF1001F00111000000D1F0F000075111000F10F0F0F01100FFFF010100F100001F1011010F0E10001F1F0010EFE0FF02F2012E10F0FF10100110010F00F000F1F120000E0E21F10F01000010F1F48E2002F20EF0100420FF0FD0F11FF00FE300DD0F1F101101E2020EF03F3011FFD11FF201102F1FED1100001E11000FF101F02FF1012FFF01FF100F00000220E6A000F0F01F11100011E00F1031F1E0EF1EF120011F100F0FFFF21F12F0FE11EF000000000F01000001F100F1000F10F0210E0F000020F0110FFF10F102F00F05820E3DF1F10E2F010F1E200032EE02D2D2F10F4C1F1FF1010F0011E4EE1F0210FE0F1FD3F1F020010E0E03E0101EE40FF02DC21F2020F20030E1F11F111EF0F5711F00F1FF201FF1D02E1111E3F1203B102FC4E3EE3F1E2EE0F10E1D11E3C2FF3001D21E21F01F103F2F1D20D2E101E00F0E111E11001F00E020000F0E11FF1451F1101E1101E3EF0FF0101001010F2EEFE1F2311F012DE1D21E0001E0102000012D00221E0FE2D10011FFF20FFF30E01F1F1201F13F0EF1EF12F2D012E20007C10E1F3C2D03F10110D1F1E0F00F010F000F1D21F1FF10010001E10F01000011102E00FE0001F2F1F0301F00DF01F10000F01F0F000F1010000000000001F0F361E1203B20D30F01F2004E0D22F0F0FEE03CF02301D2FF0B5C21F4B310FB30FF4110D3000E5C1110C2F2F00F3F2F2DF1010E000BE4E01211F24EEE1EF300F0359FF12F0F1FF0F2F011F0120DF3FFFF3FF00E0F20D1000E22E1E1F0F02022D3EF300D3E5B1102D1100110D3012F10EEF11FF10FF00E0F31F003DFF10E10200E349F22FE2F00E4C2E401EF1D1C5F0F01F00200F1FEF110E20E0F210F110D0200F20E1EF00F41F3F3ED10F0002D022FE20F0E100F11F0FD3DD2F11F2EE2E20E4115821F0E0FE30F0000EF1F1F02F10F0FE3100100EE310E01F0120F010EF11FFF20D1010EF200210D00001210FF0FF11FFF21E0220E0000F0FEF11FF020F010FF2521110EE200E210012FE11E001FF000FF12F111EF020F110101200000F01EE010E02E0000F02FF030FE03F00110000E10FFF2010010F0FE1101E201EF1FF10F0430F0121020000010FEE1F112F100200FF0000110F01E01F02EFFE20FF00E021FFF01140E110F11201010E21F001FF0F1101DF10FF1F1FF0EE12012EE10FD32E5710001F0101E01100020C00F1F1FD003D11EF1312E5F01F1D3EF202ED3EFE1F0FD3E303EF100F3E303DD3001F3F0EF2D2E1001FF0F2F4F0002D0FFFF120101E580110E011FF400E01F3E2E00FF00F0EE2F110FE3F0002F100FE301100F1E0F11F001F1011E4D1E3E0FF1E0F2D3E1D4F1D33D3C4E100F3F4D20E0D2D2E3E1F316A00E2F1F00F102F10FFF1F01F1E3F1F03F0F1D1F3E1F10F302C5D2FE4C3E3FE1E0D10FF20F0101002F0D1F100101F000FF11E10F00010F20EF10E202E10000069F1E10FF0101000F101F020002FF010F1000F02F1F0E00F00000000D010101F11F10F0DF2E02000001F000F010E01F0110F11E1E10C20002F2010E1F00FF1F0542101FF2F0D0F100011E1E4F1E102001E6D1FF3EF2E1E02E00EE3C0003EF2F120111F0F01E2F0F01E0D5D30001F00E5841DE2F2E13E0EFE111011FE2E4012E0490200D12FE3D2E10F24CF2E0D00201E102F1E0DF2FFF10FE3E3C7A3E03C6B5D6D1210E4E1E1EE0F0112D0003D003D1102E5F1C03A4DF10F2FE10E03F4FF21E0681F11E20D2FF000100000E2F12001EF1E02E11E01001F000000000E00F11C20F20100100000001001FF00E01F1F2EE110F300000012F01FF20E010E211E40F16EF1F2C1FF00FF1FFF10000F02EFF2012FE21F000E121E10EF11F100E11C002F22F001F030F12FE1F011F011C2FFF00E110D20F00FD14F020DF0E202E121D10E541D410C2FE03E003EF4D011D041E00FF310F00D30D121D21E001C21EE3FF23E00FE13F0F2D022E110E110011E1F0F10D21E121E01FE20004DF10F000EF3EF2F6620F1F001EF10102FF02FF10F100000D02FFF20031021E020E02FD2FF30EF10E003F12D010D40002EF1F0D2E0F10001FF10002FF1F0F2FE1F1E5E101EF2FFF3481E1E1E013F10FD12A6C4E12E3D29420000E101D12FD5F0010F2F011E01FFD11A20E030FF22110EF3FE21E112D100D00E3FFF111021F00BFF0004E2F2EF2F00552000110F10F40FD3EF101E3FE1F00010012C04EF11D10FF1000E2F12EF11F022D04D030E101F02EE0FF011E10EF10FE01012FEF0E310213D20D01F1F12F0106911D1FF1F010F1011E000000201E0FF101F002FE2EF0F3F10000111E02F0E01F0122101DE0F00F1101D01D21F0001F00F1011F01F2EF02F11F1F2FDF01000F14900002E01F1EF1D21F22001C000001003F01E21E0FE3D00F10002F1111E01FFE02FF001FFEF0F100000F31E22102000F1F0EF20E00EF0F201F0FE200F3DE4D055200130D1F11F200E2FE202F0F1EFFF2F01F00F000FE1D31F3EF0E1021F1FF11E1110001F0E0FF1F20E0E12E30F3F2000000E21F011FF010F210FF0F002E20F59110F0E0000FFED3FF0011E111301F1F111100E02000F1D0FF0FFFFF0F03003F1100F110F0E20F10E0F0002F00F111000101FF0002FF00000FF10E10F2F100F57101010000E00000D10011F000FF1F1F0002E01011000FEF1F0EF11120110FE02F00EE01100202F012E0120E1101FF0F0F12FF010D001100F3F3F0FFFF00F11580010FF010000F10103C0D2F0001F0E2D3D3F0102F103F201D00F2F3F0012B1D1F2ED3D3F400101CF11F0F0F1030E2D1F3FF3C6C1F02E210FF00F1D10F0EF03481F01F0F41F1EFE0F02013C1003F1E0FF000010F0F11F00E1D01D3EF0120210F0102E0F0100EE1102E21E1FFFFF00F20121F10010FF1122F0F0F00F2D02F01F4BF0EFF0E0222F0010EE01E0021FFE20F21E22E0120FE1F0000E03F02E00001F00F1F10F01E201F01F110F1CE0F2C23E11F3D30E6FF0D2F04D12D3FE3E22D0016A0FF100001FF000FF2011F0F01E1102FE1001F01FF000011E1F00F101F11F0F0001F3E01110FF1F01E20EF021EF200F100F1121F1F000011FEF1F0002FE1F105D0F000EF220FE00EFF2E0101010F004F100EE2320F00F011FE01F0010FF1E0100020FE0E12E2012EFF10F012EE110EF1F0D0F0FF2000F0310000001F010012E490011FF0F0F2FF0EFF121F0F21E10F01FFE01F113000F00010EFFF3200C1F311202EFF0F00032FD102E121ED01004FFEFF103F0FE111E0EFF2100FF020F000D65200F0101001FF100F00F1100000EF21FF0F012000F0010000000FF1F10120FF1F00F1E0FE02F0FF011110E1F000011F002F00110F0FF1E010100F0021E1EF062F111F20100101000001F0300D0000FFE0F1F0F10E21111F10020100E00000000E110F0F0FE001F122000FF001F0E00FF22000F0000E1F301F00001E101F00F653C2D2F30FF2D00F4E1C3D1F12F103D2F00E00101F1FC3E4D20F3F2E2E2000100010F1E2E00E2D2E00F2F3E100200FF100D1FF1F2F0F0010010F00200100101571F0FE3E0F03F0202E11E010F1F10FE2001E2002F0EF0F110011F2101FE0FF2FF1F2EFFF2E1D2012F1F0E0E30E2010E3E11E00110E20010010F11F110020F0F5CF02D00E10F001FD1D1100FFFF1400FE3D2210E00F12F10E2F02F1EFFF200F1F0E00E3013F1F1001E1FE30E1FE0F10F4F00E4E100EF400000F1003E020200104CFE1E3200EE1F0F00F1F010F01010F0001001F00CE112E13F0FF2FE00111FDE232F000000001FE1F0F220F00E113EF0F2F00000000F1000021E1F30F1E10F0E6AF1FF101F10F000110E1FF000020FF000011F12011F000110FFEFE0F001F01F00F0001F1F200000F100D10FFE110100201F011001121F1E1FEF01E01F1FF100591E0003F0FF1F0001F10F00F00F0FFF13F00020020E1100FF010F0F1E01FF2DF2020021FF000000FE3002010E2FE12E2D01F0FF110012E1212FD0E10E21FFF0680012F00E1F000000010F00101F1EF0E111E1000F02EF1020011F00F0100210FF10F1210000000FFFEF000F01F011FE01F001010100F0121E200E0F101F01F04D0FE0F1FE20F1FF0010E0FF001F02200F10F0E02121E00F0100110003EF1F0F21E0F20E10FFF0120E22CF000F1FF2F0100E100E001EF1121013C0F1FFD1E101551E3F3E100EFFE1F3E1F012FE5E200FD3C4F2012E2D3F3FD2F100F2FEE2F0F01D2D4E02E3EFFF1EF2F2D0201F21010E1D21F2E3F01F1F1F02E0000F1FF2EE2067F2FFF01EFFF01111F21131E0010FF21F1F1E12F1D11010F2E0E0200E1D102FFF0000E2E1F11002F0003E20DF103000F0E2E0F000000D10E0000000F21F3F1079F000100F000FF1F1001FF200F0100E11F10F2FE2E10E110100002F20F2102E02C1FF10000E111FFF10E1F0100F12100FF000FF00F000100000000111010F108CF01FFE1101F2001FF11F0FF101001011FFFFF1FF001EF1000001F000002FF000111E10001E1F02E2F00F00F00F0F010F1F2FF0E3F01F0F0F001001F1101000680F100001F000F030E1F00FF101F10F0F00F1F0FF10011110FD110F0E02DF1111F0E02F00102FF0E2E121F0F01F110FFE3FF221F0F2101F0000EF10EE000FF1640E110101F0121F01F2FF110F2E1FFF1100F1F0010F000000000FF0101110FF0000F101110EF1F00EF0000F0011F0101F11E010F11F0101000001002101FFFF5903FFE01F00000FFC2121220FD20F100F20E1FF00002102F201F00F1C1F20F0EF3D01E100FD400000000E101103E01F0F101F0FF000F00EF2E13F101F10F3F15D10EF1F10F0EF1F1F0FD10011132EE10022FF0F1E01F2C10F2E0E0D10010F0003E1E402EE1001000E0FF41F0E0F2D2E2E010001110000E2EFF102101F11F01F4EE1F1CFE0FE111F2F1E2D4D11FC32E1E3F5D0F21FF11E0010FDF1F22F2FE01010E1110F520E0F2FF0EFF40DF03FEF03E0020F21FF0E2C231EF010F101D33E006BE0F3EF00FFF20E100E1020F00F0F10EF1F10010F00F010E110E1101F12FF0100110E2100000F11E1E010EF12E0111EF200100E20E100F01E00E000E11012016AF0F0F001101E000FFFF22E01EFF01010010110001FFFF1FF10111001F1FFF1FE2EF021F010100FFF1EE3011FF02F1F1101E1010F2F0003D0000F10E10102FF662FEF100E10F200EF201E11F1120F0F00F3000F0E2FFD01F21FE00110210E201F11F001021E0FF2F0F00000F1F1000D302E001F0101E2E2E2E00000001110007A0F100E1F3D1F0EFFE0F003F2E1F4E2011001001000F011F00FFF0F1F00102F201000F0E1F1F2E1F1F0000F0F100FF02FF21F1201F10FF130FF0EF1FF010FF158E02F14010FEEE01FF3FF20FF1F1E01200E02011001FF03FFF00F00000F00F1121210FF1EE020F00FF0201101011FFE01E0EF0001000E0FFFE32F2000102FF059030FE0F001FF10000002E010F0EF0E120E0F03200111F11FF11E01FF0F110FF2ED000E31EF210120E000EF2100E21F0000043FEF1DF2F102FF100D0FF2F10058210F20F201DF0E111F11D101F04D100FF2F0211000D10E00E0F00F30F032E20F01FEF010000F11E00E001ED2FF020E1FE030F01F000001E0100200F30F0F1D660110F02E001FE0E1E2E2F2F110F1F0110010001F2F1FF01FFF0E12E2F0F00002F11000100F0FF100F10F01E12EF11E1FF02F102F0000F10100D02F0110011E4EDEF1F10F000E21FE2002FF000F01FF2D0121F40C021F10D032F1EEF4DF4F0F2E120002EF0FC02FF0F011FF20E40E021F11DE10002E030C11FF0F231D22E0126C10E20F101F1FEF0F021D00E000F21F1101120F1FE10FE1FF10E11F001F01F00F010E010100002F11FE01F00FE11F21F200FF1010FF0FE12003FF31F11FE2EE7BFE00000F10000EF1FF13F01F010F10E10F21E1003F00E2E000F10D3F10E0F300100F2FF2FF1F00E2FF2E000E0FE3F02F01F01F21F21F00F1FF1001F11F0000772FF1FF1E00E01F10E20E30F3001E01E10E1FF11FE10FF02F03E200D3D1001E210F3D21E02F1E01F02EF2F201F101F00001FF010F10201F0FFF1E11001F00E1681123EF00F100010FE10D1F110FF0000F0F1FF1EF12F010F110F11F010F100F0F110011F0F00F10000211FF0F01F2EF000FFE1F1101000101000F010F0001EF56100F002E002002E0001F1010F1010F0FF0FE1F0F12F01102F20F010F2D1F0F0011E0011F0202F002000F1F000F2FE200DF0FE0022E0020F1F00F001220FE2E68F1F1000F0F2EE0E2F0011F2F3F02E000F200001F1F100102F0F20F01F0E101FE2E1001E000011F10F1F1010FFF0F0000000D1D3011E1E2F03F0201000F010049200C301FF3D0030100EFF4F0D10E0E1F2E0E1D4E4FE21FE3E2E2F2F20E202DF011E10F0000000FF100F101FEF02E2C3F000031F2F5E30C0FF1D5D3EF01002D672FFE1C3101FF1002F1F11FF1D2E0F1D2E011001D2E01201F3F10000E201F00D102D0F2D110F00F102201FF00101F1F01F0E1EF1E01F1F112FFF210101F1F0056000E11C5EE10401F20E01F030103E0FF1010F0DF2F1E1F0111E00F0F00C10F002F0E12411F1EF10E1002E201F110E2F22DFD201FF000F10F20E12F002EFF0148E11FF2D1E22F2F000000C0FF1120F133FEFFFFF000100011111022F0D0E03EF0200F12FE0FC111FD20F220200E00FEE212000000F01F30F20F1E0F1F00003E6AF0FF0101F000F0111F00102F1100DFF11000E1F221FD0200201F0F10E00FF1E200F1F000101F0E100F301FF0D1F100F01F1000F01F10001FE0F01110000D12683FE001F11F00F00FF1E30000001F03FF4D02F00001FF0F101F01F0F11F20F2E1000FFF1E000010F010100FF0FF110120000210F0F001EEF2E000121E1E00107B01101E0FFF10E1F102FF0010FF0F100120E11E1010000FFF1000F11E00010F000F100F010E110F0F01FF11F200F0F01E111FF10100000FF0FEE12010F0102F7800F01F01E0E1EF02E02F001F1001F011F01000F0F12001F01FF0101F1000011FF00FFFFF02F1111FF100F1FF20100000000000000110E01F00001010F000F05620F0F01E200FFFFF2301E11FF01FF0F20F3F10F1D20E1E2F2D03D0F21E3F300F02C20F102FFF101F0000D0E01D3121F22EE11F00F100F10F0F00101100FFF18701F0F00F0E0E2F200101F0010F111FF1000100F1F01000000010F02FF0000000011FFF00F0E3E2101F01101F1F11E2F0FF1EF103E2F11F0F1E1E0000E2F00158003FE013F20EE1201F3FE0E1FF000FFF01F01E0D203121F1D10DF02EF41FF00FD13F00F1F32F1E01011EF0E1E20F0F0F01210110F01FF01F01F00D2012E00057F011000F0F200FE210F1000E0F01E0121FEF0F2E0FF0002F0101E001F211FF1F0100FF1F01F01211F010E11F0001E1EF011F1010FF20010000E02001100FF15AF101FFF000E1FF010FE122F01F0010032EE0420E1FF0FF0E0000EF00000F2001100000001F011E11E0E1EEF0F111110F010F01F00F10F22F1DF1FEF210120068000E00F000FF0E11201111020FF1FF00121FE0FFE2100F1E11000011E120000F0001F100FF010E00101F1F0F11FF011FF21FF00FF00F0FFFF110111E0FF211680110F0F00FF10000001101111F01100FE10FE100E00000100100011F21DFE0F000010010320E1FF1D111101F0F0F01FFFF000000000EF2F000111E0000000058000F012102FFF0001100E1F1FE00F01F1001F21FF11E10E0FF21F000F11FFDF3202210E0112E0F0F101D0FE10F01FF021F0010F2FE0F2D20DE2FE022F1201269130F20CF10E0000F00FFF012F1100101020F1F1E400E00F00002F2E3F0FD0E1F00000F01F1F1E200001F00100011FF110FF1E00E2F100011F1FE1000000000562FF0101F01F1F0E31E1F10101E30FFF0F23FE0F0EFF1001F1FF101101FF1F00020000032000EFF010011EFFF10F10111FD0F111FF1330FE010D01F20EF00116AE00F1CE1220FE0000020001FF1F210F001000120100EF1F0F1F0000EFF02FE101FE002E00123001F0F0100E00F2001000000F010F1100001201FEE1F001FF16AF1F1002100EEF0000F00001FFEF001211E210F10F0F1000000F00FFE01110E00022000012E0F0E0F0000F0F0F00022111F00F0011F0010F0001F0F1000001077110F20E0001001010001E10F1F000FF100F0000100000F001F0F001E11000001FE01EF10F001100EF0113000100101FE000001011FFF0F11100EF0F0FEF00163411FEF020E1001F10100000DFE002000F0000110100221000FF01EF1F000F1F1FFEF11011110F100F0FF12000000F10F0FF10011E0200F1001F00F0010FE21771111EF0FFF110E10E011F101E1FF1E01F01110FF3FF0FF1000E1020110FF0010FF0FF011F11001D2F01F3000100F0F1F01F1FEF00100F111F2F00FE220000057101F002010D00011E202FFE00F1110FE1F100031EF03F1E01FFF0F100021EF001100D101F00F0001001F3D2001E3F2F01F0FE1F0F2E13D1E2F1E13F1D2E2009A10F0F00001FF1F1F00F1F1000F1F20F0001F0F2F31F1EFF001F0E11E10010000002F101F01110200EFFF0F20E0100F0000F0020F01F1F000010F00F000002F6DF2F11FFF3EEF1F0FF0011F2000FFF0F1FE01100130EF001F02010E001121F0FE0F1102EE0FFF01100000210002E11FF1F0000FF00F0000F1F1F10101000F006711F010F0F0E000FFE31E10FF1F42000000E10F00110EF01F01F1E01F031FF1112F12100FF1F01F000E00E00000F2E12F000120F10F0C00FF0F22E01001F00E66D1400F100F01F02F010FF0100000002F00E000F2000002020F11FEF0F0F1101111F20EFF1EF03010E201F1000E11D30F2E10E102FFFE0E1005B0103E10F2D0690E1020E3EF1F2F01E2EF101101000F1E10F0F0F1011F20E1E10F1021EE2100202FF0D1D3E10E0F3F011FFF00E2E2F0D04E0E2F10200002E3D10F2E2D2F000088F1FE02F0F01F300010F2F1F0F1F2E0211F0E0F10F001F02F10FF00E10F0F0F1010F1E1F11E11F0F001101F1FFFF0E1F1101F20F0001F2F1001FF1020000000580113F10F1F1FF1E0E0000F1D0EE4E21E2F301F02E0D1111F1F00F103F00E2F1E1020E0E1002F2D1EF1D3FF1F102E110002D102EC21200F02F003EE1F3012F06EFFF01DF0110E00F1F20FF00E1FF103F1E1100E1F0D210F021001FFFC2F0101F002E1F1FF00112E3FE1F11F01F0F00F2E4F1001F0F101F0F1FD0D3E2FE2E1F374101F0E1F1F3F1200F1F0F01E001F1F1FFFE1F1002F2111E00010FFF0F10F001F2011001101E0000F01E00000F00F1F100110100F0F110000110110F11010006FEFF0E0F01F00F0E1101E2F101F010F20F10010FF1EE10E0111102E0F0FF110FFF2F011F10011F00F2F0210FF1F00E0FFE00F0F1F010210F2F01F1010F0E10F631E11010001F211F000000F1FF02FF0000F11F1E1020000000D20F100FE00E1F00F1F11010110EF202F0011D1F001100F20F000FE00000000F010F0010F0E018502FEF01F3E1E0100E000F002F0F211101E110F1E0FE1120F10F02F1100F001001F10F00001F100FF111F0FF010F1000F100F010010F000FFF11E021F101F10980010F1F00000000F01000000E00011F010FF10F010FF0101100001010101E0200F2FF0F000F100100F012F0F0000000FF211000F00111FF0FFF01F00000F116A010FE121F011EF011EF110E301F02F0DFF020010EF02F1F20EF02E2E20F001F0F3000FF0000E100F03010F1EF0F1F1F1F010103010000011FF00F0001F01E05C02FF10100E0D1FF1E00F100102E2031F0F00011F011E0E1000E1F2F01D100F0FF1011F1103FF0FE1E0002011F01FDF013EF102E121E10E1010010FFF01D4F07B1FF0001000000100EF200FFF00211011FFF0000FF000010F1020F00E001100F00E100111000001010F01FFF00E00F10F000000F10F10F0100FF20000FFFF105710000FF2E000F1111F32F1FFF0110FFE1F1020110EE1E0D0120000F01D1EFF2201110F11C100E1F100201F000E1001FDFE01F2E1F2F20E40FE1000100F100E5340010101301EE1C0FF102E0F21001F0F0000E1F3F01F11FE00011F0FF0310F001F013002D2000F0030E01FFFF00F0F2010FE00021FEF0F0211F011D11FF010580001F00100FF1D1E102F1100EEE22FEF1113110E0F0F1FFFE1210020E1F200FD01FE2F2F10101103E20FFE0FFE10210F101013E2E0E001210F1FF0EE1100F188F010000000000FF0F10F00F1F100102F100F000001F0E0F0000F0100E10E11010111F101000000010F000001F10F00000000F100FE0210EF011F20000201F17B112F0F1E0F02FF01E101EF111F0E1E2F0F0000F11F02E111F1FFF1F01212F0F00FFFFF1F1F0F00F1F1010F00100EE1F200001D1101F2F2F01F1FFF1F10010159F2FF1F2002E1E03E000E000DF0D0000200113021E001FF002F1100FE101E0F01000201F012EFE0EF101E111F10E002F00FF01D1E11E420E1100FE2F0100C2056F210000102F3DE0E1E0021F010E2010F0F102F2011D3D11110DF0E00E00E00002F010F0F22E101D1E31E2F1F1F010F0EFF00FF000301F102100F102FF20E00660EF2E11F10F0010E101FF3001F1F0FF0D21F11F00001F1FE101F0010E201EF10013F200001FF0EF1300002020D1FF0010FE2F10001010E1E10F11F000100F058000F10F0F1F02F0E1F2111F3FFF02F0F03D0F01F020F0F000120F10E010100FF101FF0E1E02100011E1022FF1F2E03EF0FD0E0F3F120101E00FF0011001F005901F011F20F012D2F00E4C10D0E2BFF03E101021110101FF3E0FF00F0001D30E2E2F00100202F0E20E0F01011E2E1F14C1FE111EF00F01F0100010FD110130F48001D3110D10EDD23F0F2F1E2111C311F1FF2E2022DF0E00F00DE1041221FFF0EF2F0FF1F20000010FF101E00E3F01100011D0FE3000FFD122F01EF210000F06710F1E1F0000020FE2F10100FFE02F100E3E2002E2F2FFF10F1D0F002F3F0F20F102E0F101002F0E0F0F020F1E110012D00FE2EF00FF1E10F112FFF110001E186002EF00F2E00EF10F102F200010F20F01E0110010000F1FFF00F1F1E20FF0FF2F1F2F100011F000021FF0F0000F0F1F10100010F10F0011E3F0FF10E010012881101F00E2F001110E00FF0F0F02F1F101F0000011010E0100000E001F0000000F10F0010000E000F010F0F0FF1F11D001F12F1100F00101FF10FF1F000F00F82010000210F00E000F1F0001010F002100F1E0110000001EF0FE20F1F11F11000000100F300000000101F0000000F10F0F0E0F10101F0FF11FF0E212F1100F17800000110101110F2FFF2FEFF1F00F00FFF00F210100F010200001FFF100002F102EF1F102F010F0010FFFFF1F0000E20110F110101D0FF0F000011F21F0F029A000F11FF10F000000011000FFF100000111F000F001E0F00000000000000F11F2F200E1002F11F0F01F0F100001000110FF00F000001F121F0FE001F1E20118EE0F1F0F1F1000010FF1F10110F0F01F010F0E1001100F0001000100F0FFF0F0101001111000F01000F01FF000FF1E1E0011F111E00110110F20E0110EF1F009B0000101001FFE122000F0FF00FF0FF0101F100010001FF000E021000000000F0F11F0100001000000F20FFF100F0FF001000000F12F0110F0000F10FF100005B0FF2001FEF000EE2F0010E20E102CF20F11E3E32FF23F12FF0F2F10F0EFF00FF0E000FF20E01E012210F2001F00000F001EF1F0D3E1E10E1F3D11411F11E00591E100120EFF000F0E12F00E101E00EE120F01000F11F001212E0F0FF1F0000F2000E210101F20E0200E11EEE1E2F11F012F0122DF203EEF10F0F20FE002001780D011E10F1000E0000F002F00E0102000F1F10001001FFF10100002001101000F0F10FFF100F0F00E010F0F1101F100002F100001F001001FF00FF0FEF0F1F930F0010FF0100200101F11F1F0F110100F001F01FF10F0110000E1F000F0001100110F01F10F00F01001100110F01FE0F00010F010F00F0000010000000F00158FD100F010F11F101101F122FF1C00FE0DF10002F2011100000F112DF0E0001F1100E1E01FF2F0020111FF1DFD2220FF1FFFF10012EF111E13F0F0000E011E053F1E1F03F21FE10111101FF01F1100010F1032F1E0E000F01F0FEF20E110102FE0F1D110013E0000F2F1FE1DD1010012000F1F10012E0001F00142E0E11D2C086101E2F0F20000000F1E1F01001F1001F000F00000F0F21F101F011F0F001F0000F0FF0F11F000FFE1001102FF1E102D2F0F00F3F1E1E1000F2F1F11F110000841F22000F0E101F0F02F1F00F0FF1E01011001001FF1001F01F20F1002E10001F1F0100E1F00F000F10F10010F11F10101101E010011D2F02E0FF1F12002FF18D010E0F1EF00010010000011F10F0E1E0F0001010010FF1010F1FF0000201FFF30E1FF000F000FF1010102F02F0F00F0110001100010010000F000FFF10F1FF7A110100FF001010F00FF21F00F200001FE10E1F000F3F12E111FEFFE000001000F0000000001F0100F0000101000F0F0000F1000000F0010000F1F10001000FB80F100001F1F1F0100F020F00F0010F0100001F00F00000F0010000100F110F1FF000F0100100011121000FF10F0F00F1F10000F00FF10F1F1001F0100F00FF4C0FF2E0F1111FFFFF220F11FEF0F0F031E3DD20FF10F0C2F1E00F112211F2101E01F0002111FEEFFF0101F0111000E0F0FEEF3000FF2F03F0E0101002DF1F0DB50000FF000F01F20F10011000F1000F00FFFF0100101F11FF0001010001F010001000F0F0101F0011000000000000FF00001F10001F1FFF00F00000F00F1000A101111F10010110F1000FF00F0FF00100001011F0F0F0100F1100F01001001000F1FFF01000010F0FF1110FF1010F10101001F1F00F00F1F1F010F1000000F095F0011E11F1E101000F0F1F0F01002001FFF00F011E21F1000F000FF10FF00F010100110E0F11000F000F112FF00001FFF1F1000110110100200F2E00F00000A81012111F1FFF00FF0F001000111F010000F00010001010F01FF00F000F0000F00010010F1F2F01F000000F0000F010001F1F0000F10F0101000001FF00F0F0B81F20010111F2FF0F1FF0F111E11FFF10000000F1F001000F100000010000F0000F000010000FE11F100101020001F01F0E1F1F00F0F0110FF1F10F1FF0F0117D1F0000101F000FF10FE112FFFFFFF010F00F110100F0000010001100F1F010F01211FE1FF1FFFF0F001EF1F0021000FF001E010F0011F001000F000F000100B600F100010F00F1000000FF1010F1F01F1001F000F1F0100F00F10F0100F10F000F100FF010010000001000FF0000110F1FF0010F0F01000F00F10F01001F00C3001101F00FF01F00F10F100F000000110001F00000F0F00F0000011F0200011000100F01F000F010F0010010001000000F01FF0000110000000F10000001F0891F2F01EF0000000011F0001FFF10F101F10F01F2001FFF00100100011010FF0D0000000110021F00FF1000F1001001F110E1FF1F10F000011010100FF100FFABE0000000100000F1000FF1F00010100F0000001F100FF1F00100010000000F1F00000F1001F210010110F010FF0E02F0F0200FF100010010FF00F00F00F101AB000000101F1000F00100000F00010000F20000010F000F0F0FF0FF1F01F1F0F10000000000000000F10000001F002F1F000F1F000001F000F00101F00F0F0EA3102F001F001FFF00000111F0F1F010F00F1F2F1FFF1F0010F1E00020000F00F1F1F0201F1000F012F0F0F101110010001F000000F0F1E1E101F001FFF00100A61F20000F1000F10000F10F010F1E0F000F011F100001101F1FF100F0F0FF101F0F0F1001101F10F11010F0F0000FFFE0F01001000E010110F000000F01F01083F0110F20FE10F0F1F10010F000F0110F02FE0011F0201E001FF000F1F001120110F02E0F0010F000F001F11F10011F1FF01FF1F1010F11FF01E001F12000027A00FF0F100000F0010000011100F00E00FE2000100010F1F0000F1000112110F2000F0FF0000000000F0FF100F1F01E10011101000FFEF01F0001F10F1F0101ABF1FF10011F0F000001F101FF00001F10F0F0F1F12F2000000F1110000000010F01F0FFF00000F00F100101000001F0001F111F00F0FE110000F1E1FF0F1F006903D3D21E1E2D2F2FE3E0F00201003F1E0FF10FF0000FF11100110FE00F0F1FF11E000212F0F0FF102013FF012E0CFFFEE3F2F110100011220FFFF0000F1F007EF00000F0F0101FE102E2E1FF1D1E1F1F102002E3E2D0E01F1F1F101F2210EEF11001FF1001111000EF0000000FE1F0F011001F0F11102F00FF2EF00FF1F0006AF0000000F11FF02F203EFF12E1E1FE2E2F03E3D3E00F2C3E2FF103F2C0E1F0EE310F101E1E0110001F0FF0F211F00F10F01FF0F000200101EF001101FF100F67120E0100F01200F0F1E101F1FF2E4D2F110F2E0000D4C2011E3C2D01F2D3D3EF102E301C3F00FF000F000FF2D200010FE00E2E10010021F100D002FF211F1F521300200F0010F010F0FFF0E132001F002FD2DF1E02E2E3103D3EF2D4F01C3E3E00F1A6E2D1E0F0000E2E0113110120FD0FF0F3D01E11F22E20110E0000002189000FF0001001F02E00D10F1E31D1D2E0F01F1F3F1F0F111EF2E20F20F2E01FF2FF2FF0E10120F1EF1E2E00F3FFF1002E3012F11F0FF1FF00F0E002F2FF1E3EA501F00000E00F2FE3F2F12D1E110F00F101F0101010E00F0F0F11E2F1F1E11F1D20E1F20E3F10F3F300F11F000FFF1F001200F0000100F1F01E1E2E1001E2F2762E2FE4B4DF2F301F2E0000FF1F0F00010E101002F1D3D0C1102D2E3F21E4E1000F2F0000210E1F02F010E000F002FFF1F10D3F3E2F03C3D4EF4D2E0011E2D1790F30F2F0E00F00220E2E212EEFD1D302FF2E0F2F00000000121F2FF0E2E2F0FF4E2EFF13D3E3C01E0F2D3F1002D2E21F0E0002F1F002F1E2F0E2E02D2F5B6CBB02D5B3C2F01F3D2E10F00000F1E1F100F000001001E1F1F00F2F1F2E2F11F2E3E201000E00F00F0F0F21F01F2F001F0F00F2E3D3E2000E3E1F01FF12F00001AC20F000100F1F01F2D1E3FF1F3E0F3E1E1F0001F0F2F0F011F010FF0FFF2FF0302FF0F3F1E201EF101F00201F001F100EF010E0FFF1F11010000F2000F000F07B010F0F000F011101000EE0F00000010001FE1001F20F220E010F1000FFF00F1021E2F100111FFE0F1F00E100F101F00FF1F1101E2E1F111FE0E1F201F221FF7C1F10EF0F0F2FF0E0E1F2010FF2100F1010F10010E100F1F0011F0F001F00FF110FE00FF10111F20121010010FFFE0FF1F0F11F0EE0102020FFFE0F1200F000B6FF010000020000F00000000F0F01000000FFF000200011001000F000000110F00F1F001F000000000F001FF0F0F01F000F000101010F00000010F1001F0100C50F010F10FF10FF01FF0101F11F001F00000F02000000010FF210F001F10F001F00001E00002001F1000100E1F1F1F00F1F001F0F01F0F1F1E11F1010F101F08301F2D10001F12F1F2D101F03EF110D02FF002FF11E1011F211F010E0210100F0F01D11E00E2F1112F01FF2E3F10E1D0F001F01200110E3F2000F0F1F0FE1E1B90F1F111F01FF101F1101020F0100EF01FF2D1E000011E1F0FFF0FF00001121100000F1100010001F1F2FF101E001DF0F0110F01F0F000000000F100F100000880000E3F0F10000100F0000F0101F1F0012F001EF00E101F1F10000201F0F011F100FFFF0FE01FEF01000011F101210F100FF1EE110000F11F011FF020F21FF980F11F0F1F100D10E001002E0010F1F2F20F100F010000FFFFF01FF020F2F11FF1F0F21F001F000001F11F0020F100F1000F1C11FEE1F1F20110000E01F0011A501F11FF1F021FF00FF0FF111E1FF0201E1FE10102F201F0200F1FF01E03EF010F100F20D010F11002FE02FD10EF2F0F2F0100F30E11E101E100F11FF21D12ED600001E110001F01FE00F010002EE10011F010FF00E000F1001000110F100F3EF11E03EF03E003C11F0F2E100E12EF30FF21D21E020E12EF3FE11FE22FF20E194F40E12EE40E03FD20EE41C31EE40D31ED31EF30F24DF3DE12E010E12EE31D13FE34CE4FC32D020C02DE31D33C051D13DD41B05DD22C03FC43B020D23C040C1D803FE21D03FE03EF40D02EF30E03EE21D120E31C13ED31D03EE21EF4EE31E02FD22D03FE22D12FE22D110E21C22FF21E02FE20E01FE20D12EF11E22FE21E30FCE0D12FE20E21FD20E20E011E03E02F001EE3FE200F31D2FF100003E02EF100010F10F0F0E21D2F0F11E02FF100030F10E1F01E2E11F10F0F3D000E02E1F1F02BC10FF3FF1F1F100F2FF1E0F0FF2F02F10001010020F01F01FE01FF00F10F01EF00011001FE01F020E21F0100F2FF2FD120F20E21EF2FE21D04FE11EF2FE12D08AE30C14DF31C14BE40A43BF4FA44BE6F943CF50B53C05DB42A06CD559E9BD55707BB55A17BC42AF7DB42A06EA63AE7E973CD7F954AE8D835CE6FB44906EA448880B54B05FA22DC60B33CE6FB44DD5FC22CE50C13D032C22EE22A220C23C021DF3ED21D120C23DE52EE40C310F100E1FE0F220E20F000020F1E2FF2EFE3F0FF283110012E111F11F011F2F01FFE00F0010E1F0010F20001100F0101F000FF010F00FF1F000E10000010DF1F021000F0011F100FFF010F1E0F201110020101F1F7A00EF00F110F10F100F0010000001F102F0F20E300E1E1E1FF10003000020010F0FFFFF0100F00012011FFE100F2E1FF0100FF0F2F1E0011E0F2F20000001F078000002E00F00EF00E001120F021FF11000000FF200121F1F0FE000F0F11000010100F1FE010F01EF0F011200100100E200121F1D10EF0100100010F001FFFF8910F1FF0F10010010F0F110F0001F010E01F00001001F0F001F00000000E0F00100010E021F10000100101FF20FE1F000000120101101000E0EFFF0000EE1027811101F1E0FF0000F010F1F1000000000F101F00000000F0E0E0100F11000F0F0FF004E0210F002F0F1E2F2100FF11E200000F0001E0111210F1FF101F1D1FF981F101010F001F1F1FF10001FFF0F1E1F1FF2E1D4D3F2011E2E101FF0F1E0101EFF010000FD2001F20012F1F1000FF01F0FF00E10F0F1F01F2001F1120000F0961100001F0E00F0F1F10F011F0000000F002EF0000F1010F10000F10FF1E110001120101F101E0000FFFFF100F1F1F000F10FF1F20011102F10001101F1F0F36CEE0D1020011F00F0F000F01FF2FF1F020D001F12010001F01F010011100FFF1F2EF0E2E2F10F0010000FE1E11E011F030F101010FFE101FE1FEE00001001F172211E0110F120F00FFFF1FF002FFF11F111101F200FFFF101E1F00F1101110000010F1FFF10F001F10F00F0110F01101F0000000F1F0FF00200100010101001ABFF0F0F01F1F001000101002E1F0002F01EFF0001F2F21F1F2E0001000F0F10F1F10201001F00E1E1F02F2F0F00F001EF0002F011001F2FFF0FF0F00F00010078E1F201F01F00100F101F01E1F21001011F1FF000000F0FF00001F11F00F0F0FF1000101F1F2F111F202EFFF101C2E2E0F1000E2C3D4E2001F1E4E0F0203E2C79F2E3F3F1F000102000EFE02C2FF1E2E4F03D2D1F01E1FF1D11E3E11E2001F2FF2EF1E3F11D2FF1011D2D01D2F010E1F03D4EE4F01001F10F00F100F10F2E00B601F1F11E1000001F01E10F1E02F00F101000F0F200010F01F1E1E01F1F1F1F0011E2C000F101F0FF10211F11E1F1000F0FF10F20011001F1F1000000000F0075F11F01F0F00F1F21F102FF1E2F01F0F02FF100F0F200020F0F10FF00FE0002E3F1E00E2F2F1F00F01010E3D3F12E2E1000211FF10F0F11F3E13D11C1FF00F0761C2E30D41F1002E01F2E02F1101EE2E00F20F3E12E01E10D10F2F03EF0FE1E21D40F21030F3DF0F110C0000002EE00F01E20F120D2F10F202F1102001FD01F8AFF0FF0100000F02F1000100F21E0101F11F0D1F00001F00000101E0000E0F3E12F0E1100021FF12E1211FF00FE0100E01E001F0020F101EF0000002FF110008C00F100F00E010F21FFE20FF00D00E0F1120F1F102012F110F01F1E1000F1FE2E0F00D0F100F11000F0F01EF011102100011F00000011E00FFF0F0E03FF001F950FF11FF0110F10F0010F020F100F100F0F0FE0110101F012F0101EF21F0010E101F01F0F0F0002F0001F1111101FF011FF01FF01E000FF110FF110E2000F1078000E2000F10F102F10F000120011F02F0EE0E0010F11001100E11F101FFF0210F2E0011E102E100F00010F0EE0F001000F0011000102F1000E001210F0E10FD90F00101000F1010001F1010F0F0FF10F1F000100F000F000000100101FF000011F00010F01F0101010100100E1E2E0F0FF10F00000001F1F2011F00100F0007F0E2D1FD00102D120FF21E111FF101EF01F0F0FF001F101FF00000F1F111111010F10FF00F1E00E1F1F0001F001F0000001F0000F1000F011F1100FF000010F680F1F1F00100002E1110D110EEF1D0201E100011021101FFFF10F2F20F0001100F0E0F000E0F1E01000F01D203C3E4E1102E3D2E3D3D000FF0B5C2D4D3FF3E4D8E1F00F0F1E1F00F200F01010F1F0010F1F2001F1D1F0FE2F2F01E1F01F0101F01F2E20F0010F2011D3FE0F01E00F1F2F01F01F01F2F02E10F1001001F00F01D50F0F1F010111F0F1F01FFF00001FFF2001F200001F01F1001F00F1F000000FF0F0F1001011001F10F1F0EF01E1F10002F100001F1001F2E01F20F000000000B40F00000101F2F10F2E10FF000101E201002F1F00F100000F1FF100F10F10100000000000000001F000F11F2001F1F10E1F00F11E2F1FF2F01001F201F030F0FDF01E01F00F1F10E300001101000F100F0F1E01E11F1F10E00E11E2FF1E10010F2001FF00F1FF2F02F010000F10F01F0FF0000FF10001000001000001F01100CD1FF11F001FF100F0F0F0F1F011000F1F0000F020001F101F0010E1F001F10020F10FF00001E00F1E10E100002F01F10102F000100100F01F0000E10F101E10AE00F1F00F0F0010F1021F001F00F010F10F0FF00E10F2002F0011FFF1F111FF0F1E00E1F0000201110101F1FF1F000F1E00F00F101FF0F2FF1F0000000001F0671FFF21E2F1E0100F002121F0EF1D000DF4E222E02FEE11E0110E210F14FE13DF03FE6EFF00E1F0F0000021F112CF4FD12FE011E2FE000C2EF2C2021F1EE21FD7F0001E010F10FF10F1F0F100101000010F1F010E11FF11E011D021E02EF02EF01F020F02F012FE21FF20F01FF01FF01FE12DF3FD04EE31FD31D04FE23DE31DE8FE03FE12DF40D12FE21E020F010F10E010C02EF11D130E12FF31C03FD22DF30D02EE40D14EF31E020E12FD30E11FE30D02FE22E020E02FF21D12FE21E020F1B8F2FE110E11C03EE23D03EE21EF3FD12EF30E110F20D01FF20E00FF21F03FF11FF2F011F020E2FD12EF30E010F21D12FE30F110F11E01F011F03FE31EF1FE2F783CD31A24FD42C02ED50E23DF3FC14DD40E24CE20B23ED5EB43DE5FC14B05ED32B05DD61B04CD51A04DF61B23B050D42B24ED33903DC51A15DC61A52D04FC44B83EE12B22ED31B210C6FF03EF20E14D102D22C011D21FE20D300F10D21FF20E21EF10C31E110C42D240D22C03EF12C04CF5FD03DF3EE11D120D40C21F031D33CD2EE30D11EE2D0000002E04C04C03D11F2D11F12FF20E20E1F10F20F01E11EF1FF00001F00000000001F01F0000F10000020F10F1E0000F010000000E00F2E186003E101F1001E2E2FF12E10F10012E4E10FF01F2EF1F010F10FF100FF3E10F4EF12F11F1E0EF00E13F12FF1E0120F11FE2DF2F010F000E000F14C11E03D020B9F01F3E000F0000000F01010F10F22E20C1F01F02F001F01F0001FF3D03E2F01F100000FF1E21D2FF1F02E000001102002E20C31D4EF2E01E00F0E01F02F3F08A20E20E3C12D01E00E10D11F21F10E0101FF20010001FF10F1F01FF11F01100E20F00F0FF1E0F01FF020001E10D0F2F02FF10F1F20F1F2001F210000FE00E10F6011F10F1FF1F00000001010000000E00F0000F00F0001010F000F001F11F100F01000000F10F0F0000000F00F1000100001F0F1E10010001E1000001FF0F10F3F01F00F10000101F100F1F00F10F01F0F1F01F10000F1011F00000000F1E1000F00011000000010001F0F000001F000F01E100001F1F1000F1000001010010A4000F11FF00E10F20F101001020100000FE01F0FF2F10E2002100000F0F00F1F1001100F0000FF0000011010011F00F000FF0E00110000F2F10100000000000D8100100FF01110000F000F01F00000001F000000001001000010FF000F00010011F0000F1100F0000F11F10F10001F00F10001F01F000100001000010F0100FFC01000F10010F00F000000F001010100000000F0F000F01000101F00F0000001001F00F0F010000100001001F10FF01FF100F01000011F100F00F1F1F0E00F0FA01F01F0001101000F0F100100F00F00000F1F000100000100000F10F01000201000F100F000F1F0000F0F0001F0010001100100F01F1F1000F0000000000F09FE2E01F1F2D3E2F001FF2D2E1D3DF001E3E2FF2F0E2F1001D2E10F2E0012E2F00E2E1E1001F2001F10E1E00F1E2FF2F0F11FF1F10F2F1FF2F01E00F3D10E10094E2EF2E20E20F4FF3D22D3FE10F10F1FF2FF1F01FF00F00F02002001F21FF10F0F1E010002F0F110FF2000010F0F0000E1F1F00F001F01010F2E01F10D1000EF5F0001F0000F1F01E2F0001E10F1F1F2F00F1F2F1001F1F1F1F100000F0F000F10010FF00F00000F10010F01F1F20F11010F00FF0F0000010010F0000000101922F00E100200F00F1F10F1100F2FF002F1FF0F1001002F20F01001F110FFF0FD1FF1F20F1F01002F20E20E3FF2F110F1E00F1F01100F1FF11100100F0F1EF1065211E100000E1101010FFF1FF20001F00FF2000000EF10F00120020001E1FF1000F001FF10F1F10E0F102002E0F111201F002DF10010F1FE0000F0E0200022FC9010000010F1000000110010F0001F0F001F10FF101F0000F1F00F001E1100101100000F00F00F0111010F010FF1FF0F00F001001F000FF100001FF0F0000109CF0000000E1000F11FF1F01F01E1012F10FFFF200110F000F1FF000000F10010011001000F0F10101F0001E111000FFFF0F1F000F0001F00F0100100110111FAE0F11FF00F0F0000F0100100F0010010001F0F00F00001F0000F11F01F0100001001000FF000000002F0100FF00100F10F101D001FF1100F1000F0F001000FF4A0FE00BF201220133FF00DE40FF10F11D1FF000111011F0E00F0111011EF30EDF0F012F12E1000F2E1EF100F02FF02111E1FE0D11ECF3212112DEF11E2EE0117700E01FF0111001F0001F0001E0EF0F00100F1F1F20F100F0001101E120FF1F0E0FF10011F11200000EF0FF1FF2F10010201F1F0000F010001F21F000F010F097FF2F0000FF0F10F000F00000110F0111FF2000000001FF0F2FF00F00F101E0F1F0110F1F3F100F0F10F21FF20001F0F110100001100F0F0000F000F100100098F100000F10000000010001020F1FE01FF000F01F00FFF01001010FF0100F110100000FE0FF0E1101102010000000FF0E00001FE201101FF1FF2100F1100000A800F10F00F2FF11F10FF1F11F00F0F00100010F000020000F0001F0F200F01000000F0F0F00000F0F0FF10100101102F00F1F0101F01F10F100FE1001F00FFF95000FF00F00F01F12E200110F0001201003FF0FF00E1F0FF100F10F0110011000011F001E1F002F10010FF001E2E2E2F2010F0E1F1E2E0F1F1001F00000F100A7100FF1010000000FFF00FF000F0F1201120000000000000000000000001F01001010FF10FF000FFF001F1000F21001000F011FF20FF000000F0F000010F010543FF0F1F1C21300000121102E3FFF01EF0FFFFE1F1101F2FF0200012F0FFE100100110112EE0FF1F21F10F001001EEFF2EF101110F3FEF0FD0FF020F12EF11D840003110100E00000F010F010000000FF10F000E00FE000101012001F100001000001F000FF010F11000001F10000F00F01F0100F0F0011000000FF011F10006700F01F2F02FF100E12F10F0E0FFF00F121F101231101FDFE00000000FE0F0FF121E110112020FF1FE0010E100EF1F20F1FF00F22F1F100F1F010011EFF011058000F1021EFE200FE1101012D10F14FF0FE00FFF10F030310EF0F0FE1FEF10F0210210001F01F31D10FF01FF0F0E0001D102021CF1F1221F2F110020DFFFE0286EF000E120F010121F10E1100000F1000110F00F1FF100F1100001FF10F00000F0F10F011010F11F11F100FF00101F011FF1E00FF1000000111101100F1F000AA000111110000E10F001E00000001F0000F010110FF0F10010010FFF00F00FFF10000001F1F01011000100F10F1F0FF00011000FF0000001101001F11F01100CFFF1F1F0001F1F1F10000010F0000000000F0F00F00110F0F0010010010F0001F00FFF00FF00F00100011110000F0000100000F0000F10F0F00F1000F000000680F10F1010011011F110001E0E0F02F01EF200EF01000F01FF1FF202F100FF0001110FF0E001101000E0FF112F0F0E11000000DFD0001013F0110F101F010F1A60E0E0F1101FF10FF10110F20F1F201E100FF0F000F0F20001001F101F00101F0F00000002000F01010100F000FE00F00001F10FF0000011000F1F010000011A7F1100000FF0F00000F011F0001F00000F00010F00FFF10101010FF011F1000F0F0100F01F000001F01011000000FF1000FF00F10F002F010000001F11F000FD500F10F000F010010F00F10F2F10FF00E0002000010000010F00000010010FF001000F01FF10F0001F001110F10001F011FF0100F0F1FF00000F001F0011010841120F01FFF0000F00EF110F001F001010F0101F0110FF01F00101110F000F11010010000F100FF000000100F000001011F201010FEF10101F1000F100F20E1CB11000001FF0000F000001001F110F10F00000FF000F000000010F000100000F100F101001FF1F00F01000011100F00F0F1F00FF10100001F1F00101F2001009FF01F1FF0F0F10011E00000F1000F100E1F1FF11F120001000000FEFF00F00F1000100F001F01F00100F2FF00F10000001000100F00100010E0F00000000001D81100002F011F01000FF0F000100001F0000F01000010100100001000000000F00FF0F0000F000F10010F01FF1000001000F1E00F01F0010F1F001001000000AA0011EF01F1110000FFFF0F001010111011F0010FE00FF2000F0FF00000000000F100F100001000F00F01F0F000F11F001F0F10F2F10000100E0E0F0F10F00FB310F11001F1110E00F00F11F0F10F001F10F010010FF000F1000011F0000F1000F2001F0F1F0E01F0F00F10000111F0F0F0001F0000F100F11F1F1101E2F01FB61F110F010F0010000FF000D0000F1F2F1FF1E101012000101F0000F1F00F1F00F00F0101F1FE1F101000F11000100E1E1F02F1021F1F0F0F00F00F0F02F011741F1D1F0002F1E00F2F2F0112F001EF01F03F0F2E3001E1E2E100FE3E2F010000E2E0F1E20E100F4D1FF3E2012F01010FF0F11F212F000D00F00101F2F01110DA0FF00001000F0001F1F1F000101F1F00000F01F10F01F00001F11000000001F1F00F1F101F2F00000001F10001001001F0010F0F0F000100F1F0F01F01F100BE000F0F011F0F01F1F00E1F2F00F00200EF2001000F0000000F010101F0F101000010FF1F10F1FF1000F10101FF01F10F001F1002E1F10F2E11000E1F00F0F09C000FF1F10001101010F0FF00F1F10F0F00F0F010F00E1E100F00F102F0100FF1101011000101F01FF0E000101F1F00F01001FF00000F00F002000E0001010098000010000F0F10F0F0EF000FF1111F20F010F1F1E0000F0011F102F01E1F011E2010FF2FF1F00E0E00F1000000020101FF2F1E101100F1FFF00F2F00F2F001C5000010010000F1F0F0FF010F1F1F0010E1F110001FF00100000002E1F000FF1FF010110100F1F1000F1F0F0FF1F1F1101000000F200001F1F101F10F100F007200101F0101F1F100F1011010000FF1E1F10020FFF111001111120F0F0DFFFF1E10E1F2EF10F110110F2F10000000000001F1F1100EFE3E2E20E1E102F0E00F741FFFF200103000000F120F11001D000000E2E0F3010010FF2F1F1F11F1E0F10001FF10100F0010FF01F110F0F10F00000000011000FF0F0F1100000F0F000E96F1000100F1101100000F00F11010101F20010F00F01F01E102F1000E000F0FF01F1F0F0F00000012F1F0FF10F1101F1E0F0000000000001111F1F0F100FFF0B7001000F00000100000000F100001F1F110000F1F021000000111F001FF0F0F1F0F00E1F0001100000F0111F11010F10F100FF0FFF000F010100010F1E000008C1001F0F0F10FF10F0E20010000F0000E0000F00100201F011100F011F00E1E0FF00000001000F00001000F11F01011F1F1F0F100FF10100F11011001FF0EFF79F00F010231FFFFFFFF10FF11F110F110F00F010FE101F0FFFFF0102F1011F00001000110000000FF002000FFF1FFE01021FF10F00FF112F010010000F11F00980020FF0000E0F1FF1F20FFF010101000F10F0010000001EFFF1100F010E0110F10000FF00010E00111001FF010100002F00000000110000FF0F0F20101FF10770F010F020010F100F000F0F010F00E00001021F100FFF010011010FEFF020F000F0F11F0F1F012F00F00FF001E22F0FFF11F110121000FFF00F10F2FF00F1F840F0F011101F012F100001000010FFFFE0FE00210011F111001F00000F0E000010F001F2110010F1F0001F0F00EFF100F020EF0F011201F2F1F10F10FE0F10277112EF02FFF000100FF1FF110F011111FF00FE0E011200010211D110010000000000F0FF0F001F0F000011F0121F0201E0000E1FF0E011FF10F0F010110E00078001000101000FFFF1000E110000EF0F020110000E0001010F01000F100000010101100F020001F1F1000100EF1F2EFF0E0F00F1E101F1F10100100F1F201218CF00FE0120F200F100F0FFFF1F1000F0F0F11EF00201100000010F0000F001000000010F1F001100F001F0F0FF01101021111000FF01F20E10001F00F0010109D100001FFFFE0F00E000FF10100110010011FF0F0FF00F2100F0F00110000F001F0010F000FF1001100F10F1000FF0F0F110000F00000110F010100000FF0105800F0100F11F000000FE00E1F00F10011EF0000114111FFF0F1000011014FEE10D003FE000E0F1F1F1FF301011F00F0F01000F0100000F0100F0F0F021F10F18800001F0000F001F1000101000F0011FF01FF000000F0000100111F01F1E201001F002F2FF0E00E11F000E0F010F0000F100FFF000FFF20020F0101F0100F0E820F2101E20020F1100010001000F0F10F00FF00000F0E01001F1001010FFF0001F1001F11F20F1E111F0000F0FF0F000010F0010FF0010001F00F002F0010F083110F00E0000F12F00F2FF1010F11110F100001F010001010E000001F210F0000F0010FF000F100FF1010201000FFF0000100301F000E0EF0F1001000F11F017AFF2210EE0F001220F201F0FFFFF02E120010101F1FF0FFF00100210E01000110E01F0F010110E1000E1F0EF1E0000FF110F1F01000001F01100030F00000026FE1EFE00F0F0F2FFE30F1F1201F0001F1FF2E00DFF2F101200003001E2001F01FDF1F0F0010EF100F010101110FF000000F00E010200F12F030111FEEF0F00056E0101020000100F21F002F02001F20FDE1F10010FFF000E1203EF001F1FF120F0FFFF0FF12FF0F10E2111F101F0011010011E01FE0F0F02120FFFF0121F02FDB000F0F0000F000F000F0001010010F000E0100F0000101F0100F010F0000F0F0F000E01F0F0100F2101010000110000000F0FF00F00010010F10100000F00076001100FF1FD10F110F1FF11001110001F00FF1F0100EF0F010F1FF1F121FF000E0310F2111E001FFFEF000E21F1F11FF120F02F1022F1FF0F000F00FFF21015700001F0101FF0EDF2E1002F0001F0221F1010F000FFF1FF210E21EFE102F120103FF100001FDE11DFF2FF002F1011F100110FF012EFF00F2F20F020E101F0F7901000010001FF01FFFF0100000F0EE0111110100100E01F1120F0F10F11FFF001FFFF0020F01F2F1101FF1111F11010E00FF0001F00FE000F01FF020002FF05A0F02D0E01F02FE101010FF1100E000F0130F102FE1200020EEF0FE10F201F0F0E02122120EFF2F020FF0E210F2F00D0FF0F10E1200011F11EF000011000211AA1F10FFF1000F00F1F010000000001010F0F000000000011F01100011F1F1F10FF000E10F0F10F000000100001120010F00011F10FFF10FFF000000FF0010F06B30FFF0F0110D11F0021E0010F10FE021FF1011110F0EF000E0F1F04FFF01E0021F002001001E01110F00F000F0010011FFF12000EFF01E210000F120E1001F6D000F0100F030E00FEE200FF21D020EE21F0200E00F0010001EF20000000120FF00EE1F12F000F010FF111E110E11000001F000F0FE02FF01000F1E0320E00F7700F1E100011000020201F01010F11F0F0F10FFFE0000FF01F01001000E010F10000F00110111D0000010F0000000F00F10F000200001F001F0F00010FE000F97101F110010010FFFF1FF00FFF01F00001FFF10F021E112F010D11F1F1F12F1000E10FF020F10FFF0EF100210E22F010000F0110F00FF00000000000100F01F8800E10F1FFF00E01FF01F201F111F110F0F1010F0010F0100000100000000101000FFEF0E01F0210010E00F001F1200100F00F110000F111F00FD00D210F20E96EE10E020F111E00F030E21EF30E11FE12E02FF02EF30F100E210F10E12EF2FEF2FF20F02FF31D02ED12FF30D02FF20D020F13F020F11F010F00EF11EF30F00A5100200000F010000000FF3FF100F11F020E11E12EF00FE1FD110F10F21E031003F01FF11D010E02FE11E010011F02FF00EF10F21F110F01F02FF12F0210110CFFE00EF1F000F010F000000F110F21F0F0000F010F000000010F11000FF010F00000001F000000001F011F020F110E11F01F001010F00FF00FF10F010010F118C21F10EF1F0100EF1FF2FF01F001202E1F0E12F000E10D0000100F20F11FF0F010F020F01FF10FF10D10F120011E111F02E020E11D02EE12E02FF02FF10F000CAFF12EF20F01FF2FF22D020E02F010E22E02FE22EF11E12FF20D100F11E12FF20FF3FE21EF2FE01FF11E11E011D12EF22EF20E21E11FF21C02FE11E010F11FF8DD03FE30D03DE32B03DF33D010D23D04FD31DF30B22EE21E03EE11F12FF20F13DE22EF4FE03EE40D02EF00F12DE11E03EE10E030D110F10002DF20E11E02FD196D21EF2EF210F2EF21F12DE3FD13FE30F01F02FF00F10F001DF20F040F30F101F0002FF120E00000F000000010000F000EF20E12EF12E020EE3E00F00F20010B6011E000E000F01F1F10F01F0002FFF00011F2F1FF10E01F0F2F0100F000F01F1110010F1000F00F0110011FF00FF11F1000F01FF01F020000F0001F1F00F01C420F01EF11001110F01E0F1FF1F001F10100000F00F011FF000011011000FFFF000001F00000000FF00F01F1011F200F10F0FFF1100001E0010F100000F0100A30F11001F0F001F01000F0F010F10F0F0110010F0F011F111F12F0100FF0FFF002F10100F1000F0F200E2F0002F10FEF01010F010E201101000000000000F1E53011300E2FEEF32201FF2F10E0010EF2F0102101F1FE001FF10F02EEF00000100F01110010F1FF0E3E1103E201F10F1D1F01E0000F010FF01F11031000F1F3F7DF00EF101F110011F00EFF100002110F1FEFE0001F00102F1001F0FF1010F01F2FF1F0000F01000000FF000000F10000102F000000FF00100F000102F2F21F1BB10F000F110000FF0F0001001010F1101100FF000F100FF100F01100FF1F0100000000E0000F001F0000F201F1F000101F00F1F0F100100F1F000F11F100F00A90200FF10F100100F0001000010001100F100010F10F000F0F00000001F101F00F00101F0FF0E0F10000001F201000F0F1F1010F1FF0F00F200100F01F00000790010F0F000F0F1FF20100021E01FF20100F0101F0FE0E00100F010E10201110F1F020FFFF11012E000000F001F01110101F10FEF000F1EF00E10100031E0F078000010000000110FE11020EE10F00100F1F1F1F0FF1F0D00FF2100F002F100E01FF2201100001F11F00F100FFFE111E210000E0000101E1101F000000001F07800000E10F100F11002F0F0EE2020001FF010F10EE111E2E02D1F11FF0F11102F0FF2130010000011F11F1F0E0011EF100E01F0E1F1F02F1001FFF00FE11FF1780021E0002FE1F00F00000000100000EF0F0F111F00F0010FFF000F1F011001110F00E02021F10E1F000000020F0FF11FF001F1001F1F0200EF11F00F0F002076F10FF2001F1FE1F10F1110E0FFF001000F01F00200F121000F200010FF0FF0F102FE0F01021F0F0011002F00000F0100000000000010F0F10110F20FF111105ED00FE1110FE21F10000E1F1FF2E11F112FF1DF000000FF120111F00F2EF101E0F0EF00F03010011000F01E0F1FF0F300E11000F0F0112F2EF2F0012EE0EF0268E001001000010001E00FF1FE100010110011F1FF1010E001F00021F00F11E0F000FFF001E00F000010F00F0F021120E10F1F2F01F10100000E0F100E0F2F1064F1F00001FFF21000FF1001110101E0211000FF2E0000001F0200E00EF01002F1FF110001F02000FF1102FFE00FF20F1000011100FFF0011F1F10F100E0000078010000100F1E001FF01011001FEF11F110F000F0001F010F2FF10100011FF0000FF0EF1FF0F111100100F01E11F00000F1F1FFF00F2F0F1FF02FF012F0F02064E111111E00EF000F11F0211F20D0000FE00F000112101100F0F10F1F2000000FEF1F0201F0001001F10021F10EF000FE00F12F020F0E1F1110F01001F00000571F10EFF00F100E050F2001000101F000F0F2FF3E20001012DF1FF10100E20111ED10FE0D01F0120111EF0001012FFFF1112D0F11F00E1FF1DF11011E00011068100000F000000E11FF0F12010110F0000F001FFF1FFFE11101F1000F111F12020EFF20F001000011D1021F00F101F011FF1E1FF1000F1F00F0E210100010F16C0E0FF2F000E0F20101F03FFF000FFF0F11F0F1FE0F010011100012D0101E00FE00F21101001F01101F001F00F0F10F11F1001F001F0F01E10F2FE00000010205C1F0F00D0F0010000021F0E0E201210F10F001FF0F0F000010F1F0F1010E0011101FFF1F1001F0F001011F11102D1FF2FFF100FF00F10F112FFF100011FF00F58000020E01F1F20F1E012E1E00E10F10D0101F2EE11E00F002112000EF2DF01001E2E2E010002D2D00300F01D1E2F2F002F02F2FFF10001E12E12F11010F2FF681F0000003000F0E1F000F0E1002F00100E2EE1E1E1F2F301E00030001E2F001101F0F0F1E1F1010F2E0FFE0D01030E10F101100FF1F00EF1F110101000F000830F1001F2F00FE10F000010111111F0F10F10F0000D100100020000F11010F00EF00100101F010F1F0010000001F1F00F0000F110000000000000000F000F1F5601000E010F10E1F11010EF0D020002EF10111001100000EF012E0110F00E00E220F00002000000101E02F0F011F00D01FE0012E12001FE0E10F2120F1F002F7AF000F0000F10000FEEF00111F1EE100111F0011101010F0E0001F201F000FE2F11E01F11000110000F00FF10000FE120021F0FF1110F0FF0000000F01001F15822D0F010020112F00000FF0DF00EE13F100000E101001F12012FD11E1F1FF0F122E0E010F0F0F1FFF12E020010011FE0101001D0000000DE10FF201012F101991E020F00001FF0001001001011010FFFF000F000F01F100011F0100100110000E0001000FF00F10F001101011FF0F0000F0FFF11F2F00F1012F11FF10000FF6D101FF10F0100F10F2F0F1001F1FF0002F01F000D11E2E0002FEF100F10F2F010D21F02F1E010FE1F001101E3F0FE00110F12000FF0E01F01F00F1F000111105FD0FEF0FF1010201021E01F01F1F1F0101F1FEFF0FF000F20F0112F03E01F20F1C000F0012D0002F0F0000F1F0101E00FD0F101301030F012F0FF1D0000002058F1120F0FF00E201F01EF00E010001F0201F0F001001001F0FF10E0F01F0000011F00FF2021F1EF001F0F0010021F0EEFF301002FFFF110000FF21110E0202E780F10F000F0002000F1000F00E101000F01FFFF0011110101F10F101F120FEF0000F0001000000000FF0F21000000000FF00F0011F1F1FE011F000FE011D10193001F1F01F100001110000F0FF0F10F1F1F01F001F0000F0F10000000F1010111F02F1F020000000F0FF1001000F02FF101F10F0F0110000000000000000F105801F00F1000FFF0F12000EF0D1023E2001D1110FF1FF0D2E1FF20101E001F10F00111002012FF00F000000000001112FF0E0F0011E000000E1FF12000000000580E11E1F032F0F1FFEE2F0110E01001FF2EEF22110F01D012300FFFF02F1F0000F100FE201F120300F0F0EF02FF111EF0000F0010000F0F100F1111F11F02D0480F010F100002002F0200FF2101E000F11D01F0E00F2001F0FEF020001F1FE1F2121F3DE20FE0021F1E2EF4FEFF00FEF02003000011000FFE0FD2FF4E20F2F058F1000E000FE0110010F0E12F3001102E00F001F012E00210FF000F1E30F120F0FFFE1FF001F1FE0E21F3011010011010FF1E1EF10000E1F0100F00100220006DEF0F1002FE0110F00E000011121010FF0DE00102F00F0F021110FDF0F10021E01F0F000000012000F0FF003F1101E1FF0FF0001F01F0000F0100011F1F10E067F20012FE0F100000F10001F0F0100002F0FF0100102EF10FF100F0100E2000FF2FE00F0FF0000102F1120F100010F2E00F1F000F11F10E11F0D0110F0FF1E3462D12B21E2FE21F1110012F10F11E0EE20E100F21F211EFFEF2F021F000011F1EF10E20000F2F12031EF00C1F11F1E000F11212DF0F2E0030E001E1F011F11E691001F00F10E0F01011F0000003F1F01DF0001F0012FF200FE0002F11F11FE1111F0FEF001F00F100000100F000001F0000001F0000F1F1F0F00010001FD00E52111121FFFFFF02210E0000F0F10E00100000F002000D01F0011FF01001D1F0301E0F0001F010110F1003F00010F0F020001F00210FE0FFFF10FF0FF010111E52F1101112F1000000101E200FEF000F12F1E2E02FF0EF20F121E00F1000101000F1000000FF00FF1F200011FF0FD101030EF0201100F1EF3F010121FF210E0058F01F10F01000FF100100002100020E310EF0FF010F101101EEE010F0100012F0000EEE021FF020FF020F1012E20111EF0FFF12FE22F020FFEF001F00F0F210470E00F4000F1123FFFF000121FDE300FE0000000002FF3D13F2110E0DF0F2030FF1002F00F0F210E0010001FD1D1010FF0100F000021D100FC013F0100E1F01460221F1100D00FE100E21F1E000FFE20201101F00D00F0E222011E121E031FF0FD0EFD02F20012120E0F00D202011F2E1E0FF203FF010F0E00E213D0FF100115AE2F00000F0000F101000010FF0FE1F1FF3F0DF10000201FFF0211FF100200130E3F10F1EEF11E211FD00FFF1F01FFF00E2113000031EFEE01F2001F100020E59103FFF0E0001F1F00C000F021E1E0000F4E10120011E01FE113100011F0E00FFF0010F12FF0FF0E0F1210011100D00001F02E00F10000102E0F000000FFF0E43E21FF1FF10F10F02F01FF03FF1110F000122FE1FF0EF22F12000FC12F10210F11E0F10EF00010FF12DF3E1E12110F100F01021E1E01F301EF21F20F1EEF0FF56011F0FF0F020F20000100F11110D0FE111F000F0FF3F001F10F011F1F010E0DF2F2101000100F0F01F1010010F0000F0F2FF2F1FFFFF0102E10E0F1E01020063001100210000F10F010000F100F01121111FFE0D0F00110F01F1000F1FF1F00112E0F1F01F100F00001F1000001110F0FFF02FF000FF110001F1002F1FF0004C1DF0F0D4F12F101FFF101D3EF0010011E21FDF0F22030EE00230FF2E110D01E1001E0E0F0F01E3000F111F30E00F00E2F0002F2FFFF10011001D01F13F1E1F6AFF0000F0100000F01FF2101E01F0001F11F001F00001F10E0F100F0220001F1E100F13F2E1EE101E1F00E01100F0001000E0000F100001F00F00010001FF1059F1F10F001E1F0D2FF01202F0000000F00F1FFF0F00212000001F0FF002F0F001000D1F001101F0E0FF0011102F01F01F1100000000F1000D22F000FF10111F5C02EF1F0FE01FF1D1FFF1FF41F202FF1F0F10F10E1F000010E012F01010F0000F110002100EFFE0002F0EE1F1100010110F0001F2F01200F0100E00F1030F2F5A1003EFEF00F01FF1F000010001002F0F0F00010000E0011101EDF01201EFEE20100111112FF2F10F1F0FF0100111E10F00F00F001F01F0010F0001F0111F017A00E0000F1000FF0E1110000001000000000000000001F0111FFF0000010F0011F1FF0E00FFF0F000101F12F0110F0200001F0000110E0F0E1F000101F00000551F110E0100F10F0010110120F111FEFF00010F1F000F0102FF00010000F20F010F0F0F0010F1F2F1010E11311F00CE110111EFFF100F010FF1F010000001F24B1F1FD0FFF02E201FE2E0100F100F0111212FD121F11FED0DF01200E211E10F100000000F101002FEEF2100E000E10F111F2000FEF0110011FE010EFF1020334AE00000000000FFE11FF10F31012FEF10001F0011F120EEF0EDF013120011FF00F101202E0E00F0FF0F10E2F3F100ED200222EF0FF2F200E00F1FEE11D2113F571E01F200000E0F1F00F0002F0F020F0010E1FF000F0F120012F2F11F2E0E010010011E000FF1D1F00E2F200F10F211FE0000120EF1FF201FF1E012F1100001393E2000FD31F03FE1BDE3E1FE0113F2014F494DF00003E0F00301C100101F0B302F02F2D1FE0F00C60000F1DE131F102E2F10F4F01E2DE0F1D1C3111C3022EF681000000FF1F1000000E0F3F1FF2F101F03F10F1E11FF000F0F1010F000F0010000111210EE0F0002F10F10E01F02FF10000F20000FF20F00F00F01101F10025EF0101F00FFE2E00110EF0F001F01F01F10010E0F01111101F0FF000E02F00F0EFF202003EF00F00F1F1101000FF0F00001F0101F100110F1FF002F11FE0EFF5521F1F100111FF1E00F00E00FE1102F1002F1000000FF201F000F00F00FF2F0030111FE1F00FF00F001E00F01FF1100001F1E23E2FE10F2001F01000F00F20058FFFF2DF031F1E0F1121011FF0001F11E1F1F01F00F10F101FF11010F01FF0211E0F02D10F0022F00E01001E111F0000D000002EF001000000000000002F0005A01FF0011F10002FD0102F0E1EFEF0020FF2E1F21100100F311F02EF0F2F10F00002E200D0FF000E1F100F100F1001FF110012000F1000000101ED021E0F0EF55100EF0100100F101020F1F0010011E1F0000F0F1F2FF10FE1E10FF1F01041F01F00F110FF202F00000000D1001F0000FF00F010102000F0F201131010F01E15CDF001E1F1201FF20FE02E0030FF02010F102F01E0F00D1F0F01000FF1FE1F010310F01E1E0F110101011FE1010E00000001F0100F00000E2F100FF0F0F1011580110F0111E1FE042001FF020E0FF1EFF0FFFFF11F21F1F2F102000010001FFFF00001200E101012C2FE0F211000F1F0000E1E00E010101F01F0011F300EEF0543F0201F1000F10F0000000F100000200EFF011002010F110F0FE01F00EF001F1FFF1FF00122F2F00000100E110000000F1F0100000FFF010001FE000FF2F1055F300111E00FE1D2102E1F10FF0FEF010202F1FE103F1001E0EF0F03D12E00220100FF1E2F020000F0E01101101E000F0100FF1001F0010F011110E0F10F0004610FF02EFD212E13E1E201E11FF00F3F1010D001EE1211000EF01E110F10F1E101F00FF0102F1001E0D3F10010102F11F01E0F00101F02E003FE0200101DF03790F0F01011F0F000102F1FE00F0F1100F00F0001F10FF01020F100F1F0100F100020F00FF100010F02F10E1F00F1000F00EF031F00F0F00F0F000F000000112650000010F101F11F100000F0100FF0000010F0F0FF00F1001E1F0101101002E2F0F02E0000F000F1100001100000EFF102010000000000FF1100F0E0101000F780000000000010F000FF0FF0201001F001000F1F100202E22F0110E10F000F00000F1F00F2FE100FF000000002FF0010001F10E1F0001F00100F110F0001E116AFF000F10000000012FE1F02E2F20E1E2F2F0FF0000E2002F1F1131FFF0F1E0101F1F0F000012011FF1F1F0F10E0010F0F02E0110F1E0F0101F10F2F00F0E10390200F03DFF1500DFDF20F000F00E123B110E12E3122D2D0FC3D3022C3FFF11C0E0F14F52E1E2E2EF1D1F01F5D1F10F4C5F1CD3EFF11E1000D6D30E5B2E201F4AE1F02F2FF123D30E0D3C2FF2D3F1E00F1E10F1E2E2013C1C100FF2F11100001F00EFD402000F1C0120C0F4E1F03B2010E2F3D2F21F4D401002D2F2E01E0C2F68F100F101000F0F100002E3E1101C2E0000E201F1F0000F1F1E10110101E1FF0F0F2F10F1F2F1F1F000FF0E4F2F0FE3E2F2F00FFF001E3D30FF02C1E2E210204811EE0F3F10200F14E1E1DF0E2DFF310010000003E1E0000020E000E0FF1D4E3100F01F01E00F1F30012FFFD2DFF0032F010111F10E0D2F00F200F000EFE13167100F0E0101F1E10F201F01E0F010200FF0EF2E0FF1F00202010F0F1F0022D1E01FFF100011110101110F01F0F00FEE10F0F02FF102F0120E10100FF02E00F055E10F21021F0FE1FF201F0100F01FE02200F01FE102FF1F2001F0000000F1FE201220FF1E0F00F100F10201101F010E1E11F2E1FF001120EF00FFF102E2FE1F591F1E0F022E11E20FE20F101E00F2E1F1F01F2EF00101FF110F2F3C0E02E200000000F000F0201000F0F1313F1E0EE0F001F22EE2E00000001F010F010101106C0F1FF0F1110F111F0000F0F10F00FFFE1E20F10100F1001F000102120F1F01EFFF0F0000000001F001100E100F0E00101001F1E001002E2F0011F1D0E1F00F6710F01000F0F01E1110F010F000F010100000000000F0F00E0F10011001F2F1F10000F00E3001F1F0F00F0F110F1001FFF0FFE20F00202FF101E101110101F149F02E1FFF0F1DE223F1D4F1F00F1F0E1011021120F000FFF001FF011FE0F0EF012E000F02E2E200F00F4F4EF001CE0210112E01F1110EFE0E01FFE2E100210E65F1F20010FE00FF1F010FF0220110F0F1F201001F2E00E1F01F100010F0D1002D2E02E1F111100F1001F011FF2F2F02E1D0F00E1F0F0201010F00101F0000014FDFFFFE110001F2F001E100F01F2FFEF21010F00F1001F00FE100202020FFE0E1F2100F0E110001011121EFFE0F3EF10F0ED3E102100F1F2120E1D1F10F1F1F48000FE3CF111E21102F200EF3F00FDF0F1F10001101010021F0001F10FF11FF1002F12F0FFFF10F201FE2E01FFF0F1E1F12F1F1F00F20100FF0F10002010E0E571001F101E000F12F010E0FFF0210E0F111101E2E0F10020001EF0001FE2F10000000000F100FEFF2210000F0FF0110010FEF21E10E112E1F20000103F2F1F16D1F0E10FFE000010F1F11F10F02F1F2F01F1E1F20F1D0000010100E1F00F1F1000E10E11000F100012E0F0001F00F000101201FE20F20F2F0000EF2E01010F0491F20201FFF0001F102FFD002FE1F021E21FF010FFF021F21F10F0EFFF1F010001F000F1E0FF1F1F2FF1F1E2FF1F30100FF0F201F10F2FFF0F110111EFEF10144D1012F3E2E11EEE20201002000FF0F0FF0F0010FF03D2130F2F0EFF1E03F211EF01000F0F1F2111F1F001F00E1FFF1201F0FE21FE10E01211001F0011FF2FF571010100E01F1002FFFFE1EF1E00011F20F1F10000EE112101F10FEE0F30300FE011EE01E011210F0F011F2001F1000F1011E0F111E00F1E011000FFE1FEF1548013F0FFF1010F0F3E00F21FF0E1002011F10D10D0F100100F0001E2F20F001F02EF10F10110FFE000F21F1E20102FF1F100F0F0CF0F2022001F0000000E10158000F10FF2D100D2DF004D1F01002F010201FFF0F010001F111001F10030F1EF1E100100FF0FD1001F21001001E1F00200021F0DFF100003F1F1F1100E00FE15A3F0F1F0F2E01E1FF0000000F21100000F0F1F011F10F0F2E1012D10110F02E1E020101F0F0FEFF0011110FF1F0210FFF1100000F00FF102010E1E0001010E058F00112EF001001111E00E2F1E0FF10002E1F02F000F1F0F001001F0F1E2002F014F1FE0F0E2E001020D1F000002F0F111101E0E0002F100E1022E00F1F120F6C00FF100FF1FF00110E0000F1010F1F000101F002001E0FF0012F20F000E000000000F2F00F100F20E2FF000F1F0FF02F10F0F11F1F10F00EE00000211000F063E100021F00FE10000F20010F000F011101F0FFF11201E0FF002E1D2E22F2FFE0F30F2E0F000F22F001100F11100F1FFF01010F00020F10F0F2000E000E03015700FF11100F1000002F00011FE012E0112F01F1FF0EFF100110FF0FF100102FF2FF000000112D20E1FF0E0F03F0F10FF01E1E01F130F10FE20101002031EF01580000F1021100FFF00F1F001F00002011020D2FE0F3E1F11E2FFE01E1F01E2E20F0E1E21F20F101F010000000F000F10E3F00F0E2E20D2E02020000F0012E316BF0FF01F220001EFFFFF1010FF01F2000F1F100011010F1EFFF2F1001F1F01F0E0F0F0002F100F10E200FF0111000F110010F00000FF0FFE011211F0E00002F56F1E11E02EF2FF0F10100200DE001131C10D0012120010002000010100F11EFE10000101F0F1FFEE22000000FF00FF0E21212201F02FF1EE11F11EFF101E0FF640102F20000000030E0FFFF0111FF0F01101F10F10000F1F1FF101EF10101020FF0FF200021F01F1101EF0E1F2100F1F0F2002F0FFF000100F1013001FFF0EF6910212E00E0FF101011F1FFF0F010F0F21F1F0E000001110F1E010000E0001F010F0110100EF01F111F200000F000F1FF001F0F0000100F0FFE21F2F01F010147F3F100F012111D0FFF3E1E0011F2F1EFF100010FE20B0013E10FFD2E201E2FF2E1F020E010220120003FC0001200F1E1FD1EFE2003FE2011E30F000E0EF10F6201E112102010FE00FF11E210EF0EF010010122F1E0201F200F0FF0D1F12FFFF1F21001000F1F1FE1110FFFEF20110111F101F1FF1F1000000001F1FF1FEF115300F10F1F2FF102F00103F01F0F000F21000E020000000FF110F111F2FE0FF10D2E21F001F01F101F0001000EE10EF2F2031E01E02000001E1000D2010FE20E533F10E1F00211F01000000F10011FEE000FE013F3002FE00111E0FFF01F2E1FE41001F00021FF00101000E10E01FFE10F31FF1010E10F120F20D21D2FE10E1157100100110FF100010F002E1EF0F100001F00F1000F10011E00010E100F0001E0101E101FD20D31F22E000F10E2FCF2E20F10D20F3F1011E111011F10E21F1D4710E2EF0130320EC1F01102F0FE1F03F10002000F2D001011F2EF1F00001F01F11F11FF0F0EF3EE2F0F1F01F000F100EFF1002F202F200F1FE01E10E2F1E000562001F0EF0FF30200001F001F3F11D1F0E1002E3F00E31FF0020F1FD1F00100F000002FF3CE2B12E011031F30010FF0E0202DF1F0FF20D31F10001001D0EF2F561F1112010F001F01F0F1200EF1FF1010EF10102FF2100F11D200E0001F1F001010F1FE0FF0100F000000000D30F10000F1E1010E1F002000D1F101001F2E014BF300DFF000000CFE20211F20EF1D111201011E100E00021EF0D2F12E01D0E13F201F00EFFF2021EFF01210011E0E1FE00E3F13E2FF10F0011F10001F0111FE57FE0211F10F1000010000F11000FF0F1000E2001110F0DF001210E000FF20200001D00F0F031031DFFF10F1103FE0FF1F02102DFFF11FF1001F01FF00F1101047100F00000102F00F00001000F0D00FF00F141F1010F000E120011FF0E0FF121E01E10D011E0111F20E1EF0F31E03F11F002E00211000D20F201FE01102DE005D0E01EE0F0F01F20F100F000E200010D1110EEF1F01FF210FF13F1F000010F1F2E120F0EE0310F1000F1E1F012F01F00000E101FE100F01121F0FF02F1F00024CFFF011FF20E2FFFF1001F01F114FFEFF0000000EFFF301E10E0021001000000F0010F101F1F11E000F10101E0E1F31E2C101101FE0D22F1F2E1D0201F100126CFFFF0000010F100F10F010F0000000F00100E1001E1FF1000010F00001FF11F2FF00101E00F000F001F11F00EF01101111000F1000000EE21F010FF2F1F0104632E00F0F00F002010FEEF00202F00E30011132FEF00F022FE0FE0100FFF0011000000E11012102EF1EEFF000020000001F1210EF003E00E000D02000F2121F4C010E0EF2210D00E00012F0001FF101021F00F11F1000E00DF01000012F00E2F1E101FF0F2F00F0E101002F1FF00E0202F1F11FFEE202F01F0FFF000110101F78FEFF000010001F01F10101101FF0F1000F10001F10F1000001F0000F001001FF0F0010F0F31F000000FF1F110000FF12001FF0000010FFF0F010E10FFF1E107400E21F20F001010F0F00FE03F0010F201E00F010FF0FF02000010F0F010013FF200F1FF000F10F1011F011001F00001011EF1002F0F0F00000012FFF1F00006AE01000F0000001FF01F1010F0F01101000001E01E02FF2E0000110F0F0110F00001E0001F101F0100F2101110E000EF2FF11F0FE1FF010F1013010F12E0D015B0000D10F01F00000000F10E0FD30000F22F1E01F02F10010010E02FF2101FF2EE21F01120CF2FE10F0001FE2E0E0E13E1F1F3F110011F201EF1010D3FF0FE1781001001F1EF1100101F001E11FE0F01EF11F2FF2F11011EF1E00F2F0200F20F0001100F10FF1001111FE1FF00000F10E1000001F00FF10110F01F00E01201F7CEF22020D2FF2FF0F02E01E00F10F101F1201DF20F010FF0021F101FFF00E1E1F01F1F000F1E10F20110E1FE20F1000011003E01F0F000F12E1EF3EF2E10F206AF100F011EF22FFF10E21E1E00101220F0F01EF0FF120E2FF2FF2F01D00F01011001FF0F001F00F10F00001001F01FEFF12010010000FF000F1110F01F000F157000F0010010EF3EE1E21F10EFE11F1F21D20E4FE32F01010010DF1FE30F1010FF0010F0F110E1FF0F0101F1110100001E0F1001FF20F0110FE1E02F200E10078000F0F00001100100FF0FFF1F01100E20E0FF00010020010100F00F1EF101FE2FF0010212F001F00000F11F10FF1F1E11F200100F0001F0000FF2000F0F0F0660F10FF1E11110010FF2000000000EE10001F000EF210F10100F000300FF1100F01110F0F000001F11F0F0000F01F1FFE00F011021F1000001022F0FE0F021E69F00FE1F02F200000F0F200F1FF101F0E01F110F0E1001F2F002F01000201FE00D0100F0FD1002100F1F100110F010FF12F00010FFF002000F0E00F2F211000", jumping = "18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80000000000000000000000000000000000000120FEFDEE01322211FFE0F00101000F00F0100001000F000000000000000F10000000000000000000000000003800000000F00000001000000F0010001000F000102100E0E01F0000F01000001100201EF2D12EEF01FF20000000000E0F000000201000000000000010F0000015D0211101100F0D0E0E211E20F010F20103F0FFEE0FF131120201FF1E0000100F0F0E1E0011010021F00FF001102000FEF000000101F00102011F0000F000101D0FF000000001F00001001F00EF0F001010011002FFF0FF00F00000E20E000000010F10F01E02F010F0001F01F1F02000000F1000000000000000000F010000290F0000000010F1F000000100000000000F0001ED22000F1E00002FF20120010E00E01F00F0FEF11F102F100100012D1112B142DC12FE102EC01DF01F1003204900100FF1021D51BF0ED21FF10F21FF0100010010001F10F10001F10D00EFFF00002201012F0010000FF0F000FF010000100000010020FFF000FF00FF0001002300011F111F1000010000000000F10F0F0F0000000F00000010000000000F010F100100010010000000100000000010000000F0000F0000000010F1000000001900F1F001001F010F0011010F01001F1F0000000000F100F10001F000100FF11F100010F001FF00F00010F00010F001F00000F10F001F10F0000F0000001F001811F10000F1F00000000F0001F01000000F0000001010F0F0000101000F010F1FF01F1F001F1F00010F000000000000000000000000000F1000000000000000180000000000000000000000000000F0100000000000000000000001F0000000000000000000000000000000000000000001F000001FE20F1000000000010F00180F10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1F100F1E20E41FF5DDE0F0311E002800010F000F00100000000000001F000000000000000000E121E00F011FF10001F0F1000212F0FD41EF1E0FDF0FFFF112F12F31E22D30F0F4D3ED20F10F1D301711EF02F1E1F20FE12F010F0011F2DF3D0F2010F10F021E0000000F100E23D11FF01F00010F1F00101EE200F2F1FE110F10000000000F10000000000100F00018F1FF011000000000000001F002E1F00001F000F0100000000000000000F2F000001F00000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000001F000000F1F100E02000040D3EF0F1F0ED33C30D60F8233FEE37270110F0E110F1001F000001F0000F100000000000000000000001F0000000000000000001F000000F0100004DA14F01F22FFF0F11FF1100F0000000000000001801FE11000001F0000000000000000F010000000000000000000000000001F00000000000F01000000000000000000000000F1000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000F100000F2F00000000000000000000000000001F000000000001800000000000000000000000000000000000000000000000000000000000000000000000001E01000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000001FF101F000001FF100000000000000000000000000000000000000000000018000000000000000000000001F00000000000F01000000000000001F0000000000000000F1000000001F0000F10010F0000F010000000001F000000000000001800F11FF10F011F110FFF0100000F100000000000000000000F11F0000F010D31E13EF0F11F01F00001D110000000001FE22ED31EE41E01EF20001D10102FE2182FE3E002E011F87ED41D14E010F003FE000E110F0100200FEF20120FD10E11000F01000F1000000000F10010F00001F000000000000000EF30000000010E1018F1000000000000001F0001F000000000000000000000F10000000000001F0000000000001F001F0001F00000000000000000000000000000000000000000001800000000000000000000000000000001FF10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000003924E000F2F00F11F0F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", objectkick = "18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA0000000192AB0000000201D353200000EF1FEFEFCE1141100000000F01F00001EB24EF1011E0110FE02ED0211FEF2FD00FF3100DD2110F223101FFCF10E0020E0320E0010FFF01FD0EF44FDCF0001221DFF1FF01F4421DE110E0100EEF122010110FFFE0EF0120001100F00FF000000131FED0000100210FF12010F000FFFFF0102221EF10F001012FF01FE0FF0112210FF00A910E0012220EFFFE0F1F1010112FFFF022000FE00E0011110DFFFFE0001100F121221FFFFF0FEF1100110100F0F100FF001010000120FE0110F010FFEF00111A910F0F0010F00FFF011FFF0101002100021F0F00F0F0010111210FFF0F0FFF0000F0010110100F0F0F000F0100000000000F000010020010010FFF00F0F000066110001F00F0001000000FEFFFF0021211000001100000E0FF00110000F0F00110001F0000000011000FFF0F001101001F0F000000110F000F000001001000F4800FFF0000F0011101001001010F00F0011111100FFF00F0FF001010F0000000FF000000F100F00000001000000000000F0F0F00011111110000F0F0FF0F0F0340F0010100100F01100F0000010000100000000000101000FF0000F10000000100F00F00000010000000FFFFF000110100100000000F000000001001000000028FF0000000F0000F010010100F00100F0000000001010001F00000001000000F0000000F000100010101010000FF00F00100001F1001F0F0000F1010101010F2DFFFF00F000000000F0F0F0F00001011000010000000000000000000000F0F0F0F00100100010F0000000101000000F00F00100000F0000001001000000000028F00F00F0000100001000100F00000000000000000010000000F000010000000000000000010100F0F00000F0000000100001000001000000000000000010012C0000F0000000000000000100000000F00000F0F000000000000000000100000001000000000F000000F01000001000010F000F0000000000000000000000001D0F0F00FF00F0000000000000F00FF0F00000010100101000100000000F0000F00F0000100010000000000000000000000000F00F0000001000010000000000", objectspawn = "68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020EF1E92D67C10A9E39C2C75FE67B4B76EF4996995EF4996995EF4996995EF3A87995EF3B78895E02B78895EF3B78895E02B77987B20F2D4C4C4D2E2F0000E3E2E2F0000000000F805E645D51437D41446C6E573E69A8F167A82E336D80F6C754E40706F239C61F5BA43F30904022BC4113CC1312FCE4111DC2221DD0312FCF222FED1221DEF317C9C3550AA0652AAF454D9D2460AA0553BAE355DAC1560AB0363BAE355DAC1560ACF354CAD256EAC05529CF264CAE147EAC0462ABF255CAE146FBB0363ABF25576D1460AB0354BBE156EAC0551ACF363ABF264BAF264BBE264BAF264ABF362AB056F9D156BAF362AB1400000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FF46E33417E33427C50554E6A89F079873E248B71F5E645E327E7F14AB61F5CA24F319F4022CB4113DB13120BE3211DC2221EC0312FDE2121DD1221EDF222FDE17E0AA0553BAE355E9C15619BF463C9E256E9C15619BF454CAD256EAC0462ABE364CAD246FAC0462ABF255DAD1460AB0363ABF255DAD1460ACF354BBE156EAC047EACF264CAE146FAC0461ACF354BBE255CAE255CAE165CAE255BAF3639CF460AC147CAE2739B050000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", toolgun1 = "C8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF2E01F0E02E21FFEFF3EF8AFF1F01000F1028CA1F1F100F2E2A29AF24CE52043A1E43F1D1E00C260DF1300000DD2EE01012FDD41FEF21000011E0F1020E2E010121FE01FED50E2E43B21FEF1001000000FFF011E0F1102000F100000FCE301A1F20D4F10F00E210F000FF10FF12F0D100F020FF00F1301D12000000000000F1000000F01001F000001015EDD0E203D4F2ED1F004FEF03EC211FE400EFF2E1EE432DF00000001030FEE033FEE1F00101EF1130EC00414FCE04EED211021DEE3121E10D1F01020D1E231DD651220FF2EED113411A0F11F10E1F0F24FED0F2F13F0D011102FDDF1432ED0EEF443ECD01100100000130DDF0110130ECD1411110EEF0111F0FF11021FED01117BFCCF43310FDDEF3451DBCF1520E00FD055FDD00E122FDD023132FBCE233210DCEE2312EDE3221F00ED1200F10FF22FE01000011FFF0F00002000F1300DFFF27801F0EF2123EDEF01212EFEEF3200011E023FCCF221F121DDF1300021FEC1241DD02FF021FE0200001F0F11FD031FC044FF01ECC0444FDFEF2102EFF121E000711444FFDDC043310CDDE443FDDF321FF20DCF4310F0FD012010F0F00210EE001201EEE01321FE00FE032FFF100D0331CE0200100FD022FF1000F0120EFFF1116A00D0102F0FDD1330F001FE0230FFF0E212DD1200F121EBE04420EEC0121120EDEF3411FCEF322FFFFEFF530EFF1F121FEC0223F0E0E0020131CED02200000158010FFE120E1310DCD3402FF0011FF00EEF2451DEDB11432EDFE10132EDEF1341EEEDF1441EDD12F01000F0040D0FF11020ED01011310FDDE122122EDDF1310480F1F12FDF132D11EEE13300FEFE001200011100EFE01FF134FFDEF1101000FE1233ECDE23021EEE012120EFF0210EEF0110230FDDE23220EFEFF1111F0E1223CDEFEF512DEF21031EEFE2121DEFF12023FDF010013FEDD13321DEDDF2523F0EE010FEE2010131EEDF2331FFEDE012210EDE2322FDFF1111F1EDD04423FCEE168000EFF1332FEDEF2242FDDC014220EDCF2442EDDE03230DEEF13210EEF02011E0FFF2120FFFFF1232FEED01111FFF00222FEEFF2220EDE022120FED01231FE54F13331ECBE15530FACD04430EDD01441EDDF03110E0F000101F00F0120FF00F100000F0F02020FF00000000FE021210EFEF2120FF0F0101F0FF02110FF0F0038010FE01130FFF0FFF122FFEE13321DDEE02230FEEF0220F0DF22220FFFEEF2220E0D120000000211EEEEF2331EFFDE2310000F00021EEF0111010EE00200F0281F1100E000001FFFF0124FDE01221FDCD343F0EFE30F1000122F0DF0EF011F01130DE0111111EEE00210FDF121210FDE12222DDDE02341BCF433FCFDE2313329FEF0143FEEDF311F0FF021F110EF0101100EDF01322EED11141ED0E011001FFE2FF043FFF1F1E011DDFF444FCC001201000F00F110F0F0111F1E0FD02231CE292FFF0F1F1000FE2200F0010FE0220EE111EF111F000000F1010F0F0120EE020F0012FF000000000F1FF0332DCE011210EF001002F0EE12230DEB131020E0E0371200EF0112FEFEE13323DCCF221210EEE0330DEF111210FFFDE1431FDCE14142EDDF12020FFEE2221EFEF03220EEEE13120EEDE2431F00EEFE0420EE00202139FEE3330DDCF223310CEEF03431CBDF2421FEDF02342FDCDF1410FFE1222EE00EF2241CDCE14430DDE111130FDC02231DECE33341FECB0242FEEC23330CEEE24A31DDCF2320FEF012010FF0E11011EF0010010F0F11001FFEE1320FFFF02110E0000F100F00000111FF00F10010F0000001F0000000000F001011EFE121100F141F4101EDD14133ECE13EF11F0CF514EEED10321FF01EF10EF021011FED142EF22C00EEF172FDD011E2111FFFFF02010FFE034FEFE11011FFEE2110121FFE0017F110001FFF200100F0010FF10EF201100F010F000011EEF30E1100010F0001F0100EE10011000020E0E0221F00EEF21ED0430F0011EFF0100F0120EE210F0F1710F01100F00000E132EFF000F000100FF22E00120FE00EE0321F0F0EF1220FF0100FFF02F0121FEF010000010FE00120F00100000FDF1222EF000FE1231EE018FF22FEF0110021FFEF20000F1F01100FFE1221EF000F1110ED0120000011FF020EDE1310121EEEE13110E001F0E0200F111FF000F00101F00000000F01100F18000F1000E11000100F0FE021100010EEF121001FF0F0010F0111EFF21200EFFE011100000000FF112F1FF0E0112FF0FF0201010FF00FE012110FFFF12000F1280F0100000F1000000F1011FF0FF011100F0F01100F0FF11011E0F01011FFFF011100F0F01101FFFF2011FFE0011000000111FE0FEF12130FEFF01120FFF0001AF0FE002121DEE11320DFDEF24200EE1223FDEDD1133110CEFF13220FEFF01000FEF13220EEEF2221EEEFE12221EFF0112FEF00F02110FFE0110000020E0000142111000F0F01111EFE101011EFF011200FFD021110FF0F100000F0121FFFEE121200FF0E011110FFF00F1101F000000F10001000F0F000100000001F0000001800000000000E0110010F000000001F00000000F1000001F0F0110F00000000F0111FFF010000F1000100FFF020100F000F1001F00000F10000100FF000101F18000000000000000000001F000F010100F00000F0101000FF001100F0F0101F0000001F000000001F00F0010100F00000000000000000000000001F00000000180001F00F100000000F0100000000010F00F00100000000010F00F100000000F010000000000000000000000F100001F0F0010100F0F010100F000000000F0118000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", toolgun2 = "180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1C80000000000FE3EF2E0E02DF111E1002012000010F0F111FF0100000100F10F0010000000100F10010FD40F011D04EEF30D3EE00EFF000F02EE201E1FF2E02FF31100F10300003F1A13D2E25A1113F1E110001F000100000F1F1000000001F1A222DB1E3B31F2F0FC230FF0E0E2F0F210ED2F0F2200D1F0412B2210D210FF3F96C3F5F10EE0213CDE6012F3F2C1E3F1E0F21C100F3EEE14DB330D34F0CD4000D342CE010F2E00230FCC242FD21EF101FF1211BDF2423BEF33FDF00023DEE1116A30EFE0004F1DF21ED100310D040CB11531FA1F20F2E10FF0300D010DF400F30FF13EDED3331D1FEC342EEE20F012F1F0F01FD0302FF11DDF331F00F0E011015CFEFEF001220E0021DCF311032EDCF3230EFEF201112DC054ECF0FD143FCF21221ECCF3320100EFE00200E120FF021F10FEE20E211F00012EF0F0011F1FEF035920EFFF0222FDFF210021DDE1011100000120EF010F01FDD13200131DCF30F220EFFE122FE010E210ED13200F1E0010EC13FF154DDF10FE0F32FEF121CF00224EAF110E1320DEEDF2110201F0111EF0141DCD10FF341DF120E0000012FF00FEC03211F00F0E4200EF13FD11EDE320D0210D321D03FFF0011D0100FFF10E0411582100E1EF2FD20102EE021F00000F0103EE2FF24FEE000FFE1200F01112E1E000F00201FF011FF0000E02FE01020E230CE243DDF11F0F0110FD0122DE21060D471B37EC2CE82EC10FFFF5FF3DB1341DE34FD10EFE120211FDF0E210FF2D034EEFC51F0021EDD45EF4CFCE6FD60B34ED10D3E031EF0F011210DF02F13C12FD1159F010EF0F023FF1FE201E10E24FF2FDE0C6FF5DC42C14000DF0001FF12F000101FE0F1110F00E3012DEF013E10DF4FE22FE1FF2110E0F11F1F0D01112E22CFF5720FED11213D00D216FE1CFD331EEE001322FC00D32D1FD023112C00D1F34DEFEF4011DEF2121FF1F11F00FD000134EF0EF10000EE0220130C1FF00100E131039DDF1327DBF410B16BE0E140F0FE2430EDFB101301F2FFE05EF030DF0100C40E30FF0010F21E2D04D020EEFF200310D23B000015EC12EF4C20F0000EE10325D380B501FD20D251C000D34D1EE1DF424EED15C000D12E32C10F0F1102E22D02F1C22D0F0E12FFE0043FFF10DFF21F21110D3EE11111EDF0D61C21EE22000F00C385EDF0FE02203D010F21E1EF20F21ED1110011DEFFF2F31E4ED3100EE03002FF10F2F0F1FF120F1E2DE20100001F0000E0020E2010E210E010E010002E1E100281FFF1F1F20F120E0000001EF32EEF32C0101FF10CE3122010FF2D02FE31DEF2E3F41CFF10F2002D10001FFF200121C00EF1112EF0FF331FEF0003EFFE0221F2800C132F2FE0FE3000D2F0032DFEE320111EF001220BE02021F0DE30F110EFF320FF0F0F2010FBE32321FFDEF4022FDD21220DFEC034120CD2100121DF003FE2241E241DFFD23002DEEE144FE0F12E034FBCE23100F0E10130EF002F1EE1CF3410F0FE0F3021EEE10220EFF11411FBCF2033EF0EF232FDE200300FECF2F430028FFF32EE010041EE0D21030FEE020001FFF11F00101F011F00FF100E200000F111E0F0100100F0000000FF021F000E011023EDD12013DFE01102FF0E00312FC2610121D0EF1221EEFF23101EDF1021FFE0D33000FFFF301F000F1011FEE02120F0FEF220F1F0F11F21EE0E2120E1FF1011F0D01E22F00F1F1200FF0E201F0F024401F0FEF3202FFF0F0131FDD02121FE0F0112EFF0F1200F0DF1123FFFFE0221FFFE212100DFF0211FFFF111000F0001000FEF1110000F101100FFF01010FF0270120FFFF1111E000000000FF20001FF0F112000E0F10000F0001020EF000121FEFF022FF0F0F1121EFF00102FFF000101F0FF21000F00000011EFD12110F0F1801F1F000212FDFEE13210EF0D1111F0E01131DD000220E00E011011FE001220CFDF23101EFFF2230DFEF201110EF010021DC12111F0EEF331FE0000202DD1E2710000F110F0000010F000F1011F0EF011100F0F01011EFE11112FFFF10000000F0111FFFF1112FE0E0110100E0F1210FFFF11101EFD022220EEE1111FFEE022B20CCE04331ECDD13331EDCE2443DDDE12310DEE013310DE0F2110EEF003120EFDF13320EDDF1212FFFF1131FDEE1321FEEE02231FEEEF324FEECF12340ECCF28420EBDF1421FEDF12320EEE011100F0F001010F0000100F00F01001FF0F11110FF0F100000F001110FFE01111FF0F01010F0F010100F00F10000000000001F18F00110FEF1222FFED02112FFFE01120EFE12120FE0E01101F0FF2010F0000100F0EF02130EFFF11020E0FF1112EFDF13210FEF1000000FF1111FFF01011FF0161110F0FF1110F0F01010F00F00F21000F000000F0F11101FFFF11020FFFF10110F0F01100F0F01010F00E10102FFF010101EFF020100F0F00102FF000F100018F10002FF0000001FF1F01001F000001F1F0F011F02D000111FF00F1001F0F000111FF0F01001FF1F0020F000F10001F00F100000F10000001F0000F100F100190F0000F1001F0F1F11F00000001F00F0100000000000010F000F100000000010F0F0101F1FF0010000FF11110FFFF0202FF0E011110FFF01010F0EF12120FE151222FEFDF2221FEDF12231EEED02221EEE01221FE0E11010FFE021210EEE01222FEEE0213FEEE022311EEEE0122FF0E00212FFFFF0222FEDC12341FEDEF0432BEFE00210F0FF11120FEFF01101FF001100F0F010110EEE12130EFFF10121FEEF1211FFEF12120FFFE01110FFE21110E0E011220EED01210F00F10100F0F0101BDEE02222EFF0F1101FEEF1312FEFF01112F0FFF01000E1F1113FFEFF02020FFFE11201E0000110FFFF01120FEE003210FE0F0101F0E0F3111EFE2F11F000F019F00F010001F0000000000F10F1000000001F00F00011F1F00F10001FF1F100000F010002E0000F100000F10000001F000000000F100000000000001F0000001800000000000000000000000000000000000000000000000000000000000000000F10000000000000F10000000000000000000000000000000000000000000018000000000000000F100000000000000000000000000000000000000000000000000000000000000000000F1000000000000000F10000000000000000F1000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F010000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000F001000000000000000F0100000000000000000010F00F0010011800010F0FF0101100F0F01110FFFF01100000F10100FF01021FFEFF01201F000111FFFDF013120FEFF11110FF0F010000F001010F0F01110FFFFF1200000F101BFFEFF012110FFF0010100F0000000F0F02110FF0F0111F0FFF01110F0F01020FFF0001100F0F010000000000000F001001F00000000000F001010F0F010100180F1001F00F0100000000010F00F0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000F1000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000F01000000000010F00000000000000010F0F01010F00F01001F00000010F01701001F00F10000000000000000000000000000000000F01010F00F10010F0F010010F0F001010F0000000000F010010F00000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000001F000000000000000100F00F10000000F10010F0000000000F010010F0F00111FF00F10000000000100F00018000000000000000001F00F00100000000000100F00000000F001011F0F0F1000000000000000F10100F0F00100000000000000000000000F010010F0000000180000000000F010010F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", undo = "18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80000000000000000000000000000000000000000000000000F100000000000001D5A0A527BBABB9E8826656476288E9BB9D9907737557288EA9CAC9AE88266F4377098E9BABBB6359283770A38E0F2E2E10F2E1F3C3F000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", walking = "B8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EDE02322101110FFFEFEF0119B20FE230DDF0001231FEEEDE00121000F0010100001000F000000000000000F001000000000000000000000000000000000000000000000000000000000000038000000F00001000000000EEF0002110100000FFF1001011F000FF01000001001101FFFFFF010110000000000001000F00000001101000F1F0F00000000F0002900F0110101F00F00F01001F000F0010100F00F0000000000000000000F000FF0100010000000F0000F00F001010000010000000F00001000000000000F001028000000000000001F0001F00001000000000000000001F0000F1000010000F000000000F100000000000F0000000000000000000F00001000000001210EDEF036F111000000F0001000010000F000000000000000000000000000000000000000000000000000000000000232CBE22F0F02210E0100E000FF0F1010100010021C903EE02FE220E021FF11F01000000F000F00F1001F010000010000000000F010F00010000000000011FF0000000F100000010000110FF0000F0110F010E010190F10F00010F0000000000E0210F0000F110F0100F000010F000010F00100F000000F101FF01000FF110000F01F01FF01010000000000F01000F100100F0000180000000000000001F011FF0100F010FF1000001F0010F0000001F100F01F000010F00000010F010F000001F0000000000001FFF200000000000000000F100018000000F012E00010F0011E1F010F1F100F000100F100000000F00010000000000010F0F10F10000F100010E100000000F11E01F00011FF10F000000010F00018010F001F0000010FE2000000000000000000000000F11F0000000000001E5280EF113402CE2F100E000F10000000000000FE120F2FE21F001F00010F0000F1180000000000000000000F1000000F1000F1010F000000000002EEF12F101F000F100F1001F010F03FC12F0001F1FF0100010F00013CF022E00F0F0100000000280000000F1000000000000000000000000000000000000000000F001002FF00000010F0000000000000000000000000000000348B42FF141EEF10010F0000001801F0E11000000000010F100F00000020F39D331F12FD012E111D20A132ED210F0100000000102DE221EF1F00D33BC46CB748B342FE22DE020000000000000F1901DC253AA34FE233F0FDE20000000000000000D1110F101F000010F000000F1000010F00000F14AD410012EF00000000000100F0000010FF01000000001F00180000000F10000000F10000000001F000000E020000000000F100000000000001FF010000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000001F000000000000000000000000000000000000000000000000000000000000F1000000001800000000000000000000000000000000000000F10000000000000000000000F00100000000010F0F00100100F00000000000F1000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0F22FF000021010FF0139F00FFFFF010111100101000F000F00000000000000000000000000000000000000001F000F141F00DEDF02E1410000F00F100000000001F0000000000100F01AF01E0000F00F1001000000E0110000F10F11FD22FF01F1FF1100001001FF02F0F2F03BA531020C01DE23FF00F00201100E00F01001F000000000000000000017F02000011FF00000F0010000200FF000000000000000000000000000F100000000F02F00000000000000001F000000F0100010000F00000000F101F0000000F80000000000000000000000000000000000000000000000000000000000000000000000000000000210EFEDEF02331210EFF0F01001000F00F100001000F0003C000FFFFFE0F00111100010000100FF000F00F010100000000F0000001F1000000F0100010000F00101200FFFF10F0000F01000002001101D10E20EE001E11028000000EE00F0000210200001F000000110E1F00E1FF101010001F00FF0F010001F001F100101F00FF00F0110101001F00F000010F000000F001000001000F0180111100FFFF000000101F001110100000F00001000F0F000000001F00001001F0FE0F0010010011010FF0FF00F00000F01FF1F000010F10F000F11F01F01F12710F1F10000000000000000000000000000000000100F0000001F1F00000001F100000000000F0000DF4000F1FF1F002E02111001FF0FF1F000F0EF010F111F480000010F101FF120EF10F0001FE10E001F1002001001000E1003FF5EB1FD02FF02E030FF010010001F11F10F01000001EF0FFFFF00012110111F010000FF0038F0FF11000010000011F210EFF1F0E00FE000010100000100010000001000000000000000F000F00000000000000000000000000000000100001000000000101B000000101F01FF00F0F0000F01001F010000F11FF000F1F010001F10F0001101F00100000000F1000000F10F010F10F101000FF11F10001F0000F00F0000001A101F000000000F10F0010F10F000F00000000001FF2F100F10F1F00000000F0001F01000000F000000101F00F0000101F10F010F0F00001F001F1F0001F1F0180000000000000000000000F10000000000000000000000000000000000000000000000F1000000000000000000000010F0000000000000000000000000000018000000000F11F000F10F010F1000000000100F00000F10000000000000000000000000000000001F00000000000000000000000F1000000000000000000000280000000000000000000F1F110F11E0F0F111F000000010F0000F01000000000000001F00000000000000000FF22FF00F010F010001FF01001211F0D13FE00F27D00E0F0021F30020F4EF4D1F21E4B010F2E1E03D00000F1000F1F10F01000000000000F10F001000000001F000000000000F2F010F00000000000000001F001711F1E001F100000000000F2F00000000100F00000F1FF002000000000000001F0010F1F00001F00F0100000000000000000F11F00001F00000000000000000180000000000F100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2F000000F101800E1100F24D01E0F01F0C040D5C230CB422D0E63AD141D0EE40F01011E002E10F0000E200F1000F1F11F000001F011F0FF11F000000E200F3E0001F1EE1201293BC41F1F121E0FF011FF110F000000000000000000000F10000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000F10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E2000000001800000000000000000000000000000000000000000000000000000000000000F10000000000000000F100000000000000000000000001E01000000000F1000018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } -- ============================================ -- File: src/models/model_loader.lua -- ============================================ local BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" local REMAINDER_CHARS = "#$%&=" local STATIC_HUFFMAN_CODES = { ['10'] = ',', ['011101'] = '-', ['11110'] = '.', ['000'] = '0', ['010'] = '1', ['1110'] = '2', ['1101'] = '3', ['1100'] = '4', ['0011'] = '5', ['0110'] = '6', ['0010'] = '7', ['11111'] = '8', ['01111'] = '9', ['01110000'] = '=', ['011100011100'] = 'volume', ['01110001000'] = 'mass', ['01110001101'] = 'inertia', ['01110001001'] = 'friction', ['01110001100'] = 'f', ['01110001010'] = 'uv', ['01110001011'] = 'v', ['011100011101'] = 'x', ['011100011110'] = 'y', ['011100011111'] = 'z', ['01110011'] = '{', ['01110010'] = '}', } local BASE64_CODES = {} local REMAINDER_CODES = {} for i = 1, #BASE64_CHARS do local binary_code = "" local char = BASE64_CHARS:sub(i, i) for j = 1, 6 do binary_code = binary_code .. tostring(((i - 1) >> (6 - j)) & 1) end BASE64_CODES[char] = binary_code end for i = 1, #REMAINDER_CHARS do REMAINDER_CODES[REMAINDER_CHARS:sub(i, i)] = i end local function araModel(data) assert(type(data) == "string", "Expected string, got " .. type(data)) -- Unpack base64 local binaryData = {} local remainderSize = 0 for i = 1, #data do local char = data:sub(i, i) if i == #data and REMAINDER_CODES[char] then remainderSize = REMAINDER_CODES[char] elseif BASE64_CODES[char] then binaryData[i] = BASE64_CODES[char] else error("Invalid character in base64 string: " .. char) end end binaryData = table.concat(binaryData) if remainderSize > 0 then binaryData = binaryData:sub(1, -7 + remainderSize) end -- Decode Huffman codes local decodedData = {} local currentCode = "" for i = 1, #binaryData do currentCode = currentCode .. binaryData:sub(i, i) if STATIC_HUFFMAN_CODES[currentCode] then decodedData[#decodedData+1] = STATIC_HUFFMAN_CODES[currentCode] currentCode = "" end end assert(#currentCode == 0, "Invalid Huffman code") -- Decode Lua table local code = "return " .. table.concat(decodedData) local success, result = pcall(load(code)) if not success then error("Failed to decode model: " .. result) end return result end -- ============================================ -- File: src/models/cube.lua -- ============================================ local cubeModel = { araModel("c3FuDm464OalKU6p1TqnU5Tjzg5qdUp1SnVKdTlOPuDm6p1SlOqdUpOTlOMcHNzO2K6UcdsV0o3Kc1ZfmumtvzX7LnKc9vzX7Looo7LZOTlOKcHNzXfl35d+Xfl35d+Xfl35d+Xfl35d9ynNd+Xfl35d+Xfl35d+Xfl35d+Xfl33Kc135d+Xfl35d+XfkukukukukukucpzWZLMlmSzJZksyWZLMlmSzJZksxynNLpLpLpLpLpLpLpLpLpLpLpLnKc1mSzJZksyWZLMl35d+Xfl35d+XfcnKcccP+AAnEOBcB4ACca4Z8DwAE4lwHscg$"), araModel("c3FuDm464OalKU6p1TqnU5Tjzg5qdUp1SnVKdTlOPuDm6p1SlOqdUpOTlOMcHNzO2K6UcdsV0o3Kc1ZfmumtvzX7LnKc9vzX7Looo7LZOTlOKcHNzS6S6S6S6S6S6S6S6S6S6S6S5ynNd+Xfl35d+Xfl35d+Xfl35d+Xfl33Kc0ukukukukukuntPae09p7T2cpzWZLMlmSzJZksyWZLMlmSzJZksxynN7T2ntPae09p7T2ntPae09nKc1mSzJZksyWZLMl35d+Xfl35d+XfcnKcccP+AAnEOBcB4ACca4Z8DwAE4lwHscg$"), araModel("c3FuDm464OalKU6p1TqnU5Tjzg5qdUp1SnVKdTlOPuDm6p1SlOqdUpOTlOMcHNzO2K6UcdsV0o3Kc1ZfmumtvzX7LnKc9vzX7Looo7LZOTlOKcHNzS6S6S6S6S6S6S6S6S6S6S6S5ynNZksyWZLMlmSzJZksyWZLMlmSzHKc0ukukukukukuntPae09p7T2cpzTCTCTCTCTCTCTCTCTCTCTCTBynN7T2ntPae09p7T2ntPae09nKc0wkwkwkwkwkwlmSzJZksyWZLMcnKcccP+AAnEOBcB4ACca4Z8DwAE4lwHscg$"), araModel("c3FuDm464OalKU6p1TqnU5Tjzg5qdUp1SnVKdTlOPuDm6p1SlOqdUpOTlOMcHNzO2K6UcdsV0o3Kc1ZfmumtvzX7LnKc9vzX7Looo7LZOTlOKcHNzXfl35d+Xfl35d+Xfl35d+Xfl35d9ynNZksyWZLMlmSzJZksyWZLMlmSzHKc135d+Xfl35d+XfkukukukukukucpzTCTCTCTCTCTCTCTCTCTCTCTBynNLpLpLpLpLpLpLpLpLpLpLpLnKc0wkwkwkwkwkwlmSzJZksyWZLMcnKcccP+AAnEOBcB4ACca4Z8DwAE4lwHscg$") } -- ============================================ -- File: src/models/shapes.lua -- ============================================ local dodecahedrons = { araModel("c3FuDm464OY80PNDzQ806PNOjzTo806PND2To9kPZOj2Q8+Hnzo8+dHnwhCDlOPODmPNOjzQ806PNDzTo80PNOjzQhCEPZOj2Q9k6PZDz4efOjz50ee5Tj7g5ujzTo80PNDzTo806PNDzQ806PPnR58PPh586J0TonROj2Q9k6PZD2OTlOMcHNzfLZFdbHNLrhJpdcJFPny2WyKQullsvxxzS/LpZcLhJpNLpdcHKc0U+WyEsl+OX5ZcJNLp8ctukVt01tkcU0jl1twuk0ny6R3CScpzO62ayKR23SfI5KUhKWSl+fJ8tkpFI5CTRSVkn35r8V+xycpxTg5uaXSXSXSXSXSXSXSXSXSXSXSXT2kuntJdPaS6e0l09pLp7SXT2kuntJdPaS6e0l09pLp7SXOU5rcluS3JbktyW5LcluS3JbktyW5LcluS3JbktyW5LcluS3JbktyW5LcluS3JbktyW5LcluS3JbktyW45Tm9p7T2ntPae09p7T2ntPae0l098l098l098l098l098l098l098l098l098l098l098l097lOa3JbktyW5LcluS3JbktyW5LcluS3JZstyWbLclmy3JZstyWbLclmy3JZstyWbLclmy3JZstyWbLclmuU5vfPfPfPfPfPfPfPfPfPfPfPfIZIPkMkHyGSD5DJB8hkg+QyQfIZIPkMkHyGSD5DJB8hkg+QyQe5Tms2WbLNlmyzZZss2WbLNlmyzZZsu/LNl35Zsu/LNl35Zsu/LNl35Zsu/LNl35Zsu/LNl35Zsu/LNl35Zrk5Tjjh3i+fTiHDjDebMyca4ER+01+cS4D2OQ%"), araModel("c3FuDm464OY80PNDzQ806PNOjzTo806PND2To9kPZOj2Q8+Hnzo8+dHnzonROidDlOPODmPNOjzQ806PNDzTo80PNOjzQhCEPZOj2Q9k6PZDz4efOjz50ee5Tj7g5ujzTo80PNDzTo806PNDzQ806PPnR58PPh586J0TonROj2Q9k6PZD2OTlOMcHNzfLZFdbHNLrhJpdcJFPny2WyKQullsvxxzS/LpZcLhJpNfl19ynNFPlshLJfjl+WXCRyU+OW3SK26a2yOKaRy624XSaT5HI5KScpzO62ayKR23SfFZKQlLJS/Pk+WyUikchJopKyT781+XX7g5OU4pwc3Nr9+/fv35ppr9+yaa/NfmvzX5r81+yayaya/NfmcpzW9Lvy0S3JbktyWiW9Lel35d+WiW9Lel35d+WiWiW5LcluS3JbktyWiWiW9LelvS3pd+Xfl35d+WiWhynPJppppprLLJpprL81+a/NfmvzX5prJrJrJpppnKc1vS78tEtyW5LclolvS3pd+WiW9LeluS78tEtEt6W5LWluS1pbktaWiW9LeluS3pbku/LRLRLRLelvOU55NNNNNNZZZNNZZNNNNNNNNNNNNZZZZZZNfmvuU5rclolvS1pa0taW9LcluS0S78tEtyW9LRLvy3paJa0tyWtLclrS3Jb0tEtyW9LclvS0S78u/Lvy0S0OTlOOOHeL59OIcOMN5szJxrgRH7TX5xLgPY5A#") } local icosahedrons = { araModel("c3FuDm464OYh4p0e2dHnzo9sPFD2zo8U6PFD2w8+DlOPODm6p0eydHsnR7J0eydHsh7IeyHsh7IeyTlOPuDm6IeOHnzonR586PHDz4eOdHjnR586J0OTlOMcHNzV0pSutsjmutsjmivz5CScpz2ayOaSivz5CK/PkJKXS6XS6XOU59K2yOa62yOSivz5CSivz5BycpxTg5ub2kMntPae09p7T2ntPae09p7T2ntPae09p7T2cpzWZLRLMlmSzJZksyWZLMlmSzJZksyWZLMlmSzJZksyWY5Tmhkl0hkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhkhjlOa0SzJaJaJaJaJaJaJaJaJaJaJaJaJaJaJaJaJaJaHKc0untJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJdJc5TmsyWZLMlmSzJZksyWZLMlmSzJZksyWZLMlmSzJZksyWY5OU444d49ZTiHDu/3s+2zjXBmHm15ziXAexy"), araModel("c3FuDm464OYh4p0e2dHnzo9sPFD2zo8U6PFD2w8+DlOPODm6p0eydHsnR7J0eydHsh7IeyHsh7IeyTlOPuDm6IeOHnzonR586PHDz4eOdHjnR586J0OTlOMcHNzV0pSutsjmutsjmivz5CScpz2ayOaSivz5CK/PkJKXS6XS6XOU59K2yOa62yOSivz5CSivz5BycpxTg5ubQummmsuhZNCayELoTTOU5rcluS1pb0tyWiW9LelvS3pa0taW5LWluS3pa0taWtLccpza66aaay6Fk0JrIQuhNM5Tmt6WtLclolvS78tEtEtEtEtyW5LeluS3paJbktyW5Lecpz/Cy/fvzWXTX7r8111l1++5TmtyWtLWlvS3JaJb0t6W9LelrS1pbktaW5LelrS1pa0txycpxxw7x6ynEOHd/vZ9tnGuDMPNrznEuA9jk=") } -- ============================================ -- File: src/models/chessboard.lua -- ============================================ local chessBoardModel = { v = { x = {-16, -18, -16, -18, 16, 18, 16, 18, -18, 18, -18, 18}, y = { 0, -2, 0, -2, 0, -2, 0, -2, 0, 0, 0, 0 }, z = {-16, -18, 16, 18, -16, -18, 16, 18, 18, 18, -18, -18} }, f = { {9 , 10, 2 , 11, 12, 7 , 3 , 5 , 1 , 5 , 9 , 10, 2 , 11, 12, 7 , 3 , 5 , 1 , 5 }, {8 , 6 , 8 , 4 , 2 , 9 , 11, 10, 12, 3 , 10, 12, 4 , 9 , 11, 10, 9 , 12, 11, 7 }, {4 , 8 , 6 , 2 , 6 , 3 , 1 , 7 , 5 , 1 , 8 , 6 , 8 , 4 , 2 , 9 , 11, 10, 12, 3 } }, uv = { {8, 8, 6, 8, 8, 2, 0, 0, 2, 16, 8, 8, 6, 8, 8, 2, 0, 0, 2, 16 }, {130, 128, 132, 128, 130, 132, 132, 132, 132, 136, 130, 128, 132, 128, 130, 132, 132, 132, 132, 136}, {6, 6, 4, 6, 6, 0, 2, 2, 0, 8, 8, 8, 6, 8, 8, 2, 0, 0, 2, 16 }, {128, 130, 130, 130, 128, 130, 130, 130, 130, 128, 128, 130, 130, 130, 128, 130, 130, 130, 130, 128}, {6, 6, 4, 6, 6, 0, 2, 2, 0, 8, 6, 6, 4, 6, 6, 0, 2, 2, 0, 8, }, {130, 128, 132, 128, 130, 132, 132, 132, 132, 136, 128, 130, 130, 130, 128, 130, 130, 130, 130, 128} } } -- ============================================ -- File: src/models/sphere.lua -- ============================================ local sphereModel = { v = { x = { 22.6, 39.2 , 45.3 , 39.2 , 22.6 , 32.0 , 55.4 , 64.0 , 55.4 , 32.0 , 22.6 , 39.2 , 45.3 , 39.2 , 22.6 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ,-22.6 ,-39.2 ,-45.3 ,-39.2 ,-22.6 , 0.0 ,-32.0 ,-55.4 ,-64.0 ,-55.4 ,-32.0 ,-22.6 ,-39.2 ,-45.3 ,-39.2 ,-22.6 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}, y = { 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 , 64.0 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 ,-64.0 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4 , 55.4 , 32.0 , 0.0 ,-32.0 ,-55.4}, z = {22.6, 39.2, 45.3, 39.2, 22.6,-0.0 ,-0.0 ,-0.0 ,-0.0 ,-0.0 ,-22.6,-39.2,-45.3,-39.2,-22.6,-32.0,-55.4,-64.0,-55.4,-32.0,-0.0 ,-22.6,-39.2,-45.3,-39.2,-22.6,-0.0 ,-0.0 ,-0.0 ,-0.0 ,-0.0 ,-0.0 , 22.6, 39.2, 45.3, 39.2, 22.6, 32.0, 55.4, 64.0, 55.4, 32.0 } }, f = { {27 ,40 ,38 ,41 ,39 ,38 ,3 ,1 ,4 ,2 ,1 ,27 ,6 ,9 ,8 ,6 ,27 ,9 ,14 ,12 ,11 ,27 ,13 ,11 ,19 ,17 ,16 ,27 ,18 ,16 ,25 ,23 ,22 ,27 ,24 ,22 ,31 ,29 ,28 ,27 ,30 ,28 ,34 ,33 ,27 ,35 ,33 ,36 ,40 ,38 ,41 ,39 ,3 ,1 ,4 ,2 ,6 ,9 ,8 ,9 ,14 ,12 ,13 ,11 ,19 ,17 ,18 ,16 ,25 ,23 ,24 ,22 ,31 ,29 ,30 ,28 ,34 ,35 ,33 ,36}, {5 ,41 ,39 ,42 ,40 ,1 ,4 ,2 ,5 ,3 ,6 ,10 ,7 ,10 ,13 ,11 ,15 ,14 ,15 ,13 ,16 ,20 ,14 ,12 ,20 ,18 ,22 ,26 ,19 ,17 ,26 ,24 ,28 ,32 ,25 ,23 ,32 ,30 ,33 ,37 ,31 ,29 ,35 ,38 ,42 ,36 ,34 ,37 ,4 ,2 ,5 ,3 ,9 ,7 ,10 ,8 ,12 ,15 ,12 ,13 ,20 ,18 ,19 ,17 ,26 ,24 ,25 ,23 ,32 ,30 ,31 ,29 ,37 ,35 ,36 ,34 ,40 ,41 ,39 ,42}, {42 ,4 ,2 ,5 ,3 ,21 ,9 ,7 ,10 ,8 ,21 ,5 ,12 ,15 ,12 ,21 ,10 ,13 ,20 ,18 ,21 ,15 ,19 ,17 ,26 ,24 ,21 ,20 ,25 ,23 ,32 ,30 ,21 ,26 ,31 ,29 ,37 ,35 ,21 ,32 ,36 ,34 ,40 ,21 ,37 ,41 ,39 ,42 ,3 ,1 ,4 ,2 ,8 ,6 ,9 ,7 ,11 ,14 ,7 ,8 ,19 ,17 ,18 ,16 ,25 ,23 ,24 ,22 ,31 ,29 ,30 ,28 ,36 ,34 ,35 ,33 ,39 ,40 ,38 ,41} }, uv = { {4,4,6,4,6,6,6,8,6,8,8,4,0,4,0,0,4,4,6,2,2,4,6,2,2,2,2,2,2,2,4,4,4,2,4,4,4,2,2,4,4,2,4,4,4,6,4,6,4,6,4,6,6,8,6,8,0,4,0,4,6,2,6,2,2,2,2,2,4,4,4,4,4,2,4,2,4,6,4,6}, {6,8,4,6,6,4,8,4,6,6,4,6,6,0,6,6,0,0,0,8,6,0,2,6,2,8,6,2,4,6,2,8,6,2,4,6,2,6,4,2,4,4,6,4,2,4,4,2,8,4,6,6,8,4,6,6,6,0,6,0,0,8,2,6,2,8,4,6,2,8,4,6,2,6,4,4,6,4,4,2}, {6,4,6,4,6,8,6,8,6,8,6,4,0,4,2,2,6,6,6,2,0,4,6,2,2,2,4,4,2,2,4,4,2,2,4,4,4,2,4,6,4,2,4,2,4,6,4,6,6,8,6,8,4,6,4,6,2,6,2,6,4,0,4,0,4,4,4,4,2,2,2,2,6,4,6,4,2,4,2,4}, {8,6,6,8,4,4,6,6,8,4,4,8,8,2,6,6,2,0,2,6,6,2,0,8,4,6,6,4,2,8,4,6,6,4,2,8,4,4,4,4,2,6,4,4,4,2,6,4,6,6,8,4,6,6,8,4,8,2,8,2,2,6,0,8,4,6,2,8,4,6,2,8,4,4,2,6,4,2,6,4}, {4,6,8,6,8,6,4,6,4,6,6,6,2,6,2,0,4,6,4,0,0,6,4,0,4,4,2,2,4,4,2,2,2,4,2,2,6,4,2,4,6,4,2,2,6,4,2,4,6,8,6,8,4,6,4,6,2,6,0,4,4,0,4,0,4,4,4,4,2,2,2,2,6,4,6,4,2,4,2,4}, {8,6,6,8,4,6,6,6,8,4,6,8,8,2,8,8,2,2,2,6,8,2,0,8,4,6,8,4,2,8,4,6,8,4,2,8,4,4,6,4,2,6,4,6,4,2,6,4,8,4,6,6,8,4,6,6,6,0,8,2,0,8,2,6,2,8,4,6,2,8,4,6,2,6,4,4,6,4,4,2} } } for i = 1, #sphereModel.v.x do sphereModel.v.x[i] = -sphereModel.v.x[i] / 64 sphereModel.v.y[i] = sphereModel.v.y[i] / 64 sphereModel.v.z[i] = sphereModel.v.z[i] / 64 end -- ============================================ -- File: src/models/toolgun.lua -- ============================================ -- Legacy format local toolgunModelLegacy={ v={{0.0,-324.3,374.8},{55.4,-324.3,341.4},{55.4,-78.4,184.6},{55.4,-324.3,231.9},{0.0,-324.3,198.6},{-55.4,-324.3,231.9},{-55.4,-78.4,184.6},{-55.4,-324.3,341.4},{0.0,-127.5,321.8},{55.4,-145.2,286.1},{55.4,-180.6,214.5},{0.0,-198.4,178.7},{-55.4,-180.6,214.5},{-55.4,-145.2,286.1},{-33.3,-70.4,-150.3},{-33.3,-36.5,-150.3},{-33.3,-112.6,82.0},{-33.3,128.5,-150.3},{33.3,-70.4,-150.3},{33.3,-36.5,-150.3},{33.3,-112.6,82.0},{33.3,-36.5,-125.8},{-33.3,79.9,96.6},{0.0,114.7,28.1},{0.0,114.7,-113.8},{61.4,79.2,28.1},{61.4,79.2,-113.8},{61.4,8.3,28.1},{61.4,8.3,-113.8},{0.0,-27.2,28.1},{0.0,-27.2,-113.8},{-61.4,8.3,28.1},{-61.4,8.3,-113.8},{-61.4,79.2,28.1},{-61.4,79.2,-113.8},{33.3,79.9,96.6},{61.4,79.2,43.5},{61.4,8.3,43.5},{-33.3,12.0,97.8},{-61.4,8.3,43.5},{33.3,12.0,97.8},{-61.4,79.2,43.5},{-33.3,-36.5,-125.8},{-33.3,-36.5,43.3},{33.3,-36.5,43.3},{-33.3,-145.5,82.0},{33.3,-145.5,82.0},{33.3,-124.2,159.0},{33.3,128.5,-125.8},{33.3,128.5,-150.3},{-29.8,62.6,-549.9},{-29.8,122.2,-549.9},{-29.8,62.6,-150.3},{-29.8,122.2,-150.3},{29.8,62.6,-549.9},{29.8,122.2,-549.9},{29.8,62.6,-150.3},{29.8,122.2,-150.3},{-20.5,21.7,-424.9},{-20.5,62.6,-424.9},{-20.5,21.7,-150.3},{-20.5,62.6,-150.3},{20.5,21.7,-424.9},{20.5,62.6,-424.9},{20.5,21.7,-150.3},{20.5,62.6,-150.3},{0.0,148.8,-536.6},{0.0,122.2,-536.6},{0.0,148.8,-512.4},{0.0,122.2,-471.0},{-18.6,-187.2,31.8},{18.6,-187.2,31.8},{-18.6,-88.0,-38.4},{18.6,-88.0,-38.4},{-18.6,-153.4,-38.4},{18.6,-153.4,-38.4},{-18.6,-145.5,82.0},{18.6,-145.5,82.0},{-33.3,128.5,-125.8},{-33.3,119.8,43.5},{33.3,119.8,43.5},{33.3,-36.5,218.2},{-33.3,-36.5,218.2},{-33.3,-124.2,159.0},{67.5,176.0,-121.8},{68.1,176.0,-174.5},{38.1,205.8,-172.3},{1.3,276.3,-101.4},{42.2,270.6,-52.0},{42.2,241.1,-13.8},{45.3,246.1,-130.0},{45.6,275.7,-101.6},{-2.7,270.6,-52.0},{-4.7,241.1,-13.8},{7.2,246.1,-143.4},{-91.8,222.4,6.7},{-91.8,102.9,126.2},{77.3,222.4,6.7},{77.3,102.9,126.2},{-99.0,235.8,-21.2},{-99.0,248.3,-7.6},{-99.0,215.7,-0.9},{-99.0,228.2,12.6},{84.6,235.8,-21.2},{84.6,248.3,-7.6},{84.6,215.7,-0.9},{84.6,228.2,12.6},{-146.0,268.2,5.4},{-61.2,299.6,-24.4},{-94.0,212.0,40.0},{-10.9,243.4,3.8},{-169.7,137.0,-245.7},{-169.7,137.0,-56.3},{99.3,137.0,-245.7},{99.3,137.0,-56.3},{75.0,137.0,-121.8},{75.6,137.0,-174.5},{56.7,-70.4,-125.6},{56.7,-70.4,-25.5},{18.6,54.7,-244.6},{53.9,45.2,-244.6},{35.5,117.5,-244.6},{18.6,54.7,-348.2},{66.9,-52.8,-125.6},{53.9,45.2,-348.2},{66.9,-52.8,-25.5},{70.7,108.1,-348.2},{56.7,-35.1,-125.6},{70.7,108.1,-244.6},{56.7,-35.1,-25.5},{35.5,117.5,-348.2},{36.3,-70.4,-25.5},{36.3,-70.4,-125.6},{26.2,-52.8,-25.5},{26.2,-52.8,-125.6},{36.3,-35.1,-25.5},{36.3,-35.1,-125.6}}, f={{10,11,3,uv={{2,4},{0,4},{0,2}}},{7,83,84,uv={{2,2},{0,2},{0,4}}},{13,14,7,uv={{2,2},{0,2},{2,4}}},{2,8,5,uv={{0,2},{2,2},{1,4}}},{8,1,9,uv={{2,2},{0,2},{0,4}}},{13,6,8,uv={{0,4},{2,4},{2,2}}},{12,5,6,uv={{2,2},{0,2},{0,4}}},{4,5,12,uv={{2,2},{0,2},{0,4}}},{2,4,11,uv={{2,2},{2,4},{0,4}}},{9,1,2,uv={{2,2},{0,2},{0,4}}},{16,17,43,uv={{8,4},{6,2},{8,3}}},{20,19,15,uv={{4,2},{2,2},{2,0}}},{84,83,17,uv={{8,2},{8,4},{6,4}}},{22,20,50,uv={{8,4},{8,2},{6,2}}},{25,24,26,uv={{28,112},{20,112},{20,114}}},{27,26,28,uv={{28,114},{20,114},{20,112}}},{36,23,39,uv={{4,4},{6,4},{6,6}}},{29,28,30,uv={{28,112},{20,112},{20,114}}},{23,80,42,uv={{4,6},{6,4},{4,4}}},{41,38,37,uv={{4,6},{6,6},{6,4}}},{31,30,32,uv={{28,114},{20,114},{20,112}}},{27,35,25,uv={{8,2},{6,2},{6,4}}},{33,32,34,uv={{28,112},{20,112},{20,114}}},{39,23,42,uv={{6,6},{4,6},{4,4}}},{35,34,24,uv={{28,114},{20,114},{20,112}}},{26,30,28,uv={{8,2},{6,4},{8,4}}},{79,49,50,uv={{6,4},{4,4},{4,6}}},{44,45,22,uv={{4,2},{2,2},{2,0}}},{21,20,22,uv={{6,4},{8,2},{8,3}}},{43,22,49,uv={{4,0},{2,0},{2,2}}},{82,41,39,uv={{6,2},{6,4},{8,4}}},{16,43,79,uv={{6,4},{6,2},{8,2}}},{46,47,48,uv={{2,2},{4,2},{4,0}}},{20,16,18,uv={{4,2},{4,0},{2,0}}},{17,21,47,uv={{2,2},{4,2},{4,0}}},{21,17,15,uv={{4,2},{2,2},{2,0}}},{52,51,53,uv={{6,6},{4,6},{4,4}}},{54,53,57,uv={{6,4},{4,4},{4,6}}},{58,57,55,uv={{6,6},{4,6},{4,4}}},{56,55,51,uv={{2,0},{0,0},{0,2}}},{57,53,51,uv={{4,6},{6,6},{6,4}}},{54,58,56,uv={{4,6},{6,6},{6,4}}},{60,59,61,uv={{8,4},{6,4},{6,2}}},{62,61,65,uv={{8,2},{6,2},{6,4}}},{66,65,63,uv={{8,4},{6,4},{6,2}}},{64,63,59,uv={{8,2},{6,2},{6,4}}},{65,61,59,uv={{6,4},{8,4},{8,2}}},{62,66,64,uv={{6,4},{8,4},{8,2}}},{68,67,69,uv={{8,4},{6,4},{6,2}}},{73,75,76,uv={{2,0},{2,2},{4,2}}},{75,71,72,uv={{2,2},{2,0},{4,0}}},{78,72,71,uv={{4,0},{4,2},{2,2}}},{80,81,49,uv={{6,6},{4,6},{4,4}}},{21,82,48,uv={{8,2},{8,4},{6,4}}},{39,40,44,uv={{6,6},{6,4},{4,6}}},{41,45,38,uv={{4,6},{6,4},{6,6}}},{37,81,36,uv={{6,4},{4,6},{4,4}}},{23,36,81,uv={{6,4},{4,4},{4,6}}},{10,82,9,uv={{0,4},{2,4},{0,2}}},{14,83,7,uv={{0,2},{2,4},{0,4}}},{9,82,83,uv={{2,4},{0,2},{0,4}}},{13,84,12,uv={{0,4},{0,2},{2,4}}},{11,48,3,uv={{0,2},{2,2},{2,4}}},{84,48,12,uv={{0,4},{2,4},{0,2}}},{82,3,48,uv={{2,2},{0,4},{0,2}}},{9,83,14,uv={{2,4},{0,2},{2,2}}},{3,82,10,uv={{2,2},{0,2},{2,4}}},{12,48,11,uv={{0,2},{2,4},{2,2}}},{7,84,13,uv={{0,2},{2,2},{2,4}}},{34,32,30,uv={{6,2},{6,4},{8,4}}},{26,34,30,uv={{8,2},{6,2},{6,4}}},{24,34,26,uv={{6,4},{6,2},{8,2}}},{31,33,35,uv={{8,4},{6,4},{6,2}}},{27,31,35,uv={{8,2},{6,4},{6,2}}},{29,31,27,uv={{8,4},{6,4},{8,2}}},{21,45,41,uv={{6,4},{6,2},{8,2}}},{39,44,17,uv={{8,4},{6,4},{6,2}}},{8,2,1,uv={{2,2},{0,2},{1,2}}},{2,5,4,uv={{0,2},{1,4},{0,4}}},{5,8,6,uv={{1,4},{2,2},{2,4}}},{8,9,14,uv={{2,2},{0,4},{2,4}}},{13,8,14,uv={{0,4},{2,2},{0,2}}},{12,6,13,uv={{2,2},{0,4},{2,4}}},{4,12,11,uv={{2,2},{0,4},{2,4}}},{2,11,10,uv={{2,2},{0,4},{0,2}}},{9,2,10,uv={{2,2},{0,4},{2,4}}},{17,16,15,uv={{6,2},{8,4},{6,4}}},{43,17,44,uv={{8,3},{6,2},{8,2}}},{20,15,16,uv={{4,2},{2,0},{4,0}}},{84,17,46,uv={{8,2},{6,4},{6,2}}},{22,50,49,uv={{8,4},{6,2},{6,4}}},{25,26,27,uv={{28,112},{20,114},{28,114}}},{27,28,29,uv={{28,114},{20,112},{28,112}}},{36,39,41,uv={{4,4},{6,6},{4,6}}},{29,30,31,uv={{28,112},{20,114},{28,114}}},{41,37,36,uv={{4,6},{6,4},{4,4}}},{31,32,33,uv={{28,114},{20,112},{28,112}}},{33,34,35,uv={{28,112},{20,114},{28,114}}},{39,42,40,uv={{6,6},{4,4},{6,4}}},{35,24,25,uv={{28,114},{20,112},{28,112}}},{79,50,18,uv={{6,4},{4,6},{6,6}}},{44,22,43,uv={{4,2},{2,0},{4,0}}},{20,21,19,uv={{8,2},{6,4},{6,2}}},{21,22,45,uv={{6,4},{8,3},{8,4}}},{43,49,79,uv={{4,0},{2,2},{4,2}}},{82,39,83,uv={{6,2},{8,4},{8,2}}},{16,79,18,uv={{6,4},{8,2},{8,4}}},{46,48,84,uv={{2,2},{4,0},{2,0}}},{20,18,50,uv={{4,2},{2,0},{2,2}}},{17,47,46,uv={{2,2},{4,0},{2,0}}},{21,15,19,uv={{4,2},{2,0},{4,0}}},{52,53,54,uv={{6,6},{4,4},{6,4}}},{54,57,58,uv={{6,4},{4,6},{6,6}}},{58,55,56,uv={{6,6},{4,4},{6,4}}},{56,51,52,uv={{2,0},{0,2},{2,2}}},{57,51,55,uv={{4,6},{6,4},{4,4}}},{54,56,52,uv={{4,6},{6,4},{4,4}}},{60,61,62,uv={{8,4},{6,2},{8,2}}},{62,65,66,uv={{8,2},{6,4},{8,4}}},{66,63,64,uv={{8,4},{6,2},{8,2}}},{64,59,60,uv={{8,2},{6,4},{8,4}}},{65,59,63,uv={{6,4},{8,2},{6,2}}},{62,64,60,uv={{6,4},{8,2},{6,2}}},{68,69,70,uv={{8,4},{6,2},{8,2}}},{73,76,74,uv={{2,0},{4,2},{4,0}}},{75,72,76,uv={{2,2},{4,0},{4,2}}},{78,71,77,uv={{4,0},{2,2},{2,0}}},{80,49,79,uv={{6,6},{4,4},{6,4}}},{21,48,47,uv={{8,2},{6,4},{6,2}}},{23,81,80,uv={{6,4},{4,6},{6,6}}},{21,41,82,uv={{6,4},{8,2},{8,4}}},{39,17,83,uv={{8,4},{6,2},{8,2}}},{95,91,87,uv={{24,112},{16,112},{24,107}}},{91,95,88,uv={{16,108},{24,108},{24,112}}},{93,94,90,uv={{24,108},{24,112},{16,112}}},{89,92,88,uv={{16,108},{16,112},{24,112}}},{87,91,86,uv={{24,112},{16,112},{24,108}}},{86,91,85,uv={{24,108},{16,112},{16,108}}},{97,99,98,uv={{16,128},{0,128},{0,112}}},{101,100,102,uv={{8,4},{6,4},{6,2}}},{103,102,106,uv={{4,2},{2,2},{2,0}}},{106,104,105,uv={{8,4},{8,2},{6,2}}},{105,104,100,uv={{4,2},{2,2},{2,0}}},{106,102,100,uv={{8,4},{6,4},{6,2}}},{103,107,105,uv={{8,4},{6,4},{6,2}}},{109,108,110,uv={{0,96},{16,96},{16,112}}},{113,115,114,uv={{32,128},{16,128},{16,114}}},{86,85,116,uv={{24,108},{16,108},{16,104}}},{120,122,131,uv={{28,114},{28,112},{32,112}}},{125,127,129,uv={{32,112},{32,114},{28,114}}},{120,123,125,uv={{28,114},{32,114},{32,112}}},{131,122,129,uv={{32,112},{28,112},{28,114}}},{121,129,122,uv={{2,6},{4,6},{4,8}}},{131,127,125,uv={{4,2},{6,2},{6,0}}},{128,130,126,uv={{16,114},{20,114},{20,112}}},{124,126,119,uv={{16,112},{20,112},{20,114}}},{119,132,133,uv={{20,114},{20,112},{16,112}}},{133,132,134,uv={{16,112},{20,112},{20,114}}},{137,128,133,uv={{2,0},{4,0},{4,2}}},{135,134,136,uv={{16,114},{20,114},{20,112}}},{137,136,130,uv={{16,112},{20,112},{20,114}}},{126,130,132,uv={{4,4},{6,4},{6,6}}},{128,124,118,uv={{4,0},{2,0},{2,2}}},{136,134,132,uv={{4,4},{4,6},{6,6}}},{91,88,92,uv={{16,108},{24,112},{16,112}}},{93,90,89,uv={{24,108},{16,112},{16,108}}},{89,88,93,uv={{16,108},{24,112},{24,108}}},{97,98,96,uv={{16,128},{0,112},{16,112}}},{101,102,103,uv={{8,4},{6,2},{8,2}}},{103,106,107,uv={{4,2},{2,0},{4,0}}},{106,105,107,uv={{8,4},{6,2},{6,4}}},{105,100,101,uv={{4,2},{2,0},{4,0}}},{106,100,104,uv={{8,4},{6,2},{8,2}}},{103,105,101,uv={{8,4},{6,2},{8,2}}},{109,110,111,uv={{0,96},{16,112},{0,112}}},{113,114,112,uv={{32,128},{16,114},{32,114}}},{86,116,117,uv={{24,108},{16,104},{24,104}}},{120,131,123,uv={{28,114},{32,112},{32,114}}},{125,129,121,uv={{32,112},{28,114},{28,112}}},{120,125,121,uv={{28,114},{32,112},{28,112}}},{131,129,127,uv={{32,112},{28,114},{32,114}}},{121,122,120,uv={{2,6},{4,8},{2,8}}},{131,125,123,uv={{4,2},{6,0},{4,0}}},{128,126,124,uv={{16,114},{20,112},{16,112}}},{124,119,118,uv={{16,112},{20,114},{16,114}}},{119,133,118,uv={{20,114},{16,112},{16,114}}},{133,134,135,uv={{16,112},{20,114},{16,114}}},{137,133,135,uv={{2,0},{4,2},{2,2}}},{135,136,137,uv={{16,114},{20,112},{16,112}}},{137,130,128,uv={{16,112},{20,114},{16,114}}},{126,132,119,uv={{4,4},{6,6},{4,6}}},{128,118,133,uv={{4,0},{2,2},{4,2}}},{136,132,130,uv={{4,4},{6,6},{6,4}}}} } local toolgunModel = { v = {x = {},y = {},z = {}}, f = {{},{},{}}, uv = {{},{},{},{},{},{}} } for i = 1, #toolgunModelLegacy.v do toolgunModel.v.x[i] = toolgunModelLegacy.v[i][1] * 0.001 toolgunModel.v.y[i] = toolgunModelLegacy.v[i][2] * 0.001 toolgunModel.v.z[i] = toolgunModelLegacy.v[i][3] * 0.001 end for i = 1, #toolgunModelLegacy.f do toolgunModel.f[1][i] = toolgunModelLegacy.f[i][1] toolgunModel.f[2][i] = toolgunModelLegacy.f[i][3] toolgunModel.f[3][i] = toolgunModelLegacy.f[i][2] toolgunModel.uv[1][i] = toolgunModelLegacy.f[i].uv[1][1] toolgunModel.uv[2][i] = toolgunModelLegacy.f[i].uv[1][2] toolgunModel.uv[3][i] = toolgunModelLegacy.f[i].uv[3][1] toolgunModel.uv[4][i] = toolgunModelLegacy.f[i].uv[3][2] toolgunModel.uv[5][i] = toolgunModelLegacy.f[i].uv[2][1] toolgunModel.uv[6][i] = toolgunModelLegacy.f[i].uv[2][2] end -- ============================================ -- File: src/models/map.lua -- ============================================ local mapModel = araModel("c3FuDm464Obr/PuHjjLzR778e+/GXmjLzRl5o99+PffjLzR778ZeaMvNHvvx778ZeaPffj33499+MvNGXmjLzRl5o99+PffjLzR778e+/GXmjLzRl5o99+Pffj334y80e+/H/z4/+fGXmjLzR/8+PffjLzRl5o/+fHvvxl5rN8dm+OPffj33499+PffjLzRl5o99+MvNHvvx778ZeaMvNGXmj33499+xe27fFYvbd/37ju/79x3Hd/37ju/79r7F7bt8V3/fuO47juO7/v3f9+47v+/d/37v+/cdx3Hdviu3xXf9+47v+/cd3/fu/793/fuO47v+/cd3/fu/79x3Hd/37juO7/v3f9+7/v3Hcd3/fuO47v+/d/37v+/cdx3Hd/37v+/cdr/ftf79r/Fa/xWv9+1/v2d4rO8VneKzvFZ3n2b47N8dr7X2vs3x2vs3x2b47N8dm+O19r7X2vs3x2vs3x2b47X2b47X2b47X2b47N8dr7N8dm+O19nefa+zfHa+1/is3x2vtfa+P/mjOP/mj/5ozj/5o/+aP/mj/5ozj/5o/+aP/mj/5o/+aP/mj/5rsj/5rm812R/812Xf9+4499+MvNGdxeOM4zuLx3F47i8cZxnGcZxnGcZxnGcZ3F47suy7Li8d2XF47i8dxeO7Li8dxeO7LsuLx3F47suy4vHdl2XF47i8d2XZIHdkf/NH/zWL22L2x/812XZMcxzHIHIHfO+cgd8753P9+5/v3P80ex7Hse2Lz7F58e3P9+5/v3P9+NvbGXmjLzRt7Y98o98o98o29sZeaNvbGXmjb2xt7bn+a5/muXlZ3nx75Wd58ZeaMvNG3tmzzTZ5o29sZeaNvbG3tjLzRt7bO8+PfKPfKzvPuf5rn+a1/itf4rO8+5eVw8dw8dw8dw8dy8rl5XDx3LyuHjuXlZ0z7h47OsOzozjOP/lH/ymUy9kf/K5eUysOzrOjb2xt7Y/+U2ea5eVy8rl5XLyuXlcPHcPHcPHZ1h2HMplMfvzH78m90m90m91x3f9+7/vx778ZeaMvNJvdMfvzH79m+ObPNNnmu/79nefd/3Wv8Vg9tx2t79r7T8dreO3vNc/yuL34h7LN8d3/ftfdnttfdntuHjuHjuHjuOwe219re/afjtXst7zWr2XP8ri9+0/da3jtP3W7avFbtq8V3/dZ3n2v8Ul3vyB+aQPzSXe/Jd78gfmku9+S735LvfkD80gfmkD80l3vyB+aQPzSXe/Jd78l3vyB+aS735A/NIH5pLvfku9+QPzSB+aQPzSXe/Jd78gfmku9+S735LvfkD80gfmkD80l3vyB+aS735LvfkD80gfmku9+S735A/NIH5pLvfku9+S735A/NIH5pA/NJd78gfmku9+S735LvfkD80gfmkD80l3vyB+aS735Lvfku9+QPzSB+aQPzSXe/IH5pLvfku9+QPzSB+aS735LvfkD80gfmkD80l3vyXe/Jd78gfmkD80l3vyB+aS735Lvfku9+QPzSB+aQPzSXe/Jd78gfmkD80l3vyXe/IH5pLvfkD80gfmkD80gfmkD80gfmkD80gfmkD80gfmkD80l3vyXe/Jd78l3vyB+aQPzSByB+aQOQOQObvZN3smz2zd7Js9s3eybPbNntmOY5s9s3eybvZGXmm72Rl5pu9k2e2bPbNntjXujXujXusVp+/G3tjb2xt7Y29tisVmeOwvFG3tjb2xt7bT9+0/fsbysbytP37T9+0/ftP3429sbe2Nvbafvxt7bT9+0/fjb22Z47M8dmeO0/ftP37T9+0/fsLxWF4rC8Ube2Nvbbvn2759u+23fPt3z7d9tu+fbvtt322759u+fbvtt322759u+23fbbvn277bd9tu+fG3tjb22n79p+/bvn2n78f/dafv2n79p+/G3tjb2xt7Y29sbe2NvbG3ttP37T9+0/ftP34/+6P/ut3z4/+63fPj/7rT9+0/ftP3429sbe2NvbG3tjb2xt7Y29tp+/afv2n79p+/H/3R/91u+fafv2n79p+/G3tjb2xt7Y29sbe2Nvbafv2n79p+/H/3R/91u+fafv2n79p+/G3tjb2xt7Y29sbe2Nvbafvx/91u+fH/3Wn79p+/G3tjb22759u+23fbbvtt3z7d8+3fbbvn277bd9tu+23fPt32277bd9tu+23fPt32277bd8+3fbbvtt32277bd9tu+23fbbvtt3z7d9tu+23fbbvn277bd9tu+23fPt3z7d9tu+fbvtt32277bd8+3fbbvtt3z7d9tu+fbvn2759u+23fPt3z7d8+3fPt3z7d8+3fbbvn2759u+23fPt3z7d8+3fPt3z7d8+3fPt3z7d9tu+fbvn2758f/dH/z4/+fH/3R/90f/Pj/7o/+fH/z4/+6P/uj/58f/Pj/58f/Pj/58f/dH/3R/90f/Pj/58f/dH/z4/+6P/nx/90f/Pj/58f/Pj/58f/Pj/7o/+fH/z4/+fH/z4/+6P/nx/8+P/nx/8+P/nx/8+P/nx/90f/dH/z4/+fH/z4/+6P/nx/90f/Pj/58f/Pj/58f/dH/3R/8+P/nx/8+P/uj/58f/dH/3R/8+P/uj/7o/+6P/uj/7o/+6P/nx/8+P/uj/58f/dH/3R/90f/dH/3R/90f/Pj/7o/+6P/uj/7o/+6P/n2KNe6xRr3WKxRr3Wn79p+/G3tjb2xt7bT9+0/fjb22KNe6xRr3Rr3WKxRr3Wn79p+/G3tjb2xt7bT9+0/fjb22KNe6xRr3Rr3WKxRr3WKNe60/ftP3429sbe2Nvbafv2n78a90a91isUa91ijXutP37T9+NvbG3tjb22n79p+O3/lafjt/5Wn47T8dv/K3/lHnlG3mjzyjbzR55R55Rt5o281v/K0/Hb/ytPx2/8rf+Vp+O0/HG3mjzyjbzR55Rt5o280eeUeeUf/Pj/58f/Pj/59u+23fbbvtt322n79vWn79vWn79vWn79vWn79vW9afv2n79p+/b1vWn79vW9afvzD3TD3Rt7Y29sbe23ph7remHutP3429tp+/G3tjb2zD3TD3Rt7Zh7ph7o29sbe2Ye6Ye6NvbMPdG3tmHujb2xf9kX/ZID3SA91/Pfv578/ffn778gPdP335Ae6/nvxf9kX/Zfz34v+y/nvxf9l/Pfn779/Pfi/7L+e/F/2X89+QHukB7p++/P335Ae6QHun778/ffkB7r+e/F/2Rf9l/Pfi/7L+e/F/2SA90/ffn778gPdP335++/ID3RP8U//nz/+fE/xT/+fE/xT/+fE/xT/+fP/58//nz/+fP/58//nz/+fP/58//un/90//un/90//un/90//un/90T/FfHtvj23x7b49t8e2J/iif4on+KJ/iif4on+KJ/iif4on+KJ/iif4on+KJ/iif4on+KJ/iif4on+KJ/iif4on+K+PbE/xRP8UT/FE/xRP8UT/FE/xRP8UT/FfHtvj2xP8UT/FE/xXx7b49t/Pfn779/Pfv579/Pfv579/Pfv578/ffn7789eO+V8p68c9eOevHPXjvlfK+U/ffn778/ffn778/ffv578/ffn778/ffn778/ffn779/Pfv5798p68c9eO+V8r5Xynrxz14568d/Pfv579/Pfv57872e2d7PbO83nzvN5872e2d5vPnez2zvN586m806s8p1Z5TvDxzqzynVnlOrPKdTead0vKd0vKdTead4eOd4eOdTeadTead0vKd0vKdTeadTe/O8PFO8PFO8PFO8PFO8PFO8PFO8PFOrPdOpvfnU3vzulO83nzvN587zefO83nzulO6U7w8c7w8U7w8U7w8c7w8U7w8c7pTulOp/unU/3Tqb351N786m9+dTe/OrPdOrPdOrPdOrPdO6U6m9+dWe6dWe6dWe6d4eOdT/dOp/unU3mnU3mnU3mnU3mnU3mnVnlOrPKdWeU6s8p1F586i8+dRefOovPnU3mnU3mnVnlOrPKdTeadRefOrPKdRefOrPKdTeadTeadTeadRefOp/unUXnzqf7p1P907w8c6m806s8p3S8p1Z5TqzynU3mndLyneHjndLyneHjneHjneHjnU/3Tqf7p3v+2d7/tnU3mneP2TvH7J1FOrPZOop1Z7J1Z7J1P906s9k6indP353T9+d0/fnUU7p+/OrPZOop1FOrPZOop3T9+dT/dOrPZOp/unU/3Tqf7p1Z7J3T9+dRTqf7p1P906n+6dT/dMvZMvZO6XlO6XlI/ZOpefLvHO6XlOn5Tul5TL2Rv9k6m806m806m813nzqbzXefd593n3d7Lu9li8+ZeOxefMvZYvPu72WLz7u9l3eyZeOLPHZvmsXnzL2RbMvZFvskO9kh3siHsnX+fHvlGch3skO9kWeadTeadXe/OrvfnX+fId7J3S8pA5A5A5A5DPPnd72zu97Y3+6NeOWeU7peU7peU7peU7peU6l58gchnnyGefO6XlO6XlO6XlIHGvFIZ58gcgc7v/ZOl4p3f+yQb3Tul5Tu/9kg3und/7J3f+yQb3SByzynS8U7ve2Qb3SDe6N/ujXjnd/7J3f+yd3/snd/7Lv+6dS8+d0vKd0vKQOQOQb3SDe6Qb3SBzul5%Tu/9k7peUgcgczeaZvNM3mndLyu/7rv+6dLxTul5Tul5SzynU3msb3XefO6XlO6XlO6XlOpvNOpvNOpvNO6XlO6XlO6XlOpvNaPFIHId7I3+yQOQ72SByHeyLZDvZFsQ9ky9ljeU7zefY3lEPZNkWzZd/3SP2Tp+U7peU7ueadLxTqbzTqbzSzylnlOl4p0vFGvFGvFGvFLPKf5p/mmyQ72SByHeyZeyZey0eKdTeadXe/OrvfnV3vzq7351/mnX+adf5p1/mnU3mnU3mndLyndLynU3mnU3mnU3mnU3mnd6d3p3S8p3S8p3S8os807w9+d4e/O9vsneHvzun787w9+d7vZO93sndP353T9+d0/fndHmndHmnezxzvZ453R5p3s8c72+yd7fZO9vsne32Tvb7J3u8p3u8p3h787w9+d4e/O8PfneHvzvD353h787w9+d4e/O8PfneHvzvD353h787w9+d4e/O8PfndP353T9+d0/fndP353T9+d1/jncHvzun787r/HO63vzvDxzuj2Tu55p3h453h453h453h453u9k7w8c7w8c73eyd3vbO707ve2d3vbO73tnezxzvd7J3s8c73eyd7vZO93sne72TujzTujzTvDxzvDxzu9O707w8c73eU73eU7w8c73eU7w8c73eyd7fZO9njneHjneHjneHjneHjneHjneHjneHjneHjneHjnebz53u9k7vTu9O707w8c7w8c7w8c7w8c6u9+dTead7vZO93sne72Tvd7J3h453S8p1/nzun787p+/O6fvzr/PndP353S8p3S8p3h453u9k7peU7vTul5Tu9O6XlO63vzu97Z3e9s7ve2d3vbO73tnd72zut787re/O63vzut787re/O63vzut787ve2d1vfnd72zu97Z3W9+d1vfndb353T9+d7fZO93lO93lO93lO8Pfne32Tvb7J3T9+dwe/O5vsncHvzujzTvd5Tun787p+/O9vsne7yne7yne7yneHvzun7872+ydwe/O8PHO8PHG1zea5vNG0bWL22L23ZH/zWL22L22L23ZH/zXN5o2mOY5A53B78xzHO6fvzHMc7g9+Y53N9k7m+ydzfZO6fvzun787g9+d1/jndf453B77lOPODm73nzvefOt7J1vZOn7J0/ZOl7J0vZOl7J0vZOn786fvzreKdbxTreKdbxTpTpeKd/Ol4p0vFOl4p386U6U6U6fsnT9k6fvzp+/Ot5TreU63lOt5Treydb2Tp+U6flOn5Tp+U73mne8073mne8073mne807k73mne8073mne8073mne8073mncne806fvzp+/On5Tp+U6flOn5Tp+U6flOn5Tp+U6flOn5TuTvead7zTveadyd7zTvead7zTvead7zTveadPynT8p3vNO95p3873mncnT9+dP353vNOn5Tp+U6flOn5TveadPynW9k63snT8p0/ZOn7J0vZOl7J0vZOl7J0/fnT9+dbxTreKdbxTreKdKdLxTpeKdLxTpeKdKdKdKdP2Tp+ydP350/fnW8p1vKdbynW8p1vZOt7J0/KdPynR786PfnR5p0ead7z53vPne8+dHvzvefOj350eadzxzueOdzxzueOdz353vPne8+d33Tp+U7nvzue/On5Tue/O7453fHO7453ffnd9+d3353ffnc907nund907vund8c7nunc90PbD2w9s73nzvead7z4e2d7z53fdO77p3fdO9586/zTr/Pnf+2d/7Z3/tnf+adf586/z53/mnf+adfOvnX+2df7Z1/mnfzv51D3Tu+OdQ907+d3xzu+Od/O5O5O5O/nUPdOoe6dQ907+d/O/9s7+df586/zTr/bOv806+df7Z187/zTv/bOv806/zTr/NOv8+d/7Z3/tnf+adf586/z51/nzqHunf+ad/5p3/mnXzr5186+df7Z1/tnX+2df7Z1/mnf+2d/b7p1D3TqHunUPdO/nfzv5387vjnR5p3vPne8+d7z53vPne8+d7z7fdb7rfdDxw8cPNO958PHDxzvefO95873nzvefO95873nzvefO95873nzvefO958rPHO958PNDzQ80PNO958PNO959njs8dnjh5oeadHmnR5pSlKUPNKUoeaHmne8+d7z53vPh5p3vPh5p0eaXny8+Xml5873nzvefLzS8073nzvefLzTvefZ47PHZ453vPnR4rPHKVtsrbPHbOjxWeOdHine8+zxys8c73nzvefO958vPne8+d7z53vPne8+d7z53vPnR4pSttttnT8rbZ0/K2dPytnT8p0/KdPys8dnjs8dnjs8dnjs8dnjs8dnjs8dnjs8dnjs8dnjs8cflH5WeOzxx+UflZ44/KPyj8o/KPyj8o/Kzxx+UflH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O7vFd3iu7xXd4ru8V3eK7vFd3iu7xXd4ru8V3eK4/bcftuP23H7bj9t3eK73Xe673TvefOj2zvefOj2zo9s73nzvefOj2zvefOj2zvefO9586PbO95873nzo9s6PbO95873nzo9s6PbOj2zo9t3unR7Z0e2dHtu7xXd4rj9tx+24/bOj23H7bj9tx+2dHtu7xTvefcftuP23HcftuP23H7Z0e2d7z7j9s6PbKUpSlKUpSne8+d7z53vPne8+d7z53vPne8+U73nzvefO95873nzvefO95873nylOj2ylO77p3fdO77p3fdH5S8+3z5efO95873nzve6dXnzveKdW+OdX/KdTTqL3TqPxTveKdS8+d2d/4p0/HO97p0p3vdOt4p3/tnd8c6u8p1d7J3vdOjxTuzve6dF3il5XTq8+Pyj8p3vPh7ZTq8+dXnzq8+d7z53vPne8+d7z51efF7IvZJe/Je/Je/H450eaL2R+OPxx+OdHmi9kXsi9kl78l78fjnV586PNF7J0eadXnzveOdXnx+U6vPi9kXskvfkvfi9kXskvfkvfi9kfjj8cfji9kXsj8cl78fjj8cXsi9kXsi9kl78l78l78l78l78l78l78fjj8cfji9kXsnR5o/KL2R+Ul78l78vbH5SXvzq9s6vKdTeKd3ynU3lO75Tq3zTqzzTqLzTqL2zo8073nzpeOdS9+dXlOr3To80flOrz51efOrz4/KPyj8o/KPyj8o/KPylO95873nzvefH5R+UflH5R+UflO958vbL2zq9s6PNOjzTveOd7xzo806PNO75TveOd3ynd8p3vPne8+Pyj8o/KdXnx+UflH5Tq9s6vbOjzTq9s6PNOr2zq9s6PNOjzTq9s6vbOr2zq8p0eadXtnR5p1e2dHmnR5p0eadHmnR5p1efDzTvefDzTvefO958PNO958PNO958PNO958PNO958PNO958PbD2w8073nw80PdD3Q80PNDzTvefDzTvefDzTvefDzTvefO95TveU73lO95Tq9s6vbOr2zq9sPNDzTo9073nzvefO9586PdOj3To90vbOqdUvbOqXtnR7p0e6dU6p1TqnR5pe2XtlL2w9s6p1S9s6oe6HunVD2y9s6p1Tqne8p0e6dHune8+d7z53vPne8+d7z53vPne8+d7z53vKd7z53vPnVOr2zq9s6p3vPn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Tq4eadSbxTqTeKdXDzTq4eadSbxTq4eadSbxTq4eadSbxTr98c6/fHOv3xzqT/KdSf5TqT/KdSf5Tr98c6k3inUm8U69vdOoN451BvHOvb3Tr2906k3inUm8U6k3inXt7p17e6dSbxTqTeKde3unXt7p1BeydSbxTr29069vdOvb3TqTeKdSXmnUl5p1BeydSbxTr2906gvZOoL2TqC9k6gvZOvb3Tr29069vdOvb3TqS806kvNOpLzTqS806k3inUm8U6k3inUm8U6k3inUl5p1Beyde3unUm8U6k3inXt7p1DfKdQ3ynUH+/OoP9+dQf786hvlOoP9+dQf786hvlOob5Tr98U6/fFOv3xTr98U6/ffnX7786/ffnX7786/fFOv3xTr98U6/fFOv3xTr98U6/fFOv3xTr98U6/fFOv3xTr98U6/ffnX7786/ffnX7786k/ynUn+U6k/ynUn+U6k+dSfOpPnUnzqT/KdSf5TqT/KdSf5TqT/KdSf5TqT/KdSf5TqT/KdSf5TqT/KdSf5TqT51J86k+dSfdtx+a7bj8123bcfmuPzWb47tu/7rT9+0/fsVis3x2b47N8ditP37v+64eO4eO4eO4eO7bB79rWtbvttHitHiu/d+7fddvuuHmuHmuHmuHms32Wb7Let63fbbvtt322jxWjxWjxXDzWb7LWu/ZvsuHmsHv3b7rWsHv3fu33Wb7LN9l37WsHv2n79p+/d/3Xf91m+OzfHYrFYrFafv2n79o81o81u+y0/fuHju27btu27/uu/7rv+67/uu/7rT9+0/ft32WjzWn793/dafv3f91itP37N8d3/ddt23Dx3f91w8do8Vu+23fbafv3f91w8dw8dw8dm+OzfHZ3n2DzWDzWt7ri9+4vfu32Xb7LO8+7fdcfv3LyuXlYPNZ3n2DzXb7Lt9ly8ri9+4vftb3W77LR5rW91nefcvK1vdbvst32WjzTun4p1c/2zun4p1c/22KLPdFnuiz3WKxvKdLJ1c/2zut7p0+8U6h3snUO9k6WTpZO63unT7xTut7p0+8U6feKdPvFOlk6h3snUO9k6uf7Z1c/2zqHeydLJ3W907ve/H787re6dL35vbN7Z1vHOrm8US8Ui8+xvKPzSLz5168p1cvfnXrynU0i8+dTWKdLLG8pi9+YvfmPz53fdO6vbOrn+2dXP9s6u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$") -- ============================================ -- File: src/physic/physic.lua -- ============================================ -- Minkowski support A-B local function supportMinkowski(A, B, dir) local p1, p2 local dirX, dirY, dirZ = vecUnpack(dir) do local maxDot = -math.huge for i = 1, #A do local vert = A[i] local vx, vy, vz = vecUnpack(vert) local dot = vx * dirX + vy * dirY + vz * dirZ if dot > maxDot then maxDot = dot p1 = vert end end end do local minDot = math.huge for i = 1, #B do local vert = B[i] local vx, vy, vz = vecUnpack(vert) local dot = vx * dirX + vy * dirY + vz * dirZ if dot < minDot then minDot = dot p2 = vert end end end return {v = vecSub(p1, p2), a = p1, b = p2} end -- Simplified simplex handling local function handleSimplex(simplex, dir) if #simplex == 2 then ------ Line segment ------ local b, a = simplex[1].v, simplex[2].v local ax, ay, az = vecUnpack(a) local bx, by, bz = vecUnpack(b) local abx, aby, abz = bx - ax, by - ay, bz - az local cpx = abz * ay - aby * az local cpy = abx * az - abz * ax local cpz = aby * ax - abx * ay dir = vec3( cpy * abz - cpz * aby, cpz * abx - cpx * abz, cpx * aby - cpy * abx ) return false, dir elseif #simplex == 3 then ------ Triangle ------ local c, b, a = simplex[1].v, simplex[2].v, simplex[3].v local ab = vecSub(b, a) local ac = vecSub(c, a) local ao = vecNeg(a) local abc = vecCross(ab, ac) if vecDot(vecCross(abc, ac), ao) > 0 then simplex[2] = simplex[3] -- Left a and c simplex[3] = nil dir = vecCross(vecCross(ac, ao), ac) elseif vecDot(vecCross(ab, abc), ao) > 0 then simplex[1] = simplex[2] -- Left a and b simplex[2] = simplex[3] simplex[3] = nil dir = vecCross(vecCross(ab, ao), ab) else if vecDot(abc, ao) > 0 then dir = abc else simplex[1], simplex[2] = simplex[2], simplex[1] -- swap b and c dir = vecNeg(abc) end end return false, dir elseif #simplex == 4 then ------ Tetrahedron ------ local d, c, b, a = simplex[1].v, simplex[2].v, simplex[3].v, simplex[4].v local ao = vecNeg(a) local ab = vecSub(b, a) local ac = vecSub(c, a) local ad = vecSub(d, a) local abc = vecCross(ab, ac) local acd = vecCross(ac, ad) local adb = vecCross(ad, ab) -- Check if the origin is inside the tetrahedron if vecDot(abc, ao) > 0 then -- Delete d simplex[1], simplex[2], simplex[3] = simplex[2], simplexrx[3], simplex[4] simplex[4] = nil dir = abc return false, dir end if vecDot(acd, ao) > 0 then -- Delete b simplex[1], simplex[2], simplex[3] = simplex[1], simplex[2], simplex[4] simplex[4] = nil dir = acd return false, dir end if vecDot(adb, ao) > 0 then -- Delete c simplex[1], simplex[2], simplex[3] = simplex[3], simplex[1], simplex[4] simplex[4] = nil dir = adb return false, dir end -- Origin is outside the tetrahedron return true, dir end end -- The main loop of GJK local function gjkIntersect(A, B) local dir = vec3(1, 0, 0) -- Initial direction local simplex = {supportMinkowski(A, B, dir)} dir = vecNeg(simplex[1].v) for _ = 1, 20 do local pointA = supportMinkowski(A, B, dir) local dotProd = vecDot(pointA.v, dir) if dotProd < 0 then return false, nil -- No intersection end simplex[#simplex+1] = pointA local result result, dir = handleSimplex(simplex, dir) if result then return true, simplex -- Intersection end end return false, nil -- No intersection (timeout) end -- Barycentric Weights local function barycentricWeights(p, a, b, c) local ax, ay, az = vecUnpack(a) local bx, by, bz = vecUnpack(b) local cx, cy, cz = vecUnpack(c) local px, py, pz = vecUnpack(p) local vx0, vy0, vz0 = bx - ax, by - ay, bz - az local vx1, vy1, vz1 = cx - ax, cy - ay, cz - az local vx2, vy2, vz2 = px - ax, py - ay, pz - az local d00 = vx0 * vx0 + vy0 * vy0 + vz0 * vz0 local d01 = vx0 * vx1 + vy0 * vy1 + vz0 * vz1 local d11 = vx1 * vx1 + vy1 * vy1 + vz1 * vz1 local d20 = vx2 * vx0 + vy2 * vy0 + vz2 * vz0 local d21 = vx2 * vx1 + vy2 * vy1 + vz2 * vz1 local denom = d00 * d11 - d01 * d01 local v = (d11 * d20 - d01 * d21) / denom local w = (d00 * d21 - d01 * d20) / denom local u = 1.0 - v - w return u, v, w end -- EPA (Expanding Polytope Algorithm) local function epaIntersect(A, B, simplex) local max_iterations = 20 local tolerance = 1e-3 local function makeFace(a, b, c) local v1 = vecSub(b.v, a.v) local v2 = vecSub(c.v, a.v) local normal = vecNormalize(vecCross(v1, v2)) return { a = a, b = b, c = c, normal = normal, distance = vecDot(normal, a.v) } end local faces = { makeFace(simplex[1], simplex[2], simplex[3]), makeFace(simplex[1], simplex[3], simplex[4]), makeFace(simplex[1], simplex[4], simplex[2]), makeFace(simplex[2], simplex[4], simplex[3]) } for _ = 1, max_iterations do -- Looking for the closest face local face = nil local minDist = math.huge for i = 1, #faces do local curFace = faces[i] if curFace.distance < minDist then minDist = curFace.distance face = curFace end end if not face then return nil end -- Support point in the opposite direction local p = supportMinkowski(A, B, face.normal) local dist = vecDot(p.v, face.normal) -- If the distance is within tolerance, we have a contact point if dist - face.distance < tolerance then local pointOnFace = vecScale(face.normal, face.distance) local u, v, w = barycentricWeights(pointOnFace, face.a.v, face.b.v, face.c.v) local pa = vecAdd(vecAdd(vecScale(face.a.a, u), vecScale(face.b.a, v)), vecScale(face.c.a, w)) local pb = vecAdd(vecAdd(vecScale(face.a.b, u), vecScale(face.b.b, v)), vecScale(face.c.b, w)) local contactPoint = vecScale(vecAdd(pa, pb), 0.5) return face.normal, face.distance, contactPoint end local toRemove = {} for i = 1, #faces do local f = faces[i] if vecDot(f.normal, vecSub(p.v, f.a.v)) > 0 then table.insert(toRemove, i) end end local edges = {} local function addEdge(a, b) for i = #edges, 1, -1 do local e = edges[i] if e[1] == b and e[2] == a then table.remove(edges, i) return end end table.insert(edges, { a, b }) end table.sort(toRemove, function(a, b) return a > b end) for i = 1, #toRemove do local f = table.remove(faces, toRemove[i]) addEdge(f.a, f.b) addEdge(f.b, f.c) addEdge(f.c, f.a) end for i = 1, #edges do local edge = edges[i] table.insert(faces, makeFace(edge[1], edge[2], p)) end end return nil end local function resolveCollision(objA, objB, mtvAxis, penetrationDepth, collisionPoint) local n = vecNeg(vecNormalize(mtvAxis)) -- collision normal from A to B if vecLengthSquared(n) < 1e-6 then return end local isStaticA = (objA.mass == math.huge) or (objA.inertia == math.huge) local isStaticB = (objB.mass == math.huge) or (objB.inertia == math.huge) if isStaticA and isStaticB then return end -- Position correction local correction = vecScale(n, penetrationDepth) if isStaticA then objB.pos = vecSub(objB.pos, correction) elseif isStaticB then objA.pos = vecAdd(objA.pos, correction) else local totalMass = objA.mass + objB.mass objA.pos = vecAdd(objA.pos, vecScale(correction, objB.mass / totalMass)) objB.pos = vecSub(objB.pos, vecScale(correction, objA.mass / totalMass)) end -- Relative vectors from centers to contact point local rA = vecSub(collisionPoint, objA.pos) local rB = vecSub(collisionPoint, objB.pos) -- Velocity at collision points local vA = isStaticA and vec3() or vecAdd(objA.vel, vecCross(objA.angVel, rA)) local vB = isStaticB and vec3() or vecAdd(objB.vel, vecCross(objB.angVel, rB)) local relVel = vecSub(vA, vB) local relVelN = vecDot(relVel, n) if relVelN >= 0 then return end -- No collision local restitution = 0.2 local velLn = vecLength(vecSub(objA.vel, objB.vel)) if velLn < 10 then restitution = max(0, velLn - 5) / 5 * 0.2 end local friction = min(objA.friction or 0.5, objB.friction or 0.5) -- Effective mass terms local crossAN = isStaticA and vec3() or vecCross(rA, n) local crossBN = isStaticB and vec3() or vecCross(rB, n) local termA = isStaticA and 0 or vecLengthSquared(crossAN) / objA.inertia local termB = isStaticB and 0 or vecLengthSquared(crossBN) / objB.inertia local invMassA = isStaticA and 0 or 1 / objA.mass local invMassB = isStaticB and 0 or 1 / objB.mass local denom = invMassA + invMassB + termA + termB local j = -(1 + restitution) * relVelN / denom -- Apply impulse if not isStaticA then objA.vel = vecAdd(objA.vel, vecScale(n, j * invMassA)) local nj = vecScale(n, j) local cross_rA_nj = vecCross(rA, nj) objA.angVel = vecAdd(objA.angVel, vecScale(cross_rA_nj, 1 / objA.inertia)) end if not isStaticB then objB.vel = vecSub(objB.vel, vecScale(n, j * invMassB)) local nj = vecScale(n, j) local cross_rB_nj = vecCross(rB, nj) objB.angVel = vecSub(objB.angVel, vecScale(cross_rB_nj, 1 / objB.inertia)) end -- Friction impulse local vA2 = isStaticA and vec3() or vecAdd(objA.vel, vecCross(objA.angVel, rA)) local vB2 = isStaticB and vec3() or vecAdd(objB.vel, vecCross(objB.angVel, rB)) local relVelPost = vecSub(vA2, vB2) local tangent = vecSub(relVelPost, vecScale(n, vecDot(relVelPost, n))) local tanLen = vecLength(tangent) if tanLen > 1e-6 then tangent = vecScale(tangent, 1 / tanLen) local crossAT = isStaticA and vec3() or vecCross(rA, tangent) local crossBT = isStaticB and vec3() or vecCross(rB, tangent) local termT_A = isStaticA and 0 or vecLengthSquared(crossAT) / objA.inertia local termT_B = isStaticB and 0 or vecLengthSquared(crossBT) / objB.inertia local denomT = invMassA + invMassB + termT_A + termT_B local jt = -vecDot(relVelPost, tangent) / denomT local jtMax = friction * j if jt > jtMax then jt = jtMax elseif jt < -jtMax then jt = -jtMax end if not isStaticA then objA.vel = vecAdd(objA.vel, vecScale(tangent, jt * invMassA)) objA.angVel = vecAdd(objA.angVel, vecScale(vecCross(rA, vecScale(tangent, jt)), 1 / objA.inertia)) end if not isStaticB then objB.vel = vecSub(objB.vel, vecScale(tangent, jt * invMassB)) objB.angVel = vecSub(objB.angVel, vecScale(vecCross(rB, vecScale(tangent, jt)), 1 / objB.inertia)) end end end -- ============================================ -- File: src/physic/map.lua -- ============================================ local function createMap(model) local faceWidth = 0.02 local BVH = buildMapBVH(model) local this = { model = model, BVH = BVH } -- Model rendering function this.draw() renderModel(this.model, plr.cameraMat, false, 1) end return this end -- ============================================ -- File: src/physic/rigidBody.lua -- ============================================ local function rigidBody(model, pos, rotation, friction, mass, inertia, gravity) local this = { isRigidBody = true, -- Always true (used to determine type) model = model, -- Object model pos = pos or vec3(), -- Position (vector) vel = vec3(), -- Velocity (vector) acc = vec3(), -- Acceleration (vector) rotation = rotation or quat(), -- Rotation (quaternion) angVel = vec3(), -- Angular velocity (vector) friction = friction or 0.5, -- Friction (number, [0 - 1]) mass = mass or 1, -- Mass (number) inertia = inertia or 1, -- Inertia (number) gravity = gravity, -- Is gravity enabled (boolean) isSleeping = false, -- Is object sleeping (boolean) sleepTime = 0, -- Sleeping time (number) mat = nil, -- Model matrix processedV = {}, -- Processed vertices AABB = nil, -- Axis-Aligned Bounding Box } if gravity == nil then this.gravity = true end -- Model rendering function this.draw() renderModel( this.model, matMul( plr.cameraMat, this.mat ) ) end function this.drawOutline(color) renderModelOutline( this.model, color, matMul( plr.cameraMat, this.mat ) ) end -- Debug function this.traceDebug(name) trace("----------") if name then trace(f("Name: %s", name), 12) end trace(f("Position: %s", vecStr(this.pos)), 12) trace(f("Velocity: %s", vecStr(this.vel)), 12) trace(f("Angular velocity: %s", vecStr(this.angVel)), 12) trace(f("Friction: %f", this.friction), 12) trace(f("Mass: %f", this.mass), 12) trace(f("Inertia: %f", this.inertia), 12) trace(f("Gravity: %s", this.gravity), 12) trace("") end -- Physics integration function this.integrate(dt) local damping = 0.98 ^ dt if this.mass ~= math.huge then this.pos = vecAdd(this.pos, vecScale(this.vel, dt)) this.vel = vecAdd(this.vel, vecScale(this.acc, dt)) end if this.inertia ~= math.huge then this.rotation = quatRotateByVec(this.rotation, vecScale(this.angVel, dt)) this.angVel = vecScale(this.angVel, damping) end if vecLength(this.vel) > 0.2 or vecLength(this.angVel) > 0.2 then this.sleepTime = 0 this.isSleeping = false else this.sleepTime = this.sleepTime + dt if this.sleepTime > 1 then this.isSleeping = true this.vel = vec3() this.angVel = vec3() end end end -- Add force to the object function this.addForce(force, ignoreMass) this.sleepTime = 0 this.isSleeping = false if ignoreMass then this.acc = vecAdd(this.acc, force) else this.acc = vecAdd(this.acc, vecScale(force, 1 / this.mass)) end end function this.isStatic() return (this.mass == math.huge) or (this.inertia == math.huge) or (this.isSleeping) end function this.update() -- Updating model matrix this.mat = matMul( matPos(vecUnpack(this.pos)), matFromQuat(this.rotation) ) -- Updating vertices local bodyVertices = transformVertices(this.model, this.mat) this.processedV = bodyVertices -- Updating AABB local AABB = { xmin = math.huge, ymin = math.huge, zmin = math.huge, xmax = -math.huge, ymax = -math.huge, zmax = -math.huge } for i = 1, #bodyVertices do local vx, vy, vz = vecUnpack(bodyVertices[i]) AABB.xmin = min(AABB.xmin, vx) AABB.ymin = min(AABB.ymin, vy) AABB.zmin = min(AABB.zmin, vz) AABB.xmax = max(AABB.xmax, vx) AABB.ymax = max(AABB.ymax, vy) AABB.zmax = max(AABB.zmax, vz) end this.AABB = AABB end return this end -- ============================================ -- File: src/physic/scene.lua -- ============================================ local faceBody = { pos = vec3(), vel = vec3(), acc = vec3(), rotation = quat(), angVel = vec3(), friction = 0.8, mass = math.huge, inertia = math.huge, } local function scene(name, map, gravity) local this = { name = name or "New scene", bodies = {}, map = map, gravity = gravity or vec3(0, -14, 0), iterations = 5, -- Number of iterations for the solver constraints = { ropes = {} } } function this.addBody(rigidBody) if not rigidBody then error("Rigid body is nil", 2) end this.bodies[#this.bodies+1] = rigidBody end function this.removeBody(rigidBody) for i = 1, #this.bodies do if this.bodies[i] == rigidBody then table.remove(this.bodies, i) break end end for i = #this.constraints.ropes, 1, -1 do local constraint = this.constraints.ropes[i] if constraint.bodyA == rigidBody or constraint.bodyB == rigidBody then table.remove(this.constraints.ropes, i) end end end function this.newBody(...) local rigidBody = rigidBody(...) this.addBody(rigidBody) return rigidBody end function this.addRope(bodyA, bodyB, length, bounce) assert(bodyA.isRigidBody, "Body A is not a rigid body") assert(bodyB.isRigidBody, "Body B is not a rigid body") local constraint = { bodyA = bodyA, bodyB = bodyB, length = length, bounce = bounce or 0.5 } this.constraints.ropes[#this.constraints.ropes+1] = constraint return constraint end function this.draw() -- Background cls(0) -- Map this.map.draw() -- Objects for i = 1, #this.bodies do local rigidBody = this.bodies[i] rigidBody.draw() end -- Constraints for i = 1, #this.constraints.ropes do local constraint = this.constraints.ropes[i] renderLine(constraint.bodyA.pos, constraint.bodyB.pos, 9, plr.cameraMat) end end function this.solve(dt) local damping = 0.99 ^ dt -- Integrate for i = 1, #this.bodies do local rigidBody = this.bodies[i] rigidBody.integrate(dt) rigidBody.update() end -- Constraints for i = 1, #this.constraints.ropes do local constraint = this.constraints.ropes[i] local bodyA = constraint.bodyA local bodyB = constraint.bodyB -- Vector between object centers local d = vecSub(bodyB.pos, bodyA.pos) local dist = vecLength(d) -- If the distance is greater than the maximum length, apply a constraint if dist > constraint.length then d = vecScale(d, 1 / dist) -- How far is the distance greater than it should be local err = dist - constraint.length -- Rope stretch speed local speed = vecDot(vecSub(bodyB.vel, bodyA.vel), d) speed = max(speed, 0) -- Final impulse local impulse = (speed + constraint.bounce * err) * (bodyA.mass + bodyB.mass) bodyA.addForce(vecScale(d, impulse)) bodyB.addForce(vecScale(d, -impulse)) end end -- Collision with other bodies for i = 1, #this.bodies do for j = i + 1, #this.bodies do local bodyA = this.bodies[i] local bodyB = this.bodies[j] if not (bodyA.isStatic() and bodyB.isStatic()) and checkAABB(bodyA.AABB, bodyB.AABB) then local isCollided, simplex = gjkIntersect(bodyA.processedV, bodyB.processedV) if isCollided then local normal, depth, point = epaIntersect(bodyA.processedV, bodyB.processedV, simplex) if normal then resolveCollision(bodyA, bodyB, normal, depth, point) bodyA.angVel = vecScale(bodyA.angVel, damping) bodyB.angVel = vecScale(bodyB.angVel, damping) end end end end end -- Collision with map for i = 1, #this.bodies do local body = this.bodies[i] if not body.isStatic() then local tris = intersectBVH(body.AABB, this.map.BVH) for j = 1, #tris do local fv = tris[j].points local isCollided, simplex = gjkIntersect(body.processedV, fv) if isCollided then local normal, depth, point = epaIntersect(body.processedV, fv, simplex) if normal then resolveCollision(body, faceBody, normal, depth, point) body.angVel = vecScale(body.angVel, damping) end end end end end -- Remove bodies that fall out of the map for i = #this.bodies, 1, -1 do local posX, posY, posZ = vecUnpack(this.bodies[i].pos) if posY < -64 then table.remove(this.bodies, i) end end end function this.update(dt) for i = 1, this.iterations do this.solve(dt / this.iterations) end -- Reset acceleration for i = 1, #this.bodies do local body = this.bodies[i] if body.gravity then body.acc = this.gravity else body.acc = vec3() end end end return this end -- ============================================ -- File: src/mouse.lua -- ============================================ local mx, my, whl local cl1, cl2, cl3 local clp1, clp2, clp3 local mt1, mt2, mt3 local function updateMouse() mx, my, cl1, cl2, cl3, _, whl = mouse() if cl1 then mt1 = mt1 + 1 else mt1 = 0 end if cl2 then mt2 = mt2 + 1 else mt2 = 0 end if cl3 then mt3 = mt3 + 1 else mt3 = 0 end clp1 = (mt1 == 1) clp2 = (mt2 == 1) clp3 = (mt3 == 1) end -- ============================================ -- File: src/player.lua -- ============================================ local plrModel = { v = { x = { 0.3, 0.3, 0.3, 0.3, -0.3, -0.3, -0.3, -0.3}, y = { 0.5, -1.2, 0.5, -1.2, 0.5, -1.2, 0.5, -1.2}, z = { 0.3, 0.3, -0.3, -0.3, 0.3, 0.3, -0.3, -0.3} }, f={{},{},{}}, uv={} } plr = { collider = rigidBody( plrModel, -- Model vec3(0, 2, -10), -- Position nil, -- Rotation 0.9, -- Friction 75, -- Mass 999999, -- Inertia false -- Gravity ), -- Camera rotation angles in radians pitch = 0, yaw = 0, roll = 0, -- Player movement speed speed = 10, -- Stuff for walking sound walkingtick = 0, -- Camera transformation matrix cameraMat = nil, -- Debug menu debug = false, -- Flying mode flying = true, -- Physic gun physgun = { selected = nil, length = nil } } plr.collider.isPlayer = true plr.collider.this = plr local spawnList = { cubeModel[1], cubeModel[2], cubeModel[3], cubeModel[4], sphereModel, dodecahedrons[1], dodecahedrons[2], icosahedrons[1], icosahedrons[2] } function plr.update(dt) local moveX, moveY, moveZ = 0, 0, 0 if key(23) then moveZ = moveZ + 1 end if key(19) then moveZ = moveZ - 1 end if key(1) then moveX = moveX - 1 end if key(4) then moveX = moveX + 1 end if key(48) then moveY = moveY + 1 end if key(63) then moveY = moveY - 1 end if key(64) then plr.speed = 20 else plr.speed = 10 end if keyp(49) then plr.debug = not plr.debug end if keyp(22) then plr.flying = not plr.flying plr.collider.gravity = not plr.flying end -- Jumping if not plr.flying and keyp(48) then plr.collider.acc = vecAdd(plr.collider.acc, vec3(0, 300, 0)) Nya.play("jumping") end -- Movement vector creation and normalization local moveVec = vec3(moveX, moveY, moveZ) moveVec = vecNormalize(moveVec) -- Normalize to ensure consistent speed in all directions moveVec = vecScale(moveVec, plr.speed) -- Apply speed factor -- Rotate movement vector based on player yaw moveVec = vecRot(moveVec, matRotateY(-plr.yaw)) -- Update player acceleration local newAcc = vecScale(vecSub(moveVec, plr.collider.vel), 20) if plr.flying then plr.collider.acc = newAcc else local accX, accY, accZ = vecUnpack(newAcc) plr.collider.acc = vecAdd(plr.collider.acc, vec3(accX, 0, accZ)) end if not plr.flying and vecLength(moveVec) > 0.1 then plr.walkingtick = plr.walkingtick - dt if plr.walkingtick < 0 then Nya.play("walking") plr.walkingtick = 0.66 end else plr.walkingtick = 0.1 end -- Camera rotation based on mouse input plr.pitch = plr.pitch - my * 0.01 plr.yaw = plr.yaw - mx * 0.01 plr.pitch = clamp(plr.pitch, -pi2, pi2) plr.yaw = plr.yaw % tau -- collider restriction plr.collider.rotation = quat() plr.collider.angVel = vec3() end function plr.updateCameraMat() local posX, posY, posZ = vecUnpack(plr.collider.pos) plr.cameraMat = matCombine( matScreen(), matProjection(90), matRotateZ(plr.roll), matRotateX(plr.pitch), matRotateY(plr.yaw), matPos(-posX, -posY, -posZ) ) end function plr.updatePhysgun(dt, scene) local physgun = plr.physgun local startPos = plr.collider.pos local dir = eulerToVec(plr.pitch, plr.yaw, plr.roll) -- Object placement for i = 1, #spawnList do if keyp(27 + i) then local pos = vecAdd(startPos, vecScale(dir, 4)) scene.newBody( spawnList[i], -- Model pos, -- Position nil, -- Rotation 0.9, -- Friction 10, -- Mass 10/3 -- Inertia ) Nya.play("objectspawn") end end if keyp(26) and #scene.bodies > 1 then Nya.play("undo") scene.removeBody(scene.bodies[#scene.bodies]) end if clp1 then Nya.play("toolgun1") end if clp3 then Nya.play("toolgun2") end -- if not cl1 then physgun.selected = nil physgun.length = nil return end if not physgun.selected and clp1 then local nearest = nil local nearestDist = math.huge for i = 1, #scene.bodies do local body = scene.bodies[i] if body.mass ~= math.huge then local hit, dist = collRayRigidbody(startPos, dir, body) if hit and dist < nearestDist then nearest = body nearestDist = dist end end end if nearest then physgun.selected = nearest physgun.length = vecLength(vecSub(startPos, nearest.pos)) end elseif physgun.selected then physgun.length = max(1, physgun.length + whl * 0.5) local desired = vecAdd(startPos, vecScale(dir, physgun.length)) local delta = vecSub(desired, physgun.selected.pos) physgun.selected.vel = vecLerp( physgun.selected.vel, vecScale(delta, 10), 0.5 ) physgun.selected.angVel = vecScale(physgun.selected.angVel, 0.8) if keyp(7) then physgun.selected.vel = vecScale(dir, 25.0) physgun.selected = nil physgun.length = nil end end end function plr.renderPhysgun() local physgun = plr.physgun -- Toolgun 3D model local plrX, plrY, plrZ = vecUnpack(plr.collider.pos) local modelMat = matCombine( matScreen(), matProjection(90), matRotateX(plr.pitch * 0.01), matPos(0.5, -0.25, 0.8), matRotateZ(sin(time() * 0.001) * 0.01), matRotateY(pi) ) renderModel(toolgunModel, modelMat, true) -- Selected object outline if physgun.selected then renderModelOutline( physgun.selected.model, 8, matMul( plr.cameraMat, physgun.selected.mat ) ) end end -- ============================================ -- File: src/main.lua -- ============================================ -- Scene objects local mainMap = createMap(mapModel) local mainScene = scene("Main scene", mainMap) mainScene.addBody(plr.collider) --[[ for x = 1, 5 do for y = 1, x do local pos = vec3( (x - 2 - y * 0.5) * 1.2, y - 0.5, 0 ) local modelID = (x + y) % 4 + 1 mainScene.newBody( cubeModel[modelID], -- Model pos, -- Position nil, -- Rotation 0.9, -- Friction 10, -- Mass 10/3 -- Inertia ) end end mainScene.newBody( sphereModel, -- Model vec3(5, 0, 5), -- Position nil, -- Rotation 0.5, -- Friction 50.0, -- Mass 50.0*1.6, -- Inertia true -- Gravity ) mainScene.newBody( dodecahedrons[2], vec3(5, 0, 0), nil, 0.5, 50.0, 50.0*1.6, true ) mainScene.newBody( icosahedrons[2], vec3(8, 0, 0), nil, 0.5, 50.0, 50.0*1.6, true ) ]] poke(0x7FC3F,1,1) collectgarbage("stop") local updateDTtime = 60 local dt = 1/60 mainScene.update(dt) Nya.play("ambient", true, 0.2) function TIC() debug.start() vbank(1) -- Input updating updateMouse() -- Player updating plr.update(dt) plr.updatePhysgun(dt, mainScene) plr.updateCameraMat() debug.addtime("Updating") -- Scene updating mainScene.update(dt) debug.addtime("Physics") if updateDTtime < 0 then if debug.medFps > 80 then mainScene.iterations = min(10, mainScene.iterations + 1) updateDTtime = 60 elseif debug.medFps < 60 then mainScene.iterations = max(3, mainScene.iterations - 1) updateDTtime = 60 end else updateDTtime = updateDTtime - 1 end -- Sound playback Nya.update() -- Rendering mainScene.draw() vbank(0) cls(0) vbank(1) -- Z-buffer clearing plr.renderPhysgun() pix(120, 68, 15) -- Crosshair if plr.flying then print("Noclip", 104, 81, 1) print("Noclip", 104, 80, 15) end debug.addtime("Rendering") -- Debug collectgarbage("collect") debug.addtime("Collectgarbage") debug.finish() if plr.debug then local debugText = { f("Ara physic engine v 1.0"), f("%0.1f FPS", debug.medFps), f("Frame %0.1f ms", debug.curFramerate), f("Player pos %s", vecStr(plr.collider.pos)), f("Objects: %i", #mainScene.bodies), f("Iterations: %i", mainScene.iterations), f("Sounds: %i", #Nya.playing), } for i = 1, #debugText do local text = debugText[i] local textLen = print(text, 240, 0) rect(0, (i - 1) * 8, textLen + 1, 8, 1) print(text, 1, (i - 1) * 8 + 1, 15) end local maxLen = 0 for _, val in ipairs(debug.medRate) do maxLen = max(maxLen, #val.name) end for i, val in ipairs(debug.medRate) do print(val.name, 1, 137 - i * 8, 15, true, 1, true) print(f("%.2f ms.", val.val), maxLen * 4 + 8, 137 - i * 8, 15, false, 1, true) end end vbank(0) cls(13) dt = min(1/60, debug.curFramerate) end function BDR(bdrY) local height = math.tan(-plr.pitch) * 120 + bdrY - 72 -- sky local skyMask = smoothstep(-150, -20, height) local R = lerp(114, 185, skyMask) local G = lerp(204, 230, skyMask) local B = lerp(242, 250, skyMask) -- Ground local groundMask = smoothstep(-15, 15, height) R = lerp(R, 167, groundMask) G = lerp(G, 176, groundMask) B = lerp(B, 176, groundMask) --result poke(16359, clamp(R, 0, 255)) poke(16360, clamp(G, 0, 255)) poke(16361, clamp(B, 0, 255)) end -- ============================================ -- End of cartridge -- Resources included: 4 -- Resource summary: -- Main: MAP, PALETTE, SPRITES, TILES -- Resource banks used: 1 -- ============================================ -- ============================================ -- Resource Data -- ============================================