0,]']±>Sï}WÿÍu§ğp8·d%qy)6o;]ÉA¦ösï÷ôôô”°ÂVl†3? @ABCDEFGHIJKLMNO‡ˆ QRSTUVWXYZ[\]^_ŸĞÑcdefghijklno®¯àáâââãäåâââæçƒtuvwxyz{|}~¾¿ğñòòóôôõö÷ôôø“”•–—™ÎÏÒÓÓÔȸ°¡¢£°¤¥¦§˜©ÃÄ…†‚‘’èØ °±²³° µ¶·¨¹º»¼ÀÁÂP € m ` ‰Š‹ŒÉÊËÌÅÆÇŒ a r š›œÙÚÛÜÕÖ× qr   r ª«¬éêëì ´   ùúûü  İŞß­  íîï½  ışÿÍ   }ÀÀÀÀÀÁÃÆÀÀ À À À Ã Æ É ÏÏÏÏÏÏÏÏÏÏÏÏÏÏ%€€‚ƒ„…†‡ˆ‰Š‹ŒCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC‘’“”•–—˜™š›œ  ¡¢£¤¥¦§¨©ª«¬­®®®®®®®®®®®®®®®°°±²³´µ¶·¸¹º»¼½¾¾¾¾¾¾¾¾¾¾¾¾¾¾¾ÀÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎppqrstuvwxyz{|}~~~~~~~~~~~~~~~``abcdefghijklmnnnnnnnnnnnnnnnPPQRSTUVWXYZ[\]^^^^^^^^^^^^^^^@@ABCDEFGHIJKLMNNNNNNNNNNNNNNNEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE001122333333333333333333333333—ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸt‘‘’’““““““““““““““““““““““““s… …À…à………………………………………………………………………{CScs󣓓“““““““““““““““““““““C“£³ÃscSCCCCCCCCCCCCCCCCCCCCCCCC  ¡À²àÃÓãóãÓ󣓓““““““““““““““““{À………………………………………………………………………………0011223344 5 5 6 6 778899::;;<<==>ƒp`P@0 ğà Ğ À °   €€€€€€€€€€€€€€€ ¡¡²²ÃÃssccSSCCCCCCCCCCCCCCCC CScs󣓣³ÃÓãóãÓ󣓓“““““““““cÇ¡²ÃÓãóãÓ󣓓““““““““““““““““sÀE €/€.€-€,€K €K€*€+€,€-€N €N€/€.€-€,€K €K€*€+€,€-€N €N¿›o€ €n €€m€ €l €Œ€k€‹€Š€Š€i€‰€ˆ€h€d€„ €h €ˆ€i€‰ €j €Š€k€‹€l€Œ€€m€€€o€ €n €€m€ €l €Œ€k€‹€Š€Š€i€‰€ˆ€h€d€„ €h €ˆ€i€‰ €j €Š€k€‹€l€Œ€€m€€€[€€€€[€€€[€€€[€€€[€€€€[€€€[€€€[€€€[€€€€[€€€[€€€[€€€[€€€€[€€€[€€€[€€>“9~—Y¾›yşŸ™¾›y~—Y>“9>“9~—Y¾›yşŸ™¾›¹~—™>“y€/€.€-€,€K €K€*€+€,€-€N €N€/€.€-€,€K €K€*€*€*€*€J €J¿›o€ €n €€m€ €l €Œ€k€‹€Š€Š€i€‰€ˆ€h€d€„ €h €ˆ€i€‰ €j €Š€k€‹€l€Œ€€m€€€o€ €n €€m€ €l €Œ€k€‹€Š€Š€i€‰€ˆ€h€d€„ €d €„Æœd€„ €d €„Ød€„€d€„å„€d€„€„>“9~—Y¾›yşŸ™¾›y~—Y>“9>“9~—Y¾›yşŸ™€¹€™€y€€[€€€€[€€€[€€€[€€€[€€€€[€€€[€€€[€€€[€€€€[€€€[€€€[€€€[€€€€[€€€[€€€¼€œ€|€\Ğ=€=€=€=€=€] €]€=€=€=€=€=€] €]€=€=€=€=€=€] €]€=€=€=€=€=€] €]ÿŸd€„ €d €„€d€„ €d €„€d€„€„€„€d€„€„€d€d€„ €d €„€d€„ €d €„€d€„€d€„€„€d€„€„€d€„ €d €„€d€„ €d €„€d€„€„€„€d€„€„€d€d€„ €d €„€d€„ €d €„€d€„€d€„€„€d€„€„€y€¹€Y?§Ÿ €y€¹€YM§Ÿ€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€wÿd€„ €d €„€d€„ €d €„€d€„€„€„€d€„€„€d€d€„ €d €„€d€„ €d €„€d€„€d€„ €˜€˜€Ÿ€¿€¿€¸€¿€¿€y€¹€Y€™€y€¹€Y €y€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€¼€œ€|€\€3€6€€5€3€6€€5¿›d€„ €h €ˆ€i€‰ €j €Š€k€‹€Œ€Œ€m€€€n€o€ €n €€m€ €l €Œ€k€‹€j€Š€‰€i€ˆ€ˆ€d€„ €h €ˆ€i€‰ €j €Š€k€‹€Œ€Œ€m€€€n€o€ €n €€m€ €l €Œ€k€‹€j€Š€‰€i€ˆ€ˆ€[€€€€[€€€[€€€[€[€[€[€[€[€[€[€€€€[€€€[€€€[€[€[€[€[€[€[€S€V€€U€S€V€€U€¿›d€„ €h €ˆ€i€‰ €j €Š€k€‹€Œ€Œ€m€€€n€o€ €n €€m€ €l €Œ€k€‹€j€Š€‰€i€ˆ€ˆ€d€„ €h €ˆ€i€‰ €j €Š€k€‹€Œ€Œ€m€€€n€o€ €m €Œ€k€Š €i €ˆ€„Åœ„ßdå„öŸ„€„€„€„€[€€€€[€€€[€€€[€[€[€[€[€[€[€[€€€€[€€€[€€€[€[€[€[€¼€œ€|€\€=€=€=€=€=€] €]€=€=€=€=€=€] €]€]€]€]€]€]€] €] €= €= €= €= €= €] €]€˜ €Ÿ€˜ €Ÿ€Ÿ€¿€¿€¿€¿€¿ €Ÿ €Ÿ€¸ €Ÿ€¸€¿€¿€Ÿ€¿ €Ÿ €˜ €Ÿ€0€” €š€” €š€š€º€º€º€º€º €š €š€´ €š€´€º€º€š€º €š €” €š€˜ €Ÿ€˜ €Ÿ€Ÿ€¿€¿€¿€¿€¿ €Ÿ €Ÿ€¸ €Ÿ€¸€¿€¿€Ÿ€¿€¿ €¸ €˜€0€” €š€” €š€š€º€º€º€º€º €š €š€´ €š€´€º€º€š€º€º €´ €š€€=€=€=€=€=€] €]€=€=€=€=€=€] €]€]€]€]€]€]€] €]€]€]€]€]€]€} €=€˜€¸€¸€¿€Ÿ €¿€¿ €¸pP`PŒĞ¿ €˜ 0€”€´€´€º€š €º€º €´pP`PŒĞº €”€˜€¸€¸€¿€Ÿ €¿€¿ €¸€U P°XĞ¿ €˜°0€”€´€´€º€š €º€º €´€U P°Xк°p0€=€=€=€=€=€] €]€=€=€=€=€=€] €]p^pÜpZpXpVpTpRpP`^`Ü`Z`X`V`T`R`PP^PÜPZPXPVPTPRPP€˜€Ÿ€¿€¿€¸€¿€¿Ğ°pP0şŸy€¹€Y€ €y€²€²€’ €’ €’ €’€²€²€²€²€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€œ€W€w€[€w€W€¼€œ€|€\€[€[€€¼€œ€|?°\ €› €{ €[ €; €]€ €] €] €] €]€]€}€}€} €} €› €{ €[ €;€ €Ÿ €Ÿ€Ÿ€¸€¿€¿€¸€¿€¿ €¸àĞÀ° €p`P@0 € €š €š€š€´€º€º€´€º€º €´àĞÀ° €p`P@0 € €¼ €œ €| €\ €[ €—€ €| €— €[ €—€ €| €— €[ €—€ €| €— €[ €—€ €¼ €œ €| €\€€'€>€ €>€Ğ°pP0„ä±€‘ €‘ €‘ €‘€€‘€€€‘€ €‘àĞÀ° €p`P@0 €°€ € € €€€€€€€ €àĞÀ° €p`P@0 €G€^€ €^€Ğ°pP00j @ …q ‰²0IãSï}WÿÍu§ğp8·d%qy)6o;]ÉA¦ösï÷ôôô”°ÂVl†33î>3î?0ÿwwwwİİİİİİİİÌÌÌÌ303>#0î> 3î?0ÿwwwwİİİİİİİİÌÌÌÌ303>0î>#0î?0ÿwwwwİİİİİİİİÌÌÌÌ3003> 0î>0î?30ÿwwwwİİİİİİİİÌÌÌÌ303> 3î>#0î?0ÿwwwwİ ˜ İü€šİ,˜İ,ò€İ,/İ,ÿpİ,ÿpİ,ÿpİ ˜šİü€šİ,˜İ,ò€İ,/İ,ÿpİ,ÿpİ,ÿpŞíĞ€à €Şì‰àİŞ€ˆ€€ˆ€ˆ‰‰íàÿ ş€Ğìà€İ€íĞ툀ˆ€ˆ‰‰ĞÍÍÌĞİİÍĞİİİàîîîĞÌÌÌŞ Ğàİ݈€ˆğ€€ˆğ‰àÿ şˆíàÿ€İşİİİİİİİİİÌÌÌİ23İ,ğîİ,ïİ,ÿğİ,ÿİİİİİİİİÌÌÌÌ3333îîîîîîîîÿÿÿÿwwwwİ İ`İpİ,İ,ğİ,pİ,ÿpİ,ÿpİİİİİİİİÌÌÌÌ2şàîİİİÿÿÿÿwwwwݬšİ¬šĞ̬šĞ3˜ ˆîî˜ÿÿÿwwwª€ˆªˆªŞ€‰Ğ€ Ş€ªĞ€ˆ˜ €ˆİİİİİİİİÌÌÌÌ 333ÿîî‰ğïî ÿÿ‰pwÿİİİßıÿÿİïİİıŞİŞıİßß İíí íßĞ İííİışÿİşíßüğİşìàßíìàİíìàïıìàİıìàÀ ıÀ ÏÀÜşàïìïğÎïÿààîŞİİİİİİİİÌÌÌÌ3333Ì îîªüàîªüÿšüşİİİİİİİİÌÌÌÌĞİİİĞİİİĞÌÌÌàİİİİİİİİİİİÌÌÌÌ233ğğşîğïîàÿğÿşwÍÌ€ˆàİ€ˆŞ‰€ˆ€ˆ€ˆ€ˆ€ˆ‰‰ÌÜàİ€İİ퀀ˆ€ˆ€ˆ€ˆ€ˆ€ˆ‰‰İ,ÿpİ,ÿpİ,ÿpİ,ÿpİ,ÿpİ,ÿpİ,ÿpİ,ÿpİ,ÿpÌ,ÿp ÿpĞ ÿpîğp€Ğ p€îp‰Ğ İ ÿpİ ğpİ àpİ àpİ àpİ àpİ,àpİ,ïpİİİİİİİİÌÌÌÌ3##"îîïÿîşşşÿÿÿÿwwwwݬªªİ¬ªªÌ¬ªª3˜™îş€ˆîî˜ÿÿÿwwwšªªªšªªªšªªª ˜™‰ˆ€ˆˆ™ ˜™ªªª˜™ ˜İİİİİİİİÌÌÌÌ 333ÿîî‰ğïîªÿÿ™‰pwıİßßıŞİŞİïİİĞıïîîÌÌÌÿÿÿÿÿÿÿßıìàİşìÕíßìÔÿİîÓÌìîÒÿÿßĞğİîîÿߪüşªüşšüşªüşªüşšüşªüşªüşŞ Ğ€àİİ€Î̉àİŞ€ˆ€€ˆ€ˆ‰‰íàÿİş€Ììà€İ€İİ툀ˆ€ˆ‰‰ÍÒÿpÍbıpÍbÜpÍbÌpÍÂÆpÍÒlpÍòmpÍòßp032#"2p22$"4242s42`İİİİİİİİÌÌÌÌ 333ïîîpğîîÿÿpwİ İÜ€ˆÌ܈3Ş€îşĞîîŞÿÿÿĞwwwİ,ÿpİ,ÿpÌ,ÿp3ÿpîşğpîîpÿÿÿpwwwİ İ,€ˆÌ,ˆ0ÿ€şğ€à€ÿp‰pà îìÿîıÿî ïİÌüğĞŞíàıĞŞ`ïàşıpĞàığîĞïïşp@pĞÿ`àïpğĞıîà ĞğŞçšüşªüşªüşšüşªüşÿşàîğÿ "DD32233"""#3230303`pDDDD3#3#""""3#3#33`p$"22p"22#03pp$"424242$"p42p4242İİİİİİİİÌÌÌÌ 333ÿîî€ğïî€ÿÿ‰pwİ İ€ˆİˆİ,€İ,ğİ,pİ,ÿpİ,ÿpÿÿÿÿîîÿÿïïîî ÿßß ïîî ŞŞİ ÿÿÿğîîÿï`àî ß à pp ÿÿp`ïîÿßïîîpŞŞİ ™À ™À ™ à š™ ™™šà ™™ ¾™™©› ™™À š™À ©™ í™ › í  ¾ š ™™À ÀÜİİ à™ Şİ™™à™™ ™™©« ™™À ™™Í ©™à™İݙ࠙™ ™™©« ™™À ÀÜİİ í Şİ í ¾ š ™™À ÍÜİİàİİŞİà™™ ¾™™¹š ™™À ™šÍ ™™í™İİš í°™ ®™ ½š ™À šÀ ™ í ™ › í  ¾ š ™À ™Í ™à ™İİšà°™™ ®™š¹š ™À ÀÜİİ à ™ Şİ™šà™™ ®™™©›ı"ß2pÌ>Ì>ı.ß24242ffVVVVeeUVVU|eUU}VfUg€wwexfV`pà ß `àî Şİ ÿÿÿÿîî`ÿÿpïîÿïp` À }À à `àÀ pÀ í ` í  À pÀÜİİàŞİ`àÀ pÍ àİİ`àÀ pÀÜİİí Şİ` í  À pÍÜİİàİİŞİ`àÀ pÍ íİİ` í  À }À í ` í  À }Í à İİ`à À }ÀÜİİà Şİ`àUUUuPwW‡‡X‡XpfVU€`uV  İŞ à0 3à"``àîğş `"p™™™š™™™›™™«™™¹™™™©™™¹š™™š™™™™™™©š™™™™™™©™™™©™™¹›™™š™™™š™™ª™™©™™™™™ª™™¹™™™©™™¹š™™š™™™™™™©™™™›™™™›ÌfeeÌVUUîVUUÌfUUÌfVUîwwwğ€ˆUef€UUeUUeàUefUef€www€€ˆ€à™š™úÿÿßÎÌÌÌÎÌÌÌÎÌÌüÿÿߪ™ î™™™ßı"ß2ƒˆÌ>ƒˆÌ>“‰ı.ß2ƒˆ42ƒˆ42“‰fffff`ff0fÃ$`B<`f ff`ffffff`2D@C4@ÌL0ÌL D4"#`ffffC$` D4`@@4 #D`D4`ffffff"`0` ``00`f`ffffff`f``ff```ffff`f34CCCD44DCCD,3DD-3CD!"2$!3C€``gg†F`€vdu†gEQV/ïpÿ݈àİİİİİİİİÌÌÌÀ 3ÿ0"€ğ€?"‰pwİİİİİİİİÌÌ 3PPÿPf€ğ`f€‰pwİİİİİİİİÌÌÌÀ 3 ÿ°ª€ğ €¿ ‰pw0303#3233"""3223 "DD32323203032323""""2323DDDD032#ƒˆ"2ƒˆ22“‰$"42ƒˆ42ƒˆ42“‰$"42ƒˆ42ƒˆ42“‰$"42ƒˆ42ƒˆ42“‰ "323232 "323232 "DD32233"""#3230303€ˆ€ˆ€ˆ€ˆ‰‰DDDD3#3#""""3#3#33€ˆ€ˆ€ˆ€ˆ‰‰$"22ƒˆ"2ƒˆ2#“‰03€ˆ€ˆ€ˆ€ˆ‰‰ffffffffffff&FCÌb2DÌfffffffffffffffffffff¶¶kkk˼¶¶Ë¼fkkkffffffffDDD$@"BA,A-3CD!"2$!3CvfP`ˆÀP`€VpvPÇpfWgvC344ˆD4B€33"€0"$$B€€€‰‰C30ˆ1B€33"€0"$$B€€€‰‰İİ İİ İİ İİ ÍÍ àààİİ İİ İİ İİ İİ İİ İİ İİ ÌÍİİÜİİİİİİİÜİİİİİİİİİ İİ İİ İİİİİİİİİİİİİİİİİİİİİİ İİíİİ İİ àÍÍ ààİİíİİ İİ àİİ İİ İİ İİ İİ İİİİÜİİİİİİİÜİİİÌÍİİààÁ""Â33,Ò3C=Ñ""Ò33-Â3D<Á""à``À À À À 0 0"#!"`ffff`fBÄàı2àİş`ğîÿ`ÿff`fà Ğ>pÃ0Ğ` à" ÿÿÿÿ™™ùÀİÙ™ğùÿÀÿÿÿÿÿÿÿÿğÌÌ ÀÀ ğÀÀ ÿÀÀ ğÀÌÌ ÀÿÿÿÿÿÿÿÿÿÿüÌÌÌüüÌ ÏÌ ğÌÿÿÿÿÿÿÿÿÌÌÌàÌÀÌÌÀÌÿÀÌÿàÿÿÿÿÿÿÿğÍÜÀ À À À À À ÀÍÜÀÿÿÿÿÿÿÿÿğÌÜÌ À ÌÌÜÌ Í Ì Ğ ÌÿÿÿÿÿÿÿÿÿÿğÀ üğÌ ÏÏÏ ğüÀ À ÿÿÿÿÿÿÿÿÿŞÌíÌÌÌÌÌğÌÌğÌÌğÿÿÿÿÿùù™ÌÌÌÀÌÌğÿÌğÌğÀÿÿÿÿ™Ÿ™™ğÌÌ àÀ ğÀÀ ÿÀÀ ğÀÌÌ àÿÿÿÿ™™™™ÿÌíÌÌÌÌÌÌÌÌíÌÿÿÿÿ™™™™ğğÏ ğüÀ ÏÏ ğÌ Ï ÿÿÿÿ™™™™™™™™ééîîğğÿÿÿ™™ÿÿÿÿ™™ù™™™™™ŞŞİÍÿÿù™™™™™ÿÿÿÿùùÿÿ™™™™ÍÜÌÌ™™™™™™™™ÿÿÿÿfffffff"`!2"2@"2@2#!"ffffffffffffffff`fffffffªªf`f!f"#` " "4 3""! ffffffffffffffff`ffffffª`ff¬ fffffffff"`!2"2@"2@2#!"ffffffffffffffff`ffffff`ff  fffÌlfƘÉfŒ‰©lœ™©ÌŒ©Ê̼̌*ƺ»,f¬Ë2ffffffffffffÌfff"Ìff3lf33Ãf#3Âfffffffffff ""!23ĞBffffffff`fff`ff#fñ0`ò 4òÿÿÿÿ™™™™ÌÌÌÌ™™™™™™™™ÿÿÿÿÿÿÿÿ™™™™ÌÌÌÌ™™Ÿÿ™™™™ÿÿÿÿÿÿÿÿ™™™™ÌÌÌÌùÿùÿ™™™™ÿÿÿÿÿÿÿÿ™™™™ÌÌÌÌğğ™™™™ÿÿÿÿÿÿÿÿ™™™™ÌÌÌÌğÿùÿ™™™™ÿÿÿÿÿÿÿÿ™™™™ÌÌÌÌùùÿù™™™™ÿÿÿÿffff€˜ff€ˆff€ff€ff3ff3©ÌªDªª©D©š™©˜ #`€ 3â`fğÿf©f˜©ff€fffff fffffffffffʪ`fšª fªD`3D`"2#` 3ï"îÿÿff ff™fff€fffffffffffffffÊš`fÊ `ªš€ ª D DfğfğfffÆ,3ff"ffÆ!ffÆÊfffÌffffffffffff#,²l#Ì»lªÊl™©šlœÉªÉÆÿüÎÆïìÎfÌÌl!2" !`ğğàfff#ñ 2 2àğîĞ `ff`fÿÿÿÿ™™™™ÌÌÌÌÿÿÿŸ™™™™ÿÿÿÿÿÿÿ™™™™ÌÍÜÜ™™Ÿÿ™™™™ÿÿÿÿ™™™ İŞîşÿÿÿ™™ŸÿğğÎığàìîÀÙĞÙğŞíïşğğfffff`f"!"""#!3f0D4ffffffffffff`ff f Ì¬ ª©D šDff!"`"2 "22@CDf0D fffffffffffffff™ffªÌ`fªª fšª ffffff`f"!"""#!3f0D4ffffffffffff`ffffff`ff  ff Êffff0f3 f03"<àfŞfàïfff0"`30 `fü`ffíff" "U"PÌePUÆ``eUppv" " """V à U  f î àşÿÿÿÿÿğÌÀ ÌğÀ ÌÏÏ Ì Ì ÌÀ ÿÿÿÿùŸù™ÌÌàÍÌÀ ÌÌÀÌÌÀ ÌÌÀ ÿÿÿÿ™™ŸùğÜÌÌÀ ÌÌ ÌÌÀ ÌÀ Ìÿÿÿÿÿùÿÿğ ŞÌí ÌÌÌÌÌÌŞÌíÿÿÿÿÿÿÿÿÿÀüÌÀÌÌÀüüÌÀ ÏÌÀ ğÌÿÿÿÿğğğğğğğğàfCffff€ffˆff3ff3fffffffªš©ªf™"`€"3`3``0`ffğffàfªff€™ff˜fffffffffffffffffšD`šD` 3`"2#` 3ÿğïàf`fCfffff€fffffffffffffffffffª)`š)‰@â Bï00#`fÿ`fï`fffĞşİ4 `@#`fffffffffïf"`2``2`f0D`fD`ff`ĞÜ "à Ğà€€™"˜"àí""ßĞîğÿ " "™˜ª €‰ "" ™™™™š©©©ùùùšš™™™™©ª¬Ìùùùù™™ªš ù©™Ÿ™™ğàğĞ ğĞğĞ ğÀ ğÀ ğÀ ğÀ fffff`f"!"2""2""#!3fffffffffffff`ffffˆˆˆˆ3‰3ff!"`"" ""# "22#f@fffffffffffffff€ff€ˆ`f™fª ffffff`f"!"2""2""#!3fffffffffffff`ffffff`ffff ‰`ffff0f3 f03"<àfŞfàïfffffffff`f`3ü `í`f""""""""""""""""""" ŞĞïÀÏ v"""""""""""""""""""" """ ïİîîîÌÌÌìÍÌìÎÌÌÌÌÍÌÌÜÌÌÍÍÌîîîîÌÌÌÌÌÌÌÌÌÌ,"ÌÌ,"ÌÌ,"ÌÌ,"ÌÌ,"îîîîÌÌÌÌÌÌÌÌÌÌ"ÂÌÌ"ÂÌÌ"Â"""ÂÌÌ"ÂîîîîÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌîÌ Ş î şÌ ıÌ şÌüıÌ ığÀ ğÀ ğĞ ğÀ ğĞ ğĞ ğà ğĞf4ffff©fffÀfff fff ffffff©™Êš‰`¬ª ª©š3ª2ïD` ïD`fªffªfff ffffffffffffffffff¬ `¬ " 0š0š #@@à`f4ffffffffffffffffffffffff©™fÌ 0ʬ ã   òDD`"fş`fĞşİ f03`f@@`f@`ffffffffï`f `ff @ @`ffffĞİğÆ f"g"àŞ"àİ """"""pğŞ U "f "à "ß "" """"İÜÌıŞÍıßÜİİÍîîîğğÿÿÿÿÌÌ,"ÌÌ,"ÌÌÌÌÍÌÌÌîîîîÿÿÿşïîÿÿÿÿÌÌ"ÂÌÌ"ÂÌÌÌÌÌÌÌÌîîîîÿÿÿÿîîîîÿÿÿÿÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌîîîîÿÿÿÿîîşşÿÿÿÿÌüıŞüşîüıÌüşîşşÿïÿşÿşÿÿïğàğğğğğğğfffffff"`!2"20"2@1Cf0Dffffffffffffffffffˆ`ˆ8€8f`f!f"` " "430DCf0ffffffffffffffff`ff€`f 0fš0ffffffff"`!2"20"2@1Cf0Dffffffffffffffff`ffffff„`ffff"U"P\u"` `"`e""pv"""îà"ĞŞ"""" À Ğ ÿ à îà Ìıà ™ ™™ª© ™ ™ š¬Éš ™ ğ™ªªªª¬ÌÌ™šªªÿÿÿ© Ê ™™™ ¬ªš ª™™ÿÿfffÀffÌffÀÌffÀf`fĞ fÀ fÌÌ f fffÌ`ffÌ ff `ff fffÀ`fÀ fĞÌÌğğğğğàğàğĞ ff™f©¬ffÀ¬ffÀšff ªffIfff@™`š‰`fš f© f0#` 23 2ïïf©fʪfÊšfɪff ªfffffffffšf© f™ "`#)3ğD2#D òfffšffÊff©ffffffffffffff© fª " "ÿœ ïšDD`f`fğff"ĞŞ"àï"àğ àĞĞÀ À""""" ı Àğ ì"ÿ © ™© © àïÍìÜşïŞàİÌÿîŞÍğï ìîÿÿÿş ş ş şşïîîşğÿÿÿÌÌ fÀ f ff`fĞffÀffÀÌffÌfffÀfĞÌÌfÀ fÀ` ff `ffÌ ffÌ`ff fffğĞ ğÀ ğÀ ğÀ ğÀ ğÀ ğÀ ğĞ fffffffffffff`ff0`€ #ª!2Êffffffffffffffffffff`f™"š" şff`fğÌüÎÀö À À`ÀÀ`fÀ`ffö fffff`ffffffüfffÀ`ffÀ`ffÀ`ffüffffffff ff ff ff ffìfìfÀ Ì `ff `f f fì fì fìì fÌÌ fğ𙩭ŞÚïîÿİî™™™™ÊÊÊÌ­ªªªî™ÿ™™™™ÿÿ™™™™ÌÌÌ̪ªªš™™™™ÿÿğ™™™™ÿğíÿïÍü™™™éª©!Ù™™é™™AÙÿÿé™™™ùîÿÌİ ÿÉ Ìİ™ ÿîÀ ™ÉššÊÌ ™™ğàÿİî ŞİİíÍÂ,ÜÍ""ÜÍÂ,ÜŞİİíADbAd&afb‘ff‘™fa™IğĞ ğĞğà ğà ğğğ"2ª"2©"#™11@`fffffffª2#ï 0#𪠪``fffff`fffffffÎÀfğÌüff`ffffffffffffffffffffífffÎ`ffà ffÎ`ffà ffÎ`ffà ff`fÀìÌfÀÌÌfàÌÌfÌÌfÎÌffàÌffÀfffÌÌìfÌÌìfÌÌìfÌÌìfÌÌ fÌÌfÌì`fffğÿğğğşî™îÿÿşÿİış™ùŸŞÌÏí™ğÿïŞı™ÿÿ "" """330 ""3330ÿğïÿîïşÿğÿîÿğğİşÿğíÿïşşŞ 3ğ30#3#2B0 4 33C#""B#"""#"""#"""#"Â"Â" "ÂfffvwwWvwwwvwwwvwwwvWuÅWw wÇÌÌİİÌÌİİÌÌÌÜİİİİİÚÚÚª©­­­ " """ "Ì "İš "ª ") """""""""3Í-"23-""""=#"3<333İ32#3  " Â"ÀÜ"Úİ" ª" ©ÏÌÍÏÜİíÜİÍÜİÌÌÌİİİİÚÚÚª­­­ªĞİ "Í "Í "ğı"Î "ĞV"`U"VÌ"""""""""""""""" """" eĞ UüßğïïğÿşÿïíÿŞŞÿîİÿŞÍÿŞÍğîİïïÎîîßİŞşğİííÌİîÿÌÜíşÌÜíïÌİîşş ì/DC"ï###ÿ?O"ÿó4$ÿ?OC0 Ä"DÌ Ä0Â@ "$L$$" #"3,#2CÃ#334#3CC#"3##233#"""#""""B"B,B#2"2"2"2"2vVVVvfeevfVVvgfevwfvvwgwvwwwvwww|ÇuWuWwgwgwgwgwgÌÍ ™™ ğ™ù""" " " " ÒÜ""""""""3 "# """"  " """™ÍÍÌ™™™ÿÿ™™"VÌ"gU""pf""w""""à"î ""àÍU íe ívıà"à" ğ ""Ğ""Ü ""ğïŞïíÿîğÿÿİííïİŞşşîîïÿşşşÿïïÿÿğğğÿò$ÿ/"ÿòğ/ÿÿğ™ îİŞŞîİÌİÍŞÍíÌÌ ÍÍİÌ™ ÿÿŸğ™ùÌİ™ ÿÿÌÿÿÿÿŸù™™ÌÌÀÌÌÀÌÀÌÀÌÌÀÿÿÿÿ™™™ŸÌ ÀÌ À ÀÌ À ÀÌÿÿÿÿùùÿÿÿÿÌÌÌüÌÌÀÌÌÌÿÿÿÿÿÿÿÿÿğÀ ğğÌ ÏÏ üÀ À ÿÿÿÿf™iffIif™Ä™™™I f©Ğİf Í™ ÍI™ğıf™™™f™””™™Ì™™ÉD™I™f”™f ©™f©šff™iff™if™©™™Iœ™™fD f™Ğİ™ Í™ Íf™™™f™™™™™™™™””™™É™f¤™fª™f ªJf™™™ ‰ˆˆ¨‰ˆˆˆ‰ˆˆˆ‰ˆˆˆ‰˜ˆŠ ¨ˆ ˆÈ™™™™™™Şî™îİ2ã23"323"3™2"İŞîîíî1   #"ŞÍíİ™î322##22"#22™™™™™™™ÿù™ÿ™™İù™ÿÿÿğÿÿŸ™™™ÿğÌ ÀÌğ ÀÌÌÀÌğ ÀÌ Àÿÿÿÿ™ù™ùğÌÌ À ÀÌ ğ ğÌÌ ÿÿÿÿùÿÿÿğÿ ÌÍ ÌÍÍ ßÀÿÀÌÿÿÿÿÿÿÿÿÌÌğ™ÙÌığÜÿÌÜÿÿÿÿÉ™ ΙLªĞf™© fÉ”ªfI™™f™™™ffffffff ªÊ™ª™” š™™š™™™ifffifffffffffffIœğı™I Îf™JĞf™œ fI”™f™™™ffffffffª™™ 𤙙𙠙™™ifffifffffffffff‰ˆŠŠ‰ˆ¨Œ‰™šÊ‰ˆ©©‰˜˜Š‰‰˜¨‰ˆ˜ˆ‰ˆˆˆ¨ÈЍˆ¨ª˜ˆ˜ˆ˜Š˜ˆ˜™™™"#!""! 22"""##"""""""""!""#"2" ™™™ ğÿÿÿğğÀ À À À ÀÌÌ À À À À ÿÿÿÿ™ù™™ğÀÌÌàÀ ÀÀÌÌÀÀ ÀÀÌÌÀÿÿÿÿ™™™™ğÍÜÌ À ÌÌÌ Ì À Ì À Ìÿÿÿÿ™ŸÿÿÿğÀÌÌğÀ ğÿÀ À Ì À ÿÿÿÿÿÿÿÿğÿ ÌÌÌÌÌÌÌÌÌÌÌÿÿÿÿ$<,,,,,,,,,,,,,,,,,,,,ÔÔÔÔ,,,,,,,,,,,,,,,,,,,ÔÔÔÔ,,,,,,,,,,,,,,,,,,ÔÔÔÔ,,,,,ÒÔÔÔ,,,,,ÔÔÔ,,,,,ÒÔÔÔ,,,,ÔÔÔ,,,,ÓÔÔÔÔ,,,,,ÒÔÔÔ,,,,ÓÔÔ,,,,,ÿÿÔÔÔ,,,,,ÉÊÊÊÊÊËÔÔ,,,,,̲²²²²ÌÔÔ,,,,,̲²²²²ÌÔÔ,,,,,̲²²²²ÌÔÔ,,,,,ÎÈÒÇÊÊÍÔÔ€ŒŒƒ€ŒŒƒ€ŒŒ€ŒŒ€,,,,,ÿÒÓÿÔÔÔœœœœœœœœ,,,,,ÓÔÔרררררררר,,,,,ÒÔÔÔÔ,,,ÓÔÔÔÔרררררררר,,,,,ÒÔÔÔÔ,,,,,ÓÔÔÔÔÔרררררררר,,,,,ÔÔÔÔ€”•–”•–”•–”•–,,,,ÔÔÔÔÔÔ,,ÔÔÔÔÔÔÔÔ€¡°±ÔÔÔÔÔÓÔÔÔÔÔÔÔ,ÓÔÔP££ÔÔ,ÓÔÔP,,ÓÔÔP££€,,,,ÒÔÔP,,,,ÓÔÔ££,,,,,ÒÔÔÔV,,,,ÓÔÔ ƒ”•–ƒ±f,,,,ÒÔÔÔ+²²²Pv,,,,,ÓÔÔÔ²²²ÿ’P,,,,,ÒÔÔÔ+²²²´Pú,,,,,ÓÔÔÔ!"ÿ²²²²´ÿõ,,,,ÓÔÔÔ12+Ò²²²²²²²V£££O€IIIIJ€,,,,,ÒÔÔÔÒÒÓÒ³²²²²²²f_SYYYYZ,,,,,ÓǺººÈÒÓ+³²²²²²v_S,,,ÒÓÒÓÓÒÓÓÒÒÓÒÓÒÓÒÓÒ+£££o,,,,,ÓÒÓǺººÈÒÿ’°¡,,,,,ÓÔÔÔÓÒ+++,,,,ÒÔÔÓ°¡°¡,,,,,ÒÔÔÓ’,,,,,ÓÔÔÓÓááááááááááá,,,,ÒÔÔÒÓ,,,,,ªªÓª-ÔÔÔÓÒ ƒƒƒƒƒƒ,,,ªÒÓÒÓÒªÔÔÔÒ,,,,ªÓÒÓÒÓ-ÔÔÔÓÓÒ,,,,-ÓÓÒÓÓªÔÔÔÒÒ,,,,,ÒÒÓÒ-ÔÔÔ,,,-ª-ªÔÔÔ,,,,ÔÔÔ,,,,,,ÔÔÔ,,,,,,ÔÔ,,,,,ÔÔÔ,,,,,,,,ÔÔÔ,,,,,ÔÔ,,,,,ÔÔ,,,,,,,ÔÔ,,,,,,,,ÔÔ,,,,,,,,,,ÔÔ,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÔÔ,,,,,,,,,,,,,,,,,,,,,,,,,,,,ÔÔ,,,,,,,,,,,,,,,,,,)}ÀÀÀÀÀÁÃÆÀÀ À À À Ã Æ É ÏÏÏÏÏÏÏÏÏÏÏÏÏÏ%   %   %E@ABBCCC D D D E E E F0F0G0H@H@IPIPJ`J`KpLpLpMpNpNpO @p`      ¬ğÿ+ÏÎÍÌÊÉÇÆÅÄ Â Á Á Á Á Ï Ï Ï Ï ÏÏÏÏÏÏÏÏÏÏÏ%„023456789:;<=>>>>>>>>>>>>>>>>t 0012468:<>>>>>>>>>>>>>>>>>>>>> sp`P@0 ğàĞÀ° €€€€€€€ |l\L<, p`P@0 ğàĞÀ° €€€€€€€ 0011223344 5 5 6 6 778899::;;<<==>>ƒ ‘ ‘ ’ ’ “ “ ¡¡¡¡²²ÃÄuvggWWGGGGƒ¡¡¡¡²²ÃÃtteeVWGGGGGGGGGGGGƒ ¡ ¡ ² ² à à ¡¡²²ÃÃtteeVVGGGGGGGGƒ¡¡²²Ãᡲ²ÃÃtteeVVGGGGGGGGƒÏÏÏÏÀÁ²³££““““““““““““““““““““ó ¡ ¡ ² ² à à ¡¡²²ÃÃtteeVVGGGGGGGGƒp`P@0 ğàĞÀ° €€€€€€€€€€€€€€€ ÀÁ²³££““““““““““““““““““““““““óÀÁ²³ÀÁ²³££““““““““““““““““““““óÀÁÀÁ²³££““““““““““““““““““““““óp`P@0 ğàĞÀ° €€€€€€€€€€€€€€€zÀÁ²³ÀÁ²³££““““““““““““““““““““óÀÁ²³ÀÁ²³££““““““““““““““““““““sÀÁÀÁÀÁ²³££““““““““““““““““““““sÀÁ²³ÀÁ²³££““““““““““““““““““““sÀÁ²³ÀÁ²³¤¥–———————————————————sÀÁÂğÃğ´àµà¶Ğ·À§°§ §§€—€—€—€—€—€—€—€—€—€—€—€—€—€—€—€—€—€—€ä ¡ ² à ¡²ÃÓãóãÓ󣓓““““““““““““ô Ä¡²Ã¡²ÃÓãóãÓ󣓓““““““““““““sÄ¡²Ã¡²ÃÓãóãÓ󣓓““““““““““““sÄ¡¡²²Ãᡲ²ÃÃtteeVVGGGGGGGGƒ¡¡²²Ãᡲ²ÃÃtteeVVGGGGGGGGƒ¡¡²²Ãᡲ²ÃÃtteeVVGGGGGGGG¡¡²²Ãᡲ²ÃÃtteeVVGGGGGGGG00€|l\L<, ü ì Ü Ì ¼ ¬00€|l\L<, ü ì Ü ÌŸŸ¯¯¿¿ÏÏ¡¡²²ÃÃtteeVVGGGGGGGG  ¡¡²²Ãᡲ²ÃÃtteeVVGGGGGGGG00€|l\L<, ü ì Ü Ì ¼ ¬œŒŒŒŒŒŒŒŒŒŒŒŒŒ ¡ ¡ ² ² à à ¡¡²²ÃÃtteeVVGGGGGGGG€‚ƒ„…†‡ˆ‰Š‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹s€‚ƒ„…†‡ˆ‰Š‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹sp`P@0 ğà Ğ À °   €€€€€€€€€€€€€€€{¡¡²²ÃÃtteeVVGGGGGGGGGGGGGGGG ¡À²àÃÓãóãÓ󣓓““““““““““““““““{À¡²ÃÓãóãÓ󣓓““““““““““““““““sÀ/@€]€Y€U€q€]€}€f€]€Y€U€Q€=€]€f€]€Y€U€q€]€†€f €R €Q €S €S€S€]€]€]€Y€U€q€]€}€f€]€Y€U€Q€=€]€f€]€Y€U€q€]€†€f €R €Q €S €S€S€]€]€ğ6§»€º€º€»I§»€6§»€º€º€»D§»€6§»€º€º€K§› €›6§»D§»0€€T€T€]€Y€U€q€]€}†˜föŸ]€Y€U€Q€=€]†˜föŸ]€Y€U€q€]€}†˜föŸ]€Y€U€Q €]€]€]€]€]€Y€U€q€]€}†˜föŸ]€Y€U€Q€=€]†˜föŸ]€Y€U€q€]†˜†€fıŸR €Q €S €S€S€]€]ğ6§»€º€º€»€»I§»6§»€º€º€»€»D§»6§»€º€º€»€»I§»6§»€º€º€»€»D§»6§»€º€º€»€»I§»6§»€º€º€»€»D§»6§»€º€º€»€»I§»6§»€º€º€»€»D§»”™X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€Ü€X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€Ü€X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€Ü€X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€xôŸT€TöŸ]€Y€U€q€€}€]f–böŸ]€Y€U€q€€}€]f–bùŸ] €Y€U €p€€} €]i–bôŸ]€Y €5€q€€} €=d–böŸ]€Y€U€q€€}€]f–böŸ]€Y€U€q€€}€]f–bùŸ] €Y€U €p€€} €]i–bûŸ] €Y €U €q€ €} €]k–böŸŸ €€Ÿ €€Ÿ€°€öŸ €Ÿ €Ÿ€Ÿ€Ÿ €Ÿ€n°€@öŸŸ €€Ÿ €€Ÿ€°€@öŸ €Ÿ €Ÿ€Ÿ€Ÿ €Ÿ €°€öŸŒöŸ]€Y€U€q€€}€]f–böŸ]€Y€U€q€€}€]f–böŸ]€Y€U€q€€}€f–bùŸ] €Y €U €q€€]€}i–böŸ]€Y€U€q€€}€]f–böŸ]€Y€U€q€€}€]f–böŸ]€Y€U€q€€}€f–bùŸ] €Y €U €q€€]€}i–b€‹€j€‰ €h€€„ €‡ €… €€€€ƒ €…€€€ƒ€‹€j€‰ €h€€„ €‡€… €€€ €ƒ €… €€ €ƒ€‹€j€‰ €h€€„ €‡ €… €€€€ƒ €…€€€ƒ€‹€j€‰ €h€€„ €‡€…€€ €ƒ €…€€öŸ]€Y€U€q€€}€]f–böŸ]€Y€U€Q€=€]†˜fP0 €…ğ°€@€0öŸ]€Y€U€q€]€}†˜föŸ]€Y€U€Q€=€]†˜föŸ]€Y€U€q€]€}†˜föŸ]€Y€U€Q €]€]€]€]€]€Y€U€q€]€}†˜föŸ]€Y€U€Q€=€]†˜föŸ]€Y€U€q€]€}†˜föŸ]€Y€U€Q €]€]€]d°]”™X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€Ü€X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€Ü”™X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€Ü€X€Ö€8€Ö€X€x€Ü€€X€Ö€8€Ö€X€x€ÜöŸW€Y€U€s€]€]†˜fùŸS€R €U €S €] €]†˜fşŸ]€W€Y€U€Y€}€]†˜fşŸA€a€5€a €a €a~œ€u€s €s€s } €s €q€r€r€}€}€} €}€u €q €}€u €q €} €u €r €s }€]€]€]€]€]€]€]€]€]€]€]€]€] €] €] €] €]€]€]€]€]€]€]€]€]€]€]€]€]€]€] €] €] €] €]€]6§»D§»6§» €»€»D§»6§» €»ô{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{€]€w€€w€]€}€]€}€]€w€w€]€}€]€}€]€w€w€]€}€]€} €] €w €w €] €} €]€]€]€w€€w€]€}€]€}€]€w€w€]€}€]€}€]€w€w€]€}€]€} €] €w €w €] €} €]€]”{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼{€Ö€8€Ö{€|€8€¼€]€w€€w€]€}€]€}€]€w€w€]€}€]€}€]€w€w€]€}€]€} €] €w €w €] €} €]€]¶›b€†šyzY€f€‚€fºz¹™¹€f€b€†ºšY¹™€f €f €B º š Y ¹ ™§°f€]€}€]€]€}€]€]€}€€]€}€}€]€}€]€]€}€]€]€}€€]€}€}{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼€t{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼€t€]€}€]€]€}€]€]€}€€]€}€}€]€}€]€]€}€]€]€}€€]€}€}€]€}€]€]€}€]€]€}€€]€}€}€]€}€]€]€}€]€]€}€€]€}€}7§ŸĞ°pE§Ÿp°ĞÿŸĞ°pU•Ÿp°Ğ7§ŸĞ°pE§Ÿp°ĞÿŸĞ°pU•Ÿp°Ğ€]7§› }€]7§› ]€}€]€]7§› }7§› ]€}€}€]E§› }€]E§› ]€}€]€]D§› }€]D§› ]€]€Q€]7§› }€]7§› ]€}€]€]7§› }7§› ]€}€}€]E§› }€]E§› ]€}€]€]7§› }€]7§› ]€] €P÷ŸĞ°ùŸĞ°úŸ €Ÿ€Ÿ€ŸĞúŸŸ€¾Ğ°pÏ´›¿ğŸ@а€p`÷ŸĞ°ùŸĞ°úŸ €Ÿ€Ÿ€ŸĞúŸŸ€¾Ğ°pÏ·›¿ğŸ@а€p`€]7§› }€]7§› ]€}€]€]7§› }7§› ]€}€}€]E§› }€]E§› ]€}€]€]E§› }E§› ]E§› q€]7§› }€]7§› ]€}€]€]7§› }7§› ]€}€}€]E§› }€]E§› ]€} €] €]L§{  = €]L§{ ]€€q€¶¶–¶µ–¶¶¶¶–¶¶¶µ–¶¶€¶¶–¶µ–¶¶¶¶– ¶ ¶¶ µ{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼€t{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼xP0€]€}€]€]€}€]€]€}€€]€}€}€]€}€]€]€}€]€]€}€€]€}€}€]€}€]€]€}€]€]€}€ €]€]€}€]€}€]€]€}€]€]€}€ €]€]€}€]7§› }€]7§› ]€}€]€]7§› }7§› ]€}€}€]E§› }€]E§› ]€}€]€]E§› }E§›  ]€]€}€=?§{ ]€=?§{ =€]€=€=?§{ ]?§{  ] €]€] €==§{  ] €==§{  = €] €= €==§{  ]=§{  ] €]€]¶t”tTs”ttt”tTs”trt”t qPt”tTs”tTTtT4StT TTtT4StT R T t tw P T t T 4 S t T T{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜ €==§{  ] €==§{  = €] €= €==§{  ]=§{  ] €] €] €==§{  ] €==§{  = €] €= €==§{  ]=§{  ] €] €] €==§{  ] €==§{  = €] €= €==§{  ]=§{  ] €] €] €==§{  ] €==§{  = €] €= €==§{  ] §{  ] €]€q€ı– –– – •– – –€ – –– – – –•– – –€ – –– – •– – –€ – –– – – –•€€€Ÿ€Ÿ{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼˜{˜€¼˜˜{€¼€t.f€0@ab€b$c,@á@a@$@D!€5$B)€B-C1’†‡÷ €!€âHâH¥y‡‡â&     Jşÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2Tv˜ºÜşïÍ«‰gE#¹ÜîÿÿîÍ›W#2dÉíşÿÿïŞœ6!céşÿÿÿÿïaüÿÿÿÿÿÿÏ0"3DUfwˆ™ª»ÌİîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿI}s/p`P@0 ğàĞÀ° €€€€€€€€€€€€€€€ @Paq²£““““““““¢² Á q `P?A?A?B?B?C?D?E?F?G?k@Paq²£““““““““¢² Á q ` P A A B B C D E F G b°±ÂÀqrsssssssssssssssssssssssss ¡’¡¢££££££££££££££££££££££££s@ABCDEFGGGGGGGGGGGGGGGGGGGGGGGc`aRSCDDEEFFGGHHIIJJKKLLMMNNNNNspqÂÀ±²³³³³³³³³³³³³³³³³³³³³³³³³s@ARPabccccccccccccccccccccccccs¡² ±ÁÒâóãÔĵ¥•••••••••••••••óÃ@Paq²£““““““““ ’ ’ ‘ ‘ b¡² ±ÁÒâóãÔĵ¥•••••••••••••••sà ¡ ²  ±ÁÒâóãÔĵ¥•••••••••••••••óà±ÁrbSCDDEEFFGGHHIIJJKKLLMMNNd@Paq²£“””••––——˜˜™™šš››œœd02347023456789:;;;;;;;;;;;;;„  02347023456789:;;;;;;;;;;;;; ¡² ±ÁÒâóãÔĵ¥•••••••••••••••sÃ02347023456789:;;;;;;;;;;;;;„ 02347023456789:;;;;;;;;;;;;; 02347023456789:;;;;;;;;;;;;; 023456789:;;;;;;;;;;;;;;;;;;;  ±ÁÒâóãÔĵ¥••••••••••••••••••óÀ¡² ±ÁÒâóãÔĵ¥•••••••••••••••óߟŸ ±ÁÒâóãÔĵ¥•••••••••••••••sá² ±ÁÒâóãÔĵ¥•••••••••••••••sÃp`P@0 p`P@0 ğà Ğ À °  €€€€€€€€€ €‚ƒ„…†‡ˆ‰Š‹‹‹‹‹‹‹‹‹‹‹‹‹€‚ƒ„…†‡ˆ‰Š‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹‹p`P@0 ğà Ğ À °   €€€€€€€€€€€€€€€ CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCŸŸŸŸŸŸ¡¡²²ÃÃssccSSCCCCCCCCCC ¡¡²²¡¡²²ÃÃssccSSCCCCCCCCCC ??????0011223344 5 5 6 6 77889:;<=>ƒ 001122334 4 5 5 6 677889:;<=>ƒ      0011223344 5 5 6 6 778899::;;<<==>>ƒp`P@0 ğà Ğ À °   €€€€€€€€€€€€€€€ ¡¡²²ÃÃssccSSCCCCCCCCCCCCCCCC @QbsÃscSCCCCCCCCCCCCCCCCCCCCCCc€ ±ÁÒâóãÔĵ¥••••••••••••••••••sÀOÀôÏ7€÷TÏ×€7€ôÏ7€÷TÏ×€7€ À=€ €] €6 €= €U€ €] €] €6KÏ= €4€TÀ] €=€ €] €6 €= €U€ €] €] €= €= €5€€=€:§’L§’ €’€:§’L§’€’€:§’L§’ €’€:§’L§’€’:§’L§’ €’€:§’L§’€’€:§’L§’ €’€:§’L§’€’”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz À=€ €] €6 €= €U€ €] €] €6KÏ= €4€TÀ] €=€ €] €6 €= €U€ €] €] €= €= €5€€= €=€ €] €6 €= €U€ €] €] €6KÏ= €4€TÀ] €=€ €] €6 €= €U€ €] €] €= €= €5€€=€€=§²K§²=§±€I§²€ €² €² €± €²€€=§²K§²=§±€I§²€ €² €²8§±€²€€=§²K§²=§±€I§²€ €² €² €± €²€€=§²K§²=§±€I§²€ €² €²8§±€²”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€yôŸÓ€³€Ú€š €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €Ÿ€ €Ÿ€Ÿ€€­€¿€ €Ÿ€Ÿ €Ÿ€ €Ÿ€Ÿ€€­€¿ €®€¿€Ÿ€¬€®€¿€³€s€“€S€¬€®€¿€Ó€“€³€s €Œ€ €Ÿ €³ €s €“ €S €Œ€€¿€“€Ó€s€³”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz €Ÿ€ €Ÿ€Ÿ€€­€¿€ €Ÿ€Ÿ €Ÿ€ €Ÿ€Ÿ€€­€¿ €®€¿€Ÿ€¬€®€¿€³€s€“€S€¬€®€¿€Ó€“€³€s €Ÿ€€¬ €³ €s €“ €S€¿€® €¬€s€³€“€Ó”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€ÚôŸÚ€š “€P€³€sK§²=§±K§² p€°€P€“K§² €± PI§² S€€s€³K§²=§±K§² ³€p€P€K§² €± °I§² s€°€S€“K§²=§±K§² °€P€€sK§² €± PI§² ³€p€“€SK§²=§±K§² ³€S€S€SK§² €± °I§²”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸs”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸs”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸs”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€ÚôŸÚ€š€K§²=§±I§²€I§² €± €²€K§²=§±I§²€I§²8§±h°²”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€y€x€Ú€¼ôŸz”™{€Ú€¼€y€x€Ú€¼€|€{€Ú€¼€yôŸÓ€³€Ú€š  = €6 €] €=K§²=§±I§²  = €6 €] €=I§² €± €²  = €6 €] €=K§²=§±I§²  = €6 €] €=I§² €± €²  = €6 €] €=I§²;§±G§²  = €6 €] €=G§² €± €²  = €6 €] €=I§²;§±G§²  = €6 €] €=G§² €± €²  ‹ €ˆ€‹ €ˆ€« €ˆ€¦ €Š €‹ €ˆ€‹ €ˆ€«€¤€©€¦ €‹ €ˆ€‹ €ˆ€« €ˆ€¦ €Š €‹ €ˆ€‹ €ˆ€«€¤€©€¤ €‹ €ˆ €‹ €ˆ€‹ €ˆ€† €Š €‹ €ˆ €‹ €ˆ€‹€¤€©€† €‹ €ˆ €‹ €ˆ€‹ €ˆ€† €Š €‹ €ˆ €‹ €ˆ€‹€¤€©€† €‹ €ˆ€‹ €ˆ€« €ˆ€¦ €Š €‹ €ˆ€‹ €ˆ€«€¤€©€¦ €‹ €ˆ€‹ €ˆ€« €ˆ€¦ €Š €‹ €ˆ€‹ €ˆ€«€¤€©€¤ €‹ €ˆ €‹ €ˆ€‹ €ˆ€† €Š €‹ €ˆ €‹ €ˆ€‹€¤€©€† €‹ €ˆ €‹ €ˆ€‹ €ˆ€† €Š €‹ €ˆ €‹ €ˆ€‹€¤ €¤ €¤ €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €Ÿ€ €Ÿ€Ÿ €€­€Ÿ € €Ÿ€Ÿ €Ÿ€ €Ÿ€Ÿ €€­€¿ €®€¿ €Ÿ€¬€®€¿€³€s€“€S€Œ€®€Ÿ€³€s€“€S €Œ € €Ÿ €³ €s €“ €S €Œ €€Ÿ€s€³€S€“ €Ÿ€ €Ÿ€Ÿ €€­€Ÿ € €Ÿ€Ÿ €Ÿ€ €Ÿ€Ÿ €€­€¿ €®€¿ €Ÿ€¬€®€¿€³€s€“€S€Œ€®€Ÿ€³€s€“€S €Ÿ €€¬ €³ €s €“ €S€Ÿ€® €¬€S€“€s€³ €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €= €= €6 €] €= €= €=€I§²;§±G§²€G§² €± €²€I§²;§±G§²€G§²6§±€²€K§²=§±I§²€I§² €± €²€K§²=§±I§²€I§²8§±€²  = €6 €] €=K§²=§±I§²  = €6 €] €=I§² €± €²  = €6 €] €=K§²=§±I§²  = €6 €] €=I§² €± €²  = €6 €] €=K§²=§±I§²  = €6 €] €=I§² €± €²  = €6 €] €=K§²=§±I§²  = €6 €] €=I§² €± €² €Ÿ €€Ÿ€€¿€Ÿ€¿€Ÿ€Ÿ€¿€Ÿ€¿€Ÿ €Ÿ €Ÿ €Ÿ €€Ÿ€€¿€Ÿ€¿€Ÿ€Ÿ€¿€Ÿ €¿€¿€¿€¿ €Ÿ €€Ÿ€€¿€Ÿ€¿€Ÿ€Ÿ€¿€Ÿ€¿€Ÿ €Ÿ €Ÿ €Ÿ €€Ÿ€€¿€Ÿ€¿€Ÿ€Ÿ €¿ €¿ €¿€¿€§€¿ €= €] €= €] €= €] €= €] €= €]€=€] €= €] €= €] €= €] €= €] €= €]€=€]€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥ €= €] €= €] €= €] €= €] €= €]€=€] €= €] €= €] €= €] €= €] €= €]€=€] €= €] €= €] €= €] €= €] €= €]€=€] €= €] €= €] €= €] €= €] €= €]€=€] €c €b €c €b €c €b€c€b €c €b €c €b €c €b€ƒ €‚€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€š€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€º€š €= €]L§’  ] €= €] €= €]:§’  ]€=€] €= €]L§’  ] €= €] €= €]:§’  ]€=€] €= €]L§’  ] €= €] €= €]:§’  ]€=€] €= €]L§’  ] €= €] €= €]:§’  ]€=€]Š˜€ €a€€a €g ~ €` €€ €a€€a €g ~€ €€ €a€€a €g ~ €` €€ €a€€a €g ~€ €€ €a€€a €g ~ €` €€ €a€€a €g ~€ €€ €a€€a €g ~ €`€`€g€G€Gú_€ €‚ €ƒ œy x { W W €‚ €ƒ€ œy x { W v€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€¥€{€¥€{€{€º€š€;€e€;€;€e€;€e€;€;€e€;€e€;€;€e€;€e€[€{€ºd°š €= €] €= €] €= €] €= €] €= €]€=€] €= €] €= €] €= €] €= €] €= €]€=€]€=€] €= €] €= €]€=€] €= €]€=€]€=€] €= €] €= €]€=€] €= €]€=€] €c €b €b €b €b €c€b€b €b€b €c€b €b€b €b€b€b€€b€b€€€b€b€€b€b€€‚€‚€:§’L§’ €’€:§’L§’€’€:§’L§’ €’€:§’L§’€’:§’L§’ €’€:§’L§’€’€:§’L§’ €’€:§’L§’°’€{´t€{”€{€¥Ô€{´t€{Ô€{”€{´t€{´€{€¥t€{´t€{Ô€{t€{´t€{”€{€¥Ô€{´t€{Ô€{”€{´t€{´€{€¥t€{´t€{Ô€{t€;€e€;€;€e€;€e€;€;€e€;€e€;€;€e€;€e€[€{€¥Ğ° u • 5 U “ 5 u • U u • U • 5 U u • 5 U “ 5 u • U u • U • U u • ’Nf0Da’‡²Ó‡óP””•SµÖ•ÓX–X–â°\ç_ç¸_(0d)œ¹œp¸\ç_ç€@ºâjşÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2Tv˜ºÜşïÍ«‰gE#¹ÜîÿÿîÍ›W#2dÉíşÿÿïŞœ6!céşÿÿÿÿïaüÿÿÿÿÿÿÏ0"3DUfwˆ™ª»ÌİîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŠşÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2Tv˜ºÜşïÍ«‰gE#¹ÜîÿÿîÍ›W#2dÉíşÿÿïŞœ6!céşÿÿÿÿïaüÿÿÿÿÿÿÏ0"3DUfwˆ™ª»Ìİîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªşÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2Tv˜ºÜşïÍ«‰gE#¹ÜîÿÿîÍ›W#2dÉíşÿÿïŞœ6!céşÿÿÿÿïaüÿÿÿÿÿÿÏ0"3DUfwˆ™ª»ÌİîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊşÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2Tv˜ºÜşïÍ«‰gE#¹ÜîÿÿîÍ›W#2dÉíşÿÿïŞœ6!céşÿÿÿÿïaüÿÿÿÿÿÿÏ0"3DUfwˆ™ª»Ìİîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêşÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2Tv˜ºÜşïÍ«‰gE#¹ÜîÿÿîÍ›W#2dÉíşÿÿïŞœ6!céşÿÿÿÿïaüÿÿÿÿÿÿÏ0"3DUfwˆ™ª»Ìİîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâj-- title: Attack Of The PETSCII Robots For TIC-80 -- author: grayblight -- desc: The PETSCII Robots invade the TIC-80! -- license: MIT License -- version: 0.1 -- script: lua -- input: gamepad -- fade variables fadestore={} --store palette fadeorder={} --store true if palette color is lower than aiming color fadeplay=false fadestep=0 --set to 0 for fadeout, set to 1 for fadein fadespeed=8 --range from 1 to 255, set to 0 breaks it fadecolor={0x1a,0x1c,0x2c} --RGB values of the fading color, here the TIC80 black fadecheck=false --general variables debugmode = false game_ticks = 0 control_type = 1 music_enabled = 1 control_cooldown = 0 switching_game_state = false switching_gs_to = "TITLE" switching_sync_to = 0 game_state = "SPLASH" --available: SPLASH, TITLE , EXTRA, JUKEBOX , INGAME , LEVELINTRO difficulty = 1 --menu variables splash_timer = 0 menuCredits_x = 240 ufo_visible = false ufo_x = -60 ufo_sprite = 1 flash_colour = 6 flash_index = 0 menu_option = 0 extras_characters_x = 128 extras_option = 0 --Player variables player_x = 22 player_y = 38 player_health = 12 player_is_searching = false player_searchx = 0 player_searchy = 0 player_search_time = 0 -- max is 480 player_searchanim_x = 0 player_searchanim_y = 0 player_searchanim_index = 0 player_is_pushing = false player_pushsx = 0 player_pushfx = 0 player_pushsy = 0 player_pushfy = 0 player_pistolammo = 0 player_plasmaammo = 0 player_bombs = 0 player_medkits = 0 player_emps = 0 player_magnets = 0 player_item = 0 player_weapon = 1 player_redkey = false player_greenkey = false player_bluekey = false player_frame = 1 player_dir = 1 player_movetimer = 0 player_maxmovetime = 8 mapid = 1 --ingame variables --data format for hidden items ...x,y,item (1=med 2= bomb 3= magnet 4= emp 5= pistol 5= plasma), quantity... TESTMAP_ITEMDATA = {20,36,5,100} wheel_size = 0 hidden_items = {} indicesToRemove = {} --x,y win_transporter = {} hud_msg_line1 = "Welcome to TIC-80 ROBOTS!" hud_msg_line2 = "David Murray & grayblight 2024" border_hurt_time = 0 border_emp_time = 0 --hoverbots hoverbots = {} function create_hoverbot(x,y,angry) table.insert(hoverbots,0,10) table.insert(hoverbots,0,angry) table.insert(hoverbots,0,y) table.insert(hoverbots,0,x) end --credits variables jukebox_track = 0 credits_y = 0 credits_scrolling = false credits_start_timer = 60 -- formula for calculation text centres -- (240 - length of string * 6) / 2 function moveTile(x,y,mx,my) local tile = mget(x,y) local targetTile = mget(mx,my) if player_x+player_pushsx+player_pushfx ~= player_x or player_y+player_pushsy+player_pushfy ~= player_y then if fget(tile,2) and fget(targetTile,3) then --Set the target tile to the one you pushed mset(mx,my,tile) mset(x,y,1) sfx(2) -- Loop through all hidden items for i = 1, #hidden_items, 4 do local item_x = hidden_items[i] local item_y = hidden_items[i + 1] -- Check if the item is on the tile being pushed if item_x == x and item_y == y then -- Update the item's position to the new location hidden_items[i] = mx hidden_items[i + 1] = my end end end end if not fget(targetTile,3) or player_x+player_pushsx+player_pushfx == player_x and player_y+player_pushsy+player_pushfy == player_y then addMsg("Blocked!") sfx(0) end player_pushfx = 0 player_pushfy = 0 player_pushsx = 0 player_pushsy = 0 end function checkTile(x,y,flag) flag=flag or 0 -- default to flag 0, so you can just checkTile(x,y) for flag 0 checks local tile=mget(x,y) -- get tile at map coordinates return fget(tile,flag) -- return true or false for if the tile has that flag end --Adds a new message to to the information panel function addMsg(message) hud_msg_line1 = hud_msg_line2 hud_msg_line2 = message end function BOOT() fadestep = 0 switching_sync_to = 0 end function TIC() if fadeplay then fadecheck=fading() end if fadecheck == true and switching_game_state == true and switching_gs_to ~= "" and fadestep == 2 then game_state = switching_gs_to switching_game_state = false switching_gs_to = "" sync(0,switching_sync_to) for a=0,47 do poke(0x03fc+a,fadecolor[a%3+1]) end storecolor() end game_ticks = game_ticks + 1 if game_ticks % 9 == 0 then flash_index = flash_index + 1 end if flash_index > 4 then flash_index = 0 end if flash_index == 0 then flash_colour = 12 end if flash_index == 1 or flash_index == 4 then flash_colour = 13 end if flash_index == 2 then flash_colour = 14 end if flash_index == 3 then flash_colour = 0 end if control_cooldown > 0 then control_cooldown = control_cooldown -1 end if game_state == "SPLASH" then cls(00) print("ORIGINAL BY",84,60,12,true) spr(312,85,70,-1,1,0,0,8,2,true) splash_timer = splash_timer + 1 if splash_timer < 120 and not fading() then fadeplay = true fadestep = 2 elseif splash_timer > 120 and not fading() then fadeplay = true fadestep = 1 elseif splash_timer > 130 then game_state = "TITLE" music(0) fadeplay = true fadestep = 1 end end if game_state == "TITLE" then cls(08) if ufo_visible == true then if ufo_sprite == 1 then spr(304,ufo_x,48,5,1,0,0,4,3) else spr(308,ufo_x,48,5,1,0,0,4,3) end if game_ticks % 3 == 0 then ufo_x = ufo_x + 1 end if game_ticks % 10 == 0 then ufo_sprite = ufo_sprite * -1 end end map(0,0,30,17,0,0,-1) spr(448,0,96,-1,1,0,0,16,4) spr(384,128,96,-1,1,0,0,4,4) spr(388,192,96,-1,1,0,0,6,4) spr(410,0,72,-1,1,0,0,6,3) if difficulty == 0 then spr(256,168,48,11,1,0,0,3,3) end if difficulty == 1 then spr(259,168,48,11,1,0,0,3,3) end if difficulty == 2 then spr(304,168,48,11,1,0,0,3,3) end if game_ticks % 2 == 0 then menuCredits_x = menuCredits_x - 1 if menuCredits_x < -400 then menuCredits_x = 240 end end if game_ticks % 700 == 0 then ufo_visible = true end if menu_option == 0 then print("START GAME",23,7,flash_colour,true) print("SELECT MAP",23,14,6,true) print("DIFFICULTY",23,21,6,true) print("SETTINGS",23,28,6,true) if btnp(4) or keyp(50) then game_state = "INGAME" hud_msg_line1 = "Welcome to TIC-80 ROBOTS!" hud_msg_line2 = "David Murray & grayblight 2024" switching_sync_to = 1 control_cooldown = 10 hidden_items = TESTMAP_ITEMDATA sync(0,1) if mapid == 1 then music(0) end end end if menu_option == 1 then print("START GAME",23,7,6,true) print("SELECT MAP",23,14,flash_colour,true) print("DIFFICULTY",23,21,6,true) print("SETTINGS",23,28,6,true) end if menu_option == 2 then print("START GAME",23,7,6,true) print("SELECT MAP",23,14,6,true) print("DIFFICULTY",23,21,flash_colour,true) print("SETTINGS",23,28,6,true) if btnp(4) or keyp(50) then difficulty = difficulty + 1 sfx(0) if difficulty > 2 then difficulty = 0 end end end if menu_option == 3 then print("START GAME",23,7,6,true) print("SELECT MAP",23,14,6,true) print("DIFFICULTY",23,21,6,true) print("SETTINGS",23,28,flash_colour,true) if btnp(4) and control_cooldown == 0 or keyp(50) and control_cooldown == 0 then game_state = "EXTRA" extras_option = 0 control_cooldown = 10 sfx(0) end end if btnp(1) then menu_option = menu_option + 1 sfx(0) if menu_option > 3 then menu_option = 0 end end if btnp(0) then menu_option = menu_option - 1 sfx(0) if menu_option < 0 then menu_option = 3 end end print("ORIGINAL - DAVID MURRAY 2021 PORT - GRAYBLIGHT MUSIC - RETROPONE ",menuCredits_x,130,12) --map(0,15,14,2,0,120) --map(29,15,2,2,232,120) print("01-RESEARCH LAB",10,47,6) poke(0x03FF8,00) if ufo_x > 260 then ufo_x = -60 ufo_visible = false end end if game_state == "EXTRA" then cls(00) print("Version - alpha020524",2,129,15) print("-ATTACK OF THE PETSCII ROBOTS-",30,5,5,true) print("SETTINGS",96,12,12,true) --print("OPTIONS",99,118,12,true) if btnp(1) then extras_option = extras_option + 1 sfx(0) if extras_option > 3 then extras_option = 0 end end if btnp(0) then extras_option = extras_option - 1 sfx(0) if extras_option < 0 then extras_option = 3 end end if extras_option == 0 then print("CONTROL TYPE:",24,32,flash_colour) print("MUSIC:",24,42,6) print("JUKEBOX/CREDITS",24,52,6) print("BACK",24,72,6) if btnp(4) and control_cooldown == 0 or keyp(50) and control_cooldown == 0 then control_type = control_type * -1 sfx(0) end end if extras_option == 1 then print("CONTROL TYPE:",24,32,6) print("MUSIC:",24,42,flash_colour) print("JUKEBOX/CREDITS",24,52,6) print("BACK",24,72,6) if btnp(4) and control_cooldown == 0 or keyp(50) and control_cooldown == 0 then music_enabled = music_enabled * -1 sfx(0) end end if extras_option == 2 then print("CONTROL TYPE:",24,32,6) print("MUSIC:",24,42,6) print("JUKEBOX/CREDITS",24,52,flash_colour) print("BACK",24,72,6) if btnp(4) or keyp(50) then game_state = "JUKEBOX" credits_y = 0 credits_start_timer = 60 sfx(0) end end if extras_option == 3 then print("CONTROL TYPE:",24,32,6) print("MUSIC:",24,42,6) print("JUKEBOX/CREDITS",24,52,6) print("BACK",24,72,flash_colour) if btnp(4) or keyp(50) then game_state = "TITLE" end end if btnp(5) then game_state = "TITLE" sfx(0) end if control_type == 1 then print("Gamepad",164,32,6) end if control_type == -1 then print("Keyboard",164,32,6) end if music_enabled == 1 then print("ON",164,42,6) end if music_enabled == -1 then print("OFF",164,42,2) end --spr(352,6,88,-1,1,0,0,7,5) --spr(360,64,88,-1,1,0,0,8,5) --spr(440,128,88,-1,1,0,0,6,5) --spr(432,180,88,-1,1,0,0,6,5) end --MASSIVE TODO FOR THE JUKEBOX! Needs to allow any track to be played. --I will likely remove "The 8-Bit Guy" logo spr call here in favour of printing "David Murray" So that switching banks won't glitch the screen --Once that's in, we'll need to add an audio visualiser like the NES port's jukebox. if game_state == "JUKEBOX" then if credits_start_timer > 0 then credits_start_timer = credits_start_timer - 1 end if credits_start_timer == 0 and credits_scrolling == false then credits_scrolling = true end if credits_scrolling == true and game_ticks % 3 == 0 then credits_y = credits_y + 1 end cls(00) print("-ATTACK OF THE PETSCII ROBOTS-",30,32 - credits_y,5,true) print("FOR TIC-80",90,40 - credits_y,6,true) print("ORIGINAL BY",85,60 - credits_y,6,true) line(85,66-credits_y,149,66-credits_y,6) print("David Murray",82,70 - credits_y,12,true) --spr(312,85,70 - credits_y,-1,1,0,0,8,2,true) print("PROGRAMMING",85,160 - credits_y,6,true) line(85,166-credits_y,149,166-credits_y,6) print("grayblight",90,170 - credits_y,12,true) print("Retropone",93,180 - credits_y,12,true) print("ARTWORK",99,220 - credits_y,6,true) line(99,226-credits_y,139,226-credits_y,6) print("grayblight",90,230 - credits_y,12,true) print("Piotr Radecki",81,240 - credits_y,12,true) print("SFX",111,280 - credits_y,6,true) line(111,286-credits_y,127,286-credits_y,6) print("grayblight",90,290 - credits_y,12,true) print("MUSIC",105,330 - credits_y,6,true) line(105,336-credits_y,133,336-credits_y,6) print("Noelle Amelie Aman",66,340 - credits_y,12,true) print("Retropone",93,350 - credits_y,12,true) --print("PLAYTESTING",87,390 - credits_y,6,true) --line(78,396-credits_y,160,396-credits_y,6) --!!! I'll add playtesters here once they come. !!! print("SPECIAL THANKS",78,390 - credits_y,6,true) line(78,396-credits_y,160,396-credits_y,6) print("TIC-80 Discord",78,400 - credits_y,12,true) print("borb",108,410 - credits_y,12,true) rect(0,110,240,136,00) line(0,110,240,110,12) line(0,120,240,120,12) --"if control_type == 1 then -- print("B",2,123,2) -- print(" to exit",6,123,13) -- print("A",2,129,6) -- print(" to play",6,129,13) --end --if control_type == -1 then -- print("X",2,123,2) -- print(" to exit",6,123,13) -- print("Z/Return",2,129,6) -- print(" to play",48,129,13) --end --AUDIO VISUALISER STUFF --11 Bars rect(187,121,15,15,12) rect(172,121,15,15,12) rect(157,121,15,15,12) rect(142,121,15,15,12) rect(127,121,15,15,12) rect(112,121,15,15,12) rect(97,121,15,15,12) rect(82,121,15,15,12) rect(67,121,15,15,12) rect(52,121,15,15,12) rect(37,121,15,15,12) print("<",12,113,12,true) print(">",222,113,12,true) if jukebox_track == 0 then print("METAL HEADS",87,113,12,true) end if jukebox_track == 1 then print("METALLIC BOP",84,113,12,true) end if jukebox_track == 2 then print("RUSHIN' IN",90,113,12,true) end if jukebox_track == 3 then print("ROBOT ATTACK!",81,113,12,true) end if jukebox_track == 4 then print("GET PSYCHED",87,113,12,true) end if jukebox_track == 5 then print("ALL CLEAR!",90,113,12,true) end if jukebox_track == 6 then print("END OF THE LINE",75,113,12,true) end if credits_y > 420 then credits_y = -100 end if credits_y == -1 and game_ticks % 3 == 0 then credits_start_timer = 120 credits_scrolling = false credits_y = 0 end if btnp(5) then game_state = "EXTRA" credits_start_timer = 60 end if btnp(2) then jukebox_track = jukebox_track - 1 if jukebox_track < 0 then jukebox_track = 6 end end if btnp(3) then jukebox_track = jukebox_track + 1 if jukebox_track > 6 then jukebox_track = 0 end end end if game_state == "INGAME" then if control_cooldown > 0 then control_cooldown = control_cooldown - 1 end if player_movetimer > 0 then player_movetimer = player_movetimer - 1 end if player_frame > 3 then player_frame = 0 end cls(00) map(player_x-6,player_y-3,13,7,-8,0,0,2) --hud for selection wheel (as it displays behind) circ(96,56,wheel_size,0) if btn(7) and wheel_size < 25 then wheel_size = wheel_size + 2 end if wheel_size > 10 then spr(414,92,45+wheel_size) spr(396,92,60-wheel_size) spr(413,85+wheel_size,52) spr(412,100-wheel_size,52) if btnp(2) and btn(7) then player_weapon = player_weapon * -1 sfx(13) if player_weapon == -1 and player_plasmaammo == 0 then player_weapon = 1 end if player_weapon == 1 and player_pistolammo == 0 then player_weapon = -1 end end if btnp(3) and btn(7) then player_item = player_item + 1 if player_item > 3 then player_item = 0 end sfx(14) end end if btn(7) == false and wheel_size > 0 then wheel_size = wheel_size - 2 end --player draw if player_frame == 0 then spr(272+32*player_dir,88,48,6,1,0,0,2,2) end if player_frame == 1 then spr(274+32*player_dir,88,48,6,1,0,0,2,2) end if player_frame == 2 then spr(276+32*player_dir,88,48,6,1,0,0,2,2) end if player_frame == 3 then spr(274+32*player_dir,88,48,6,1,0,0,2,2) end --hud spr(257,0,112,-1,1,0,0,15,1) spr(282,120,112,-1,1,0,0,6,1) spr(298,168,112,-1,1,0,0,3,1) spr(303,192,112) spr(507,200,112,-1,1,0,0,5,1) spr(319,192,120,-1,1,0,0,1,3) spr(303,192,0) spr(319,192,8,-1,1,0,0,1,4) spr(303,192,40) spr(314,200,0,-1,1,0,0,5,1) spr(475,200,40,-1,1,0,0,5,1) spr(319,192,48,-1,1,0,0,1,4) spr(303,192,80) spr(491,200,80,-1,1,0,0,5,1) spr(383,192,88,-1,1,0,0,1,3) print(hud_msg_line1,1,122,6,true) print(hud_msg_line2,1,129,5,true) --hp rect(202,122,36,6,2) rect(202,125,36,3,1) rect(202,122,player_health*3,6,5) line(202,123,201+player_health*3,123,12) rect(202,126,player_health*3,2,6) line(202,132,214,132,2) line(214,132,226,132,4) line(226,132,238,132,6) line(202,132,202,129,2) line(208,132,208,129,2) line(214,132,214,129,4) line(220,132,220,129,4) line(226,132,226,129,6) line(232,132,232,129,6) line(238,132,238,129,6) pix(202,122,00) pix(237,122,00) pix(202,127,00) pix(237,127,00) if player_redkey == true then spr(439,201,91,-1,1,0,0,2,2) end if player_greenkey == true then spr(441,214,91,-1,1,0,0,2,2) end if player_bluekey == true then spr(484,227,91,-1,1,0,0,2,2) end if player_weapon == 1 and player_pistolammo > 0 then spr(376,203,13,-1,1,0,0,4,2) print(tostring(player_pistolammo).format("%03d",player_pistolammo),223,31,12,true) end if player_weapon == -1 and player_plasmaammo > 0 then spr(407,198,13,-1,1,0,0,5,2) print(tostring(player_plasmaammo).format("%03d",player_plasmaammo),223,31,12,true) end if player_item == 0 and player_medkits > 0 then spr(330,199,47,00,1,0,0,5,3) print(tostring(player_medkits).format("%03d",player_medkits),223,73,12,true) end if debugmode == true then print("DEBUG MODE ENABLED.",2,2,00) print("DEBUG MODE ENABLED.",1,1,12) print(player_x,2,8,00) print(player_y,2,14,00) print(player_x,1,7,12) print(player_y,1,13,12) end if player_is_pushing == false and player_is_searching == false and control_cooldown == 0 then if not btn(6) then if btn(0) and player_movetimer == 0 and checkTile(player_x,player_y-1,0) == false and not btn(7) then player_dir = 0 player_y = player_y -1 player_movetimer = player_maxmovetime player_frame = player_frame + 1 end if btn(1) and player_movetimer == 0 and checkTile(player_x,player_y+1,0) == false and not btn(7) then player_dir = 1 player_y = player_y +1 player_movetimer = player_maxmovetime player_frame = player_frame + 1 end if btn(2) and player_movetimer == 0 and checkTile(player_x-1,player_y,0) == false and not btn(7) then player_dir = 2 player_x = player_x -1 player_movetimer = player_maxmovetime player_frame = player_frame + 1 end if btn(3) and player_movetimer == 0 and checkTile(player_x+1,player_y,0) == false and not btn(7) then player_dir = 3 player_x = player_x +1 player_movetimer = player_maxmovetime player_frame = player_frame + 1 end elseif player_weapon == 1 and player_pistolammo > 0 then --gun bit if btnp(0) and player_movetimer == 0 and checkTile(player_x,player_y-1,0) == false and not btn(7) then player_dir = 0 sfx(5) player_pistolammo = player_pistolammo - 1 end if btnp(1) and player_movetimer == 0 and checkTile(player_x,player_y+1,0) == false and not btn(7) then player_dir = 1 sfx(5) player_pistolammo = player_pistolammo - 1 end if btnp(2) and player_movetimer == 0 and checkTile(player_x-1,player_y,0) == false and not btn(7) then player_dir = 2 sfx(5) player_pistolammo = player_pistolammo - 1 end if btnp(3) and player_movetimer == 0 and checkTile(player_x+1,player_y,0) == false and not btn(7) then player_dir = 3 sfx(5) player_pistolammo = player_pistolammo - 1 end end end if btnp(4) and player_is_pushing == false and player_is_searching == false and control_cooldown == 0 then player_is_searching = true sfx(1) end if player_searchx == 0 and player_searchy == 0 and player_is_searching == true then if btnp(0) then player_searchy = -1 player_search_time = 480 addMsg("Searching") player_dir = 0 end if btnp(1) then player_searchy = 1 player_search_time = 480 addMsg("Searching") player_dir = 1 end if btnp(2) then player_searchx = -1 player_search_time = 480 addMsg("Searching") player_dir = 2 end if btnp(3) then player_searchx = 1 player_search_time = 480 addMsg("Searching") player_dir = 3 end end if player_is_searching == true then spr(402,88+player_searchx*16,48+player_searchy*16,6,1,0,0,2,2) end if player_search_time > 0 and player_is_searching == true then player_search_time = player_search_time - 4 end if player_search_time == 420 then hud_msg_line2 = "Searching." end if player_search_time == 360 then hud_msg_line2 = "Searching.." end if player_search_time == 300 then hud_msg_line2 = "Searching..." end if player_search_time == 240 then hud_msg_line2 = "Searching...." end if player_search_time == 180 then hud_msg_line2 = "Searching....." end if player_search_time == 120 then hud_msg_line2 = "Searching......" end if player_search_time == 60 then hud_msg_line2 = "Searching......." end if player_search_time == 0 or fget(mget(player_x+player_searchx,player_y+player_searchy),1) == false then if player_searchx ~= 0 or player_searchy ~= 0 then hud_msg_line2 = "Searching........" local found_somthing = false -- Iterate through the groups in hidden_items for i = #hidden_items, 1, -4 do -- Extract data from the current group local group_x = hidden_items[i - 3] local group_y = hidden_items[i - 2] local category = hidden_items[i - 1] local quantity = hidden_items[i] -- Check if player coordinates match the current group if player_x+player_searchx == group_x and player_y+player_searchy == group_y then found_somthing = true sfx(4) -- Player is at the coordinates of this group -- Add quantity to the corresponding variable based on category if category == 1 then player_medkits = player_medkits + quantity addMsg("You found a MEDKIT!") elseif category == 2 then player_bombs = player_bombs + quantity addMsg("You found a TIMEBOMB!") elseif category == 3 then player_magnets = player_magnets + quantity addMsg("You found a MAGNET!") elseif category == 4 then player_emps = player_emps + quantity addMsg("You found an EMP!") elseif category == 5 then player_pistolammo = player_pistolammo + quantity addMsg("You found a PISTOL!") elseif category == 6 then player_plasmaammo = player_plasmaammo + quantity addMsg("You found a PLASMA GUN!") end table.insert(indicesToRemove, i) table.insert(indicesToRemove, i - 1) table.insert(indicesToRemove, i - 2) table.insert(indicesToRemove, i - 3) end end for _, index in ipairs(indicesToRemove) do table.remove(hidden_items, index) end indicesToRemove = {} if found_somthing == false then addMsg("Nothing found here.") sfx(0) end player_is_searching = false player_searchx = 0 player_searchy = 0 player_search_time = 0 player_movetimer = player_maxmovetime end end if mget(player_x+player_searchx,player_y+player_searchy) == 224 and player_is_searching == true then mset(player_x+player_searchx,player_y+player_searchy,240) end if btnp(5) and player_is_pushing == false and player_is_searching == false and control_cooldown == 0 or keyp(13) and player_is_pushing == false and player_is_searching == false and control_cooldown == 0 then player_is_pushing = true sfx(1) end if player_is_pushing == true then spr(404,88+player_pushsx*16+player_pushfx*16,48+player_pushsy*16+player_pushfy*16,6,1,0,0,2,2) if btnp(0) and player_pushsy == 0 and player_pushsx == 0 then player_pushsy = -1 control_cooldown = 5 player_dir = 0 end if btnp(1) and player_pushsy == 0 and player_pushsx == 0 then player_pushsy = 1 control_cooldown = 5 player_dir = 1 end if btnp(2) and player_pushsy == 0 and player_pushsx == 0 then player_pushsx = -1 control_cooldown = 5 player_dir = 2 end if btnp(3) and player_pushsy == 0 and player_pushsx == 0 then player_pushsx = 1 control_cooldown = 5 player_dir = 3 end if player_pushsx ~= 0 or player_pushsy ~= 0 then if not fget(mget(player_x+player_pushsx, player_y+player_pushsy),2) then addMsg("Can't push that!") player_is_pushing = false player_pushfx = 0 player_pushfy = 0 player_pushsx = 0 player_pushsy = 0 sfx(0) player_movetimer = player_maxmovetime end end if player_pushsx ~= 0 and control_cooldown == 0 or player_pushsy ~= 0 and control_cooldown == 0 then if btnp(0) then player_pushfy = -1 moveTile(player_x+player_pushsx,player_y+player_pushsy,player_x+player_pushsx+player_pushfx,player_y+player_pushsy+player_pushfy) player_is_pushing = false player_movetimer = player_maxmovetime end if btnp(1) then player_pushfy = 1 moveTile(player_x+player_pushsx,player_y+player_pushsy,player_x+player_pushsx+player_pushfx,player_y+player_pushsy+player_pushfy) player_is_pushing = false player_movetimer = player_maxmovetime end if btnp(2) then player_pushfx = -1 moveTile(player_x+player_pushsx,player_y+player_pushsy,player_x+player_pushsx+player_pushfx,player_y+player_pushsy+player_pushfy) player_is_pushing = false player_movetimer = player_maxmovetime end if btnp(3) then player_pushfx = 1 moveTile(player_x+player_pushsx,player_y+player_pushsy,player_x+player_pushsx+player_pushfx,player_y+player_pushsy+player_pushfy) player_is_pushing = false player_movetimer = player_maxmovetime end end end end end -- This is the master area that controls scanline based effects relative to the border. There'll be a main screen relative one later when explosion effects are coded in. function BDR(row) if game_state == "TITLE" then poke(0x03FF8,08) end if game_state == "EXTRA" or game_state == "JUKEBOX" then if row == 0 then poke(0x03FF8,15) end if row == 34 then poke(0x03FF8,07) end if row == 68 then poke(0x03FF8,06) end if row == 102 then poke(0x03FF8,05) end end if game_state == "INGAME" then if border_hurt_time > 0 then poke(0x03FF8,02) end if border_emp_time > 0 then poke(0x03FF8,11) end if border_hurt_time == 0 and border_emp_time == 0 then poke(0x03FF8,00) end end end function fading() --return a bool if fading is done local fadedone=false if fadestep==0 then storecolor() --fadestep=1 elseif fadestep==1 then local fadecheck=0 for a=0,47 do local neworder=-1 if fadeorder[a+1] then neworder=1 end local newcolor=peek(0x3fc0+a)+fadespeed*neworder if (fadeorder[a+1]==false and newcolorfadecolor[a%3+1]) then poke(0x3fc0+a,fadecolor[a%3+1]) fadecheck=fadecheck+1 else poke(0x3fc0+a,newcolor) end end if fadecheck==48 then fadedone=true fadestep=2 end elseif fadestep==2 then local fadecheck=0 for a=0,47 do local neworder=1 if fadeorder[a+1] then neworder=-1 end local newcolor=peek(0x3fc0+a)+fadespeed*neworder if (fadeorder[a+1]==false and newcolor>fadestore[a+1]) or (fadeorder[a+1] and newcolor