From: Svjatoslav Agejenko Date: Sat, 7 Jul 2012 19:37:48 +0000 (+0300) Subject: initial cammit X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=qbasicapps.git;a=commitdiff_plain;h=79a4fa7075f6db68147ed79e380f79a3c9276d44 initial cammit --- 79a4fa7075f6db68147ed79e380f79a3c9276d44 diff --git a/.project b/.project new file mode 100755 index 0000000..3e5d85f --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + QBasicApps + + + + + + + + diff --git a/COPYING b/COPYING new file mode 100755 index 0000000..10828e0 --- /dev/null +++ b/COPYING @@ -0,0 +1,341 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/automation/school clock/kell/aasta.ap b/automation/school clock/kell/aasta.ap new file mode 100755 index 0000000..ef1b084 --- /dev/null +++ b/automation/school clock/kell/aasta.ap @@ -0,0 +1,7 @@ +v 01-01 12-31 tava +n 01-01 12-31 5 reede +e 10-04 opetajap +e 10-31 rebased +n 01-01 12-31 6 tuhi +n 01-01 12-31 7 tuhi + diff --git a/automation/school clock/kell/autoexec.bat b/automation/school clock/kell/autoexec.bat new file mode 100755 index 0000000..cd7ae3c --- /dev/null +++ b/automation/school clock/kell/autoexec.bat @@ -0,0 +1,2 @@ +coff +qb /run kk.bas \ No newline at end of file diff --git a/automation/school clock/kell/coff.asm b/automation/school clock/kell/coff.asm new file mode 100755 index 0000000..0466c15 --- /dev/null +++ b/automation/school clock/kell/coff.asm @@ -0,0 +1,4 @@ +mov dx, 37Ah +mov al, 0 +out dx, al +ret \ No newline at end of file diff --git a/automation/school clock/kell/coff.com b/automation/school clock/kell/coff.com new file mode 100755 index 0000000..2537f6d Binary files /dev/null and b/automation/school clock/kell/coff.com differ diff --git a/automation/school clock/kell/ekr.bas b/automation/school clock/kell/ekr.bas new file mode 100755 index 0000000..e5c6dfc --- /dev/null +++ b/automation/school clock/kell/ekr.bas @@ -0,0 +1,67 @@ +DECLARE SUB jooks () +DECLARE SUB suva () +DEFINT A-Z +DECLARE SUB cle () +DECLARE SUB disp () +DIM SHARED bit(0 TO 16) + +suva +jooks + +cle +bit(10) = 0 +bit(14) = 0 +bit(6) = 0 +bit(2) = 0 +4 +disp +GOTO 4 + +SUB cle +FOR a = 1 TO 16 +bit(a) = 1 +NEXT a +END SUB + +SUB disp +prt = &H378 +d = 0 +FOR a = 0 TO 3 +c = 2 ^ a +FOR b = 4 TO 7 +d = d + 1 +c = c + (bit(d) * 2 ^ b) +NEXT b + +OUT prt, c +NEXT a +END SUB + +SUB jooks +2 +cle +FOR a = 1 TO 16 +bit(16) = 1 +bit(a - 1) = 1 +bit(a) = 0 +PRINT a +FOR b = 1 TO 1000 +disp +NEXT b +NEXT a +GOTO 2 + +END SUB + +SUB suva +3 +cle +FOR b = 1 TO 16 +IF RND * 100 > 50 THEN bit(b) = 0 +NEXT b +FOR b = 1 TO 100 +disp +NEXT b +GOTO 3 +END SUB + diff --git a/automation/school clock/kell/juhend.txt b/automation/school clock/kell/juhend.txt new file mode 100755 index 0000000..5ffaadb --- /dev/null +++ b/automation/school clock/kell/juhend.txt @@ -0,0 +1,117 @@ + + + + Kooli Kell programmi kasutusjuhend + +2002.10 + +Programmi, juhendi ja skeemi autor: +Svjatoslav Agejenko +n0@hot.ee +www.hot.ee/n0/ + +K“ik on vabavara! + +Programm Kooli Kell on m“eldud kella laskmiseks koolis, tundi sisse ja v„lja. +Samuti juhib programm arvuti kljes olevat liidest, kahekohaliste numbrite +n„itamiseks (minutid / tunnid), 3 klahvilist klaviatuuri ja releed. +Tundi sisse minev kell on 1 pikk ning 1 lhem helin. V„ljaminev kell on 1 +tavaline pikk helin. Programm loeb aega arvuti ssteemsest kellast. +Kella laskmis ajad on organiseeritud failidesse *.PP . +Aasta v“i p„evaplaani muutmiseks tuleb redakteerida vastavaid faile. +(s“nast P„eva Plaan) Programm valib sobiva p„evaplaani l„htudes aastaplaanist, +mis asub failis "aasta.ap" . Programmi saab kasutada arvutil millele on +printeri pesasse (LPT1) hendatud spetsiaalne liides, liidese skeem on +failis "skeem.bmp". Liides omab kolme nummerdatud nuppu paigutusega: + + [1] [2] + [3] + +Programm on etten„htud iseseisvalt t””tama, kuid on ka v“imalus erandkorras +k„sitsi kella lasta, aega muuta jne.. Programm eristab tavalisi nupuvajutusi +ja topeltkl“pse. Eesm„rgiga suurendada funktsionaalsust v„heste nuppudega. + + Nuppude funktsioonid peamens: + +[1] kl“ps - laseb kella tundi sisse + topeltkl“ps - laseb kella tunnist v„lja +[2] kl“ps - l„heb aja muutmis mensse + topeltkl“ps - hakkab t””le uuendatud graafikuga, vajalik p„rast + sisendfailide redigeerimist. +[3] kl“ps - mardab ssteemse aja t„istunnini, vajalik aja + snkroniseerimiseks. + topeltkl“ps - laeb ssteemse: aasta, kuu, p„eva, tunnid, minutid + failist "sync.txt" + + Nuppude funktsioonid aja muutmis mens: + +[1] kl“ps - v„hendab ssteemsed tunnid/minutid 1. v“rra +[2] kl“ps - suurendab ssteemsed tunnid/minutid 1. v“rra +[3] kl“ps - valib n„itamiseks ja redigeerimiseks tunnid v“i minutid. + topeltkl“ps - l„heb tagasi peamensse. + +Aja muutmis mend tunneb „ra selle j„rgi et indikaator tunnid v“i +minutid vilgub, mitte ei p“le nagu peamens. + + + + faili AASTA.AP formaat: (aastaplaan) + + +v - - + +S“nast vahemik. Paneb paika p„evaplaani antud ajavahemikus. Esimene +daatum peab kindlasti olema v„iksem kui teine. St. kui on t“esti vaja: + +v 10-4 2-1 eri + +tuleb kirjutada: + +v 10-4 12-31 eri +v 1-1 2-1 eri + +P„evaplaan kehtib vahemiku esimesest p„evast kuni vahemiku viimase p„evani. + + +n - - + +S“nast n„dalap„ev. sama mis "v" kuid: paneb paika p„evaplaani antud +ajavahemikus, antud n„dalap„eval. N„dalap„eva kirjeldatakse numbriga. +n„dala esimene p„ev on esmasp„ev, talle vastab number 1. + + +e - + +S“nast eriline. Paneb paika antud kuup„evale antud p„evaplaani. Sobib h„sti +erakorraliste lhendatud v“i muul moel muudetud p„evaplaanide kehtestamiseks. +N„iteks riigiphad, spordip„ev jne. + +Kui teatud p„eva kohta ei k„inud htegi kirjet siis toimib vaikimisi "tuhi" +p„evaplaan. Kui teatud p„eva kohta k„is mitu kirjet siis j„„b peale viimane. + + + + failide *.PP formaat: (p„evaplaanid) + + +# : + +Laseb antud ajal antud kella. V“imalikud kella helinad on: + + sis -kell tundi sisse + val -kell tunnist v„lja + + + + faili SYNC.TXT formaat: + +faili esimesel kahel real peab olema j„rgnev: + +KK-PP-AAAA +TT:MM + +kus KK = kuu + PP = p„ev + AAAA = aasta + TT = tunnid + MM = minutid diff --git a/automation/school clock/kell/kk.bas b/automation/school clock/kell/kk.bas new file mode 100755 index 0000000..799d888 --- /dev/null +++ b/automation/school clock/kell/kk.bas @@ -0,0 +1,693 @@ +DECLARE SUB num (a%) +DECLARE SUB mntime () +DECLARE SUB showit () +DECLARE SUB ekrf (a%) +DECLARE SUB ekr () +DECLARE SUB rese () +DECLARE SUB start () +DECLARE SUB boot () +DECLARE SUB getnad (g%, n%, d%, k%) +DECLARE SUB initp (b$) +DECLARE SUB getmd (a$, m%, d%) +DECLARE SUB son (a$) +DEFINT A-Z + +DECLARE SUB inita () +DECLARE SUB chm () +DECLARE SUB chd () +DECLARE SUB kell (a%) +DECLARE SUB sync2 () +DECLARE SUB sync () +DECLARE SUB mnmain () +DECLARE SUB main () +DECLARE SUB getkey (kla%) +DECLARE SUB klnait (k%) +DECLARE SUB heli (a%) +DECLARE SUB keys () +DECLARE SUB disp () +DIM SHARED bit(0 TO 7) +DIM SHARED kl +DIM SHARED hist(1 TO 3) +DIM SHARED ap$(1 TO 500) +DIM SHARED apl +DIM SHARED pp$(1 TO 500) +DIM SHARED ppl +DIM SHARED prt, prt2 +DIM SHARED timo$ +DIM SHARED dato$ +DIM SHARED sona$(1 TO 50) +DIM SHARED mitus +DIM SHARED lp$ +DIM SHARED ndlp +DIM SHARED pn$(1 TO 7) +DIM SHARED bitt(1 TO 16) +DIM SHARED modee, vilgu +DIM SHARED tul(1 TO 2) + +start +heli 4 + + +disp +mnmain + +SUB chd +b$ = "tuhi" +IF apl = 0 THEN inita + +a$ = DATE$ +n1 = VAL(RIGHT$(a$, 4)) +n2 = VAL(LEFT$(a$, 2)) +a$ = LEFT$(a$, 5) +n3 = VAL(RIGHT$(a$, 2)) +getnad n1, n2, n3, ndlp +LOCATE 10, 1 +PRINT "n„dalap„ev:", pn$(ndlp) +FOR a = 1 TO apl +son ap$(a) +SELECT CASE sona$(1) +CASE "v" +getmd sona$(2), m1, d1 +getmd sona$(3), m2, d2 +getmd DATE$, m3, d3 +IF m3 < m1 THEN GOTO 9 +IF m3 > m2 THEN GOTO 9 +IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9 +IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9 +b$ = sona$(4) +CASE "n" +getmd sona$(2), m1, d1 +getmd sona$(3), m2, d2 +getmd DATE$, m3, d3 +IF m3 < m1 THEN GOTO 9 +IF m3 > m2 THEN GOTO 9 +IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9 +IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9 +IF ndlp <> VAL(sona$(4)) THEN GOTO 9 +b$ = sona$(5) +CASE "e" +getmd sona$(2), m1, d1 +getmd DATE$, m2, d2 +IF (m1 = m2) AND (d1 = d2) THEN b$ = sona$(3) +END SELECT +9 +NEXT a + +IF b$ <> lp$ THEN initp b$ +lp$ = b$ +LOCATE 9, 1 +PRINT "p„evaplaan:", lp$ +END SUB + +SUB chm +showit +a$ = DATE$ +IF a$ <> dato$ THEN chd +dato$ = a$ +b = 0 +FOR a = 1 TO ppl +son pp$(a) +SELECT CASE sona$(1) +CASE "#" +getmd sona$(2), h1, m1 +getmd TIME$, h2, m2 +' PRINT h1, m1, h2, m2 +IF (h2 = h1) AND (m2 = m1) THEN +IF sona$(3) = "sis" THEN b = 1 +IF sona$(3) = "val" THEN b = 2 +END IF +END SELECT +NEXT a + +IF b > 0 THEN kell b + +END SUB + +SUB disp +CLS +PRINT "Kooli Kell v 1.2 2002.10.10" +PRINT "Programmi autor Svjatoslav Agejenko" + +END SUB + +SUB ekr +FOR e = 1 TO 10 +c = 1 +c = c + 16 * bitt(1) +c = c + 32 * bitt(2) +c = c + 64 * bitt(3) +c = c + 128 * bitt(4) +OUT prt2, c + +c = 2 +c = c + 16 * bitt(5) +c = c + 32 * bitt(6) +c = c + 64 * bitt(7) +c = c + 128 * bitt(8) +OUT prt2, c + +c = 4 +c = c + 16 * bitt(9) +c = c + 32 * bitt(10) +c = c + 64 * bitt(11) +c = c + 128 * bitt(12) +OUT prt2, c + +c = 8 +c = c + 16 * bitt(13) +c = c + 32 * bitt(14) +c = c + 64 * bitt(15) +c = c + 128 * bitt(16) +OUT prt2, c + + +NEXT e +END SUB + +SUB ekrf (a) +SELECT CASE (a) +CASE 0 +bitt(1) = 0 +bitt(2) = 0 +bitt(3) = 0 +bitt(7) = 0 +bitt(5) = 0 +bitt(6) = 0 +bitt(8) = 1 +CASE 1 +bitt(2) = 0 +bitt(7) = 0 +CASE 2 +bitt(1) = 0 +bitt(3) = 0 +bitt(5) = 0 +bitt(7) = 0 +bitt(8) = 0 +CASE 3 +bitt(1) = 0 +bitt(2) = 0 +bitt(5) = 0 +bitt(8) = 0 +bitt(7) = 0 +CASE 4 +bitt(2) = 0 +bitt(6) = 0 +bitt(7) = 0 +bitt(8) = 0 +CASE 5 +bitt(1) = 0 +bitt(2) = 0 +bitt(5) = 0 +bitt(6) = 0 +bitt(8) = 0 +CASE 6 +bitt(1) = 0 +bitt(2) = 0 +bitt(3) = 0 +bitt(5) = 0 +bitt(6) = 0 +bitt(8) = 0 +CASE 7 +bitt(2) = 0 +bitt(7) = 0 +bitt(5) = 0 +CASE 8 +bitt(1) = 0 +bitt(2) = 0 +bitt(3) = 0 +bitt(7) = 0 +bitt(5) = 0 +bitt(6) = 0 +bitt(8) = 0 +CASE 9 +bitt(1) = 0 +bitt(2) = 0 +bitt(7) = 0 +bitt(5) = 0 +bitt(6) = 0 +bitt(8) = 0 +CASE 10 +bitt(15) = 0 +bitt(16) = 0 +bitt(12) = 0 +bitt(10) = 0 +bitt(9) = 0 +bitt(4) = 0 +CASE 11 +bitt(15) = 0 +bitt(4) = 0 +CASE 12 +bitt(15) = 0 +bitt(16) = 0 +bitt(9) = 0 +bitt(10) = 0 +bitt(11) = 0 +CASE 13 +bitt(15) = 0 +bitt(4) = 0 +bitt(16) = 0 +bitt(11) = 0 +bitt(9) = 0 +CASE 14 +bitt(15) = 0 +bitt(4) = 0 +bitt(12) = 0 +bitt(11) = 0 +CASE 15 +bitt(9) = 0 +bitt(4) = 0 +bitt(11) = 0 +bitt(12) = 0 +bitt(16) = 0 +CASE 16 +bitt(9) = 0 +bitt(4) = 0 +bitt(11) = 0 +bitt(12) = 0 +bitt(16) = 0 +bitt(10) = 0 +CASE 17 +bitt(4) = 0 +bitt(15) = 0 +bitt(16) = 0 +CASE 18 +bitt(4) = 0 +bitt(15) = 0 +bitt(16) = 0 +bitt(12) = 0 +bitt(11) = 0 +bitt(10) = 0 +bitt(9) = 0 +CASE 19 +bitt(4) = 0 +bitt(15) = 0 +bitt(16) = 0 +bitt(12) = 0 +bitt(11) = 0 +bitt(9) = 0 +END SELECT + +END SUB + +SUB getkey (kla) + +1 +IF vilgu = 1 THEN +tmr = tmr + 1 +IF tmr > 5 THEN bitt(13) = tul(1): bitt(14) = tul(2) ELSE bitt(13) = 1: bitt(14) = 1 +IF tmr > 10 THEN +tmr = 0 +END IF +ELSE +bitt(13) = tul(1) +bitt(14) = tul(2) +END IF + +b$ = LEFT$(TIME$, 5) +IF b$ <> timo$ THEN chm +timo$ = b$ +hist(1) = hist(1) + 1 +IF hist(1) > 20000 THEN hist(1) = 15000 +hist(2) = hist(2) + 1 +IF hist(2) > 20000 THEN hist(2) = 15000 +hist(3) = hist(3) + 1 +IF hist(3) > 20000 THEN hist(3) = 15000 + +keys +IF kl > 0 THEN + IF hist(kl) > 1 AND hist(kl) < 9 THEN + klnait kl + 3 + kla = kl + 3 + GOTO 4 + ELSE + hist(kl) = 0 + END IF +END IF +IF hist(1) = 10 THEN klnait 1: kla = 1: GOTO 4 +IF hist(2) = 10 THEN klnait 2: kla = 2: GOTO 4 +IF hist(3) = 10 THEN klnait 3: kla = 3: GOTO 4 + +IF hist(1) > 11 AND hist(2) > 11 AND hist(3) > 11 THEN klnait 0 +LOCATE 7, 1 +PRINT TIME$ +LOCATE 8, 1 +PRINT DATE$ +GOTO 1 +4 + + +hist(1) = 10000 +hist(2) = 10000 +hist(3) = 10000 + +FOR b = 1 TO 100 +SOUND 0, .1 +NEXT b +IF kla > 3 THEN SOUND 4000, .1 ELSE SOUND 3000, .1 + + + +END SUB + +SUB getmd (a$, m, d) +b$ = LEFT$(a$, 5) +m = VAL(LEFT$(b$, 2)) +d = VAL(RIGHT$(b$, 2)) + +END SUB + +SUB getnad (g, n, d, k) +LOCATE 11, 1 +PRINT g, n, d +p = g +m = n - 2 +IF n > 2 GOTO 120 +p = p - 1: m = m + 12 +120 +c = INT(p / 100) +y = p - c * 100 +w = d + INT((13 * m - 1) / 5) + y + INT(y / 4) + INT(c / 4) - 2 * c +k = w - 7 * INT(w / 7) +IF k = 0 THEN k = 7 +END SUB + +SUB heli (a) +'GOTO 10 +SELECT CASE a +CASE 1 +FOR c = 1 TO 5 +SOUND 3000, 1 +SOUND 0, 1 +NEXT c + +CASE 2 +FOR c = 1 TO 5 +SOUND 2500, 1 +SOUND 0, 2 +NEXT c +SOUND 2500, 10 + +CASE 3 +FOR a = 1 TO 10 +SOUND 500, .5 +SOUND 1500, .5 +SOUND 2000, .5 +SOUND 1520, .5 +NEXT a + + +CASE 4 +FOR a = 800 TO 1000 STEP 10 +SOUND a, .1 +SOUND a * 3, .1 +SOUND 0, 1 +NEXT a +10 + +END SELECT + + +END SUB + +SUB inita +apl = 0 +OPEN "aasta.ap" FOR INPUT AS #1 +5 +IF EOF(1) <> 0 THEN GOTO 3 +LINE INPUT #1, a$ +apl = apl + 1 +ap$(apl) = a$ +GOTO 5 +3 +CLOSE #1 +END SUB + +SUB initp (b$) +ppl = 0 +OPEN b$ + ".pp" FOR INPUT AS #1 +6 +IF EOF(1) <> 0 THEN GOTO 7 +LINE INPUT #1, a$ +ppl = ppl + 1 +pp$(ppl) = a$ +GOTO 6 +7 +CLOSE #1 +END SUB + +SUB kell (a) +heli 3 + +SELECT CASE a +CASE 1 +OUT prt, 255 +FOR b = 1 TO 80 +SOUND 0, 1 +NEXT b +OUT prt, 0 +FOR b = 1 TO 15 +SOUND 0, 1 +NEXT b +OUT prt, 255 +FOR b = 1 TO 15 +SOUND 0, 1 +NEXT b +OUT prt, 0 + +CASE 2 +OUT prt, 255 +FOR b = 1 TO 80 +SOUND 0, 1 +NEXT b +OUT prt, 0 + +END SELECT +END SUB + +SUB keys +kl = 0 +OUT prt, 0 +8 +a = INP(prt) +b = INP(prt) +IF a <> b THEN GOTO 8 + +b = 128 +FOR c = 0 TO 7 +d = INT(a / b) +bit(c) = d +a = a - (b * d) +b = b / 2 +NEXT c + +IF bit(4) = 1 AND bit(6) = 1 THEN bit(4) = 0: bit(6) = 0: kl = 3 +IF bit(6) = 1 THEN kl = 2 +IF bit(4) = 1 THEN kl = 1 + +a$ = INKEY$ +IF a$ = CHR$(0) + "K" THEN kl = 1 +IF a$ = CHR$(0) + "M" THEN kl = 2 +IF a$ = CHR$(0) + "P" THEN kl = 3 +ekr +END SUB + +SUB klnait (k) + +IF k = 3 THEN c = 3 ELSE c = 1 +IF k = 6 THEN c = 14 +LOCATE 5, 6 +COLOR 7, c +PRINT "" +COLOR 7, 0 + +IF k = 1 THEN c = 3 ELSE c = 1 +IF k = 4 THEN c = 14 +LOCATE 4, 1 +COLOR 7, c +PRINT "" +COLOR 7, 0 + +IF k = 2 THEN c = 3 ELSE c = 1 +IF k = 5 THEN c = 14 +LOCATE 4, 10 +COLOR 7, c +PRINT "" +COLOR 7, 0 + +END SUB + +SUB mnmain +2 +getkey a +IF a = 6 THEN sync +IF a = 3 THEN sync2 + +IF a = 1 THEN kell 1 +IF a = 4 THEN kell 2 + +IF a = 2 THEN mntime +IF a = 5 THEN rese +GOTO 2 + +END SUB + +SUB mntime +vilgu = 1 +11 +showit +getkey a + +IF modee = 1 THEN + b = VAL(LEFT$(TIME$, 2)) + c = 0 + IF a = 1 THEN c = 1: b = b - 1 + IF a = 2 THEN c = 1: b = b + 1 + IF b < 0 THEN b = 0 + IF b > 23 THEN b = 23 + d$ = STR$(b) + IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1) + IF LEN(d$) < 2 THEN d$ = "0" + d$ + e$ = d$ + RIGHT$(TIME$, 6) + IF c = 1 THEN TIME$ = e$ +ELSE + b = VAL(RIGHT$(LEFT$(TIME$, 5), 2)) + c = 0 + IF a = 1 THEN c = 1: b = b - 1 + IF a = 2 THEN c = 1: b = b + 1 + IF b < 0 THEN b = 0 + IF b > 59 THEN b = 59 + d$ = STR$(b) + IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1) + IF LEN(d$) < 2 THEN d$ = "0" + d$ + e$ = LEFT$(TIME$, 3) + d$ + RIGHT$(TIME$, 3) + IF c = 1 THEN TIME$ = e$ +END IF + +IF a = 3 THEN +IF modee = 1 THEN modee = 2 ELSE modee = 1 +END IF + +IF a = 6 THEN GOTO 12 +GOTO 11 +12 +vilgu = 0 +modee = 2 +END SUB + +SUB num (a) + +FOR b = 1 TO 12 +bitt(b) = 1 +NEXT b +bitt(15) = 1 +bitt(16) = 1 + +b = INT(a / 10) +c = a - (10 * b) +ekrf b +ekrf c + 10 +END SUB + +SUB rese +heli 4 +timo$ = "" +dato$ = "" +apl = 0 +END SUB + +SUB showit +a$ = LEFT$(TIME$, 5) +IF modee = 1 THEN +b = VAL(LEFT$(a$, 2)) +tul(1) = 1 +tul(2) = 0 +ELSE +b = VAL(RIGHT$(a$, 2)) +tul(1) = 0 +tul(2) = 1 +END IF +LOCATE 15, 1 +PRINT b +num b + + +END SUB + +SUB son (a$) + +FOR b = 1 TO 50 +sona$(b) = "" +NEXT b +mitus = 0 + +b = 1 +FOR c = 1 TO LEN(a$) +d$ = RIGHT$(LEFT$(a$, c), 1) +IF d$ = " " OR d$ = CHR$(9) THEN +b = 1 +ELSE +IF b = 1 THEN b = 0: mitus = mitus + 1 +sona$(mitus) = sona$(mitus) + d$ +END IF +NEXT c + + +END SUB + +SUB start +pn$(1) = "esmasp„ev" +pn$(2) = "teisip„ev" +pn$(3) = "kolmap„ev" +pn$(4) = "neljap„ev" +pn$(5) = "reede" +pn$(6) = "laup„ev" +pn$(7) = "phap„ev" + +prt = &H37A +prt2 = &H378 +hist(1) = 10000 +hist(2) = 10000 +hist(3) = 10000 + +FOR a = 1 TO 16 +bitt(a) = 1 +NEXT a +modee = 2 +vilgu = 0 +tul(1) = 1 +tul(2) = 1 +END SUB + +SUB sync +OPEN "sync.txt" FOR INPUT AS #1 +LINE INPUT #1, a$ +DATE$ = a$ +LINE INPUT #1, a$ +TIME$ = a$ +CLOSE #1 + +heli 2 +END SUB + +SUB sync2 +a$ = TIME$ +a$ = LEFT$(a$, 5) +b = VAL(RIGHT$(a$, 2)) +c = VAL(LEFT$(a$, 2)) +IF b >= 30 THEN c = c + 1 +b = 0 +IF c > 23 THEN c = c - 24 +a$ = RIGHT$(STR$(c), LEN(STR$(c)) - 1) +b$ = RIGHT$(STR$(b), LEN(STR$(b)) - 1) +IF LEN(a$) < 2 THEN a$ = "0" + a$ +IF LEN(b$) < 2 THEN b$ = "0" + b$ +a$ = a$ + ":" + b$ + +'LOCATE 10, 1 +'PRINT a$ + +TIME$ = a$ + +heli 1 +END SUB + diff --git a/automation/school clock/kell/opetajap.pp b/automation/school clock/kell/opetajap.pp new file mode 100755 index 0000000..0708469 --- /dev/null +++ b/automation/school clock/kell/opetajap.pp @@ -0,0 +1,19 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 10:45 val + +# 10:55 sis +# 11:20 val + +# 11:40 sis +# 12:05 val + +# 12:15 sis +# 12:40 val + + diff --git a/automation/school clock/kell/rebased.pp b/automation/school clock/kell/rebased.pp new file mode 100755 index 0000000..97dc6a5 --- /dev/null +++ b/automation/school clock/kell/rebased.pp @@ -0,0 +1,23 @@ +# 08:30 sis +# 09:10 val + +# 09:20 sis +# 10:00 val + +# 10:10 sis +# 10:50 val + +# 11:30 sis +# 12:10 val + +# 12:20 sis +# 13:00 val + +# 13:10 sis +# 13:50 val + +# 14:00 sis +# 14:40 val + +# 14:45 sis +# 15:30 val diff --git a/automation/school clock/kell/reede.pp b/automation/school clock/kell/reede.pp new file mode 100755 index 0000000..b4c0e82 --- /dev/null +++ b/automation/school clock/kell/reede.pp @@ -0,0 +1,23 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 11:05 val + +# 11:35 sis +# 12:20 val + +# 12:30 sis +# 13:15 val + +# 13:20 sis +# 14:05 val + +# 14:10 sis +# 14:55 val + +# 15:00 sis +# 15:45 val diff --git a/automation/school clock/kell/skeem.bmp b/automation/school clock/kell/skeem.bmp new file mode 100755 index 0000000..37019b7 Binary files /dev/null and b/automation/school clock/kell/skeem.bmp differ diff --git a/automation/school clock/kell/sync.txt b/automation/school clock/kell/sync.txt new file mode 100755 index 0000000..f6ff243 --- /dev/null +++ b/automation/school clock/kell/sync.txt @@ -0,0 +1,5 @@ +09-06-2002 +15:38 + +kuu-paev-aasta +tunnid-minutid \ No newline at end of file diff --git a/automation/school clock/kell/tava.pp b/automation/school clock/kell/tava.pp new file mode 100755 index 0000000..ce22071 --- /dev/null +++ b/automation/school clock/kell/tava.pp @@ -0,0 +1,36 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 11:05 val + +# 11:35 sis +# 12:20 val + +# 12:30 sis +# 13:15 val + +# 13:25 sis +# 14:10 val + +# 14:20 sis +# 15:05 val + +# 15:10 sis +# 15:55 val + +# 16:00 sis +# 16:45 val + +# 16:50 sis +# 17:45 val + +# 17:50 sis +# 18:25 val + +# 18:30 sis +# 19:15 val + diff --git a/automation/school clock/kell/tuhi.pp b/automation/school clock/kell/tuhi.pp new file mode 100755 index 0000000..e69de29 diff --git a/automation/school clock/kell2/aasta.ap b/automation/school clock/kell2/aasta.ap new file mode 100755 index 0000000..82777d6 --- /dev/null +++ b/automation/school clock/kell2/aasta.ap @@ -0,0 +1,14 @@ +v 01-01 12-31 tava +n 01-01 12-31 5 reede +e 10-04 opetajap +e 10-31 rebased +e 04-17 luhend +e 04-18 tuhi +e 04-30 luhend +e 05-01 tuhi +e 06-23 tuhi +e 06-24 tuhi +n 01-01 12-31 6 tuhi +n 01-01 12-31 7 tuhi +v 07-01 08-31 tuhi + diff --git a/automation/school clock/kell2/kkmini.bas b/automation/school clock/kell2/kkmini.bas new file mode 100755 index 0000000..c70ca26 --- /dev/null +++ b/automation/school clock/kell2/kkmini.bas @@ -0,0 +1,485 @@ +DECLARE SUB dispt () +' Svjatoslav Agejenko +' E-mail: svjatoslavagejenko@gmail.com +' Homepage: www.hot.ee/n0/ + +DECLARE SUB dispp () +DECLARE SUB displukk () +DECLARE SUB kola (a%) +DECLARE SUB rese () +DECLARE SUB start () +DECLARE SUB getnad (g%, n%, d%, k%) +DECLARE SUB initp (b$) +DECLARE SUB getmd (a$, m%, d%) +DECLARE SUB son (a$) +DECLARE SUB inita () +DECLARE SUB chm () +DECLARE SUB chd () +DECLARE SUB kell (a%) +DECLARE SUB sync2 () +DECLARE SUB sync () +DECLARE SUB mnmain () +DECLARE SUB heli (a%) +DECLARE SUB disp () +DEFINT A-Z + +DIM SHARED ap$(1 TO 500) +DIM SHARED apl +DIM SHARED pp$(1 TO 500) +DIM SHARED ppl +DIM SHARED prt, prt2 +DIM SHARED timo$ +DIM SHARED dato$ +DIM SHARED sona$(1 TO 50) +DIM SHARED mitus +DIM SHARED lp$ +DIM SHARED ndlp +DIM SHARED pn$(1 TO 7) +DIM SHARED lk$ +DIM SHARED ssave +DIM SHARED ssavel +DIM SHARED timero AS LONG +DIM SHARED kblukk +DIM SHARED tunnidara + +start + + +disp +mnmain + +SUB chd +b$ = "tuhi" +IF apl = 0 THEN inita + +a$ = DATE$ +n1 = VAL(RIGHT$(a$, 4)) +n2 = VAL(LEFT$(a$, 2)) +a$ = LEFT$(a$, 5) +n3 = VAL(RIGHT$(a$, 2)) +getnad n1, n2, n3, ndlp +FOR a = 1 TO apl +son ap$(a) +SELECT CASE sona$(1) +CASE "v" +getmd sona$(2), m1, d1 +getmd sona$(3), m2, d2 +getmd DATE$, m3, d3 +IF m3 < m1 THEN GOTO 9 +IF m3 > m2 THEN GOTO 9 +IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9 +IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9 +b$ = sona$(4) +CASE "n" +getmd sona$(2), m1, d1 +getmd sona$(3), m2, d2 +getmd DATE$, m3, d3 +IF m3 < m1 THEN GOTO 9 +IF m3 > m2 THEN GOTO 9 +IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9 +IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9 +IF ndlp <> VAL(sona$(4)) THEN GOTO 9 +b$ = sona$(5) +CASE "e" +getmd sona$(2), m1, d1 +getmd DATE$, m2, d2 +IF (m1 = m2) AND (d1 = d2) THEN b$ = sona$(3) +END SELECT +9 +NEXT a + +IF b$ <> lp$ THEN initp b$ +lp$ = b$ +tunnidara = 0 +dispp +disp +END SUB + +SUB chm +a$ = DATE$ +IF a$ <> dato$ THEN chd +dato$ = a$ +b = 0 +FOR a = 1 TO ppl +son pp$(a) +SELECT CASE sona$(1) +CASE "#" +getmd sona$(2), h1, m1 +getmd TIME$, h2, m2 +' PRINT h1, m1, h2, m2 +IF (h2 = h1) AND (m2 = m1) THEN +IF sona$(3) = "sis" THEN b = 1 +IF sona$(3) = "val" THEN b = 2 +END IF +END SELECT +NEXT a + +IF (tunnidara = 0) AND (b > 0) THEN kell b +ssave = ssave + 1 +END SUB + +SUB disp +CLS +PRINT "Kooli Kell (mini) v 1.1 2003.3" +PRINT "Programmi autor Svjatoslav Agejenko E-mail: n0@hot.ee" +PRINT "" +PRINT "s - kell tundi sisse v - kell tunnist v�lja" +PRINT "a - sisesta uus aeg d - sisesta uus daatum" +PRINT "u - �mardab aja t�istunnini l - laeb aja failist SYNC.TXT" +PRINT "7 - 1 minut tagasi 8 - 1 minut edasi" +PRINT "4 - 1 tund tagasi 5 - 1 tund edasi" +PRINT "r - programmi restart q - programmist v�lja" +PRINT " j - j�tab k�ik tunnid t�na �ra" + +dispp + +LOCATE 12, 15 +PRINT "Kuu-P�ev-Aasta (USA standard)" + + +LOCATE 17 + +FOR a = 1 TO ppl +IF pp$(a) <> SPACE$(LEN(pp$(a))) THEN + PRINT pp$(a); + PRINT SPACE$(15 - LEN(pp$(a))); +END IF +NEXT a + +displukk +dispt +END SUB + +SUB displukk +LOCATE 1, 40 +IF kblukk = 1 THEN + COLOR 0, 7 + PRINT "Klaviatuur lukus! Vajuta CTRL+L" + COLOR 7, 0 +ELSE + PRINT " " +END IF +END SUB + +SUB dispp +IF ndlp = 0 THEN GOTO 14 +LOCATE 14, 1 +PRINT "n�dalap�ev:", pn$(ndlp) +LOCATE 15, 1 +PRINT "p�evaplaan:", lp$ +14 +END SUB + +SUB dispt +LOCATE 16, 20 +COLOR 12 + 15, 0 +IF tunnidara = 1 THEN + PRINT "T�na on k�ik tunnid �ra j�etud" +ELSE + PRINT " " +END IF +COLOR 7, 0 +END SUB + +SUB getmd (a$, m, d) +b$ = LEFT$(a$, 5) +m = VAL(LEFT$(b$, 2)) +d = VAL(RIGHT$(b$, 2)) + +END SUB + +SUB getnad (g, n, d, k) +'LOCATE 11, 1 +'PRINT g, n, d +p = g +m = n - 2 +IF n > 2 GOTO 120 +p = p - 1: m = m + 12 +120 +c = INT(p / 100) +y = p - c * 100 +w = d + INT((13 * m - 1) / 5) + y + INT(y / 4) + INT(c / 4) - 2 * c +k = w - 7 * INT(w / 7) +IF k = 0 THEN k = 7 +END SUB + +SUB heli (a) +'GOTO 10 +SELECT CASE a +CASE 1 +FOR c = 1 TO 5 +SOUND 3000, 1 +SOUND 0, 1 +NEXT c + +CASE 2 +FOR c = 1 TO 5 +SOUND 2500, 1 +SOUND 0, 2 +NEXT c +SOUND 2500, 10 + +CASE 3 +FOR a = 1 TO 10 +SOUND 500, .5 +SOUND 1500, .5 +SOUND 2000, .5 +SOUND 1520, .5 +NEXT a + + +CASE 4 +FOR a = 800 TO 1000 STEP 10 +SOUND a, .1 +SOUND a * 3, .1 +SOUND 0, 1 +NEXT a +10 + +END SELECT + + +END SUB + +SUB inita +apl = 0 +OPEN "aasta.ap" FOR INPUT AS #1 +5 +IF EOF(1) <> 0 THEN GOTO 3 +LINE INPUT #1, a$ +apl = apl + 1 +ap$(apl) = a$ +GOTO 5 +3 +CLOSE #1 +END SUB + +SUB initp (b$) +ppl = 0 +OPEN b$ + ".pp" FOR INPUT AS #1 +6 +IF EOF(1) <> 0 THEN GOTO 7 +LINE INPUT #1, a$ +ppl = ppl + 1 +pp$(ppl) = a$ +GOTO 6 +7 +CLOSE #1 +END SUB + +SUB kell (a) +b$ = TIME$ + DATE$ +IF b$ <> lk$ THEN lk$ = b$ ELSE GOTO 2 + +heli 3 + +SELECT CASE a +CASE 1 +kola 4 +FOR b = 1 TO 15 +SOUND 0, 1 +NEXT b +kola 1 +CASE 2 +kola 5 +END SELECT +2 +END SUB + +SUB kola (a) +timero = TIMER +11 +FOR b = 1 TO 100 +OUT prt, 0 +OUT prt, 255 +NEXT b +IF ABS(timero - TIMER) < a THEN GOTO 11 +END SUB + +SUB mnmain +1 +b$ = LEFT$(TIME$, 5) +IF b$ <> timo$ THEN chm +timo$ = b$ + +a$ = INKEY$ + +IF a$ <> "" THEN +IF ssave > ssavel THEN disp +ssave = 0 +END IF + +IF a$ = CHR$(12) THEN + IF kblukk = 1 THEN kblukk = 0 ELSE kblukk = 1 + displukk +END IF +IF kblukk = 1 THEN a$ = "" + +IF a$ = "s" THEN kell 1 +IF a$ = "v" THEN kell 2 + +IF a$ = "a" THEN +CLS +PRINT " vana aeg: " + TIME$ +INPUT "sisesta uus aeg (TT:MM:SS): ", b$ +IF LEN(b$) <> 8 THEN GOTO 12 +TIME$ = b$ +timo$ = "" +12 +disp +END IF + +IF a$ = "d" THEN +CLS +PRINT " vana daatum: " + DATE$ +INPUT "sisesta uus daatum (KK-PP-AAAA): ", b$ +IF LEN(b$) <> 10 THEN GOTO 13 +DATE$ = b$ +timo$ = "" +13 +disp +END IF + +IF a$ = "7" OR a$ = "8" THEN + b = VAL(RIGHT$(LEFT$(TIME$, 5), 2)) + IF a$ = "7" THEN b = b - 1 + IF a$ = "8" THEN b = b + 1 + IF b < 0 THEN b = 0 + IF b > 59 THEN b = 59 + d$ = STR$(b) + IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1) + IF LEN(d$) < 2 THEN d$ = "0" + d$ + e$ = LEFT$(TIME$, 3) + d$ + RIGHT$(TIME$, 3) + TIME$ = e$ +END IF + +IF a$ = "4" OR a$ = "5" THEN + b = VAL(LEFT$(TIME$, 2)) + IF a$ = "4" THEN b = b - 1 + IF a$ = "5" THEN b = b + 1 + IF b < 0 THEN b = 0 + IF b > 23 THEN b = 23 + d$ = STR$(b) + IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1) + IF LEN(d$) < 2 THEN d$ = "0" + d$ + e$ = d$ + RIGHT$(TIME$, 6) + TIME$ = e$ +END IF + +IF a$ = "u" THEN sync2 +IF a$ = "l" THEN sync + +IF a$ = "r" THEN rese +IF a$ = "q" THEN SYSTEM + +IF a$ = "j" THEN +IF tunnidara = 0 THEN tunnidara = 1 ELSE tunnidara = 0 +dispt +END IF + +IF ssave <= ssavel THEN + LOCATE 11, 1 + PRINT TIME$ + LOCATE 12, 1 + PRINT DATE$ +ELSE + IF ABS(TIMER - timero) > 10 THEN + CLS + kblukk = 1 + FOR b = 1 TO 20 + LOCATE RND * 22 + 1, RND * 79 + 1 + IF RND * 100 < 50 THEN PRINT "*" ELSE PRINT "." + NEXT b + LOCATE RND * 22 + 1, RND * 50 + 1 + COLOR 0, 7 + PRINT "< " + LEFT$(TIME$, 2); + COLOR 16, 7 + PRINT ":"; + COLOR 0, 7 + PRINT RIGHT$(LEFT$(TIME$, 5), 2) + " >" + COLOR 7, 0 + timero = TIMER + END IF +END IF +GOTO 1 + + +END SUB + +SUB rese +heli 4 +timo$ = "" +dato$ = "" +apl = 0 +END SUB + +SUB son (a$) + +FOR b = 1 TO 50 +sona$(b) = "" +NEXT b +mitus = 0 + +b = 1 +FOR c = 1 TO LEN(a$) +d$ = RIGHT$(LEFT$(a$, c), 1) +IF d$ = " " OR d$ = CHR$(9) THEN +b = 1 +ELSE +IF b = 1 THEN b = 0: mitus = mitus + 1 +sona$(mitus) = sona$(mitus) + d$ +END IF +NEXT c + + +END SUB + +SUB start +pn$(1) = "esmasp�ev" +pn$(2) = "teisip�ev" +pn$(3) = "kolmap�ev" +pn$(4) = "neljap�ev" +pn$(5) = "reede" +pn$(6) = "laup�ev" +pn$(7) = "p�hap�ev" + +prt = &H378 + +ssavel = 2 +kblukk = 1 +tunnidara = 0 +END SUB + +SUB sync +OPEN "sync.txt" FOR INPUT AS #1 +LINE INPUT #1, a$ +DATE$ = a$ +LINE INPUT #1, a$ +TIME$ = a$ +CLOSE #1 + +heli 2 +END SUB + +SUB sync2 +a$ = TIME$ +a$ = LEFT$(a$, 5) +b = VAL(RIGHT$(a$, 2)) +c = VAL(LEFT$(a$, 2)) +IF b >= 30 THEN c = c + 1 +b = 0 +IF c > 23 THEN c = c - 24 +a$ = RIGHT$(STR$(c), LEN(STR$(c)) - 1) +b$ = RIGHT$(STR$(b), LEN(STR$(b)) - 1) +IF LEN(a$) < 2 THEN a$ = "0" + a$ +IF LEN(b$) < 2 THEN b$ = "0" + b$ +a$ = a$ + ":" + b$ + +'LOCATE 10, 1 +'PRINT a$ + +TIME$ = a$ + +heli 1 +END SUB + diff --git a/automation/school clock/kell2/luhend.pp b/automation/school clock/kell2/luhend.pp new file mode 100755 index 0000000..8c36fd4 --- /dev/null +++ b/automation/school clock/kell2/luhend.pp @@ -0,0 +1,27 @@ +# 08:30 sis +# 09:00 val + +# 09:10 sis +# 09:40 val + +# 09:50 sis +# 10:20 val + +# 10:30 sis +# 11:00 val + +# 11:30 sis +# 12:00 val + +# 12:10 sis +# 12:40 val + +# 12:50 sis +# 13:20 val + +# 13:30 sis +# 14:00 val + +# 14:05 sis +# 14:35 val + diff --git a/automation/school clock/kell2/opetajap.pp b/automation/school clock/kell2/opetajap.pp new file mode 100755 index 0000000..0708469 --- /dev/null +++ b/automation/school clock/kell2/opetajap.pp @@ -0,0 +1,19 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 10:45 val + +# 10:55 sis +# 11:20 val + +# 11:40 sis +# 12:05 val + +# 12:15 sis +# 12:40 val + + diff --git a/automation/school clock/kell2/rebased.pp b/automation/school clock/kell2/rebased.pp new file mode 100755 index 0000000..97dc6a5 --- /dev/null +++ b/automation/school clock/kell2/rebased.pp @@ -0,0 +1,23 @@ +# 08:30 sis +# 09:10 val + +# 09:20 sis +# 10:00 val + +# 10:10 sis +# 10:50 val + +# 11:30 sis +# 12:10 val + +# 12:20 sis +# 13:00 val + +# 13:10 sis +# 13:50 val + +# 14:00 sis +# 14:40 val + +# 14:45 sis +# 15:30 val diff --git a/automation/school clock/kell2/reede.pp b/automation/school clock/kell2/reede.pp new file mode 100755 index 0000000..b4c0e82 --- /dev/null +++ b/automation/school clock/kell2/reede.pp @@ -0,0 +1,23 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 11:05 val + +# 11:35 sis +# 12:20 val + +# 12:30 sis +# 13:15 val + +# 13:20 sis +# 14:05 val + +# 14:10 sis +# 14:55 val + +# 15:00 sis +# 15:45 val diff --git a/automation/school clock/kell2/sync.txt b/automation/school clock/kell2/sync.txt new file mode 100755 index 0000000..dbbc645 --- /dev/null +++ b/automation/school clock/kell2/sync.txt @@ -0,0 +1,5 @@ +02-03-2003 +11:32 + +kuu-paev-aasta +tunnid-minutid \ No newline at end of file diff --git a/automation/school clock/kell2/tava.pp b/automation/school clock/kell2/tava.pp new file mode 100755 index 0000000..e83ded7 --- /dev/null +++ b/automation/school clock/kell2/tava.pp @@ -0,0 +1,29 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 11:05 val + +# 11:35 sis +# 12:20 val + +# 12:30 sis +# 13:15 val + +# 13:25 sis +# 14:10 val + +# 14:20 sis +# 15:05 val + +# 15:10 sis +# 15:55 val + +# 16:00 sis +# 16:45 val + +# 16:50 sis +# 17:35 val \ No newline at end of file diff --git a/automation/school clock/kell2/tuhi.pp b/automation/school clock/kell2/tuhi.pp new file mode 100755 index 0000000..e69de29 diff --git a/automation/school clock/kell3/aasta.ap b/automation/school clock/kell3/aasta.ap new file mode 100755 index 0000000..8640065 --- /dev/null +++ b/automation/school clock/kell3/aasta.ap @@ -0,0 +1,12 @@ +v 01-01 12-31 tava +n 01-01 12-31 5 reede +e 04-17 luhend +e 04-18 tuhi +e 04-30 luhend +e 05-01 tuhi +e 06-23 tuhi +e 06-24 tuhi +n 01-01 12-31 6 tuhi +n 01-01 12-31 7 tuhi +v 07-01 08-31 tuhi + diff --git a/automation/school clock/kell3/juhend.txt b/automation/school clock/kell3/juhend.txt new file mode 100755 index 0000000..6024b42 --- /dev/null +++ b/automation/school clock/kell3/juhend.txt @@ -0,0 +1,150 @@ + Kooli Kell 3 programmi kasutusjuhend + ------------------------------------ + +2003.09 + +Programmi, juhendi ja skeemi autor: Svjatoslav Agejenko +E-post: svjatoslavagejenko@gmail.com +kodulehekylg: www.hot.ee/n0/ + +Ettevaatust: Siin tekstis olev info v6ib olla vananenud, vigane v6i +ebat2ielik. Autor ei v6ta endale vastutust antud systeemi kasutamisest +tekkinud otsese v6i kaudse kahju puhul! + + + + 0 Teemad + -------- + +0 Teemad +1 Yldinfo +2 faili AASTA.AP formaat +3 failide *.PP formaat +4 Raudvara n6uded +5 Tarkvara n6uded +6 N6uded inimesele + + + + 1 Yldinfo + --------- + +Programm Kooli Kell on m6eldud kella laskmiseks koolis, tundi sisse ja v2lja. +Tundi sisse minev kell on 1 pikk ning 1 lyhem helin. V2ljaminev kell on 1 +tavaline pikk helin. Programm loeb aega arvuti systeemsest kellast. +Fail 'AASTA.AP' hoiab aasta graafikut, kus saab m22rata teatud p2eva kohta +k2iva p2evaplaani. P2evaplaanid asuvad failides '*.PP'. +Aasta v6i p2evaplaani muutmiseks tuleb redigeerida vastavaid faile. +Failides on info esitatud programmile 'Kooli Kell' arusaadavate k2skudena. +Kus yhel real on yks k2sk, v6i tyhi rida. +Rea esimene s6na peab olema k2sk, ning j2rgnevad s6nad on selle k2su +parameetrid. S6nad v6ivad olla eraldatud suvalise 0 suuremate +tabulaatorite ja/v6i tyhikute arvuga. +Programmi saab kasutada arvutil millele on yhendatud spetsiaalne liides, +v6i millel on see liides sisse monteeritud. Liideses olev relee toimib +lylitina, mis kella laskmise ajaks sulgub. Liides vooluahelasse ise +voolu ei anna. Seega on liides m6eldud kella ja toiteallikaga vooluahelasse +jadamisi yhendamiseks. V6i siis olemasoleva mehaanilise +kella laskmis nupuga paralleelselt, siis saab kella lasta nii endisest +nupust kui ka arvutiga. + +Programm on etten2htud iseseisvalt t88tama, kuid on +ka v6imalus erandkorras k2sitsi kella lasta, aega muuta jne. +Selleks tuleb vajutada erinevaid klahve klaviatuuril. +K2ivitudes kuvab programm klahvide kirjeldused ekraanile. + + + + 2 faili AASTA.AP formaat + ------------------------ + +L6pp 'AP' tuleneb s6nadest Aasta plaan. + +v - - + +S6nast vahemik. Paneb paika p2evaplaani antud ajavahemikus. Esimene +daatum peab kindlasti olema v2iksem kui teine. St. kui on t6esti vaja: + +v 10-4 2-1 eri + +tuleb kirjutada: + +v 10-4 12-31 eri +v 1-1 2-1 eri + +P2evaplaan kehtib vahemiku esimesest p2evast kuni vahemiku viimase p2evani. + +n - - + +S6nast n2dalap2ev. sama mis "v" kuid: paneb paika p2evaplaani antud +ajavahemikus, antud n2dalap2eval. N2dalap2eva kirjeldatakse numbriga. +n2dala esimene p2ev on esmasp2ev, talle vastab number 1. + +e - + +S6nast erip2evaplaan. Paneb paika antud kuup2evale antud p2evaplaani. +Sobib h2sti erakorraliste, lyhendatud v6i uhekordselt kehtivate +p2evaplaanide kehtestamiseks. N2iteks riigipyhad, spordip2ev jne. + +Kui teatud p2eva kohta ei k2inud yhtegi kirjet siis toimib vaikimisi "tuhi" +p2evaplaan. Kui teatud p2eva kohta k2is mitu kirjet siis j22b peale viimane. + + + + 3 failide *.PP formaat + ---------------------- + +L6pp 'PP' tuleneb s6nadest P2eva Plaan. + +# : + +Laseb antud ajal antud kella. V6imalikud kella helinad on: + + sis -kell tundi sisse + val -kell tunnist v2lja + + + + 4 Raudvara n6uded + ----------------- + +286 protsessoriga PC tyypi arvuti. + Peaks t88tama ka 8086 protsessoril aga pole testinud. + +640 KB p6him2lu. + V2hemaga pole testinud. + +500 KB vaba kettaruumi. + K6vakettalt t88 kiirendab oluliselt programmi k2ivitumist, + ja konfiguratsiooni redigeerimist. + +LPT port. + +Monitor. + v6ib ka mustvalge. + +Klaviatuur. + + + + 5 Tarkvara n6uded + ----------------- + +DOS 6.22 + V6ib ka varasem, kuid pole testinud. +QB 4.5 + Piisab 'QB.EXE' failist. Peaks t88tama ka MS QBasic-us. +EDIT.EXE + DOSi k2surealt k2ivituv teksti redaktor. + + + + 6 N6uded inimesele + ------------------ + +Systeemi kasutamiseks h2davajalik antud juhendist aru saamine. +Systeemi paigaldamine n6uab elektriku oskusi. +Programmi kasutamiseks on vajalik v2hemalt +algaja tasemel arvutikasutaja oskus. + + diff --git a/automation/school clock/kell3/kell3.bas b/automation/school clock/kell3/kell3.bas new file mode 100755 index 0000000..da4711b --- /dev/null +++ b/automation/school clock/kell3/kell3.bas @@ -0,0 +1,622 @@ +DECLARE FUNCTION getnam$ (a%) +DECLARE FUNCTION getsym$ (a$, b%) +DECLARE SUB editor () +DECLARE SUB leiaconf () +DECLARE SUB clrerr () +DECLARE SUB dispt () + +' Kooli Kell 3 + +' (c) Svjatoslav Agejenko +' All rights reserved. + +' E-mail: svjatoslavagejenko@gmail.com +' Homepage: svjatoslav.eu + +DECLARE SUB dispp () +DECLARE SUB displukk () +DECLARE SUB kola (a%) +DECLARE SUB rese () +DECLARE SUB start () +DECLARE SUB getnad (g%, n%, d%, k%) +DECLARE SUB initp (b$) +DECLARE SUB getmd (a$, m%, d%) +DECLARE SUB son (a$) +DECLARE SUB inita () +DECLARE SUB chm () +DECLARE SUB chd () +DECLARE SUB kell (a%) +DECLARE SUB sync2 () +DECLARE SUB sync () +DECLARE SUB mnmain () +DECLARE SUB heli (a%) +DECLARE SUB disp () +DEFINT A-Z + +DIM SHARED ap$(1 TO 500) +DIM SHARED apl +DIM SHARED pp$(1 TO 500) +DIM SHARED ppl +DIM SHARED prt, prt2 +DIM SHARED timo$ +DIM SHARED dato$ +DIM SHARED sona$(1 TO 50) +DIM SHARED mitus +DIM SHARED lp$ +DIM SHARED ndlp +DIM SHARED pn$(1 TO 7) +DIM SHARED lk$ +DIM SHARED ssave +DIM SHARED ssavel +DIM SHARED timero AS LONG +DIM SHARED kblukk +DIM SHARED tunnidara +DIM SHARED errmsg$ +DIM SHARED cnflist$(1 TO 200) + +'ON ERROR GOTO 20 + +start +disp +mnmain + +20 +LOCATE 20, 1 +COLOR 0, 15 +PRINT "Programmi t88s ilmus j2rgnev t6rge:" +PRINT errmsg$ +PRINT "Programmi t2itmine katkestatud! Abi saamiseks lugege juhendit." +SYSTEM + +SUB chd +b$ = "tuhi" +IF apl = 0 THEN inita + +a$ = DATE$ +n1 = VAL(RIGHT$(a$, 4)) +n2 = VAL(LEFT$(a$, 2)) +a$ = LEFT$(a$, 5) +n3 = VAL(RIGHT$(a$, 2)) +getnad n1, n2, n3, ndlp +FOR a = 1 TO apl +son ap$(a) +SELECT CASE sona$(1) +CASE "v" +getmd sona$(2), m1, d1 +getmd sona$(3), m2, d2 +getmd DATE$, m3, d3 +IF m3 < m1 THEN GOTO 9 +IF m3 > m2 THEN GOTO 9 +IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9 +IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9 +b$ = sona$(4) +CASE "n" +getmd sona$(2), m1, d1 +getmd sona$(3), m2, d2 +getmd DATE$, m3, d3 +IF m3 < m1 THEN GOTO 9 +IF m3 > m2 THEN GOTO 9 +IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9 +IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9 +IF ndlp <> VAL(sona$(4)) THEN GOTO 9 +b$ = sona$(5) +CASE "e" +getmd sona$(2), m1, d1 +getmd DATE$, m2, d2 +IF (m1 = m2) AND (d1 = d2) THEN b$ = sona$(3) +END SELECT +9 +NEXT a + +IF b$ <> lp$ THEN initp b$ +lp$ = b$ +tunnidara = 0 +dispp +disp +END SUB + +SUB chm +a$ = DATE$ +IF a$ <> dato$ THEN chd +dato$ = a$ +b = 0 +FOR a = 1 TO ppl +son pp$(a) +SELECT CASE sona$(1) +CASE "#" +getmd sona$(2), h1, m1 +getmd TIME$, h2, m2 +' PRINT h1, m1, h2, m2 +IF (h2 = h1) AND (m2 = m1) THEN +IF sona$(3) = "sis" THEN b = 1 +IF sona$(3) = "val" THEN b = 2 +END IF +END SELECT +NEXT a + +IF (tunnidara = 0) AND (b > 0) THEN kell b +ssave = ssave + 1 +END SUB + +SUB clrerr +errmsg$ = "tundmatu viga. V6ibolla on v2he RAM m2lu?" +END SUB + +SUB disp +CLS +PRINT "Kooli Kell 3 2003.09" +PRINT "autor: Svjatoslav Agejenko " +PRINT "" +PRINT "s - kell tundi sisse v - kell tunnist v�lja" +PRINT "a - sisesta uus aeg d - sisesta uus daatum" +PRINT "p - n2itab dokumentatsiooni j - j�tab k�ik tunnid t�na �ra" +PRINT "7 - 1 minut tagasi 8 - 1 minut edasi" +PRINT "4 - 1 tund tagasi 5 - 1 tund edasi" +PRINT "r - programmi restart q - programmist v�lja" +PRINT "k - konfiguratsiooni redaktor CTRL+L - klaviatuuri lukk (sees/v2ljas)" + +dispp + +LOCATE 12, 15 +PRINT "Kuu-P�ev-Aasta (USA standard)" + + +LOCATE 17 + +FOR a = 1 TO ppl +IF pp$(a) <> SPACE$(LEN(pp$(a))) THEN + PRINT pp$(a); + PRINT SPACE$(15 - LEN(pp$(a))); +END IF +NEXT a + +displukk +dispt +END SUB + +SUB displukk +LOCATE 1, 40 +IF kblukk = 1 THEN + COLOR 0, 7 + PRINT "Klaviatuur lukus! Vajuta CTRL+L" + COLOR 15, 0 +ELSE + PRINT " " +END IF +END SUB + +SUB dispp +IF ndlp = 0 THEN GOTO 14 +LOCATE 14, 1 +PRINT "n�dalap�ev:", pn$(ndlp) +LOCATE 15, 1 +PRINT "p�evaplaan:", lp$ +14 +END SUB + +SUB dispt +LOCATE 16, 20 +COLOR 12 + 15, 0 +IF tunnidara = 1 THEN + PRINT "T2na on k6ik tunnid 2ra j2etud" +ELSE + PRINT " " +END IF +COLOR 15, 0 +END SUB + +SUB editor +23 +leiaconf +CLS +COLOR 0, 15 +LOCATE 1, 1 +PRINT SPACE$(80); +LOCATE 1, 1 +PRINT "Konfiguratsiooni redaktor. Valige v2lja p2eva v6i aasta plaani." +LOCATE 2, 1 +PRINT SPACE$(80); +LOCATE 2, 1 +PRINT " nr nimi laiend suurus loomisdaatum" + +LOCATE 22, 1 +PRINT SPACE$(80); +LOCATE 22, 1 +PRINT "K - valitud faili kustutamine U - uus fail ESC - redaktorist v2lja" +p = 0 +v = 1 +17 +FOR a = 3 TO 21 + IF a - 2 + p = v THEN + COLOR 0, 7 + LOCATE a, 1 + PRINT cnflist$(a - 2 + p) + SPACE$(55 - LEN(cnflist$(a - 2 + p))) + LOCATE a, 56 + COLOR 31, 0 + PRINT "<=="; + IF cnflist$(a - 2 + p) <> SPACE$(LEN(cnflist$(a - 2 + p))) THEN + COLOR 15, 0 + PRINT " valitud: " + getnam$(v) + END IF + COLOR 15, 0 + ELSE + COLOR 15, 0 + LOCATE a, 1 + PRINT cnflist$(a - 2 + p) + SPACE$(80 - LEN(cnflist$(a - 2 + p))) + END IF +NEXT a + + +a$ = INKEY$ +LOCATE 1, 1 +'IF a$ <> "" THEN PRINT ASC(RIGHT$(a$, 1)); ASC(LEFT$(a$, 1)) +IF a$ = CHR$(27) THEN GOTO 18 +IF a$ = "u" OR a$ = "U" THEN SHELL "EDIT": GOTO 23 +IF a$ = CHR$(0) + "P" THEN v = v + 1 +IF a$ = CHR$(0) + "H" THEN v = v - 1 +IF a$ = CHR$(0) + CHR$(73) THEN v = v - 17 +IF a$ = CHR$(0) + CHR$(81) THEN v = v + 17 +IF a$ = "K" OR a$ = "k" THEN + IF LEN(getnam$(v)) > 2 THEN + IF getnam$(v) = "AASTA.AP" THEN + SOUND 3000, .1 + ELSE + KILL getnam$(v) + GOTO 23 + END IF + ELSE + SOUND 3000, .1 + END IF +END IF +IF a$ = CHR$(13) THEN + IF getnam$(v) = "." THEN + SOUND 3000, .1 + ELSE + SHELL "EDIT " + getnam$(v) + GOTO 23 + END IF +END IF + +IF v < 1 THEN v = 1: SOUND 3000, .2 +IF v > 200 THEN v = 200: : SOUND 3000, .2 + +21 IF v - p > 19 THEN p = p + 1: GOTO 21 +22 IF v - p < 1 THEN p = p - 1: GOTO 22 + +GOTO 17 +18 +COLOR 15, 0 +disp +END SUB + +SUB getmd (a$, m, d) +b$ = LEFT$(a$, 5) +m = VAL(LEFT$(b$, 2)) +d = VAL(RIGHT$(b$, 2)) + +END SUB + +SUB getnad (g, n, d, k) +'LOCATE 11, 1 +'PRINT g, n, d +p = g +m = n - 2 +IF n > 2 GOTO 120 +p = p - 1: m = m + 12 +120 +c = INT(p / 100) +y = p - c * 100 +w = d + INT((13 * m - 1) / 5) + y + INT(y / 4) + INT(c / 4) - 2 * c +k = w - 7 * INT(w / 7) +IF k = 0 THEN k = 7 +END SUB + +FUNCTION getnam$ (a) +c$ = "" +FOR b = 8 TO 40 + d$ = getsym(cnflist$(a), b) + IF d$ = " " THEN GOTO 19 + c$ = c$ + d$ +NEXT b +19 +getnam$ = c$ + "." + getsym(cnflist$(a), 17) + getsym(cnflist$(a), 18) +END FUNCTION + +FUNCTION getsym$ (a$, b) +getsym$ = RIGHT$(LEFT$(a$, b), 1) +END FUNCTION + +SUB heli (a) +'GOTO 10 +SELECT CASE a +CASE 1 +FOR c = 1 TO 5 +SOUND 3000, 1 +SOUND 0, 1 +NEXT c + +CASE 2 +FOR c = 1 TO 5 +SOUND 2500, 1 +SOUND 0, 2 +NEXT c +SOUND 2500, 10 + +CASE 3 +FOR a = 1 TO 10 +SOUND 500, .5 +SOUND 1500, .5 +SOUND 2000, .5 +SOUND 1520, .5 +NEXT a + + +CASE 4 +FOR a = 800 TO 1000 STEP 10 +SOUND a, .1 +SOUND a * 3, .1 +SOUND 0, 1 +NEXT a +10 + +END SELECT + + +END SUB + +SUB inita +apl = 0 +errmsg$ = "Ei leia aastaplaani faili! 'aasta.ap'" +OPEN "aasta.ap" FOR INPUT AS #1 +clrerr +5 +IF EOF(1) <> 0 THEN GOTO 3 +LINE INPUT #1, a$ +apl = apl + 1 +ap$(apl) = a$ +GOTO 5 +3 +CLOSE #1 +END SUB + +SUB initp (b$) +ppl = 0 +errmsg$ = "Ei leia aastaplaanis mainitud '" + b$ + ".pp' p2evaplaani!" +OPEN b$ + ".pp" FOR INPUT AS #1 +clrerr +6 +IF EOF(1) <> 0 THEN GOTO 7 +LINE INPUT #1, a$ +ppl = ppl + 1 +pp$(ppl) = a$ +GOTO 6 +7 +CLOSE #1 +END SUB + +SUB kell (a) +b$ = TIME$ + DATE$ +IF b$ <> lk$ THEN lk$ = b$ ELSE GOTO 2 + +heli 3 + +SELECT CASE a +CASE 1 +kola 4 +FOR b = 1 TO 15 +SOUND 0, 1 +NEXT b +kola 1 +CASE 2 +kola 5 +END SELECT +2 +END SUB + +SUB kola (a) +COLOR 15, 7 +s$ = "" +FOR b = 1 TO 80 + s$ = s$ + CHR$(219) +NEXT b +FOR b = 1 TO 30 +PRINT s$; +NEXT b + +timero = TIMER +11 +OUT prt, 255 +IF ABS(timero - TIMER) < a THEN GOTO 11 +OUT prt, 0 +COLOR 15, 0 +disp +END SUB + +SUB leiaconf +FOR a = 1 TO 200 + cnflist$(a) = "" +NEXT a +c = 1 + +SHELL "dir >dir.tmp" +OPEN "dir.tmp" FOR INPUT AS #1 +15 +IF EOF(1) <> 0 THEN GOTO 16 +LINE INPUT #1, a$ +IF LEN(a$) < 30 THEN GOTO 15 +IF LEFT$(a$, 1) = " " THEN GOTO 15 +IF LEFT$(a$, 1) = "." THEN GOTO 15 +b$ = RIGHT$(LEFT$(a$, 12), 3) +IF b$ = "PP " OR b$ = "AP " THEN ELSE GOTO 15 +d$ = " " + STR$(c) +a$ = RIGHT$(d$, 4) + " " + a$ +IF LEN(a$) > 50 THEN a$ = LEFT$(a$, 50) +cnflist$(c) = a$ +c = c + 1 +GOTO 15 +16 +CLOSE #1 +KILL "dir.tmp" +END SUB + +SUB mnmain +1 +b$ = LEFT$(TIME$, 5) +IF b$ <> timo$ THEN chm +timo$ = b$ + +a$ = INKEY$ + +IF a$ <> "" THEN +IF ssave > ssavel THEN disp +ssave = 0 +END IF + +IF a$ = CHR$(12) THEN + IF kblukk = 1 THEN kblukk = 0 ELSE kblukk = 1 + displukk +END IF +IF kblukk = 1 THEN + IF a$ <> "" THEN SOUND 3000, 1 + a$ = "" +END IF +IF a$ = "k" OR a$ = "K" THEN editor + +IF a$ = "s" OR a$ = "S" THEN kell 1 +IF a$ = "v" OR a$ = "V" THEN kell 2 + +IF a$ = "a" THEN +CLS +PRINT " vana aeg: " + TIME$ +INPUT "sisesta uus aeg (TT:MM:SS): ", b$ +IF LEN(b$) <> 8 THEN GOTO 12 +TIME$ = b$ +timo$ = "" +12 +disp +END IF + +IF a$ = "d" OR a$ = "D" THEN +CLS +PRINT " vana daatum: " + DATE$ +INPUT "sisesta uus daatum (KK-PP-AAAA): ", b$ +IF LEN(b$) <> 10 THEN GOTO 13 +DATE$ = b$ +timo$ = "" +13 +disp +END IF + +IF a$ = "7" OR a$ = "8" THEN + b = VAL(RIGHT$(LEFT$(TIME$, 5), 2)) + IF a$ = "7" THEN b = b - 1 + IF a$ = "8" THEN b = b + 1 + IF b < 0 THEN b = 0 + IF b > 59 THEN b = 59 + d$ = STR$(b) + IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1) + IF LEN(d$) < 2 THEN d$ = "0" + d$ + e$ = LEFT$(TIME$, 3) + d$ + RIGHT$(TIME$, 3) + TIME$ = e$ +END IF + +IF a$ = "4" OR a$ = "5" THEN + b = VAL(LEFT$(TIME$, 2)) + IF a$ = "4" THEN b = b - 1 + IF a$ = "5" THEN b = b + 1 + IF b < 0 THEN b = 0 + IF b > 23 THEN b = 23 + d$ = STR$(b) + IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1) + IF LEN(d$) < 2 THEN d$ = "0" + d$ + e$ = d$ + RIGHT$(TIME$, 6) + TIME$ = e$ +END IF + +IF a$ = "p" OR a$ = "P" THEN SHELL "EDIT juhend.txt": disp + +IF a$ = "r" OR a$ = "R" THEN rese +IF a$ = "q" OR a$ = "Q" THEN SYSTEM + +IF a$ = "j" OR a$ = "J" THEN +IF tunnidara = 0 THEN tunnidara = 1 ELSE tunnidara = 0 +dispt +END IF + +IF ssave <= ssavel THEN + LOCATE 11, 1 + PRINT TIME$ + LOCATE 12, 1 + PRINT DATE$ +ELSE + IF ABS(TIMER - timero) > 10 THEN + CLS + kblukk = 1 + FOR b = 1 TO 20 + LOCATE RND * 22 + 1, RND * 79 + 1 + IF RND * 100 < 50 THEN PRINT "*" ELSE PRINT "." + NEXT b + LOCATE RND * 22 + 1, RND * 50 + 1 + COLOR 0, 7 + PRINT "< " + LEFT$(TIME$, 2); + COLOR 16, 7 + PRINT ":"; + COLOR 0, 7 + PRINT RIGHT$(LEFT$(TIME$, 5), 2) + " >" + COLOR 15, 0 + timero = TIMER + END IF +END IF +GOTO 1 + + +END SUB + +SUB rese +heli 4 +timo$ = "" +dato$ = "" +apl = 0 +END SUB + +SUB son (a$) + +FOR b = 1 TO 50 + sona$(b) = "" +NEXT b +mitus = 0 + +b = 1 +FOR c = 1 TO LEN(a$) +d$ = RIGHT$(LEFT$(a$, c), 1) +IF d$ = " " OR d$ = CHR$(9) THEN +b = 1 +ELSE +IF b = 1 THEN b = 0: mitus = mitus + 1 +sona$(mitus) = sona$(mitus) + d$ +END IF +NEXT c + + +END SUB + +SUB start +CLS +COLOR 15 +pn$(1) = "esmasp�ev" +pn$(2) = "teisip�ev" +pn$(3) = "kolmap�ev" +pn$(4) = "neljap�ev" +pn$(5) = "reede" +pn$(6) = "laup�ev" +pn$(7) = "p�hap�ev" + +prt = &H378 + +ssavel = 2 +kblukk = 1 +tunnidara = 0 + +OUT prt, 0 +END SUB + diff --git a/automation/school clock/kell3/luhend.pp b/automation/school clock/kell3/luhend.pp new file mode 100755 index 0000000..8c36fd4 --- /dev/null +++ b/automation/school clock/kell3/luhend.pp @@ -0,0 +1,27 @@ +# 08:30 sis +# 09:00 val + +# 09:10 sis +# 09:40 val + +# 09:50 sis +# 10:20 val + +# 10:30 sis +# 11:00 val + +# 11:30 sis +# 12:00 val + +# 12:10 sis +# 12:40 val + +# 12:50 sis +# 13:20 val + +# 13:30 sis +# 14:00 val + +# 14:05 sis +# 14:35 val + diff --git a/automation/school clock/kell3/reede.pp b/automation/school clock/kell3/reede.pp new file mode 100755 index 0000000..b4c0e82 --- /dev/null +++ b/automation/school clock/kell3/reede.pp @@ -0,0 +1,23 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 11:05 val + +# 11:35 sis +# 12:20 val + +# 12:30 sis +# 13:15 val + +# 13:20 sis +# 14:05 val + +# 14:10 sis +# 14:55 val + +# 15:00 sis +# 15:45 val diff --git a/automation/school clock/kell3/skeem.png b/automation/school clock/kell3/skeem.png new file mode 100755 index 0000000..9c3e95b Binary files /dev/null and b/automation/school clock/kell3/skeem.png differ diff --git a/automation/school clock/kell3/tava.pp b/automation/school clock/kell3/tava.pp new file mode 100755 index 0000000..e83ded7 --- /dev/null +++ b/automation/school clock/kell3/tava.pp @@ -0,0 +1,29 @@ +# 08:30 sis +# 09:15 val + +# 09:25 sis +# 10:10 val + +# 10:20 sis +# 11:05 val + +# 11:35 sis +# 12:20 val + +# 12:30 sis +# 13:15 val + +# 13:25 sis +# 14:10 val + +# 14:20 sis +# 15:05 val + +# 15:10 sis +# 15:55 val + +# 16:00 sis +# 16:45 val + +# 16:50 sis +# 17:35 val \ No newline at end of file diff --git a/automation/school clock/kell3/tuhi.pp b/automation/school clock/kell3/tuhi.pp new file mode 100755 index 0000000..d3f5a12 --- /dev/null +++ b/automation/school clock/kell3/tuhi.pp @@ -0,0 +1 @@ + diff --git a/database/auto.scr b/database/auto.scr new file mode 100755 index 0000000..6716870 --- /dev/null +++ b/database/auto.scr @@ -0,0 +1,3 @@ +fload data.ddb +chklin 1 |> s 1 +|> c \ No newline at end of file diff --git a/database/data.ddb b/database/data.ddb new file mode 100755 index 0000000..fe2191e --- /dev/null +++ b/database/data.ddb @@ -0,0 +1,19 @@ +// 1 nimi +// 2 perekonnanimi +// 3 aadress +// 4 telefon +// 5 sugu M / N +// 6 registreerumisnumber andmebaasis +// 7 snniaasta + +Micael |Apple |Piparmundi 57 |405 925 |M|0|1983 +Linda |Eik |Jaama 123-3 |12121 |N|1|1910 +Aleksandra |Strandbach |Kaotuse 3-7 |053 939 626 |N|2|1950 +Vladislav |Agejenko |Miina 1 |405 925 |M|3|1950 +Uku |Tsuikin | | |M|4|1860 +Mari |Elle | | |N|5|1870 +Greet |Eik |Aoe 10-33 |3123123 |N|6|1982 +Veera |Eik |Aooof 20-33 |3123223 |N|7|1951 +Elvi |Thompson |Kastani 12-11 |127836 |N|8|1949 +Arni |Eik |Uus 123-12 |123432 |M|9|1948 +Mihhail |Agejenko | | |M|10|1861 \ No newline at end of file diff --git a/database/ddbase6.bas b/database/ddbase6.bas new file mode 100755 index 0000000..5f2d25f --- /dev/null +++ b/database/ddbase6.bas @@ -0,0 +1,959 @@ +' Dos Database +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB box (x1%, y1%, x2%, y2%) +DECLARE SUB ssort (s%, m%) +DECLARE SUB sort (s%, w%) +REM $DYNAMIC +DECLARE SUB cmp (a$, b$, r%) +DECLARE SUB boss () +DECLARE SUB std (a$) +DECLARE FUNCTION cnum$ (a%) +DECLARE SUB fload (a$, b%, c%, d%) +DECLARE SUB putfs (f%, l%, s%, c$) +DECLARE SUB gets (l%, s%, a$) +DECLARE SUB puts (l%, s%, a$) +DECLARE SUB runf (a$) +DECLARE SUB getfil (a%) +DEFINT A-Y +DECLARE SUB mkson (a$) +DECLARE SUB title (a$) +DECLARE SUB strip (a$, b$) +DECLARE SUB cmd (a$) +DECLARE SUB conkey (a$) +DECLARE SUB conn (a$) +DECLARE SUB ch () +DECLARE SUB chkey (a$) +DECLARE SUB getkey (a$) +DECLARE SUB conm (a$, c) +DECLARE SUB start () + +DIM SHARED con$(1 TO 50) +DIM SHARED conc(1 TO 50) +DIM SHARED concmd$ +DIM SHARED conx +DIM SHARED sona$(1 TO 20) +DIM SHARED mitus + +DIM SHARED buf$(1 TO 5000) +DIM SHARED bufu(1 TO 5000) +DIM SHARED bufl(1 TO 1000, 1 TO 30) +DIM SHARED buflu(1 TO 1000) +DIM SHARED lng +DIM SHARED opf(1 TO 30) +DIM SHARED hist$(1 TO 20) +DIM SHARED histp, histk +DIM SHARED buff(1 TO 30, 1 TO 1000) +DIM SHARED stack(1 TO 2000, 1 TO 10) +DIM SHARED stackl(1 TO 10) +DIM SHARED stdl + +start + +1 +ch +GOTO 1 + +REM $STATIC +SUB boss +y1 = 0 +yp1 = 100 +y2 = 0 +yp2 = 100 + +lx = 160 +ly = 100 +lxp = 1 +lyp = -1 + +SCREEN 13 + +GOSUB 18 +16 +a$ = INKEY$ +IF a$ = CHR$(0) + "H" THEN yp1 = yp1 - 25 +IF a$ = CHR$(0) + "P" THEN yp1 = yp1 + 25 +IF a$ = CHR$(27) THEN GOTO 17 + +LINE (10, y1 - 35)-(20, y1 + 35), 0, B +LINE (11, y1 - 34)-(19, y1 + 34), 15, B + +LINE (310, y2 - 35)-(300, y2 + 35), 0, B +LINE (309, y2 - 34)-(301, y2 + 34), 15, B + +LINE (lx - 10, ly - 10)-(lx + 10, ly + 10), 0, B +LINE (lx - 9, ly - 9)-(lx + 9, ly + 9), 15, B + +lx = lx + lxp +ly = ly + lyp +IF ly < 20 THEN lyp = 1 +IF ly > 180 THEN lyp = -1 +IF lx < 30 THEN +lxp = 1 +IF ly < y1 - 35 OR ly > y1 + 35 THEN SOUND 1000, 1 +END IF +IF lx > 290 THEN lxp = -1: GOSUB 18 + + +IF yp1 > 0 THEN y1 = y1 + 1: yp1 = yp1 - 1 +IF yp1 < 0 THEN y1 = y1 - 1: yp1 = yp1 + 1 +IF yp2 > 0 THEN y2 = y2 + 1: yp2 = yp2 - 1 +IF yp2 < 0 THEN y2 = y2 - 1: yp2 = yp2 + 1 + +SOUND 0, .1 +GOTO 16 +18 +tlx = lx +tly = ly +tlyp = lyp +tlxp = lxp + + +19 +lx = lx + lxp +ly = ly + lyp +IF ly < 20 THEN lyp = 1 +IF ly > 180 THEN lyp = -1 +IF lx < 30 THEN lxp = 1 +IF lx > 290 THEN +yp2 = ly - y2 +ELSE +GOTO 19 +END IF + +SWAP lx, tlx +SWAP ly, tly +SWAP lyp, tlyp +SWAP lxp, tlxp +RETURN + +17 +SCREEN 0 +WIDTH 80, 50 +VIEW PRINT 1 TO 50 +END SUB + +SUB box (x1, y1, x2, y2) +b$ = "" +c$ = "" +FOR a = x1 TO x2 +b$ = b$ + " " +c$ = c$ + "-" +NEXT a + +b$ = "|" + b$ + "|" +c$ = "|" + c$ + "|" + +COLOR 14, 0 +LOCATE y1, x1 +PRINT c$ +LOCATE y2, x1 +PRINT c$ +FOR a = y1 + 1 TO y2 - 1 +LOCATE a, y1 +PRINT b$ +NEXT a + + +END SUB + +SUB ch +chkey a$ +IF a$ <> "" THEN conkey a$ + +END SUB + +SUB chkey (a$) +a$ = INKEY$ +IF a$ <> "" THEN +IF a$ = CHR$(0) + "M" THEN a$ = "pa" +IF a$ = CHR$(0) + "K" THEN a$ = "va" +IF a$ = CHR$(0) + "H" THEN a$ = "ul" +IF a$ = CHR$(0) + "P" THEN a$ = "al" + + +END IF +END SUB + +SUB cmd (a$) +IF a$ = SPACE$(LEN(a$)) THEN GOTO 5 +conm a$, 14 + +mkson a$ +IF mitus = 0 THEN GOTO 5 + +SELECT CASE sona$(1) +CASE "help" +title "help" +conm "help - for help", 7 +conm "quit - quit program", 7 +conm "b - boss screen", 7 +conm "memstat- show info about memory blocks", 7 +conm "memput - put data to specified memoy block", 7 +conm "memlist - show memory blocks, starting from ", 7 +conm "runf - run script file", 7 +conm "lnstat - show info about memory lines", 7 +conm "lnput ... put data in starting from ", 7 +conm "lnlist - show contenc of memory lines", 7 +conm "fstat - show info about memory files", 7 +conm "fput ... put data in memory file", 7 +conm "fload - load data file into memory file", 7 +conm "cls - clear screen", 7 +conm "stclear - clear stack", 7 +conm "chklin - determine used line numbers to STDOUT", 7 +conm "stacksize - determine stack size to STDOUT", 7 +conm "filtand ... filters out lines to STDOUT", 7 +conm "filtor ... filters out lines to STDOUT", 7 +conm "disp ... display formatted selected cells to STDOUT", 7 +conm "sort - sort elements by value, lower first", 7 +conm "swap - swap stack elements (backwards)", 7 +conm "ssort - sort stack in alphabetical order", 7 +conm "memget - allocates memory block, and puts there -", 7 +conm "liststack - show stack values to STDOUT", 7 +conm "ask - asks question, and stores result", 7 +conm "flnget - get unused line in file", 7 +GOTO 5 + +CASE "quit" +SYSTEM + +CASE "memstat" +title "memory blocks summary" +c = 0 +lng = 0 +FOR b = 1 TO 5000 +IF bufu(b) > 0 THEN c = c + 1 +lng = lng + LEN(buf$(b)) +NEXT b +d$ = "memory blocks used:" + STR$(c) + " total 5000" +conm d$, 7 +d$ = "data size:" + STR$(lng) +conm d$, 7 +GOTO 5 + +CASE "memput" +b = VAL(sona$(2)) +strip sona$(3), c$ +IF c$ = "" THEN +bufu(b) = 0 +buf$(b) = "" +ELSE +bufu(b) = 1 +buf$(b) = sona$(3) +END IF +GOTO 5 + +CASE "memlist" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +IF b = 0 THEN b = 1 +IF c = 0 THEN c = 1 + +FOR d = b TO 5000 +IF c = 0 THEN GOTO 5 +IF bufu(d) > 0 THEN +e$ = cnum(d) + ":" + SPACE$(5 - LEN(cnum(d))) +e$ = e$ + buf$(d) +conm e$, 7 +c = c - 1 +END IF +NEXT d +GOTO 5 + +CASE "runf" +runf sona$(2) +GOTO 5 + +CASE "lnstat" +title "memory lines summary" +c = 0 +d = 0 +FOR b = 1 TO 1000 +IF buflu(b) > 0 THEN c = c + 1: d = d + buflu(b) +NEXT b +d$ = "memory lines used:" + STR$(c) + " total 1000" +conm d$, 7 +d$ = "total number of words in lines:" + STR$(d) +conm d$, 7 +GOTO 5 + +CASE "lnput" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +e = mitus +IF e < 4 THEN e = 4 +FOR d = 4 TO e +puts b, c + d - 4, sona$(d) +NEXT d +GOTO 5 + +CASE "lnlist" +b = VAL(sona$(2)) +c = VAL(sona$(3)) + +FOR d = b TO 1000 +IF c = 0 THEN GOTO 5 +IF buflu(d) > 0 THEN +e$ = cnum(d) + ":" +e$ = e$ + SPACE$(5 - LEN(e$)) +e$ = e$ + cnum(buflu(d)) +e$ = e$ + SPACE$(8 - LEN(e$)) + +FOR g = 1 TO 10 +gets d, g, f$ +e$ = e$ + " >" + f$ +NEXT g +conm e$, 7 +c = c - 1 +END IF +NEXT d +GOTO 5 + +CASE "fstat" +title "Memory files summary" +FOR b = 1 TO 30 + e = 0 + FOR c = 1 TO 1000 + IF buff(b, c) > -1 THEN + IF e = 0 THEN + d$ = "File number:" + STR$(b) + conm d$, 7 + e = e + 1 + END IF + d$ = "on line:" + STR$(c) + " allocated memory line: " + STR$(buff(b, c)) + conm d$, 7 + END IF + NEXT c +NEXT b +GOTO 5 + +CASE "fput" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +d = VAL(sona$(4)) +f = mitus +IF f < 5 THEN f = 5 +FOR e = 5 TO f +putfs b, c, d + e - 5, sona$(e) +NEXT e +GOTO 5 + +CASE "cls" +FOR b = 1 TO 50 +conm " ", 7 +NEXT b +GOTO 5 + +CASE "fload" +b = VAL(sona$(3)) +c = VAL(sona$(4)) +d = VAL(sona$(5)) +IF b = 0 THEN b = 1 +IF c = 0 THEN c = 1 +IF d = 0 THEN d = 1 +fload sona$(2), b, c, d +GOTO 5 + +CASE "stclear" +b = VAL(sona$(2)) +IF b = 0 THEN b = 1 +stackl(b) = 0 +GOTO 5 + +CASE "chklin" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +d = VAL(sona$(4)) +IF b = 0 THEN b = 1 +IF c = 0 THEN c = 1 +IF d = 0 THEN d = 1000 + +FOR e = c TO d +IF buff(b, e) > 0 THEN std cnum(buff(b, e)) +NEXT e +GOTO 5 + +CASE "stacksize" +b = VAL(sona$(2)) +IF b = 0 THEN b = 1 +std cnum(stackl(b)) +GOTO 5 + +CASE "b" +boss +conm "returning", 7 +GOTO 5 + +CASE "filtor" +b = VAL(sona$(2)) +FOR e = 1 TO stackl(b) +FOR c = 3 TO mitus STEP 2 +gets stack(e, b), VAL(sona$(c)), f$ +cmp f$, sona$(c + 1), d +IF d = 1 THEN +std cnum(stack(e, b)) +GOTO 20 +END IF +NEXT c +20 +NEXT e +GOTO 5 + +CASE "disp" +b = VAL(sona$(2)) +DIM tmp1(1 TO 100) +DIM tmp2(1 TO 100) + +FOR d = 1 TO 100 +tmp2(d) = 0 +NEXT d +d = 0 + +FOR e = 3 TO mitus +d = d + 1 +tmp1(d) = VAL(sona$(e)) +NEXT e + +FOR c = 1 TO stackl(b) +FOR e = 1 TO d +gets stack(c, b), tmp1(e), f$ +IF tmp2(e) < LEN(f$) THEN tmp2(e) = LEN(f$) +NEXT e +NEXT c + +FOR c = 1 TO stackl(b) +g$ = "" +FOR e = 1 TO d +gets stack(c, b), tmp1(e), f$ +f$ = f$ + SPACE$(tmp2(e) - LEN(f$)) +g$ = g$ + f$ + " # " +NEXT e +conm g$, 10 +NEXT c + +ERASE tmp2 +ERASE tmp1 +GOTO 5 + +CASE "filtand" +b = VAL(sona$(2)) +FOR e = 1 TO stackl(b) +FOR c = 3 TO mitus STEP 2 +gets stack(e, b), VAL(sona$(c)), f$ +cmp f$, sona$(c + 1), d +IF d = 0 THEN GOTO 21 +NEXT c +std cnum(stack(e, b)) +21 +NEXT e +GOTO 5 + +CASE "sort" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +sort b, c +GOTO 5 + +CASE "swap" +b = VAL(sona$(2)) +c = stackl(b) +FOR d = 1 TO c / 2 +SWAP stack(d, b), stack(c - d + 1, b) +NEXT d +GOTO 5 + +CASE "ssort" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +IF b = 0 THEN b = 1 +IF c = 0 THEN c = 1 +ssort b, c +GOTO 5 + +CASE "memget" +b = VAL(sona$(2)) +IF b = 0 THEN b = 1 +FOR c = 1 TO 5000 +IF bufu(c) = 0 THEN bufu(c) = 1: buf$(c) = "-": stack(b, 10) = c: GOTO 23 +NEXT c +23 +IF stackl(10) < b THEN stackl(10) = b +GOTO 5 + +CASE "liststack" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +d = VAL(sona$(4)) +IF b = 0 THEN b = 1 +IF c = 0 THEN c = 1 +IF d = 0 THEN d = stackl(b) +FOR e = c TO d +std cnum(stack(e, b)) +NEXT e +GOTO 5 + +CASE "ask" +b$ = sona$(2) +IF b$ = "" THEN b$ = "input" +c = VAL(sona$(3)) +d = VAL(sona$(4)) +e = VAL(sona$(5)) +box 5, 5, 75, 11 +LOCATE 7, 7 +PRINT b$ +LOCATE 9, 7 +INPUT "", f$ +putfs c, d, e, f$ +conm "'" + f$ + "' accepted", 7 +GOTO 5 + +CASE "flnget" +b = VAL(sona$(2)) +c = VAL(sona$(3)) +FOR d = 1 TO 1000 +IF buff(b, d) = -1 THEN +stack(c, 10) = d +IF stackl(10) < c THEN stackl(10) = c +GOTO 24 +END IF +NEXT d +24 +GOTO 5 + +END SELECT + + + +conm "Invalid command", 12 +5 +END SUB + +SUB cmp (a$, b$, r) +IF a$ = b$ THEN r = 1 ELSE r = 0 +END SUB + +FUNCTION cnum$ (a) +b$ = STR$(a) +cnum$ = RIGHT$(b$, LEN(b$) - 1) +END FUNCTION + +SUB conkey (a$) +b$ = concmd$ + SPACE$(85) +b$ = LEFT$(b$, 80) + +IF a$ = "va" THEN conx = conx - 1 +IF a$ = "pa" THEN conx = conx + 1 +IF a$ = "ul" THEN +b$ = hist$(histk) +histk = histk - 1 +IF histk < 1 THEN histk = 20 +END IF +IF a$ = "al" THEN +b$ = hist$(histk) +histk = histk + 1 +IF histk > 20 THEN histk = 1 +END IF + + + +IF LEN(a$) = 1 THEN +IF a$ = CHR$(13) THEN +strip b$, c$ +histp = histp + 1 +IF histp > 20 THEN histp = 1 +histk = histp +hist$(histp) = c$ +cmd c$ +b$ = "" +conx = 1 +GOTO 4 +END IF + +IF a$ = CHR$(8) THEN +IF conx > 1 THEN +b$ = LEFT$(b$, conx - 2) + RIGHT$(b$, 81 - conx) +conx = conx - 1 +END IF +GOTO 4 +END IF + +b$ = LEFT$(b$, conx - 1) + a$ + RIGHT$(b$, 81 - conx) +conx = conx + 1 +END IF +4 + + +IF conx < 1 THEN conx = 1 +IF conx > 80 THEN conx = 80 + +b$ = b$ + SPACE$(85) +concmd$ = LEFT$(b$, 80) +LOCATE 50, 1 +COLOR 15, 1 +PRINT concmd$; +LOCATE 50, conx +COLOR 0, 14 +PRINT RIGHT$(LEFT$(concmd$, conx), 1); + + +END SUB + +SUB conm (d$, c) +a$ = d$ + +14 +IF LEN(a$) > 78 THEN +b$ = LEFT$(a$, 78) +conm b$, c +a$ = " >> " + RIGHT$(a$, LEN(a$) - 78) +GOTO 14 +END IF + + +b$ = a$ + SPACE$(80 - LEN(a$)) +con$(50) = b$ +conc(50) = c + +FOR a = 1 TO 49 +con$(a) = con$(a + 1) +conc(a) = conc(a + 1) +NEXT a + +FOR a = 1 TO 49 +LOCATE a, 1 +COLOR conc(a), 0 +PRINT con$(a) +NEXT a + +END SUB + +SUB fload (a$, b, c, d) +getfil h + +j = c +l = 0 + +OPEN a$ FOR INPUT AS #h +12 +IF EOF(h) <> 0 THEN GOTO 13 +LINE INPUT #h, e$ + +IF LEFT$(e$, 3) = "// " THEN +conm e$, 10 +GOTO 12 +END IF +IF e$ = SPACE$(LEN(e$)) THEN GOTO 12 + +e$ = e$ + "|" +l = l + 1 +h$ = "" +i = d +FOR f = 1 TO LEN(e$) +g$ = RIGHT$(LEFT$(e$, f), 1) +IF g$ = "|" THEN + putfs b, j, i, h$ + h$ = "" + g$ = "" + i = i + 1 +END IF +IF g$ = CHR$(9) THEN g$ = "" +h$ = h$ + g$ +NEXT f + +j = j + 1 +GOTO 12 +13 +CLOSE #h + + +opf(h) = 0 + +k$ = "file: " + a$ + " loaded." + STR$(l) + " lines in file" +conm k$, 7 +END SUB + +SUB getfil (a) +FOR b = 1 TO 30 +IF opf(b) = 0 THEN opf(b) = 1: a = b: GOTO 7 +NEXT b +7 +END SUB + +SUB gets (l, s, a$) + +b = bufl(l, s) + +IF b = -1 THEN +a$ = "" +ELSE +a$ = buf$(b) +END IF +END SUB + +SUB mkson (a$) + +mitus = 0 + +d = 1 +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +IF c$ = " " THEN +d = 1 +ELSE +IF d = 1 THEN +mitus = mitus + 1 +sona$(mitus) = "" +d = 0 +END IF +sona$(mitus) = sona$(mitus) + c$ +END IF +NEXT b + +'conm "sonad_______", 10 +'FOR b = 1 TO mitus +'conm sona$(b), 14 +'NEXT b + +FOR a = 1 TO mitus +IF LEFT$(sona$(a), 2) = "|>" THEN +IF sona$(a + 1) = "c" THEN stdl = 1 +IF sona$(a + 1) = "s" THEN stdl = 10 + VAL(sona$(a + 2)) +mitus = a - 1 +GOTO 15 +END IF +IF LEFT$(sona$(a), 2) = "|@" THEN +sona$(a) = cnum(stack(VAL(RIGHT$(sona$(a), LEN(sona$(a)) - 2)), 10)) +END IF +NEXT a + +15 +FOR a = mitus + 1 TO 20 +sona$(a) = "" +NEXT a +END SUB + +SUB putfs (f, l, s, c$) + +'DIM SHARED buff(1 TO 30, 1 TO 1000) + +la = buff(f, l) + +IF la = -1 THEN +FOR a = 1 TO 1000 +IF buflu(a) = 0 THEN la = a: GOTO 10 +NEXT a +10 +END IF + +puts la, s, c$ +IF buflu(la) = 0 THEN buff(f, l) = -1 ELSE buff(f, l) = la +END SUB + +SUB puts (l, s, a$) +'PRINT l, s +IF a$ = "|" THEN a$ = "" +IF a$ = "||" THEN GOTO 11 +'conm a$, 13 +b = bufl(l, s) + +IF b = -1 THEN +'DIM SHARED buf$(1 TO 10000) +'DIM SHARED bufu(1 TO 10000) +FOR c = 1 TO 10000 +IF bufu(c) = 0 THEN GOTO 6 +NEXT c +6 +b = c +bufu(b) = 1 +buflu(l) = buflu(l) + 1 +END IF + +strip a$, c$ + +IF c$ = "" THEN +bufu(b) = 0 +buf$(b) = "" +bufl(l, s) = -1 +buflu(l) = buflu(l) - 1 +ELSE +buf$(b) = c$ +bufl(l, s) = b +END IF +11 +END SUB + +SUB runf (a$) +getfil h + +OPEN a$ FOR INPUT AS #h +9 +IF EOF(h) <> 0 THEN GOTO 8 +LINE INPUT #h, b$ +cmd b$ +GOTO 9 +8 +CLOSE #h + +opf(h) = 0 +END SUB + +SUB sort (s, w) +DIM tmp1(1 TO 10000) +DIM tmp2(1 TO 10000) + +b = stackl(s) + +FOR a = 1 TO b +gets stack(a, s), w, c$ +tmp1(a) = VAL(c$) +tmp2(a) = a +NEXT a + +d = 1 +FOR a = 1 TO b +e = 32000 + +FOR c = d TO b +IF tmp1(c) < e THEN e = tmp1(c): f = c +NEXT c + +SWAP tmp1(a), tmp1(f) +SWAP tmp2(a), tmp2(f) +d = d + 1 +NEXT a + +FOR a = 1 TO b +stack(a, s) = tmp2(a) +NEXT a + +END SUB + +SUB ssort (s, m) +DIM tbti(1 TO 2000) +DIM tbtp(1 TO 2000) +DIM tbt$(1 TO 2000) + +FOR a = 1 TO stackl(s) +gets stack(a, s), m, b$ +tbt$(a) = b$ +tbtp(a) = a +NEXT a + +b = stackl(s) +FOR a = 1 TO stackl(s) +d$ = tbt$(1) +e = 1 +f = ASC(LEFT$(d$, 1)) +FOR c = 2 TO b +IF ASC(LEFT$(tbt$(c), 1)) = f THEN +IF d$ <> tbt$(c) THEN +g$ = d$ + CHR$(0) +h$ = tbt$(c) + CHR$(0) +i = LEN(g$) +IF LEN(h$) > i THEN i = LEN(h$) +FOR j = 1 TO i +k = ASC(RIGHT$(LEFT$(g$, j), 1)) +l = ASC(RIGHT$(LEFT$(h$, j), 1)) +IF k < l THEN GOTO 22 +IF l < k THEN e = c: d$ = tbt$(c): f = ASC(LEFT$(d$, 1)): GOTO 22 +NEXT j +END IF +END IF +IF ASC(LEFT$(tbt$(c), 1)) < f THEN f = ASC(LEFT$(tbt$(c), 1)): e = c: d$ = tbt$(c) +22 +NEXT c + +tbti(a) = tbtp(e) +tbt$(e) = tbt$(b) +tbtp(e) = tbtp(b) +b = b - 1 +NEXT a + +FOR a = 1 TO stackl(s) +stack(a, s) = tbti(a) +NEXT a + +conm "done", 7 +END SUB + +SUB start +WIDTH 80, 50 +VIEW PRINT 1 TO 50 +CLS +conx = 1 +histp = 1 +histk = 1 +stdl = 1 + +conm "DDBASE, (Dos Data BASE) 0.0", 7 +conm "Copyright Svjatoslav Agejenko. All Rights Reserved.", 7 +conm "starting...", 7 +FOR a = 1 TO 5000 +bufu(a) = 0 +buf$(a) = "" +NEXT a + +FOR a = 1 TO 30 +FOR b = 1 TO 1000 +bufl(b, a) = -1 +buff(a, b) = -1 +NEXT b +opf(a) = 0 +NEXT a + +FOR a = 1 TO 1000 +buflu(a) = 0 +NEXT a + +FOR a = 1 TO 10 +stackl(a) = 0 +NEXT a + + +a$ = "runf auto.scr" +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +conkey c$ +NEXT b +conkey CHR$(13) + +END SUB + +SUB std (a$) +'conm a$, 2 + +SELECT CASE stdl +CASE 1 +conm a$, 10 +CASE 11 TO 20 +b = stdl - 10 +stackl(b) = stackl(b) + 1 +stack(stackl(b), b) = VAL(a$) + +c$ = a$ + " > " + cnum(stackl(b)) + " ! " + cnum(b) +END SELECT + + + + +END SUB + +SUB strip (a$, b$) +b$ = a$ +2 +IF LEFT$(b$, 1) = " " THEN b$ = RIGHT$(b$, LEN(b$) - 1): GOTO 2 +3 +IF RIGHT$(b$, 1) = " " THEN b$ = LEFT$(b$, LEN(b$) - 1): GOTO 3 +END SUB + +SUB title (a$) +conm " ", 10 +conm "================> " + a$ + " <===============", 7 + + + +END SUB + diff --git a/database/lisa.scr b/database/lisa.scr new file mode 100755 index 0000000..30e4900 --- /dev/null +++ b/database/lisa.scr @@ -0,0 +1,11 @@ +flnget 1 1 +ask Eesnimi 1 |@1 1 +ask Perekonnanimi 1 |@1 2 +ask Aadress 1 |@1 3 +ask Telefon 1 |@1 4 +ask Sugu_M_voi_N 1 |@1 5 +ask Snniaasta 1 |@1 7 +stclear 1 +chklin 1 |> s 1 +stacksize 1 |> c + diff --git a/doc/index.html b/doc/index.html new file mode 100755 index 0000000..e1e408f --- /dev/null +++ b/doc/index.html @@ -0,0 +1,45 @@ + + + + +QBasicApps + + +

QBasicApps - collection of applications mostly written in MS QBasic for DOS environment

+ Download +    + Online homepage +    + Other applications hosted on svjatoslav.eu +
+Programs author:
+    Svjatoslav Agejenko
+    Homepage: http://svjatoslav.eu
+    Email: svjatoslav@svjatoslav.eu
+
+This software is distributed under GNU GENERAL PUBLIC LICENSE Version 2.
+
+
+This collection contains lots of applications (games, graphics tests (2D/3D/4D)
+algorithms tests, utilities) I wrote long time ago.
+Mostly in QBasic, some in x86 assembly for use under DOS environment.
+
+
+Few sample applications from the package:
+    Checkers game
+    Super Mario clone
+    3D synthezer
+    Ray casting 3D engine
+    4D engine
+    Interactive 3D graph for visualizing formulas
+    Biorythm calculator
+    Digital data over analog audio channel
+    Explosion simulation
+    Game of life
+
+
+
+ + diff --git a/games/checkers/checkers.bas b/games/checkers/checkers.bas new file mode 100755 index 0000000..d194b7d --- /dev/null +++ b/games/checkers/checkers.bas @@ -0,0 +1,513 @@ +' Checkers game (unfinished) +' by Svjatoslav Agejenko 2001 +' svjatoslavagejenko@gmail.com + + +DECLARE SUB compki (m%, h%, x1%, y1%) +DECLARE SUB compgo2 (h%) +DECLARE SUB compgo (h%) +DECLARE SUB humngo (h%) +DEFINT A-Z + +DECLARE SUB thinkc () +DECLARE SUB thinkh () +DECLARE SUB cmd (a$) +DECLARE SUB freet () +DECLARE SUB prn (x%, y%, c%, a$) +DECLARE SUB msg (a$, c) +DECLARE SUB getfnt () +DECLARE SUB playg () +DECLARE SUB geth () +DECLARE SUB start () +DECLARE SUB mklau () +DECLARE SUB showr (x, y) +DECLARE SUB show () +DIM SHARED font(0 TO 7, 0 TO 7, 0 TO 255) +DIM SHARED siz, fi, ri, rs +DIM SHARED stri$ +DIM SHARED humx1, humy1, humx2, humy2 +DIM SHARED sug, smax +DIM SHARED npos AS LONG +DIM SHARED cx1, cy1, cx2, cy2 + +siz = 6 ' Board size +fi = 0 +ri = 2 +smax = 3 ' thinking depth + + +DIM SHARED lau(-1 TO siz + 2, -1 TO siz + 2) + +start +mklau +show +playg + +SUB cmd (a$) + +mitus = 0 +DIM sona$(1 TO 10) +FOR b = 1 TO 10 +sona$(b) = "" +NEXT b + +d = 1 +e = 1 +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +IF c$ = " " THEN +IF e = 0 THEN d = d + 1: e = 1 +GOTO 4 +END IF +e = 0 +sona$(d) = sona$(d) + c$ +4 +NEXT b +IF e = 1 THEN d = d - 1 +mitus = d + + +SELECT CASE sona$(1) +CASE "m" +IF humx1 > 0 THEN msg "move replaced", 14 + +humx1 = ASC(LEFT$(sona$(2), 1)) - 64 +IF humx1 > 32 THEN humx1 = humx1 - 32 +humy1 = VAL(RIGHT$(sona$(2), LEN(sona$(2)) - 1)) +humx2 = ASC(LEFT$(sona$(3), 1)) - 64 +IF humx2 > 32 THEN humx2 = humx2 - 32 +humy2 = VAL(RIGHT$(sona$(3), LEN(sona$(2)) - 1)) + +CASE "h" +msg "h - display help screen", 14 +msg "q - to quit", 14 +msg "m - make move", 14 +msg "n - no. positions processed", 14 + +CASE "q" +SYSTEM + +CASE "n" +b$ = "positions processed:" + STR$(npos) +msg b$, 14 + +END SELECT + +END SUB + +SUB compgo (h) +IF sug > smax THEN h = 0: GOTO 6 +sug = sug + 1 +npos = npos + 1 +freet +IF sug = 1 THEN h1 = -2000 ELSE h1 = -1000 + +'cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1 +b = 0 +c = 0 +m = 0 +FOR y = 1 TO siz ' check for eating +FOR x = 1 TO siz +IF lau(x, y) = 1 THEN +8 +IF (lau(x - 1, y + 1) = 2) AND (lau(x - 2, y + 2) = 0) THEN +SWAP lau(x, y), lau(x - 2, y + 2) +lau(x - 1, y + 1) = 0 +compki m1, h2, x - 2, y + 2 +lau(x - 1, y + 1) = 2 +SWAP lau(x, y), lau(x - 2, y + 2) +m1 = m1 + 1 +IF m1 > m THEN m = m1: h1 = -1000 +IF m1 = m THEN +IF h2 + 1 > h1 THEN +h1 = h2 + 1 +IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y + 2 +END IF +END IF +b = 1 +END IF + + +IF (lau(x + 1, y + 1) = 2) AND (lau(x + 2, y + 2) = 0) THEN +SWAP lau(x, y), lau(x + 2, y + 2) +lau(x + 1, y + 1) = 0 +compki m1, h2, x + 2, y + 2 +lau(x + 1, y + 1) = 2 +SWAP lau(x, y), lau(x + 2, y + 2) +m1 = m1 + 1 +IF m1 > m THEN m = m1: h1 = -1000 +IF m1 = m THEN +IF h2 + 1 > h1 THEN +h1 = h2 + 1 +IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y + 2 +END IF +END IF +b = 1 +END IF + + +IF (lau(x - 1, y - 1) = 2) AND (lau(x - 2, y - 2) = 0) THEN +SWAP lau(x, y), lau(x - 2, y - 2) +lau(x - 1, y - 1) = 0 +compki m1, h2, x - 2, y - 2 +lau(x - 1, y - 1) = 2 +SWAP lau(x, y), lau(x - 2, y - 2) +m1 = m1 + 1 +IF m1 > m THEN m = m1: h1 = -1000 +IF m1 = m THEN +IF h2 + 1 > h1 THEN +h1 = h2 + 1 +IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y - 2 +END IF +END IF +b = 1 +END IF + + +IF (lau(x + 1, y - 1) = 2) AND (lau(x + 2, y - 2) = 0) THEN +SWAP lau(x, y), lau(x + 2, y - 2) +lau(x + 1, y - 1) = 0 +compki m1, h2, x + 2, y - 2 +lau(x + 1, y - 1) = 2 +SWAP lau(x, y), lau(x + 2, y - 2) +m1 = m1 + 1 +IF m1 > m THEN m = m1: h1 = -1000 +IF m1 = m THEN +IF h2 + 1 > h1 THEN +h1 = h2 + 1 +IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y - 2 +END IF +END IF +b = 1 +END IF + + + + + +IF c = 1 THEN GOTO 9 +END IF +NEXT x +NEXT y + +9 +IF (b = 1) AND (npos = 1) THEN +cx3 = (cx1 + cx2) / 2 +cy3 = (cy1 + cy2) / 2 +lau(cx3, cy3) = 0 +showr cx3, cy3 + +SWAP lau(cx1, cy1), lau(cx2, cy2) +showr cx1, cy1 +showr cx2, cy2 +msg "NJAM!", 10 +x = cx2 +y = cy2 +c = 1 +b = 0 +GOTO 8 +END IF +IF c = 1 THEN +cx1 = 1: cy1 = 1: cx2 = 1: cy2 = 1 +GOTO 10 +END IF + +IF sug = 1 THEN +msg "l��a ei saa", 4 +msg STR$(h1), 4 +END IF + +FOR y = 1 TO siz ' unuseful move +FOR x = 1 TO siz +IF lau(x, y) = 1 THEN +IF lau(x - 1, y + 1) = 0 THEN +SWAP lau(x, y), lau(x - 1, y + 1) +humngo h2 +SWAP lau(x, y), lau(x - 1, y + 1) +IF h2 > h1 THEN +h1 = h2 +IF sug = 1 THEN cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1 +END IF +END IF + +IF lau(x + 1, y + 1) = 0 THEN +SWAP lau(x, y), lau(x + 1, y + 1) +humngo h2 +SWAP lau(x, y), lau(x + 1, y + 1) +IF h2 > h1 THEN +h1 = h2 +IF sug = 1 THEN cx1 = x: cy1 = y: cx2 = x + 1: cy2 = y + 1 +END IF +END IF + +END IF +NEXT x +NEXT y +h = h1 +10 +sug = sug - 1 +6 +END SUB + +SUB compki (m, h, x1, y1) +h1 = 0 + +FOR y = 1 TO siz +FOR x = 1 TO siz +NEXT x +NEXT y +h = h1 + +END SUB + +SUB freet +a$ = INKEY$ +IF a$ = "" THEN +ELSE +IF a$ = CHR$(8) THEN +IF LEN(stri$) > 0 THEN +stri$ = LEFT$(stri$, LEN(stri$) - 1): GOTO 3 +END IF +END IF +IF a$ = CHR$(13) THEN +IF LEN(stri$) > 0 THEN +msg stri$, 7 +cmd stri$ +stri$ = "" +END IF +GOTO 3 +END IF +stri$ = stri$ + a$ +3 +LINE (400, 468)-(639, 479), 1, BF +prn 405, 469, 14, stri$ +END IF +END SUB + +SUB getfnt +SCREEN 13 +FOR a = 0 TO 255 +IF (a > 5) AND (a < 17) THEN GOTO 2 +LOCATE 1, 1 +PRINT CHR$(a) +2 +FOR y = 0 TO 7 +FOR x = 0 TO 7 +font(x, y, a) = POINT(x, y) +NEXT x +NEXT y +NEXT a + +END SUB + +SUB humngo (h) +npos = npos + 1 +h1 = 1000 + +FOR y = siz TO 1 STEP -1 +FOR x = siz TO 1 STEP -1 +IF lau(x, y) = 2 THEN +IF lau(x - 1, y - 1) = 0 THEN +SWAP lau(x, y), lau(x - 1, y - 1) +compgo h2 +SWAP lau(x, y), lau(x - 1, y - 1) +IF h2 < h1 THEN h1 = h2 +END IF + +IF lau(x + 1, y - 1) = 0 THEN +SWAP lau(x, y), lau(x + 1, y - 1) +compgo h2 +SWAP lau(x, y), lau(x + 1, y - 1) +IF h2 < h1 THEN h1 = h2 +END IF + + +IF (lau(x - 1, y - 1) = 1) AND (lau(x - 2, y - 2) = 0) THEN +SWAP lau(x, y), lau(x - 2, y - 2) +lau(x - 1, y - 1) = 0 +humngo h2 +lau(x - 1, y - 1) = 1 +SWAP lau(x, y), lau(x - 2, y - 2) +IF h2 - 1 < h1 THEN h1 = h2 - 1 +END IF + +IF (lau(x + 1, y - 1) = 1) AND (lau(x + 2, y - 2) = 0) THEN +SWAP lau(x, y), lau(x + 2, y - 2) +lau(x + 1, y - 1) = 0 +humngo h2 +lau(x + 1, y - 1) = 1 +SWAP lau(x, y), lau(x + 2, y - 2) +IF h2 - 1 < h1 THEN h1 = h2 - 1 +END IF + + + + +END IF +NEXT x +NEXT y +h = h1 +END SUB + +SUB mklau +FOR y = -1 TO siz + 2 +FOR x = -1 TO siz + 2 +lau(x, y) = -1 +NEXT x +NEXT y + +FOR y = 1 TO siz +FOR x = 1 TO siz +lau(x, y) = 0 +NEXT x +NEXT y + +FOR y = 1 TO ri +FOR x = 1 TO siz +IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN +lau(x, y) = 1 +END IF +NEXT x +NEXT y + +FOR y = siz - ri + 1 TO siz +FOR x = 1 TO siz +IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN +lau(x, y) = 2 +END IF +NEXT x +NEXT y + +END SUB + +SUB msg (a$, c) +DIM buf(1 TO 10000) +FOR x = 400 TO 630 STEP 40 +GET (x, 8)-(x + 39, 467), buf(1) +PUT (x, 0), buf(1), PSET +NEXT x +LINE (400, 460)-(639, 467), 0, BF +prn 405, 460, c, a$ +END SUB + +SUB playg +'GOTO 7 +1 +thinkc +show +7 +thinkh +show +GOTO 1 + + +END SUB + +SUB prn (x, y, c, a$) +x1 = x +y1 = y +FOR a = 1 TO LEN(a$) +b = ASC(RIGHT$(LEFT$(a$, a), 1)) +FOR y2 = 0 TO 7 +FOR x2 = 0 TO 7 +IF font(x2, y2, b) > 0 THEN PSET (x2 + x1, y2 + y1), c +NEXT x2 +NEXT y2 +x1 = x1 + 8 +NEXT a +END SUB + +SUB show +FOR y = 1 TO siz +FOR x = 1 TO siz +showr x, y +NEXT x +NEXT y + +sp = rs / 2 +FOR x = 1 TO siz +prn ((x - 1) * rs + 12 + sp), 2, 10, CHR$(64 + x) +prn ((x - 1) * rs + 12 + sp), siz * rs + 11, 10, CHR$(64 + x) +NEXT x + +FOR y = 1 TO siz +a$ = STR$(y) +a$ = RIGHT$(a$, LEN(a$) - 1) +prn 15 - (LEN(a$) * 8), (y - 1) * rs + sp + 7, 10, a$ +prn (siz * rs + 16), (y - 1) * rs + sp + 7, 10, a$ +NEXT y + + +END SUB + +SUB showr (x, y) +IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN c = 8 ELSE c = 7 +x1 = (x - 1) * rs + 15 +y1 = (y - 1) * rs + 10 +LINE (x1, y1)-(x1 + rs - 1, y1 + rs - 1), c, BF +IF lau(x, y) > 0 THEN +sp = rs / 2 +IF lau(x, y) = 1 THEN c1 = 15 ELSE c1 = 14 +CIRCLE (x1 + sp, y1 + sp), sp - 1, c1 +PAINT (x1 + sp, y1 + sp), c1 +END IF +END SUB + +SUB start +getfnt +SCREEN 12 +LINE (399, 0)-(399, 479), 13 +msg "type 'h' for help", 14 + +rs = INT(370 / siz) + + +END SUB + +SUB thinkc +msg "computer turn", 14 +sug = 0 +npos = 0 +cx1 = -1 + +compgo h +cmd "n" +IF cx1 = -1 THEN msg "you won!", 10: msg "--------", 10: SYSTEM + +IF h <= -2 THEN msg "oh no...", 10 +IF h = -1 THEN msg "oops!", 10 +IF h = 1 THEN msg "yess! I will eat soon!", 10 +IF h >= 2 THEN msg "HA HA HA YOU ARE IN TROUBLE!", 10 + + +IF ABS(cx1 - cx2) = 2 THEN +cx3 = (cx1 + cx2) / 2 +cy3 = (cy1 + cy2) / 2 +lau(cx3, cy3) = 0 +showr cx3, cy3 +END IF + +SWAP lau(cx1, cy1), lau(cx2, cy2) +showr cx1, cy1 +showr cx2, cy2 + +END SUB + +SUB thinkh +msg "your turn", 14 +5 +freet +IF humx1 = 0 THEN GOTO 5 +SWAP lau(humx2, humy2), lau(humx1, humy1) +showr humx1, humy1 +showr humx2, humy2 +IF ABS(humx1 - humx2) = 2 THEN +cx3 = (humx1 + humx2) / 2 +cy3 = (humy1 + humy2) / 2 +lau(cx3, cy3) = 0 +showr cx3, cy3 +END IF + +humx1 = 0 +END SUB + diff --git a/games/checkers/index.html b/games/checkers/index.html new file mode 100755 index 0000000..058d7cd --- /dev/null +++ b/games/checkers/index.html @@ -0,0 +1,19 @@ + +checkers + + + +

checkers

+
+
+Play checkers against the computer with any board +size and any amount of caps. Does thinking by recursively +testing many possible scenarios with any depth. + +Since it is slow QBasic implementation, +it isn't practical to play with many caps +or big thinking depth, for reasonable responce time. + +
+ + \ No newline at end of file diff --git a/games/checkers/sshot.png b/games/checkers/sshot.png new file mode 100755 index 0000000..9b4dbf4 Binary files /dev/null and b/games/checkers/sshot.png differ diff --git a/games/kabe.bas b/games/kabe.bas new file mode 100755 index 0000000..09de45b --- /dev/null +++ b/games/kabe.bas @@ -0,0 +1,252 @@ +' This program is created by Svjatoslav Agejenko +' in 1998 + +' USE w a z s keys to move around +' and ENTER key to celect chess and put to other place + +DECLARE SUB look () +DECLARE SUB motleb () +DECLARE SUB mang () +DECLARE SUB sisend () +DECLARE SUB asend () +DEFINT A-Z +DIM SHARED nu(-100 TO 300) AS INTEGER +DIM SHARED kaik AS INTEGER +DIM SHARED looma AS INTEGER +DIM SHARED hiir(1000) +DIM SHARED ax1, ax2 +SCREEN 2 +CLS +LINE (1, 1)-(10, 1) +LINE (1, 1)-(1, 5) +LINE (10, 1)-(6, 2) +LINE (6, 2)-(10, 4) +LINE (10, 4)-(8, 5) +LINE (8, 5)-(4, 3) +LINE (4, 3)-(1, 5) +PAINT (2, 2), 1 +GET (1, 1)-(10, 5), hiir +CLS +FOR a = 0 TO 10 +LINE ((a * 40) + 20, 10)-((a * 40) + 20, 189), 1 +NEXT a + +FOR a = 0 TO 20 +LINE (20, (a * 18) + 9)-(420, (a * 18) + 9), 1 +NEXT a + +FOR a = 1 TO 200 +nu(a) = 4 +NEXT a + +FOR a = 2 TO 10 STEP 2 +FOR b = 1 TO 10 STEP 2 +PAINT ((b * 40) + 5, (a * 18) + 5) +NEXT b +NEXT a + +FOR a = 1 TO 10 STEP 2 +FOR b = 2 TO 10 STEP 2 +PAINT ((b * 40) + 5, (a * 18) + 5) +NEXT b +NEXT a + +FOR a = 2 TO 4 STEP 2 +FOR b = 1 TO 10 STEP 2 +nu(((a - 1) * 20) + b) = 1 +NEXT b +NEXT a + +FOR a = 1 TO 4 STEP 2 +FOR b = 2 TO 10 STEP 2 +nu(((a - 1) * 20) + b) = 1 +NEXT b +NEXT a + +FOR a = 8 TO 10 STEP 2 +FOR b = 1 TO 10 STEP 2 +nu(((a - 1) * 20) + b) = 0 +NEXT b +NEXT a + +FOR a = 7 TO 10 STEP 2 +FOR b = 2 TO 10 STEP 2 +nu(((a - 1) * 20) + b) = 0 +NEXT b +NEXT a + +FOR b = 2 TO 10 STEP 2 +nu(80 + b) = 3 +NEXT b + +FOR b = 1 TO 10 STEP 2 +nu(100 + b) = 3 +NEXT b + +asend +kaik = 1 +mang + +SUB asend +FOR b = 1 TO 10 +FOR a = 1 TO 10 +v = nu(((b - 1) * 20) + a) +SELECT CASE v +CASE 1 +CIRCLE (a * 40, b * 18), 17, 1 +PAINT (a * 40, b * 18), 1 +CIRCLE (a * 40, b * 18), 17, 0 +CIRCLE (a * 40, b * 18), 16, 0 +LINE ((a * 40) - 16, b * 18)-((a * 40) + 16, b * 18), 0 +CASE 0 +CIRCLE (a * 40, b * 18), 17, 0 +PAINT (a * 40, b * 18), 0 +CIRCLE (a * 40, b * 18), 17, 1 +CIRCLE (a * 40, b * 18), 15, 1 +CIRCLE (a * 40, b * 18), 3, 1 +CIRCLE (a * 40, b * 18), 7, 1 +LINE ((a * 40) - 16, b * 18)-((a * 40) + 16, b * 18), 0 +CASE 3 +PAINT (a * 40, b * 18), 1 +END SELECT +NEXT a +NEXT b +END SUB + +SUB look +looma = 0 +FOR a = 1 TO 200 +IF nu(a) = 0 AND nu(a - 21) = 1 AND nu(a - 42) = 3 THEN looma = 1 +IF nu(a) = 0 AND nu(a - 19) = 1 AND nu(a - 38) = 3 THEN looma = 1 +IF nu(a) = 0 AND nu(a + 21) = 1 AND nu(a + 42) = 3 THEN looma = 1 +IF nu(a) = 0 AND nu(a + 19) = 1 AND nu(a + 38) = 3 THEN looma = 1 +NEXT a +END SUB + +SUB mang +4 +sisend +motleb +look +IF looma = 1 THEN SOUND 1234, 2 +GOTO 4 +END SUB + +SUB motleb +3 +REM T O P E L T L O O K +FOR a = 1 TO 200 +IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 61) = 0 AND nu(a + 80) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 23) = 0 AND nu(a + 4) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 59) = 0 AND nu(a + 80) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 17) = 0 AND nu(a - 4) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 63) = 0 AND nu(a + 84) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 57) = 0 AND nu(a + 76) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: aiki = 1: asend: GOTO 3 + +IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 61) = 0 AND nu(a - 80) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 23) = 0 AND nu(a - 4) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 59) = 0 AND nu(a - 80) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 17) = 0 AND nu(a + 4) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 63) = 0 AND nu(a - 84) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3 +IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 57) = 0 AND nu(a - 76) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: aiki = 1: asend: GOTO 3 +NEXT a + +REM L I H T S A L T L O O K +FOR a = 1 TO 200 +IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: GOTO 2 +NEXT a +REM K A I T S E B +FOR a = 1 TO 200 +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 0 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 0 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 + +IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 1 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 1 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2 +NEXT a +REM L A H E B N U R K A +FOR a = 1 TO 200 +IF nu(a) = 1 AND nu(a + 2) = 4 AND nu(a + 21) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a - 2) = 4 AND nu(a + 19) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +NEXT a +REM O H U T U K A I K +FOR a = 1 TO 200 +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 3 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 3 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2 + +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 1 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 1 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2 + +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 3 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 3 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2 + +IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 1 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 1 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2 +NEXT a +REM M O T T E T U K A I K +FOR a = 1 TO 200 +IF nu(a) = 1 AND nu(a + 21) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2 +IF nu(a) = 1 AND nu(a + 19) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2 +NEXT a +LOCATE 4, 5 +PRINT " S I N U V O I T" +END +GOTO 3 +2 +asend +9 +END SUB + +SUB sisend +DIM asdf(1000) + +p = 1 +5 +a = ax1 +b = ax2 +7 +IF p = 1 THEN LOCATE 1, 70: PRINT "Kust !" +IF p = 2 THEN LOCATE 1, 70: PRINT "kuhu !" + +LOCATE 2, 60 +qw = (((b \ 18) - 1) * 20) + (a \ 40) +PRINT qw +GET (a, b)-(a + 10, b + 10), asdf +PUT (a, b), hiir, PSET +a$ = INPUT$(1) +PUT (a, b), asdf, PSET +IF p = 2 AND a$ = CHR$(13) THEN a2 = qw: ax1 = a: ax2 = b: GOTO 8 +IF p = 1 AND a$ = CHR$(13) THEN a1 = qw: p = 2 +IF a$ = "q" THEN END +IF a$ = "s" THEN a = a + 40 +IF a$ = "a" THEN a = a - 40 +IF a$ = "w" THEN b = b - 18 +IF a$ = "z" THEN b = b + 18 +IF a < 1 THEN a = 1 +IF b < 1 THEN b = 1 + +GOTO 7 +8 +kaik = 1 +LOCATE 3, 60 +PRINT a1; "-"; a2 +10 +REM K O N T R O L L +IF a1 = a2 + 19 AND nu(a1) = 0 AND nu(a2) = 3 THEN BEEP: SWAP nu(a1), nu(a2) +IF a1 = a2 + 21 AND nu(a1) = 0 AND nu(a2) = 3 THEN BEEP: SWAP nu(a1), nu(a2) +zxcv = 0 +IF a1 = a2 + 42 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 + 21) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 + 21) = 3: zxcv = 1 +IF a1 = a2 + 38 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 + 19) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 + 19) = 3: zxcv = 1 +IF a1 = a2 - 42 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 - 21) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 - 21) = 3: zxcv = 1 +IF a1 = a2 - 38 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 - 19) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 - 19) = 3: zxcv = 1 +asend +IF zxcv = 1 THEN look: IF looma = 1 THEN SOUND 1234, 1: p = 2: a1 = a2: GOTO 5 +6 +END SUB + diff --git a/games/mario/0.i01 b/games/mario/0.i01 new file mode 100755 index 0000000..ddf406e --- /dev/null +++ b/games/mario/0.i01 @@ -0,0 +1,11 @@ + 10 +((]]]]]](( +(]]]]]]]]( +]]]]((]]]] +]]]((((]]] +]]]((((]]] +]]]((((]]] +]]]((((]]] +]]]]((]]]] +(]]]]]]]]( +((]]]]]](( diff --git a/games/mario/1.i01 b/games/mario/1.i01 new file mode 100755 index 0000000..3d79571 --- /dev/null +++ b/games/mario/1.i01 @@ -0,0 +1,11 @@ + 10 +((((]]]((( +(((]]]]](( +(((]]]]](( +(((]]]]](( +(((]]]]](( +(((]]]]](( +(((]]]]](( +(((]]]]](( +(((]]]]](( +((((]]]((( diff --git a/games/mario/2.i01 b/games/mario/2.i01 new file mode 100755 index 0000000..1e305a6 --- /dev/null +++ b/games/mario/2.i01 @@ -0,0 +1,11 @@ + 10 +(]]]]]]](( +]]]]]]]]]( +]]]]((]]]] +(]](((]]]] +((((]]]]]( +(((]]]]](( +(]]]]((((( +]]]](((]]( +]]]]]]]]]] +(]]]]]]]]( diff --git a/games/mario/3.i01 b/games/mario/3.i01 new file mode 100755 index 0000000..0638abc --- /dev/null +++ b/games/mario/3.i01 @@ -0,0 +1,11 @@ + 10 +(]]]]]]]]( +]]]]]]]]]] +(]](((]]]] +(((((((]]] +(((((]]]]( +(((((]]]]( +(((((((]]] +(]](((]]]] +]]]]]]]]]] +(]]]]]]]]( diff --git a/games/mario/4.i01 b/games/mario/4.i01 new file mode 100755 index 0000000..2bfbf57 --- /dev/null +++ b/games/mario/4.i01 @@ -0,0 +1,11 @@ + 10 +(((]](((]( +((]]](((]] +((]]]((]]] +(]]](((]]] +(]]]((]]]] +]]]]]]]]]] +(]]]]]]]]] +(((((]]]]( +(((((]]]]( +((((]]]](( diff --git a/games/mario/5.i01 b/games/mario/5.i01 new file mode 100755 index 0000000..f364c9b --- /dev/null +++ b/games/mario/5.i01 @@ -0,0 +1,11 @@ + 10 +((]]]]]](( +(]]]]]]((( +(]]((((((( +(]]((((((( +(]]]]]]]]( +((]]]]]]]] +(((((((]]] +]]](((]]]] +]]]]]]]]]( +(]]]]]]](( diff --git a/games/mario/6.i01 b/games/mario/6.i01 new file mode 100755 index 0000000..7a52db7 --- /dev/null +++ b/games/mario/6.i01 @@ -0,0 +1,11 @@ + 10 +((]]]]]](( +]]]]]]]]]( +]]](((]]]( +]]]((((((( +]]]]]]]]]( +]]]]]]]]]] +]]]((((]]] +]]](((]]]] +]]]]]]]]]( +(]]]]]]](( diff --git a/games/mario/7.i01 b/games/mario/7.i01 new file mode 100755 index 0000000..27197cc --- /dev/null +++ b/games/mario/7.i01 @@ -0,0 +1,11 @@ + 10 +(]]]]]]]]( +]]]]]]]]]] +]]]((((]]] +(](((((]]] +((((]]]]]] +((]]]]]]]( +((((((]]]( +(((((]]](( +((((]]]((( +((((]]]((( diff --git a/games/mario/8.i01 b/games/mario/8.i01 new file mode 100755 index 0000000..5ad4835 --- /dev/null +++ b/games/mario/8.i01 @@ -0,0 +1,11 @@ + 10 +((]]]]]](( +(]]]((]]]( +(]]((((]]( +((]]((]](( +(]]]]]]]]( +]]]]((]]]] +]]]((((]]] +]]]]((]]]] +(]]]]]]]]( +((]]]]]](( diff --git a/games/mario/9.i01 b/games/mario/9.i01 new file mode 100755 index 0000000..6e44b1c --- /dev/null +++ b/games/mario/9.i01 @@ -0,0 +1,11 @@ + 10 +(]]]]]]](( +]]]]]]]]]( +]]](((]]]] +]](((((]]] +]]](((]]]] +(]]]]]]]]] +((]]]((]]] +((((((]]]] +((]]]]]]]( +((]]]]]](( diff --git a/games/mario/index.html b/games/mario/index.html new file mode 100755 index 0000000..e344619 --- /dev/null +++ b/games/mario/index.html @@ -0,0 +1,13 @@ + +super mario like game + + + +

super mario like game

+
+
+
Jump around, collect coins and dont touch snails! + +
+ + \ No newline at end of file diff --git a/games/mario/kast.i01 b/games/mario/kast.i01 new file mode 100755 index 0000000..59c5b7b --- /dev/null +++ b/games/mario/kast.i01 @@ -0,0 +1,21 @@ + 20 +(DDDDDDDDDDDDDDDDDD( +D(EEEEEEEEEEEEEEEE(= +DE(EEEEEEEEEEEEEE(>= +DEE@@@@@@@@@@@@@@?>= +DEE@???????????D@?>= +DEE@??CCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@?CCCCCCCCCCD@?>= +DEE@DDDDDDDDDDDD@?>= +DEE@@@@@@@@@@@@@@?>= +DE=??????????????(>= +D(>>>>>>>>>>>>>>>>(= +(==================( diff --git a/games/mario/mario1.i01 b/games/mario/mario1.i01 new file mode 100755 index 0000000..d24dc33 --- /dev/null +++ b/games/mario/mario1.i01 @@ -0,0 +1,21 @@ + 20 +(RRRRRQQQQ(((((((((( +RRQQQQQQQQQ(RRRR(((( +RQQQQQQQQQQRRQQQQ((( +RQQQQQQQQQQQQQQQ(((( +QQQQQQQQQQQQQ((((((( +QQQQQQQQQ(((((((((( +(QQQQQQQ(((((( +((((((( +(((((((( +((((((((((((( +((((((((((((((( +((((((JJJJJ((((((((( +((((((JJJJJJ(((((((( +(((((JJJJJIJ(((((((( +(((((JIIIIJJ(((((((( +((((IIIIIIIJ(((((((( +((((IIIIIIJJJ((((((( +((XXXIII(JJJJXXX(((( +(XXXXXXX((JXXXXXXX(( +((XXXXX((((XXXXXX((( diff --git a/games/mario/mario2.i01 b/games/mario/mario2.i01 new file mode 100755 index 0000000..0a0a944 --- /dev/null +++ b/games/mario/mario2.i01 @@ -0,0 +1,21 @@ + 20 +(RRRRQQQQ((((((((((( +RQQQQQQQQQ(((((((((( +QQQQQQQQQQRRRRR((((( +QQQQQQQQQQQQQQQQ(((( +QQQQQQQQQQQQQQQ((((( +QQQQQQQQ((((((((((( +QQQQQQQ((((((( +((((((( +(((((((( +((((((((((((( +((((((((((((((( +(((((JJJJJ(((((((((( +(((((JJJJJJ((((((((( +((((JJJJJIJ((((((((( +((((JIIIIJJ((((((((( +(((((IIIIIJ((((((((( +(((((IIIII(((((((((( +((((XXXXXXXX(((((((( +(((XXXXXXXXXX((((((( +((((XXXXXXXX(((((((( diff --git a/games/mario/munt.i01 b/games/mario/munt.i01 new file mode 100755 index 0000000..4b3089c --- /dev/null +++ b/games/mario/munt.i01 @@ -0,0 +1,11 @@ + 10 +(((TTTT((( +(TTTSSSSR( +TTSSSSSSSR +TSSS\\SSSR +TSSS\]SSSR +TSSS\]SSSR +TSSS\]SSSR +TSSS\]SSSR +(SRSSSSRR( +(((RRRR((( diff --git a/games/mario/munt1.i01 b/games/mario/munt1.i01 new file mode 100755 index 0000000..6b2db3b --- /dev/null +++ b/games/mario/munt1.i01 @@ -0,0 +1,11 @@ + 10 +(((TTTT((((((((((((( +(TTTSSSSR((FF((((FC( +TTSSSSSSSR(FCC((FC@( +TSSS\\SSSR((CCCFC@(( +TSSS\]SSSR(((CCC@((( +TSSS\]SSSR(((FCC@((( +TSSS\]SSSR((FCC@C@(( +TSSS\]SSSR(FC@((@C@( +(SRSSSSRR((C@((((@@( +(((RRRR((((((((((((( diff --git a/games/mario/munt2.i01 b/games/mario/munt2.i01 new file mode 100755 index 0000000..f064124 --- /dev/null +++ b/games/mario/munt2.i01 @@ -0,0 +1,11 @@ + 10 +((QQQQ(((((((((((((( +(QQQQQQ((((FF((((FC( +((jjjj(((((FCC((FC@( +((jjjj((((((CCCFC@(( +(c(jj(c((((((CCC@((( +c]]]]]]c(((((FCC@((( +((]]]]((((((FCC@C@(( +(]]]]]]((((FC@((@C@( +XX]((]XX(((C@((((@@( +XXX((XXX(((((((((((( diff --git a/games/mario/pilv.i01 b/games/mario/pilv.i01 new file mode 100755 index 0000000..7ec44e0 --- /dev/null +++ b/games/mario/pilv.i01 @@ -0,0 +1,31 @@ + 30 +(((((((((((((((((((((((((\\(\((((((((((((((((((((((((](((((((((]((((]((((]]((((((((((((((((((((((((( +((((((((((((((((((((((((\((((((((\\(((((((((\(((((((((]]((\(((\(((\((]](]](((((((((((((((((((((((((( +((((((((((((((((\((\((\(\]\\((\(\(((((((]((((((((](((\((\]((((\(]\(\(]]]]]]((((((((((((((((((((((((( +(((((((((((((((((((]t\\(]]]\\\](](((\((]((](](((((((]((((\(\]](\((]\(((((\\(](](\]\(((((((((]((((((( +((((((((((t((wt\\\t](tt\(]\\((\(](\\t\t((((]\t(](((\((\]\](\(\]](]]((]\(]](((]`\`\(\\]((((((((((( +(((((t((((((ttttttt(t\\(\\((\(]]]\t((\\]\]((((\(](\((\\(]\(](`\\`]](\]\\]\(t\\\`\\t(t\]((]((((((((( +((((t(tt(t((tttttt]t\\(](\\(t(t\\ttt\]tt]t\\(]\tt]](\((t]\](\t]((t]\t(]`\t(]]tt\\(tt\\]](](((((((( +((((((\(ttt(ttt\tt]tt\\\\t\]\tt\(\t]((\\\tt\((]](\\t]tt(\\\(tt(t\(`]\`]]\\\\\(\`tt``^```(`(((((( +((((tt(tttttttttt\\t]\tt]ttt(]\\\\\t\\t(\\((\\t\]t\\]]`\\\](\`]\\(\\]\`(t\\\t\\tt\\^(``]\(\]((]`(( +(((t\(t\ttt\]ttt\tt]]]\\t]ttt]]t\t\\]ttt\]](tt\(]t\\\]t\t`t\\]\\tt]\^\t]\\\\\tt\\`t\t`^`(\`\]]](( +(((((tt]]t\\twt\\\t\]tt]]t(]\t\tt]\tttt\tt]\((t(\\\t\`]t(\]t\\`\t\\(\\\t\t]^\\t\\\tt\t\\^```(`(](( +((t(](\ttttwttw]t\\tt(^t\(t]\]tt\(\t]t\\t(]]\]ttt\\tttt\]\^]\tt\]``\t`(\tt\`^\\\\\ttt\tt\\`]\\^((\(( +]t(]]]]tt]t\t^t\tt\t(\](tt]\tt]\t\\\\\]t\tt`t\\`^]\]t\]]]tt\`(`(]`\tt\\`\t\t]\\tt\ttt^t\\`\`]``(\](( +(]t]t\\t\\t\^t\^t\](\]]\]]t\(ttttt\]t\t\`\t\t\t\\\\`^t`(t(]]t]t`]]t]\\\^tt\]`\t\\t\\``t\\`\``\]t``\( +(]t(tt\\\\\\\\\]^t]]t^t]tt\t^\\]]]]`t\]\t`]\t^```\^^]`\tt^t]`\`]^^\\\\\\\\]^(`\^`\\\\\\^``\```]`\`(] +(](t^^]\\]\\\]t^\]]^]]\^^\]]t\`\^^``]t`^\\`\\`^`]\^\`t]\^^^`^]\\^^^\\\\\]]\`\^````\\]^`\`^`\```]``]( +]]]]](t]`t]^\]^]]^]^]^^]^^]`\^\]`]\]`\\\\``]`\`t\\`^]```^`]^^^^^]\^^\t\``]`\\``]\\^\^^^\\\```````]]] +((^((]](`]]`]^^`^^]^`]]\]``\\(\(\`]``\```]`^^^````^````t(]`^t]^^t`\\]^^\^\^`^\^``\]\\````^`\`]```(]( +](^]((]\`(``]]]^``^t]^^]]t]``t`]``(`````\``\``\\`\```t`^t^(^^^^^]]t^`(\\^\^`(`^^^`\^```\````\]````]( +]((^^]]`]^]^\`]``t^```````\`^`\`\``\^t```````]`````]^`^]]^^t^(^(^]``^```\\\`^]]]^^^^]``^````t]``]``( +(((^((]``^^`^^``^^^^^^]]t`t````^`^`^`^\^`]````````````^`````^^^`]`]^^^^^((]``^^`^]]^^`````]``^^(t`(] +(]^(^(`(`^]]`]`^^^`]^```^^`````t`\^`^`````````^`(`^t^`t^`^^^(```t(`^]]^^^^```^]`]``]^`(```(^(`tttt(( +^(^(^(((t](((`]]`^`t``t```^``^``````^````(^`(````^^^``^`(```^]``]^(]`^```]````````(]^``]t]`^`](^(`(( +(((tt^(^((((]`^`^```t````^```^^^]``````](`tt``]``^```(^^`]``(``t````t```(``]`^]^t`]^`(`^^^^``tt]`((( +(((((((]^](((``]`(`^`]^^^``]`]]((```(`(^```]((]^`^`````````(`((t``^`````]`^(^^```(`^`](`t]^((^(`(((( +(((((((((]((t(^`(`^``((``(^(``^(((((((((``((^``````^(^`t`(`^t``````^]((^^^`](^```((`]((`(]^`((^](((( +(((((((((((t(^``(`(t^(^(`^(^^^((^(`((^(`]((((](((````^(`((((``((``((``(^`]`(]]]]``]``]````(`(``(`((( +(((((((((((((^(^((((((^^(((^(((^(((^^`((`((]`((((^`((`(^``((```^`((((^(((t`(^`((`^(`(]`^`(((`^(((((( +((((((((((((((((((((^(((^(((((^(((((((((((((((((^(`^^`^(((^((^((``(((`((((`](((((((^(``(((`((((((((( +(((((((((((((((((((^(((((((^((^(((((((((((((((((((((^(`(^^(`((((((^^(^((`((((](`(((((((((((((((((((( diff --git a/games/mario/poosas.i01 b/games/mario/poosas.i01 new file mode 100755 index 0000000..e48b7dc --- /dev/null +++ b/games/mario/poosas.i01 @@ -0,0 +1,21 @@ + 20 +((((((((((((((((((((((((((((((q((((q(q(((((((((((((((((((((( +((((((((((q((q(((q(((qq(((((((qqŠqqqq(((((((qq(((((((((((((( +((((((((((q(q(((q(qq((qq((q((qqq(((q(qq(qq;(qq(q(((((((((((( +(((((((((qq(q(Š(((q(q(q(q((((q2qqq(qqq(q(;((;q(q(((((((((((( +(((((qqq(q(q(((222Šqqq(((Šq(qqqqŠq2qqqq2((;Š((q(((q?q((((((( +((((qq(nq(((q((2(qq2q2q(((nn(Šq(qqq(nqq2n2;(qnq?(;???((((((( +((((((qqqq2q(qqq2Š(22Š(qqq(Šqq2n(2nqq2qqq(nq?q?Š2;;;?((((((( +(((((qn(qqqqŠ(Š(qXn22XŠ(nqŠŠq2(22qq22(22(2?Y??2q;?q;22(((((( +((((q((qq2qqŠqqnq2nXŠXŠqq2ŠŠqqŠqX2q22((qq;(Yq???;;2;;2q((((( +((((((q(22(2q2(((nqqXXŠ(XX2Xq(q2Š22nq22q?qY((?(?qqqq;???(((( +(((q(qq(qqqYYXq((YXXYŠX2Š2ŠX2Šq;?2???2q;;q;X?2???;?;Y;??q((( +(((q(q(q22222YYX2(XX?X2q2?qX2q?YYYn2q;Y;X2???X?;?;;;??;;(((( +(((n(qq(Š2Š22XYqXY?XY;2;???qq?;?Y;?2Y;2;;Y;?XX9X9;;(9;??;((( +((((qnXŠ?YY22ŸŸ???YYqqX?;qXqqq;;???;@;;;;??X;;?X?q;;;9?;(?( +(nnnŠX2?2??YXŸŸX2q?X;2;;?qq;;;q;?;;;;;;;Ÿ;X;9;?X;;@;@;;?99( +qqqnqŠq222ŠXŸŸ?Y(ŸY??;qq?2;?;q?;?;;?@X;;;?Ÿ;9999;9@;;;;;9n?9 +nqnqqn2??Y??(X?YŸŸX?;?;?X?;Xq;;ŸX;nŸ@;Ÿ;;;;Ÿ9;;2;;@;;?;;9((9 +nnqqq2(?Ÿn?nŸŸŸ?ŸY22X;X?q;;;;;qqq;;q;Ÿ;;;q9X;;99;@;;9;;;?? +qnq(qqnqq???ŸŸX(?nŸqX(XXqq2;nqq;;;ŸŸqŸŸ;ŸŸ;Xq;q;9n;;??n?9 +((nn((qŸ(ŸnXnŸ(nŸXnŸn(XqqX2ŸŸ;qŸ(qq;(ŸŸqŸ(99Ÿq?;ŸŸ????? diff --git a/games/mario/puu.i01 b/games/mario/puu.i01 new file mode 100755 index 0000000..5a8ca34 --- /dev/null +++ b/games/mario/puu.i01 @@ -0,0 +1,61 @@ + 60 +(((((((((((((((X(((((X((T((((((((((((((( +(((((((((((((((X((T((X(X(((((((((((((((( +((((((((((((X(((((X(X((((((X(X(((((((((( +(((((((((((((XX((X(((((((((T(((((((((((( +((((((XX((((XX(XTT(X(TXXT(((((X((((((((( +((((((((((((((X((X(TXXTŸŸ(XXXX(((((((((( +((((((X(X((XXX(XXXTTT(XXXTX(X((((((((((( +(((((((XX((X(XX((T((XXXX(T((XXX(X(X((((( +((((X(X((XXXT((XX(XXX(TXXTŸXX(XŸ(X(((((( +((((XXX((((XT(X(XXXTTT(XXŸXŸŸŸŸX((X((((( +(((((X((((XT((XX((XT(XTX((XX(ŸX((((ŸŸ((( +(((X((X(((TX((XXXXTXX(TTŸ(((((ŸXŸ((ŸX((( +((((X(XX((X(XX(X(TX(((TTTŸXŸ(ŸXXŸ((((((( +((((X(XXXXXX((XXTTXX(TXTTT(T(XŸX(Ÿ(XX((( +(((((X(XX(TXXTTT(TXXT(X((X((((XŸ(X(XX((( +((((((X((X(XXXXXT(XXX(TT((T(X(((((((X((( +(((XX((XX(((X(TXXX(TX(TTTTXT(Ÿ(((Ÿ((Ÿ((( +(X(((X(((X(T((X(X(XX(T(XXTX(TŸX((ŸŸX(((( +((XX(X((((((XTX(TTTXTXT(XX((XX(Ÿ(ŸŸ(((X( +((((((XXXX((X(XXTTXT(XXŸTT(T(((XŸ((XX((( +(((XXXX(X(((X(T(TTTTXXXXTX(X(XXXX(X(Ÿ(X( +(((((((((X(XXXXX(XT(X(X((X(XXX(XXX((Ÿ((( +X(((((X((X(X(X((XTT(((((XXŸ(XXXXŸ(Ÿ((XŸ( +(((XXX(XXX((X(((XTXX(T(X((Ÿ(((ŸX(XXXX(X( +(((X(((TTX((TTXTT(XXXT(XŸŸ(XXX((XXŸ((X(Ÿ +((X((((XTX(((X(XX(XTT(XXXX((XX(XXŸ(X((ŸX +(((((TX(((X((T(XTTXXXTXX(XXŸX(X((Ÿ(((((( +((X(X(TXTX(XX((XTTXX(X(XŸXXŸTŸXXXX(Ÿ(Ÿ(( +((((X(X(X((TXTTT(((XŸŸX(XT((XXXXX(Ÿ(((Ÿ( +((((X((X((T((X(TXXXXXXXŸ(TŸX(XXŸŸ((ŸŸ((( +((((X(((TXTXX(XXX(((XXX(ŸXŸŸ(XŸŸ(ŸŸŸŸŸ(( +((XX((XXXX((XX(((XX(XXX(TŸŸŸXŸ(XXXŸŸ(((( +((((((X((XTXXTTTXXXXXXšššŸ(TXTŸ(Ÿ((((X(( +(((X(((XXXTTXTT(T(TX(ŸšŸšXŸŸŸ(X(ŸŸ(X(((( +((X(((((XXT(TTT(X((T(šXšXXTŸŸŸ(ŸŸŸ(((((( +(X(XXXX(X((X((TXTT(TTŸšXXŸŸŸXX(X(Ÿ(XX((( +((((X(((XXXXTXXX(((TŸšŸXXŸXŸXŸXŸ(ŸX((((( +(((((((XX(XXX(XXTX((ŸšššTŸŸ(ŸTXX(TX(Ÿ((( +(((((XXXXXXX((X(X(ŸŸŸšššŸXŸŸŸXT(X((X(((( +(((X(((XXXXX(XT(TT(XŸšššXŸŸŸTTŸXŸ((((Ÿ(( +((((((XX(XX((X(XTXŸŸšššX((XXXXTX(((Ÿ(((( +(((((X(XXXXXXXXXŸ(Ÿ(ŸšXš(XŸXTXX((X(((((( +(((((((X(XŸX(XX((TŸŸŸXXŸŸ(XXŸXXXX(((((Ÿ( +((((((XX(XX((XXTX(X(šššŸX(XXXX(XXX(X(((( +((((((((((XXXŸXššŸ(šššXŸ(X(TXXX((X(((((( +((((((((((X(ŸX(šŸšXŸššXX(X(XXX(X(((((((( +(((((((((XXX(XŸššŸXŸšXXŸŸX(((X(((((Ÿ(((( +(((((((((((X((XššŸŸŸŸšXXX(X(ŸX(ŸŸ((((((( +((((((((((XXXŸ(ššŸŸŸŸŸXŸŸ(X(((Ÿ(ŸŸ(((((( +(((((((((((((XXX(ššŸššXX(((((X(((((((((( +(((((((((((Ÿ(X((TšŸšXXŸŸ((((X(Ÿ((((((((( +((((((((((X(((XX(ššXššŸŸ(((((((((((((((( +((((((((((((((((ŸXšXXšX(Ÿ(((((Ÿ((((((((( +((((((((((((((X(XXšŸŸŸ((Ÿ((((((((((((((( +(((((((((((Ÿ(((XX(šššš(Ÿ(((((((((((((((( +((((((((((((((((((ššššX(((Ÿ((((((((((((( +((((((((((((((Ÿ(((šššš(((((((((((((((((( +((((((((((((((((((šššš(((((((((((((((((( +(((((((((((((((Ÿ((šššš(((((((((((((((((( +((((((((((((((((((ššš((((((((((((((((((( diff --git a/games/mario/smario.bas b/games/mario/smario.bas new file mode 100755 index 0000000..fc1e3bd --- /dev/null +++ b/games/mario/smario.bas @@ -0,0 +1,609 @@ +' Super Mario style game +' by Svjatoslav Agejenko 1999 +' E-mail: svjatoslavagejenko@gmail.com + +DECLARE SUB CL () +DECLARE SUB esc () +DECLARE SUB aargh () +DECLARE SUB die () + + +DECLARE SUB dead () +DEFINT A-Z +DECLARE SUB level1 () +DECLARE SUB nait (zaz%) +DECLARE SUB wiew1 (a1%, b1%, c1%, d1%, a$) +DECLARE SUB level () +DECLARE SUB save (a$) +DECLARE SUB picedit () +DECLARE SUB wiew (a1%, b1%, c1%, d1%, a$) +DECLARE SUB intro () +DECLARE SUB inpur () +DECLARE SUB mousedriver (AX%, bx%, cx%, dx%, lb%, rb%, EX%) +DECLARE SUB tahed () + +DIM SHARED sj$ +DIM SHARED ekraan +DIM SHARED text$(1 TO 500) +DIM SHARED pikkus + + +DIM SHARED ruum(-5 TO 20, -5 TO 20) AS STRING +DIM SHARED ruum1(-5 TO 20, -5 TO 20) AS STRING +DIM SHARED maa(1 TO 11, 1 TO 10) AS STRING * 15 +DIM SHARED maa1(1 TO 10) AS INTEGER +DIM SHARED maailm AS INTEGER +DIM SHARED maailm1 AS INTEGER +DIM SHARED text5(1 TO 15) AS STRING * 15 +DIM SHARED pilv(2100) +DIM SHARED kast(202) +DIM SHARED tellis(202) +DIM SHARED poosas(1000) +DIM SHARED puu(2000) +DIM SHARED tuhi(202) +DIM SHARED munt(202) +DIM SHARED munt1(400) +DIM SHARED munt2(200) +DIM SHARED mari0(402) +DIM SHARED mari(202, 1 TO 5) +DIM SHARED koll(1 TO 230, 1 TO 10) +DIM SHARED koll1(1 TO 202, 1 TO 5) +DIM SHARED kolla(1 TO 10) +DIM SHARED kollb(1 TO 10) +DIM SHARED kollal(1 TO 10) +DIM SHARED kolled(1 TO 10) + +DIM SHARED rahaz(1 TO 5) +DIM SHARED number(100, 0 TO 11) +DIM SHARED elud + +DIM SHARED raha +DIM SHARED clra, clrb +DIM SHARED a1, b1 + +DIM SHARED prog +prog = 1 +SCREEN 13 +maailm = 1 +maailm1 = 1 +level1 +1 +ekraan = 13: zpqf = 4 + +FOR a = 0 TO 254 +OUT &H3C8, a +OUT &H3C9, 0 +OUT &H3C9, 0 +OUT &H3C9, 0 +NEXT a +OUT &H3C8, 255 +OUT &H3C9, 60 +OUT &H3C9, 60 +OUT &H3C9, 60 +LOCATE 20, 3 +COLOR 255 +PRINT "LOADING " + + +CL +wiew 0, 0, 1, 1, "pilv" +GET (1, 1)-(109, 35), pilv +CL +wiew 0, 0, 1, 1, "kast" +GET (1, 2)-(20, 21), kast +CL +wiew 0, 0, 1, 1, "tellis" +GET (1, 2)-(20, 21), tellis +CL +GET (1, 2)-(20, 21), tuhi +wiew 0, 0, 1, 1, "mario1" +GET (1, 2)-(20, 21), mari(202, 1) +CL +wiew1 0, 0, 1, 1, "mario1" +GET (3, 2)-(22, 21), mari(202, 2) +CL +wiew 0, 0, 1, 1, "mario2" +GET (1, 2)-(20, 21), mari(202, 3) +CL +wiew1 0, 0, 1, 1, "mario2" +GET (3, 2)-(22, 21), mari(202, 4) +CL +wiew 0, 0, 1, 1, "poosas" +GET (1, 1)-(60, 21), poosas +CL +wiew 0, 0, 1, 1, "puu" +GET (1, 1)-(40, 60), puu +CL +wiew 0, 0, 1, 1, "munt" +GET (1, 1)-(10, 11), munt +CL +wiew 0, 0, 1, 1, "munt1" +GET (0, 2)-(20, 11), munt1 +CL +wiew 0, 0, 1, 1, "munt2" +GET (0, 2)-(20, 11), munt2 + +CL +wiew 0, 0, 1, 1, "0" +GET (0, 2)-(10, 11), number(100, 0) +CL +wiew 0, 0, 1, 1, "1" +GET (0, 2)-(10, 11), number(100, 1) +CL +wiew 0, 0, 1, 1, "2" +GET (0, 2)-(10, 11), number(100, 2) +CL +wiew 0, 0, 1, 1, "3" +GET (0, 2)-(10, 11), number(100, 3) +CL +wiew 0, 0, 1, 1, "4" +GET (0, 2)-(10, 11), number(100, 4) +CL +wiew 0, 0, 1, 1, "5" +GET (0, 2)-(10, 11), number(100, 5) +CL +wiew 0, 0, 1, 1, "6" +GET (0, 2)-(10, 11), number(100, 6) +CL +wiew 0, 0, 1, 1, "7" +GET (0, 2)-(10, 11), number(100, 7) +CL +wiew 0, 0, 1, 1, "8" +GET (0, 2)-(10, 11), number(100, 8) +CL +GET (0, 2)-(10, 11), number(100, 10) +wiew 0, 0, 1, 1, "9" +GET (0, 2)-(10, 11), number(100, 9) + +CL +wiew 0, 0, 1, 1, "tigu" +GET (1, 2)-(20, 21), koll1(202, 1) +CL +wiew 0, 0, 1, 1, "tigu1" +GET (3, 2)-(22, 21), koll1(202, 2) +CL +wiew1 0, 0, 1, 1, "tigu" +GET (1, 2)-(20, 21), koll1(202, 3) +CL +wiew1 0, 0, 1, 1, "tigu1" +GET (3, 2)-(22, 21), koll1(202, 4) + +SCREEN 0 +SCREEN 13 +level +a1 = 50 +b1 = 50 +edasi = 0 +liig = 1 +ov1 = 1 +ov2 = 2 +raha = 0 +elud = 3 +z = 1 +nait 0 +12 +IF b1 > 0 THEN GET (a1, b1)-(a1 + 20, b1 + 20), mari0: PUT (a1, b1), mari(202, liig), OR + +FOR ox = 1 TO 10 +IF kollb(ox) < 170 AND z = 1 THEN + kollb(ox) = kollb(ox) + kollal(ox) + kolla(ox) = kolla(ox) + kolled(ox) + GET (kolla(ox), kollb(ox))-(kolla(ox) + 20, kollb(ox) + 20), koll(202, ox) + IF kolled(ox) <= 0 THEN kolll = 1 ELSE kolll = 3 + IF zz > 2 THEN kolll = kolll + 1: IF zz = 3 THEN kollal(ox) = kollal(ox) + 1 + PUT (kolla(ox), kollb(ox)), koll1(202, kolll) +END IF +NEXT ox +SOUND 0, .5 +z = z + 1 +IF z > 3 THEN z = 1 +IF z = 1 THEN +zz = zz + 1 +IF zz > 5 THEN zz = 0 +alla = alla + 1 +IF edasi > 0 THEN edasi = edasi - 1: zy = zy + 1 +IF edasi < 0 THEN edasi = edasi + 1: zy = zy + 1 +IF zy > 2 THEN zy = 1 +IF zy = 2 THEN ov1 = 1: ov2 = 2 +IF zy = 1 THEN ov1 = 3: ov2 = 4 + +FOR ox = 1 TO 10 +IF kollb(ox) < 170 THEN +IF ruum((kolla(ox) + 20) / 20, (kollb(ox) + 9) / 20) = "m" THEN kollal(ox) = -1 +IF kolla(ox) > 270 THEN kolled(ox) = -1 +IF kolla(ox) < 2 THEN kolled(ox) = 1 +IF ruum((kolla(ox) + 28) / 20, kollb(ox) / 20) = "m" THEN kolled(ox) = -1 +IF ruum((kolla(ox) + 10) / 20, kollb(ox) / 20) = "m" THEN kolled(ox) = 1 +IF kolla(ox) - 20 < a1 AND kolla(ox) + 20 > a1 AND kollb(ox) - 5 < b1 AND kollb(ox) + 20 > b1 THEN aargh: dead: GOTO 12 +END IF +NEXT ox +END IF + +IF ruum((a1 + 15) / 20, (b1 + 9) / 20) = "m" THEN alla = -1: ao = 0 +IF ruum((a1 + 25) / 20, (b1 + 9) / 20) = "m" THEN alla = -1: ao = 0 +IF ruum((a1 + 20) / 20, (b1 - 8) / 20) = "m" THEN alla = 1: ao = 20 +IF ruum((a1 + 28) / 20, (b1) / 20) = "m" THEN edasi = -1: qa = 1 +IF ruum((a1 + 10) / 20, (b1) / 20) = "m" THEN edasi = 1: qa = 1 + +IF ruum1((a1 + 20) / 20, (b1 - 8) / 20) = "o" THEN alla = 1: ruum1((a1 + 20) / 20, (b1 - 8) / 20) = "": ruum((a1 + 20) / 20, (b1 - 8) / 20) = "2": clra = ((a1 + 20) / 20) - 1: clrb = (b1 - 8) / 20: clr = 1: SOUND 50, .5 +IF ruum((a1 + 20) / 20, (b1) / 20) = "1" THEN ruum((a1 + 20) / 20, (b1) / 20) = "2": clra = ((a1 + 21) / 20) - 1: clrb = (b1) / 20: clr = 1: raha = raha + 1: nait 1: SOUND 1000, 1: SOUND 2000, 1 +ao = ao + 1 +a$ = INKEY$ +IF a$ = CHR$(0) + "H" AND ao < 10 THEN alla = -6 +IF a$ = CHR$(0) + "M" AND qa = 0 THEN edasi = edasi + 3: liig = ov1 +IF a$ = CHR$(0) + "K" AND qa = 0 THEN edasi = edasi - 3: liig = ov2 +IF a$ = CHR$(27) THEN esc +IF a$ = "+" AND qa = 0 THEN maailm = maailm + 1: level: GOTO 12 +IF qa <> 0 THEN qa = 0 +IF edasi > 5 THEN edasi = 3 +IF edasi < -5 THEN edasi = -3 +IF alla > 3 THEN alla = 3 + +IF b1 > 0 THEN PUT (a1, b1), mari0, PSET + +IF z = 1 THEN +FOR ox = 10 TO 1 STEP -1 +IF kollb(ox) < 170 THEN PUT (kolla(ox), kollb(ox)), koll(202, ox), PSET +NEXT ox +END IF + + +b1 = b1 + alla +a1 = a1 + edasi +IF clr > 0 THEN clr = 0: PUT (clra * 20, clrb * 20), tuhi, PSET +IF a1 > 280 THEN maailm = maailm + 1: level: a1 = 3 +IF a1 < 2 THEN maailm = maailm - 1: level: a1 = 279 +IF b1 > 170 THEN FOR a = 3000 TO 500 STEP -100: SOUND a, .3: NEXT a: dead +GOTO 12 + +SUB aargh +a = 1700 +b = 1900 +FOR c = 1 TO 50 +a = a + 3 +b = b - 5 +SOUND a, .2 +SOUND b, .2 +NEXT c +END SUB + +SUB CL +LINE (0, 0)-(319, 150), 0, BF +LOCATE 20, 10 + prog +prog = prog + 1 +PRINT "." +END SUB + +SUB dead +IF maailm > 1 THEN maailm = maailm - 1 + +level +a1 = 20 +b1 = 100 +elud = elud - 1 +nait 0 +END SUB + +SUB die +DIM diep(1 TO 2000) +GET (0, 0)-(150, 20), diep +LOCATE 1, 1 +PRINT "You are " +LOCATE 2, 1 +PRINT " killed! " + +FOR x = 0 TO 80 +FOR y = 0 TO 16 +IF POINT(x, y) > 0 THEN LINE (x * 5, y * 5 + 50)-(x * 5 + 4, y * 5 + 54), 4, BF +NEXT y +NEXT x +PUT (0, 0), diep, PSET + +FOR a = 1 TO 100 +x = RND * 290 + 4 +y = RND * 170 + 4 +GET (x, y)-(x + 20, y + 20), diep +x = x + RND * 4 - 2 +y = y + RND * 4 - 1 +PUT (x, y), diep, PSET +NEXT a +FOR a = 1 TO 50 +a$ = INKEY$ +NEXT a +a$ = INPUT$(1) + +FOR a = 0 TO 100 +SOUND 0, .05 +LINE (0, a)-(320, a), 4 +LINE (0, 200 - a)-(320, 200 - a), 4 +NEXT a +FOR a = 32 TO 0 STEP -1 +SOUND 0, .5 +OUT &H3C8, 4 +OUT &H3C9, a +OUT &H3C9, 0 +OUT &H3C9, 0 +NEXT a +END + +END SUB + +SUB esc +FOR b = 0 TO 20 +FOR a = b TO 200 STEP 20 +LINE (0, a)-(320, a), 0 +NEXT a +SOUND 0, .5 +NEXT b +SYSTEM + +END SUB + +SUB inpur +sj$ = "" +WHILE sj$ = "" +sj$ = INKEY$ +WEND +END SUB + +SUB intro +CLS +wiew 2, 2, 10, 1, "win.i01" +END SUB + +SUB level +IF maailm > 10 THEN +CLS +PRINT "Mission complete!" +PRINT "Game over" +END +END IF + +FOR a = 1 TO 10 +text5(a + 1) = maa(a, maailm) +NEXT a + +FOR a = 1 TO 10 +FOR b = 1 TO 15 +IF ruum(b, a - 2) = "2" THEN MID$(maa(a, maailm1), b) = " " +NEXT b +NEXT a +maailm1 = maailm + +FOR a = -3 TO 20 +FOR b = -3 TO 20 +ruum(a, b) = "" +ruum1(a, b) = "" +NEXT b +NEXT a + +FOR a = 1 TO 10 +kollb(a) = 1000 +kolled(a) = 1 +kollal(a) = 0 +NEXT a + +CLS +PAINT (1, 1), maa1(maailm) +GET (1, 2)-(20, 21), tuhi +FOR a = 2 TO 10 +FOR b = 1 TO 15 +c$ = RIGHT$(LEFT$(text5(a), b), 1) +IF c$ = "-" THEN PUT ((b - 1) * 20, (a - 2) * 20), pilv, OR +IF c$ = "." THEN PUT ((b - 1) * 20, (a - 2) * 20), poosas, OR +IF c$ = "+" THEN PUT ((b - 1) * 20, (a - 2) * 20), puu, OR +IF c$ = "$" THEN PUT ((b - 1) * 20, (a - 2) * 20), munt, OR: ruum(b, a - 2) = "1" +IF c$ = "m" THEN PUT ((b - 1) * 20, (a - 2) * 20), kast, PSET: ruum(b, a - 2) = "m" +IF c$ = "o" THEN PUT ((b - 1) * 20, (a - 2) * 20), tellis, PSET: ruum(b, a - 2) = "m": ruum1(b, a - 2) = "o" +IF c$ = " " THEN ruum(b, a) = " " + +IF c$ = "1" THEN kolla(1) = (b - 1) * 20: kollb(1) = (a - 2) * 20: GET (kolla(1), kollb(1))-(kolla(1) + 20, kollb(1) + 20), koll(202, 1) +IF c$ = "2" THEN kolla(2) = (b - 1) * 20: kollb(2) = (a - 2) * 20: GET (kolla(2), kollb(2))-(kolla(2) + 20, kollb(2) + 20), koll(202, 2) +IF c$ = "3" THEN kolla(3) = (b - 1) * 20: kollb(3) = (a - 2) * 20: GET (kolla(3), kollb(3))-(kolla(3) + 20, kollb(3) + 20), koll(202, 3) +IF c$ = "4" THEN kolla(4) = (b - 1) * 20: kollb(4) = (a - 2) * 20: GET (kolla(4), kollb(4))-(kolla(4) + 20, kollb(4) + 20), koll(202, 4) +IF c$ = "5" THEN kolla(5) = (b - 1) * 20: kollb(5) = (a - 2) * 20: GET (kolla(5), kollb(5))-(kolla(5) + 20, kollb(5) + 20), koll(202, 5) +IF c$ = "6" THEN kolla(6) = (b - 1) * 20: kollb(6) = (a - 2) * 20: GET (kolla(6), kollb(6))-(kolla(6) + 20, kollb(6) + 20), koll(202, 6) +IF c$ = "7" THEN kolla(7) = (b - 1) * 20: kollb(7) = (a - 2) * 20: GET (kolla(7), kollb(7))-(kolla(7) + 20, kollb(7) + 20), koll(202, 7) +IF c$ = "8" THEN kolla(8) = (b - 1) * 20: kollb(8) = (a - 2) * 20: GET (kolla(8), kollb(8))-(kolla(8) + 20, kollb(8) + 20), koll(202, 8) +IF c$ = "9" THEN kolla(9) = (b - 1) * 20: kollb(9) = (a - 2) * 20: GET (kolla(9), kollb(9))-(kolla(9) + 20, kollb(9) + 20), koll(202, 9) +IF c$ = "0" THEN kolla(10) = (b - 1) * 20: kollb(10) = (a - 2) * 20: GET (kolla(10), kollb(10))-(kolla(10) + 20, kollb(10) + 20), koll(202, 10) +NEXT b +NEXT a +nait 0 +END SUB + +SUB level1 +maa1(1) = 1 +maa(1, 1) = "m " +maa(2, 1) = "m - - " +maa(3, 1) = "m " +maa(4, 1) = "m $ $ $ $ " +maa(5, 1) = "m $ $ $ $ " +maa(6, 1) = "m + momom " +maa(7, 1) = "m " +maa(8, 1) = "m . . " +maa(9, 1) = "mmmmmmmmmmmmmmm" + +maa1(2) = 1 +maa(1, 2) = " $2- " +maa(2, 2) = " o$ " +maa(3, 2) = " o$ - " +maa(4, 2) = " o$ 3 " +maa(5, 2) = " o o1 " +maa(6, 2) = " + mmom" +maa(7, 2) = " omom m " +maa(8, 2) = " $ $ $ $ m " +maa(9, 2) = "mmmm mm" + +maa1(3) = 1 +maa(1, 3) = " mmmmm" +maa(2, 3) = "- $ $ mmmmm" +maa(3, 3) = " $ $ $ mmmmm" +maa(4, 3) = " $ $ mmmmm" +maa(5, 3) = " . mmmmm" +maa(6, 3) = "mmmm 1 mmmm" +maa(7, 3) = " mm m" +maa(8, 3) = " mmm " +maa(9, 3) = "mmm mmmmm" + +maa1(4) = 0 +maa(1, 4) = "mmmmmmmmmmmmmmm" +maa(2, 4) = "m$ $ $ $ $ " +maa(3, 4) = "mm $m $4$ $ $ " +maa(4, 4) = "m$m mmmmmommmm" +maa(5, 4) = "m$ 3 2 m" +maa(6, 4) = "m1 ooooooomo m" +maa(7, 4) = "mooo$$$$$$$m m" +maa(8, 4) = " m" +maa(9, 4) = "mmmmmmmmmmmmmmm" + +maa1(5) = 0 +maa(1, 5) = "mmmmmmmmmmmmmmm" +maa(2, 5) = " m " +maa(3, 5) = "m m 1 3 mmmm" +maa(4, 5) = "m m mmm o m" +maa(5, 5) = "m m4567892o m" +maa(6, 5) = "m mooooommo m" +maa(7, 5) = "m mm" +maa(8, 5) = "m mmm" +maa(9, 5) = "mmmm mmm mmmm" + +maa1(6) = 1 +maa(1, 6) = "m " +maa(2, 6) = " - $ - " +maa(3, 6) = "m $ $ " +maa(4, 6) = "m o o $ " +maa(5, 6) = "m o o " +maa(6, 6) = "m + " +maa(7, 6) = "m " +maa(8, 6) = "mm 1 m 2 m " +maa(9, 6) = "mmmmmmmmmmmmmmm" + +maa1(7) = 1 +maa(1, 7) = " - " +maa(2, 7) = " - " +maa(3, 7) = " 1m" +maa(4, 7) = " 2mm" +maa(5, 7) = " 3mmm" +maa(6, 7) = " o + 4mmmm" +maa(7, 7) = " ooo 5mmmmm" +maa(8, 7) = " 6mmmmmm" +maa(9, 7) = "mmmmmmmmmmmmmmm" + +maa1(8) = 1 +maa(1, 8) = " mmmmmmmmmmmmm" +maa(2, 8) = " m123m456m789 " +maa(3, 8) = " mm$mmm$mmm$mm" +maa(4, 8) = " mm$$$$$$$$$$m" +maa(5, 8) = " mmom$mmm$mmmm" +maa(6, 8) = " o$$$$$$$$$ o" +maa(7, 8) = " omooooooo o" +maa(8, 8) = " - m " +maa(9, 8) = "mmmmmmmmmmmmmmm" + +maa1(9) = 0 +maa(1, 9) = " 12345" +maa(2, 9) = " 6789 " +maa(3, 9) = " mm" +maa(4, 9) = " m " +maa(5, 9) = " m " +maa(6, 9) = " m " +maa(7, 9) = " m " +maa(8, 9) = " m " +maa(9, 9) = "mm " + +maa1(10) = 1 +maa(1, 10) = "m " +maa(2, 10) = " - " +maa(3, 10) = "m - " +maa(4, 10) = "m + " +maa(5, 10) = "m " +maa(6, 10) = "m + 2 " +maa(7, 10) = "m mmm " +maa(8, 10) = "m . 1 " +maa(9, 10) = "mmmmmmmmmmm mm" +END SUB + +SUB load (a$) +OPEN a$ FOR INPUT AS #2 +INPUT #2, pikkus +FOR a = 1 TO pikkus +LINE INPUT #2, text$(a) +NEXT a +CLOSE +END SUB + +SUB nait (zaz) +IF elud < 0 THEN die +PUT (0, 180), munt1, PSET +rahaz(1) = rahaz(1) + zaz +FOR b = 1 TO 3 +IF rahaz(1) > 9 THEN rahaz(1) = rahaz(1) - 10: rahaz(2) = rahaz(2) + 1 +IF rahaz(2) > 9 THEN rahaz(1) = 0: rahaz(2) = 0: elud = elud + 1 +NEXT b +LOCATE 1, 1 +r = 3 +FOR a = 1 TO 2 +r = r - 1 +PUT ((a * 11) + 10, 180), number(100, rahaz(r)), PSET +NEXT a +IF elud > 10 THEN elud = 10 +PUT (43, 180), number(100, 10), PSET +PUT (53, 180), munt2, PSET +PUT (73, 180), number(100, elud), PSET +END SUB + +SUB save (a$) +OPEN a$ FOR OUTPUT AS #2 +PRINT #2, pikkus +FOR a = 1 TO pikkus +PRINT #2, text$(a) +NEXT a +CLOSE +END SUB + +DEFSNG A-Z +SUB tahed +CLS +t = 13 +FOR a = 1 TO 80 STEP 8 +FOR b = 1 TO 20 +t = t + 1 +LOCATE b, a +PRINT CHR$(t); t +NEXT b +NEXT a + +END SUB + +DEFINT A-Z +SUB wiew (a1, b1, c1, d1, a$) +laius1 = c1 - a1 +pikkus1 = d1 - b1 +OPEN a$ + ".i01" FOR INPUT AS #1 +INPUT #1, pikkus +FOR a = 1 TO pikkus +LINE INPUT #1, z$ +FOR b = 1 TO LEN(z$) +LINE (a1 + (b * c1), (b1 + (a * d1)) + 1)-(a1 + ((b + 1) * c1) - 1, b1 + ((a + 1) * d1)), ASC(RIGHT$(LEFT$(z$, b), 1)) - 40, BF +NEXT b +NEXT a +CLOSE +END SUB + +SUB wiew1 (a1, b1, c1, d1, a$) +a1 = a1 * 8 +b1 = b1 * 8 +laius1 = c1 - a1 +pikkus1 = d1 - b1 +OPEN a$ + ".i01" FOR INPUT AS #1 +INPUT #1, pikkus +FOR a = 1 TO pikkus +LINE INPUT #1, z$ +FOR b = LEN(z$) TO 1 STEP -1 +LINE (a1 + (b * c1), (b1 + (a * d1)) + 1)-(a1 + ((b + 1) * c1), b1 + ((a + 1) * d1)), ASC(LEFT$(RIGHT$(z$, b), 1)) - 40, BF +NEXT b +NEXT a +CLOSE +END SUB + diff --git a/games/mario/sshot.png b/games/mario/sshot.png new file mode 100755 index 0000000..b0f541e Binary files /dev/null and b/games/mario/sshot.png differ diff --git a/games/mario/tellis.i01 b/games/mario/tellis.i01 new file mode 100755 index 0000000..f4f610b --- /dev/null +++ b/games/mario/tellis.i01 @@ -0,0 +1,21 @@ + 20 +00000000000000000000 +0@@//@/////////////0 +0@//////////@//////0 +0//@///////////////0 +0@//@//////////////0 +00000000000000000000 +/////////00@/@/@//// +/@///////00@//////// +@@///////00//@////// +@////////00///////// +00000000000000000000 +0@@////////////////0 +0/////@///@////////0 +0@///////////@/////0 +0//@/////////@@////0 +00000000000000000000 +/////////00@@/////// +/////////00@//////// +/////////00///////// +/////////00///////// diff --git a/games/mario/tigu.i01 b/games/mario/tigu.i01 new file mode 100755 index 0000000..d424018 --- /dev/null +++ b/games/mario/tigu.i01 @@ -0,0 +1,21 @@ + 20 +(((((((((((((((((((( +(((((((((((((((((((( +<((((((((((((((((((( +?((((((((<(((((((((( +??((((((??(((((((((( +(?(((((??((((((((((( +(??((???(((((((((((( +((????(((((((((((((( +(((??((((((((((((((( +((<<<((((((((((((((( +< 0 THEN GET (a, b)-(a + 20, b + 20), mar1 +IF b > 0 THEN IF sipp = 1 THEN PUT (a, b), sipp1, OR +IF b > 0 THEN IF sipp = 2 THEN PUT (a, b), sipp2, OR +IF b > 0 THEN IF sipp = 10 THEN PUT (a, b), sipp10, OR +IF b > 0 THEN IF sipp = 20 THEN PUT (a, b), sipp20, OR +IF b > 0 THEN IF sipp = 3 THEN PUT (a, b), sipp3, OR + +GET (siia, siib)-(siia + 10, siib + 10), siil1 +PUT (siia, siib), siil, OR +GET (siia1, siib1)-(siia1 + 10, siib1 + 10), siil2 +PUT (siia1, siib1), siil, OR +SOUND 0, .8 +IF asend((a + 38) \ 20, (b + 37) \ 20) = "z" THEN eda = -1: r = 9: lke = 0 +IF asend((a + 38) \ 20, (b + 22) \ 20) = "z" THEN eda = -1: r = 9: lke = 0 + +IF asend((a + 21) \ 20, (b + 22) \ 20) = "z" THEN eda = 1: r = 9: lke = 0 +IF asend((a + 21) \ 20, (b + 37) \ 20) = "z" THEN eda = 1: r = 9: lke = 0 + +IF asend((a + 22) \ 20, (b + 21) \ 20) = "z" THEN all = 0: cd = 10: lke = 0 +IF asend((a + 37) \ 20, (b + 21) \ 20) = "z" THEN all = 0: cd = 10: lke = 0 + +IF asend((a + 22) \ 20, (b + 38) \ 20) = "z" THEN all = -1: r1 = 2: lk = 1: lke = 0 +IF asend((a + 37) \ 20, (b + 38) \ 20) = "z" THEN all = -1: r1 = 2: lk = 1: lke = 0 + +qwer = qwer + 1: IF asend1((a + 30) \ 20, (b + 30) \ 20) = "q" AND qwer > 20 THEN qwer = 1: elu = elu - 1: eda = -10: all = -5: elud +IF qwer > 100 THEN qwer = 50 + IF asend((a + 30) \ 20, (b + 30) \ 20) = "1" THEN raha = raha + 1: kustuta1 = 1: elud: asend((a + 30) \ 20, (b + 30) \ 20) = "" +IF asend((a + 30) \ 20, (b + 30) \ 20) = "v" THEN all = -8: sipp = 3 +IF asend1((a + 30) \ 20, (b + 38) \ 20) = ">" THEN eda = 3 +IF asend1((a + 30) \ 20, (b + 38) \ 20) = "<" THEN eda = -3 +lke = lke + 1 +r = r + 1: IF r > 10 THEN r = 0: IF eda > 0 THEN eda = eda - 1: ELSE IF eda < 0 THEN eda = eda + 1 +r1 = r1 + 1: IF r1 > 3 THEN r1 = 0: all = all + 1 +lk = lk + 1: cd = cd - 1 +IF asend1((a + 30) \ 20, (b + 21) \ 20) = "o" THEN asend((a + 30) \ 20, (b + 21) \ 20) = "": asend1((a + 30) \ 20, (b + 21) \ 20) = "": kustuta = 1 +IF asend1((a + 30) \ 20, (b + 38) \ 20) = "a" THEN asend((a + 30) \ 20, (b + 38) \ 20) = "": asend1((a + 30) \ 20, (b + 38) \ 20) = "": kustuta2 = 1 +IF asend((siia + 25) \ 20, (siib + 25) \ 20) = "z" THEN siiall = -1 +IF asend((siia + 30) \ 20, (siib + 10) \ 20) = "z" THEN siie = -1 +IF asend((siia + 20) \ 20, (siib + 10) \ 20) = "z" THEN siie = 1 +IF asend((siia1 + 25) \ 20, (siib1 + 25) \ 20) = "z" THEN siiall1 = -1 +IF asend((siia1 + 30) \ 20, (siib1 + 10) \ 20) = "z" THEN siie1 = -1 +IF asend((siia1 + 20) \ 20, (siib1 + 10) \ 20) = "z" THEN siie1 = 1 +IF siia > 300 THEN siie = -1 +IF siia < 3 THEN siie = 1 +IF siia1 > 300 THEN siie1 = -1 +IF siia1 < 3 THEN siie1 = 1 +PUT (siia1, siib1), siil2, PSET +PUT (siia, siib), siil1, PSET +IF b > 0 THEN PUT (a, b), mar1, PSET +IF kustuta = 1 THEN kustuta = 0: PUT (((a + 10) \ 20) * 20, (b \ 20) * 20), tuhi, PSET +IF kustuta1 = 1 THEN kustuta1 = 0: PUT (((a + 10) \ 20) * 20, ((b + 10) \ 20) * 20), tuhi, PSET +IF kustuta2 = 1 THEN kustuta2 = 0: PUT (((a + 10) \ 20) * 20, ((b + 28) \ 20) * 20), tuhi, PSET +IF makk = 1 THEN makk = 0: a = a - 20 +asend1((siia1 + 25) \ 20, (siib1 + 8) \ 20) = "": asend1((siia + 25) \ 20, (siib + 8) \ 20) = "" +siia = siia + siie +siib = siib + siiall +siia1 = siia1 + siie1 +siib1 = siib1 + siiall1 +asend1((siia1 + 25) \ 20, (siib1 + 8) \ 20) = "q": asend1((siia + 25) \ 20, (siib + 8) \ 20) = "q" +siiall = siiall + 1: IF siiall > 2 THEN siiall = 2 +siiall1 = siiall1 + 1: IF siiall1 > 2 THEN siiall1 = 2 +a = a + eda +b = b + all +IF a > 297 THEN a = 2: maa = maa + 1: level maa: siie = 1: siie1 = 1 +IF a < 1 THEN a = 296: IF maa = 1 THEN level maa: ELSE maa = maa - 1: level maa: IF voolual = 2 THEN a = 594 +IF b > 179 THEN elu = elu - 1: elud: maa = maa - 1: level maa: b = 100: a = 2: elud +IF asend((a + 30) \ 20, (b + 30) \ 20) = "u" THEN a = uks3 + 10: b = uks4: eda = 0 +IF asend((a + 30) \ 20, (b + 30) \ 20) = "U" THEN a = uks1 + 10: b = uks2: eda = 0 +WEND +a$ = kbd$: kbd$ = "" +IF a$ = par7$ THEN eda = eda + 1: IF eda > 3 THEN eda = 3: r = 0 ELSE IF lke > 10 THEN eda = 5 +IF a$ = par7$ THEN IF sipa = 1 THEN sipp = 1: ELSE sipp = 2 +IF a$ = vas7$ THEN IF sipa = 1 THEN sipp = 10: ELSE sipp = 20 +IF a$ = vas7$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5 +IF a$ = ule7$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3 +IF a$ = all7$ THEN all = all + 1 +IF a$ = "/" THEN a = 2: b = 50: maa = maa + 1: level maa: siie = 1: siie1 = 1 +IF a$ = "+" THEN a = 2: b = 50: maa = maa + 5: level maa: siie = 1: siie1 = 1 +IF a$ = "q" THEN END +sipa = sipa + 1 +IF sipa = 3 THEN sipa = 1 +GOTO 6 + + +106 +WHILE kbd$ = "" +kbd$ = INKEY$ +IF voolual = 1 THEN b = b / 2: GOTO 6 +IF b > 0 THEN GET (a \ 2, b \ 2)-((a + 20) \ 2, (b + 20) \ 2), marm1 +IF b > 0 THEN IF sipp = 1 THEN PUT (a \ 2, b \ 2), sippm1, OR +IF b > 0 THEN IF sipp = 2 THEN PUT (a \ 2, b \ 2), sippm2, OR +IF b > 0 THEN IF sipp = 10 THEN PUT (a \ 2, b \ 2), sippm10, OR +IF b > 0 THEN IF sipp = 20 THEN PUT (a \ 2, b \ 2), sippm20, OR +IF b > 0 THEN IF sipp = 3 THEN PUT (a \ 2, b \ 2), sippm3, OR + +GET (siia \ 2, siib \ 2)-((siia + 10) \ 2, (siib + 10) \ 2), siilm1 +PUT (siia \ 2, siib \ 2), siilm, OR +GET (siia1 \ 2, siib1 \ 2)-((siia1 + 10) \ 2, (siib1 + 10) \ 2), siilm2 +PUT (siia1 \ 2, siib1 \ 2), siilm, OR +SOUND 0, .8 +IF asend((a + 38) \ 20, (b + 37) \ 20) = "z" THEN eda = -1: r = 9: lke = 0 +IF asend((a + 38) \ 20, (b + 22) \ 20) = "z" THEN eda = -1: r = 9: lke = 0 + +IF asend((a + 21) \ 20, (b + 22) \ 20) = "z" THEN eda = 1: r = 9: lke = 0 +IF asend((a + 21) \ 20, (b + 37) \ 20) = "z" THEN eda = 1: r = 9: lke = 0 + +IF asend((a + 22) \ 20, (b + 21) \ 20) = "z" THEN all = 0: cd = 10: lke = 0 +IF asend((a + 37) \ 20, (b + 21) \ 20) = "z" THEN all = 0: cd = 10: lke = 0 + +IF asend((a + 22) \ 20, (b + 38) \ 20) = "z" THEN all = -1: r1 = 2: lk = 1: lke = 0 +IF asend((a + 37) \ 20, (b + 38) \ 20) = "z" THEN all = -1: r1 = 2: lk = 1: lke = 0 + +qwer = qwer + 1: IF asend1((a + 30) \ 20, (b + 30) \ 20) = "q" AND qwer > 20 THEN qwer = 1: elu = elu - 1: eda = -5: all = -3: elud +IF qwer > 100 THEN qwer = 50 +IF asend((a + 30) \ 20, (b + 30) \ 20) = "1" THEN raha = raha + 1: kustuta1 = 1: elud: asend((a + 30) \ 20, (b + 30) \ 20) = "" +IF asend((a + 30) \ 20, (b + 30) \ 20) = "v" THEN all = -8: sipp = 3 +IF asend1((a + 30) \ 20, (b + 38) \ 20) = ">" THEN eda = 3 +IF asend1((a + 30) \ 20, (b + 38) \ 20) = "<" THEN eda = -3 +lke = lke + 1 +r = r + 1: IF r > 10 THEN r = 0: IF eda > 0 THEN eda = eda - 1: ELSE IF eda < 0 THEN eda = eda + 1 +r1 = r1 + 1: IF r1 > 3 THEN r1 = 0: all = all + 1 +lk = lk + 1: cd = cd - 1 +IF asend1((a + 30) \ 20, (b + 21) \ 20) = "o" THEN asend((a + 30) \ 20, (b + 21) \ 20) = "": asend1((a + 30) \ 20, (b + 21) \ 20) = "": kustuta = 1 +IF asend1((a + 30) \ 20, (b + 38) \ 20) = "a" THEN asend((a + 30) \ 20, (b + 38) \ 20) = "": asend1((a + 30) \ 20, (b + 38) \ 20) = "": kustuta2 = 1 +IF asend((siia + 25) \ 20, (siib + 25) \ 20) = "z" THEN siiall = -1 +IF asend((siia + 30) \ 20, (siib + 10) \ 20) = "z" THEN siie = -1 +IF asend((siia + 20) \ 20, (siib + 10) \ 20) = "z" THEN siie = 1 +IF asend((siia1 + 25) \ 20, (siib1 + 25) \ 20) = "z" THEN siiall1 = -1 +IF asend((siia1 + 30) \ 20, (siib1 + 10) \ 20) = "z" THEN siie1 = -1 +IF asend((siia1 + 20) \ 20, (siib1 + 10) \ 20) = "z" THEN siie1 = 1 +IF siia > 600 THEN siie = -1 +IF siia < 3 THEN siie = 1 +IF siia1 > 600 THEN siie1 = -1 +IF siia1 < 3 THEN siie1 = 1 +PUT (siia1 \ 2, siib1 \ 2), siilm2, PSET +PUT (siia \ 2, siib \ 2), siilm1, PSET +IF b > 0 THEN PUT (a \ 2, b \ 2), marm1, PSET +IF kustuta = 1 THEN kustuta = 0: PUT (((a + 10) \ 20) * 10, (b \ 20) * 10), tuhim, PSET +IF kustuta1 = 1 THEN kustuta1 = 0: PUT (((a + 10) \ 20) * 10, ((b + 10) \ 20) * 10), tuhim, PSET +IF kustuta2 = 1 THEN kustuta2 = 0: PUT (((a + 10) \ 20) * 10, ((b + 28) \ 20) * 10), tuhim, PSET +IF makk = 1 THEN makk = 0: a = a - 20 +asend1((siia1 + 25) \ 20, (siib1 + 8) \ 20) = "": asend1((siia + 25) \ 20, (siib + 8) \ 20) = "" +siia = siia + siie +siib = siib + siiall +siia1 = siia1 + siie1 +siib1 = siib1 + siiall1 +asend1((siia1 + 25) \ 20, (siib1 + 8) \ 20) = "q": asend1((siia + 25) \ 20, (siib + 8) \ 20) = "q" +siiall = siiall + 1: IF siiall > 2 THEN siiall = 2 +siiall1 = siiall1 + 1: IF siiall1 > 2 THEN siiall1 = 2 +a = a + eda +b = b + all +IF a > 594 THEN a = 2: maa = maa + 1: level maa: siie = 1: siie1 = 1 +IF a < 1 THEN a = 594: IF maa = 1 THEN level maa: ELSE maa = maa - 1: level maa: IF voolual = 1 THEN a = 297 +IF b > 358 THEN elu = elu - 1: elud: maa = maa - 1: level maa: b = 100: a = 2: elud +IF asend((a + 30) \ 20, (b + 30) \ 20) = "u" THEN a = uks3 + 5: b = uks4: eda = 0 +IF asend((a + 30) \ 20, (b + 30) \ 20) = "U" THEN a = uks1 + 5: b = uks2: eda = 0 +WEND +a$ = kbd$: kbd$ = "" +IF a$ = par7$ THEN eda = eda + 1: IF eda > 3 THEN eda = 3: r = 0 ELSE IF lke > 10 THEN eda = 5 +IF a$ = par7$ THEN IF sipa = 1 THEN sipp = 1: ELSE sipp = 2 +IF a$ = vas7$ THEN IF sipa = 1 THEN sipp = 10: ELSE sipp = 20 +IF a$ = vas7$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5 +IF a$ = ule7$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3 +IF a$ = all7$ THEN all = all + 1 +IF a$ = "/" THEN a = 2: b = 50: maa = maa + 1: level maa: siie = 1: siie1 = 1 +IF a$ = "+" THEN a = 2: b = 50: maa = maa + 5: level maa: siie = 1: siie1 = 1 +IF a$ = "q" THEN END +sipa = sipa + 1 +IF sipa = 3 THEN sipa = 1 +GOTO 106 + +SUB elud +LOCATE 1, 1 +IF voolual = 2 THEN GOTO 12 +PRINT " " +IF raha > 9 THEN raha = 0: elu = elu + 1 +LOCATE 1, 1 +PRINT "o "; raha; " Elu "; elu +12 +IF elu < 0 THEN END +END SUB + +SUB joonist +tuhi$ = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +CLS +INPUT "laius", laius +INPUT "pikkus", pikkus +FOR a = 1 TO pikkus +text$(a) = RIGHT$(tuhi$, laius) +NEXT a +CLS +a = 1 +b = 1 +z = 3 +zx = 1 +2 +a$ = INPUT$(1) +IF zx = 1 THEN CIRCLE (a * 2, b * 2), 1, z +po = ASC(RIGHT$(LEFT$(text$(b), a), 1)) - 1 +IF zx = -1 THEN CIRCLE (a * 2, b * 2), 1, po +IF a$ = "6" THEN a = a + 1 +IF a$ = "4" THEN a = a - 1 +IF a$ = "8" THEN b = b - 1 +IF a$ = "2" THEN b = b + 1 +IF a$ = " " THEN zx = zx * -1 +IF a$ = "e" THEN GOTO 5 +IF a$ = "s" THEN GOTO 3 +IF a$ = "z" THEN z = 0 +IF a$ = "x" THEN z = 1 +IF a$ = "c" THEN z = 2 +IF a$ = "v" THEN z = 3 + +IF a < 1 THEN a = 1 +IF b < 1 THEN b = 1 +IF b > pikkus THEN b = pikkus +IF a > laius THEN a = laius +IF z > 3 THEN z = 3 +IF z < 0 THEN z = 0 +IF zx = 1 THEN MID$(text$(b), a) = CHR$(z + 1) +IF zx = 1 THEN CIRCLE (a * 2, b * 2), 1, z +IF zx = 1 THEN PAINT (a * 2, b * 2), z +o = 0 +IF zx = 1 THEN IF z = 0 THEN o = 3 +po = ASC(RIGHT$(LEFT$(text$(b), a), 1)) - 1 +IF zx = -1 THEN IF po = 0 THEN o = 3 +CIRCLE (a * 2, b * 2), 1, o +GOTO 2 +3 +INPUT "fail", a$ +save a$ +5 +END SUB + +SUB level (y) +125 +siia = 0 +siib = 0 +aiia1 = 0 +siib1 = 0 +FOR a1 = 1 TO 32 +FOR b1 = 1 TO 20 +asend(a1, b1) = "" +asend1(a1, b1) = "" +NEXT b1 +NEXT a1 +FOR a = 1 TO 10 +uun(a) = "" +NEXT a +CLS +LOCATE 3, 10 +SELECT CASE y +CASE 1 +uun(1) = " mmm" +uun(2) = " - m mm" +uun(3) = " . - mmm" +uun(4) = "o . . mymm" +uun(5) = "o -mmm" +uun(6) = "o t mxmm" +uun(7) = "o mmm" +uun(8) = "o 1 1 " +uun(9) = "o p p 1 1 1" +uun(10) = "mmmmmmmmmmmmmmmm" +voolual = 1 +CASE 2 +uun(1) = "mmmmmmmmmmmmmmmm" +uun(2) = "mm h h " +uun(3) = "mmx m mmmymmm" +uun(4) = "mmommmmmm mom m" +uun(5) = "mo 1 1 1 o1m1m" +uun(6) = "momm m m m m111m" +uun(7) = "m h mmmmoom" +uun(8) = " mm h m" +uun(9) = " v mmm mm" +uun(10) = "mmmmmmmmmmmmmmmm" +CASE 3 +uun(1) = "mmmmmmmmmmmmmmmm" +uun(2) = " h h h h h ym11" +uun(3) = "mm mmmmmmmmmmm1m" +uun(4) = "m h m xm " +uun(5) = "mm m m mmmmmmmmm" +uun(6) = "mmmm m1m " +uun(7) = "m h m1moo m" +uun(8) = "m mmmmmm m1moomm" +uun(9) = "m 11111m h h " +uun(10) = "mmmmmmmmmmmmmmmm" +CASE 4 +uun(1) = "mmmmmmmmmmmmmmmm" +uun(2) = " h1 h1 m" +uun(3) = "mmm 1 11 1 o1m" +uun(4) = " m 1 oo 1o1m" +uun(5) = "m moo oo1m" +uun(6) = " m h o " +uun(7) = "mmm h o " +uun(8) = "m o " +uun(9) = " x oy " +uun(10) = "mmmmmmmmmmmmmmmm" +CASE 5 +uun(1) = "m . y - " +uun(2) = "m m moo" +uun(3) = "m. mxm mmo" +uun(4) = "m - m mmmmmm" +uun(5) = "m . m mm " +uun(6) = "mt o o m " +uun(7) = "m o om o ooo " +uun(8) = "m ooooooooooo " +uun(9) = " v o " +uun(10) = "oooooooooooooooo" +CASE 6 +PRINT "1-2 Maailm . Kood: teine": elud +a$ = INPUT$(1) +CLS +uun(1) = " - " +uun(2) = " . " +uun(3) = " oo- oo " +uun(4) = " - 11 11 ." +uun(5) = " oo oo " +uun(6) = " m ym11 11 " +uun(7) = " m m " +uun(8) = " ooom <> <> " +uun(9) = " xmmm mmm" +uun(10) = "mmmmmmmmmmm mmm" +CASE 7 +uun(1) = " oooo " +uun(2) = " o111 . " +uun(3) = " oooo> >>>>>>" +uun(4) = " . x v m" +uun(5) = " mym m" +uun(6) = " m m" +uun(7) = " 111m" +uun(8) = " 111m" +uun(9) = " v p " +uun(10) = "oooaaaaaaaaaoooo" +CASE 8 +uun(1) = " . o" +uun(2) = " . mm o" +uun(3) = ". ommm t o" +uun(4) = " mom mm o" +uun(5) = " pmmoyxmmm o" +uun(6) = " mmmomammmm m" +uun(7) = "p mmmmv mmmm " +uun(8) = "mmmmmmmmm mmmmmm" +uun(9) = " " +uun(10) = ">>>>>>>>>>>>>>>>" +maa = maa + 1 +CASE 10 +uun(1) = "m. - m" +uun(2) = "m . m" +uun(3) = "m 111 - m" +uun(4) = "mmmmm>>> ammm" +uun(5) = "a a m" +uun(6) = "mmm t a m" +uun(7) = " ma m" +uun(8) = ">>> a m" +uun(9) = " m yx m m" +uun(10) = ">>>mmmmmmmmmmm m" +CASE 9 +uun(1) = "mammmmmmmmmmmmm " +uun(2) = "m1m y xmo " +uun(3) = "mamooo>>>a>am om" +uun(4) = "m1m m1mamo m" +uun(5) = "mamm m1mam om" +uun(6) = "m1m mm1mamo m" +uun(7) = "mammm m1ma om" +uun(8) = "m1m mmm1ma o m" +uun(9) = "m amam om" +uun(10) = "mmmmmmmm 1 THEN GOTO 4 +FOR a = 1 TO 100 +IF ao(a) = "" THEN GOTO 1 +FOR b = 1 TO LEN(ao(a)) +PSET ((p + b) \ teler, (o + a) \ teler), ASC(RIGHT$(LEFT$(ao(a), b), 1)) - 48 +NEXT b +NEXT a +GOTO 1 +4 +FOR a = 1 TO 100 +IF ao(a) = "" THEN GOTO 1 +FOR b = 1 TO LEN(ao(a)) +c = ASC(RIGHT$(LEFT$(ao(a), b), 1)) - 48 +LINE (p + (b * fr), o + (a * fr))-(p + (b * fr) + fr, o + (a * fr) + fr), c, BF +NEXT b +NEXT a +GOTO 1 +8 +FOR a = 1 TO 100 +IF ao(a) = "" THEN GOTO 1 +FOR b = 1 TO LEN(ao(a)) +PSET ((p + b) \ teler, (o + a) \ teler), ASC(LEFT$(RIGHT$(ao(a), b), 1)) - 48 +NEXT b +NEXT a + +1 +ERASE ao +END SUB + +SUB save (y$) +OPEN y$ FOR OUTPUT AS #1 +PRINT #1, pikkus +FOR a = 1 TO pikkus +PRINT #1, text$(a) +NEXT a +CLOSE +END SUB + +SUB wiew (r$, a, b) +OPEN r$ FOR INPUT AS #2 +INPUT #2, pikkus +FOR e = 1 TO pikkus +INPUT #2, b$ +FOR D = 1 TO LEN(b$) +PSET (D + a, b + e), ASC(RIGHT$(LEFT$(b$, D), 1)) - 1 +NEXT D +NEXT e +CLOSE +END SUB + diff --git a/games/worm/1.lvl b/games/worm/1.lvl new file mode 100755 index 0000000..6997eeb --- /dev/null +++ b/games/worm/1.lvl @@ -0,0 +1,35 @@ +/################################### +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/################################### diff --git a/games/worm/10.lvl b/games/worm/10.lvl new file mode 100755 index 0000000..24198ec --- /dev/null +++ b/games/worm/10.lvl @@ -0,0 +1,35 @@ +/###################### ########## +/###################### ########## +/#m m ## +/#m m ## +/#m m ## +/#m mmmmmmmmmmmmm m ## +/#m m m ## +/#m m m ## +/#m m m ## +/#mmmmmmmmmm m m ## +/#m m m ## +/#m m m ## +/#m m m ## +/#m mmmmmmmmmmmmm m ## +/#m m ## +/#m m ## +/#m m ## +/#m m m m# +/#mmmmmmmmmmmmmmmmm m ## +/ m m +/ m m +/ m m +/#m m mmmmmmmmmmmmmmmmm# +/#m m m m# +/#m m m m# +/#m m m m# +/ m +/ m +/ m +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmm m# +/ m +/ m +/ m +/#mmmmmmmmmmmmmmmmmmmmm mmmmmmmmm# +/###################### ########## diff --git a/games/worm/11.lvl b/games/worm/11.lvl new file mode 100755 index 0000000..aa94d33 --- /dev/null +++ b/games/worm/11.lvl @@ -0,0 +1,35 @@ +/################################### +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/#m m# +/#m m# +/#m m m m m m# +/#m mm m m mm m# +/#m mmm m m mmm m# +/#m m m m m m m m# +/#m m m m m m m m# +/#m m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m m m# +/#m m mm m mm m m# +/#m m mmm mmm m m# +/#m m m m m m m m# +/#m m m m m m m m# +/#m m m m m m m m# +/#m m m m m m m m# +/#m m m m m m m m# +/#m m m m m m m# +/#m m# +/#m m# +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/################################### diff --git a/games/worm/2.lvl b/games/worm/2.lvl new file mode 100755 index 0000000..474800b --- /dev/null +++ b/games/worm/2.lvl @@ -0,0 +1,35 @@ +/################################### +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/#m mm +/#m m# +/#m m# +/#m m# +/#m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/################################### diff --git a/games/worm/3.lvl b/games/worm/3.lvl new file mode 100755 index 0000000..bfbdba5 --- /dev/null +++ b/games/worm/3.lvl @@ -0,0 +1,35 @@ +/########### ### ########### +/#mmmmmmmmmm mmm mmmmmmmmmm# +/#mmmmmmmm mmmmmmmm# +/#mmmmmm mmmmmm# +/#mmmmm mmmmm# +/#mmmm mmm mmmm# +/#mmm mmmmm mmm# +/mmm mmmmm mm# +/#mm mmm mm# +/#m m m# +/#m m m# +/ m +/ m +/ m +/ mmm +/ mm mmm mm +/#m mmmm mmmmmmm mmmm m# +/#m mmmmmmmmmmmmmmmmmmmmmmmmm m# +/#m mmmm mmmmmmm mmmm m# +/ mm mmm mm +/ mmm +/ m +/ m +/ m +/#m m m# +/#m m m# +/#mm mmm mm# +/#mm mmmmm mm# +/#mmm mmmmm mmm# +/#mmmm mmm mmmm# +/#mmmmm mmmmm# +/#mmmmmm mmmmmm# +/#mmmmmmmm mmmmmmmm# +/#mmmmmmmmmm mmm mmmmmmmmmm# +/########### ### ########### diff --git a/games/worm/4.lvl b/games/worm/4.lvl new file mode 100755 index 0000000..7b64d2b --- /dev/null +++ b/games/worm/4.lvl @@ -0,0 +1,35 @@ +/ +/ +/ +/ +/ +/ mm mm +/ m m +/ +/ m m +/ mm mm +/ +/ +/ +/ +/ +/ mmmmmmmmmmmmmmmmm +/ m +/ m +/ m m +/ m m +/ m m +/ mmmmmmmmmmmmmm +/ m m +/ m m +/ m m +/ m +/ m m +/ mmmmmmmmmmmmm m +/ m +/ +/ m +/ m +/ m +/ +/ diff --git a/games/worm/5.lvl b/games/worm/5.lvl new file mode 100755 index 0000000..73d9bdb --- /dev/null +++ b/games/worm/5.lvl @@ -0,0 +1,35 @@ +/################ ################ +/#mmmmmmmmmmmmmmm mmmmmmmmmmmmmmm# +/#m m# +/#m m# +/#m m# +/#m ##### ##### ###### m# +/#m # # m# +/#m # # m# +/#m # # m# +/#m # # m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m # ##### # m# +/ # ##### # +/ # ##### # +/ # ##### # +/#m # ##### # mm +/#m m# +/#m m# +/#m m# +/#m m# +/#m m# +/#m # # m# +/#m # # m# +/#m # # m# +/#m # # m# +/#m ##### ##### ##### m# +/#m mm +/#m m# +/#m m# +/#mmmmmmmmmmmmmmm mmmmmmmmmmmmmmm# +/################ ################ diff --git a/games/worm/6.lvl b/games/worm/6.lvl new file mode 100755 index 0000000..5bd15b8 --- /dev/null +++ b/games/worm/6.lvl @@ -0,0 +1,35 @@ +/###### ################### ###### +/#mmmmm mmmmmmmmmmmmmmmmmmm #mmmm# +/#m # m# +/#m # m# +/#m # m# +/#m ######################### m# +/#m m# +/#m m# +/#m m# +/###### mm +/ # # +/ # # +/#m # # m# +/#m # # m# +/#m # # # m# +/#m # # # m# +/#m # # # m# +/#m # ####### # m# +/#m # # # m# +/#m # m # m# +/#m # m # m# +/#m # # m# +/#m # # m# +/ # # +/ # # +/mm ###### +/#m m# +/#m m# +/#m m# +/#m ######################### m# +/#m # m# +/#m # m# +/#m # m# +/mmmmm# mmmmmmmmmmmmmmmmmmm mmmmm# +/###### ################### ###### diff --git a/games/worm/7.lvl b/games/worm/7.lvl new file mode 100755 index 0000000..2980fb8 --- /dev/null +++ b/games/worm/7.lvl @@ -0,0 +1,35 @@ +/ ############################# +/ mmmmmmmmmmmmmmmmmmmmmmmmmmmmm +/ m +/#m m m# +/#m m m# +/#m ######################### m# +/#m m# +/#m m# +/#m m# +/#m # m# +/#m # # m# +/#m # # m# +/#m # mmmmm mmmmm # m# +/#m # m m # m# +/#m # m m # m# +/#m # m m # m# +/#m # m m # m# +/#mmmm# m #mmmm# +/#m # m m # m# +/#m # m m # m# +/#m # m m # m# +/#m # m m # m# +/#m # mmmmm mmmmm # m# +/#m # # m# +/#m # # m# +/#m # # m# +/#m m# +/#m m# +/#m m# +/#m ######################### m# +/#m m m# +/#m m m# +/ m +/ mmmmmmmmmmmmmmmmmmmmmmmmmmmmm +/ ############################# diff --git a/games/worm/8.lvl b/games/worm/8.lvl new file mode 100755 index 0000000..d4bdc60 --- /dev/null +++ b/games/worm/8.lvl @@ -0,0 +1,35 @@ +/################################### +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/#m m# +/#m mmmmm mmmmm m# +/#m mm mm m# +/#m m m m# +/#m m m m# +/#m m m m# +/#m m m m# +/ +/ +/#m m# +/#m m# +/#m m mmmm m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m mmmmmmmmm m m# +/#m m m m m m# +/#m m m m m m# +/#m m m m m m# +/#m m mmmm m m# +/#m m# +/#m m# +/ +/ +/#m m m m# +/#m m m m# +/#m m m m# +/#m m m m# +/#m mm mm m# +/#m mmmmm mmmmm m# +/#m m# +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/################################### diff --git a/games/worm/9.lvl b/games/worm/9.lvl new file mode 100755 index 0000000..8ebef51 --- /dev/null +++ b/games/worm/9.lvl @@ -0,0 +1,35 @@ +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/ +/ +/ m +/ mmm +/ mmmmm +/ m +/ m +/ mmmmmmmmmm +/ +/ +/ +/ +/ +/ +/ mmmmm mmmmm mmmmm mmmmm +/ mmmmm mmmmm mmmmm mmmmm +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/#mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm# +/################################### diff --git a/games/worm/worm.bas b/games/worm/worm.bas new file mode 100755 index 0000000..890a24a --- /dev/null +++ b/games/worm/worm.bas @@ -0,0 +1,551 @@ +' Worm game +' by Svjatoslav Agejenko 2002 +' E-mail: svjatoslavagejenko@gmail.com + +DECLARE FUNCTION cnum$ (a%) +DECLARE SUB putworm (a%) +DECLARE SUB level (a%) +DECLARE SUB showb () +DECLARE SUB sc2 (x%, y%) +DECLARE SUB ai (a%) +DECLARE SUB autop (a%) +DECLARE SUB stat () +DECLARE SUB prc (a%) +DECLARE SUB stuff () +DECLARE SUB dead (a%) +DECLARE SUB add (a%) +DECLARE SUB tkt () +DECLARE SUB subt (b%) +DECLARE SUB show () +DECLARE SUB start () +DECLARE SUB init () +DECLARE SUB sc (x%, y%) +DEFINT A-Z + +DIM SHARED buf(0 TO 36, 0 TO 36) +DIM SHARED buf2(0 TO 36, 0 TO 36) +DIM SHARED ussx(1 TO 2000, 1 TO 5) +DIM SHARED ussy(1 TO 2000, 1 TO 5) +DIM SHARED ussp(1 TO 5) +DIM SHARED ussl(1 TO 5) +DIM SHARED usss(1 TO 5) +DIM SHARED ussk(1 TO 2000, 1 TO 5) +DIM SHARED usskp(1 TO 5) + +DIM SHARED ux(1 TO 5), uy(1 TO 5), uxp(1 TO 5), uyp(1 TO 5) +DIM SHARED mtm +DIM SHARED ussm +DIM SHARED elud(1 TO 5) +DIM SHARED auto(1 TO 5) +DIM SHARED ail, lvl, wai +DIM SHARED elum +DIM SHARED spd + +ussm = 1 +ail = 10 +lvl = 1 +wai = 0 +wai = 20 + + +auto(1) = 0 +auto(2) = 0 +auto(3) = 0 +auto(4) = 0 +auto(5) = 0 +CLS + +INPUT "How mutch players 1 - 5:", ussm +INPUT "How mutch of them is computers:", a +FOR b = ussm TO ussm - a + 1 STEP -1 +auto(b) = 1 +NEXT b + +INPUT "How mutch lives:", elum +INPUT "Speed: (1-slow 3-ok 10-very fast)", spd + + +start + +level lvl +1 +tkt +SOUND 0, 5 / spd +IF mtm >= 15 THEN +mtm = 1 +lvl = lvl + 1 +level lvl +END IF +GOTO 1 + +SUB ai (a) + + +FOR y = 0 TO 36 +FOR x = 0 TO 36 +buf2(x, y) = 32000 +IF buf(x, y) = 2 THEN buf2(x, y) = 0 +IF buf(x, y) > 9 OR buf(x, y) = 1 THEN buf2(x, y) = -1 +NEXT x +NEXT y + +IF buf2(16, 16) = 32000 THEN buf2(16, 16) = 15000 + + +6 +b = 0 +FOR y = 1 TO 35 +FOR x = 1 TO 34 +IF (buf2(x + 1, y) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x + 1, y) = buf2(x, y) + 1: b = 1 +NEXT x +FOR x = 35 TO 2 STEP -1 +IF (buf2(x - 1, y) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x - 1, y) = buf2(x, y) + 1: b = 1 +NEXT x + +IF (buf2(1, y) > buf2(35, y) + 1) AND (buf2(35, y) >= 0) THEN buf2(1, y) = buf2(35, y) + 1: b = 1 +IF (buf2(35, y) > buf2(1, y) + 1) AND (buf2(1, y) >= 0) THEN buf2(35, y) = buf2(1, y) + 1: b = 1 +NEXT y + +FOR x = 1 TO 35 +FOR y = 1 TO 34 +IF (buf2(x, y + 1) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x, y + 1) = buf2(x, y) + 1: b = 1 +NEXT y +FOR y = 35 TO 2 STEP -1 +IF (buf2(x, y - 1) > buf2(x, y) + 1) AND (buf2(x, y) >= 0) THEN buf2(x, y - 1) = buf2(x, y) + 1: b = 1 +NEXT y + + +IF (buf2(x, 1) > buf2(x, 35) + 1) AND (buf2(x, 35) >= 0) THEN buf2(x, 1) = buf2(x, 35) + 1: b = 1 +IF (buf2(x, 35) > buf2(x, 1) + 1) AND (buf2(x, 1) >= 0) THEN buf2(x, 35) = buf2(x, 1) + 1: b = 1 +NEXT x + +IF b = 1 THEN GOTO 6 + +tx = ux(a) +ty = uy(a) +'sc2 tx, ty + +d = 0 +7 +b = 32001 +tmpxp = 0 +tmpyp = 0 +IF (buf2(tx - 1, ty) < b) AND (buf2(tx - 1, ty) >= 0) THEN b = buf2(tx - 1, ty): tmpxp = -1: tmpyp = 0: c = 1 +IF (buf2(tx, ty - 1) < b) AND (buf2(tx, ty - 1) >= 0) THEN b = buf2(tx, ty - 1): tmpxp = 0: tmpyp = -1: c = 2 +IF (buf2(tx + 1, ty) < b) AND (buf2(tx + 1, ty) >= 0) THEN b = buf2(tx + 1, ty): tmpxp = 1: tmpyp = 0: c = 3 +IF (buf2(tx, ty + 1) < b) AND (buf2(tx, ty + 1) >= 0) THEN b = buf2(tx, ty + 1): tmpxp = 0: tmpyp = 1: c = 4 + +IF b = 32001 THEN +'SOUND 3000, 1 +tmpxp = -1 +tmpyp = 0 +c = 1 +b = -1 +END IF + +buf2(tx, ty) = -1 +d = d + 1 +ussk(d, a) = c +tx = tx + tmpxp +ty = ty + tmpyp +IF tx = 1 THEN tx = 34 +IF ty = 1 THEN ty = 34 +IF tx = 35 THEN tx = 2 +IF ty = 35 THEN ty = 2 +e = buf2(tx, ty) +buf2(tx, ty) = -1 + +sc2 tx, ty +IF d > ail THEN GOTO 8 +IF (e > 0) AND (b > -1) THEN GOTO 7 +8 +d = d + 1 +ussk(d, a) = 5 +usskp(a) = 1 + +'DIM SHARED ussk(1 TO 2000, 1 TO 5) +'DIM SHARED usskp(1 TO 5) + + +showb + +END SUB + +SUB autop (a) +c = 0 +5 +IF usskp(a) > 0 THEN +b = ussk(usskp(a), a) +IF b = 1 THEN uxp(a) = -1: uyp(a) = 0 +IF b = 2 THEN uxp(a) = 0: uyp(a) = -1 +IF b = 3 THEN uxp(a) = 1: uyp(a) = 0 +IF b = 4 THEN uxp(a) = 0: uyp(a) = 1 +IF b = 5 THEN ai a: GOTO 5 +usskp(a) = usskp(a) + 1 +END IF + +nx = ux(a) + uxp(a) +ny = uy(a) + uyp(a) +b = buf(INT(nx), INT(ny)) +IF (b = 1 OR b > 9) AND (c = 0) THEN ai a: c = 1: GOTO 5 + + +END SUB + +FUNCTION cnum$ (a) + +b$ = STR$(a) +IF LEFT$(b$, 1) = " " THEN b$ = RIGHT$(b$, LEN(b$) - 1) +cnum$ = b$ + +END FUNCTION + +SUB dead (a) +elud(a) = elud(a) - 1 +putworm a +END SUB + +SUB init +level 1 +END SUB + +SUB level (a) +LOCATE 5, 5 +PRINT "G E T R E A D Y" +LOCATE 7, 5 +PRINT "L E V E L :"; a + +FOR b = 1 TO wai +SOUND 0, 1 +NEXT b +CLS + + +FOR y = 0 TO 36 +FOR x = 0 TO 36 +buf(x, y) = 0 +NEXT x +NEXT y + +FOR x = 0 TO 36 +buf(x, 0) = 1 +buf(x, 36) = 1 +buf(0, x) = 1 +buf(36, x) = 1 +NEXT x + + + +b$ = cnum(a) + ".lvl" +OPEN b$ FOR INPUT AS #1 +d = 0 +10 +IF EOF(1) <> 0 THEN GOTO 11 +LINE INPUT #1, c$ +IF LEFT$(c$, 1) = "/" THEN +d = d + 1 +IF d > 35 THEN GOTO 12 +g = LEN(c$) +IF g > 36 THEN g = 36 +FOR e = 2 TO g +f$ = RIGHT$(LEFT$(c$, e), 1) +IF f$ = "#" OR f$ = "m" THEN buf(e - 1, d) = 1 ELSE buf(e - 1, d) = 0 +NEXT e +END IF +12 + +GOTO 10 +11 + +CLOSE #1 + + +stuff +show + + +FOR b = 1 TO ussm +ussl(b) = 0 +putworm b +NEXT b +stat +END SUB + +SUB prc (a) + +subt a +ussp(a) = ussp(a) + 1 + +IF elud(a) = 0 THEN GOTO 4 + +IF auto(a) = 1 THEN autop a + + + +ux(a) = ux(a) + uxp(a) +uy(a) = uy(a) + uyp(a) +IF ux(a) = 35 THEN ux(a) = 2 +IF uy(a) = 35 THEN uy(a) = 2 +IF ux(a) = 1 THEN ux(a) = 34 +IF uy(a) = 1 THEN uy(a) = 34 + + +x = ux(a) +y = uy(a) + +3 +IF buf(x, y) = 2 THEN +buf(x, y) = 0 +sc x, y +stuff +ussl(a) = ussl(a) + mtm +usss(a) = usss(a) + mtm +FOR b = 1 TO ussm +IF (elud(b) > 0) AND (auto(b) = 1) THEN ai b +NEXT b +stat +GOTO 3 +END IF + +IF buf(x, y) > 0 THEN dead a: GOTO 4 +IF a = 1 THEN buf(x, y) = 10 +IF a = 2 THEN buf(x, y) = 11 +IF a = 3 THEN buf(x, y) = 12 +IF a = 4 THEN buf(x, y) = 13 +IF a = 5 THEN buf(x, y) = 14 +sc x, y +IF ussp(a) > 2000 THEN ussp(a) = ussp(a) - 2000 +ussx(ussp(a), a) = x +ussy(ussp(a), a) = y + +4 + +END SUB + +SUB putworm (a) +b = ussl(a) +FOR c = b TO 1 STEP -1 +ussl(a) = c +subt a +NEXT c + +9 +uy(a) = INT(RND * 30 + 2) +ux(a) = INT(RND * 10 + 5) +FOR b = ux(a) TO ux(a) + 10 +IF buf(b, uy(a)) <> 0 THEN GOTO 9 +NEXT b + +uxp(a) = 1 +uyp(a) = 0 +ussl(a) = 3 +stat + +END SUB + +SUB sc (x, y) +x1 = x * 5 +y1 = y * 5 + +LINE (x1, y1)-(x1 + 3, y1 + 3), 0, BF + +SELECT CASE buf(x, y) +CASE 0 +LINE (x1, y1)-(x1 + 3, y1 + 3), 1, BF +CASE 1 +LINE (x1, y1)-(x1 + 3, y1 + 3), 7, BF +LINE (x1, y1)-(x1 + 3, y1 + 3), 8, B +CASE 2 +LINE (x1, y1)-(x1 + 3, y1 + 3), 14, BF +CASE 10 +LINE (x1, y1)-(x1 + 3, y1 + 3), 10, BF +PSET (x1, y1), 0 +PSET (x1 + 3, y1), 0 +PSET (x1, y1 + 3), 0 +PSET (x1 + 3, y1 + 3), 0 + +CASE 11 +LINE (x1, y1)-(x1 + 3, y1 + 3), 12, BF +PSET (x1, y1), 0 +PSET (x1 + 3, y1), 0 +PSET (x1, y1 + 3), 0 +PSET (x1 + 3, y1 + 3), 0 + +CASE 12 +LINE (x1, y1)-(x1 + 3, y1 + 3), 13, BF +PSET (x1, y1), 0 +PSET (x1 + 3, y1), 0 +PSET (x1, y1 + 3), 0 +PSET (x1 + 3, y1 + 3), 0 + +CASE 13 +LINE (x1, y1)-(x1 + 3, y1 + 3), 15, BF +PSET (x1, y1), 0 +PSET (x1 + 3, y1), 0 +PSET (x1, y1 + 3), 0 +PSET (x1 + 3, y1 + 3), 0 + +CASE 14 +LINE (x1, y1)-(x1 + 3, y1 + 3), 9, BF +PSET (x1, y1), 0 +PSET (x1 + 3, y1), 0 +PSET (x1, y1 + 3), 0 +PSET (x1 + 3, y1 + 3), 0 + + +END SELECT + +END SUB + +SUB sc2 (x, y) +'LOCATE 1, 1 +'PRINT x, y +'x1 = x * 5 + 2 +'y1 = y * 5 + 2 +'PSET (x1, y1), 15 + + +'a$ = INPUT$(1) + +END SUB + +SUB show +FOR y = 1 TO 35 +FOR x = 1 TO 35 +sc x, y + +NEXT x +NEXT y + +END SUB + +SUB showb +GOTO 15 +FOR x = 1 TO 35 +FOR y = 1 TO 35 + +LINE (x * 2 + 200, y * 2 + 100)-(x * 2 + 201, y * 2 + 101), buf2(x, y) MOD 255, BF +NEXT y +NEXT x +15 +'a$ = INPUT$(1) +END SUB + +SUB start +SCREEN 13 +RANDOMIZE TIMER + +uy(1) = 5 +uy(2) = 10 +uy(3) = 15 +uy(4) = 20 +uy(5) = 25 + + +FOR a = 1 TO ussm +ux(a) = 15 +uxp(a) = 1 +uyp(a) = 0 +ussp(a) = 0 +ussl(a) = 3 +elud(a) = elum +usss(a) = 0 +usskp(a) = 1 +ussk(1, a) = 5 +NEXT a +mtm = 0 +END SUB + +SUB stat +LOCATE 1, 25 +PRINT mtm + + +FOR a = 1 TO 5 +COLOR 15 +LOCATE 2 + a, 24 +PRINT RIGHT$(STR$(a), 1) + +COLOR 10 +LOCATE 2 + a, 26 +IF auto(a) = 1 THEN PRINT "*" ELSE PRINT "-" + +COLOR 12 +LOCATE 2 + a, 27 +b$ = STR$(usss(a)) +PRINT RIGHT$(b$, LEN(b$) - 1) + +COLOR 13 +LOCATE 2 + a, 30 +b$ = STR$(elud(a)) +PRINT RIGHT$(b$, LEN(b$) - 1) +NEXT a + +COLOR 10 +LOCATE 8, 26 +PRINT "Auto" + +COLOR 12 +LOCATE 2, 27 +PRINT "Score" + +COLOR 13 +LOCATE 8, 30 +PRINT "Lives" + +LOCATE 1, 30 +PRINT "Level:"; lvl + + +END SUB + +SUB stuff +2 +x = INT(RND * 33 + 2) +y = INT(RND * 33 + 2) +IF buf(x, y) = 0 THEN +buf(x, y) = 2 +sc x, y +ELSE +GOTO 2 +END IF +mtm = mtm + 1 +stat +END SUB + +SUB subt (b) +a = ussp(b) - ussl(b) +IF a < 1 THEN a = a + 2000 +IF ussx(a, b) > 0 THEN + +buf(ussx(a, b), ussy(a, b)) = 0 +sc ussx(a, b), ussy(a, b) +ussx(a, b) = 0 +END IF +END SUB + +SUB tkt +a$ = INKEY$ +IF a$ = CHR$(27) THEN SYSTEM +IF (a$ = CHR$(0) + "M") AND (uxp(1) <> -1) THEN uxp(1) = 1: uyp(1) = 0 +IF (a$ = CHR$(0) + "K") AND (uxp(1) <> 1) THEN uxp(1) = -1: uyp(1) = 0 +IF (a$ = CHR$(0) + "P") AND (uyp(1) <> -1) THEN uxp(1) = 0: uyp(1) = 1 +IF (a$ = CHR$(0) + "H") AND (uyp(1) <> 1) THEN uxp(1) = 0: uyp(1) = -1 + +IF (a$ = "d") AND (uxp(2) <> -1) THEN uxp(2) = 1: uyp(2) = 0 +IF (a$ = "a") AND (uxp(2) <> 1) THEN uxp(2) = -1: uyp(2) = 0 +IF (a$ = "s") AND (uyp(2) <> -1) THEN uxp(2) = 0: uyp(2) = 1 +IF (a$ = "w") AND (uyp(2) <> 1) THEN uxp(2) = 0: uyp(2) = -1 + +b = VAL(a$) +IF b > 0 THEN +IF auto(b) = 1 THEN auto(b) = 0 ELSE auto(b) = 1 +stat +END IF + +FOR a = 1 TO ussm +prc a +NEXT a + +END SUB + diff --git a/graphics/3D/!.bas b/graphics/3D/!.bas new file mode 100755 index 0000000..ad670ef --- /dev/null +++ b/graphics/3D/!.bas @@ -0,0 +1,265 @@ +' Svjatoslav Agejenko +' Use keys: +' Up, Down, Left, Right, w, z - rotate +' - speed down +' q - quit + +DECLARE SUB getcor () +DECLARE SUB mulcor () +DECLARE SUB nait3d () +DECLARE SUB calcsin () +DEFINT A-Z +DIM SHARED Xn(100), Yn(100), Zn(100) +DIM SHARED Xs1(100), Ys1(100), Xe1(100), Ye1(100) +DIM SHARED x(100), y(100), z(100), pointers1(100), pointers2(100) +DIM SHARED Cosine&(360), Sine&(360) +DIM SHARED np, nl +DIM SHARED jrp, jrl +jrp = 0 +jrl = 0 + + +SCREEN 12 +CLS + + +calcsin +getcor +mulcor +nait3d + + + + +DATA 5, -60, -10 +DATA 15,-50, -10 +DATA 15, 0, -10 +DATA 5, 10, -10 +DATA -5, 10, -10 +DATA -15, 0, -10 +DATA -15,-50, -10 +DATA -5, -60, -10 + +DATA 5, -60, 10 +DATA 15,-50, 10 +DATA 15, 0, 10 +DATA 5, 10, 10 +DATA -5, 10, 10 +DATA -15, 0, 10 +DATA -15,-50, 10 +DATA -5, -60, 10 + +DATA 5, 20, 10 +DATA 15, 30, 10 +DATA 15, 40, 10 +DATA 5, 50, 10 +DATA -5, 50, 10 +DATA -15, 40, 10 +DATA -15, 30, 10 +DATA -5, 20, 10 + +DATA 5, 20, -10 +DATA 15, 30, -10 +DATA 15, 40, -10 +DATA 5, 50, -10 +DATA -5, 50, -10 +DATA -15, 40, -10 +DATA -15, 30, -10 +DATA -5, 20, -10 + +DATA 999,999,999 + +DATA 0,1 +DATA 1,2 +DATA 2,3 +DATA 3,4 +DATA 4,5 +DATA 5,6 +DATA 6,7 +DATA 7,0 + +DATA 8,9 +DATA 9,10 +DATA 10,11 +DATA 11,12 +DATA 12,13 +DATA 13,14 +DATA 14,15 +DATA 15,8 + + +DATA 0,8 +DATA 1,9 +DATA 2,10 +DATA 3,11 +DATA 4,12 +DATA 5,13 +DATA 6,14 +DATA 7,15 + +DATA 16,17 +DATA 17,18 +DATA 18,19 +DATA 19,20 +DATA 20,21 +DATA 21,22 +DATA 22,23 +DATA 23,16 + + +DATA 24,25 +DATA 25,26 +DATA 26,27 +DATA 27,28 +DATA 28,29 +DATA 29,30 +DATA 30,31 +DATA 31,24 + +DATA 24,16 +DATA 25,17 +DATA 26,18 +DATA 27,19 +DATA 28,20 +DATA 29,21 +DATA 30,22 +DATA 31,23 + +DATA 999, 999 + +SUB calcsin +FOR a! = 0 TO 359 / 57.29577951# STEP 1 / 57.29577951# + Cosine&(a) = INT(.5 + COS(a!) * 1024) + Sine&(a) = INT(.5 + SIN(a!) * 1024) + a = a + 1 +NEXT +END SUB + +SUB getcor +FOR a = 0 TO 10000 + READ x(a), y(a), z(a) + IF x(a) = 999 THEN x(a) = 0: y(a) = 0: z(a) = 0: GOTO 1 +NEXT +1 +np = a + +FOR a = 0 TO 10000 + READ pointers1(a), pointers2(a) + IF pointers1(a) = 999 THEN GOTO 2 +NEXT +2 +nl = a + +END SUB + +SUB mulcor +suur = 0 +FOR a = 0 TO np +IF ABS(x(a)) > suur THEN suur = ABS(x(a)) +IF ABS(y(a)) > suur THEN suur = ABS(y(a)) +IF ABS(z(a)) > suur THEN suur = ABS(z(a)) +NEXT a +ksuur = 100 / suur + +FOR a = 0 TO np +x(a) = x(a) * ksuur +y(a) = y(a) * ksuur +z(a) = z(a) * ksuur +NEXT a +END SUB + +SUB nait3d + +DO + + Deg1 = Deg1 + d1 + Deg2 = Deg2 + d2 + Deg3 = Deg3 + d3 + + IF Deg1 <= 0 THEN Deg1 = Deg1 + 360 + IF Deg2 <= 0 THEN Deg2 = Deg2 + 360 + IF Deg3 <= 0 THEN Deg3 = Deg3 + 360 + + IF Deg1 >= 360 THEN Deg1 = Deg1 - 360 + IF Deg2 >= 360 THEN Deg2 = Deg2 - 360 + IF Deg3 >= 360 THEN Deg3 = Deg3 - 360 + + C1& = Cosine&(Deg1): S1& = Sine&(Deg1) + C2& = Cosine&(Deg2): S2& = Sine&(Deg2) + C3& = Cosine&(Deg3): S3& = Sine&(Deg3) + +FOR a = 0 TO np - 1 +R = a +Xo = x(R): Yo = y(R): Zo = z(R) + +X1 = (Xo * C1& - Yo * S1&) \ 1024 +Y1 = (Xo * S1& + Yo * C1&) \ 1024 + +X2& = (X1 * C2& - Zo * S2&) \ 1024 +z1 = (X1 * S2& + Zo * C2&) \ 1024 + +Y2& = (Y1 * C3& - z1 * S3&) \ 1024 +z2 = (Y1 * S3& + z1 * C3&) \ 1024 + +z2 = z2 + 300 +Xn(R) = 320 + (X2& / z2 * 500) +Yn(R) = 240 + (Y2& / z2 * 500) +NEXT + + +FOR a1 = 0 TO nl - 1 +F1 = pointers1(a1) +S1 = pointers2(a1) + +Xn = Xn(F1) +Yn = Yn(F1) + +X1 = Xn(S1) +Y1 = Yn(S1) + +LINE (Xs1(a1), Ys1(a1))-(Xe1(a1), Ye1(a1)), 0 +LINE (X1, Y1)-(Xn, Yn), 15 + + +Xs1(a1) = X1: Ys1(a1) = Y1 +Xe1(a1) = Xn: Ye1(a1) = Yn +NEXT + + +K$ = INKEY$ +IF K$ <> "" THEN + +SELECT CASE K$ + +CASE CHR$(0) + CHR$(72) +d1 = d1 + 1 + +CASE CHR$(0) + CHR$(80) +d1 = d1 - 1 + +CASE CHR$(0) + CHR$(75) +d2 = d2 - 1 + +CASE CHR$(0) + CHR$(77) +d2 = d2 + 1 + +CASE "w" +d3 = d3 - 1 + +CASE "z" +d3 = d3 + 1 + +CASE " " +d1 = d1 / 2 +d2 = d2 / 2 +d3 = d3 / 2 + +CASE CHR$(27) +SYSTEM + +END SELECT +END IF + +LOOP +END SUB + diff --git a/graphics/3D/04vann2.bas b/graphics/3D/04vann2.bas new file mode 100755 index 0000000..8c30f0a --- /dev/null +++ b/graphics/3D/04vann2.bas @@ -0,0 +1,463 @@ +DECLARE SUB ruut2 (x!, y!, z!, s!) +DECLARE SUB ruut (x!, y!, z!, s!) +DECLARE SUB kuus (x, y, z, s) +DECLARE SUB porand () +DECLARE SUB addp (x, y, z) +' kursor keys and to z, w - rotate +' - speed down +' q - quit + +DECLARE SUB start () +DECLARE SUB addsq (x1%, y1%, z1%) +DECLARE SUB getcor () +DECLARE SUB mulcor () +DECLARE SUB nait3d () +DECLARE SUB calcsin () +DIM SHARED xn(4000), yn(4000), zn(4000) +DIM SHARED x(4000), y(4000), z(4000) + +DIM SHARED xo(4000), yo(4000), zo(4000) +DIM SHARED point1(4000), point2(4000) +DIM SHARED col(4000) +DIM SHARED nump, numl +DIM SHARED myx, myy, myz, mye, myk + +myx = 0 +myy = 0 +myz = -1000 + + + +start + +nait3d + +SUB addp (x, y, z) +c = 1 + +xn(nump + 1) = -100 + x +yn(nump + 1) = y +zn(nump + 1) = -100 + z + +xn(nump + 2) = 100 + x +yn(nump + 2) = y +zn(nump + 2) = -100 + z + +xn(nump + 3) = 100 + x +yn(nump + 3) = y +zn(nump + 3) = 100 + z + +xn(nump + 4) = -100 + x +yn(nump + 4) = y +zn(nump + 4) = 100 + z + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = c + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = c + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = c + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 +col(numl + 4) = c + +nump = nump + 4 +numl = numl + 4 + +END SUB + +SUB getcor + +xn(nump + 1) = -150 +yn(nump + 1) = -125 +zn(nump + 1) = -200 + +xn(nump + 2) = 150 +yn(nump + 2) = -125 +zn(nump + 2) = -200 + +xn(nump + 3) = 150 +yn(nump + 3) = 125 +zn(nump + 3) = -200 + +xn(nump + 4) = -150 +yn(nump + 4) = 125 +zn(nump + 4) = -200 + + +xn(nump + 5) = -150 +yn(nump + 5) = -125 +zn(nump + 5) = 200 + +xn(nump + 6) = 150 +yn(nump + 6) = -125 +zn(nump + 6) = 200 + +xn(nump + 7) = 150 +yn(nump + 7) = 125 +zn(nump + 7) = 200 + +xn(nump + 8) = -150 +yn(nump + 8) = 125 +zn(nump + 8) = 200 + + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 + +point1(numl + 5) = nump + 5 +point2(numl + 5) = nump + 6 + +point1(numl + 6) = nump + 6 +point2(numl + 6) = nump + 7 + +point1(numl + 7) = nump + 7 +point2(numl + 7) = nump + 8 + +point1(numl + 8) = nump + 8 +point2(numl + 8) = nump + 5 + +point1(numl + 9) = nump + 5 +point2(numl + 9) = nump + 1 + +point1(numl + 10) = nump + 6 +point2(numl + 10) = nump + 2 + +point1(numl + 11) = nump + 7 +point2(numl + 11) = nump + 3 + +point1(numl + 12) = nump + 8 +point2(numl + 12) = nump + 4 + +nump = nump + 8 +numl = numl + 12 + + + + +xn(nump + 1) = -150 +yn(nump + 1) = -125 + 201 +zn(nump + 1) = 0 + +xn(nump + 2) = -150 +yn(nump + 2) = -125 + 201 +zn(nump + 2) = 89 + +xn(nump + 3) = -150 +yn(nump + 3) = -125 +zn(nump + 3) = 89 + +xn(nump + 4) = -150 +yn(nump + 4) = -125 +zn(nump + 4) = 0 + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 + +nump = nump + 4 +numl = numl + 4 + + +FOR x = -1000 TO 1000 STEP 250 +FOR z = -1000 TO 1000 STEP 250 +'addp x, -200, z +'addp x, 200, z +NEXT z +NEXT x +porand + +END SUB + +SUB kuus (x, y, z, s) + +b = 0 +f = .3925 +FOR a = 0 + f TO 6 + f STEP 6.28 / 8 +x1 = SIN(a) * s +y1 = COS(a) * s +b = b + 1 + +xn(nump + b) = x1 + x +yn(nump + b) = y +zn(nump + b) = y1 + z + +NEXT a + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = 12 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = 12 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = 12 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 5 +col(numl + 4) = 12 + +point1(numl + 5) = nump + 5 +point2(numl + 5) = nump + 6 +col(numl + 5) = 12 + + +point1(numl + 6) = nump + 6 +point2(numl + 6) = nump + 7 +col(numl + 6) = 12 + +point1(numl + 7) = nump + 7 +point2(numl + 7) = nump + 8 +col(numl + 7) = 12 + +point1(numl + 8) = nump + 8 +point2(numl + 8) = nump + 1 +col(numl + 8) = 12 + +nump = nump + b +numl = numl + 8 +'LOCATE 1, 1 +'PRINT b + + + + +END SUB + +SUB nait3d + +1 + +myx = myx + SIN(deg1) * mye +myz = myz + COS(deg1) * mye + +myx = myx + COS(deg1) * myk +myz = myz - SIN(deg1) * myk + +deg1 = deg1 + d1 +Deg2 = Deg2 + d2 + +C1 = COS(deg1): S1 = SIN(deg1) +C2 = COS(Deg2): S2 = SIN(Deg2) + +FOR a = 1 TO nump + +xo = xn(a) - myx +yo = -yn(a) - myy +zo = zn(a) - myz + +x1 = (xo * C1 - zo * S1) +z1 = (xo * S1 + zo * C1) + +y1 = (yo * C2 - z1 * S2) +z2 = (yo * S2 + z1 * C2) + + +xo(a) = x(a) +yo(a) = y(a) +IF z2 < 20 THEN +x(a) = -1 +ELSE +x(a) = 320 + (x1 / z2 * 500) +y(a) = 240 + (y1 / z2 * 500) +END IF +NEXT + + +FOR a = 1 TO numl +p1 = point1(a) +p2 = point2(a) +IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 +IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) +NEXT + + +K$ = INKEY$ +IF K$ <> "" THEN + +SELECT CASE K$ + +CASE CHR$(0) + "P" +mye = mye - 3 + +CASE CHR$(0) + "H" +mye = mye + 3 + +CASE CHR$(0) + "M" +myk = myk + 3 + +CASE CHR$(0) + "K" +myk = myk - 3 + +CASE "+" +myy = myy + 3 + +CASE "-" +myy = myy - 3 + +CASE "6" +d1 = d1 + .01 + +CASE "4" +d1 = d1 - .01 + +CASE "8" +d2 = d2 - .01 + +CASE "2" +d2 = d2 + .01 + + +CASE " " +d1 = d1 / 2 +d2 = d2 / 2 +d3 = d3 / 2 +mye = mye / 2 +myk = myk / 2 + +CASE "q" +SYSTEM + +CASE CHR$(27) +SYSTEM +END SELECT +END IF + +GOTO 1 +END SUB + +SUB porand + +FOR x = -100 TO 0 STEP 12.067 + .3 +FOR z = -100 TO 0 STEP 12.067 + .3 +kuus x, -125, z, 6.53 +ruut x + 6.033 + .15, -125, z + 6.033 + .15, 3.111 + .3 +NEXT z +NEXT x + +FOR y = -100 TO 0 STEP 20.3 +FOR x = -100 TO 0 STEP 20.3 +ruut2 x, y, 200, 10 +NEXT x +NEXT y + + +END SUB + +SUB ruut (x, y, z, s) +xn(nump + 1) = x +yn(nump + 1) = y +zn(nump + 1) = z + s + +xn(nump + 2) = x + s +yn(nump + 2) = y +zn(nump + 2) = z + +xn(nump + 3) = x +yn(nump + 3) = y +zn(nump + 3) = z - s + +xn(nump + 4) = x - s +yn(nump + 4) = y +zn(nump + 4) = z + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = 10 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = 10 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = 10 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 +col(numl + 4) = 10 + +nump = nump + 4 +numl = numl + 4 +END SUB + +SUB ruut2 (x, y, z, s) +xn(nump + 1) = x - s +yn(nump + 1) = y - s +zn(nump + 1) = z + +xn(nump + 2) = x + s +yn(nump + 2) = y - s +zn(nump + 2) = z + +xn(nump + 3) = x + s +yn(nump + 3) = y + s +zn(nump + 3) = z + +xn(nump + 4) = x - s +yn(nump + 4) = y + s +zn(nump + 4) = z + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = 14 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = 14 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = 14 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 +col(numl + 4) = 14 + +nump = nump + 4 +numl = numl + 4 + +END SUB + +SUB start +SCREEN 12 +CLS + +FOR a = 1 TO 4000 +col(a) = 15 +NEXT a + +nump = 0 +numl = 0 + + +getcor + +END SUB + diff --git a/graphics/3D/3dSynthezier/.project b/graphics/3D/3dSynthezier/.project new file mode 100755 index 0000000..969bddf --- /dev/null +++ b/graphics/3D/3dSynthezier/.project @@ -0,0 +1,11 @@ + + + 3dSynthezier + + + + + + + + diff --git a/graphics/3D/3dSynthezier/bin/3dparse.bas b/graphics/3D/3dSynthezier/bin/3dparse.bas new file mode 100755 index 0000000..44202a1 --- /dev/null +++ b/graphics/3D/3dSynthezier/bin/3dparse.bas @@ -0,0 +1,444 @@ +' by Svjatoslav Agejenko +' homeage: http://svjatoslav.eu +' e-mail: svjatoslavagejenko@gmail.com + +' Before running, make sure include path is correct. See below. + +DECLARE SUB parsel (a$) +DECLARE SUB stat2 (b!) +DECLARE SUB stat () +DECLARE SUB getchc (a$, b!) +DECLARE SUB start () +DECLARE SUB qui () +DECLARE SUB flushpoly (a!) +DECLARE SUB usemtl (a$) +DECLARE SUB flushp () +DECLARE SUB parse (a$) +DECLARE SUB geth (b!) +DECLARE SUB cmd (a$) +DECLARE SUB getson (a$) +DIM SHARED px(1 TO 1000) +DIM SHARED py(1 TO 1000) +DIM SHARED pz(1 TO 1000) +DIM SHARED nump +DIM SHARED numpa +DIM SHARED numpo + +DIM SHARED fil(1 TO 100) +DIM SHARED mitus +DIM SHARED sona$(1 TO 20) +DIM SHARED res + +DIM SHARED mtlm +DIM SHARED mtl$(1 TO 50) +DIM SHARED mtlp1(1 TO 50, 1 TO 100) +DIM SHARED mtlp2(1 TO 50, 1 TO 100) +DIM SHARED mtlp3(1 TO 50, 1 TO 100) +DIM SHARED mtlp4(1 TO 50, 1 TO 100) +DIM SHARED mtll(1 TO 50) +DIM SHARED cmtl + +DIM SHARED stkf(1 TO 500) +DIM SHARED stks(1 TO 500) +DIM SHARED stkp, fc, ipath$ + +DIM SHARED chc$(1 TO 10, 1 TO 500) +DIM SHARED chcl(1 TO 10) +DIM SHARED chcf$(1 TO 10) +DIM SHARED chct(1 TO 10) +DIM SHARED chctim +DIM SHARED mtmprs +DIM SHARED tmr + +DIM SHARED var$(0 TO 100) +DIM SHARED flag(1 TO 50, 0 TO 9) +DIM SHARED cstatt, cstatm + + +ipath$ = "c:\3dgen\include\" ' include path + + + +start + +IF COMMAND$ = "" THEN END +CLS + +cmd "obj ~" + COMMAND$ +qui +CLOSE #res +fil(res) = 0 + +PRINT "done" +SYSTEM + +SUB cmd (z$) +a$ = z$ +IF LEFT$(a$, 1) = "?" THEN +IF flag(mtmprs, VAL(RIGHT$(LEFT$(a$, 2), 1))) = 1 THEN a$ = RIGHT$(a$, LEN(a$) - 3) ELSE GOTO 10 +END IF +getson a$ +SELECT CASE sona$(1) +CASE "end" +qui +PRINT "terminated from file" +SYSTEM + +CASE "warn" +COLOR 12 +PRINT sona$(2) +COLOR 7 +b$ = INPUT$(1) + +CASE "p" +nump = nump + 1 +numpa = numpa + 1 +x = VAL(sona$(2)) +y = VAL(sona$(3)) +z = VAL(sona$(4)) + +FOR b = stkp TO 1 STEP -1 +SELECT CASE stkf(b) +CASE 1 +c1 = SIN(stks(b) / fc) +s1 = COS(stks(b) / fc) +z1 = x * c1 + z * s1 +x1 = x * s1 - z * c1 +x = x1 +z = z1 + +CASE 2 +c1 = SIN(stks(b) / fc) +s1 = COS(stks(b) / fc) +z1 = y * c1 + z * s1 +y1 = y * s1 - z * c1 +y = y1 +z = z1 + +CASE 3 +s1 = SIN(stks(b) / fc) +c1 = COS(stks(b) / fc) +y1 = y * c1 + x * s1 +x1 = y * s1 - x * c1 +x = x1 +y = y1 + +CASE 10 +x = x + stks(b) +CASE 11 +y = y + stks(b) +CASE 12 +z = z + stks(b) +CASE 20 +x = x - stks(b) +CASE 21 +y = y - stks(b) +CASE 22 +z = z - stks(b) +CASE 30 +x = x * stks(b) +CASE 31 +y = y * stks(b) +CASE 32 +z = z * stks(b) +END SELECT +NEXT b + +px(nump) = x +py(nump) = y +pz(nump) = z +IF nump > 900 THEN flushp + +CASE "here" +numpo = numpa + +CASE "mtl" +usemtl sona$(2) + +CASE "mtlrnd" +b = INT(RND * (mitus - 1)) + 2 +usemtl sona$(b) + +CASE "f" +IF mtll(cmtl) > 90 THEN flushpoly cmtl +b = mtll(cmtl) +b = b + 1 +mtll(cmtl) = b +mtlp1(cmtl, b) = VAL(sona$(2)) + numpo +mtlp2(cmtl, b) = VAL(sona$(3)) + numpo +mtlp3(cmtl, b) = VAL(sona$(4)) + numpo +IF sona$(5) = "" THEN mtlp4(cmtl, b) = -32000 ELSE mtlp4(cmtl, b) = VAL(sona$(5)) + numpo + +CASE "obj" +d = stkp +FOR a = mitus TO 3 STEP -1 +b$ = LEFT$(sona$(a), 2) +c = VAL(RIGHT$(sona$(a), LEN(sona$(a)) - 2)) +stkp = stkp + 1 +stks(stkp) = c +SELECT CASE b$ +CASE "xz" +stkf(stkp) = 1 +CASE "yz" +stkf(stkp) = 2 +CASE "xy" +stkf(stkp) = 3 +CASE "x+" +stkf(stkp) = 10 +CASE "y+" +stkf(stkp) = 11 +CASE "z+" +stkf(stkp) = 12 +CASE "x-" +stkf(stkp) = 20 +CASE "y-" +stkf(stkp) = 21 +CASE "z-" +stkf(stkp) = 22 +CASE "x*" +stkf(stkp) = 30 +CASE "y*" +stkf(stkp) = 31 +CASE "z*" +stkf(stkp) = 32 +END SELECT +NEXT a + +a$ = sona$(2) +mtmprs = mtmprs + 1 +cstatt = cstatt + 1 +LOCATE 10 + mtmprs, 1 +PRINT a$ +getchc a$, b +c = 1 +2 +d$ = chc$(b, c) +cmd d$ +IF chcf$(b) <> a$ THEN getchc a$, b +c = c + 1 +IF c <= chcl(b) THEN GOTO 2 +tmr = tmr + 1 +IF tmr > 20 THEN tmr = 0: stat +LOCATE 10 + mtmprs, 1 +PRINT SPACE$(LEN(a$)) +mtmprs = mtmprs - 1 + +stkp = d + +CASE "#" + +CASE "out" +geth res +OPEN sona$(2) + ".obj" FOR OUTPUT AS #res +PRINT #res, "mtllib result.mtl" + +CASE "rnd" +b = INT(RND * (mitus - 1)) + 2 +c$ = sona$(b) +f$ = "" +FOR d = 1 TO LEN(c$) +e$ = RIGHT$(LEFT$(c$, d), 1) +IF e$ = "^" THEN e$ = " " +f$ = f$ + e$ +NEXT d +cmd f$ + +CASE "set" +var$(VAL(sona$(2))) = sona$(3) + +CASE "cmp" +IF sona$(3) = sona$(4) THEN b = 1 ELSE b = 0 +flag(mtmprs, VAL(sona$(2))) = b +END SELECT + +10 +END SUB + +SUB flushp + +FOR a = 1 TO nump +PRINT #res, "v " + STR$(px(a)) + " " + STR$(py(a)) + " " + STR$(-pz(a)) +NEXT a +nump = 0 + +END SUB + +SUB flushpoly (a) +IF mtll(a) = 0 THEN GOTO 5 + +PRINT #res, "usemtl " + mtl$(a) +FOR b = 1 TO mtll(a) +c$ = "f " + STR$(mtlp1(a, b) + 1) + STR$(mtlp2(a, b) + 1) + STR$(mtlp3(a, b) + 1) +IF mtlp4(a, b) <> -32000 THEN c$ = c$ + STR$(mtlp4(a, b) + 1) +PRINT #res, c$ +NEXT b +mtll(a) = 0 + +5 +END SUB + +SUB getchc (a$, b) +'DIM SHARED cstatt, cstatm +FOR c = 1 TO 10 +IF chcf$(c) = a$ THEN b = c: GOTO 6 +NEXT c + +d = 32000 +FOR c = 1 TO 10 +IF chct(c) < d THEN d = chct(c): e = c +NEXT c +g = 0 +geth f +'PRINT "file " + a$ + " loaded" +cstatm = cstatm + 1 +b$ = a$ +IF LEFT$(b$, 1) = "~" THEN b$ = RIGHT$(b$, LEN(b$) - 1) ELSE b$ = ipath$ + b$ +OPEN b$ + ".3d" FOR INPUT AS #f +8 +IF EOF(f) <> 0 THEN GOTO 7 +LINE INPUT #f, c$ +IF (LEFT$(c$, 1) <> "#") AND (c$ <> SPACE$(LEN(c$))) THEN g = g + 1: chc$(e, g) = c$ +GOTO 8 +7 +CLOSE #f +fil(f) = 0 +chcl(e) = g +b = e +chcf$(e) = a$ +stat +6 +chctim = chctim + 1 +chct(b) = chctim + +IF chctim > 10000 THEN +FOR c = 1 TO 10 +chct(c) = chct(c) / 2 +NEXT c +chctim = chctim / 2 +END IF +END SUB + +SUB geth (b) + +FOR a = 1 TO 100 +IF fil(a) = 0 THEN fil(a) = 1: b = a: GOTO 1 +NEXT a +1 +'PRINT "handle ", b, " allocated" + +END SUB + +SUB getson (a$) +b$ = a$ + " " + +FOR a = 1 TO 20 +sona$(a) = "" +NEXT a + +mitus = 0 +e = 1 +FOR c = 1 TO LEN(b$) +d$ = RIGHT$(LEFT$(b$, c), 1) +IF d$ = " " OR d$ = CHR$(9) THEN +e = 1 +ELSE +IF e = 1 THEN mitus = mitus + 1 +sona$(mitus) = sona$(mitus) + d$ +e = 0 +END IF +NEXT c + +FOR c = 1 TO mitus +IF LEFT$(sona$(c), 1) = "%" THEN +sona$(c) = var$(VAL(RIGHT$(sona$(c), LEN(sona$(c)) - 1))) +END IF +NEXT c +END SUB + +SUB qui + +flushp +FOR a = 1 TO mtlm +flushpoly a +NEXT a +stat +END SUB + +SUB start +RANDOMIZE TIMER + +FOR a = 1 TO 50 +FOR b = 0 TO 9 +flag(a, b) = 0 +NEXT b +NEXT a + +FOR a = 0 TO 100 +var$(a) = "" +NEXT a + +FOR a = 1 TO 10 +FOR b = 1 TO 500 +chc$(a, b) = "" +NEXT b +chcl(a) = 0 +chcf$(a) = "" +chct(a) = 0 +NEXT a + +FOR a = 1 TO 50 +mtll(a) = 0 +NEXT a + +FOR a = 1 TO 100 +fil(a) = 0 +NEXT a +nump = 0 +numpa = 0 +numpo = 0 +mtlm = 0 +stkp = 0 +fc = 180 / 3.141285 +chctim = 0 +mtmprs = 0 +cstatt = 0 +cstatm = 0 +END SUB + +SUB stat +LOCATE 1, 1 +FOR a = 1 TO 10 +PRINT a, chcf$(a), chct(a), chcl(a) +NEXT a +COLOR 10 +LOCATE 1, 50 +PRINT cstatt; "parsed" +LOCATE 2, 50 +PRINT cstatm; "chache miss" +LOCATE 3, 50 +PRINT INT(cstatm / cstatt * 100); "% chache miss " + +COLOR 7 + +END SUB + +SUB stat2 (b) +CLS +FOR a = 1 TO chcl(b) +PRINT chc$(b, a) +NEXT a + +c$ = INPUT$(1) +END SUB + +SUB usemtl (a$) +FOR b = 1 TO mtlm +IF mtl$(b) = a$ THEN cmtl = b: GOTO 4 +NEXT b + +mtlm = mtlm + 1 +mtl$(mtlm) = a$ +cmtl = mtlm +4 +END SUB + diff --git a/graphics/3D/3dSynthezier/bin/city1.3d b/graphics/3D/3dSynthezier/bin/city1.3d new file mode 100755 index 0000000..04279fa --- /dev/null +++ b/graphics/3D/3dSynthezier/bin/city1.3d @@ -0,0 +1,46 @@ +# small city block + +out city1 + +obj maja xz90 +obj maja xz90 x+48 +obj maja xz90 x+96 +obj maja x+36 z-84 + +# korgel olevad autod +obj cars x+25 +obj cars x+27 z-50 +obj cars x+26 z-25 y-10 +obj cars x+25 z-40 y-20 + +obj cars x+73 z-25 y+1 +obj cars x+75 z-50 y-2 +obj cars xz-90 z-60 +obj cars xz-90 z-62 x+50 +obj cars xz-90 z+60 x+1 +obj cars xz-90 z+61 x+52 + +obj cars x+121 z-100 y+1 +obj cars x+122 z-70 y-5 +obj cars x+123 y+2 +obj cars x+122 z-38 y-2 + +# allpool olevad autod +obj cars x+25 y-30 +obj cars x+27 z-50 y-50 +obj cars x+26 z-25 y-40 +obj cars x+25 z-40 y-50 + +obj cars x+73 z-25 y-34 +obj cars x+75 z-50 y-36 +obj cars xz-90 z-60 y-43 +obj cars xz-90 z-62 x+50 y-29 +obj cars xz-90 z+60 x+1 y-37 +obj cars xz-90 z+61 x+52 y-33 + +obj cars x+121 z-100 y-41 +obj cars x+122 z-70 y-45 +obj cars x+123 y-32 +obj cars x+122 z-38 y-34 + + diff --git a/graphics/3D/3dSynthezier/bin/city1.bat b/graphics/3D/3dSynthezier/bin/city1.bat new file mode 100755 index 0000000..d4fb06e --- /dev/null +++ b/graphics/3D/3dSynthezier/bin/city1.bat @@ -0,0 +1,6 @@ +@echo off + +rem This script will instruct generator to make "city1". +rem Note: When specifying source file, avoid extension. + +qb /RUN 3dparse.bas /CMD city1 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/bin/city2.3d b/graphics/3D/3dSynthezier/bin/city2.3d new file mode 100755 index 0000000..8215a3e --- /dev/null +++ b/graphics/3D/3dSynthezier/bin/city2.3d @@ -0,0 +1,45 @@ +# Big city, be prepared to wait ~10 min, on P133. + +out city2 +obj blk4 y-145 +obj blk4 y-116 +obj blk4 y-87 +obj blk4 y-58 +obj blk4 y-29 +obj blk4 + +mtl kivi +obj ring x*20 z*20 y+26 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 + +mtl kivi +obj ring x*20 z*20 y+26 z+64.6412 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 z+64.6412 + +mtl kivi +obj ring x*20 z*20 y+26 x+55.9809 z+32.3206 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 x+55.9809 z+32.3206 + +mtl kivi +obj ring x*20 z*20 y+26 x+55.9809 z-32.3206 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 x+55.9809 z-32.3206 + +mtl kivi +obj ring x*20 z*20 y+26 z-64.6412 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 z-64.6412 + +mtl kivi +obj ring x*20 z*20 y+26 x-55.9809 z-32.3206 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 x-55.9809 z-32.3206 + +mtl kivi +obj ring x*20 z*20 y+26 x-55.9809 z+32.3206 +mtl glass_transp +obj kuppel x*20 z*20 y*10 y+26 x-55.9809 z+32.3206 + diff --git a/graphics/3D/3dSynthezier/bin/city2.bat b/graphics/3D/3dSynthezier/bin/city2.bat new file mode 100755 index 0000000..6aa7f5a --- /dev/null +++ b/graphics/3D/3dSynthezier/bin/city2.bat @@ -0,0 +1,6 @@ +@echo off + +rem This script will instruct generator to make "city2". +rem Note: When specifying source file, avoid extension. + +qb /RUN 3dparse.bas /CMD city2 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/bin/result.mtl b/graphics/3D/3dSynthezier/bin/result.mtl new file mode 100755 index 0000000..9d689f1 --- /dev/null +++ b/graphics/3D/3dSynthezier/bin/result.mtl @@ -0,0 +1,108 @@ +# Wavefront material file +# Must be in the same directory with parsed modules. + +newmtl default + Ns 32 + d 1 + illum 2 + Kd 0.4 0.4 0.4 + Ks 0.7 0.7 0.7 + Ka 0.3 0.3 0.3 + +newmtl muld + Ns 32 + d 1 + illum 2 + Kd 0.247843 0.17098 0.158431 + Ks 0 0 0 + Ka 0.185882 0.128235 0.118824 + +newmtl kivi + Ns 32 + d 1 + illum 2 + Kd 0.24935 0.216378 0.24935 + Ks 0 0 0 + Ka 0.128955 0.111903 0.128955 + +newmtl klaastume + Ns 32 + d 1 + illum 2 + Kd 0.139608 0.0313726 0.108235 + Ks 1.6633 0.373775 1.28952 + Ka 0.104706 0.0235294 0.0811765 + +newmtl klaashele + Ns 32 + d 1 + illum 2 + Kd 0.0925798 0.104637 0.109804 + Ks 3.54381 4.00533 4.20313 + Ka 0.737332 0.833356 0.87451 + +newmtl seintellis + Ns 32 + d 1 + illum 2 + Kd 0.476309 0.432511 0.0875971 + Ks 0 0 0 + Ka 0.0642215 0.058316 0.0118108 + +newmtl pronks + Ns 4 + d 1 + illum 2 + Kd 0.238431 0.148435 0.0584391 + Ks 0.636863 0.396478 0.156094 + Ka 0.0627451 0.0390619 0.0153787 + +newmtl solar + Ns 32 + d 1 + illum 2 + Kd 0.189927 0.10519 0.745098 + Ks 1.27451 0.705882 5 + Ka 0.0609766 0.0337716 0.239216 + +newmtl metal_yellow + Ns 32 + d 1 + illum 2 + Kd 0.619608 0.619608 0 + Ks 3.01563 3.01563 0 + Ka 0.3 0.3 0 + +newmtl metal_blue + Ns 32 + d 1 + illum 2 + Kd 0.243137 0.243137 0.666667 + Ks 0.695221 0.695221 1.90625 + Ka 0.109412 0.109412 0.3 + +newmtl light_red + Ns 32 + d 1 + illum 2 + Kd 0.443137 0 0 + Ks 3.8125 0 0 + Ka 0.3 0 0 + + +newmtl light_white + Ns 32 + d 1 + illum 2 + Kd 0.497347 0.528135 0.603922 + Ks 2.35478 2.50055 2.85938 + Ka 0.247059 0.262353 0.3 + +newmtl glass_transp + Ns 39 + d 0.572549 + illum 2 + Kd 0.129412 0.427451 0.776471 + Ks 0.129412 0.427451 0.776471 + Ka 0.000985995 0.00325677 0.00591597 + diff --git a/graphics/3D/3dSynthezier/doc/axes.png b/graphics/3D/3dSynthezier/doc/axes.png new file mode 100755 index 0000000..f11548d Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/axes.png differ diff --git a/graphics/3D/3dSynthezier/doc/c1.jpg b/graphics/3D/3dSynthezier/doc/c1.jpg new file mode 100755 index 0000000..7d724be Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/c1.jpg differ diff --git a/graphics/3D/3dSynthezier/doc/c2.jpg b/graphics/3D/3dSynthezier/doc/c2.jpg new file mode 100755 index 0000000..16d56a5 Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/c2.jpg differ diff --git a/graphics/3D/3dSynthezier/doc/c3.jpg b/graphics/3D/3dSynthezier/doc/c3.jpg new file mode 100755 index 0000000..0d7fb88 Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/c3.jpg differ diff --git a/graphics/3D/3dSynthezier/doc/city1.jpg b/graphics/3D/3dSynthezier/doc/city1.jpg new file mode 100755 index 0000000..def4065 Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/city1.jpg differ diff --git a/graphics/3D/3dSynthezier/doc/city2.jpg b/graphics/3D/3dSynthezier/doc/city2.jpg new file mode 100755 index 0000000..0173e47 Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/city2.jpg differ diff --git a/graphics/3D/3dSynthezier/doc/city3.jpg b/graphics/3D/3dSynthezier/doc/city3.jpg new file mode 100755 index 0000000..20fc33c Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/city3.jpg differ diff --git a/graphics/3D/3dSynthezier/doc/city_hexagon.blend b/graphics/3D/3dSynthezier/doc/city_hexagon.blend new file mode 100755 index 0000000..6ab7003 Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/city_hexagon.blend differ diff --git a/graphics/3D/3dSynthezier/doc/city_square.blend b/graphics/3D/3dSynthezier/doc/city_square.blend new file mode 100755 index 0000000..a532224 Binary files /dev/null and b/graphics/3D/3dSynthezier/doc/city_square.blend differ diff --git a/graphics/3D/3dSynthezier/doc/index.html b/graphics/3D/3dSynthezier/doc/index.html new file mode 100755 index 0000000..19c3afc --- /dev/null +++ b/graphics/3D/3dSynthezier/doc/index.html @@ -0,0 +1,155 @@ + + + + +3D Synthezier + + +

3D Synthezier

+Other applications hosted on svjatoslav.eu +

+Program author: +
Svjatoslav Agejenko +
Homepage: http://svjatoslav.eu +
E-mail: svjatoslav@svjatoslav.eu +

+Distributed under GNU GENERAL PUBLIC LICENSE Version 2. + +
+
+
+	
+This QBasic program was written by me in around 2003. It parses scene definition language and creates 3D world based on it.
+Result will be in a wavefront obj file, witch can be then visualized using external renderer.
+
+Basic concept of defining scene is:
+  Simple and primitive objects are created on point and polygon level.
+  More complex ones can be created my combinig already existing ones,
+  while applying various transformations on them.
+
+Objects with all its subobjects can be rotated, flipped or resized omong any axis.
+Generator has built in cache for data input and output to minimize file access.
+
+
+ +
Examples: +
+
+
Attempt to make "Fifth Eelement" like city. +

+ +
+
Attempt to make "Fifth Eelement" like city. Night. +

+ +
+
Attempt to make "Fifth Eelement" like city. Night. +

+ + +
+
Hexangular city. +

+ +
+
Hexangular city, closer. +

+ +
+
Hexangular city, even closer. +

+
+ +
+
+
+I converted these 2 generated cities also to Blender format
+so you can explore them interactively :)
+
+Download:
+	Square city (3.5 MB)
+	Hexagonal city (20.3 MB)
+
+
+
+
+	System requirements
+	===================
+	
+DOS	(6.22 preferred)
+QBasic 	(4.5 preferred)
+
+
+      	Installation
+      	============
+      
+* Unpack ZIP file in any folder.
+* update include path inside  bin/3dparse.bas
+
+
+	Running program
+	===============
+
+Make sure you have QB binaries in your PATH.
+Execute  bin/city1.bat  or  bin/city2.bat to generate example citys.
+After parsing is finished appropriate *.obj files will
+appear in the  bin  directory holding generated scene.
+Visualize scene with your favourite renderer.
+(3D Studio MAX or Nugraf 3D rendering System will do)
+
+
+	Directory layout
+	================
+
+bin
+	3dparse.bas		3D generator main executable
+	city1.3d		city with square-like buildings
+	city2.3d		city with hexangular buildings
+	result.mtl		shared material library
+	*.bat			quick launch scripts
+doc				manual
+include				3D objects used to compose the scene
+	
+
+	Scene description language
+	==========================
+	(read examples...)
+	
+
+here			- defines new segment
+p  x y z		- defines new point
+f  p1 p2 p3 p4 		- defines new polygon,  p4  may be unused
+warn  message		- displays warning message, and wait for key
+end			- terminates parser
+mtl  material  		- selects material
+mtlrnd  material ...		- selects random material from list
+obj  object xz45 xy20 x+3 y*2	- includes sub object, can be rotated moved
+				or resized,
+				across X Y Z. If object name begin vith ~
+				then it will be loaded from current directory.
+				if object name ends with ~ then object will
+				be parsed directly from file, and not chached,
+				to allow loading of greater than 500 lines
+				files.
+	
+			
+				
+rnd  p^1^2^3 p^7^2^1  		- select random command to execute, ^ will be
+                                  converted to spaces.
+# whatever text                 - comment
+out  file                       - specify output file name, must be first command
+set  variable  contents       	- set variable contents, variable must be
+                                  number, contents can be string. max variables
+                                  is 100. first is 0.
+anycommand %1 anything          - inserts variable 1 contents info line
+cmp  flag string1 string2  	- compares strings, and inserts TRUE to flag, if
+                                  they are equal, else inserts FALSE. max 9 falgs
+                                  ,0 first. Each subobject has its own flags.
+?flag anycommand              	- executes command if flag is true.
+                                  exapmle: ?3 obj car z*2 xy45
+dum                             - dummy function, does notheing
+
+
+
+ + diff --git a/graphics/3D/3dSynthezier/include/6nrk0s.3d b/graphics/3D/3dSynthezier/include/6nrk0s.3d new file mode 100755 index 0000000..906ff9b --- /dev/null +++ b/graphics/3D/3dSynthezier/include/6nrk0s.3d @@ -0,0 +1,6 @@ +# suur 6 nurkse maja kompleks koos korteritega + +obj blk3 +set 1 kivi +set 2 0 +obj nrk6 x*20 y*5 z*20 y+21 diff --git a/graphics/3D/3dSynthezier/include/6nrk2s.3d b/graphics/3D/3dSynthezier/include/6nrk2s.3d new file mode 100755 index 0000000..8a40ce1 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/6nrk2s.3d @@ -0,0 +1,8 @@ +# suur 6 nurkse maja kompleks koos korterite ja 2. sillaga + +obj blk3 +set 1 kivi +set 2 0 +obj nrk6 x*20 y*5 z*20 y+21 +obj bridgegl xz-90 y+22.5 x-1.5 z-17.3206 +obj bridgegl xz-30 y+22.5 x+14.25 z-9.9593 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/blk1.3d b/graphics/3D/3dSynthezier/include/blk1.3d new file mode 100755 index 0000000..661ff77 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/blk1.3d @@ -0,0 +1,15 @@ +# tavaline suur aken +here +p 0 0 0 +p 6 0 0 +p 6 -3 0 +p 0 -3 0 + +p 0.5 -0.5 -0.01 +p 5.5 -0.5 -0.01 +p 5.5 -2 -0.01 +p 0.5 -2 -0.01 +mtl seintellis +f 0 1 2 3 +mtlrnd klaashele klaastume +f 4 5 6 7 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/blk2.3d b/graphics/3D/3dSynthezier/include/blk2.3d new file mode 100755 index 0000000..b2828bf --- /dev/null +++ b/graphics/3D/3dSynthezier/include/blk2.3d @@ -0,0 +1,33 @@ +# v2ike aken koosparkimisplatsiga + +# rnd obj^car^xz90^x+4.5^z-1.7^y-2.5 # # + +here +p 0 0 0 +p 6 0 0 +p 6 -3 0 +p 0 -3 0 + +p 0.5 -0.5 -0.01 +p 2 -0.5 -0.01 +p 2 -2 -0.01 +p 0.5 -2 -0.01 + +p 2.5 -0.5 -0.01 +p 5.5 -0.5 -0.01 +p 5.5 -3 -0.01 +p 2.5 -3 -0.01 + +p 0 -3 0 +p 6 -3 0 +p 6 -3 -3 +p 0 -3 -3 + +mtl seintellis +f 0 1 2 3 +mtlrnd klaashele klaastume +f 4 5 6 7 +mtl pronks +f 8 9 10 11 +mtl kivi +f 12 13 14 15 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/blk3.3d b/graphics/3D/3dSynthezier/include/blk3.3d new file mode 100755 index 0000000..a62b82c --- /dev/null +++ b/graphics/3D/3dSynthezier/include/blk3.3d @@ -0,0 +1,34 @@ +# kuuenurkse maja korterite blokk + +obj krs2 +obj krs2 y+3 +obj krs2 y+6 +obj krs2 y+9 + +obj krs2 y+12 +obj krs2 y+15 +obj krs2 y+18 +obj krs2 y+21 + +here +p -12 -3 -20.7846 +p 12 -3 -20.7846 +p 24 -3 0 +p 12 -3 20.7846 +p -12 -3 20.7846 +p -24 -3 0 + +p -12 21 -20.7846 +p 12 21 -20.7846 +p 24 21 0 +p 12 21 20.7846 +p -12 21 20.7846 +p -24 21 0 + +mtl seintellis +f 0 1 2 3 +f 3 4 5 0 +f 6 7 8 9 +f 9 10 11 6 + + diff --git a/graphics/3D/3dSynthezier/include/blk4.3d b/graphics/3D/3dSynthezier/include/blk4.3d new file mode 100755 index 0000000..924f68a --- /dev/null +++ b/graphics/3D/3dSynthezier/include/blk4.3d @@ -0,0 +1,8 @@ +# 1 kompleks 7st, 6 nurkselt sildadega uhendatud elamu moodulitest +obj 6nrk0s +obj 6nrk2s z+64.6412 +obj 6nrk2s xz-60 x+55.9809 z+32.3206 +obj 6nrk2s xz-120 x+55.9809 z-32.3206 +obj 6nrk2s xz-180 z-64.6412 +obj 6nrk2s xz-240 x-55.9809 z-32.3206 +obj 6nrk2s xz-300 x-55.9809 z+32.3206 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/bridge.3d b/graphics/3D/3dSynthezier/include/bridge.3d new file mode 100755 index 0000000..d6dc47f --- /dev/null +++ b/graphics/3D/3dSynthezier/include/bridge.3d @@ -0,0 +1,5 @@ +obj handrail +obj handrail z+3 +set 1 kivi +set 2 0 +obj nrk4 x*3.2 y*0.2 xz-90 z+1.5 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/bridge1.3d b/graphics/3D/3dSynthezier/include/bridge1.3d new file mode 100755 index 0000000..e8563ae --- /dev/null +++ b/graphics/3D/3dSynthezier/include/bridge1.3d @@ -0,0 +1,36 @@ +obj bridge +obj bridge x+1 +obj bridge x+2 +obj bridge x+3 +obj bridge x+4 + +obj bridge x+5 +obj bridge x+6 +obj bridge x+7 +obj bridge x+8 +obj bridge x+9 + +obj bridge x+10 +obj bridge x+11 +obj bridge x+12 +obj bridge x+13 +obj bridge x+14 + +obj bridge x+15 +obj bridge x+16 +obj bridge x+17 +obj bridge x+18 +obj bridge x+19 + +obj bridge x+20 +obj bridge x+21 +obj bridge x+22 +obj bridge x+23 +obj bridge x+24 + +obj bridge x+25 +obj bridge x+26 +obj bridge x+27 +obj bridge x+28 +obj bridge x+29 + diff --git a/graphics/3D/3dSynthezier/include/bridgegl.3d b/graphics/3D/3dSynthezier/include/bridgegl.3d new file mode 100755 index 0000000..4bb43a5 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/bridgegl.3d @@ -0,0 +1,4 @@ +obj bridge1 +set 1 glass_transp +set 2 0 +obj nrk8 xz-90 x*30 z*3 z+1.5 y*2 y+1 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/bus.3d b/graphics/3D/3dSynthezier/include/bus.3d new file mode 100755 index 0000000..21f5753 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/bus.3d @@ -0,0 +1,52 @@ +obj bus_frnt +obj bus_frnt xz180 z+9 + +obj bus_wind x+2.5 y+1 z+2 +obj bus_wind x+2.5 y+1 z+3.5 +obj bus_wind x+2.5 y+1 z+5 + +obj bus_wind x*-1 x-2.5 y+1 z+2 +obj bus_wind x*-1 x-2.5 y+1 z+3.5 +obj bus_wind x*-1 x-2.5 y+1 z+5 + +obj flare_w x+1 z-0.01 +obj flare_w x*-1 x-1 z-0.01 +obj flare_r x+1 z+9.01 +obj flare_r x*-1 x-1 z+9.01 +here +p -2.5 1 0.5 +p 2.5 1 0.5 +p 2.5 -1 0.5 +p -2.5 -1 0.5 + +p -2.5 1 8.5 +p 2.5 1 8.5 +p 2.5 -1 8.5 +p -2.5 -1 8.5 + +p -2.5 1 2 +p 2.5 1 2 +p -1.5 2 2 +p 1.5 2 2 + +p -2.5 1 6.5 +p 2.5 1 6.5 +p -1.5 2 6.5 +p 1.5 2 6.5 + + +mtl metal_yellow +# f 0 1 5 4 +f 1 2 6 5 +f 2 3 7 6 +f 3 0 4 7 + +f 4 5 15 14 +f 4 12 14 +f 5 13 15 + +mtl klaashele +f 0 1 11 10 +f 0 8 10 +f 1 9 11 + diff --git a/graphics/3D/3dSynthezier/include/bus_frnt.3d b/graphics/3D/3dSynthezier/include/bus_frnt.3d new file mode 100755 index 0000000..62d4137 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/bus_frnt.3d @@ -0,0 +1,17 @@ +here +p -2 -0.5 0 +p 2 -0.5 0 +p 2 0.5 0 +p -2 0.5 0 + +p -2.5 -1 0.5 +p 2.5 -1 0.5 +p 2.5 1 0.5 +p -2.5 1 0.5 + +mtl metal_yellow +f 0 1 2 3 +f 0 1 5 4 +f 1 2 6 5 +f 2 3 7 6 +f 0 3 7 4 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/bus_wind.3d b/graphics/3D/3dSynthezier/include/bus_wind.3d new file mode 100755 index 0000000..c0f63de --- /dev/null +++ b/graphics/3D/3dSynthezier/include/bus_wind.3d @@ -0,0 +1,17 @@ +here +p 0 0 0 +p -1 1 0 +p -1 1 0.5 +p 0 0 0.5 + +p -1 1 1.5 +p 0 0 1.5 + +p -2.5 1 0 +p -2.5 1 1.5 + +mtl metal_yellow +f 0 1 2 3 +f 1 4 7 6 +mtl klaashele +f 2 3 5 4 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/car.3d b/graphics/3D/3dSynthezier/include/car.3d new file mode 100755 index 0000000..4d6258b --- /dev/null +++ b/graphics/3D/3dSynthezier/include/car.3d @@ -0,0 +1,33 @@ +obj car_frnt +obj car_frnt xz180 z+4 +obj flare_w x+0.25 z-0.01 +obj flare_w x*-1 x-0.25 z-0.01 +obj flare_r x+0.25 z+4.01 +obj flare_r x*-1 x-0.25 z+4.01 + +here +p -1 0.5 1 +p 1 0.5 1 +p 1 -0.5 1 +p -1 -0.5 1 + +p -1 0.5 3 +p 1 0.5 3 +p 1 -0.5 3 +p -1 -0.5 3 + +p -0.5 1.5 2.5 +p 0.5 1.5 2.5 + + + +mtl metal_yellow +# f 0 4 5 1 +f 1 5 6 2 +f 2 6 7 3 +f 3 7 4 0 +mtl klaashele +f 8 9 1 0 +f 8 0 4 +f 9 1 5 +f 8 9 5 4 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/car_frnt.3d b/graphics/3D/3dSynthezier/include/car_frnt.3d new file mode 100755 index 0000000..697b6f4 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/car_frnt.3d @@ -0,0 +1,17 @@ +here +p -0.5 0.25 0 +p 0.5 0.25 0 +p 0.5 -0.25 0 +p -0.5 -0.25 0 + +p -1 0.5 1 +p 1 0.5 1 +p 1 -0.5 1 +p -1 -0.5 1 + +mtl metal_yellow +f 0 1 2 3 +f 0 4 5 1 +f 1 5 6 2 +f 2 6 7 3 +f 3 7 4 0 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/cars.3d b/graphics/3D/3dSynthezier/include/cars.3d new file mode 100755 index 0000000..97e1482 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/cars.3d @@ -0,0 +1,10 @@ +obj bus xz190 y+1 +obj car xz175 z+20 y-0.5 +obj car xz182 yz10 x+5 z+50 y-0.2 +obj car xz170 yz-5 xy10 x+1 z+60 y-1.3 +obj car xz188 yz-2 xy-5 x+3 z+34 y+0.6 + +obj car xz5 yz1 xy15 x-5 z+55 y+0.23 +obj car xz-2 yz2 xy-3 x-10 z+32 y-1.1 +obj car xz-4 yz-8 xy-9 x-5 z+8 y+0.4 +rnd obj^car^xz3^yz-2^xy3^x-8^z+57^y+0.1 obj^pol^xz3^yz-2^xy3^x-8^z+57^y+0.1 diff --git a/graphics/3D/3dSynthezier/include/flare_r.3d b/graphics/3D/3dSynthezier/include/flare_r.3d new file mode 100755 index 0000000..39a35f2 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/flare_r.3d @@ -0,0 +1,9 @@ +here +p 0 0.3 0 +p 0.3 0.3 0 +p 0.3 0 0 +p 0 0 0 +p 0.4 0.15 0 +mtl light_red +f 0 1 2 3 +f 1 2 4 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/flare_w.3d b/graphics/3D/3dSynthezier/include/flare_w.3d new file mode 100755 index 0000000..65044d0 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/flare_w.3d @@ -0,0 +1,9 @@ +here +p 0 0.3 0 +p 0.3 0.3 0 +p 0.3 0 0 +p 0 0 0 +p 0.4 0.15 0 +mtl light_white +f 0 1 2 3 +f 1 2 4 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/handrail.3d b/graphics/3D/3dSynthezier/include/handrail.3d new file mode 100755 index 0000000..91f80fe --- /dev/null +++ b/graphics/3D/3dSynthezier/include/handrail.3d @@ -0,0 +1,8 @@ +# size x=1 y=1 z=0.1 + +set 1 pronks +set 2 1 +obj nrk8 xz-90 y*0.1 z*0.1 y+1 +set 2 0 +obj nrk8 x*0.07 y*0.07 yz-90 +obj nrk8 x*0.07 y*0.07 yz-90 x+0.5 diff --git a/graphics/3D/3dSynthezier/include/katus.3d b/graphics/3D/3dSynthezier/include/katus.3d new file mode 100755 index 0000000..78547d1 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/katus.3d @@ -0,0 +1,12 @@ +here +p 0 0 0 +p 96 0 0 +p 96 0 24 +p 0 0 24 + +mtl kivi +f 0 1 2 3 + +obj toru x+12 z+12 +obj toru x+36 z+12 +obj solar x+72 z+12 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/katus2.3d b/graphics/3D/3dSynthezier/include/katus2.3d new file mode 100755 index 0000000..7fb86bf --- /dev/null +++ b/graphics/3D/3dSynthezier/include/katus2.3d @@ -0,0 +1,19 @@ +here +p 0 0 0 +p 96 0 0 +p 96 0 24 +p 0 0 24 + +mtl kivi +f 0 1 2 3 + +obj toru x+12 z+12 +# obj toru x*0.2 z*0.2 y*0.5 x+36 z+12 +obj toru x*0.4 z*0.4 y*0.5 x+30 z+6 +obj toru x*0.4 z*0.4 y*0.5 x+30 z+18 +obj toru x*0.4 z*0.4 y*0.5 x+42 z+6 +obj toru x*0.4 z*0.4 y*0.5 x+42 z+18 + +obj bus x+60 y+1 z+2 +obj bus x+70 y+1 z+2 +obj bus x+80 y+1 z+2 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/katus3.3d b/graphics/3D/3dSynthezier/include/katus3.3d new file mode 100755 index 0000000..c8d0676 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/katus3.3d @@ -0,0 +1,31 @@ +here +p 0 0 0 +p 96 0 0 +p 96 0 24 +p 0 0 24 + +mtl kivi +f 0 1 2 3 + +obj pol y+0.5 x+2 z+1 +obj pol y+0.5 x+9 z+1 +obj pol y+0.5 x+16 z+1 +obj pol y+0.5 x+23 z+1 +obj pol y+0.5 x+30 z+1 +obj pol y+0.5 x+37 z+1 +obj pol y+0.5 x+44 z+1 +obj pol y+0.5 x+51 z+1 + +obj pol y+0.5 x+2 z+13 +obj pol y+0.5 x+9 z+13 +obj pol y+0.5 x+16 z+13 +obj pol y+0.5 x+23 z+13 +obj pol y+0.5 x+30 z+13 +obj pol y+0.5 x+37 z+13 +obj pol y+0.5 x+44 z+13 +obj pol y+0.5 x+51 z+13 + +obj bus xz90 y+1 x+70 z+6 +obj bus xz90 y+1 x+85 z+6 +obj bus xz90 y+1 x+70 z+17 +obj bus xz90 y+1 x+85 z+17 diff --git a/graphics/3D/3dSynthezier/include/krs1.3d b/graphics/3D/3dSynthezier/include/krs1.3d new file mode 100755 index 0000000..ffee343 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/krs1.3d @@ -0,0 +1,6 @@ +# neljanurkse maja korrus + +obj seinp1 x-48 z-12 +obj seinp1 xz180 x+48 z+12 +obj seinl1 xz270 x-48 z+12 +obj seinl1 xz90 x+48 z-12 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/krs2.3d b/graphics/3D/3dSynthezier/include/krs2.3d new file mode 100755 index 0000000..9cac787 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/krs2.3d @@ -0,0 +1,9 @@ +# kuuenurkse maja 1 korrus + +obj seinl1 x-12 z-20.7846 +obj seinl1 xz60 x+12 z-20.7846 +obj seinl1 xz120 x+24 +obj seinl1 xz180 x+12 z+20.7846 +obj seinl1 xz240 x-12 z+20.7846 +obj seinl1 xz300 x-24 + diff --git a/graphics/3D/3dSynthezier/include/kuppel.3d b/graphics/3D/3dSynthezier/include/kuppel.3d new file mode 100755 index 0000000..b4b8771 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/kuppel.3d @@ -0,0 +1,292 @@ +here +p 0 0 0 +p -1.0 0.0 0.0 +p -0.965926 0.0 -0.258819 +p -0.965926 0.0 0.258819 +p -0.965926 0.258819 0.0 +p -0.933013 0.258819 -0.250000 +p -0.933013 0.258819 0.250000 +p -0.866025 0.0 -0.500000 +p -0.866025 0.0 0.500000 +p -0.866025 0.500000 0.0 +p -0.836516 0.258819 -0.482963 +p -0.836516 0.258819 0.482963 +p -0.836516 0.500000 -0.224144 +p -0.836516 0.500000 0.224144 +p -0.750000 0.500000 -0.433013 +p -0.750000 0.500000 0.433013 +p -0.707107 0.0 -0.707107 +p -0.707107 0.0 0.707107 +p -0.707107 0.707107 0.0 +p -0.683013 0.258819 -0.683013 +p -0.683013 0.258819 0.683013 +p -0.683013 0.707107 -0.183013 +p -0.683013 0.707107 0.183013 +p -0.612372 0.500000 -0.612372 +p -0.612372 0.500000 0.612372 +p -0.612372 0.707107 -0.353553 +p -0.612372 0.707107 0.353553 +p -0.500000 0.0 -0.866025 +p -0.500000 0.0 0.866025 +p -0.500000 0.866025 0.0 +p -0.500000 0.707107 -0.500000 +p -0.500000 0.707107 0.500000 +p -0.482963 0.258819 -0.836516 +p -0.482963 0.258819 0.836516 +p -0.482963 0.866025 -0.129410 +p -0.482963 0.866025 0.129410 +p -0.433013 0.500000 -0.750000 +p -0.433013 0.500000 0.750000 +p -0.433013 0.866025 -0.250000 +p -0.433013 0.866025 0.250000 +p -0.353553 0.707107 -0.612372 +p -0.353553 0.707107 0.612372 +p -0.353553 0.866025 -0.353553 +p -0.353553 0.866025 0.353553 +p -0.258819 0.0 -0.965926 +p -0.258819 0.0 0.965926 +p -0.258819 0.965926 0.0 +p -0.250000 0.258819 -0.933013 +p -0.250000 0.258819 0.933013 +p -0.250000 0.866025 -0.433013 +p -0.250000 0.866025 0.433013 +p -0.250000 0.965926 -0.066987 +p -0.250000 0.965926 0.066987 +p -0.224144 0.500000 -0.836516 +p -0.224144 0.500000 0.836516 +p -0.224144 0.965926 -0.129410 +p -0.224144 0.965926 0.129410 +p -0.183013 0.707107 -0.683013 +p -0.183013 0.707107 0.683013 +p -0.183013 0.965926 -0.183013 +p -0.183013 0.965926 0.183013 +p -0.129410 0.866025 -0.482963 +p -0.129410 0.866025 0.482963 +p -0.129410 0.965926 -0.224144 +p -0.129410 0.965926 0.224144 +p -0.066987 0.965926 -0.250000 +p -0.066987 0.965926 0.250000 +p 0.0 0.0 1.0 +p 0.0 0.258819 0.965926 +p 0.0 0.500000 0.866025 +p 0.0 0.707107 0.707107 +p 0.0 0.866025 0.500000 +p 0.0 0.965926 0.258819 +p 0.0 1.0 0.0 +p 0.0 0.965926 -0.258819 +p 0.0 0.866025 -0.500000 +p 0.0 0.707107 -0.707107 +p 0.0 0.500000 -0.866025 +p 0.0 0.258819 -0.965926 +p 0.0 0.0 -1.0 +p 0.066987 0.965926 -0.250000 +p 0.066987 0.965926 0.250000 +p 0.129410 0.866025 -0.482963 +p 0.129410 0.866025 0.482963 +p 0.129410 0.965926 -0.224144 +p 0.129410 0.965926 0.224144 +p 0.183013 0.707107 -0.683013 +p 0.183013 0.707107 0.683013 +p 0.183013 0.965926 -0.183013 +p 0.183013 0.965926 0.183013 +p 0.224144 0.500000 -0.836516 +p 0.224144 0.500000 0.836516 +p 0.224144 0.965926 -0.129410 +p 0.224144 0.965926 0.129410 +p 0.250000 0.258819 -0.933013 +p 0.250000 0.258819 0.933013 +p 0.250000 0.866025 -0.433013 +p 0.250000 0.866025 0.433013 +p 0.250000 0.965926 -0.066987 +p 0.250000 0.965926 0.066987 +p 0.258819 0.0 -0.965926 +p 0.258819 0.0 0.965926 +p 0.258819 0.965926 0.0 +p 0.353553 0.707107 -0.612372 +p 0.353553 0.707107 0.612372 +p 0.353553 0.866025 -0.353553 +p 0.353553 0.866025 0.353553 +p 0.433013 0.500000 -0.750000 +p 0.433013 0.500000 0.750000 +p 0.433013 0.866025 -0.250000 +p 0.433013 0.866025 0.250000 +p 0.482963 0.258819 -0.836516 +p 0.482963 0.258819 0.836516 +p 0.482963 0.866025 -0.129410 +p 0.482963 0.866025 0.129410 +p 0.500000 0.707107 -0.500000 +p 0.500000 0.707107 0.500000 +p 0.500000 0.0 -0.866025 +p 0.500000 0.0 0.866025 +p 0.500000 0.866025 0.0 +p 0.612372 0.500000 -0.612372 +p 0.612372 0.500000 0.612372 +p 0.612372 0.707107 -0.353553 +p 0.612372 0.707107 0.353553 +p 0.683013 0.258819 -0.683013 +p 0.683013 0.258819 0.683013 +p 0.683013 0.707107 -0.183013 +p 0.683013 0.707107 0.183013 +p 0.707107 0.0 -0.707107 +p 0.707107 0.0 0.707107 +p 0.707107 0.707107 0.0 +p 0.750000 0.500000 -0.433013 +p 0.750000 0.500000 0.433013 +p 0.836516 0.258819 -0.482963 +p 0.836516 0.258819 0.482963 +p 0.836516 0.500000 -0.224144 +p 0.836516 0.500000 0.224144 +p 0.866025 0.0 -0.500000 +p 0.866025 0.0 0.500000 +p 0.866025 0.500000 0.0 +p 0.933013 0.258819 -0.250000 +p 0.933013 0.258819 0.250000 +p 0.965926 0.0 -0.258819 +p 0.965926 0.0 0.258819 +p 0.965926 0.258819 0.0 +p 1.0 0.0 0.0 + +f 73 102 98 +f 102 119 113 98 +f 119 130 126 113 +f 130 139 135 126 +f 139 144 140 135 +f 144 145 142 140 +f 73 98 92 +f 98 113 109 92 +f 113 126 122 109 +f 126 135 131 122 +f 135 140 133 131 +f 140 142 137 133 +f 73 92 88 +f 92 109 105 88 +f 109 122 115 105 +f 122 131 120 115 +f 131 133 124 120 +f 133 137 128 124 +f 73 88 84 +f 88 105 96 84 +f 105 115 103 96 +f 115 120 107 103 +f 120 124 111 107 +f 124 128 117 111 +f 73 84 80 +f 84 96 82 80 +f 96 103 86 82 +f 103 107 90 86 +f 107 111 94 90 +f 111 117 100 94 +f 73 80 74 +f 80 82 75 74 +f 82 86 76 75 +f 86 90 77 76 +f 90 94 78 77 +f 94 100 79 78 +f 73 74 65 +f 74 75 61 65 +f 75 76 57 61 +f 76 77 53 57 +f 77 78 47 53 +f 78 79 44 47 +f 73 65 63 +f 65 61 49 63 +f 61 57 40 49 +f 57 53 36 40 +f 53 47 32 36 +f 47 44 27 32 +f 73 63 59 +f 63 49 42 59 +f 49 40 30 42 +f 40 36 23 30 +f 36 32 19 23 +f 32 27 16 19 +f 73 59 55 +f 59 42 38 55 +f 42 30 25 38 +f 30 23 14 25 +f 23 19 10 14 +f 19 16 7 10 +f 73 55 51 +f 55 38 34 51 +f 38 25 21 34 +f 25 14 12 21 +f 14 10 5 12 +f 10 7 2 5 +f 73 51 46 +f 51 34 29 46 +f 34 21 18 29 +f 21 12 9 18 +f 12 5 4 9 +f 5 2 1 4 +f 73 46 52 +f 46 29 35 52 +f 29 18 22 35 +f 18 9 13 22 +f 9 4 6 13 +f 4 1 3 6 +f 73 52 56 +f 52 35 39 56 +f 35 22 26 39 +f 22 13 15 26 +f 13 6 11 15 +f 6 3 8 11 +f 73 56 60 +f 56 39 43 60 +f 39 26 31 43 +f 26 15 24 31 +f 15 11 20 24 +f 11 8 17 20 +f 73 60 64 +f 60 43 50 64 +f 43 31 41 50 +f 31 24 37 41 +f 24 20 33 37 +f 20 17 28 33 +f 73 64 66 +f 64 50 62 66 +f 50 41 58 62 +f 41 37 54 58 +f 37 33 48 54 +f 33 28 45 48 +f 73 66 72 +f 66 62 71 72 +f 62 58 70 71 +f 58 54 69 70 +f 54 48 68 69 +f 48 45 67 68 +f 73 72 81 +f 72 71 83 81 +f 71 70 87 83 +f 70 69 91 87 +f 69 68 95 91 +f 68 67 101 95 +f 73 81 85 +f 81 83 97 85 +f 83 87 104 97 +f 87 91 108 104 +f 91 95 112 108 +f 95 101 118 112 +f 73 85 89 +f 85 97 106 89 +f 97 104 116 106 +f 104 108 121 116 +f 108 112 125 121 +f 112 118 129 125 +f 73 89 93 +f 89 106 110 93 +f 106 116 123 110 +f 116 121 132 123 +f 121 125 134 132 +f 125 129 138 134 +f 73 93 99 +f 93 110 114 99 +f 110 123 127 114 +f 123 132 136 127 +f 132 134 141 136 +f 134 138 143 141 +f 73 99 102 +f 99 114 119 102 +f 114 127 130 119 +f 127 136 139 130 +f 136 141 144 139 +f 141 143 145 144 diff --git a/graphics/3D/3dSynthezier/include/maja.3d b/graphics/3D/3dSynthezier/include/maja.3d new file mode 100755 index 0000000..55c11e5 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/maja.3d @@ -0,0 +1,33 @@ +obj krs1 y-90 +obj krs1 y-87 +obj krs1 y-84 +obj krs1 y-81 +obj krs1 y-78 +obj krs1 y-75 +obj krs1 y-72 +obj krs1 y-69 +obj krs1 y-66 +obj krs1 y-63 +obj krs1 y-60 +obj krs1 y-57 +obj krs1 y-54 +obj krs1 y-51 +obj krs1 y-48 +obj krs1 y-45 +obj krs1 y-42 +obj krs1 y-39 +obj krs1 y-36 +obj krs1 y-33 +obj krs1 y-30 +obj krs1 y-27 +obj krs1 y-24 +obj krs1 y-21 +obj krs1 y-18 +obj krs1 y-15 +obj krs1 y-12 +obj krs1 y-9 +obj krs1 y-6 +obj krs1 y-3 +obj krs1 +obj krs1 y+3 +rnd obj^katus^x-48^z-12^y+3 obj^katus2^x-48^z-12^y+3 obj^katus3^x-48^z-12^y+3 diff --git a/graphics/3D/3dSynthezier/include/nrk4.3d b/graphics/3D/3dSynthezier/include/nrk4.3d new file mode 100755 index 0000000..296dc22 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/nrk4.3d @@ -0,0 +1,29 @@ +# 1 -body material +# 2 = 1 -ends filled +# +# 0--1 +# | | Y +# 3--2 +# +# X + +here +p -0.5 0.5 0 +p 0.5 0.5 0 +p 0.5 -0.5 0 +p -0.5 -0.5 0 + +p -0.5 0.5 1 +p 0.5 0.5 1 +p 0.5 -0.5 1 +p -0.5 -0.5 1 + +mtl %1 +f 0 1 5 4 +f 1 2 6 5 +f 2 3 7 6 +f 3 0 4 7 + +cmp 0 %2 1 +?0 f 0 1 2 3 +?0 f 4 5 6 7 diff --git a/graphics/3D/3dSynthezier/include/nrk6.3d b/graphics/3D/3dSynthezier/include/nrk6.3d new file mode 100755 index 0000000..d096deb --- /dev/null +++ b/graphics/3D/3dSynthezier/include/nrk6.3d @@ -0,0 +1,33 @@ +# 1 -body material +# 2 = 1 -ends filled + +here +p -0.5 0 0.866 +p 0.5 0 0.866 +p 1 0 0 +p 0.5 0 -0.866 +p -0.5 0 -0.866 +p -1 0 0 + +p -0.5 1 0.866 +p 0.5 1 0.866 +p 1 1 0 +p 0.5 1 -0.866 +p -0.5 1 -0.866 +p -1 1 0 + +mtl %1 +f 0 1 7 6 +f 1 2 8 7 +f 2 3 9 8 +f 3 4 10 9 +f 4 5 11 10 +f 5 0 6 11 + +cmp 0 %2 1 +?0 f 0 1 2 3 +?0 f 3 4 5 0 +?0 f 6 7 8 9 +?0 f 9 10 11 6 + + diff --git a/graphics/3D/3dSynthezier/include/nrk8.3d b/graphics/3D/3dSynthezier/include/nrk8.3d new file mode 100755 index 0000000..5e7986a --- /dev/null +++ b/graphics/3D/3dSynthezier/include/nrk8.3d @@ -0,0 +1,47 @@ +# 1 -body material +# 2 = 1 -ends filled +# +# 0--1 +# 7/ \2 +# | * | Y +# 6\ /3 +# 5--4 +# +# X + +here +p -0.333 1 0 +p 0.333 1 0 +p 1 0.333 0 +p 1 -0.333 0 +p 0.333 -1 0 +p -0.333 -1 0 +p -1 -0.333 0 +p -1 0.333 0 + +p -0.333 1 1 +p 0.333 1 1 +p 1 0.333 1 +p 1 -0.333 1 +p 0.333 -1 1 +p -0.333 -1 1 +p -1 -0.333 1 +p -1 0.333 1 + +mtl %1 +f 0 1 9 8 +f 1 2 10 9 +f 2 3 11 10 +f 3 4 12 11 +f 4 5 13 12 +f 5 6 14 13 +f 6 7 15 14 +f 7 0 8 15 + +cmp 0 %2 1 +?0 f 0 1 4 5 +?0 f 1 2 3 4 +?0 f 0 5 6 7 +?0 f 8 9 12 13 +?0 f 9 10 11 12 +?0 f 8 13 14 15 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/plaat.3d b/graphics/3D/3dSynthezier/include/plaat.3d new file mode 100755 index 0000000..8255032 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/plaat.3d @@ -0,0 +1,19 @@ +here +p -0.1 -0.01 -0.1 +p 0.1 -0.01 -0.1 +p 0.1 -0.01 0.1 +p -0.1 -0.01 0.1 + +p -0.1 0.01 -0.1 +p 0.1 0.01 -0.1 +p 0.1 0.01 0.1 +p -0.1 0.01 0.1 + +mtl kivi +f 0 1 2 3 +f 4 5 6 7 + +f 0 1 5 4 +f 1 2 6 5 +f 2 3 7 6 +f 3 0 4 7 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/pol.3d b/graphics/3D/3dSynthezier/include/pol.3d new file mode 100755 index 0000000..256589d --- /dev/null +++ b/graphics/3D/3dSynthezier/include/pol.3d @@ -0,0 +1,37 @@ +obj pol_frnt +obj pol_frnt z*-1 z+5 +obj pol_ceil x*1.5 z+1.5 y+0.5 +obj flare_w x+0.5 z-0.01 y-0.1 +obj flare_w x*-1 x-0.5 z-0.01 y-0.1 +obj flare_r x+0.5 z+5.01 y-0.1 +obj flare_r x*-1 x-0.5 z+5.01 y-0.1 + +here +p -1.25 0.5 0.5 +p 1.25 0.5 0.5 +p 1.5 0.25 0.5 +p 1.5 -0.25 0.5 +p 1.25 -0.5 0.5 +p -1.25 -0.5 0.5 +p -1.5 -0.25 0.5 +p -1.5 0.25 0.5 + +p -1.25 0.5 4.5 +p 1.25 0.5 4.5 +p 1.5 0.25 4.5 +p 1.5 -0.25 4.5 +p 1.25 -0.5 4.5 +p -1.25 -0.5 4.5 +p -1.5 -0.25 4.5 +p -1.5 0.25 4.5 + +mtl metal_blue +f 0 1 9 8 +f 1 2 10 9 +f 2 3 11 10 +f 3 4 12 11 +f 4 5 13 12 +f 5 6 14 13 +f 6 7 15 14 +f 7 0 8 15 + diff --git a/graphics/3D/3dSynthezier/include/pol_ceil.3d b/graphics/3D/3dSynthezier/include/pol_ceil.3d new file mode 100755 index 0000000..68cb41a --- /dev/null +++ b/graphics/3D/3dSynthezier/include/pol_ceil.3d @@ -0,0 +1,21 @@ +here +p -0.5 0.5 0.75 +p 0.5 0.5 0.75 +p 0.5 0 0 +p -0.5 0 0 +p -0.75 0 0.75 +p 0.75 0 0.75 + +p -0.5 0.5 2.25 +p 0.5 0.5 2.25 +p 0.5 0 2.25 +p -0.5 0 2.25 +mtl klaashele +f 0 1 2 3 +f 0 3 4 +f 1 2 5 + +f 0 1 7 6 +f 1 5 8 7 +f 0 4 9 6 +f 6 7 8 9 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/pol_frnt.3d b/graphics/3D/3dSynthezier/include/pol_frnt.3d new file mode 100755 index 0000000..826e568 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/pol_frnt.3d @@ -0,0 +1,24 @@ +here +p -1.25 0.25 0 +p 1.25 0.25 0 +p 1.25 -0.25 0 +p -1.25 -0.25 0 + +p -1.25 0.5 0.5 +p 1.25 0.5 0.5 +p 1.5 0.25 0.5 +p 1.5 -0.25 0.5 +p 1.25 -0.5 0.5 +p -1.25 -0.5 0.5 +p -1.5 -0.25 0.5 +p -1.5 0.25 0.5 +mtl metal_blue +f 0 1 2 3 +f 0 4 5 1 +f 1 5 6 +f 1 6 7 2 +f 2 7 8 +f 2 8 9 3 +f 3 9 10 +f 3 10 11 0 +f 0 11 4 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/ring.3d b/graphics/3D/3dSynthezier/include/ring.3d new file mode 100755 index 0000000..7d19916 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/ring.3d @@ -0,0 +1,52 @@ +here +p 0 0 0 +p -1.0 0.0 0.0 +p -0.965926 0.0 -0.258819 +p -0.965926 0.0 0.258819 +p -0.866025 0.0 -0.500000 +p -0.866025 0.0 0.500000 +p -0.707107 0.0 -0.707107 +p -0.707107 0.0 0.707107 +p -0.500000 0.0 -0.866025 +p -0.500000 0.0 0.866025 +p -0.258819 0.0 -0.965926 +p -0.258819 0.0 0.965926 +p 0.0 0.0 -1.0 +p 0.0 0.0 0.0 +p 0.0 0.0 1.0 +p 0.258819 0.0 0.965926 +p 0.258819 0.0 -0.965926 +p 0.500000 0.0 0.866025 +p 0.500000 0.0 -0.866025 +p 0.707107 0.0 -0.707107 +p 0.707107 0.0 0.707107 +p 0.866025 0.0 -0.500000 +p 0.866026 0.0 0.500000 +p 0.965926 0.0 -0.258819 +p 0.965926 0.0 0.258819 +p 1.0 0.0 0.0 + +f 13 25 23 +f 13 23 21 +f 13 21 19 +f 13 19 18 +f 13 18 16 +f 13 16 12 +f 13 12 10 +f 13 10 8 +f 13 8 6 +f 13 6 4 +f 13 4 2 +f 13 2 1 +f 13 1 3 +f 13 3 5 +f 13 5 7 +f 13 7 9 +f 13 9 11 +f 13 11 14 +f 13 14 15 +f 13 15 17 +f 13 17 20 +f 13 20 22 +f 13 22 24 +f 13 24 25 diff --git a/graphics/3D/3dSynthezier/include/seinl1.3d b/graphics/3D/3dSynthezier/include/seinl1.3d new file mode 100755 index 0000000..b6bf757 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/seinl1.3d @@ -0,0 +1,9 @@ +obj blk1 +obj blk2 x+6 +obj blk2 x+12 +obj blk1 x+18 + +rnd obj^pol^xz-92^z-6^x+1 dum dum dum dum +rnd obj^car^xz91^z-10^x+5 dum dum dum dum +rnd obj^car^xz87^z-8^x+19 dum dum dum dum +rnd obj^bus^xz-90^z-12^x+10 dum dum dum dum dum dum dum dum \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/seinp1.3d b/graphics/3D/3dSynthezier/include/seinp1.3d new file mode 100755 index 0000000..b8499db --- /dev/null +++ b/graphics/3D/3dSynthezier/include/seinp1.3d @@ -0,0 +1,19 @@ +obj blk1 +obj blk1 x+6 +obj blk1 x+12 +obj blk2 x+18 + +obj blk2 x+24 +obj blk1 x+30 +obj blk1 x+36 +obj blk1 x+42 + +obj blk1 x+48 +obj blk1 x+54 +obj blk1 x+60 +obj blk2 x+66 + +obj blk2 x+72 +obj blk1 x+78 +obj blk1 x+84 +obj blk1 x+90 diff --git a/graphics/3D/3dSynthezier/include/solar.3d b/graphics/3D/3dSynthezier/include/solar.3d new file mode 100755 index 0000000..a898eec --- /dev/null +++ b/graphics/3D/3dSynthezier/include/solar.3d @@ -0,0 +1,23 @@ +here +p -3 0 -3 +p 3 0 -3 +p 3 0 3 +p -3 0 3 + +p -3 15 -3 +p 3 15 -3 +p 3 15 3 +p -3 15 3 + +p -20 6 -9 +p 20 6 -9 +p 10 24 9 +p -10 24 9 + +mtl pronks +f 0 1 5 4 +f 1 2 6 5 +f 2 3 7 6 +f 3 0 4 7 +mtl solar +f 8 9 10 11 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/toru.3d b/graphics/3D/3dSynthezier/include/toru.3d new file mode 100755 index 0000000..0f91bfb --- /dev/null +++ b/graphics/3D/3dSynthezier/include/toru.3d @@ -0,0 +1,38 @@ +here +p 0 0 10 +p 0 5 10 + +p 7.071067 0 7.071069 +p 7.071067 5 7.071069 + +p 10 0 3.139165E-06 +p 10 5 3.139165E-06 + +p 7.071071 0 -7.071064 +p 7.071071 5 -7.071064 + +p 6.27833E-06 0 -10 +p 6.27833E-06 5 -10 + +p -7.071062 0 -7.071074 +p -7.071062 5 -7.071074 + +p -10 0 -9.417495E-06 +p -10 5 -9.417495E-06 + +p -7.071075 0 7.07106 +p -7.071075 5 7.07106 +mtl pronks +f 0 1 3 2 +f 2 3 5 4 +f 4 5 7 6 +f 6 7 9 8 + +f 8 9 11 10 +f 10 11 13 12 +f 12 13 15 14 +f 14 15 1 0 + +f 1 3 5 7 +f 1 7 9 15 +f 9 11 13 15 \ No newline at end of file diff --git a/graphics/3D/3dSynthezier/include/vedru.3d b/graphics/3D/3dSynthezier/include/vedru.3d new file mode 100755 index 0000000..6d238b8 --- /dev/null +++ b/graphics/3D/3dSynthezier/include/vedru.3d @@ -0,0 +1,51 @@ +obj plaat xz20 x+0 y+0 z+1 +obj plaat xz18.42122 x+.3894183 y+.1333333 z+.921061 +obj plaat xz13.93413 x+.7173561 y+.2666667 z+.6967067 +obj plaat xz7.247154 x+.9320391 y+.4 z+.3623577 +obj plaat xz-.5839909 x+.9995736 y+.5333334 z-2.919955E-02 +obj plaat xz-8.322937 x+.9092974 y+.6666667 z-.4161468 +obj plaat xz-14.74788 x+.6754631 y+.8 z-.7373938 +obj plaat xz-18.84445 x+.334988 y+.9333334 z-.9422224 +obj plaat xz-19.96589 x-5.837443E-02 y+1.066667 z-.9982948 +obj plaat xz-17.93517 x-.4425208 y+1.2 z-.8967583 +obj plaat xz-13.07286 x-.7568028 y+1.333333 z-.6536433 +obj plaat xz-6.146646 x-.9516022 y+1.466667 z-.3073323 +obj plaat xz1.749993 x-.9961646 y+1.6 z+8.749965E-02 +obj plaat xz9.370347 x-.8834543 y+1.733334 z+.4685173 +obj plaat xz15.51133 x-.631266 y+1.866667 z+.7755664 +obj plaat xz19.20341 x-.2794146 y+2 z+.9601706 +obj plaat xz19.8637 x+.1165502 y+2.133334 z+.9931848 +obj plaat xz17.38794 x+.4941143 y+2.266667 z+.8693969 +obj plaat xz12.16701 x+.7936686 y+2.4 z+.6083503 +obj plaat xz5.025171 x+.96792 y+2.533334 z+.2512586 +obj plaat xz-2.910019 x+.9893581 y+2.666667 z-.145501 +obj plaat xz-10.38578 x+.8545986 y+2.8 z-.5192891 +obj plaat xz-16.22186 x+.584917 y+2.933333 z-.8110932 +obj plaat xz-19.49687 x+.2228901 y+3.066667 z-.9748436 +obj plaat xz-19.69376 x-.1743262 y+3.2 z-.984688 +obj plaat xz-16.78144 x-.5440203 y+3.333333 z-.839072 +obj plaat xz-11.21971 x-.8278257 y+3.466666 z-.5609854 +obj plaat xz-3.886632 x-.9809359 y+3.599999 z-.1943316 +obj plaat xz4.060056 x-.9791781 y+3.733333 z+.2030028 +obj plaat xz11.36575 x-.82283 y+3.866666 z+.5682876 +obj plaat xz16.87705 x-.5365753 y+3.999999 z+.8438524 +obj plaat xz19.72383 x-.1656074 y+4.133332 z+.9861917 +obj plaat xz19.45667 x+.2315063 y+4.266665 z+.9728334 +obj plaat xz16.11773 x+.5920703 y+4.399999 z+.8058863 +obj plaat xz10.23416 x+.8591596 y+4.533332 z+.5117078 +obj plaat xz2.734839 x+.9906067 y+4.666665 z+.1367419 +obj plaat xz-5.196248 x+.9656591 y+4.799998 z-.2598124 +obj plaat xz-12.30696 x+.7882555 y+4.933331 z-.6153481 +obj plaat xz-17.47468 x+.4864039 y+5.066665 z-.8737341 +obj plaat xz-19.88354 x+.1077599 y+5.199998 z-.9941769 +obj plaat xz-19.15323 x-.2878969 y+5.333331 z-.9576614 +obj plaat xz-15.39904 x-.638102 y+5.466665 z-.7699519 +obj plaat xz-9.213687 x-.8875641 y+5.599998 z-.4606843 +obj plaat xz-1.573701 x-.9968995 y+5.733331 z-7.868504E-02 +obj plaat xz6.314738 x-.9488468 y+5.866664 z+.3157369 +obj plaat xz13.20622 x-.7509923 y+5.999998 z+.660311 +obj plaat xz18.01273 x-.4345728 y+6.133331 z+.9006367 +obj plaat xz19.97544 x-4.954402E-02 y+6.266664 z+.998772 +obj plaat xz18.78447 x+.3433067 y+6.399997 z+.9392233 +obj plaat xz14.62785 x+.6819569 y+6.53333 z+.7313923 +obj plaat xz8.161816 x+.9129413 y+6.666664 z+.4080908 diff --git a/graphics/3D/3dball.bas b/graphics/3D/3dball.bas new file mode 100755 index 0000000..2a01547 --- /dev/null +++ b/graphics/3D/3dball.bas @@ -0,0 +1,144 @@ +' Svjatoslav Agejenko +' 1999 + +DECLARE SUB newns () +DECLARE SUB getcor () +DECLARE SUB show (ang1!, ang2!, ang3!) +RANDOMIZE TIMER +SCREEN 12 + +DIM SHARED px(1 TO 1000) +DIM SHARED py(1 TO 1000) +DIM SHARED pz(1 TO 1000) + +DIM SHARED ox(1 TO 1000) +DIM SHARED oy(1 TO 1000) + +DIM SHARED mitup + +DIM SHARED pallx, pally +DIM SHARED pallxs, pallys + +DIM SHARED paln1s, paln2s, paln3s + +mitup = 500 ' Number of dots + +getcor + + +nrk1 = 0 +nrk2 = 0 +nrk3 = 0 + +1 +show nrk1, nrk2, nrk3 + +nrk1 = nrk1 + paln1s +nrk2 = nrk2 + paln2s +nrk3 = nrk3 + paln3s + +pallys = pallys + .1 +pallx = pallx + pallxs +pally = pally + pallys + +IF pally > 160 THEN pallys = -pallys: pallxs = pallxs + (RND * 2 - 1): newns +IF pallx < -200 THEN pallxs = -pallxs: newns +IF pallx > 200 THEN pallxs = -pallxs: newns + +a$ = INKEY$ +IF a$ <> "" THEN CLS : SYSTEM +GOTO 1 + +SUB getcor +PRINT "Calculating cordinates" +PRINT "Please wait....." + +FOR a = 1 TO mitup +ang1 = RND * 100 +ang2 = RND * 100 +ang3 = RND * 100 + +s1 = SIN(ang1) +c1 = COS(ang1) +s2 = SIN(ang2) +c2 = COS(ang2) +s3 = SIN(ang3) +c3 = COS(ang3) + +x = 50 +y = 0 +z = 0 + +x1 = x * s1 + y * c1 +y1 = x * c1 - y * s1 + +z1 = z * s2 + y1 * c2 +y2 = z * c2 - y1 * s2 + +z2 = z1 * s3 + x1 * c3 +x2 = z1 * c3 - x1 * s3 + +px(a) = x2 +py(a) = y2 +pz(a) = z2 + +NEXT a + + +pallxs = 2 + RND +pally = -100 + +newns + +CLS +END SUB + +SUB newns +paln1s = (RND - .5) / 16 +paln2s = (RND - .5) / 16 +paln3s = (RND - .5) / 16 +END SUB + +SUB show (ang1, ang2, ang3) + + +s1 = SIN(ang1) +c1 = COS(ang1) +s2 = SIN(ang2) +c2 = COS(ang2) +s3 = SIN(ang3) +c3 = COS(ang3) + + +FOR a = 1 TO mitup + +x = px(a) +y = py(a) +z = pz(a) + +x1 = x * s1 + y * c1 +y1 = x * c1 - y * s1 + +z1 = z * s2 + y1 * c2 +y2 = z * c2 - y1 * s2 + +z2 = z1 * s3 + x1 * c3 +x2 = z1 * c3 - x1 * s3 + +z2 = z2 + 200 + +x = x2 / z2 * 320 + 320 + pallx +y = y2 / z2 * 300 + 240 + pally + +PSET (ox(a), oy(a)), 0 +PSET (x, y), 3 +ox(a) = x +oy(a) = y + +NEXT a + + + + +END SUB + diff --git a/graphics/3D/3dexplor/explgala.bas b/graphics/3D/3dexplor/explgala.bas new file mode 100755 index 0000000..c6baf24 --- /dev/null +++ b/graphics/3D/3dexplor/explgala.bas @@ -0,0 +1,372 @@ +' Galaxy explorer +' made by Svjatoslav Agejenko +' in 2003.12 +' E-Mail: svjatoslavagejenko@gmail.com +' H-Page: svjatoslav.eu + +DECLARE SUB temp () +DECLARE SUB mkgalaxy (x!, y!, z!) +DECLARE SUB rndinit () +DECLARE FUNCTION rn! () +DECLARE SUB disp () +DECLARE SUB startext () +DECLARE SUB control () +DECLARE SUB putbyte (addr!, dat!) +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () +DECLARE SUB animate () + + +DIM SHARED an1, an2, an3 + +DIM SHARED tim + +DIM SHARED extSEG, extADDR + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED buttL, buttR +DIM SHARED maxmove + + +DIM SHARED zoom +DIM SHARED rndval(0 TO 10000) +DIM SHARED rndp + + +DIM SHARED px(1 TO 12000) +DIM SHARED py(1 TO 12000) +DIM SHARED pz(1 TO 12000) +DIM SHARED pc(1 TO 12000) +DIM SHARED nump + +DIM SHARED tempr(0 TO 10) + + +nl = 0 +np = 0 + +start + + +cx = 0 +cy = 0 +cz = 0 + + + +nump = 0 +mkgalaxy 0, 0, 0 +1 + + + + +va = INT(RND * 3) + +SELECT CASE va +CASE 0 + cx = RND * 500 - 250 +CASE 1 + cy = RND * 100 - 50 +CASE 2 + cz = RND * 500 - 250 +END SELECT + + +control +disp + +PCOPY 0, 1 +CLS +GOTO 1 + +SUB control + + +IF getbyte(8) <> 0 THEN + putbyte 8, 0 + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + butt = getword(6) + putword 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + + + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + + + +a$ = INKEY$ + +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) +IF a$ = "q" THEN SYSTEM + + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs +myz = myz + myzs +myy = myy + myys + +END SUB + +SUB disp + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + + +FOR a = 1 TO nump + + + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + +' z2 = z2 + 10 + + IF z2 > 3 THEN + rpx = x1 / z2 * 130 + 160 + rpy = y1 / z2 * 130 + 100 + PSET (rpx, rpy), pc(a) + + END IF + + +NEXT a +END SUB + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB mkgalaxy (lx, ly, lz) + + +n1 = rn * 10 +n2 = rn * 10 + +gs1 = SIN(n1) +gc1 = COS(n1) +gs2 = SIN(n2) +gc2 = COS(n2) + + + +rndp = 0 +siz = 100 +pi = 3.14 +sbm = 3 + + +FOR a = 1 TO 10000 + + b = rn * 10 + s = b * b / 30 + + v1 = rn * (11.5 - b) / 3 + v1p = v1 / 2 + + ane = rn * (s / 2) / sbm * 2 + sba = 2 * pi / sbm * INT(rn * sbm) + + x = (SIN(b - sba + ane) * s + rn * v1 - v1p) * siz + z = (COS(b - sba + ane) * s + rn * v1 - v1p) * siz + y = (rn * v1 - v1p) * siz + + + x1 = x * gc1 + z * gs1 + z1 = z * gc1 - x * gs1 + + y1 = y * gc2 + z1 * gs2 + z2 = z1 * gc2 - y * gs2 + + + nump = nump + 1 + + px(nump) = x1 + lx + py(nump) = y1 + ly + pz(nump) = z2 + lz + pc(nump) = INT(RND * 15) + 1 +NEXT a + +END SUB + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +100 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 100 + + +END SUB + +SUB putbyte (addr, dat) + +POKE (extADDR + addr), dat +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +FUNCTION rn + +rndp = rndp + 1 +IF rndp > 10000 THEN rndp = 0 +rn = rndval(rndp) + +END FUNCTION + +SUB rndinit + + +FOR a = 0 TO 10000 + rndval(a) = RND +NEXT a + +rndp = 0 +END SUB + +SUB start + + +startext + + +SCREEN 7, , , 1 + +maxmove = 50 +rndinit + +END SUB + +SUB startext + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + diff --git a/graphics/3D/3dexplor/explgala.bat b/graphics/3D/3dexplor/explgala.bat new file mode 100755 index 0000000..c250eb2 --- /dev/null +++ b/graphics/3D/3dexplor/explgala.bat @@ -0,0 +1,2 @@ +qbext +qb /run explgala.bas \ No newline at end of file diff --git a/graphics/3D/3dexplor/explmaze.bas b/graphics/3D/3dexplor/explmaze.bas new file mode 100755 index 0000000..5e111ca --- /dev/null +++ b/graphics/3D/3dexplor/explmaze.bas @@ -0,0 +1,320 @@ +' 3D Maze explorer +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB startext () +DECLARE SUB control () +DECLARE SUB putbyte (addr!, dat!) +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () +DECLARE SUB animate () + +DIM SHARED px(1 TO 5000) +DIM SHARED py(1 TO 5000) +DIM SHARED pz(1 TO 5000) +DIM SHARED rpx(1 TO 5000) +DIM SHARED rpy(1 TO 5000) +DIM SHARED rpe(1 TO 5000) + +DIM SHARED l1(1 TO 5000) +DIM SHARED l2(1 TO 5000) +DIM SHARED lc(1 TO 5000) + +DIM SHARED nl, np + +DIM SHARED an1, an2, an3 + +DIM SHARED tim + +DIM SHARED extSEG, extADDR + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED buttL, buttR +DIM SHARED maxmove + +nl = 0 +np = 0 + +start + + +cx = 0 +cy = 0 +cz = 0 + +np = 1 +px(1) = 0 +py(1) = 0 +pz(1) = 0 + +1 + + + + +np = np + 1 +px(np) = cx +py(np) = cy +pz(np) = cz + + + +nl = nl + 1 +l1(nl) = np +l2(nl) = np - 1 +lc(nl) = INT(RND * 15) + 1 +'lc(nl) = ABS(cx / 20) + + + +va = INT(RND * 3) + +SELECT CASE va +CASE 0 + cx = RND * 500 - 250 +CASE 1 + cy = RND * 100 - 50 +CASE 2 + cz = RND * 500 - 250 +END SELECT + + +control +animate + +PCOPY 0, 1 +CLS +GOTO 1 + +SUB animate + + +s1 = SIN(an1) +s2 = SIN(an2) +s3 = SIN(an3) + +c1 = COS(an1) +c2 = COS(an2) +c3 = COS(an3) + + + +FOR a = 1 TO np + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + +' z2 = z2 + 10 + + IF z2 > 3 THEN + rpe(a) = 1 + rpx(a) = x1 / z2 * 130 + 160 + rpy(a) = y1 / z2 * 130 + 100 + ELSE + rpe(a) = 0 + END IF + +NEXT a + + +FOR a = 1 TO nl + + p1 = l1(a) + p2 = l2(a) + IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) + +NEXT a + + +END SUB + +SUB control + + +IF getbyte(8) <> 0 THEN + putbyte 8, 0 + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + butt = getword(6) + putword 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + + + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + + + +a$ = INKEY$ + +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) +IF a$ = "q" THEN SYSTEM + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs +myz = myz + myzs +myy = myy + myys + +END SUB + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +100 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 100 + + +END SUB + +SUB putbyte (addr, dat) + +POKE (extADDR + addr), dat +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +SUB start +startext + + +SCREEN 7, , , 1 + +maxmove = 50 + +END SUB + +SUB startext + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + diff --git a/graphics/3D/3dexplor/explmaze.bat b/graphics/3D/3dexplor/explmaze.bat new file mode 100755 index 0000000..d4c909e --- /dev/null +++ b/graphics/3D/3dexplor/explmaze.bat @@ -0,0 +1,2 @@ +qbext +qb /run explmaze.bas \ No newline at end of file diff --git a/graphics/3D/3dexplor/qbext.com b/graphics/3D/3dexplor/qbext.com new file mode 100755 index 0000000..ae54fc4 Binary files /dev/null and b/graphics/3D/3dexplor/qbext.com differ diff --git a/graphics/3D/3dexplor/script.dat b/graphics/3D/3dexplor/script.dat new file mode 100755 index 0000000..4841c38 --- /dev/null +++ b/graphics/3D/3dexplor/script.dat @@ -0,0 +1 @@ + 0 1397293 6565525 -1.795911E+07 .9747545 5.336815E-02 diff --git a/graphics/3D/3dland.bas b/graphics/3D/3dland.bas new file mode 100755 index 0000000..eac4cfb --- /dev/null +++ b/graphics/3D/3dland.bas @@ -0,0 +1,81 @@ +' Svjatoslav Agejenko +' year 1999 + +DECLARE SUB setpal () +DEFINT A-Y +DECLARE SUB box (x1, y1, x2, y2, x3, y3, x4, y4, c) 'draw filled + 'box using 4 cordinates + '(sometimes don't work + 'correctly, but fast. + '(PAINT command used)) +DIM SHARED x1(1 TO 40, 1 TO 40) ' X & Y cordinates +DIM SHARED y1(1 TO 40, 1 TO 40) ' + +SCREEN 12 + +setpal +zfa = 1.5 +1 +FOR b = 1 TO 40 +FOR a = 1 TO 40 + +x = 120 + (a * 10) +y = 200 + (b * 3) + +y = y - COS(SQR((a - 20) ^ 2 + (b - 20) ^ 2) / zfa) * 20 + +x = (x - 320) * (b + 50) / 50 + 320 +y = (y - 240) * (b + 50) / 50 + 240 + +x1(a, b) = x +y1(a, b) = y + +NEXT a +NEXT b + + + +FOR b = 1 TO 39 +FOR a = 1 TO 39 +IF (a + b) \ 2 = (a + b + 1) \ 2 THEN c = 0 ELSE c = 5 +kz = b + (a / 3) + +box x1(a, b), y1(a, b), x1(a + 1, b), y1(a + 1, b), x1(a, b + 1), y1(a, b + 1), x1(a + 1, b + 1), y1(a + 1, b + 1), c +NEXT a +NEXT b + +a$ = INPUT$(1) +zfa = zfa * 1.9 +CLS +IF zfa > 10 THEN SYSTEM +GOTO 1 + +SUB box (x1, y1, x2, y2, x3, y3, x4, y4, c1) + +c1 = c1 + (y2 - y1) / 3.5 + (kz / 8) + 4 + +IF c1 < 0 THEN c1 = 0 +IF c1 > 15 THEN c1 = 15 + +a = SQR((x1 - x2) ^ 2 + (y1 - y2) ^ 2) +b = SQR((x3 - x4) ^ 2 + (y3 - y4) ^ 2) +IF b < a THEN b = a +FOR a = 1 TO b +x5 = (x2 - x1) * a / b + x1 +y5 = (y2 - y1) * a / b + y1 +x6 = (x4 - x3) * a / b + x3 +y6 = (y4 - y3) * a / b + y3 +LINE (x5, y5)-(x6, y6), c1 +LINE (x5 + 1, y5)-(x6 + 1, y6), c1 +NEXT a +END SUB + +SUB setpal +FOR a = 0 TO 16 +OUT &H3C8, a +OUT &H3C9, a * 4 +OUT &H3C9, a * 4 +OUT &H3C9, a * 3 +NEXT +END SUB + diff --git a/graphics/3D/3dlife.bas b/graphics/3D/3dlife.bas new file mode 100755 index 0000000..c00b2f6 --- /dev/null +++ b/graphics/3D/3dlife.bas @@ -0,0 +1,367 @@ +DECLARE SUB ruut (x!, y!, z!) +' use: +' arrow keys - move around +' 2, 6, 4, 8 - look around +' - - fly up +' + - fly down + + + +DECLARE SUB mkkoll () +DECLARE SUB putkol () +DECLARE SUB rend () +DECLARE SUB env () +DECLARE SUB start () +DIM SHARED npo, nlo, np, nl +DIM SHARED px(1 TO 3000) +DIM SHARED py(1 TO 3000) +DIM SHARED pz(1 TO 3000) +DIM SHARED rpx(1 TO 7000) +DIM SHARED rpy(1 TO 7000) +DIM SHARED orpx(0 TO 9000) +DIM SHARED orpy(0 TO 9000) +DIM SHARED onp +DIM SHARED lin1(1 TO 3800) +DIM SHARED lin2(1 TO 3800) +DIM SHARED linc(1 TO 3800) +DIM SHARED olin1(1 TO 3800) +DIM SHARED olin2(1 TO 3800) +DIM SHARED onl +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED an1, an2 +DIM SHARED an1s, an2s +DIM SHARED frm + +DIM SHARED life(1 TO 50, 1 TO 50) +DIM SHARED life2(1 TO 50, 1 TO 50) + + + +start +'env + +an1 = 1.5 +1 +frm = frm + 1 + +mkkoll +rend + +myx = SIN(frm / 20) * 12 +myy = SIN(frm / 50) * 10 + 15 +myz = COS(frm / 20) * 12 + +an1 = an1 - .05 +an2 = 2.2 + SIN(frm / 50) / 2 + +a$ = INKEY$ +IF a$ <> "" THEN + SYSTEM +END IF +GOTO 1 + +SUB env + +FOR z = -5 TO 5 +FOR x = -5 TO 5 +np = np + 1 +px(np) = x +py(np) = 0 +pz(np) = z +IF x > -5 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 1 +linc(nl) = 1 +END IF +IF z > -5 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 11 +linc(nl) = 1 +END IF +NEXT x +NEXT z + +npo = np +nlo = nl + + +END SUB + +SUB env1 + +np = 1 +px(np) = -2 +py(np) = 0 +pz(np) = 0 +np = np + 1 +px(np) = 2 +py(np) = 0 +pz(np) = 0 + +nl = 1 +lin1(nl) = 1 +lin2(nl) = 2 +linc(nl) = 14 + +END SUB + +SUB mkkoll +np = npo +nl = nlo + +FOR y = 1 TO 50 + FOR x = 1 TO 50 + IF life(x, y) = 1 THEN + v = ABS(x - 26) + ABS(y - 26) + frm + ruut x - 25, SIN(v / 5) * 5, y - 25 + END IF + NEXT x +NEXT y + + + +IF frm \ 10 = frm / 10 THEN + +FOR y = 2 TO 49 +FOR x = 2 TO 49 +c = life(x - 1, y - 1) +c = c + life(x, y - 1) +c = c + life(x + 1, y - 1) +c = c + life(x - 1, y) +c = c + life(x + 1, y) +c = c + life(x - 1, y + 1) +c = c + life(x, y + 1) +c = c + life(x + 1, y + 1) + +IF life(x, y) = 1 THEN + IF (c > 3) OR (c < 2) THEN life2(x, y) = 0 ELSE life2(x, y) = 1 +ELSE + IF c = 3 THEN life2(x, y) = 1 ELSE life2(x, y) = 0 +END IF +NEXT x +NEXT y + + +FOR y = 1 TO 50 +FOR x = 1 TO 50 + life(x, y) = life2(x, y) +NEXT x +NEXT y +END IF + +END SUB + +SUB rend + + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +FOR a = 1 TO np +x = px(a) + myx +y = py(a) - myy +z = pz(a) + myz + +x1 = x * s1 - z * c1 +z1 = x * c1 + z * s1 +y1 = y * s2 - z1 * c2 +z2 = y * c2 + z1 * s2 + +IF z2 < .5 THEN +rpx(a) = -1 +ELSE +rpx(a) = 320 + (x1 / z2 * 400) +rpy(a) = 240 - (y1 / z2 * 400) +END IF +NEXT a + + +FOR a = 1 TO nl +l1 = olin1(a) +l2 = olin2(a) + +IF orpx(l1) = -1 OR orpx(l2) = -1 THEN ELSE LINE (orpx(l1), orpy(l1))-(orpx(l2), orpy(l2)), 0 +l1 = lin1(a) +l2 = lin2(a) +IF rpx(l1) = -1 OR rpx(l2) = -1 THEN ELSE LINE (rpx(l1), rpy(l1))-(rpx(l2), rpy(l2)), linc(a) +NEXT + +IF nl < onl THEN +FOR a = nl + 1 TO onl +l1 = olin1(a) +l2 = olin2(a) +IF orpx(l1) = -1 OR orpx(l2) = -1 THEN ELSE LINE (orpx(l1), orpy(l1))-(orpx(l2), orpy(l2)), 0 +NEXT +END IF + +FOR a = 1 TO np +orpx(a) = rpx(a) +orpy(a) = rpy(a) +NEXT a +onp = np + +FOR a = 1 TO nl +olin1(a) = lin1(a) +olin2(a) = lin2(a) +NEXT a +onl = nl + +END SUB + +SUB ruut (x, y, z) + +v = 3 + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 2 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 2 +lin2(nl) = np + 3 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 4 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 4 +lin2(nl) = np + 1 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 5 +lin2(nl) = np + 6 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 6 +lin2(nl) = np + 7 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 7 +lin2(nl) = np + 8 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 8 +lin2(nl) = np + 5 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 5 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 2 +lin2(nl) = np + 6 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 7 +linc(nl) = v + +nl = nl + 1 +lin1(nl) = np + 4 +lin2(nl) = np + 8 +linc(nl) = v + +np = np + 1 +px(np) = x - .5 +py(np) = y +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y +pz(np) = z + .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y +pz(np) = z + .5 + + +np = np + 1 +px(np) = x - .5 +py(np) = y + 1 +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y + 1 +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y + 1 +pz(np) = z + .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y + 1 +pz(np) = z + .5 + + +END SUB + +SUB start +SCREEN 12 +npo = 0 +nlo = 0 +np = npo +nl = nlo +kolm = 50 + +myx = 4 +myy = 15 +myz = 17 +an1 = 3.14 / 2 - .29 +an2 = an1 + 1 + +FOR a = 1 TO 1000 +linc(a) = 4 +NEXT a + +FOR a = 1 TO 1000 +olin1(a) = 1 +olin2(a) = 1 +NEXT a + + +OPEN "3dlife.dat" FOR INPUT AS #1 +y = 20 +3 +IF EOF(1) <> 0 THEN GOTO 4 +x = 20 + +LINE INPUT #1, a$ +FOR b = 1 TO LEN(a$) + c$ = RIGHT$(LEFT$(a$, b), 1) + IF c$ = "#" THEN life(x, y) = 1 + x = x + 1 +NEXT b + +y = y + 1 +GOTO 3 +4 +CLOSE #1 + +END SUB + diff --git a/graphics/3D/3dlife.dat b/graphics/3D/3dlife.dat new file mode 100755 index 0000000..17b0e10 --- /dev/null +++ b/graphics/3D/3dlife.dat @@ -0,0 +1,13 @@ +.....#.#..... +...##...##... +..#.......#.. +.#..##.##..#. +.#.#.....#.#. +#..#.###.#..# +.....#.#..... +#..#.###.#..# +.#.#.....#.#. +.#..##.##..#. +..#.......#.. +...##...##... +.....#.#..... diff --git a/graphics/3D/3ds2.bas b/graphics/3D/3ds2.bas new file mode 100755 index 0000000..97d440d --- /dev/null +++ b/graphics/3D/3ds2.bas @@ -0,0 +1,378 @@ +' Svjatoslav Agejenko +' year 2001 + +' arrow keys - move around +' 2, 6, 4, 8 - look around +' - - fly up +' + - fly down + + + +DECLARE SUB mkkoll () +DECLARE SUB putkol () +DECLARE SUB rend () +DECLARE SUB env () +DECLARE SUB start () +DIM SHARED npo, nlo, np, nl +DIM SHARED px(1 TO 1000) +DIM SHARED py(1 TO 1000) +DIM SHARED pz(1 TO 1000) +DIM SHARED rpx(1 TO 1000) +DIM SHARED rpy(1 TO 1000) +DIM SHARED orpx(1 TO 1000) +DIM SHARED orpy(1 TO 1000) +DIM SHARED onp +DIM SHARED lin1(1 TO 1000) +DIM SHARED lin2(1 TO 1000) +DIM SHARED linc(1 TO 1000) +DIM SHARED olin1(1 TO 1000) +DIM SHARED olin2(1 TO 1000) +DIM SHARED onl +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED an1, an2 +DIM SHARED an1s, an2s +DIM SHARED kolx(1 TO 10) +DIM SHARED koly(1 TO 10) +DIM SHARED kolz(1 TO 10) +DIM SHARED kolxs(1 TO 10) +DIM SHARED kolys(1 TO 10) +DIM SHARED kolzs(1 TO 10) +DIM SHARED kolm + +ON ERROR GOTO 2 + +start +env +putkol + +1 +np = npo +nl = nlo + +mkkoll +rend + +myx = myx + myxs +myy = myy + myys +myz = myz + myzs +an1 = an1 + an1s +an2 = an2 + an2s + +a$ = INKEY$ +IF a$ <> "" THEN +IF a$ = CHR$(0) + "H" THEN +myzs = myzs - SIN(an1) / 100 +myxs = myxs - COS(an1) / 100 +END IF +IF a$ = CHR$(0) + "P" THEN +myzs = myzs + SIN(an1) / 100 +myxs = myxs + COS(an1) / 100 +END IF +IF a$ = CHR$(0) + "M" THEN +myzs = myzs + COS(an1) / 100 +myxs = myxs - SIN(an1) / 100 +END IF +IF a$ = CHR$(0) + "K" THEN +myzs = myzs - COS(an1) / 100 +myxs = myxs + SIN(an1) / 100 +END IF + +IF a$ = "6" THEN an1s = an1s - .01 +IF a$ = "4" THEN an1s = an1s + .01 +IF a$ = "8" THEN an2s = an2s - .01 +IF a$ = "2" THEN an2s = an2s + .01 +IF a$ = "+" THEN myys = myys - .01 +IF a$ = "-" THEN myys = myys + .01 +IF a$ = CHR$(27) THEN SYSTEM +END IF +GOTO 1 + +2 +END +RESUME + +SUB env + +FOR z = -5 TO 5 +FOR x = -5 TO 5 +np = np + 1 +px(np) = x +py(np) = 0 +pz(np) = z +IF x > -5 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 1 +linc(nl) = 3 +END IF +IF z > -5 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 11 +linc(nl) = 3 +END IF +NEXT x +NEXT z + +npo = np +nlo = nl + + +END SUB + +SUB env1 + +np = 1 +px(np) = -2 +py(np) = 0 +pz(np) = 0 +np = np + 1 +px(np) = 2 +py(np) = 0 +pz(np) = 0 + +nl = 1 +lin1(nl) = 1 +lin2(nl) = 2 +linc(nl) = 14 + +END SUB + +SUB mkkoll + +FOR a = 1 TO kolm +x = kolx(a) +y = koly(a) +z = kolz(a) +xs = kolxs(a) +ys = kolys(a) +zs = kolzs(a) + +ys = ys - .01 +x = x + xs +y = y + ys +z = z + zs + +IF x > 5 THEN xs = -.1 +IF z > 5 THEN zs = -.1 +IF x < -5 THEN xs = .1 +IF z < -5 THEN zs = .1 +IF y < .5 THEN ys = RND * .2 + .1 + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 2 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 2 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 4 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 4 +linc(nl) = 14 + + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 5 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 2 +lin2(nl) = np + 6 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 7 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 4 +lin2(nl) = np + 8 +linc(nl) = 14 + + + +nl = nl + 1 +lin1(nl) = np + 5 +lin2(nl) = np + 6 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 7 +lin2(nl) = np + 6 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 7 +lin2(nl) = np + 8 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 5 +lin2(nl) = np + 8 +linc(nl) = 14 + + + + +np = np + 1 +px(np) = x - .5 +py(np) = y - .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y - .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y + .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y + .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y - .5 +pz(np) = z + .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y - .5 +pz(np) = z + .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y + .5 +pz(np) = z + .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y + .5 +pz(np) = z + .5 + + + + +kolx(a) = x +koly(a) = y +kolz(a) = z +kolxs(a) = xs +kolys(a) = ys +kolzs(a) = zs +NEXT a + +END SUB + +SUB putkol +FOR a = 1 TO kolm +kolx(a) = RND * 10 - 5 +koly(a) = 2 +kolz(a) = RND * 10 - 5 +kolxs(a) = RND * .5 - .25 +kolys(a) = RND * .5 + .1 +kolzs(a) = RND * .5 - .25 +NEXT a +END SUB + +SUB rend +'C3& = Cosine&(Deg3): S3& = Sine&(Deg3) + + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +FOR a = 1 TO np +x = px(a) + myx +y = py(a) - myy +z = pz(a) + myz + +x1 = x * s1 - z * c1 +z1 = x * c1 + z * s1 +y1 = y * s2 - z1 * c2 +z2 = y * c2 + z1 * s2 + +IF z2 < .1 THEN +rpx(a) = -1 +ELSE +rpx(a) = 320 + (x1 / z2 * 400) +rpy(a) = 240 - (y1 / z2 * 400) +END IF +NEXT a + + +FOR a = 1 TO nl +l1 = olin1(a) +l2 = olin2(a) +IF orpx(l1) = -1 OR orpx(l2) = -1 THEN ELSE LINE (orpx(l1), orpy(l1))-(orpx(l2), orpy(l2)), 0 +l1 = lin1(a) +l2 = lin2(a) +IF rpx(l1) = -1 OR rpx(l2) = -1 THEN ELSE LINE (rpx(l1), rpy(l1))-(rpx(l2), rpy(l2)), linc(a) +NEXT + +IF nl < onl THEN +FOR a = nl + 1 TO onl +l1 = olin1(a) +l2 = olin2(a) +IF orpx(l1) = -1 OR orpx(l2) = -1 THEN ELSE LINE (orpx(l1), orpy(l1))-(orpx(l2), orpy(l2)), 0 +NEXT +END IF + +FOR a = 1 TO np +orpx(a) = rpx(a) +orpy(a) = rpy(a) +NEXT a +onp = np + +FOR a = 1 TO nl +olin1(a) = lin1(a) +olin2(a) = lin2(a) +NEXT a +onl = nl + +END SUB + +SUB start +SCREEN 12 +npo = 0 +nlo = 0 +np = npo +nl = nlo +kolm = 9 + +myx = 0 +myy = 4 +myz = 7 +an1 = 3.14 / 2 +an2 = an1 + .6 + +FOR a = 1 TO 1000 +linc(a) = 4 +NEXT a + +FOR a = 1 TO 1000 +olin1(a) = 1 +olin2(a) = 1 +NEXT a + + + +END SUB + diff --git a/graphics/3D/3dtest.bas b/graphics/3D/3dtest.bas new file mode 100755 index 0000000..aef4b86 --- /dev/null +++ b/graphics/3D/3dtest.bas @@ -0,0 +1,165 @@ +' 3D test +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB star (x!, y!, z!, an1!, an2!, an3!) +DECLARE SUB gp (x!, y!, z!, x1!, y1!) +DECLARE SUB stic (x!, y!, z!, an1!, an2!, an3!) +DECLARE SUB gc (x!, y!, z!, x1!, y1!, z1!) +DECLARE SUB gcp (x!, y!, z!, x1!, y1!) +DECLARE SUB setan (alp!, bet!, gam!) +DECLARE SUB start () +DECLARE SUB drawscr () + +DIM SHARED mx1, my1, mz1 +DIM SHARED mx2, my2, mz2 +DIM SHARED mx3, my3, mz3 + +DIM SHARED frm, pi + +start + +1 + +drawscr +frm = frm + 1 +GOTO 1 + +SUB drawscr + +an1 = SIN(frm / 50) / 2 +an2 = SIN(frm / 23) / 2 - .5 +an3 = 0 + +setan an1, an2, an3 + +FOR x = -100 TO 100 STEP 10 + FOR z = 0 TO 200 STEP 10 + gcp x, -90, z, x1, y1 + PSET (x1, y1), 15 + NEXT z +NEXT x + +gc -70, -90, 150, x1, y1, z1 + +stic x1, y1, z1, an1, an2, an3 + + +PCOPY 0, 1 +CLS +END SUB + +SUB gc (x, y, z, x1, y1, z1) +x1 = x * mx1 + y * my1 + z * mz1 +y1 = x * mx2 + y * my2 + z * mz2 +z1 = x * mx3 + y * my3 + z * mz3 +END SUB + +SUB gcp (x, y, z, x1, y1) + +rx = x * mx1 + y * my1 + z * mz1 ' matrix transformation +ry = x * mx2 + y * my2 + z * mz2 +rz = x * mx3 + y * my3 + z * mz3 + +rz = rz + 100 ' perspective calculation +x1 = rx / rz * 120 +y1 = ry / rz * 120 + +END SUB + +SUB gp (x, y, z, x1, y1) +rz = z + 100 ' perspective calculation +x1 = x / rz * 120 +y1 = y / rz * 120 +END SUB + +SUB setan (alp, bet, gam) +mx1 = SIN(gam) * SIN(bet) * SIN(alp) + COS(gam) * COS(alp) +my1 = COS(bet) * SIN(alp) +mz1 = SIN(gam) * COS(alp) - COS(gam) * SIN(bet) * SIN(alp) + +mx2 = SIN(gam) * SIN(bet) * COS(alp) - COS(gam) * SIN(alp) +my2 = COS(bet) * COS(alp) +mz2 = -COS(gam) * SIN(bet) * COS(alp) - SIN(gam) * SIN(alp) + +mx3 = -SIN(gam) * COS(bet) +my3 = SIN(bet) +mz3 = COS(gam) * COS(bet) +END SUB + +SUB star (x, y, z, an1, an2, an3) + +nan1 = an1 +nan2 = an2 +nan3 = an3 + +setan nan1, nan2, nan3 +gp x, y, z, rx1, ry1 + +FOR n = 0 TO pi * 2 - .1 STEP pi / 5 + x1 = SIN(n) * 20 + y1 = COS(n) * 20 + + gc x1, y1, 0, x2, y2, z2 + gp x2 + x, y2 + y, z2 + z, rx2, ry2 +CIRCLE (rx2, ry2), 1, 14 +LINE (rx2, ry2)-(rx1, ry1), 1 +NEXT n + + +END SUB + +SUB start +SCREEN 7, , , 1 +WINDOW (-160, -100)-(160, 100) + +pi = 3.141592 + +END SUB + +SUB stic (x, y, z, an1, an2, an3) +nan1 = an1 +nan2 = an2 +nan3 = an3 + frm / 50 + +setan nan1, nan2, nan3 +gp x, y, z, rx1, ry1 + +DIM tmpx(0 TO 5) +DIM tmpy(0 TO 5) +DIM tmpz(0 TO 5) + +DIM tmprx(0 TO 5) +DIM tmpry(0 TO 5) +p = 0 + +FOR n = 0 TO pi * 2 - .5 STEP pi / 3 + x1 = SIN(n) * 100 + z1 = COS(n) * 100 + + gc x1, 100, z1, x2, y2, z2 + tmpx(p) = x2 + x + tmpy(p) = y2 + y + tmpz(p) = z2 + z + gp x2 + x, y2 + y, z2 + z, rx2, ry2 + tmprx(p) = rx2 + tmpry(p) = ry2 + LINE (rx1, ry1)-(rx2, ry2), 15 + + p = p + 1 +NEXT n + +LINE (tmprx(0), tmpry(0))-(tmprx(2), tmpry(2)), 10 +LINE (tmprx(2), tmpry(2))-(tmprx(4), tmpry(4)), 10 +LINE (tmprx(4), tmpry(4))-(tmprx(0), tmpry(0)), 10 + +LINE (tmprx(1), tmpry(1))-(tmprx(3), tmpry(3)), 12 +LINE (tmprx(3), tmpry(3))-(tmprx(5), tmpry(5)), 12 +LINE (tmprx(5), tmpry(5))-(tmprx(1), tmpry(1)), 12 + +star tmpx(0), tmpy(0), tmpz(0), nan1, nan2, nan3 + +END SUB + diff --git a/graphics/3D/3dtext.bas b/graphics/3D/3dtext.bas new file mode 100755 index 0000000..9194b89 --- /dev/null +++ b/graphics/3D/3dtext.bas @@ -0,0 +1,515 @@ +' 3D text +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB prn (x!, y!, a$) +DECLARE SUB pch (x!, y!, a$) +DECLARE SUB readfnt () +DECLARE SUB ruut2 (x!, y!, z!, s!) +DECLARE SUB ruut (x!, y!, z!, s!) +DECLARE SUB kuus (x, y, z, s) +DECLARE SUB porand () +DECLARE SUB addp (x, y, z) +' kursor keys and to z, w - rotate +' - speed down +' q - quit + +DECLARE SUB start () +DECLARE SUB addsq (x1%, y1%, z1%) +DECLARE SUB getcor () +DECLARE SUB mulcor () +DECLARE SUB nait3d () +DECLARE SUB calcsin () +DIM SHARED xn(4000), yn(4000), zn(4000) +DIM SHARED x(4000), y(4000), z(4000) + +DIM SHARED xo(4000), yo(4000), zo(4000) +DIM SHARED point1(4000), point2(4000) +DIM SHARED col(4000) +DIM SHARED nump, numl +DIM SHARED myx, myy, myz, mye, myk +DIM SHARED tpx(0 TO 10, 0 TO 255) +DIM SHARED tpy(0 TO 10, 0 TO 255) +DIM SHARED tl1(0 TO 10, 0 TO 255) +DIM SHARED tl2(0 TO 10, 0 TO 255) + +myx = 0 +myy = 0 +myz = -100 + + + +start + +nait3d + +SUB getcor + +xn(nump + 1) = -150 +yn(nump + 1) = -125 +zn(nump + 1) = -200 + +xn(nump + 2) = 150 +yn(nump + 2) = -125 +zn(nump + 2) = -200 + +xn(nump + 3) = 150 +yn(nump + 3) = 125 +zn(nump + 3) = -200 + +xn(nump + 4) = -150 +yn(nump + 4) = 125 +zn(nump + 4) = -200 + + +xn(nump + 5) = -150 +yn(nump + 5) = -125 +zn(nump + 5) = 200 + +xn(nump + 6) = 150 +yn(nump + 6) = -125 +zn(nump + 6) = 200 + +xn(nump + 7) = 150 +yn(nump + 7) = 125 +zn(nump + 7) = 200 + +xn(nump + 8) = -150 +yn(nump + 8) = 125 +zn(nump + 8) = 200 + + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 + +point1(numl + 5) = nump + 5 +point2(numl + 5) = nump + 6 + +point1(numl + 6) = nump + 6 +point2(numl + 6) = nump + 7 + +point1(numl + 7) = nump + 7 +point2(numl + 7) = nump + 8 + +point1(numl + 8) = nump + 8 +point2(numl + 8) = nump + 5 + +point1(numl + 9) = nump + 5 +point2(numl + 9) = nump + 1 + +point1(numl + 10) = nump + 6 +point2(numl + 10) = nump + 2 + +point1(numl + 11) = nump + 7 +point2(numl + 11) = nump + 3 + +point1(numl + 12) = nump + 8 +point2(numl + 12) = nump + 4 + +nump = nump + 8 +numl = numl + 12 + + + + +xn(nump + 1) = -150 +yn(nump + 1) = -125 + 201 +zn(nump + 1) = 0 + +xn(nump + 2) = -150 +yn(nump + 2) = -125 + 201 +zn(nump + 2) = 89 + +xn(nump + 3) = -150 +yn(nump + 3) = -125 +zn(nump + 3) = 89 + +xn(nump + 4) = -150 +yn(nump + 4) = -125 +zn(nump + 4) = 0 + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 + +nump = nump + 4 +numl = numl + 4 + + + +prn 0, 0, "three dimensional " +prn 0, -3, "text example" +prn 0, -6, "etc etc etc" + + + +END SUB + +SUB kuus (x, y, z, s) + +b = 0 +f = .3925 +FOR a = 0 + f TO 6 + f STEP 6.28 / 8 +x1 = SIN(a) * s +y1 = COS(a) * s +b = b + 1 + +xn(nump + b) = x1 + x +yn(nump + b) = y +zn(nump + b) = y1 + z + +NEXT a + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = 12 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = 12 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = 12 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 5 +col(numl + 4) = 12 + +point1(numl + 5) = nump + 5 +point2(numl + 5) = nump + 6 +col(numl + 5) = 12 + + +point1(numl + 6) = nump + 6 +point2(numl + 6) = nump + 7 +col(numl + 6) = 12 + +point1(numl + 7) = nump + 7 +point2(numl + 7) = nump + 8 +col(numl + 7) = 12 + +point1(numl + 8) = nump + 8 +point2(numl + 8) = nump + 1 +col(numl + 8) = 12 + +nump = nump + b +numl = numl + 8 +'LOCATE 1, 1 +'PRINT b + + + + +END SUB + +SUB nait3d + +1 + +myx = myx + SIN(deg1) * mye +myz = myz + COS(deg1) * mye + +myx = myx + COS(deg1) * myk +myz = myz - SIN(deg1) * myk + +deg1 = deg1 + d1 +Deg2 = Deg2 + d2 + +C1 = COS(deg1): S1 = SIN(deg1) +C2 = COS(Deg2): S2 = SIN(Deg2) + +FOR a = 1 TO nump + +xo = xn(a) - myx +yo = -yn(a) - myy +zo = zn(a) - myz + +x1 = (xo * C1 - zo * S1) +z1 = (xo * S1 + zo * C1) + +y1 = (yo * C2 - z1 * S2) +z2 = (yo * S2 + z1 * C2) + + +xo(a) = x(a) +yo(a) = y(a) +IF z2 < 20 THEN +x(a) = -1 +ELSE +x(a) = 320 + (x1 / z2 * 500) + +y(a) = 240 + (y1 / z2 * 500) +END IF +NEXT + + +FOR a = 1 TO numl +p1 = point1(a) +p2 = point2(a) +IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 +IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) +NEXT + + +K$ = INKEY$ +IF K$ <> "" THEN + +SELECT CASE K$ + +CASE CHR$(0) + "P" +mye = mye - 1 + +CASE CHR$(0) + "H" +mye = mye + 1 + +CASE CHR$(0) + "M" +myk = myk + 1 + +CASE CHR$(0) + "K" +myk = myk - 1 + +CASE "+" +myy = myy + 3 + +CASE "-" +myy = myy - 3 + +CASE "6" +d1 = d1 + .01 + +CASE "4" +d1 = d1 - .01 + +CASE "8" +d2 = d2 - .01 + +CASE "2" +d2 = d2 + .01 + + +CASE " " +d1 = d1 / 2 +d2 = d2 / 2 +d3 = d3 / 2 +mye = mye / 2 +myk = myk / 2 + +CASE "q" +SYSTEM + +CASE CHR$(27) +SYSTEM + +END SELECT +END IF + +GOTO 1 +END SUB + +SUB pch (x, y, a$) + + +b = ASC(a$) +up = 0 +ul = 0 + +FOR c = 0 TO 100 +IF tpx(c, b) = 999 THEN GOTO 4 +up = up + 1 +xn(nump + up) = x + tpx(c, b) +yn(nump + up) = y - tpy(c, b) +zn(nump + up) = 0 +NEXT c +4 + +FOR c = 0 TO 100 +IF tl1(c, b) = 999 THEN GOTO 5 +ul = ul + 1 +point1(numl + ul) = tl1(c, b) + nump + 1 +point2(numl + ul) = tl2(c, b) + nump + 1 +col(numl + ul) = 4 +NEXT c +5 + + + +nump = nump + up +numl = numl + ul + + +END SUB + +SUB porand + +FOR x = -100 TO 0 STEP 12.067 + .3 +FOR z = -100 TO 0 STEP 12.067 + .3 +kuus x, -125, z, 6.53 +ruut x + 6.033 + .15, -125, z + 6.033 + .15, 3.111 + .3 +NEXT z +NEXT x + +FOR y = -100 TO 0 STEP 20.3 +FOR x = -100 TO 0 STEP 20.3 +ruut2 x, y, 200, 10 +NEXT x +NEXT y + + +END SUB + +SUB prn (x, y, a$) + +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +pch x + b * 3, y, c$ +NEXT b +END SUB + +SUB readfnt +OPEN "font.dat" FOR INPUT AS #1 +3 +IF EOF(1) <> 0 THEN GOTO 2 +LINE INPUT #1, a$ +IF LEFT$(a$, 1) = "#" THEN +chr = ASC(RIGHT$(LEFT$(a$, 3), 1)) +pp = 0 +lp = 0 +END IF +IF LEFT$(a$, 1) = "p" THEN +tpx(pp, chr) = VAL(RIGHT$(LEFT$(a$, 3), 1)) +tpy(pp, chr) = VAL(RIGHT$(LEFT$(a$, 5), 1)) +pp = pp + 1 +END IF +IF LEFT$(a$, 1) = "l" THEN +tl1(lp, chr) = VAL(RIGHT$(LEFT$(a$, 3), 1)) +tl2(lp, chr) = VAL(RIGHT$(LEFT$(a$, 5), 1)) +lp = lp + 1 +END IF + +GOTO 3 +2 +CLOSE #1 + + +END SUB + +SUB ruut (x, y, z, s) +xn(nump + 1) = x +yn(nump + 1) = y +zn(nump + 1) = z + s + +xn(nump + 2) = x + s +yn(nump + 2) = y +zn(nump + 2) = z + +xn(nump + 3) = x +yn(nump + 3) = y +zn(nump + 3) = z - s + +xn(nump + 4) = x - s +yn(nump + 4) = y +zn(nump + 4) = z + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = 10 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = 10 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = 10 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 +col(numl + 4) = 10 + +nump = nump + 4 +numl = numl + 4 +END SUB + +SUB ruut2 (x, y, z, s) +xn(nump + 1) = x - s +yn(nump + 1) = y - s +zn(nump + 1) = z + +xn(nump + 2) = x + s +yn(nump + 2) = y - s +zn(nump + 2) = z + +xn(nump + 3) = x + s +yn(nump + 3) = y + s +zn(nump + 3) = z + +xn(nump + 4) = x - s +yn(nump + 4) = y + s +zn(nump + 4) = z + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = 14 + +point1(numl + 2) = nump + 2 +point2(numl + 2) = nump + 3 +col(numl + 2) = 14 + +point1(numl + 3) = nump + 3 +point2(numl + 3) = nump + 4 +col(numl + 3) = 14 + +point1(numl + 4) = nump + 4 +point2(numl + 4) = nump + 1 +col(numl + 4) = 14 + +nump = nump + 4 +numl = numl + 4 + +END SUB + +SUB start +SCREEN 12 +CLS + +FOR a = 1 TO 4000 +col(a) = 15 +NEXT a + +nump = 0 +numl = 0 +FOR a = 0 TO 255 +FOR b = 0 TO 10 +tpx(b, a) = 999 +tpy(b, a) = 999 +tl1(b, a) = 999 +tl2(b, a) = 999 +NEXT b +NEXT a + + +readfnt +getcor + +END SUB + diff --git a/graphics/3D/KHK Intellektika 2004 demo/CAT.I01 b/graphics/3D/KHK Intellektika 2004 demo/CAT.I01 new file mode 100755 index 0000000..eb828e6 --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/CAT.I01 @@ -0,0 +1,32222 @@ + 179 + 180 + 0 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 1 + 6 + 37 + 0 + 0 + 43 + 1 + 43 + 43 + 44 + 86 + 86 + 123 + 129 + 93 + 165 + 129 + 136 + 165 + 172 + 129 + 136 + 165 + 136 + 165 + 172 + 173 + 178 + 208 + 172 + 215 + 172 + 208 + 214 + 173 + 208 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 159 + 135 + 123 + 93 + 122 + 129 + 122 + 93 + 159 + 129 + 135 + 166 + 165 + 136 + 165 + 130 + 135 + 165 + 130 + 129 + 129 + 129 + 129 + 93 + 122 + 93 + 129 + 122 + 87 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 86 + 43 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 87 + 128 + 86 + 129 + 123 + 129 + 129 + 122 + 129 + 86 + 79 + 86 + 43 + 86 + 43 + 43 + 79 + 43 + 43 + 37 + 43 + 85 + 86 + 122 + 87 + 128 + 87 + 80 + 85 + 44 + 79 + 49 + 80 + 86 + 85 + 80 + 86 + 80 + 85 + 80 + 86 + 86 + 79 + 86 + 79 + 43 + 43 + 43 + 43 + 44 + 86 + 92 + 171 + 136 + 173 + 178 + 173 + 215 + 178 + 137 + 178 + 173 + 178 + 173 + 172 + 178 + 173 + 178 + 173 + 172 + 179 + 172 + 179 + 36 + 0 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 0 + 7 + 0 + 0 + 1 + 36 + 0 + 1 + 6 + 37 + 7 + 36 + 44 + 86 + 122 + 87 + 122 + 129 + 129 + 172 + 172 + 165 + 136 + 129 + 171 + 136 + 166 + 178 + 209 + 172 + 208 + 179 + 172 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 129 + 129 + 130 + 164 + 93 + 123 + 129 + 128 + 87 + 122 + 86 + 129 + 87 + 128 + 130 + 171 + 130 + 171 + 166 + 135 + 166 + 129 + 171 + 130 + 129 + 129 + 129 + 129 + 129 + 87 + 128 + 87 + 129 + 86 + 129 + 86 + 123 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 79 + 44 + 86 + 128 + 87 + 93 + 128 + 123 + 128 + 123 + 129 + 165 + 136 + 123 + 128 + 86 + 86 + 86 + 80 + 85 + 44 + 79 + 43 + 43 + 43 + 43 + 43 + 79 + 86 + 123 + 92 + 86 + 86 + 86 + 80 + 85 + 43 + 43 + 44 + 79 + 86 + 79 + 85 + 44 + 79 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 43 + 43 + 43 + 49 + 87 + 129 + 129 + 178 + 173 + 178 + 136 + 215 + 143 + 172 + 172 + 178 + 172 + 143 + 172 + 179 + 172 + 179 + 172 + 173 + 178 + 209 + 178 + 1 + 0 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 0 + 37 + 0 + 0 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 0 + 0 + 43 + 43 + 36 + 44 + 49 + 116 + 92 + 123 + 128 + 130 + 165 + 172 + 130 + 171 + 129 + 172 + 130 + 178 + 172 + 208 + 173 + 172 + 215 + 172 + 214 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 130 + 122 + 93 + 129 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 172 + 166 + 172 + 135 + 166 + 135 + 165 + 130 + 129 + 129 + 129 + 130 + 128 + 129 + 87 + 129 + 128 + 87 + 86 + 129 + 85 + 93 + 122 + 86 + 86 + 43 + 50 + 79 + 86 + 87 + 86 + 128 + 93 + 128 + 129 + 123 + 129 + 136 + 165 + 129 + 165 + 129 + 129 + 87 + 122 + 86 + 85 + 44 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 128 + 87 + 86 + 122 + 50 + 79 + 43 + 43 + 86 + 43 + 43 + 80 + 79 + 79 + 50 + 79 + 86 + 79 + 43 + 79 + 43 + 79 + 43 + 7 + 43 + 44 + 50 + 85 + 166 + 135 + 172 + 178 + 173 + 179 + 177 + 173 + 178 + 137 + 178 + 173 + 178 + 136 + 178 + 173 + 178 + 172 + 173 + 177 + 173 + 178 + 1 + 36 + 0 + 0 + 1 + 0 + 0 + 43 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 7 + 0 + 37 + 42 + 43 + 80 + 86 + 128 + 87 + 128 + 165 + 130 + 171 + 166 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 179 + 172 + 172 + 173 + 178 + 171 + 166 + 172 + 136 + 165 + 86 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 85 + 44 + 86 + 86 + 86 + 86 + 129 + 129 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 136 + 165 + 129 + 129 + 130 + 129 + 129 + 92 + 123 + 129 + 92 + 122 + 93 + 122 + 87 + 129 + 86 + 86 + 43 + 86 + 93 + 122 + 93 + 122 + 93 + 122 + 129 + 129 + 129 + 171 + 165 + 130 + 171 + 129 + 123 + 129 + 129 + 86 + 86 + 79 + 50 + 80 + 49 + 80 + 43 + 43 + 7 + 43 + 79 + 86 + 86 + 86 + 87 + 86 + 85 + 44 + 79 + 43 + 7 + 50 + 79 + 79 + 43 + 86 + 79 + 79 + 44 + 79 + 43 + 79 + 43 + 44 + 43 + 6 + 44 + 49 + 80 + 93 + 129 + 172 + 178 + 136 + 178 + 173 + 178 + 173 + 179 + 172 + 179 + 172 + 172 + 143 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 179 + 0 + 36 + 1 + 0 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 43 + 43 + 86 + 122 + 123 + 129 + 128 + 129 + 130 + 165 + 172 + 129 + 172 + 171 + 172 + 173 + 172 + 178 + 172 + 172 + 173 + 208 + 171 + 172 + 172 + 129 + 130 + 129 + 129 + 86 + 86 + 86 + 50 + 80 + 85 + 43 + 86 + 43 + 43 + 80 + 49 + 80 + 86 + 93 + 122 + 136 + 171 + 166 + 171 + 172 + 172 + 136 + 166 + 171 + 136 + 165 + 136 + 129 + 165 + 136 + 129 + 129 + 129 + 129 + 123 + 129 + 93 + 122 + 129 + 93 + 122 + 86 + 86 + 86 + 86 + 87 + 129 + 129 + 128 + 87 + 129 + 129 + 129 + 129 + 172 + 165 + 136 + 159 + 128 + 129 + 129 + 129 + 123 + 85 + 44 + 86 + 85 + 80 + 50 + 43 + 43 + 37 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 43 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 79 + 43 + 79 + 44 + 43 + 49 + 43 + 43 + 43 + 50 + 86 + 129 + 136 + 135 + 209 + 179 + 172 + 179 + 179 + 172 + 179 + 171 + 179 + 172 + 172 + 179 + 172 + 179 + 172 + 179 + 209 + 178 + 179 + 172 + 1 + 36 + 6 + 1 + 0 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 43 + 37 + 43 + 86 + 122 + 129 + 129 + 128 + 123 + 172 + 129 + 172 + 129 + 136 + 171 + 209 + 172 + 214 + 172 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 124 + 128 + 93 + 86 + 87 + 85 + 80 + 43 + 50 + 79 + 43 + 50 + 43 + 43 + 37 + 49 + 86 + 87 + 128 + 87 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 166 + 172 + 172 + 135 + 166 + 135 + 166 + 135 + 165 + 129 + 129 + 135 + 129 + 123 + 129 + 129 + 129 + 86 + 87 + 128 + 86 + 86 + 86 + 93 + 128 + 123 + 93 + 129 + 128 + 130 + 129 + 129 + 165 + 129 + 166 + 129 + 128 + 123 + 129 + 129 + 86 + 122 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 43 + 43 + 86 + 79 + 50 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 79 + 43 + 43 + 44 + 79 + 43 + 86 + 43 + 43 + 44 + 49 + 44 + 87 + 128 + 135 + 136 + 172 + 215 + 172 + 179 + 173 + 178 + 173 + 178 + 209 + 178 + 173 + 172 + 178 + 173 + 179 + 214 + 173 + 178 + 209 + 179 + 214 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 0 + 0 + 1 + 6 + 0 + 37 + 0 + 0 + 1 + 42 + 43 + 43 + 79 + 86 + 86 + 123 + 129 + 129 + 165 + 129 + 165 + 136 + 165 + 136 + 172 + 172 + 209 + 178 + 172 + 173 + 172 + 171 + 172 + 172 + 130 + 165 + 93 + 86 + 122 + 86 + 86 + 50 + 79 + 43 + 44 + 49 + 43 + 44 + 42 + 43 + 37 + 50 + 86 + 122 + 93 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 165 + 136 + 165 + 136 + 129 + 129 + 129 + 130 + 165 + 92 + 129 + 129 + 86 + 122 + 92 + 87 + 128 + 86 + 86 + 87 + 128 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 128 + 130 + 128 + 129 + 123 + 129 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 1 + 43 + 43 + 85 + 44 + 85 + 44 + 86 + 86 + 43 + 44 + 42 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 79 + 43 + 44 + 49 + 49 + 86 + 87 + 129 + 135 + 172 + 173 + 178 + 173 + 178 + 173 + 179 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 214 + 173 + 215 + 172 + 214 + 215 + 173 + 214 + 0 + 1 + 0 + 42 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 43 + 7 + 79 + 44 + 86 + 122 + 86 + 122 + 129 + 86 + 129 + 165 + 136 + 165 + 129 + 130 + 171 + 172 + 179 + 172 + 208 + 172 + 172 + 172 + 136 + 129 + 123 + 128 + 93 + 122 + 87 + 85 + 86 + 86 + 50 + 49 + 79 + 44 + 85 + 44 + 85 + 43 + 44 + 86 + 122 + 93 + 128 + 129 + 130 + 171 + 172 + 130 + 172 + 172 + 178 + 166 + 172 + 172 + 171 + 172 + 130 + 165 + 135 + 130 + 129 + 129 + 129 + 129 + 165 + 130 + 129 + 129 + 92 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 129 + 92 + 123 + 129 + 92 + 123 + 129 + 129 + 129 + 129 + 122 + 165 + 93 + 122 + 86 + 86 + 86 + 86 + 44 + 79 + 43 + 7 + 43 + 36 + 7 + 43 + 80 + 49 + 80 + 50 + 85 + 80 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 1 + 49 + 43 + 43 + 43 + 44 + 43 + 79 + 50 + 80 + 50 + 128 + 93 + 166 + 136 + 172 + 172 + 179 + 214 + 173 + 179 + 208 + 179 + 178 + 209 + 179 + 172 + 179 + 179 + 208 + 179 + 208 + 215 + 179 + 209 + 214 + 209 + 179 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 36 + 0 + 1 + 42 + 1 + 43 + 43 + 86 + 86 + 122 + 129 + 123 + 128 + 93 + 159 + 129 + 129 + 135 + 166 + 129 + 136 + 165 + 172 + 172 + 135 + 166 + 171 + 130 + 172 + 129 + 86 + 129 + 86 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 43 + 86 + 86 + 50 + 79 + 50 + 86 + 123 + 92 + 123 + 129 + 172 + 136 + 171 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 165 + 136 + 129 + 129 + 129 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 122 + 86 + 93 + 86 + 123 + 86 + 92 + 129 + 122 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 80 + 86 + 50 + 43 + 43 + 43 + 43 + 37 + 7 + 43 + 79 + 49 + 44 + 86 + 86 + 44 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 6 + 44 + 43 + 79 + 49 + 86 + 50 + 86 + 92 + 130 + 129 + 171 + 136 + 172 + 179 + 208 + 179 + 173 + 214 + 173 + 214 + 173 + 214 + 173 + 214 + 172 + 178 + 209 + 178 + 209 + 214 + 215 + 209 + 178 + 209 + 214 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 7 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 37 + 6 + 43 + 80 + 86 + 122 + 136 + 159 + 128 + 129 + 129 + 129 + 165 + 129 + 130 + 129 + 129 + 129 + 129 + 136 + 165 + 130 + 135 + 165 + 130 + 128 + 87 + 122 + 92 + 86 + 86 + 86 + 129 + 87 + 128 + 129 + 87 + 85 + 86 + 86 + 86 + 80 + 50 + 122 + 93 + 123 + 128 + 130 + 171 + 136 + 172 + 166 + 172 + 135 + 172 + 172 + 166 + 172 + 171 + 172 + 135 + 166 + 135 + 130 + 165 + 129 + 129 + 136 + 129 + 129 + 166 + 129 + 93 + 122 + 92 + 123 + 93 + 122 + 93 + 86 + 122 + 86 + 86 + 86 + 93 + 122 + 86 + 129 + 129 + 86 + 129 + 123 + 86 + 128 + 86 + 122 + 87 + 85 + 80 + 50 + 43 + 86 + 43 + 37 + 43 + 42 + 44 + 43 + 49 + 80 + 50 + 86 + 86 + 50 + 79 + 44 + 43 + 43 + 43 + 49 + 44 + 43 + 44 + 13 + 80 + 50 + 86 + 86 + 92 + 129 + 130 + 135 + 172 + 172 + 172 + 178 + 173 + 179 + 208 + 179 + 172 + 215 + 172 + 215 + 172 + 179 + 215 + 172 + 214 + 173 + 215 + 214 + 209 + 214 + 173 + 215 + 214 + 209 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 43 + 1 + 0 + 43 + 6 + 1 + 36 + 0 + 1 + 0 + 7 + 36 + 7 + 37 + 6 + 37 + 43 + 43 + 43 + 122 + 129 + 129 + 165 + 129 + 129 + 165 + 128 + 129 + 87 + 129 + 129 + 128 + 124 + 129 + 135 + 129 + 129 + 129 + 130 + 128 + 87 + 122 + 93 + 123 + 92 + 129 + 129 + 129 + 130 + 165 + 129 + 93 + 85 + 129 + 87 + 85 + 92 + 123 + 92 + 129 + 123 + 135 + 166 + 172 + 171 + 136 + 172 + 166 + 136 + 171 + 166 + 172 + 172 + 172 + 136 + 165 + 172 + 129 + 136 + 129 + 165 + 130 + 135 + 165 + 130 + 135 + 123 + 92 + 129 + 128 + 87 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 92 + 123 + 93 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 123 + 122 + 86 + 50 + 86 + 79 + 50 + 43 + 80 + 43 + 43 + 7 + 43 + 79 + 43 + 86 + 50 + 86 + 122 + 50 + 86 + 43 + 86 + 44 + 86 + 49 + 49 + 86 + 49 + 79 + 50 + 86 + 92 + 129 + 129 + 130 + 135 + 179 + 172 + 208 + 179 + 172 + 179 + 209 + 178 + 179 + 208 + 179 + 208 + 214 + 173 + 215 + 208 + 179 + 215 + 208 + 215 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 0 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 0 + 43 + 1 + 42 + 1 + 0 + 43 + 0 + 0 + 1 + 43 + 42 + 1 + 43 + 37 + 6 + 37 + 43 + 85 + 123 + 92 + 165 + 123 + 129 + 129 + 129 + 129 + 86 + 128 + 87 + 86 + 128 + 87 + 129 + 129 + 122 + 93 + 129 + 128 + 87 + 129 + 129 + 128 + 129 + 130 + 129 + 171 + 129 + 172 + 129 + 129 + 129 + 123 + 93 + 128 + 123 + 93 + 122 + 129 + 129 + 129 + 172 + 172 + 172 + 135 + 166 + 136 + 166 + 171 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 165 + 135 + 130 + 165 + 135 + 130 + 165 + 136 + 129 + 123 + 92 + 130 + 128 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 128 + 87 + 129 + 86 + 122 + 129 + 86 + 122 + 86 + 87 + 128 + 86 + 80 + 86 + 85 + 44 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 86 + 87 + 128 + 87 + 92 + 93 + 129 + 93 + 129 + 136 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 209 + 178 + 215 + 173 + 178 + 209 + 172 + 215 + 208 + 178 + 215 + 209 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 209 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 43 + 0 + 43 + 43 + 0 + 1 + 0 + 43 + 0 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 6 + 37 + 43 + 79 + 86 + 122 + 129 + 86 + 129 + 129 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 86 + 86 + 87 + 128 + 92 + 123 + 129 + 93 + 129 + 165 + 135 + 166 + 136 + 171 + 130 + 165 + 172 + 135 + 166 + 135 + 123 + 93 + 128 + 129 + 123 + 129 + 92 + 130 + 129 + 172 + 171 + 130 + 172 + 165 + 136 + 171 + 130 + 172 + 165 + 172 + 136 + 171 + 172 + 166 + 135 + 130 + 165 + 135 + 130 + 129 + 171 + 130 + 165 + 129 + 93 + 129 + 129 + 122 + 129 + 93 + 122 + 87 + 86 + 128 + 87 + 86 + 129 + 86 + 122 + 87 + 92 + 122 + 122 + 87 + 128 + 86 + 86 + 80 + 86 + 85 + 87 + 43 + 86 + 44 + 85 + 43 + 43 + 43 + 43 + 43 + 49 + 87 + 86 + 129 + 86 + 92 + 86 + 86 + 129 + 92 + 86 + 129 + 100 + 165 + 136 + 136 + 130 + 178 + 135 + 173 + 172 + 179 + 178 + 215 + 173 + 178 + 179 + 209 + 214 + 179 + 173 + 214 + 208 + 214 + 173 + 214 + 215 + 209 + 215 + 215 + 209 + 179 + 214 + 209 + 214 + 208 + 215 + 214 + 209 + 43 + 36 + 1 + 6 + 37 + 6 + 43 + 37 + 43 + 7 + 36 + 7 + 37 + 42 + 37 + 43 + 79 + 43 + 49 + 43 + 79 + 44 + 36 + 43 + 43 + 79 + 86 + 86 + 122 + 129 + 123 + 129 + 129 + 129 + 129 + 86 + 86 + 85 + 44 + 86 + 87 + 85 + 86 + 87 + 123 + 128 + 129 + 129 + 130 + 171 + 135 + 166 + 172 + 130 + 171 + 172 + 130 + 171 + 130 + 129 + 171 + 130 + 129 + 129 + 129 + 92 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 166 + 129 + 135 + 172 + 130 + 171 + 172 + 172 + 165 + 136 + 129 + 129 + 166 + 135 + 130 + 171 + 129 + 130 + 128 + 123 + 129 + 129 + 129 + 93 + 123 + 128 + 93 + 122 + 87 + 128 + 86 + 86 + 86 + 129 + 86 + 122 + 93 + 123 + 128 + 122 + 86 + 80 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 49 + 81 + 92 + 93 + 86 + 129 + 92 + 129 + 93 + 129 + 129 + 136 + 129 + 137 + 172 + 177 + 137 + 178 + 173 + 179 + 214 + 173 + 179 + 179 + 208 + 179 + 179 + 172 + 215 + 179 + 178 + 209 + 179 + 208 + 215 + 214 + 209 + 179 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 215 + 214 + 209 + 79 + 43 + 0 + 43 + 0 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 79 + 49 + 43 + 80 + 43 + 79 + 79 + 44 + 43 + 42 + 43 + 37 + 43 + 85 + 80 + 129 + 86 + 129 + 122 + 129 + 86 + 165 + 87 + 128 + 44 + 86 + 79 + 87 + 86 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 130 + 172 + 171 + 172 + 130 + 171 + 172 + 172 + 129 + 130 + 135 + 165 + 130 + 129 + 129 + 135 + 165 + 129 + 87 + 171 + 130 + 171 + 130 + 171 + 172 + 130 + 171 + 129 + 165 + 136 + 129 + 172 + 166 + 172 + 135 + 166 + 135 + 129 + 130 + 129 + 129 + 166 + 135 + 165 + 93 + 129 + 122 + 93 + 129 + 129 + 122 + 135 + 123 + 93 + 128 + 87 + 128 + 87 + 122 + 93 + 122 + 86 + 129 + 129 + 122 + 87 + 128 + 86 + 122 + 44 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 80 + 43 + 7 + 43 + 43 + 49 + 86 + 129 + 87 + 92 + 136 + 165 + 135 + 172 + 136 + 172 + 179 + 179 + 172 + 179 + 215 + 179 + 179 + 178 + 215 + 179 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 215 + 209 + 214 + 209 + 215 + 214 + 215 + 209 + 215 + 215 + 208 + 215 + 215 + 214 + 209 + 214 + 215 + 214 + 79 + 37 + 7 + 43 + 0 + 37 + 6 + 43 + 80 + 43 + 43 + 86 + 43 + 43 + 86 + 43 + 43 + 79 + 80 + 43 + 43 + 42 + 37 + 43 + 43 + 79 + 86 + 122 + 129 + 86 + 86 + 123 + 128 + 87 + 129 + 86 + 80 + 86 + 50 + 122 + 86 + 93 + 122 + 87 + 129 + 92 + 165 + 130 + 129 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 165 + 129 + 129 + 136 + 164 + 130 + 129 + 172 + 135 + 130 + 165 + 129 + 136 + 165 + 172 + 136 + 171 + 166 + 136 + 165 + 136 + 165 + 129 + 130 + 171 + 136 + 172 + 165 + 130 + 129 + 135 + 129 + 130 + 129 + 171 + 129 + 129 + 129 + 122 + 93 + 122 + 129 + 93 + 128 + 129 + 129 + 93 + 123 + 128 + 87 + 129 + 86 + 129 + 122 + 129 + 129 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 79 + 86 + 86 + 86 + 50 + 86 + 43 + 43 + 43 + 44 + 43 + 85 + 86 + 93 + 86 + 93 + 129 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 179 + 215 + 179 + 214 + 179 + 215 + 178 + 179 + 179 + 208 + 179 + 179 + 209 + 178 + 179 + 209 + 178 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 179 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 208 + 215 + 79 + 43 + 43 + 0 + 1 + 42 + 43 + 43 + 43 + 80 + 43 + 86 + 43 + 43 + 79 + 43 + 79 + 50 + 79 + 44 + 43 + 43 + 42 + 79 + 43 + 80 + 85 + 87 + 86 + 122 + 128 + 87 + 123 + 128 + 129 + 87 + 86 + 86 + 86 + 87 + 122 + 93 + 87 + 123 + 86 + 129 + 129 + 129 + 136 + 165 + 172 + 172 + 171 + 172 + 172 + 135 + 172 + 166 + 135 + 129 + 166 + 135 + 166 + 171 + 136 + 166 + 171 + 135 + 166 + 135 + 172 + 172 + 165 + 136 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 123 + 135 + 129 + 129 + 130 + 171 + 87 + 128 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 129 + 129 + 123 + 92 + 129 + 123 + 128 + 123 + 93 + 122 + 86 + 129 + 86 + 122 + 86 + 86 + 80 + 49 + 122 + 86 + 50 + 86 + 44 + 43 + 79 + 50 + 43 + 44 + 43 + 86 + 93 + 86 + 129 + 135 + 130 + 178 + 172 + 173 + 179 + 214 + 179 + 215 + 179 + 209 + 179 + 215 + 179 + 178 + 209 + 179 + 179 + 208 + 179 + 178 + 209 + 179 + 214 + 173 + 215 + 214 + 215 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 215 + 208 + 214 + 215 + 215 + 215 + 208 + 215 + 79 + 43 + 43 + 43 + 0 + 1 + 42 + 43 + 44 + 43 + 50 + 79 + 86 + 36 + 43 + 79 + 44 + 85 + 44 + 85 + 79 + 44 + 79 + 85 + 43 + 43 + 80 + 86 + 86 + 122 + 129 + 87 + 128 + 123 + 129 + 87 + 92 + 86 + 123 + 93 + 129 + 165 + 130 + 86 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 172 + 173 + 171 + 172 + 136 + 166 + 171 + 136 + 172 + 171 + 166 + 172 + 129 + 172 + 129 + 129 + 129 + 166 + 136 + 165 + 135 + 130 + 129 + 129 + 165 + 129 + 129 + 130 + 135 + 123 + 92 + 129 + 86 + 129 + 87 + 128 + 129 + 87 + 128 + 129 + 129 + 129 + 123 + 129 + 93 + 129 + 122 + 86 + 122 + 86 + 129 + 86 + 86 + 86 + 116 + 85 + 86 + 86 + 86 + 50 + 80 + 86 + 43 + 50 + 43 + 43 + 43 + 44 + 85 + 87 + 129 + 129 + 136 + 136 + 208 + 172 + 179 + 179 + 214 + 215 + 179 + 215 + 215 + 179 + 215 + 172 + 215 + 179 + 214 + 173 + 215 + 172 + 215 + 214 + 173 + 215 + 208 + 179 + 215 + 215 + 215 + 209 + 214 + 215 + 215 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 214 + 215 + 79 + 43 + 43 + 43 + 1 + 43 + 36 + 7 + 43 + 80 + 49 + 79 + 44 + 49 + 79 + 44 + 79 + 86 + 79 + 50 + 79 + 79 + 43 + 50 + 79 + 43 + 80 + 85 + 123 + 92 + 123 + 122 + 129 + 86 + 129 + 129 + 123 + 93 + 122 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 171 + 166 + 136 + 171 + 172 + 136 + 166 + 172 + 172 + 178 + 166 + 172 + 171 + 130 + 129 + 172 + 171 + 172 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 172 + 171 + 136 + 166 + 135 + 165 + 135 + 130 + 129 + 165 + 136 + 129 + 129 + 122 + 136 + 129 + 129 + 129 + 123 + 129 + 128 + 87 + 129 + 86 + 87 + 128 + 86 + 86 + 129 + 92 + 166 + 129 + 93 + 122 + 92 + 123 + 92 + 123 + 86 + 122 + 86 + 122 + 86 + 86 + 86 + 123 + 86 + 86 + 85 + 50 + 80 + 86 + 43 + 50 + 37 + 43 + 7 + 42 + 44 + 49 + 93 + 129 + 129 + 130 + 171 + 142 + 209 + 179 + 214 + 179 + 209 + 215 + 215 + 179 + 215 + 179 + 215 + 178 + 209 + 179 + 214 + 208 + 179 + 214 + 209 + 179 + 214 + 215 + 208 + 215 + 215 + 215 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 215 + 214 + 215 + 208 + 215 + 214 + 209 + 86 + 79 + 86 + 43 + 0 + 7 + 36 + 43 + 43 + 43 + 43 + 44 + 79 + 43 + 43 + 85 + 44 + 79 + 86 + 79 + 50 + 79 + 44 + 43 + 79 + 49 + 80 + 122 + 92 + 123 + 129 + 128 + 123 + 86 + 123 + 92 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 129 + 172 + 130 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 172 + 136 + 166 + 214 + 173 + 214 + 172 + 172 + 172 + 135 + 173 + 172 + 172 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 129 + 172 + 129 + 129 + 92 + 165 + 129 + 93 + 129 + 123 + 129 + 129 + 86 + 93 + 122 + 93 + 122 + 86 + 92 + 123 + 93 + 122 + 129 + 93 + 129 + 122 + 87 + 128 + 123 + 128 + 87 + 86 + 86 + 85 + 122 + 86 + 87 + 86 + 86 + 80 + 85 + 50 + 80 + 85 + 43 + 7 + 37 + 7 + 43 + 43 + 50 + 122 + 93 + 129 + 136 + 171 + 173 + 172 + 179 + 215 + 215 + 173 + 215 + 214 + 179 + 215 + 215 + 172 + 215 + 215 + 215 + 208 + 179 + 208 + 215 + 179 + 208 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 178 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 79 + 86 + 43 + 79 + 43 + 1 + 43 + 0 + 43 + 43 + 7 + 43 + 79 + 43 + 43 + 79 + 44 + 85 + 80 + 85 + 44 + 79 + 86 + 79 + 43 + 80 + 85 + 87 + 128 + 129 + 123 + 129 + 122 + 93 + 122 + 86 + 129 + 123 + 130 + 129 + 129 + 130 + 135 + 166 + 135 + 166 + 172 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 166 + 136 + 172 + 172 + 171 + 166 + 172 + 135 + 172 + 171 + 173 + 208 + 179 + 172 + 208 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 166 + 135 + 129 + 166 + 135 + 129 + 130 + 128 + 129 + 129 + 130 + 129 + 123 + 128 + 93 + 128 + 86 + 87 + 128 + 87 + 122 + 93 + 86 + 122 + 93 + 123 + 128 + 93 + 123 + 92 + 123 + 129 + 122 + 93 + 86 + 116 + 85 + 87 + 122 + 86 + 86 + 86 + 79 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 42 + 44 + 49 + 86 + 130 + 129 + 135 + 172 + 136 + 208 + 179 + 214 + 209 + 215 + 215 + 179 + 215 + 215 + 172 + 215 + 215 + 209 + 178 + 215 + 208 + 214 + 209 + 179 + 208 + 215 + 214 + 209 + 214 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 79 + 43 + 43 + 80 + 49 + 37 + 43 + 6 + 37 + 7 + 43 + 43 + 43 + 79 + 43 + 43 + 86 + 79 + 80 + 85 + 86 + 86 + 80 + 86 + 85 + 80 + 86 + 86 + 128 + 87 + 165 + 86 + 123 + 128 + 87 + 129 + 124 + 128 + 93 + 166 + 129 + 129 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 129 + 172 + 166 + 172 + 178 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 171 + 172 + 136 + 165 + 166 + 135 + 129 + 129 + 165 + 135 + 129 + 123 + 93 + 129 + 129 + 129 + 122 + 93 + 129 + 122 + 93 + 123 + 92 + 123 + 86 + 86 + 123 + 91 + 87 + 92 + 123 + 92 + 129 + 86 + 129 + 123 + 128 + 86 + 86 + 86 + 116 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 44 + 86 + 43 + 43 + 43 + 7 + 37 + 6 + 44 + 86 + 92 + 128 + 130 + 135 + 172 + 172 + 173 + 178 + 209 + 215 + 178 + 209 + 215 + 214 + 215 + 179 + 209 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 208 + 215 + 208 + 172 + 215 + 209 + 178 + 209 + 214 + 209 + 215 + 214 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 79 + 43 + 43 + 44 + 79 + 43 + 7 + 43 + 43 + 1 + 43 + 43 + 79 + 49 + 79 + 80 + 49 + 86 + 80 + 86 + 85 + 86 + 116 + 86 + 86 + 86 + 122 + 86 + 87 + 128 + 123 + 128 + 86 + 123 + 86 + 92 + 123 + 129 + 87 + 129 + 165 + 130 + 136 + 165 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 172 + 166 + 136 + 165 + 136 + 171 + 172 + 172 + 172 + 171 + 130 + 172 + 171 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 136 + 122 + 123 + 135 + 123 + 92 + 129 + 123 + 93 + 122 + 93 + 122 + 93 + 122 + 93 + 86 + 86 + 86 + 86 + 122 + 93 + 128 + 87 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 86 + 85 + 80 + 50 + 86 + 86 + 44 + 79 + 43 + 43 + 7 + 43 + 0 + 50 + 86 + 86 + 129 + 130 + 135 + 172 + 172 + 173 + 172 + 214 + 215 + 173 + 214 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 178 + 209 + 214 + 209 + 215 + 208 + 179 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 79 + 43 + 43 + 44 + 79 + 50 + 43 + 36 + 43 + 43 + 43 + 44 + 85 + 44 + 85 + 80 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 86 + 122 + 122 + 93 + 122 + 86 + 122 + 86 + 44 + 86 + 87 + 122 + 93 + 129 + 129 + 130 + 171 + 130 + 166 + 171 + 136 + 166 + 135 + 166 + 129 + 136 + 165 + 172 + 136 + 172 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 172 + 178 + 173 + 208 + 172 + 178 + 166 + 136 + 172 + 172 + 165 + 172 + 136 + 165 + 135 + 130 + 129 + 129 + 129 + 130 + 128 + 92 + 123 + 92 + 129 + 128 + 87 + 93 + 85 + 129 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 93 + 86 + 86 + 128 + 87 + 86 + 129 + 122 + 86 + 87 + 128 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 1 + 43 + 7 + 43 + 86 + 86 + 129 + 135 + 172 + 130 + 178 + 172 + 172 + 215 + 208 + 179 + 215 + 209 + 214 + 215 + 209 + 215 + 215 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 178 + 209 + 214 + 209 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 214 + 214 + 209 + 86 + 79 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 43 + 43 + 79 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 129 + 129 + 122 + 129 + 86 + 80 + 85 + 86 + 86 + 87 + 123 + 129 + 129 + 136 + 165 + 130 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 172 + 129 + 172 + 172 + 171 + 130 + 165 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 178 + 172 + 172 + 172 + 172 + 172 + 171 + 130 + 172 + 172 + 129 + 136 + 129 + 129 + 129 + 129 + 130 + 92 + 87 + 129 + 92 + 123 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 93 + 86 + 86 + 50 + 86 + 86 + 86 + 86 + 50 + 87 + 86 + 87 + 128 + 86 + 87 + 122 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 129 + 136 + 165 + 172 + 172 + 172 + 178 + 209 + 215 + 172 + 215 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 179 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 123 + 92 + 86 + 80 + 50 + 79 + 43 + 43 + 43 + 43 + 44 + 49 + 80 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 128 + 87 + 122 + 86 + 86 + 80 + 122 + 86 + 86 + 122 + 129 + 86 + 86 + 86 + 80 + 86 + 43 + 129 + 86 + 130 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 136 + 129 + 165 + 129 + 136 + 166 + 135 + 172 + 172 + 166 + 135 + 130 + 165 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 171 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 129 + 136 + 123 + 93 + 129 + 86 + 94 + 122 + 93 + 87 + 92 + 123 + 50 + 86 + 86 + 44 + 50 + 86 + 86 + 50 + 86 + 80 + 50 + 87 + 86 + 86 + 50 + 86 + 86 + 50 + 86 + 87 + 128 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 50 + 80 + 50 + 43 + 79 + 44 + 43 + 43 + 44 + 43 + 43 + 43 + 86 + 128 + 129 + 130 + 172 + 171 + 173 + 172 + 172 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 208 + 214 + 123 + 128 + 86 + 86 + 50 + 80 + 43 + 43 + 43 + 43 + 85 + 44 + 86 + 43 + 122 + 86 + 86 + 129 + 86 + 123 + 128 + 86 + 123 + 86 + 122 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 123 + 85 + 44 + 86 + 86 + 87 + 128 + 129 + 124 + 135 + 166 + 130 + 171 + 130 + 171 + 129 + 172 + 129 + 130 + 171 + 172 + 136 + 165 + 136 + 165 + 172 + 136 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 172 + 172 + 172 + 129 + 135 + 130 + 165 + 129 + 129 + 93 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 87 + 43 + 86 + 44 + 43 + 50 + 43 + 44 + 86 + 43 + 86 + 44 + 49 + 86 + 44 + 50 + 86 + 43 + 87 + 86 + 50 + 86 + 122 + 87 + 86 + 86 + 86 + 122 + 86 + 50 + 86 + 43 + 79 + 86 + 44 + 85 + 80 + 50 + 44 + 79 + 43 + 43 + 44 + 43 + 43 + 86 + 93 + 165 + 129 + 136 + 165 + 172 + 179 + 208 + 172 + 214 + 209 + 173 + 214 + 209 + 214 + 173 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 214 + 214 + 208 + 208 + 214 + 87 + 129 + 79 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 44 + 86 + 85 + 86 + 87 + 122 + 129 + 122 + 93 + 122 + 129 + 86 + 122 + 87 + 122 + 85 + 86 + 123 + 86 + 122 + 87 + 128 + 86 + 44 + 86 + 86 + 128 + 123 + 93 + 130 + 165 + 136 + 165 + 130 + 135 + 129 + 165 + 130 + 172 + 135 + 166 + 172 + 172 + 171 + 130 + 172 + 171 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 172 + 166 + 136 + 165 + 172 + 135 + 166 + 129 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 51 + 86 + 86 + 86 + 44 + 50 + 79 + 43 + 44 + 43 + 7 + 43 + 44 + 49 + 44 + 43 + 43 + 50 + 43 + 44 + 43 + 49 + 44 + 43 + 86 + 50 + 80 + 86 + 92 + 86 + 87 + 128 + 86 + 86 + 50 + 80 + 86 + 44 + 85 + 80 + 50 + 86 + 80 + 49 + 44 + 79 + 44 + 43 + 43 + 43 + 86 + 92 + 166 + 129 + 129 + 136 + 171 + 173 + 214 + 173 + 208 + 214 + 173 + 208 + 214 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 208 + 214 + 208 + 87 + 85 + 80 + 49 + 44 + 79 + 50 + 43 + 79 + 44 + 49 + 80 + 50 + 85 + 116 + 87 + 128 + 87 + 128 + 123 + 128 + 87 + 122 + 92 + 122 + 87 + 86 + 122 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 80 + 93 + 87 + 129 + 130 + 165 + 130 + 171 + 129 + 130 + 129 + 129 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 171 + 136 + 172 + 129 + 129 + 130 + 128 + 123 + 86 + 93 + 86 + 86 + 86 + 44 + 51 + 85 + 44 + 86 + 43 + 50 + 44 + 44 + 43 + 43 + 7 + 7 + 37 + 7 + 43 + 43 + 7 + 36 + 8 + 42 + 2 + 42 + 7 + 43 + 8 + 43 + 80 + 49 + 86 + 86 + 87 + 85 + 129 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 85 + 80 + 50 + 86 + 79 + 44 + 50 + 43 + 79 + 43 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 130 + 214 + 172 + 209 + 178 + 208 + 173 + 214 + 208 + 179 + 209 + 208 + 214 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 172 + 215 + 208 + 214 + 209 + 214 + 208 + 208 + 173 + 85 + 44 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 128 + 123 + 129 + 86 + 86 + 86 + 79 + 50 + 86 + 123 + 129 + 129 + 136 + 165 + 129 + 130 + 129 + 129 + 129 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 178 + 166 + 172 + 171 + 172 + 172 + 129 + 172 + 172 + 129 + 165 + 93 + 123 + 92 + 86 + 80 + 50 + 86 + 86 + 44 + 50 + 80 + 49 + 50 + 44 + 43 + 44 + 49 + 80 + 43 + 8 + 42 + 43 + 7 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 43 + 44 + 85 + 44 + 122 + 86 + 93 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 86 + 50 + 44 + 80 + 85 + 86 + 44 + 79 + 44 + 49 + 80 + 86 + 86 + 129 + 92 + 130 + 129 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 173 + 214 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 215 + 209 + 214 + 173 + 214 + 209 + 215 + 208 + 215 + 172 + 215 + 208 + 179 + 209 + 214 + 208 + 178 + 209 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 85 + 80 + 86 + 122 + 129 + 86 + 86 + 129 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 122 + 93 + 129 + 122 + 122 + 86 + 50 + 80 + 86 + 123 + 92 + 130 + 129 + 166 + 129 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 172 + 166 + 135 + 172 + 172 + 165 + 172 + 172 + 173 + 172 + 172 + 172 + 135 + 172 + 130 + 171 + 130 + 129 + 122 + 93 + 86 + 122 + 50 + 80 + 85 + 50 + 80 + 50 + 50 + 79 + 50 + 80 + 49 + 44 + 43 + 50 + 44 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 8 + 43 + 1 + 43 + 7 + 36 + 7 + 1 + 43 + 6 + 38 + 42 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 44 + 86 + 43 + 86 + 44 + 86 + 44 + 85 + 44 + 86 + 43 + 86 + 86 + 86 + 86 + 129 + 129 + 136 + 171 + 172 + 209 + 172 + 209 + 178 + 208 + 209 + 214 + 173 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 215 + 173 + 208 + 209 + 179 + 214 + 209 + 215 + 172 + 215 + 172 + 209 + 215 + 172 + 209 + 178 + 209 + 43 + 42 + 37 + 43 + 7 + 37 + 49 + 43 + 43 + 43 + 43 + 79 + 86 + 43 + 86 + 122 + 86 + 123 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 123 + 128 + 129 + 123 + 128 + 87 + 80 + 49 + 87 + 86 + 122 + 130 + 129 + 129 + 129 + 123 + 129 + 135 + 130 + 129 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 172 + 172 + 178 + 166 + 172 + 136 + 171 + 172 + 166 + 129 + 129 + 86 + 93 + 86 + 79 + 87 + 85 + 50 + 80 + 50 + 85 + 45 + 86 + 86 + 50 + 80 + 49 + 44 + 43 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 80 + 7 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 43 + 7 + 7 + 43 + 79 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 80 + 85 + 44 + 50 + 80 + 86 + 86 + 43 + 80 + 49 + 86 + 86 + 86 + 123 + 129 + 136 + 172 + 172 + 208 + 172 + 215 + 208 + 208 + 179 + 209 + 214 + 209 + 214 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 178 + 215 + 173 + 214 + 215 + 209 + 179 + 208 + 179 + 208 + 179 + 208 + 173 + 215 + 172 + 173 + 42 + 37 + 43 + 43 + 7 + 37 + 49 + 79 + 43 + 43 + 44 + 49 + 80 + 49 + 80 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 123 + 86 + 85 + 86 + 86 + 86 + 116 + 93 + 128 + 129 + 123 + 122 + 86 + 86 + 50 + 80 + 86 + 129 + 130 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 171 + 129 + 130 + 128 + 130 + 171 + 136 + 166 + 178 + 172 + 166 + 136 + 171 + 130 + 129 + 128 + 87 + 86 + 86 + 50 + 80 + 85 + 86 + 86 + 44 + 86 + 86 + 50 + 86 + 86 + 50 + 80 + 50 + 43 + 44 + 50 + 43 + 44 + 50 + 43 + 44 + 43 + 43 + 50 + 37 + 43 + 43 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 43 + 1 + 42 + 1 + 43 + 43 + 50 + 80 + 49 + 86 + 87 + 86 + 86 + 86 + 49 + 80 + 44 + 86 + 43 + 86 + 80 + 50 + 86 + 43 + 44 + 122 + 91 + 87 + 129 + 129 + 172 + 172 + 208 + 179 + 208 + 215 + 173 + 214 + 209 + 214 + 173 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 208 + 214 + 208 + 215 + 208 + 215 + 215 + 173 + 214 + 215 + 172 + 215 + 179 + 208 + 215 + 173 + 178 + 209 + 173 + 214 + 173 + 209 + 178 + 37 + 7 + 79 + 43 + 43 + 43 + 86 + 43 + 80 + 43 + 49 + 43 + 43 + 86 + 80 + 85 + 86 + 123 + 128 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 79 + 86 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 86 + 86 + 123 + 130 + 129 + 129 + 130 + 129 + 129 + 129 + 135 + 166 + 135 + 166 + 129 + 129 + 129 + 130 + 135 + 166 + 171 + 172 + 172 + 135 + 166 + 171 + 130 + 122 + 93 + 122 + 87 + 50 + 85 + 80 + 49 + 86 + 123 + 85 + 86 + 50 + 87 + 86 + 86 + 86 + 50 + 86 + 50 + 44 + 43 + 80 + 50 + 43 + 50 + 44 + 43 + 50 + 43 + 43 + 44 + 43 + 43 + 44 + 6 + 38 + 6 + 44 + 6 + 37 + 7 + 1 + 6 + 37 + 43 + 1 + 49 + 43 + 79 + 80 + 50 + 86 + 86 + 86 + 86 + 79 + 50 + 80 + 50 + 79 + 86 + 44 + 86 + 43 + 86 + 86 + 86 + 129 + 129 + 130 + 171 + 215 + 172 + 215 + 173 + 214 + 209 + 214 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 173 + 214 + 215 + 179 + 208 + 215 + 179 + 172 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 214 + 173 + 43 + 43 + 79 + 44 + 85 + 44 + 86 + 85 + 44 + 79 + 43 + 43 + 44 + 85 + 79 + 86 + 86 + 122 + 87 + 86 + 128 + 86 + 122 + 80 + 49 + 80 + 79 + 86 + 86 + 86 + 122 + 129 + 86 + 86 + 80 + 86 + 44 + 86 + 122 + 86 + 93 + 123 + 129 + 129 + 171 + 130 + 129 + 172 + 129 + 172 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 172 + 171 + 166 + 172 + 136 + 129 + 129 + 86 + 86 + 128 + 86 + 50 + 80 + 49 + 80 + 86 + 93 + 122 + 93 + 86 + 87 + 86 + 86 + 86 + 86 + 51 + 79 + 50 + 44 + 49 + 44 + 79 + 50 + 44 + 50 + 43 + 44 + 43 + 50 + 43 + 44 + 42 + 2 + 43 + 7 + 43 + 1 + 42 + 1 + 6 + 1 + 43 + 0 + 43 + 7 + 37 + 49 + 44 + 86 + 86 + 86 + 50 + 80 + 86 + 44 + 49 + 80 + 87 + 79 + 44 + 85 + 50 + 80 + 86 + 93 + 122 + 129 + 172 + 136 + 208 + 172 + 215 + 208 + 215 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 209 + 214 + 208 + 179 + 215 + 215 + 215 + 214 + 173 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 215 + 172 + 209 + 178 + 44 + 122 + 128 + 87 + 86 + 122 + 86 + 86 + 43 + 43 + 43 + 37 + 79 + 43 + 49 + 80 + 86 + 85 + 123 + 86 + 122 + 85 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 92 + 80 + 86 + 86 + 87 + 86 + 129 + 129 + 87 + 122 + 93 + 122 + 129 + 130 + 135 + 165 + 136 + 165 + 130 + 165 + 136 + 172 + 166 + 172 + 135 + 130 + 165 + 93 + 129 + 128 + 87 + 79 + 50 + 79 + 86 + 50 + 80 + 85 + 50 + 86 + 123 + 86 + 93 + 122 + 86 + 87 + 50 + 86 + 87 + 49 + 44 + 86 + 44 + 85 + 8 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 44 + 42 + 8 + 37 + 43 + 43 + 7 + 7 + 1 + 42 + 1 + 0 + 0 + 43 + 0 + 43 + 43 + 43 + 44 + 50 + 79 + 86 + 86 + 44 + 79 + 49 + 44 + 80 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 172 + 178 + 209 + 214 + 209 + 214 + 209 + 215 + 215 + 208 + 214 + 209 + 178 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 215 + 209 + 215 + 215 + 209 + 214 + 179 + 209 + 214 + 172 + 179 + 209 + 172 + 178 + 172 + 172 + 173 + 128 + 86 + 123 + 129 + 128 + 87 + 86 + 85 + 80 + 43 + 79 + 7 + 79 + 43 + 80 + 85 + 86 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 122 + 87 + 86 + 122 + 86 + 50 + 80 + 86 + 129 + 123 + 93 + 128 + 124 + 129 + 129 + 129 + 129 + 172 + 129 + 130 + 171 + 129 + 130 + 172 + 172 + 171 + 172 + 166 + 135 + 165 + 87 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 80 + 86 + 86 + 86 + 86 + 92 + 87 + 128 + 87 + 86 + 86 + 87 + 50 + 86 + 44 + 86 + 49 + 44 + 44 + 85 + 44 + 43 + 50 + 44 + 43 + 50 + 43 + 37 + 49 + 44 + 1 + 43 + 43 + 44 + 7 + 43 + 8 + 42 + 7 + 37 + 1 + 6 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 49 + 80 + 50 + 80 + 86 + 44 + 43 + 86 + 44 + 79 + 50 + 43 + 86 + 86 + 129 + 128 + 130 + 207 + 173 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 209 + 179 + 208 + 173 + 214 + 209 + 214 + 209 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 173 + 215 + 215 + 208 + 215 + 209 + 178 + 173 + 214 + 172 + 173 + 172 + 214 + 172 + 173 + 92 + 165 + 123 + 129 + 129 + 86 + 86 + 86 + 79 + 79 + 43 + 43 + 37 + 43 + 49 + 86 + 80 + 86 + 122 + 85 + 86 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 128 + 86 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 135 + 166 + 129 + 172 + 130 + 171 + 166 + 178 + 166 + 172 + 129 + 136 + 86 + 79 + 50 + 80 + 86 + 50 + 86 + 86 + 86 + 86 + 86 + 92 + 86 + 122 + 93 + 122 + 86 + 50 + 93 + 86 + 86 + 86 + 45 + 86 + 50 + 79 + 50 + 80 + 14 + 79 + 50 + 43 + 44 + 49 + 43 + 44 + 43 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 1 + 0 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 42 + 2 + 43 + 85 + 44 + 50 + 80 + 79 + 50 + 80 + 49 + 80 + 44 + 43 + 86 + 86 + 123 + 129 + 172 + 172 + 208 + 172 + 215 + 208 + 215 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 215 + 209 + 215 + 208 + 214 + 173 + 214 + 179 + 172 + 208 + 173 + 172 + 178 + 159 + 129 + 129 + 122 + 93 + 122 + 80 + 49 + 79 + 43 + 43 + 37 + 43 + 43 + 85 + 80 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 116 + 85 + 86 + 80 + 49 + 86 + 80 + 122 + 86 + 86 + 86 + 87 + 86 + 86 + 129 + 130 + 129 + 129 + 124 + 129 + 129 + 172 + 129 + 130 + 166 + 171 + 137 + 166 + 172 + 172 + 173 + 171 + 130 + 129 + 129 + 86 + 43 + 79 + 50 + 86 + 86 + 122 + 93 + 122 + 87 + 128 + 87 + 86 + 129 + 86 + 85 + 87 + 86 + 86 + 87 + 92 + 50 + 86 + 44 + 86 + 50 + 80 + 50 + 79 + 50 + 43 + 86 + 44 + 43 + 44 + 43 + 49 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 44 + 1 + 6 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 36 + 7 + 1 + 43 + 43 + 43 + 86 + 44 + 86 + 43 + 80 + 50 + 43 + 43 + 43 + 87 + 85 + 129 + 129 + 172 + 172 + 172 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 208 + 173 + 214 + 173 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 173 + 214 + 209 + 214 + 209 + 214 + 208 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 178 + 208 + 123 + 128 + 123 + 92 + 86 + 80 + 79 + 6 + 37 + 43 + 43 + 36 + 43 + 43 + 80 + 85 + 86 + 80 + 86 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 79 + 86 + 80 + 85 + 44 + 85 + 80 + 86 + 128 + 44 + 87 + 86 + 86 + 123 + 128 + 130 + 129 + 129 + 93 + 165 + 130 + 129 + 172 + 129 + 166 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 129 + 86 + 86 + 50 + 85 + 44 + 86 + 86 + 129 + 92 + 123 + 129 + 129 + 129 + 92 + 123 + 86 + 87 + 86 + 50 + 87 + 92 + 86 + 87 + 86 + 50 + 86 + 44 + 85 + 44 + 86 + 50 + 44 + 85 + 44 + 50 + 43 + 43 + 43 + 44 + 49 + 43 + 44 + 43 + 7 + 43 + 43 + 43 + 1 + 7 + 1 + 42 + 1 + 7 + 43 + 1 + 6 + 1 + 37 + 7 + 43 + 44 + 79 + 50 + 43 + 86 + 43 + 44 + 43 + 79 + 44 + 86 + 92 + 123 + 129 + 172 + 172 + 208 + 215 + 208 + 209 + 214 + 215 + 209 + 214 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 208 + 86 + 122 + 86 + 85 + 44 + 79 + 43 + 43 + 0 + 43 + 37 + 42 + 43 + 79 + 44 + 85 + 80 + 86 + 86 + 79 + 87 + 86 + 122 + 92 + 122 + 86 + 80 + 86 + 85 + 80 + 49 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 87 + 87 + 129 + 165 + 130 + 129 + 129 + 129 + 136 + 166 + 129 + 172 + 172 + 172 + 166 + 136 + 166 + 171 + 93 + 123 + 50 + 122 + 43 + 86 + 86 + 50 + 86 + 123 + 129 + 135 + 166 + 135 + 129 + 123 + 93 + 85 + 123 + 50 + 122 + 92 + 87 + 86 + 87 + 50 + 86 + 86 + 86 + 50 + 80 + 50 + 50 + 80 + 50 + 43 + 50 + 44 + 43 + 44 + 43 + 49 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 7 + 36 + 7 + 1 + 6 + 37 + 43 + 44 + 43 + 86 + 43 + 44 + 43 + 79 + 43 + 50 + 86 + 123 + 128 + 130 + 135 + 202 + 178 + 209 + 214 + 208 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 209 + 173 + 214 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 179 + 208 + 173 + 208 + 172 + 214 + 44 + 86 + 79 + 43 + 43 + 79 + 36 + 43 + 1 + 42 + 43 + 79 + 43 + 80 + 43 + 85 + 80 + 86 + 43 + 86 + 86 + 122 + 80 + 128 + 86 + 123 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 86 + 80 + 86 + 86 + 86 + 122 + 87 + 129 + 129 + 130 + 129 + 93 + 165 + 130 + 129 + 129 + 130 + 165 + 136 + 173 + 165 + 172 + 136 + 129 + 123 + 86 + 85 + 44 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 136 + 166 + 135 + 129 + 129 + 87 + 128 + 87 + 86 + 93 + 86 + 86 + 87 + 92 + 81 + 86 + 50 + 86 + 86 + 50 + 87 + 43 + 86 + 44 + 50 + 86 + 43 + 44 + 49 + 80 + 50 + 43 + 44 + 43 + 43 + 49 + 8 + 37 + 43 + 6 + 43 + 43 + 1 + 7 + 43 + 0 + 43 + 1 + 7 + 36 + 1 + 43 + 7 + 79 + 44 + 86 + 43 + 44 + 44 + 79 + 50 + 86 + 86 + 129 + 129 + 165 + 136 + 202 + 172 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 173 + 214 + 208 + 179 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 172 + 208 + 208 + 215 + 172 + 79 + 50 + 43 + 79 + 43 + 43 + 79 + 43 + 43 + 80 + 43 + 85 + 80 + 49 + 79 + 44 + 85 + 80 + 86 + 79 + 86 + 123 + 86 + 128 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 79 + 86 + 43 + 87 + 86 + 86 + 80 + 92 + 123 + 129 + 130 + 171 + 130 + 129 + 129 + 129 + 166 + 130 + 171 + 130 + 172 + 129 + 172 + 129 + 130 + 165 + 92 + 86 + 80 + 50 + 80 + 86 + 85 + 87 + 92 + 123 + 129 + 135 + 130 + 165 + 93 + 122 + 129 + 87 + 128 + 86 + 93 + 87 + 86 + 93 + 86 + 86 + 86 + 86 + 44 + 92 + 44 + 87 + 85 + 50 + 44 + 86 + 44 + 85 + 44 + 86 + 44 + 49 + 44 + 43 + 8 + 43 + 42 + 8 + 43 + 37 + 43 + 7 + 43 + 7 + 37 + 7 + 6 + 1 + 43 + 1 + 43 + 0 + 43 + 7 + 43 + 79 + 44 + 43 + 43 + 43 + 80 + 50 + 86 + 86 + 86 + 86 + 172 + 165 + 172 + 173 + 214 + 209 + 214 + 209 + 208 + 179 + 208 + 209 + 214 + 209 + 179 + 208 + 214 + 209 + 208 + 215 + 172 + 215 + 209 + 208 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 173 + 214 + 208 + 86 + 86 + 80 + 43 + 85 + 80 + 85 + 80 + 86 + 43 + 86 + 86 + 79 + 86 + 43 + 79 + 44 + 85 + 86 + 86 + 122 + 86 + 87 + 122 + 86 + 86 + 122 + 86 + 129 + 86 + 86 + 80 + 85 + 44 + 85 + 87 + 80 + 86 + 86 + 129 + 130 + 129 + 171 + 130 + 165 + 130 + 130 + 171 + 136 + 166 + 135 + 167 + 172 + 136 + 165 + 129 + 129 + 85 + 87 + 49 + 122 + 86 + 86 + 86 + 87 + 85 + 87 + 128 + 130 + 135 + 129 + 123 + 129 + 92 + 123 + 86 + 129 + 87 + 86 + 93 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 50 + 86 + 87 + 50 + 86 + 87 + 86 + 43 + 50 + 44 + 86 + 43 + 44 + 43 + 7 + 43 + 8 + 42 + 38 + 13 + 43 + 38 + 7 + 43 + 6 + 37 + 7 + 37 + 6 + 7 + 37 + 7 + 36 + 43 + 1 + 43 + 80 + 49 + 38 + 49 + 43 + 44 + 86 + 86 + 86 + 129 + 165 + 172 + 209 + 178 + 208 + 215 + 208 + 215 + 209 + 214 + 172 + 209 + 215 + 172 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 214 + 209 + 172 + 208 + 129 + 122 + 86 + 123 + 92 + 86 + 122 + 80 + 86 + 85 + 80 + 49 + 80 + 79 + 43 + 85 + 44 + 79 + 86 + 86 + 122 + 86 + 123 + 92 + 122 + 86 + 87 + 122 + 86 + 122 + 86 + 43 + 86 + 79 + 86 + 80 + 50 + 80 + 92 + 124 + 135 + 130 + 165 + 130 + 172 + 129 + 166 + 136 + 166 + 172 + 172 + 165 + 172 + 137 + 165 + 129 + 87 + 86 + 50 + 86 + 85 + 123 + 92 + 92 + 123 + 122 + 93 + 86 + 129 + 123 + 135 + 86 + 129 + 86 + 129 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 86 + 129 + 87 + 86 + 93 + 87 + 128 + 87 + 92 + 87 + 86 + 86 + 51 + 79 + 50 + 80 + 49 + 43 + 8 + 43 + 37 + 7 + 43 + 7 + 43 + 43 + 43 + 37 + 7 + 43 + 1 + 43 + 7 + 43 + 1 + 42 + 1 + 7 + 36 + 43 + 37 + 8 + 79 + 43 + 43 + 43 + 44 + 87 + 91 + 129 + 129 + 166 + 214 + 208 + 173 + 214 + 208 + 209 + 214 + 209 + 209 + 178 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 173 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 209 + 208 + 215 + 208 + 209 + 214 + 208 + 208 + 209 + 172 + 208 + 129 + 129 + 128 + 123 + 123 + 92 + 122 + 86 + 86 + 79 + 80 + 49 + 79 + 44 + 43 + 79 + 43 + 86 + 86 + 122 + 86 + 86 + 123 + 128 + 86 + 86 + 122 + 86 + 87 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 44 + 85 + 87 + 129 + 129 + 130 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 130 + 172 + 172 + 166 + 135 + 130 + 122 + 86 + 86 + 50 + 86 + 122 + 93 + 123 + 128 + 130 + 129 + 128 + 86 + 93 + 122 + 87 + 128 + 87 + 129 + 86 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 87 + 129 + 129 + 86 + 94 + 129 + 129 + 93 + 123 + 93 + 122 + 93 + 80 + 50 + 50 + 80 + 43 + 44 + 7 + 43 + 7 + 43 + 43 + 7 + 37 + 44 + 7 + 43 + 7 + 36 + 8 + 42 + 1 + 43 + 43 + 7 + 1 + 37 + 6 + 37 + 7 + 43 + 43 + 37 + 43 + 43 + 44 + 86 + 92 + 123 + 171 + 136 + 208 + 173 + 214 + 209 + 209 + 214 + 208 + 215 + 208 + 215 + 172 + 215 + 208 + 215 + 172 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 208 + 214 + 123 + 129 + 129 + 86 + 122 + 86 + 80 + 49 + 43 + 80 + 49 + 79 + 80 + 43 + 43 + 43 + 79 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 86 + 86 + 50 + 86 + 123 + 129 + 129 + 129 + 130 + 172 + 166 + 136 + 172 + 166 + 172 + 171 + 167 + 136 + 165 + 136 + 122 + 86 + 44 + 86 + 86 + 86 + 93 + 122 + 130 + 135 + 129 + 123 + 93 + 86 + 87 + 86 + 86 + 92 + 87 + 93 + 122 + 93 + 122 + 130 + 129 + 136 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 129 + 130 + 122 + 93 + 86 + 129 + 86 + 87 + 86 + 44 + 49 + 80 + 43 + 44 + 7 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 7 + 37 + 7 + 42 + 1 + 44 + 43 + 0 + 0 + 7 + 36 + 1 + 43 + 43 + 7 + 37 + 43 + 87 + 86 + 86 + 93 + 129 + 172 + 208 + 172 + 215 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 209 + 208 + 215 + 208 + 208 + 209 + 208 + 172 + 208 + 178 + 208 + 166 + 208 + 93 + 122 + 129 + 86 + 80 + 79 + 43 + 79 + 43 + 79 + 49 + 44 + 79 + 43 + 43 + 43 + 79 + 44 + 85 + 122 + 86 + 123 + 86 + 129 + 122 + 92 + 122 + 80 + 86 + 86 + 79 + 50 + 79 + 86 + 80 + 50 + 80 + 86 + 86 + 128 + 130 + 129 + 130 + 123 + 135 + 166 + 129 + 172 + 131 + 172 + 172 + 172 + 172 + 130 + 123 + 92 + 86 + 86 + 80 + 86 + 92 + 123 + 86 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 86 + 51 + 86 + 129 + 86 + 129 + 129 + 130 + 129 + 172 + 130 + 165 + 129 + 129 + 130 + 92 + 123 + 93 + 122 + 92 + 124 + 93 + 87 + 129 + 122 + 87 + 50 + 85 + 44 + 43 + 44 + 43 + 7 + 44 + 7 + 37 + 42 + 8 + 42 + 1 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 0 + 1 + 42 + 1 + 37 + 43 + 7 + 43 + 43 + 80 + 50 + 86 + 128 + 130 + 171 + 172 + 173 + 214 + 209 + 215 + 208 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 209 + 172 + 178 + 208 + 172 + 172 + 207 + 166 + 172 + 129 + 129 + 123 + 86 + 49 + 79 + 43 + 43 + 79 + 43 + 44 + 79 + 43 + 79 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 86 + 123 + 122 + 86 + 86 + 122 + 86 + 86 + 79 + 50 + 79 + 86 + 79 + 50 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 166 + 136 + 165 + 172 + 172 + 136 + 123 + 128 + 87 + 86 + 86 + 80 + 86 + 87 + 122 + 93 + 123 + 129 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 86 + 86 + 87 + 92 + 130 + 129 + 166 + 172 + 136 + 166 + 172 + 123 + 92 + 123 + 86 + 44 + 86 + 44 + 85 + 86 + 86 + 123 + 86 + 87 + 128 + 87 + 86 + 44 + 43 + 49 + 44 + 43 + 7 + 43 + 38 + 7 + 42 + 7 + 37 + 7 + 43 + 7 + 37 + 7 + 43 + 43 + 1 + 36 + 6 + 1 + 37 + 7 + 36 + 43 + 37 + 49 + 80 + 50 + 86 + 92 + 130 + 135 + 209 + 172 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 208 + 208 + 173 + 178 + 208 + 208 + 172 + 208 + 171 + 172 + 165 + 172 + 171 + 172 + 171 + 165 + 172 + 129 + 122 + 86 + 86 + 80 + 85 + 44 + 79 + 49 + 79 + 44 + 79 + 43 + 79 + 44 + 85 + 86 + 86 + 86 + 122 + 86 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 79 + 44 + 86 + 86 + 80 + 49 + 123 + 93 + 165 + 93 + 129 + 123 + 129 + 129 + 130 + 171 + 130 + 172 + 166 + 136 + 87 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 122 + 87 + 86 + 129 + 87 + 92 + 86 + 86 + 44 + 86 + 86 + 87 + 50 + 86 + 129 + 130 + 171 + 172 + 173 + 172 + 129 + 129 + 80 + 49 + 37 + 7 + 37 + 0 + 43 + 1 + 43 + 37 + 7 + 79 + 50 + 123 + 92 + 87 + 43 + 86 + 43 + 8 + 43 + 43 + 43 + 44 + 44 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 43 + 1 + 7 + 36 + 7 + 0 + 37 + 0 + 7 + 43 + 43 + 80 + 50 + 86 + 93 + 129 + 166 + 171 + 173 + 214 + 209 + 172 + 214 + 208 + 215 + 208 + 208 + 178 + 208 + 214 + 208 + 208 + 215 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 214 + 208 + 214 + 172 + 214 + 209 + 207 + 172 + 172 + 207 + 166 + 171 + 208 + 172 + 171 + 129 + 171 + 171 + 165 + 171 + 171 + 171 + 165 + 172 + 129 + 128 + 123 + 129 + 86 + 122 + 86 + 80 + 85 + 79 + 44 + 79 + 49 + 44 + 79 + 86 + 79 + 86 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 86 + 86 + 123 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 50 + 86 + 80 + 129 + 129 + 87 + 129 + 165 + 129 + 130 + 129 + 136 + 166 + 135 + 166 + 129 + 86 + 87 + 86 + 86 + 80 + 86 + 92 + 80 + 86 + 87 + 92 + 123 + 86 + 86 + 51 + 86 + 86 + 86 + 87 + 50 + 86 + 86 + 129 + 172 + 166 + 173 + 135 + 129 + 86 + 44 + 43 + 38 + 6 + 37 + 0 + 0 + 1 + 42 + 1 + 0 + 0 + 37 + 7 + 85 + 45 + 86 + 86 + 86 + 50 + 43 + 43 + 44 + 50 + 43 + 44 + 42 + 7 + 44 + 37 + 7 + 43 + 7 + 37 + 43 + 7 + 7 + 37 + 0 + 37 + 6 + 0 + 1 + 37 + 43 + 50 + 43 + 44 + 86 + 92 + 129 + 165 + 136 + 172 + 214 + 173 + 208 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 208 + 172 + 208 + 172 + 208 + 171 + 171 + 208 + 171 + 172 + 171 + 207 + 135 + 165 + 171 + 171 + 171 + 165 + 171 + 171 + 165 + 134 + 172 + 128 + 172 + 134 + 166 + 171 + 166 + 135 + 165 + 130 + 128 + 123 + 93 + 122 + 86 + 79 + 44 + 79 + 49 + 43 + 79 + 44 + 85 + 80 + 86 + 122 + 86 + 86 + 129 + 86 + 122 + 86 + 122 + 93 + 123 + 128 + 86 + 80 + 86 + 43 + 50 + 80 + 86 + 80 + 50 + 122 + 129 + 130 + 129 + 130 + 129 + 135 + 130 + 165 + 130 + 165 + 129 + 93 + 123 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 123 + 92 + 86 + 86 + 81 + 86 + 50 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 136 + 165 + 173 + 172 + 93 + 80 + 0 + 43 + 0 + 1 + 43 + 37 + 7 + 36 + 7 + 36 + 1 + 0 + 1 + 36 + 6 + 1 + 43 + 44 + 86 + 86 + 87 + 49 + 44 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 42 + 1 + 0 + 44 + 43 + 43 + 49 + 86 + 129 + 129 + 130 + 171 + 173 + 172 + 208 + 172 + 214 + 173 + 208 + 178 + 209 + 172 + 208 + 178 + 209 + 172 + 214 + 172 + 202 + 171 + 172 + 207 + 172 + 171 + 171 + 171 + 171 + 172 + 164 + 171 + 165 + 165 + 134 + 171 + 165 + 171 + 165 + 171 + 128 + 171 + 128 + 171 + 170 + 129 + 171 + 135 + 165 + 129 + 166 + 135 + 159 + 129 + 129 + 129 + 122 + 86 + 86 + 43 + 79 + 43 + 86 + 43 + 80 + 85 + 86 + 86 + 123 + 86 + 122 + 92 + 122 + 87 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 79 + 44 + 43 + 86 + 44 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 87 + 86 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 87 + 123 + 86 + 86 + 50 + 80 + 50 + 43 + 87 + 86 + 93 + 87 + 128 + 93 + 166 + 172 + 172 + 130 + 43 + 1 + 42 + 1 + 6 + 37 + 80 + 7 + 43 + 37 + 7 + 37 + 43 + 43 + 0 + 1 + 42 + 1 + 0 + 43 + 43 + 44 + 86 + 87 + 50 + 49 + 80 + 44 + 49 + 44 + 43 + 43 + 7 + 43 + 37 + 44 + 7 + 43 + 50 + 37 + 43 + 7 + 37 + 43 + 7 + 37 + 43 + 44 + 43 + 44 + 85 + 87 + 129 + 93 + 172 + 130 + 171 + 172 + 208 + 172 + 172 + 171 + 171 + 172 + 201 + 172 + 171 + 171 + 171 + 166 + 135 + 208 + 172 + 165 + 166 + 170 + 129 + 170 + 165 + 129 + 170 + 165 + 128 + 171 + 129 + 164 + 165 + 134 + 165 + 128 + 165 + 134 + 165 + 134 + 165 + 129 + 134 + 165 + 134 + 171 + 122 + 129 + 129 + 129 + 123 + 129 + 165 + 86 + 122 + 86 + 50 + 43 + 79 + 80 + 85 + 43 + 80 + 86 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 129 + 86 + 122 + 123 + 128 + 86 + 86 + 86 + 80 + 43 + 86 + 44 + 86 + 86 + 129 + 122 + 93 + 166 + 93 + 129 + 123 + 129 + 129 + 129 + 130 + 129 + 129 + 86 + 87 + 80 + 86 + 92 + 87 + 122 + 129 + 87 + 129 + 86 + 87 + 122 + 50 + 86 + 44 + 86 + 50 + 86 + 129 + 87 + 129 + 136 + 129 + 166 + 129 + 43 + 0 + 1 + 43 + 37 + 43 + 50 + 86 + 80 + 85 + 44 + 87 + 122 + 92 + 81 + 49 + 38 + 43 + 0 + 0 + 1 + 42 + 44 + 43 + 87 + 85 + 51 + 80 + 50 + 79 + 50 + 43 + 44 + 7 + 44 + 7 + 43 + 43 + 50 + 80 + 7 + 37 + 7 + 36 + 43 + 1 + 42 + 44 + 43 + 37 + 7 + 85 + 86 + 93 + 129 + 129 + 130 + 171 + 166 + 172 + 171 + 166 + 136 + 172 + 165 + 136 + 172 + 172 + 171 + 165 + 136 + 165 + 171 + 165 + 171 + 165 + 166 + 134 + 165 + 128 + 165 + 170 + 129 + 164 + 135 + 171 + 128 + 171 + 164 + 129 + 170 + 135 + 164 + 135 + 165 + 134 + 165 + 134 + 165 + 134 + 171 + 80 + 86 + 128 + 123 + 128 + 87 + 122 + 86 + 86 + 43 + 79 + 44 + 85 + 80 + 49 + 79 + 44 + 122 + 86 + 122 + 93 + 122 + 122 + 93 + 122 + 87 + 128 + 123 + 86 + 128 + 86 + 123 + 79 + 50 + 44 + 79 + 86 + 86 + 86 + 81 + 92 + 86 + 129 + 88 + 128 + 123 + 129 + 93 + 123 + 165 + 129 + 93 + 87 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 128 + 87 + 86 + 86 + 87 + 86 + 80 + 86 + 50 + 87 + 92 + 87 + 165 + 136 + 137 + 165 + 92 + 38 + 6 + 0 + 37 + 43 + 43 + 86 + 87 + 128 + 87 + 129 + 129 + 130 + 123 + 129 + 87 + 128 + 86 + 86 + 1 + 43 + 0 + 0 + 1 + 43 + 50 + 86 + 86 + 50 + 81 + 50 + 86 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 50 + 79 + 7 + 43 + 43 + 37 + 7 + 43 + 0 + 80 + 7 + 36 + 43 + 50 + 85 + 87 + 92 + 129 + 130 + 129 + 171 + 166 + 165 + 172 + 135 + 166 + 170 + 136 + 166 + 171 + 136 + 171 + 165 + 136 + 171 + 202 + 171 + 172 + 165 + 134 + 166 + 164 + 171 + 171 + 165 + 171 + 165 + 135 + 171 + 171 + 165 + 171 + 171 + 165 + 171 + 171 + 165 + 170 + 135 + 165 + 171 + 171 + 135 + 80 + 86 + 86 + 122 + 87 + 128 + 79 + 50 + 43 + 79 + 43 + 79 + 43 + 80 + 49 + 79 + 44 + 86 + 122 + 86 + 129 + 122 + 87 + 128 + 123 + 86 + 86 + 128 + 123 + 86 + 86 + 86 + 79 + 86 + 79 + 43 + 50 + 80 + 86 + 87 + 128 + 123 + 93 + 129 + 129 + 123 + 129 + 93 + 130 + 165 + 129 + 87 + 86 + 122 + 50 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 80 + 50 + 79 + 50 + 86 + 87 + 86 + 86 + 93 + 129 + 130 + 172 + 172 + 129 + 44 + 7 + 36 + 7 + 80 + 43 + 129 + 123 + 136 + 129 + 130 + 122 + 129 + 87 + 128 + 87 + 86 + 129 + 129 + 123 + 43 + 7 + 0 + 1 + 36 + 7 + 43 + 86 + 45 + 86 + 86 + 86 + 50 + 86 + 44 + 49 + 80 + 50 + 43 + 8 + 79 + 49 + 44 + 7 + 37 + 43 + 43 + 0 + 43 + 44 + 37 + 7 + 43 + 85 + 51 + 86 + 129 + 129 + 172 + 129 + 165 + 172 + 130 + 172 + 171 + 172 + 172 + 135 + 172 + 171 + 172 + 171 + 166 + 178 + 172 + 207 + 172 + 208 + 172 + 207 + 172 + 208 + 171 + 172 + 207 + 172 + 207 + 172 + 172 + 207 + 172 + 207 + 172 + 171 + 208 + 135 + 165 + 172 + 172 + 171 + 172 + 165 + 171 + 79 + 86 + 86 + 86 + 122 + 86 + 43 + 43 + 37 + 42 + 37 + 43 + 49 + 79 + 43 + 37 + 79 + 86 + 86 + 129 + 122 + 87 + 128 + 87 + 122 + 128 + 86 + 123 + 86 + 86 + 86 + 86 + 79 + 86 + 80 + 50 + 43 + 86 + 86 + 123 + 123 + 93 + 129 + 166 + 129 + 93 + 129 + 129 + 129 + 166 + 93 + 122 + 87 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 87 + 86 + 80 + 43 + 50 + 79 + 50 + 86 + 87 + 93 + 129 + 166 + 136 + 130 + 136 + 43 + 37 + 1 + 43 + 79 + 92 + 87 + 123 + 129 + 93 + 123 + 86 + 128 + 87 + 86 + 122 + 93 + 86 + 87 + 122 + 51 + 79 + 0 + 7 + 0 + 36 + 1 + 7 + 80 + 49 + 87 + 86 + 50 + 80 + 86 + 50 + 86 + 44 + 43 + 50 + 43 + 80 + 49 + 43 + 44 + 43 + 37 + 7 + 43 + 43 + 44 + 36 + 44 + 43 + 50 + 86 + 93 + 129 + 165 + 136 + 129 + 172 + 207 + 173 + 208 + 172 + 179 + 208 + 179 + 171 + 178 + 172 + 172 + 173 + 178 + 172 + 208 + 209 + 208 + 215 + 208 + 171 + 209 + 207 + 214 + 172 + 171 + 208 + 172 + 207 + 172 + 208 + 171 + 208 + 171 + 172 + 208 + 172 + 171 + 172 + 171 + 172 + 166 + 172 + 85 + 86 + 86 + 122 + 80 + 50 + 79 + 36 + 43 + 7 + 79 + 43 + 80 + 79 + 43 + 43 + 43 + 79 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 87 + 122 + 92 + 122 + 86 + 87 + 85 + 116 + 86 + 43 + 43 + 86 + 44 + 86 + 123 + 92 + 123 + 129 + 94 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 87 + 92 + 123 + 86 + 87 + 86 + 93 + 87 + 86 + 86 + 44 + 80 + 50 + 43 + 43 + 87 + 86 + 87 + 92 + 130 + 135 + 130 + 135 + 123 + 7 + 0 + 37 + 43 + 87 + 129 + 123 + 129 + 93 + 123 + 87 + 80 + 50 + 86 + 80 + 43 + 86 + 87 + 80 + 50 + 79 + 44 + 0 + 7 + 36 + 0 + 1 + 6 + 80 + 44 + 86 + 86 + 43 + 87 + 86 + 86 + 50 + 86 + 44 + 80 + 49 + 80 + 50 + 43 + 44 + 79 + 7 + 37 + 43 + 86 + 7 + 37 + 79 + 7 + 50 + 86 + 166 + 99 + 166 + 136 + 172 + 172 + 178 + 208 + 173 + 214 + 208 + 214 + 173 + 214 + 208 + 178 + 173 + 207 + 173 + 208 + 172 + 208 + 214 + 208 + 172 + 208 + 172 + 208 + 171 + 208 + 172 + 178 + 208 + 172 + 171 + 173 + 207 + 171 + 173 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 165 + 93 + 122 + 86 + 86 + 79 + 50 + 79 + 37 + 42 + 43 + 44 + 79 + 86 + 43 + 43 + 36 + 43 + 79 + 86 + 122 + 93 + 122 + 123 + 92 + 122 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 86 + 86 + 43 + 80 + 50 + 79 + 86 + 87 + 86 + 86 + 122 + 93 + 123 + 92 + 87 + 129 + 93 + 129 + 130 + 86 + 86 + 86 + 87 + 86 + 87 + 92 + 87 + 86 + 86 + 50 + 80 + 43 + 50 + 44 + 86 + 87 + 128 + 93 + 130 + 165 + 136 + 129 + 50 + 37 + 0 + 7 + 79 + 44 + 130 + 123 + 129 + 86 + 86 + 86 + 44 + 43 + 44 + 79 + 44 + 44 + 43 + 86 + 80 + 44 + 43 + 0 + 1 + 36 + 7 + 0 + 1 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 79 + 50 + 86 + 44 + 86 + 79 + 50 + 80 + 7 + 43 + 80 + 43 + 43 + 43 + 43 + 37 + 87 + 135 + 130 + 135 + 166 + 172 + 136 + 172 + 208 + 179 + 172 + 208 + 214 + 173 + 214 + 208 + 173 + 214 + 172 + 208 + 172 + 209 + 208 + 178 + 172 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 172 + 172 + 136 + 172 + 172 + 135 + 172 + 136 + 172 + 172 + 136 + 171 + 123 + 86 + 86 + 86 + 86 + 43 + 43 + 36 + 43 + 43 + 79 + 80 + 49 + 80 + 42 + 37 + 43 + 43 + 86 + 122 + 93 + 122 + 129 + 122 + 87 + 86 + 128 + 123 + 86 + 86 + 122 + 86 + 79 + 86 + 44 + 43 + 86 + 86 + 86 + 81 + 86 + 86 + 86 + 87 + 92 + 87 + 86 + 86 + 93 + 123 + 86 + 50 + 87 + 49 + 87 + 86 + 87 + 93 + 86 + 86 + 87 + 50 + 86 + 86 + 50 + 87 + 86 + 123 + 93 + 135 + 166 + 136 + 172 + 87 + 43 + 0 + 7 + 0 + 37 + 44 + 122 + 94 + 122 + 88 + 80 + 43 + 43 + 1 + 43 + 1 + 43 + 43 + 43 + 44 + 80 + 7 + 37 + 0 + 43 + 0 + 1 + 0 + 36 + 7 + 37 + 50 + 79 + 87 + 85 + 44 + 86 + 86 + 86 + 86 + 80 + 87 + 86 + 86 + 50 + 80 + 86 + 43 + 44 + 86 + 43 + 43 + 37 + 43 + 43 + 93 + 129 + 130 + 129 + 136 + 166 + 135 + 173 + 172 + 136 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 178 + 208 + 173 + 208 + 172 + 209 + 178 + 208 + 208 + 173 + 172 + 207 + 173 + 208 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 172 + 135 + 172 + 172 + 130 + 172 + 129 + 129 + 122 + 79 + 86 + 43 + 43 + 37 + 43 + 43 + 79 + 43 + 86 + 43 + 42 + 37 + 37 + 43 + 86 + 86 + 128 + 123 + 128 + 86 + 123 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 80 + 49 + 80 + 43 + 86 + 86 + 123 + 92 + 87 + 86 + 86 + 87 + 122 + 93 + 86 + 87 + 93 + 129 + 86 + 50 + 81 + 50 + 86 + 92 + 87 + 122 + 93 + 50 + 122 + 50 + 87 + 86 + 87 + 128 + 93 + 88 + 171 + 131 + 172 + 135 + 130 + 87 + 6 + 37 + 0 + 7 + 0 + 37 + 86 + 86 + 81 + 86 + 43 + 37 + 7 + 36 + 8 + 36 + 43 + 1 + 43 + 44 + 37 + 43 + 43 + 0 + 37 + 0 + 1 + 6 + 0 + 1 + 36 + 44 + 50 + 80 + 79 + 50 + 86 + 80 + 86 + 86 + 86 + 87 + 86 + 87 + 86 + 86 + 44 + 86 + 86 + 80 + 43 + 43 + 43 + 7 + 80 + 92 + 123 + 86 + 93 + 93 + 130 + 172 + 130 + 172 + 208 + 179 + 173 + 214 + 209 + 214 + 173 + 208 + 214 + 173 + 208 + 172 + 172 + 208 + 179 + 208 + 173 + 172 + 208 + 173 + 172 + 202 + 172 + 173 + 172 + 178 + 172 + 172 + 136 + 171 + 173 + 135 + 173 + 136 + 171 + 166 + 136 + 172 + 136 + 172 + 171 + 129 + 87 + 128 + 80 + 86 + 86 + 43 + 79 + 43 + 79 + 43 + 43 + 79 + 1 + 43 + 0 + 43 + 37 + 85 + 86 + 122 + 123 + 86 + 129 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 86 + 79 + 50 + 80 + 79 + 51 + 128 + 87 + 129 + 123 + 86 + 87 + 92 + 124 + 92 + 87 + 129 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 87 + 93 + 86 + 86 + 51 + 86 + 86 + 86 + 129 + 94 + 129 + 129 + 136 + 130 + 171 + 130 + 129 + 87 + 0 + 1 + 42 + 1 + 37 + 7 + 80 + 43 + 44 + 43 + 43 + 1 + 42 + 1 + 37 + 6 + 38 + 42 + 1 + 37 + 43 + 1 + 43 + 1 + 36 + 6 + 1 + 0 + 0 + 0 + 37 + 7 + 43 + 43 + 80 + 50 + 80 + 85 + 87 + 80 + 50 + 122 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 43 + 80 + 43 + 44 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 130 + 172 + 178 + 173 + 173 + 214 + 209 + 178 + 209 + 172 + 215 + 209 + 214 + 172 + 209 + 172 + 173 + 214 + 172 + 209 + 172 + 172 + 173 + 208 + 173 + 166 + 178 + 136 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 136 + 171 + 136 + 166 + 135 + 166 + 136 + 136 + 172 + 129 + 122 + 86 + 122 + 87 + 49 + 79 + 86 + 43 + 80 + 43 + 43 + 42 + 79 + 1 + 1 + 36 + 43 + 79 + 86 + 86 + 86 + 123 + 128 + 86 + 86 + 123 + 122 + 93 + 122 + 86 + 86 + 79 + 86 + 43 + 80 + 86 + 93 + 123 + 129 + 86 + 86 + 87 + 122 + 93 + 87 + 93 + 122 + 93 + 86 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 129 + 130 + 136 + 165 + 136 + 130 + 135 + 123 + 50 + 1 + 43 + 1 + 36 + 7 + 43 + 44 + 37 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 36 + 1 + 7 + 37 + 36 + 7 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 37 + 44 + 43 + 86 + 44 + 86 + 86 + 86 + 80 + 92 + 44 + 86 + 86 + 44 + 86 + 122 + 87 + 50 + 43 + 79 + 44 + 50 + 128 + 45 + 86 + 92 + 123 + 129 + 136 + 136 + 166 + 179 + 208 + 179 + 209 + 179 + 208 + 215 + 172 + 215 + 209 + 178 + 173 + 208 + 173 + 208 + 173 + 179 + 208 + 173 + 172 + 172 + 166 + 172 + 173 + 178 + 172 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 172 + 172 + 136 + 130 + 171 + 136 + 171 + 130 + 172 + 165 + 128 + 129 + 129 + 86 + 122 + 44 + 85 + 79 + 44 + 79 + 43 + 43 + 43 + 42 + 1 + 37 + 42 + 80 + 49 + 122 + 87 + 86 + 122 + 86 + 122 + 86 + 86 + 122 + 87 + 86 + 85 + 80 + 49 + 80 + 86 + 87 + 128 + 87 + 129 + 129 + 87 + 128 + 87 + 123 + 93 + 128 + 87 + 50 + 86 + 50 + 80 + 50 + 86 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 92 + 87 + 86 + 129 + 129 + 136 + 130 + 135 + 166 + 130 + 135 + 87 + 7 + 37 + 6 + 1 + 36 + 7 + 37 + 7 + 37 + 43 + 0 + 37 + 1 + 42 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 37 + 7 + 43 + 44 + 79 + 49 + 80 + 50 + 86 + 80 + 87 + 86 + 85 + 81 + 92 + 86 + 80 + 50 + 86 + 80 + 86 + 129 + 86 + 44 + 86 + 51 + 86 + 129 + 129 + 130 + 172 + 173 + 178 + 173 + 172 + 208 + 179 + 173 + 209 + 178 + 209 + 173 + 214 + 173 + 173 + 214 + 173 + 208 + 173 + 172 + 172 + 179 + 208 + 172 + 172 + 172 + 179 + 136 + 172 + 208 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 171 + 172 + 136 + 172 + 136 + 166 + 135 + 166 + 122 + 93 + 122 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 42 + 37 + 43 + 36 + 7 + 37 + 79 + 85 + 80 + 92 + 86 + 122 + 86 + 87 + 86 + 122 + 86 + 86 + 80 + 85 + 80 + 49 + 80 + 86 + 129 + 123 + 129 + 129 + 93 + 123 + 86 + 129 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 80 + 50 + 86 + 50 + 86 + 123 + 50 + 87 + 86 + 92 + 87 + 86 + 129 + 93 + 130 + 129 + 136 + 172 + 166 + 136 + 93 + 86 + 43 + 1 + 43 + 0 + 0 + 1 + 43 + 1 + 36 + 7 + 37 + 0 + 43 + 0 + 1 + 36 + 1 + 0 + 0 + 43 + 1 + 36 + 7 + 1 + 36 + 7 + 37 + 0 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 43 + 7 + 79 + 44 + 86 + 86 + 87 + 85 + 80 + 87 + 43 + 86 + 87 + 86 + 85 + 80 + 86 + 87 + 129 + 129 + 43 + 80 + 50 + 86 + 93 + 129 + 129 + 172 + 172 + 173 + 172 + 179 + 173 + 172 + 173 + 209 + 178 + 173 + 209 + 179 + 172 + 209 + 179 + 172 + 173 + 215 + 172 + 172 + 173 + 172 + 173 + 178 + 173 + 172 + 178 + 172 + 172 + 173 + 135 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 136 + 172 + 166 + 136 + 171 + 130 + 165 + 86 + 128 + 86 + 80 + 85 + 80 + 43 + 43 + 43 + 43 + 79 + 42 + 1 + 37 + 6 + 37 + 79 + 49 + 80 + 86 + 86 + 123 + 85 + 86 + 80 + 122 + 86 + 86 + 86 + 86 + 79 + 80 + 86 + 92 + 124 + 129 + 129 + 129 + 123 + 93 + 86 + 124 + 92 + 86 + 50 + 87 + 86 + 50 + 80 + 50 + 43 + 86 + 44 + 92 + 86 + 87 + 86 + 51 + 87 + 128 + 87 + 129 + 129 + 130 + 135 + 173 + 166 + 136 + 130 + 129 + 50 + 37 + 6 + 1 + 36 + 1 + 42 + 1 + 37 + 6 + 37 + 1 + 42 + 1 + 0 + 1 + 36 + 7 + 0 + 37 + 0 + 43 + 1 + 36 + 1 + 43 + 1 + 0 + 43 + 0 + 43 + 1 + 36 + 0 + 1 + 0 + 43 + 1 + 43 + 79 + 50 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 44 + 86 + 129 + 123 + 93 + 79 + 50 + 86 + 87 + 86 + 172 + 130 + 172 + 173 + 172 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 209 + 173 + 179 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 178 + 209 + 172 + 172 + 173 + 172 + 136 + 178 + 173 + 172 + 135 + 172 + 166 + 136 + 172 + 135 + 172 + 172 + 130 + 172 + 135 + 172 + 136 + 172 + 128 + 87 + 122 + 86 + 85 + 80 + 86 + 43 + 86 + 43 + 43 + 36 + 43 + 37 + 42 + 1 + 43 + 37 + 42 + 43 + 80 + 49 + 122 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 86 + 80 + 85 + 86 + 86 + 86 + 129 + 129 + 123 + 130 + 86 + 87 + 128 + 86 + 123 + 86 + 51 + 86 + 50 + 79 + 50 + 44 + 50 + 79 + 86 + 51 + 86 + 86 + 92 + 87 + 129 + 93 + 123 + 129 + 130 + 135 + 136 + 166 + 136 + 166 + 93 + 86 + 49 + 37 + 7 + 0 + 43 + 38 + 43 + 7 + 36 + 1 + 43 + 0 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 36 + 7 + 37 + 0 + 1 + 42 + 1 + 1 + 42 + 1 + 37 + 0 + 0 + 7 + 36 + 1 + 36 + 7 + 43 + 44 + 86 + 86 + 86 + 80 + 86 + 87 + 86 + 86 + 86 + 80 + 86 + 86 + 130 + 122 + 50 + 86 + 86 + 86 + 87 + 93 + 166 + 136 + 172 + 172 + 173 + 178 + 173 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 173 + 208 + 179 + 173 + 173 + 172 + 178 + 173 + 172 + 137 + 208 + 173 + 142 + 172 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 172 + 136 + 165 + 136 + 172 + 172 + 172 + 86 + 86 + 79 + 86 + 86 + 79 + 86 + 44 + 79 + 43 + 43 + 43 + 42 + 37 + 43 + 0 + 43 + 37 + 42 + 43 + 43 + 80 + 79 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 85 + 86 + 86 + 80 + 86 + 123 + 93 + 129 + 123 + 86 + 87 + 86 + 86 + 92 + 123 + 87 + 92 + 81 + 49 + 50 + 44 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 93 + 129 + 123 + 94 + 129 + 135 + 130 + 172 + 130 + 171 + 136 + 123 + 93 + 44 + 43 + 0 + 7 + 43 + 44 + 43 + 43 + 37 + 43 + 1 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 37 + 0 + 6 + 1 + 0 + 37 + 7 + 36 + 1 + 0 + 0 + 1 + 42 + 1 + 36 + 1 + 43 + 43 + 86 + 44 + 86 + 86 + 86 + 87 + 86 + 86 + 80 + 50 + 122 + 123 + 92 + 44 + 86 + 86 + 86 + 87 + 86 + 130 + 135 + 130 + 171 + 137 + 208 + 173 + 178 + 173 + 173 + 173 + 173 + 173 + 172 + 179 + 173 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 172 + 173 + 136 + 179 + 172 + 171 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 172 + 130 + 172 + 136 + 171 + 172 + 136 + 172 + 172 + 80 + 49 + 80 + 85 + 44 + 86 + 79 + 50 + 79 + 1 + 42 + 43 + 37 + 42 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 86 + 43 + 86 + 80 + 86 + 85 + 86 + 44 + 86 + 85 + 80 + 86 + 86 + 86 + 86 + 87 + 128 + 87 + 85 + 44 + 86 + 86 + 86 + 123 + 87 + 92 + 50 + 86 + 44 + 86 + 43 + 87 + 86 + 93 + 86 + 93 + 123 + 92 + 129 + 130 + 129 + 130 + 135 + 130 + 130 + 172 + 136 + 166 + 92 + 86 + 80 + 7 + 0 + 43 + 1 + 86 + 44 + 37 + 7 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 1 + 42 + 0 + 1 + 0 + 1 + 36 + 7 + 0 + 0 + 37 + 1 + 43 + 43 + 0 + 0 + 1 + 36 + 7 + 38 + 6 + 1 + 36 + 43 + 50 + 80 + 86 + 50 + 87 + 122 + 50 + 80 + 85 + 87 + 129 + 87 + 86 + 43 + 86 + 86 + 44 + 86 + 130 + 135 + 165 + 129 + 130 + 172 + 172 + 172 + 179 + 173 + 172 + 173 + 173 + 208 + 173 + 173 + 172 + 173 + 179 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 130 + 178 + 167 + 178 + 166 + 178 + 130 + 171 + 136 + 172 + 172 + 135 + 172 + 135 + 166 + 136 + 171 + 136 + 172 + 172 + 135 + 80 + 85 + 44 + 79 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 43 + 37 + 6 + 37 + 0 + 43 + 0 + 1 + 43 + 43 + 43 + 79 + 50 + 79 + 50 + 80 + 85 + 50 + 80 + 86 + 44 + 85 + 86 + 44 + 86 + 86 + 86 + 85 + 80 + 50 + 79 + 50 + 87 + 86 + 129 + 86 + 87 + 50 + 80 + 49 + 44 + 86 + 86 + 93 + 86 + 86 + 94 + 123 + 129 + 135 + 130 + 129 + 94 + 165 + 136 + 166 + 135 + 166 + 93 + 80 + 50 + 36 + 1 + 7 + 44 + 80 + 43 + 7 + 1 + 36 + 7 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 1 + 36 + 7 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 50 + 80 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 1 + 42 + 44 + 49 + 80 + 43 + 86 + 86 + 87 + 49 + 80 + 93 + 122 + 129 + 86 + 43 + 50 + 80 + 43 + 122 + 136 + 87 + 86 + 171 + 130 + 129 + 136 + 166 + 178 + 172 + 209 + 173 + 173 + 208 + 173 + 173 + 173 + 215 + 173 + 208 + 173 + 179 + 173 + 172 + 173 + 172 + 173 + 178 + 172 + 166 + 136 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 166 + 172 + 135 + 166 + 135 + 172 + 135 + 172 + 129 + 172 + 135 + 86 + 79 + 86 + 44 + 86 + 79 + 50 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 36 + 6 + 1 + 37 + 6 + 37 + 7 + 43 + 85 + 44 + 79 + 50 + 86 + 43 + 86 + 44 + 85 + 43 + 43 + 44 + 49 + 80 + 43 + 43 + 79 + 86 + 87 + 86 + 86 + 92 + 122 + 87 + 93 + 50 + 86 + 44 + 86 + 44 + 86 + 50 + 86 + 87 + 92 + 123 + 93 + 129 + 87 + 130 + 129 + 135 + 130 + 172 + 129 + 130 + 129 + 86 + 86 + 1 + 37 + 7 + 37 + 79 + 7 + 43 + 8 + 37 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 6 + 1 + 0 + 37 + 0 + 0 + 7 + 37 + 0 + 43 + 44 + 86 + 86 + 44 + 85 + 44 + 86 + 80 + 50 + 86 + 43 + 80 + 86 + 43 + 43 + 43 + 50 + 86 + 79 + 50 + 86 + 129 + 123 + 86 + 43 + 86 + 50 + 79 + 50 + 165 + 43 + 86 + 130 + 128 + 87 + 129 + 129 + 165 + 172 + 172 + 173 + 215 + 209 + 173 + 173 + 209 + 178 + 209 + 173 + 209 + 179 + 173 + 172 + 179 + 172 + 173 + 172 + 173 + 172 + 172 + 137 + 171 + 136 + 172 + 136 + 172 + 172 + 135 + 172 + 130 + 135 + 172 + 165 + 136 + 172 + 129 + 171 + 171 + 136 + 86 + 80 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 42 + 1 + 6 + 37 + 0 + 43 + 7 + 37 + 43 + 43 + 49 + 80 + 49 + 80 + 49 + 80 + 50 + 79 + 43 + 43 + 7 + 43 + 37 + 43 + 49 + 86 + 87 + 122 + 92 + 123 + 86 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 80 + 50 + 87 + 86 + 92 + 87 + 87 + 129 + 93 + 122 + 94 + 129 + 136 + 130 + 171 + 130 + 129 + 129 + 86 + 44 + 0 + 43 + 43 + 37 + 7 + 36 + 8 + 37 + 6 + 1 + 43 + 1 + 6 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 1 + 0 + 37 + 6 + 1 + 43 + 43 + 44 + 80 + 86 + 86 + 87 + 128 + 87 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 43 + 85 + 87 + 129 + 86 + 86 + 86 + 44 + 43 + 86 + 129 + 86 + 86 + 86 + 129 + 86 + 86 + 86 + 87 + 171 + 130 + 172 + 173 + 172 + 209 + 173 + 172 + 173 + 173 + 173 + 208 + 173 + 215 + 172 + 173 + 179 + 172 + 173 + 172 + 172 + 172 + 137 + 171 + 172 + 136 + 171 + 136 + 172 + 135 + 166 + 136 + 171 + 135 + 130 + 171 + 136 + 164 + 136 + 171 + 129 + 172 + 86 + 86 + 122 + 50 + 79 + 44 + 43 + 43 + 43 + 43 + 6 + 37 + 7 + 0 + 36 + 1 + 7 + 42 + 37 + 7 + 43 + 36 + 43 + 44 + 49 + 80 + 43 + 50 + 79 + 49 + 80 + 43 + 43 + 43 + 7 + 79 + 50 + 122 + 129 + 129 + 130 + 129 + 129 + 86 + 129 + 87 + 92 + 50 + 81 + 49 + 86 + 87 + 86 + 86 + 93 + 122 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 172 + 129 + 130 + 136 + 129 + 80 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 43 + 37 + 7 + 1 + 43 + 43 + 0 + 1 + 0 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 7 + 37 + 44 + 86 + 85 + 87 + 86 + 86 + 123 + 129 + 86 + 130 + 128 + 124 + 129 + 129 + 129 + 128 + 123 + 93 + 86 + 86 + 122 + 43 + 43 + 80 + 91 + 93 + 86 + 80 + 85 + 44 + 86 + 93 + 122 + 86 + 86 + 93 + 80 + 43 + 85 + 44 + 86 + 129 + 129 + 172 + 129 + 172 + 167 + 172 + 179 + 172 + 173 + 208 + 173 + 173 + 172 + 209 + 179 + 172 + 173 + 142 + 172 + 173 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 135 + 171 + 130 + 171 + 135 + 135 + 129 + 171 + 129 + 136 + 165 + 136 + 165 + 135 + 165 + 86 + 123 + 85 + 50 + 80 + 49 + 44 + 43 + 43 + 43 + 0 + 43 + 37 + 6 + 0 + 1 + 43 + 0 + 43 + 37 + 6 + 37 + 7 + 49 + 80 + 43 + 86 + 43 + 50 + 79 + 44 + 43 + 85 + 44 + 79 + 86 + 92 + 130 + 171 + 129 + 130 + 171 + 129 + 129 + 87 + 128 + 87 + 50 + 86 + 86 + 86 + 87 + 86 + 93 + 87 + 129 + 130 + 93 + 129 + 129 + 129 + 93 + 130 + 130 + 171 + 130 + 129 + 129 + 87 + 79 + 1 + 43 + 37 + 7 + 0 + 37 + 43 + 44 + 42 + 1 + 43 + 44 + 43 + 0 + 43 + 1 + 0 + 1 + 36 + 7 + 36 + 1 + 0 + 43 + 44 + 86 + 80 + 86 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 171 + 129 + 129 + 165 + 129 + 87 + 86 + 165 + 93 + 85 + 80 + 129 + 86 + 86 + 86 + 43 + 79 + 86 + 129 + 129 + 86 + 92 + 86 + 80 + 49 + 80 + 50 + 122 + 129 + 129 + 123 + 93 + 129 + 129 + 172 + 209 + 173 + 214 + 172 + 173 + 173 + 208 + 173 + 179 + 172 + 179 + 172 + 208 + 179 + 172 + 136 + 172 + 172 + 136 + 171 + 136 + 165 + 136 + 171 + 135 + 172 + 135 + 171 + 129 + 135 + 130 + 171 + 130 + 135 + 165 + 136 + 129 + 129 + 86 + 86 + 79 + 50 + 79 + 44 + 43 + 43 + 43 + 0 + 43 + 7 + 0 + 37 + 42 + 7 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 50 + 80 + 86 + 43 + 86 + 43 + 50 + 80 + 49 + 44 + 86 + 129 + 129 + 165 + 136 + 129 + 172 + 129 + 129 + 129 + 129 + 86 + 87 + 50 + 86 + 50 + 79 + 87 + 93 + 86 + 130 + 93 + 122 + 93 + 129 + 129 + 94 + 129 + 129 + 135 + 166 + 129 + 94 + 122 + 50 + 37 + 43 + 0 + 43 + 1 + 0 + 42 + 1 + 43 + 37 + 7 + 43 + 80 + 1 + 43 + 0 + 37 + 7 + 36 + 0 + 1 + 0 + 0 + 43 + 43 + 80 + 86 + 93 + 86 + 123 + 129 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 129 + 123 + 171 + 166 + 86 + 122 + 129 + 129 + 129 + 159 + 92 + 123 + 49 + 44 + 85 + 86 + 87 + 128 + 87 + 122 + 92 + 44 + 85 + 44 + 86 + 122 + 135 + 123 + 86 + 50 + 86 + 122 + 130 + 172 + 208 + 179 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 135 + 173 + 172 + 178 + 136 + 208 + 172 + 136 + 172 + 135 + 171 + 136 + 171 + 129 + 135 + 172 + 135 + 171 + 99 + 172 + 129 + 171 + 130 + 165 + 136 + 129 + 165 + 129 + 87 + 122 + 50 + 85 + 86 + 44 + 43 + 79 + 43 + 7 + 43 + 43 + 0 + 43 + 37 + 6 + 1 + 43 + 0 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 44 + 86 + 43 + 86 + 44 + 85 + 86 + 86 + 87 + 129 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 93 + 122 + 93 + 87 + 50 + 80 + 86 + 86 + 93 + 129 + 86 + 129 + 87 + 93 + 129 + 87 + 129 + 129 + 136 + 130 + 129 + 129 + 88 + 128 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 1 + 43 + 80 + 7 + 36 + 44 + 86 + 43 + 80 + 43 + 43 + 44 + 43 + 36 + 1 + 6 + 0 + 37 + 50 + 86 + 86 + 123 + 129 + 123 + 171 + 129 + 164 + 129 + 130 + 165 + 129 + 165 + 129 + 165 + 86 + 122 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 92 + 43 + 86 + 87 + 128 + 129 + 123 + 92 + 86 + 44 + 43 + 86 + 129 + 129 + 86 + 86 + 44 + 85 + 86 + 87 + 129 + 165 + 136 + 172 + 129 + 130 + 166 + 135 + 166 + 135 + 166 + 172 + 136 + 178 + 172 + 172 + 172 + 172 + 142 + 172 + 130 + 172 + 171 + 136 + 135 + 136 + 165 + 136 + 171 + 136 + 130 + 135 + 166 + 135 + 165 + 136 + 165 + 130 + 171 + 130 + 86 + 123 + 86 + 49 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 36 + 7 + 43 + 37 + 6 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 44 + 43 + 86 + 49 + 87 + 79 + 50 + 86 + 80 + 86 + 92 + 129 + 166 + 135 + 172 + 172 + 165 + 136 + 129 + 129 + 129 + 123 + 93 + 128 + 87 + 86 + 87 + 50 + 93 + 128 + 88 + 129 + 86 + 129 + 87 + 92 + 130 + 129 + 129 + 129 + 129 + 130 + 93 + 128 + 81 + 7 + 43 + 36 + 7 + 43 + 1 + 43 + 43 + 37 + 85 + 43 + 80 + 86 + 86 + 129 + 86 + 80 + 86 + 86 + 79 + 7 + 37 + 0 + 1 + 43 + 86 + 43 + 87 + 86 + 158 + 129 + 129 + 165 + 129 + 165 + 129 + 208 + 171 + 171 + 166 + 171 + 123 + 129 + 122 + 86 + 129 + 165 + 129 + 123 + 165 + 129 + 128 + 86 + 86 + 129 + 123 + 92 + 80 + 43 + 85 + 50 + 123 + 128 + 87 + 92 + 79 + 44 + 85 + 92 + 87 + 165 + 93 + 122 + 93 + 129 + 129 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 136 + 172 + 177 + 136 + 172 + 172 + 172 + 136 + 171 + 172 + 136 + 165 + 136 + 136 + 166 + 135 + 130 + 172 + 135 + 130 + 165 + 136 + 129 + 172 + 129 + 166 + 135 + 166 + 92 + 123 + 86 + 86 + 86 + 50 + 80 + 49 + 79 + 43 + 43 + 1 + 43 + 42 + 1 + 37 + 7 + 42 + 1 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 86 + 86 + 86 + 50 + 86 + 122 + 135 + 129 + 172 + 171 + 172 + 172 + 130 + 172 + 129 + 129 + 129 + 130 + 93 + 122 + 93 + 87 + 92 + 123 + 93 + 86 + 129 + 93 + 129 + 123 + 94 + 129 + 129 + 129 + 130 + 135 + 130 + 93 + 129 + 123 + 80 + 43 + 6 + 43 + 37 + 43 + 43 + 80 + 49 + 80 + 86 + 128 + 123 + 129 + 129 + 122 + 129 + 122 + 87 + 122 + 50 + 43 + 0 + 0 + 37 + 43 + 44 + 92 + 123 + 122 + 129 + 129 + 165 + 171 + 171 + 172 + 208 + 215 + 208 + 208 + 214 + 208 + 171 + 166 + 129 + 123 + 128 + 165 + 123 + 122 + 129 + 165 + 129 + 129 + 86 + 49 + 80 + 86 + 50 + 80 + 86 + 128 + 86 + 86 + 44 + 86 + 86 + 122 + 93 + 129 + 122 + 93 + 86 + 86 + 87 + 86 + 129 + 129 + 172 + 129 + 172 + 172 + 129 + 172 + 136 + 177 + 172 + 172 + 135 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 136 + 165 + 136 + 130 + 171 + 130 + 130 + 135 + 130 + 165 + 130 + 166 + 135 + 129 + 88 + 165 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 43 + 50 + 79 + 43 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 43 + 43 + 50 + 80 + 85 + 86 + 86 + 87 + 129 + 129 + 172 + 171 + 172 + 172 + 171 + 130 + 172 + 171 + 130 + 129 + 86 + 128 + 87 + 93 + 122 + 93 + 87 + 93 + 129 + 130 + 87 + 129 + 129 + 93 + 129 + 130 + 136 + 129 + 129 + 93 + 129 + 87 + 86 + 85 + 44 + 44 + 43 + 80 + 86 + 86 + 86 + 86 + 129 + 123 + 165 + 129 + 129 + 129 + 165 + 86 + 123 + 128 + 87 + 122 + 7 + 43 + 0 + 0 + 44 + 79 + 93 + 129 + 165 + 136 + 201 + 172 + 214 + 209 + 214 + 208 + 215 + 215 + 214 + 209 + 207 + 172 + 208 + 208 + 171 + 165 + 130 + 122 + 122 + 129 + 129 + 129 + 129 + 87 + 86 + 85 + 80 + 87 + 128 + 93 + 80 + 85 + 50 + 80 + 92 + 166 + 92 + 86 + 87 + 86 + 85 + 86 + 122 + 50 + 122 + 93 + 129 + 165 + 130 + 171 + 136 + 165 + 136 + 171 + 136 + 172 + 135 + 172 + 178 + 136 + 172 + 171 + 136 + 173 + 129 + 172 + 131 + 129 + 131 + 130 + 172 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 87 + 122 + 129 + 129 + 86 + 86 + 86 + 86 + 80 + 86 + 49 + 80 + 7 + 36 + 43 + 1 + 6 + 37 + 7 + 36 + 43 + 43 + 43 + 44 + 43 + 86 + 43 + 49 + 44 + 79 + 50 + 86 + 122 + 130 + 129 + 171 + 130 + 172 + 172 + 172 + 171 + 130 + 172 + 165 + 129 + 130 + 128 + 93 + 87 + 86 + 93 + 123 + 129 + 129 + 93 + 123 + 128 + 93 + 130 + 123 + 93 + 129 + 129 + 136 + 129 + 129 + 87 + 122 + 44 + 85 + 44 + 122 + 86 + 93 + 122 + 130 + 129 + 123 + 128 + 129 + 164 + 130 + 171 + 129 + 165 + 129 + 123 + 128 + 129 + 123 + 43 + 7 + 36 + 1 + 7 + 37 + 85 + 123 + 135 + 166 + 214 + 208 + 209 + 172 + 214 + 209 + 214 + 215 + 208 + 215 + 214 + 208 + 209 + 171 + 208 + 172 + 165 + 129 + 122 + 123 + 86 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 85 + 44 + 86 + 129 + 129 + 129 + 87 + 86 + 85 + 86 + 80 + 86 + 86 + 86 + 86 + 92 + 123 + 93 + 128 + 129 + 130 + 129 + 135 + 166 + 135 + 171 + 136 + 171 + 129 + 172 + 136 + 172 + 171 + 136 + 172 + 137 + 130 + 173 + 129 + 167 + 136 + 130 + 130 + 130 + 165 + 129 + 130 + 129 + 123 + 123 + 86 + 86 + 86 + 123 + 128 + 87 + 128 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 7 + 36 + 7 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 7 + 43 + 79 + 44 + 85 + 44 + 86 + 86 + 86 + 93 + 129 + 129 + 166 + 171 + 130 + 172 + 135 + 172 + 166 + 136 + 165 + 136 + 129 + 129 + 123 + 128 + 129 + 87 + 129 + 87 + 129 + 129 + 129 + 123 + 135 + 123 + 135 + 130 + 129 + 129 + 129 + 129 + 123 + 86 + 44 + 85 + 43 + 122 + 129 + 130 + 165 + 129 + 129 + 129 + 129 + 159 + 92 + 130 + 165 + 165 + 129 + 172 + 165 + 130 + 128 + 129 + 86 + 79 + 7 + 37 + 0 + 37 + 6 + 1 + 43 + 86 + 123 + 170 + 172 + 172 + 214 + 209 + 208 + 214 + 209 + 171 + 215 + 202 + 135 + 207 + 172 + 166 + 171 + 172 + 164 + 129 + 129 + 129 + 129 + 122 + 93 + 122 + 86 + 80 + 122 + 92 + 129 + 130 + 122 + 92 + 80 + 50 + 85 + 80 + 50 + 86 + 122 + 92 + 129 + 123 + 92 + 86 + 86 + 43 + 87 + 128 + 129 + 171 + 130 + 136 + 129 + 136 + 172 + 136 + 136 + 172 + 136 + 173 + 130 + 135 + 173 + 130 + 130 + 136 + 167 + 135 + 130 + 130 + 130 + 87 + 129 + 123 + 123 + 86 + 122 + 86 + 116 + 50 + 123 + 86 + 122 + 93 + 86 + 80 + 49 + 86 + 44 + 85 + 37 + 7 + 36 + 7 + 37 + 7 + 36 + 1 + 43 + 6 + 37 + 43 + 43 + 44 + 49 + 80 + 79 + 50 + 86 + 86 + 128 + 129 + 130 + 171 + 136 + 165 + 136 + 166 + 171 + 136 + 171 + 130 + 172 + 129 + 129 + 123 + 129 + 93 + 123 + 129 + 93 + 123 + 129 + 129 + 123 + 135 + 130 + 130 + 165 + 129 + 130 + 129 + 129 + 123 + 92 + 80 + 86 + 86 + 86 + 165 + 172 + 129 + 165 + 130 + 165 + 135 + 123 + 171 + 166 + 172 + 129 + 165 + 129 + 172 + 166 + 135 + 129 + 122 + 43 + 1 + 0 + 7 + 36 + 1 + 6 + 37 + 6 + 80 + 86 + 172 + 208 + 172 + 214 + 209 + 214 + 173 + 165 + 129 + 129 + 128 + 129 + 165 + 130 + 129 + 171 + 172 + 171 + 172 + 207 + 130 + 129 + 122 + 128 + 87 + 129 + 164 + 129 + 129 + 87 + 85 + 86 + 80 + 50 + 122 + 93 + 86 + 128 + 87 + 122 + 92 + 86 + 80 + 50 + 79 + 50 + 80 + 92 + 129 + 130 + 129 + 135 + 93 + 130 + 136 + 130 + 136 + 136 + 130 + 136 + 172 + 135 + 131 + 172 + 130 + 129 + 136 + 130 + 129 + 87 + 130 + 87 + 87 + 128 + 123 + 80 + 122 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 44 + 85 + 44 + 85 + 44 + 43 + 42 + 1 + 37 + 7 + 36 + 7 + 37 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 129 + 129 + 172 + 129 + 172 + 165 + 136 + 172 + 171 + 130 + 172 + 172 + 171 + 129 + 130 + 129 + 129 + 129 + 123 + 92 + 129 + 87 + 122 + 130 + 129 + 129 + 135 + 166 + 129 + 130 + 129 + 129 + 129 + 87 + 86 + 86 + 80 + 128 + 165 + 130 + 171 + 166 + 171 + 166 + 136 + 172 + 165 + 129 + 172 + 166 + 171 + 172 + 165 + 172 + 172 + 165 + 136 + 86 + 37 + 6 + 0 + 37 + 6 + 1 + 36 + 7 + 0 + 37 + 43 + 122 + 129 + 172 + 172 + 208 + 215 + 214 + 166 + 129 + 129 + 86 + 129 + 123 + 85 + 165 + 129 + 172 + 171 + 172 + 207 + 172 + 129 + 166 + 129 + 172 + 165 + 129 + 86 + 86 + 86 + 86 + 122 + 87 + 129 + 128 + 87 + 85 + 86 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 86 + 86 + 86 + 87 + 128 + 129 + 129 + 93 + 130 + 172 + 129 + 136 + 136 + 172 + 136 + 166 + 136 + 130 + 135 + 124 + 94 + 129 + 123 + 93 + 87 + 86 + 86 + 80 + 87 + 122 + 86 + 116 + 86 + 123 + 122 + 92 + 87 + 122 + 86 + 86 + 86 + 44 + 86 + 43 + 49 + 37 + 43 + 1 + 42 + 1 + 43 + 0 + 43 + 1 + 42 + 43 + 37 + 43 + 43 + 44 + 49 + 79 + 50 + 123 + 92 + 129 + 165 + 136 + 165 + 136 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 171 + 130 + 129 + 129 + 123 + 129 + 87 + 129 + 122 + 93 + 123 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 130 + 122 + 50 + 86 + 159 + 171 + 130 + 171 + 166 + 178 + 208 + 172 + 166 + 172 + 165 + 135 + 166 + 214 + 172 + 208 + 172 + 173 + 208 + 135 + 79 + 37 + 6 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 0 + 43 + 43 + 79 + 129 + 166 + 214 + 215 + 209 + 215 + 171 + 165 + 129 + 134 + 129 + 80 + 122 + 92 + 166 + 128 + 172 + 172 + 172 + 172 + 208 + 165 + 129 + 86 + 129 + 129 + 122 + 129 + 123 + 92 + 87 + 122 + 92 + 80 + 50 + 79 + 86 + 86 + 50 + 80 + 86 + 50 + 79 + 86 + 86 + 86 + 129 + 86 + 129 + 87 + 93 + 136 + 130 + 172 + 172 + 136 + 136 + 172 + 130 + 135 + 130 + 123 + 93 + 123 + 87 + 92 + 87 + 80 + 86 + 86 + 86 + 86 + 116 + 87 + 123 + 122 + 129 + 122 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 7 + 37 + 7 + 36 + 43 + 1 + 36 + 7 + 37 + 43 + 43 + 43 + 43 + 44 + 85 + 44 + 86 + 129 + 122 + 136 + 129 + 172 + 129 + 171 + 166 + 135 + 172 + 165 + 179 + 172 + 172 + 136 + 165 + 136 + 130 + 129 + 159 + 93 + 86 + 129 + 123 + 93 + 123 + 129 + 93 + 129 + 123 + 129 + 129 + 124 + 129 + 122 + 93 + 86 + 86 + 165 + 129 + 166 + 171 + 172 + 172 + 172 + 208 + 172 + 130 + 208 + 171 + 209 + 178 + 209 + 214 + 215 + 215 + 208 + 172 + 129 + 43 + 36 + 1 + 7 + 36 + 6 + 1 + 0 + 37 + 0 + 6 + 1 + 36 + 43 + 43 + 123 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 172 + 171 + 129 + 165 + 129 + 92 + 123 + 171 + 128 + 166 + 129 + 172 + 129 + 123 + 129 + 164 + 129 + 93 + 123 + 128 + 87 + 86 + 80 + 86 + 86 + 85 + 50 + 80 + 43 + 49 + 80 + 43 + 86 + 43 + 86 + 50 + 86 + 86 + 129 + 129 + 136 + 165 + 136 + 135 + 130 + 172 + 130 + 136 + 129 + 130 + 129 + 86 + 87 + 86 + 86 + 50 + 87 + 80 + 86 + 86 + 50 + 116 + 86 + 123 + 123 + 128 + 123 + 123 + 128 + 129 + 123 + 129 + 122 + 92 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 36 + 7 + 37 + 43 + 7 + 43 + 43 + 79 + 50 + 80 + 92 + 129 + 129 + 165 + 136 + 165 + 136 + 166 + 135 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 130 + 93 + 128 + 87 + 128 + 87 + 129 + 123 + 93 + 129 + 123 + 128 + 123 + 93 + 86 + 87 + 122 + 50 + 129 + 165 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 171 + 166 + 208 + 215 + 215 + 214 + 215 + 209 + 215 + 215 + 209 + 172 + 128 + 37 + 43 + 7 + 36 + 1 + 0 + 6 + 1 + 36 + 1 + 0 + 43 + 1 + 36 + 43 + 43 + 129 + 208 + 214 + 215 + 215 + 208 + 172 + 208 + 215 + 171 + 173 + 171 + 165 + 87 + 129 + 129 + 165 + 129 + 171 + 166 + 129 + 171 + 123 + 86 + 123 + 92 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 43 + 44 + 79 + 50 + 79 + 86 + 50 + 86 + 86 + 86 + 86 + 123 + 129 + 129 + 136 + 165 + 130 + 129 + 130 + 129 + 136 + 123 + 92 + 129 + 86 + 86 + 81 + 49 + 86 + 44 + 86 + 86 + 87 + 80 + 86 + 86 + 123 + 128 + 123 + 159 + 128 + 123 + 129 + 129 + 165 + 87 + 128 + 87 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 36 + 7 + 37 + 0 + 43 + 1 + 43 + 43 + 37 + 43 + 49 + 79 + 44 + 86 + 129 + 129 + 129 + 165 + 136 + 165 + 136 + 165 + 136 + 172 + 166 + 171 + 172 + 172 + 136 + 165 + 136 + 166 + 129 + 130 + 129 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 123 + 93 + 122 + 93 + 122 + 94 + 122 + 92 + 123 + 86 + 130 + 165 + 172 + 172 + 172 + 172 + 208 + 172 + 208 + 166 + 172 + 215 + 214 + 215 + 215 + 215 + 208 + 215 + 208 + 172 + 172 + 86 + 37 + 6 + 37 + 6 + 37 + 6 + 37 + 43 + 43 + 43 + 79 + 7 + 36 + 43 + 37 + 6 + 80 + 165 + 208 + 178 + 209 + 129 + 135 + 172 + 165 + 214 + 208 + 214 + 214 + 208 + 171 + 136 + 165 + 172 + 166 + 172 + 165 + 129 + 128 + 87 + 129 + 122 + 129 + 93 + 129 + 123 + 92 + 128 + 123 + 93 + 128 + 87 + 92 + 128 + 87 + 85 + 87 + 86 + 85 + 86 + 86 + 123 + 92 + 129 + 87 + 129 + 93 + 123 + 92 + 123 + 93 + 86 + 93 + 123 + 85 + 44 + 86 + 80 + 49 + 80 + 79 + 86 + 86 + 87 + 122 + 129 + 122 + 123 + 129 + 159 + 86 + 129 + 165 + 129 + 129 + 128 + 87 + 86 + 86 + 79 + 50 + 79 + 7 + 37 + 43 + 43 + 0 + 7 + 36 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 86 + 123 + 135 + 129 + 130 + 165 + 135 + 166 + 135 + 166 + 136 + 171 + 130 + 172 + 129 + 172 + 129 + 166 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 129 + 165 + 129 + 130 + 129 + 93 + 129 + 165 + 130 + 86 + 123 + 92 + 123 + 93 + 165 + 130 + 178 + 208 + 172 + 208 + 166 + 172 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 172 + 86 + 43 + 36 + 7 + 37 + 43 + 6 + 80 + 43 + 86 + 79 + 50 + 86 + 79 + 80 + 85 + 43 + 37 + 42 + 87 + 165 + 178 + 209 + 86 + 86 + 164 + 93 + 165 + 215 + 215 + 215 + 215 + 214 + 172 + 209 + 214 + 172 + 208 + 165 + 136 + 171 + 165 + 130 + 164 + 129 + 130 + 129 + 135 + 129 + 159 + 93 + 128 + 87 + 122 + 86 + 86 + 50 + 37 + 42 + 43 + 44 + 85 + 86 + 86 + 92 + 124 + 128 + 87 + 86 + 86 + 93 + 123 + 92 + 124 + 128 + 87 + 86 + 85 + 86 + 80 + 86 + 44 + 85 + 80 + 86 + 87 + 122 + 129 + 122 + 159 + 92 + 123 + 122 + 81 + 171 + 129 + 129 + 123 + 92 + 86 + 80 + 50 + 44 + 85 + 43 + 43 + 37 + 6 + 37 + 7 + 0 + 43 + 37 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 92 + 122 + 130 + 135 + 165 + 135 + 166 + 135 + 166 + 135 + 165 + 136 + 166 + 135 + 130 + 165 + 136 + 165 + 136 + 165 + 129 + 130 + 129 + 136 + 165 + 130 + 129 + 129 + 129 + 130 + 129 + 166 + 129 + 166 + 136 + 129 + 166 + 135 + 166 + 172 + 172 + 208 + 172 + 208 + 173 + 171 + 172 + 172 + 215 + 209 + 215 + 215 + 214 + 209 + 215 + 209 + 214 + 172 + 166 + 85 + 1 + 0 + 43 + 43 + 43 + 86 + 80 + 49 + 87 + 86 + 85 + 80 + 50 + 85 + 80 + 86 + 36 + 43 + 43 + 165 + 172 + 215 + 122 + 86 + 129 + 86 + 86 + 209 + 178 + 208 + 208 + 178 + 209 + 214 + 208 + 173 + 172 + 172 + 171 + 130 + 165 + 128 + 87 + 86 + 128 + 123 + 129 + 93 + 129 + 85 + 87 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 79 + 50 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 123 + 86 + 123 + 129 + 129 + 93 + 123 + 129 + 86 + 86 + 86 + 122 + 79 + 86 + 80 + 86 + 129 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 80 + 165 + 129 + 93 + 128 + 86 + 86 + 86 + 80 + 50 + 85 + 44 + 43 + 43 + 37 + 0 + 7 + 36 + 7 + 37 + 7 + 37 + 43 + 43 + 43 + 43 + 79 + 87 + 92 + 129 + 129 + 129 + 166 + 135 + 129 + 129 + 130 + 129 + 129 + 123 + 129 + 129 + 135 + 165 + 136 + 166 + 129 + 130 + 171 + 130 + 165 + 136 + 129 + 123 + 129 + 129 + 87 + 129 + 129 + 129 + 166 + 135 + 130 + 129 + 166 + 129 + 172 + 172 + 215 + 172 + 208 + 172 + 172 + 208 + 172 + 215 + 215 + 208 + 208 + 172 + 172 + 215 + 215 + 208 + 172 + 129 + 79 + 0 + 43 + 43 + 43 + 86 + 87 + 86 + 86 + 86 + 122 + 93 + 122 + 86 + 86 + 80 + 43 + 85 + 44 + 79 + 129 + 135 + 209 + 171 + 165 + 128 + 86 + 128 + 123 + 129 + 208 + 215 + 214 + 172 + 166 + 172 + 172 + 208 + 136 + 165 + 129 + 165 + 129 + 129 + 86 + 123 + 129 + 129 + 129 + 129 + 86 + 93 + 122 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 85 + 87 + 86 + 86 + 123 + 86 + 129 + 87 + 129 + 165 + 129 + 172 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 87 + 116 + 92 + 123 + 128 + 123 + 123 + 122 + 86 + 122 + 86 + 123 + 86 + 129 + 122 + 93 + 86 + 86 + 85 + 80 + 50 + 43 + 43 + 43 + 37 + 6 + 37 + 7 + 36 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 85 + 44 + 86 + 129 + 128 + 87 + 129 + 129 + 129 + 86 + 86 + 92 + 86 + 87 + 86 + 129 + 128 + 130 + 129 + 129 + 172 + 129 + 130 + 166 + 135 + 130 + 129 + 165 + 93 + 129 + 123 + 129 + 129 + 172 + 130 + 129 + 129 + 129 + 166 + 172 + 172 + 172 + 208 + 172 + 165 + 136 + 208 + 215 + 208 + 179 + 208 + 208 + 172 + 130 + 214 + 208 + 215 + 209 + 171 + 87 + 85 + 1 + 43 + 43 + 86 + 86 + 122 + 86 + 93 + 128 + 87 + 128 + 86 + 86 + 86 + 86 + 122 + 80 + 86 + 49 + 80 + 172 + 172 + 172 + 172 + 166 + 129 + 164 + 135 + 122 + 129 + 135 + 171 + 166 + 129 + 165 + 172 + 166 + 135 + 166 + 171 + 129 + 123 + 86 + 129 + 128 + 130 + 128 + 123 + 129 + 129 + 129 + 86 + 86 + 87 + 85 + 79 + 50 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 79 + 86 + 123 + 92 + 123 + 129 + 129 + 130 + 129 + 172 + 172 + 165 + 165 + 129 + 123 + 129 + 122 + 129 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 123 + 86 + 122 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 86 + 87 + 79 + 50 + 86 + 43 + 80 + 43 + 6 + 1 + 43 + 0 + 1 + 43 + 43 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 44 + 86 + 43 + 86 + 86 + 86 + 51 + 79 + 50 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 93 + 129 + 130 + 165 + 129 + 130 + 166 + 135 + 130 + 123 + 129 + 129 + 128 + 87 + 130 + 171 + 129 + 130 + 129 + 171 + 130 + 208 + 172 + 215 + 172 + 209 + 172 + 214 + 208 + 172 + 214 + 173 + 208 + 130 + 214 + 209 + 215 + 215 + 214 + 166 + 86 + 85 + 44 + 79 + 50 + 79 + 129 + 87 + 135 + 123 + 128 + 123 + 129 + 93 + 86 + 79 + 87 + 86 + 86 + 86 + 79 + 86 + 129 + 172 + 130 + 207 + 172 + 214 + 208 + 172 + 129 + 166 + 171 + 166 + 165 + 135 + 202 + 172 + 129 + 129 + 122 + 87 + 86 + 129 + 128 + 123 + 128 + 135 + 166 + 129 + 129 + 129 + 166 + 129 + 129 + 92 + 122 + 86 + 123 + 86 + 86 + 86 + 122 + 86 + 86 + 86 + 80 + 50 + 86 + 86 + 122 + 87 + 129 + 166 + 172 + 172 + 166 + 136 + 172 + 165 + 165 + 136 + 165 + 129 + 122 + 123 + 93 + 158 + 123 + 129 + 122 + 122 + 116 + 87 + 122 + 85 + 87 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 44 + 86 + 85 + 44 + 86 + 7 + 37 + 6 + 1 + 43 + 43 + 1 + 43 + 44 + 43 + 43 + 7 + 36 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 50 + 43 + 44 + 85 + 50 + 123 + 93 + 129 + 130 + 93 + 129 + 123 + 129 + 129 + 136 + 159 + 129 + 94 + 165 + 129 + 129 + 129 + 130 + 93 + 165 + 93 + 165 + 130 + 171 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 215 + 209 + 172 + 171 + 166 + 178 + 208 + 172 + 209 + 214 + 215 + 209 + 172 + 86 + 85 + 80 + 49 + 80 + 86 + 123 + 135 + 129 + 165 + 93 + 130 + 128 + 123 + 87 + 85 + 86 + 87 + 86 + 86 + 86 + 44 + 128 + 130 + 166 + 214 + 208 + 179 + 208 + 209 + 171 + 208 + 179 + 208 + 214 + 172 + 166 + 172 + 165 + 129 + 172 + 129 + 123 + 92 + 122 + 123 + 129 + 92 + 159 + 129 + 86 + 122 + 93 + 165 + 129 + 123 + 128 + 129 + 86 + 123 + 86 + 128 + 93 + 123 + 122 + 43 + 43 + 86 + 44 + 123 + 93 + 129 + 129 + 166 + 135 + 166 + 172 + 172 + 165 + 136 + 165 + 129 + 165 + 130 + 122 + 93 + 122 + 159 + 123 + 165 + 122 + 122 + 87 + 122 + 122 + 80 + 86 + 49 + 80 + 50 + 79 + 87 + 85 + 50 + 86 + 44 + 79 + 50 + 43 + 43 + 44 + 43 + 43 + 50 + 43 + 80 + 7 + 43 + 43 + 1 + 37 + 0 + 43 + 1 + 36 + 7 + 43 + 43 + 44 + 43 + 43 + 43 + 50 + 86 + 87 + 129 + 86 + 129 + 93 + 123 + 129 + 129 + 130 + 129 + 166 + 129 + 129 + 136 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 129 + 171 + 136 + 166 + 172 + 172 + 172 + 208 + 136 + 208 + 173 + 214 + 215 + 166 + 128 + 166 + 172 + 214 + 173 + 172 + 208 + 214 + 179 + 202 + 86 + 85 + 43 + 44 + 79 + 50 + 123 + 93 + 172 + 165 + 136 + 129 + 166 + 87 + 128 + 87 + 86 + 122 + 87 + 86 + 86 + 86 + 87 + 171 + 172 + 208 + 179 + 209 + 214 + 208 + 173 + 208 + 215 + 215 + 208 + 179 + 207 + 130 + 165 + 128 + 123 + 129 + 129 + 172 + 129 + 165 + 123 + 128 + 87 + 122 + 92 + 122 + 80 + 86 + 86 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 128 + 116 + 50 + 43 + 43 + 80 + 86 + 129 + 93 + 165 + 130 + 130 + 172 + 172 + 166 + 173 + 165 + 136 + 165 + 129 + 123 + 93 + 122 + 123 + 165 + 123 + 158 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 79 + 43 + 44 + 79 + 43 + 86 + 50 + 80 + 49 + 80 + 43 + 14 + 37 + 6 + 43 + 1 + 44 + 49 + 80 + 50 + 44 + 79 + 50 + 37 + 6 + 37 + 7 + 37 + 6 + 37 + 44 + 49 + 80 + 43 + 50 + 44 + 93 + 86 + 87 + 129 + 86 + 87 + 92 + 123 + 129 + 136 + 165 + 130 + 171 + 130 + 166 + 135 + 130 + 129 + 165 + 136 + 129 + 172 + 171 + 130 + 171 + 130 + 172 + 172 + 172 + 208 + 171 + 173 + 208 + 208 + 172 + 171 + 130 + 172 + 208 + 172 + 172 + 165 + 129 + 172 + 215 + 172 + 165 + 79 + 50 + 43 + 80 + 86 + 92 + 124 + 171 + 130 + 172 + 129 + 166 + 129 + 93 + 129 + 86 + 87 + 122 + 87 + 86 + 87 + 129 + 172 + 208 + 214 + 173 + 208 + 178 + 209 + 215 + 215 + 209 + 214 + 208 + 215 + 215 + 166 + 129 + 129 + 129 + 164 + 166 + 135 + 166 + 171 + 166 + 129 + 129 + 129 + 122 + 122 + 93 + 86 + 122 + 129 + 129 + 123 + 128 + 123 + 135 + 123 + 86 + 122 + 86 + 43 + 43 + 86 + 80 + 86 + 92 + 123 + 92 + 166 + 129 + 172 + 172 + 165 + 172 + 166 + 130 + 129 + 165 + 129 + 122 + 87 + 123 + 122 + 165 + 123 + 122 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 43 + 43 + 80 + 49 + 43 + 44 + 43 + 85 + 44 + 79 + 50 + 44 + 43 + 7 + 43 + 0 + 43 + 8 + 43 + 37 + 42 + 7 + 37 + 43 + 50 + 79 + 44 + 86 + 86 + 93 + 86 + 86 + 86 + 50 + 87 + 86 + 129 + 123 + 93 + 87 + 93 + 123 + 130 + 171 + 130 + 172 + 171 + 130 + 166 + 135 + 130 + 165 + 130 + 135 + 129 + 166 + 135 + 165 + 130 + 135 + 172 + 166 + 171 + 173 + 208 + 178 + 208 + 173 + 172 + 165 + 171 + 173 + 172 + 208 + 129 + 129 + 123 + 128 + 172 + 215 + 208 + 172 + 122 + 87 + 85 + 86 + 87 + 86 + 129 + 130 + 166 + 135 + 166 + 130 + 171 + 130 + 123 + 86 + 93 + 129 + 122 + 87 + 86 + 129 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 215 + 215 + 215 + 172 + 215 + 208 + 172 + 165 + 93 + 129 + 166 + 171 + 208 + 130 + 165 + 172 + 171 + 166 + 171 + 135 + 159 + 129 + 129 + 129 + 128 + 123 + 129 + 165 + 129 + 93 + 158 + 87 + 128 + 80 + 85 + 44 + 79 + 50 + 80 + 92 + 87 + 122 + 129 + 130 + 129 + 172 + 167 + 135 + 166 + 173 + 165 + 129 + 165 + 94 + 122 + 87 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 129 + 86 + 86 + 80 + 49 + 80 + 43 + 50 + 43 + 43 + 37 + 6 + 43 + 7 + 43 + 1 + 43 + 44 + 50 + 85 + 44 + 43 + 7 + 43 + 1 + 36 + 7 + 37 + 7 + 36 + 43 + 44 + 44 + 85 + 87 + 86 + 86 + 87 + 92 + 129 + 87 + 92 + 123 + 93 + 86 + 86 + 123 + 130 + 135 + 166 + 129 + 129 + 130 + 129 + 172 + 129 + 165 + 136 + 165 + 136 + 165 + 130 + 135 + 165 + 136 + 172 + 209 + 214 + 209 + 178 + 209 + 171 + 166 + 172 + 208 + 179 + 165 + 86 + 86 + 165 + 165 + 172 + 215 + 209 + 135 + 129 + 122 + 44 + 86 + 86 + 123 + 86 + 130 + 129 + 173 + 129 + 172 + 129 + 166 + 129 + 87 + 86 + 130 + 165 + 93 + 86 + 86 + 129 + 129 + 130 + 165 + 179 + 215 + 172 + 209 + 178 + 215 + 208 + 172 + 179 + 201 + 130 + 135 + 165 + 172 + 172 + 172 + 208 + 173 + 165 + 172 + 172 + 165 + 136 + 165 + 165 + 129 + 129 + 128 + 123 + 86 + 129 + 129 + 164 + 129 + 129 + 122 + 86 + 43 + 80 + 43 + 44 + 86 + 86 + 122 + 87 + 129 + 123 + 136 + 166 + 172 + 166 + 172 + 166 + 136 + 165 + 129 + 123 + 122 + 93 + 116 + 87 + 123 + 86 + 123 + 87 + 93 + 87 + 87 + 86 + 129 + 86 + 86 + 122 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 37 + 6 + 8 + 43 + 43 + 44 + 43 + 7 + 43 + 43 + 44 + 37 + 43 + 44 + 85 + 44 + 86 + 122 + 93 + 123 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 86 + 93 + 123 + 93 + 165 + 130 + 172 + 135 + 130 + 129 + 123 + 86 + 171 + 130 + 129 + 171 + 130 + 171 + 130 + 135 + 166 + 172 + 214 + 209 + 215 + 172 + 209 + 172 + 172 + 208 + 214 + 215 + 172 + 172 + 123 + 43 + 165 + 178 + 209 + 208 + 215 + 129 + 166 + 86 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 171 + 166 + 136 + 165 + 136 + 166 + 93 + 122 + 129 + 130 + 129 + 129 + 129 + 129 + 87 + 86 + 129 + 171 + 172 + 165 + 179 + 172 + 172 + 172 + 172 + 129 + 165 + 130 + 171 + 208 + 172 + 166 + 172 + 172 + 172 + 171 + 165 + 130 + 171 + 129 + 166 + 166 + 135 + 129 + 123 + 165 + 93 + 165 + 129 + 165 + 129 + 129 + 122 + 50 + 79 + 44 + 43 + 85 + 44 + 86 + 80 + 93 + 86 + 129 + 129 + 166 + 135 + 166 + 165 + 172 + 131 + 171 + 165 + 123 + 93 + 122 + 87 + 122 + 87 + 123 + 80 + 92 + 80 + 50 + 87 + 122 + 129 + 93 + 122 + 87 + 86 + 85 + 43 + 43 + 43 + 43 + 43 + 43 + 8 + 36 + 7 + 1 + 43 + 43 + 7 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 37 + 7 + 43 + 79 + 86 + 87 + 92 + 130 + 129 + 87 + 129 + 136 + 129 + 129 + 130 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 123 + 86 + 129 + 123 + 93 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 173 + 208 + 214 + 215 + 173 + 208 + 135 + 123 + 165 + 136 + 208 + 172 + 208 + 173 + 171 + 129 + 86 + 80 + 86 + 86 + 129 + 129 + 124 + 129 + 135 + 172 + 167 + 172 + 129 + 172 + 129 + 87 + 165 + 136 + 166 + 172 + 172 + 129 + 86 + 49 + 80 + 50 + 87 + 171 + 129 + 136 + 172 + 171 + 172 + 172 + 166 + 172 + 207 + 172 + 173 + 208 + 172 + 214 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 166 + 129 + 172 + 123 + 128 + 123 + 129 + 128 + 130 + 129 + 164 + 87 + 122 + 80 + 43 + 49 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 93 + 166 + 129 + 166 + 135 + 166 + 129 + 172 + 123 + 129 + 129 + 122 + 80 + 87 + 50 + 80 + 87 + 80 + 51 + 86 + 51 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 43 + 44 + 43 + 7 + 37 + 43 + 7 + 37 + 0 + 43 + 0 + 43 + 1 + 43 + 80 + 86 + 93 + 123 + 136 + 129 + 129 + 129 + 93 + 130 + 129 + 130 + 93 + 87 + 85 + 80 + 50 + 86 + 86 + 87 + 86 + 87 + 86 + 129 + 129 + 129 + 129 + 172 + 173 + 172 + 171 + 172 + 130 + 171 + 129 + 172 + 166 + 172 + 172 + 208 + 215 + 215 + 215 + 215 + 208 + 166 + 128 + 129 + 172 + 208 + 209 + 178 + 172 + 166 + 172 + 165 + 86 + 79 + 87 + 92 + 123 + 129 + 129 + 129 + 130 + 172 + 172 + 172 + 165 + 172 + 130 + 92 + 123 + 136 + 173 + 172 + 166 + 129 + 50 + 43 + 44 + 86 + 92 + 166 + 136 + 172 + 215 + 179 + 208 + 172 + 215 + 208 + 173 + 214 + 172 + 209 + 214 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 165 + 136 + 172 + 166 + 165 + 86 + 122 + 93 + 128 + 166 + 129 + 122 + 129 + 86 + 79 + 43 + 44 + 85 + 80 + 86 + 86 + 87 + 86 + 129 + 130 + 129 + 165 + 136 + 166 + 165 + 136 + 159 + 135 + 159 + 93 + 122 + 80 + 50 + 80 + 51 + 79 + 51 + 44 + 51 + 44 + 86 + 79 + 86 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 80 + 43 + 50 + 7 + 43 + 43 + 80 + 50 + 44 + 43 + 43 + 7 + 37 + 43 + 43 + 44 + 43 + 86 + 86 + 86 + 129 + 130 + 172 + 129 + 136 + 172 + 130 + 136 + 165 + 130 + 135 + 130 + 93 + 122 + 87 + 86 + 86 + 80 + 50 + 80 + 123 + 92 + 166 + 172 + 136 + 171 + 172 + 166 + 171 + 129 + 136 + 129 + 129 + 123 + 136 + 165 + 172 + 214 + 209 + 214 + 215 + 173 + 214 + 209 + 129 + 129 + 165 + 172 + 172 + 215 + 208 + 165 + 136 + 172 + 166 + 128 + 80 + 87 + 129 + 129 + 129 + 130 + 130 + 171 + 166 + 178 + 166 + 173 + 130 + 171 + 129 + 87 + 166 + 135 + 130 + 165 + 93 + 43 + 43 + 43 + 44 + 92 + 136 + 172 + 172 + 215 + 215 + 215 + 178 + 215 + 209 + 214 + 209 + 215 + 214 + 173 + 214 + 209 + 208 + 172 + 129 + 172 + 165 + 130 + 171 + 165 + 130 + 129 + 128 + 123 + 129 + 122 + 129 + 86 + 122 + 93 + 79 + 86 + 80 + 49 + 86 + 80 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 165 + 136 + 165 + 130 + 129 + 165 + 129 + 130 + 122 + 86 + 80 + 86 + 44 + 80 + 51 + 50 + 81 + 14 + 51 + 79 + 44 + 43 + 86 + 79 + 86 + 50 + 79 + 44 + 49 + 43 + 43 + 44 + 85 + 44 + 43 + 86 + 86 + 87 + 86 + 50 + 86 + 44 + 43 + 86 + 44 + 123 + 129 + 93 + 165 + 130 + 171 + 172 + 173 + 172 + 172 + 130 + 172 + 135 + 172 + 130 + 129 + 130 + 129 + 129 + 86 + 129 + 86 + 44 + 86 + 122 + 136 + 166 + 172 + 129 + 135 + 130 + 129 + 123 + 128 + 93 + 129 + 123 + 128 + 130 + 129 + 171 + 173 + 208 + 215 + 172 + 208 + 172 + 172 + 208 + 179 + 208 + 129 + 172 + 166 + 171 + 209 + 171 + 166 + 172 + 172 + 129 + 43 + 129 + 129 + 130 + 172 + 165 + 172 + 129 + 173 + 172 + 172 + 172 + 172 + 173 + 165 + 136 + 123 + 129 + 93 + 129 + 123 + 86 + 49 + 50 + 43 + 86 + 136 + 172 + 173 + 178 + 215 + 215 + 215 + 215 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 178 + 208 + 129 + 129 + 165 + 166 + 136 + 164 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 122 + 92 + 86 + 80 + 86 + 79 + 87 + 86 + 50 + 86 + 80 + 92 + 123 + 86 + 129 + 130 + 129 + 165 + 131 + 171 + 130 + 123 + 129 + 123 + 93 + 116 + 86 + 86 + 45 + 52 + 49 + 81 + 51 + 50 + 45 + 43 + 50 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 85 + 44 + 43 + 43 + 44 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 122 + 93 + 123 + 136 + 165 + 172 + 172 + 173 + 172 + 173 + 172 + 172 + 209 + 172 + 172 + 137 + 171 + 130 + 130 + 135 + 165 + 136 + 129 + 129 + 166 + 135 + 166 + 172 + 136 + 165 + 129 + 136 + 123 + 92 + 122 + 86 + 130 + 171 + 136 + 165 + 129 + 136 + 129 + 165 + 130 + 214 + 215 + 172 + 172 + 173 + 172 + 208 + 179 + 208 + 172 + 165 + 136 + 166 + 171 + 130 + 129 + 129 + 165 + 129 + 130 + 129 + 172 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 179 + 172 + 208 + 173 + 209 + 172 + 171 + 87 + 128 + 130 + 122 + 129 + 86 + 1 + 43 + 129 + 129 + 172 + 178 + 209 + 178 + 209 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 208 + 215 + 172 + 172 + 165 + 165 + 136 + 165 + 172 + 172 + 123 + 128 + 123 + 128 + 87 + 122 + 92 + 123 + 79 + 50 + 79 + 79 + 50 + 80 + 50 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 129 + 130 + 130 + 130 + 129 + 94 + 123 + 129 + 88 + 86 + 87 + 51 + 81 + 50 + 9 + 50 + 51 + 45 + 50 + 43 + 43 + 37 + 7 + 43 + 80 + 86 + 49 + 80 + 43 + 44 + 85 + 44 + 86 + 44 + 86 + 86 + 129 + 129 + 129 + 130 + 129 + 136 + 166 + 129 + 172 + 172 + 173 + 209 + 172 + 179 + 173 + 208 + 173 + 178 + 173 + 172 + 172 + 167 + 136 + 165 + 129 + 130 + 172 + 215 + 172 + 172 + 172 + 129 + 172 + 129 + 129 + 87 + 129 + 122 + 129 + 130 + 129 + 135 + 129 + 166 + 136 + 165 + 129 + 129 + 93 + 129 + 165 + 172 + 136 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 135 + 123 + 129 + 87 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 166 + 179 + 172 + 165 + 136 + 129 + 172 + 172 + 209 + 214 + 172 + 172 + 172 + 172 + 166 + 128 + 123 + 172 + 129 + 171 + 87 + 43 + 36 + 43 + 87 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 208 + 178 + 209 + 172 + 172 + 208 + 215 + 172 + 215 + 172 + 208 + 172 + 215 + 172 + 166 + 172 + 171 + 166 + 128 + 129 + 129 + 123 + 122 + 86 + 86 + 79 + 86 + 43 + 43 + 86 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 87 + 129 + 130 + 129 + 93 + 130 + 93 + 129 + 88 + 86 + 87 + 87 + 87 + 51 + 51 + 45 + 50 + 15 + 45 + 50 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 43 + 43 + 1 + 80 + 49 + 81 + 86 + 86 + 92 + 123 + 130 + 171 + 131 + 172 + 172 + 172 + 171 + 173 + 209 + 173 + 214 + 173 + 215 + 209 + 178 + 209 + 173 + 178 + 209 + 172 + 173 + 171 + 166 + 136 + 165 + 130 + 136 + 129 + 166 + 135 + 166 + 129 + 135 + 129 + 130 + 129 + 165 + 93 + 129 + 166 + 178 + 172 + 172 + 172 + 165 + 136 + 122 + 93 + 129 + 86 + 129 + 129 + 130 + 165 + 135 + 172 + 172 + 166 + 172 + 171 + 130 + 135 + 130 + 123 + 122 + 86 + 50 + 80 + 44 + 43 + 86 + 123 + 135 + 172 + 172 + 172 + 129 + 165 + 136 + 166 + 172 + 178 + 172 + 172 + 165 + 166 + 129 + 165 + 93 + 165 + 172 + 172 + 171 + 129 + 80 + 43 + 43 + 43 + 43 + 43 + 80 + 85 + 43 + 80 + 43 + 85 + 80 + 43 + 123 + 128 + 129 + 130 + 165 + 165 + 172 + 172 + 172 + 208 + 173 + 172 + 171 + 172 + 166 + 171 + 165 + 129 + 86 + 123 + 85 + 50 + 79 + 80 + 85 + 44 + 121 + 50 + 80 + 50 + 79 + 87 + 92 + 123 + 129 + 123 + 129 + 93 + 93 + 94 + 123 + 87 + 93 + 87 + 88 + 51 + 80 + 51 + 50 + 45 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 0 + 43 + 43 + 80 + 43 + 50 + 79 + 43 + 43 + 43 + 50 + 123 + 93 + 166 + 129 + 215 + 172 + 209 + 179 + 209 + 215 + 179 + 214 + 209 + 179 + 209 + 214 + 179 + 209 + 172 + 173 + 172 + 178 + 166 + 172 + 129 + 129 + 130 + 129 + 129 + 129 + 166 + 135 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 172 + 166 + 178 + 172 + 172 + 173 + 172 + 171 + 172 + 172 + 135 + 165 + 171 + 129 + 87 + 87 + 128 + 130 + 171 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 86 + 86 + 44 + 79 + 8 + 79 + 86 + 87 + 135 + 165 + 172 + 172 + 130 + 135 + 166 + 129 + 129 + 129 + 130 + 129 + 128 + 165 + 129 + 129 + 123 + 86 + 92 + 202 + 215 + 172 + 208 + 129 + 165 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 79 + 86 + 80 + 85 + 86 + 86 + 80 + 85 + 86 + 80 + 129 + 129 + 165 + 172 + 171 + 173 + 172 + 207 + 172 + 166 + 172 + 171 + 129 + 123 + 86 + 79 + 86 + 43 + 86 + 122 + 86 + 86 + 86 + 80 + 86 + 44 + 86 + 87 + 86 + 122 + 88 + 92 + 87 + 93 + 87 + 86 + 87 + 51 + 87 + 45 + 87 + 51 + 51 + 45 + 50 + 51 + 45 + 50 + 51 + 45 + 7 + 42 + 37 + 7 + 36 + 1 + 43 + 43 + 44 + 43 + 43 + 80 + 86 + 86 + 129 + 136 + 209 + 173 + 172 + 215 + 215 + 173 + 215 + 215 + 209 + 179 + 215 + 209 + 172 + 179 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 130 + 129 + 86 + 93 + 122 + 130 + 129 + 166 + 172 + 178 + 172 + 172 + 172 + 165 + 172 + 172 + 172 + 172 + 136 + 171 + 166 + 136 + 165 + 135 + 166 + 135 + 166 + 136 + 172 + 128 + 123 + 92 + 87 + 122 + 93 + 122 + 93 + 129 + 129 + 122 + 93 + 123 + 86 + 87 + 128 + 86 + 44 + 86 + 86 + 130 + 171 + 172 + 173 + 171 + 123 + 93 + 165 + 93 + 123 + 128 + 87 + 128 + 129 + 123 + 129 + 129 + 122 + 86 + 86 + 129 + 208 + 173 + 172 + 208 + 178 + 166 + 171 + 123 + 171 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 165 + 166 + 135 + 123 + 128 + 123 + 129 + 165 + 135 + 166 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 129 + 86 + 86 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 80 + 50 + 80 + 50 + 79 + 87 + 86 + 129 + 123 + 93 + 86 + 51 + 87 + 44 + 51 + 87 + 44 + 86 + 51 + 45 + 50 + 9 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 43 + 0 + 43 + 37 + 7 + 37 + 6 + 37 + 43 + 50 + 86 + 129 + 166 + 172 + 179 + 208 + 173 + 215 + 215 + 209 + 215 + 215 + 215 + 179 + 209 + 214 + 173 + 173 + 208 + 172 + 136 + 166 + 172 + 130 + 129 + 129 + 86 + 80 + 86 + 92 + 123 + 136 + 172 + 208 + 179 + 209 + 178 + 172 + 208 + 173 + 172 + 172 + 135 + 172 + 172 + 165 + 136 + 165 + 136 + 166 + 172 + 172 + 135 + 166 + 135 + 130 + 164 + 93 + 122 + 86 + 93 + 129 + 129 + 130 + 129 + 166 + 172 + 129 + 129 + 86 + 37 + 50 + 122 + 172 + 179 + 172 + 214 + 130 + 86 + 123 + 92 + 123 + 86 + 93 + 128 + 123 + 129 + 129 + 129 + 165 + 129 + 80 + 85 + 86 + 129 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 173 + 207 + 172 + 172 + 165 + 172 + 172 + 172 + 166 + 171 + 166 + 135 + 129 + 130 + 158 + 129 + 130 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 172 + 123 + 128 + 86 + 123 + 86 + 122 + 128 + 87 + 129 + 86 + 86 + 122 + 50 + 80 + 86 + 43 + 87 + 128 + 129 + 87 + 93 + 123 + 50 + 80 + 44 + 49 + 51 + 81 + 50 + 15 + 81 + 51 + 14 + 45 + 51 + 50 + 45 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 7 + 36 + 7 + 37 + 6 + 37 + 86 + 87 + 165 + 137 + 208 + 179 + 209 + 215 + 215 + 172 + 215 + 215 + 209 + 179 + 209 + 179 + 172 + 209 + 172 + 173 + 172 + 172 + 165 + 136 + 172 + 130 + 122 + 50 + 80 + 49 + 80 + 86 + 87 + 171 + 172 + 173 + 178 + 209 + 178 + 209 + 172 + 172 + 171 + 130 + 172 + 214 + 173 + 214 + 172 + 173 + 172 + 178 + 209 + 172 + 178 + 172 + 173 + 172 + 171 + 129 + 166 + 171 + 173 + 178 + 172 + 209 + 179 + 208 + 172 + 130 + 86 + 44 + 43 + 129 + 172 + 172 + 215 + 215 + 86 + 80 + 93 + 122 + 92 + 86 + 86 + 122 + 93 + 123 + 128 + 129 + 165 + 87 + 129 + 122 + 43 + 86 + 129 + 165 + 172 + 172 + 165 + 172 + 208 + 173 + 208 + 178 + 208 + 172 + 208 + 172 + 171 + 166 + 172 + 129 + 172 + 165 + 166 + 171 + 172 + 130 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 135 + 165 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 123 + 86 + 86 + 50 + 80 + 86 + 86 + 129 + 123 + 130 + 86 + 44 + 43 + 44 + 50 + 45 + 51 + 87 + 52 + 45 + 50 + 51 + 45 + 51 + 44 + 51 + 14 + 45 + 43 + 86 + 43 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 7 + 79 + 44 + 129 + 129 + 172 + 209 + 179 + 209 + 215 + 214 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 173 + 172 + 173 + 166 + 171 + 172 + 172 + 131 + 171 + 166 + 93 + 80 + 86 + 43 + 86 + 86 + 123 + 172 + 172 + 178 + 173 + 208 + 179 + 172 + 172 + 166 + 135 + 172 + 215 + 172 + 172 + 208 + 179 + 208 + 172 + 179 + 172 + 208 + 179 + 172 + 208 + 172 + 172 + 173 + 178 + 208 + 215 + 179 + 209 + 215 + 215 + 165 + 130 + 129 + 86 + 7 + 44 + 129 + 208 + 215 + 179 + 172 + 86 + 86 + 87 + 128 + 123 + 93 + 86 + 122 + 128 + 86 + 123 + 129 + 165 + 129 + 129 + 122 + 86 + 43 + 86 + 122 + 129 + 129 + 166 + 135 + 166 + 208 + 178 + 209 + 172 + 215 + 208 + 173 + 208 + 172 + 214 + 172 + 209 + 172 + 214 + 166 + 136 + 207 + 166 + 179 + 208 + 172 + 172 + 165 + 172 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 172 + 165 + 129 + 123 + 86 + 86 + 44 + 86 + 79 + 93 + 129 + 129 + 124 + 86 + 43 + 44 + 43 + 1 + 44 + 86 + 50 + 45 + 51 + 51 + 51 + 51 + 44 + 51 + 15 + 44 + 51 + 45 + 49 + 80 + 49 + 80 + 43 + 1 + 43 + 43 + 43 + 37 + 7 + 44 + 86 + 123 + 171 + 173 + 173 + 215 + 215 + 208 + 179 + 215 + 209 + 215 + 179 + 209 + 215 + 172 + 172 + 166 + 172 + 135 + 172 + 173 + 165 + 136 + 130 + 165 + 92 + 87 + 122 + 93 + 123 + 129 + 87 + 135 + 165 + 172 + 172 + 173 + 172 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 178 + 172 + 172 + 173 + 208 + 178 + 173 + 208 + 179 + 214 + 173 + 214 + 172 + 172 + 172 + 172 + 215 + 209 + 215 + 215 + 173 + 215 + 165 + 87 + 86 + 86 + 123 + 172 + 178 + 215 + 209 + 86 + 86 + 92 + 123 + 128 + 130 + 129 + 86 + 128 + 87 + 128 + 87 + 122 + 129 + 165 + 129 + 172 + 86 + 86 + 80 + 128 + 123 + 129 + 171 + 130 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 209 + 214 + 172 + 208 + 166 + 178 + 172 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 166 + 207 + 172 + 130 + 171 + 172 + 166 + 171 + 172 + 165 + 172 + 165 + 93 + 86 + 79 + 43 + 44 + 123 + 129 + 130 + 171 + 87 + 86 + 37 + 43 + 44 + 43 + 44 + 51 + 44 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 8 + 51 + 50 + 80 + 50 + 80 + 49 + 44 + 79 + 37 + 7 + 43 + 37 + 43 + 50 + 86 + 123 + 172 + 172 + 215 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 215 + 173 + 215 + 173 + 172 + 172 + 166 + 173 + 172 + 129 + 130 + 129 + 129 + 166 + 129 + 130 + 129 + 129 + 87 + 86 + 85 + 87 + 129 + 172 + 166 + 178 + 129 + 166 + 135 + 172 + 172 + 171 + 130 + 172 + 172 + 172 + 172 + 172 + 172 + 214 + 172 + 215 + 173 + 214 + 173 + 214 + 172 + 172 + 173 + 214 + 215 + 209 + 215 + 179 + 209 + 129 + 129 + 44 + 86 + 172 + 172 + 215 + 173 + 214 + 130 + 86 + 86 + 129 + 129 + 129 + 129 + 87 + 128 + 80 + 86 + 128 + 87 + 128 + 129 + 130 + 158 + 136 + 122 + 86 + 86 + 129 + 123 + 129 + 129 + 165 + 129 + 171 + 130 + 171 + 166 + 208 + 172 + 172 + 208 + 179 + 215 + 209 + 214 + 172 + 166 + 172 + 208 + 171 + 173 + 214 + 172 + 208 + 172 + 172 + 172 + 166 + 172 + 172 + 165 + 179 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 44 + 43 + 80 + 86 + 92 + 130 + 167 + 171 + 129 + 44 + 79 + 37 + 43 + 44 + 50 + 87 + 44 + 15 + 51 + 51 + 52 + 51 + 51 + 51 + 51 + 44 + 51 + 51 + 43 + 80 + 49 + 80 + 49 + 43 + 44 + 37 + 43 + 43 + 43 + 80 + 92 + 130 + 172 + 172 + 209 + 215 + 179 + 215 + 209 + 179 + 215 + 208 + 179 + 209 + 172 + 172 + 172 + 172 + 172 + 165 + 173 + 136 + 172 + 130 + 165 + 136 + 129 + 123 + 92 + 124 + 86 + 50 + 79 + 93 + 129 + 164 + 172 + 136 + 172 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 208 + 173 + 214 + 172 + 209 + 179 + 215 + 214 + 179 + 208 + 173 + 171 + 87 + 86 + 86 + 123 + 129 + 129 + 166 + 172 + 172 + 172 + 93 + 85 + 123 + 129 + 129 + 129 + 86 + 129 + 86 + 86 + 122 + 86 + 92 + 123 + 129 + 129 + 122 + 129 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 129 + 171 + 130 + 165 + 129 + 129 + 165 + 172 + 172 + 209 + 172 + 208 + 172 + 172 + 178 + 202 + 172 + 172 + 172 + 208 + 172 + 208 + 214 + 209 + 172 + 172 + 171 + 166 + 172 + 208 + 172 + 208 + 172 + 136 + 165 + 129 + 123 + 85 + 44 + 85 + 81 + 129 + 172 + 130 + 129 + 171 + 80 + 80 + 7 + 43 + 43 + 81 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 80 + 49 + 44 + 80 + 43 + 44 + 43 + 43 + 44 + 85 + 87 + 172 + 172 + 173 + 215 + 179 + 209 + 215 + 179 + 209 + 215 + 179 + 209 + 179 + 172 + 173 + 171 + 167 + 135 + 130 + 172 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 87 + 129 + 123 + 86 + 86 + 93 + 123 + 129 + 135 + 172 + 129 + 172 + 209 + 172 + 172 + 171 + 136 + 172 + 166 + 172 + 172 + 178 + 166 + 172 + 172 + 178 + 172 + 209 + 214 + 173 + 215 + 215 + 215 + 214 + 130 + 122 + 86 + 123 + 128 + 129 + 166 + 173 + 171 + 130 + 136 + 165 + 172 + 123 + 92 + 86 + 130 + 128 + 123 + 129 + 92 + 87 + 86 + 128 + 86 + 86 + 80 + 128 + 87 + 165 + 92 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 165 + 129 + 165 + 135 + 165 + 130 + 165 + 129 + 128 + 166 + 172 + 208 + 208 + 178 + 209 + 208 + 172 + 208 + 130 + 207 + 172 + 209 + 172 + 208 + 171 + 209 + 214 + 173 + 172 + 201 + 172 + 208 + 172 + 172 + 172 + 202 + 129 + 128 + 80 + 86 + 43 + 86 + 122 + 130 + 172 + 172 + 129 + 165 + 86 + 1 + 43 + 37 + 86 + 8 + 86 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 86 + 87 + 86 + 50 + 86 + 43 + 43 + 44 + 43 + 8 + 49 + 87 + 129 + 166 + 178 + 173 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 215 + 173 + 215 + 137 + 208 + 136 + 167 + 135 + 130 + 130 + 135 + 130 + 93 + 94 + 129 + 93 + 87 + 87 + 130 + 86 + 86 + 86 + 87 + 128 + 129 + 130 + 171 + 136 + 172 + 173 + 165 + 136 + 165 + 130 + 135 + 172 + 166 + 171 + 172 + 171 + 172 + 172 + 172 + 209 + 178 + 209 + 214 + 209 + 135 + 123 + 122 + 129 + 86 + 172 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 123 + 129 + 129 + 122 + 93 + 123 + 129 + 135 + 87 + 128 + 123 + 86 + 50 + 79 + 93 + 122 + 86 + 86 + 129 + 129 + 129 + 87 + 129 + 129 + 165 + 171 + 166 + 136 + 171 + 166 + 165 + 171 + 166 + 135 + 165 + 130 + 165 + 208 + 172 + 209 + 214 + 172 + 202 + 172 + 208 + 165 + 129 + 129 + 165 + 208 + 172 + 171 + 166 + 165 + 172 + 172 + 165 + 208 + 172 + 172 + 172 + 208 + 172 + 208 + 129 + 122 + 44 + 79 + 86 + 86 + 123 + 135 + 172 + 166 + 165 + 136 + 43 + 37 + 42 + 43 + 44 + 80 + 50 + 52 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 43 + 44 + 79 + 44 + 49 + 44 + 50 + 80 + 50 + 86 + 86 + 129 + 136 + 166 + 179 + 209 + 179 + 179 + 209 + 178 + 215 + 173 + 215 + 172 + 215 + 173 + 179 + 172 + 166 + 136 + 136 + 166 + 129 + 136 + 94 + 130 + 130 + 136 + 93 + 87 + 87 + 86 + 87 + 87 + 86 + 86 + 86 + 86 + 129 + 93 + 165 + 172 + 172 + 129 + 129 + 166 + 135 + 172 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 208 + 178 + 209 + 172 + 165 + 129 + 123 + 92 + 123 + 171 + 166 + 172 + 172 + 171 + 172 + 166 + 171 + 166 + 129 + 123 + 128 + 93 + 165 + 129 + 135 + 129 + 165 + 93 + 122 + 86 + 87 + 49 + 80 + 86 + 92 + 86 + 92 + 123 + 86 + 172 + 129 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 166 + 171 + 172 + 165 + 129 + 165 + 166 + 172 + 207 + 172 + 209 + 215 + 215 + 208 + 165 + 172 + 128 + 159 + 129 + 172 + 208 + 172 + 202 + 172 + 171 + 166 + 171 + 166 + 172 + 208 + 171 + 166 + 172 + 165 + 123 + 122 + 43 + 79 + 86 + 129 + 129 + 165 + 172 + 166 + 129 + 165 + 43 + 43 + 43 + 43 + 44 + 87 + 44 + 51 + 87 + 51 + 51 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 45 + 85 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 43 + 43 + 50 + 87 + 135 + 173 + 172 + 173 + 215 + 172 + 179 + 215 + 173 + 179 + 173 + 214 + 173 + 179 + 172 + 172 + 136 + 166 + 135 + 130 + 172 + 94 + 135 + 131 + 136 + 93 + 129 + 87 + 93 + 86 + 88 + 128 + 87 + 86 + 86 + 79 + 50 + 86 + 123 + 128 + 93 + 130 + 165 + 135 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 214 + 173 + 172 + 171 + 130 + 122 + 86 + 86 + 165 + 166 + 172 + 171 + 130 + 171 + 172 + 208 + 172 + 173 + 172 + 172 + 165 + 171 + 130 + 165 + 136 + 172 + 172 + 165 + 136 + 122 + 87 + 128 + 86 + 86 + 44 + 86 + 86 + 86 + 128 + 87 + 92 + 165 + 93 + 129 + 164 + 130 + 165 + 172 + 172 + 166 + 172 + 171 + 130 + 171 + 166 + 129 + 128 + 165 + 166 + 172 + 208 + 129 + 208 + 208 + 172 + 208 + 172 + 166 + 171 + 166 + 171 + 209 + 208 + 208 + 172 + 214 + 166 + 208 + 172 + 202 + 135 + 165 + 166 + 128 + 165 + 87 + 79 + 43 + 79 + 92 + 123 + 165 + 130 + 171 + 129 + 166 + 129 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 50 + 51 + 87 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 51 + 45 + 86 + 43 + 43 + 50 + 43 + 44 + 86 + 43 + 44 + 50 + 86 + 87 + 129 + 136 + 172 + 172 + 173 + 179 + 173 + 208 + 179 + 173 + 178 + 209 + 179 + 172 + 172 + 172 + 130 + 136 + 130 + 171 + 130 + 136 + 130 + 100 + 129 + 94 + 130 + 92 + 88 + 86 + 87 + 129 + 123 + 92 + 86 + 86 + 87 + 122 + 93 + 129 + 165 + 130 + 135 + 172 + 166 + 172 + 172 + 214 + 172 + 179 + 209 + 178 + 171 + 166 + 86 + 122 + 87 + 171 + 172 + 208 + 208 + 172 + 172 + 172 + 208 + 172 + 171 + 166 + 172 + 171 + 166 + 136 + 208 + 172 + 171 + 172 + 209 + 172 + 136 + 165 + 92 + 86 + 87 + 86 + 86 + 80 + 86 + 49 + 80 + 86 + 93 + 122 + 93 + 122 + 93 + 129 + 123 + 171 + 166 + 172 + 171 + 208 + 136 + 166 + 171 + 165 + 129 + 166 + 165 + 172 + 208 + 172 + 208 + 208 + 165 + 136 + 208 + 208 + 172 + 165 + 166 + 171 + 166 + 172 + 208 + 171 + 202 + 172 + 172 + 165 + 129 + 165 + 208 + 129 + 165 + 123 + 86 + 79 + 79 + 86 + 86 + 129 + 165 + 129 + 166 + 135 + 165 + 123 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 50 + 43 + 44 + 43 + 43 + 49 + 44 + 43 + 44 + 43 + 43 + 86 + 93 + 129 + 166 + 178 + 172 + 173 + 172 + 215 + 173 + 178 + 173 + 179 + 208 + 173 + 172 + 136 + 172 + 130 + 130 + 135 + 130 + 136 + 136 + 130 + 94 + 129 + 94 + 86 + 87 + 86 + 88 + 92 + 123 + 129 + 93 + 86 + 79 + 50 + 122 + 93 + 123 + 135 + 165 + 172 + 135 + 208 + 173 + 178 + 215 + 208 + 172 + 172 + 130 + 171 + 172 + 130 + 171 + 166 + 214 + 209 + 215 + 172 + 172 + 172 + 208 + 172 + 208 + 172 + 172 + 166 + 172 + 208 + 178 + 209 + 215 + 172 + 178 + 208 + 172 + 123 + 93 + 86 + 86 + 122 + 43 + 86 + 50 + 79 + 43 + 50 + 122 + 86 + 129 + 93 + 122 + 50 + 80 + 128 + 129 + 166 + 172 + 208 + 172 + 165 + 136 + 171 + 166 + 165 + 165 + 165 + 136 + 165 + 172 + 208 + 209 + 207 + 166 + 214 + 166 + 172 + 165 + 166 + 171 + 172 + 208 + 202 + 172 + 171 + 166 + 165 + 122 + 123 + 129 + 165 + 123 + 122 + 85 + 43 + 80 + 122 + 86 + 129 + 129 + 129 + 165 + 166 + 171 + 86 + 43 + 43 + 79 + 44 + 43 + 87 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 44 + 43 + 50 + 43 + 44 + 43 + 50 + 43 + 80 + 50 + 86 + 93 + 87 + 172 + 136 + 172 + 136 + 172 + 173 + 172 + 173 + 208 + 179 + 166 + 136 + 172 + 172 + 172 + 136 + 172 + 130 + 135 + 172 + 94 + 136 + 94 + 123 + 94 + 86 + 87 + 86 + 87 + 129 + 129 + 129 + 87 + 128 + 92 + 86 + 86 + 86 + 87 + 165 + 136 + 172 + 172 + 215 + 215 + 173 + 178 + 172 + 172 + 209 + 172 + 214 + 208 + 173 + 214 + 208 + 172 + 208 + 172 + 172 + 215 + 172 + 172 + 166 + 172 + 214 + 208 + 215 + 215 + 208 + 179 + 209 + 214 + 209 + 172 + 135 + 86 + 86 + 93 + 80 + 86 + 86 + 49 + 123 + 49 + 43 + 122 + 93 + 86 + 79 + 93 + 123 + 86 + 86 + 92 + 166 + 128 + 173 + 171 + 166 + 172 + 165 + 172 + 165 + 129 + 165 + 172 + 208 + 166 + 172 + 165 + 208 + 172 + 208 + 208 + 172 + 208 + 166 + 171 + 166 + 207 + 172 + 166 + 171 + 166 + 122 + 129 + 165 + 129 + 123 + 122 + 116 + 49 + 79 + 79 + 80 + 92 + 123 + 129 + 129 + 122 + 172 + 172 + 129 + 79 + 80 + 49 + 43 + 80 + 50 + 87 + 86 + 50 + 52 + 51 + 51 + 51 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 43 + 43 + 44 + 43 + 43 + 80 + 50 + 43 + 43 + 44 + 86 + 50 + 86 + 129 + 130 + 135 + 167 + 136 + 172 + 136 + 172 + 173 + 172 + 179 + 172 + 172 + 172 + 137 + 166 + 136 + 171 + 130 + 137 + 130 + 172 + 101 + 130 + 99 + 123 + 93 + 87 + 51 + 86 + 122 + 129 + 130 + 129 + 171 + 130 + 129 + 129 + 86 + 86 + 128 + 129 + 130 + 172 + 208 + 179 + 209 + 214 + 215 + 172 + 215 + 209 + 178 + 172 + 172 + 166 + 172 + 208 + 214 + 173 + 208 + 172 + 214 + 173 + 208 + 172 + 201 + 172 + 215 + 173 + 214 + 215 + 208 + 179 + 209 + 214 + 173 + 135 + 122 + 86 + 86 + 50 + 86 + 122 + 44 + 86 + 86 + 86 + 43 + 86 + 87 + 122 + 93 + 122 + 50 + 43 + 122 + 129 + 123 + 171 + 172 + 172 + 172 + 165 + 172 + 129 + 159 + 171 + 165 + 166 + 171 + 172 + 209 + 207 + 130 + 165 + 171 + 166 + 172 + 207 + 209 + 208 + 172 + 165 + 165 + 166 + 171 + 129 + 165 + 129 + 159 + 122 + 87 + 86 + 79 + 79 + 79 + 43 + 123 + 128 + 87 + 122 + 129 + 171 + 129 + 123 + 43 + 79 + 43 + 86 + 44 + 86 + 86 + 87 + 51 + 56 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 51 + 51 + 52 + 36 + 43 + 7 + 43 + 43 + 44 + 79 + 50 + 44 + 50 + 86 + 87 + 86 + 129 + 136 + 130 + 136 + 171 + 167 + 172 + 178 + 173 + 172 + 179 + 173 + 173 + 172 + 172 + 172 + 172 + 130 + 171 + 136 + 173 + 136 + 136 + 130 + 136 + 87 + 130 + 86 + 50 + 86 + 87 + 86 + 129 + 166 + 135 + 172 + 172 + 129 + 129 + 129 + 128 + 129 + 129 + 173 + 178 + 209 + 214 + 173 + 215 + 215 + 215 + 179 + 208 + 214 + 172 + 209 + 172 + 208 + 172 + 172 + 172 + 172 + 215 + 172 + 165 + 172 + 172 + 208 + 173 + 214 + 215 + 208 + 215 + 209 + 178 + 215 + 172 + 166 + 93 + 122 + 86 + 86 + 86 + 50 + 85 + 129 + 86 + 44 + 86 + 86 + 85 + 86 + 129 + 129 + 86 + 43 + 79 + 86 + 129 + 166 + 172 + 172 + 172 + 165 + 172 + 122 + 129 + 166 + 165 + 129 + 171 + 202 + 214 + 166 + 172 + 208 + 165 + 172 + 165 + 172 + 208 + 165 + 172 + 166 + 171 + 165 + 129 + 208 + 123 + 129 + 165 + 122 + 86 + 116 + 86 + 43 + 86 + 122 + 86 + 123 + 128 + 130 + 129 + 165 + 129 + 122 + 50 + 79 + 44 + 85 + 44 + 122 + 93 + 51 + 51 + 93 + 51 + 51 + 87 + 50 + 51 + 51 + 86 + 51 + 51 + 86 + 7 + 36 + 7 + 37 + 7 + 43 + 44 + 85 + 44 + 43 + 87 + 50 + 128 + 124 + 135 + 130 + 136 + 129 + 172 + 136 + 173 + 215 + 172 + 179 + 172 + 172 + 173 + 172 + 172 + 173 + 172 + 172 + 179 + 173 + 142 + 173 + 136 + 130 + 129 + 94 + 86 + 51 + 86 + 80 + 86 + 129 + 172 + 172 + 172 + 179 + 166 + 171 + 130 + 129 + 129 + 171 + 172 + 172 + 172 + 209 + 178 + 215 + 209 + 178 + 215 + 209 + 178 + 208 + 173 + 208 + 178 + 166 + 208 + 172 + 214 + 209 + 172 + 172 + 165 + 172 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 172 + 215 + 172 + 129 + 129 + 86 + 87 + 86 + 91 + 123 + 43 + 129 + 86 + 43 + 80 + 86 + 50 + 122 + 92 + 123 + 93 + 86 + 79 + 86 + 80 + 135 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 123 + 165 + 165 + 129 + 171 + 166 + 172 + 208 + 165 + 172 + 166 + 207 + 130 + 171 + 202 + 171 + 129 + 165 + 165 + 130 + 171 + 159 + 129 + 123 + 164 + 86 + 87 + 116 + 86 + 122 + 86 + 122 + 93 + 122 + 165 + 136 + 165 + 129 + 122 + 44 + 85 + 80 + 85 + 87 + 86 + 93 + 87 + 51 + 86 + 57 + 51 + 87 + 51 + 51 + 86 + 87 + 51 + 87 + 51 + 43 + 7 + 36 + 7 + 43 + 37 + 7 + 50 + 44 + 43 + 86 + 50 + 86 + 123 + 93 + 166 + 135 + 130 + 136 + 172 + 215 + 172 + 215 + 173 + 179 + 172 + 172 + 179 + 172 + 172 + 179 + 215 + 215 + 215 + 179 + 131 + 100 + 165 + 100 + 131 + 86 + 86 + 44 + 86 + 44 + 128 + 130 + 171 + 130 + 172 + 136 + 165 + 130 + 171 + 129 + 172 + 172 + 172 + 172 + 208 + 179 + 215 + 172 + 215 + 172 + 215 + 208 + 179 + 208 + 172 + 166 + 172 + 214 + 209 + 178 + 208 + 172 + 166 + 172 + 171 + 173 + 208 + 215 + 208 + 215 + 208 + 179 + 172 + 215 + 171 + 129 + 87 + 85 + 86 + 87 + 129 + 129 + 86 + 80 + 86 + 43 + 43 + 50 + 86 + 123 + 128 + 93 + 129 + 86 + 79 + 43 + 43 + 129 + 166 + 171 + 166 + 172 + 165 + 129 + 165 + 129 + 159 + 129 + 165 + 129 + 165 + 165 + 135 + 202 + 172 + 165 + 172 + 165 + 172 + 208 + 165 + 123 + 129 + 165 + 165 + 130 + 171 + 123 + 128 + 86 + 123 + 122 + 122 + 87 + 165 + 123 + 92 + 123 + 129 + 164 + 130 + 129 + 128 + 87 + 85 + 80 + 86 + 87 + 122 + 87 + 50 + 128 + 51 + 87 + 57 + 87 + 51 + 93 + 87 + 51 + 87 + 93 + 87 + 93 + 43 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 44 + 43 + 14 + 80 + 86 + 93 + 93 + 130 + 130 + 130 + 171 + 172 + 179 + 173 + 215 + 173 + 178 + 173 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 129 + 130 + 172 + 129 + 129 + 87 + 43 + 44 + 86 + 86 + 129 + 136 + 172 + 166 + 214 + 172 + 215 + 172 + 179 + 215 + 208 + 173 + 214 + 209 + 215 + 215 + 208 + 214 + 173 + 214 + 209 + 172 + 172 + 214 + 166 + 172 + 214 + 172 + 209 + 172 + 172 + 165 + 172 + 166 + 171 + 215 + 172 + 215 + 209 + 215 + 208 + 178 + 209 + 135 + 123 + 86 + 86 + 93 + 122 + 129 + 129 + 93 + 80 + 49 + 43 + 79 + 50 + 80 + 86 + 129 + 171 + 129 + 86 + 43 + 43 + 79 + 44 + 171 + 166 + 171 + 166 + 171 + 166 + 129 + 129 + 122 + 130 + 165 + 165 + 166 + 171 + 129 + 166 + 171 + 165 + 165 + 130 + 207 + 172 + 202 + 135 + 166 + 122 + 129 + 166 + 165 + 128 + 87 + 122 + 122 + 87 + 128 + 123 + 165 + 129 + 129 + 129 + 129 + 129 + 129 + 165 + 86 + 44 + 86 + 86 + 86 + 123 + 86 + 86 + 87 + 57 + 87 + 93 + 87 + 93 + 93 + 87 + 93 + 87 + 130 + 86 + 94 + 93 + 79 + 43 + 43 + 7 + 37 + 43 + 7 + 43 + 44 + 43 + 50 + 86 + 44 + 129 + 87 + 130 + 135 + 167 + 172 + 173 + 178 + 215 + 172 + 215 + 179 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 86 + 122 + 130 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 166 + 172 + 172 + 178 + 172 + 215 + 208 + 172 + 215 + 214 + 209 + 178 + 208 + 215 + 209 + 215 + 172 + 215 + 172 + 208 + 172 + 209 + 171 + 172 + 172 + 209 + 172 + 208 + 214 + 166 + 172 + 172 + 172 + 172 + 172 + 208 + 215 + 208 + 215 + 215 + 172 + 172 + 129 + 129 + 86 + 86 + 87 + 128 + 129 + 129 + 87 + 128 + 80 + 43 + 79 + 86 + 85 + 87 + 129 + 172 + 159 + 128 + 50 + 79 + 37 + 43 + 128 + 129 + 166 + 172 + 135 + 166 + 135 + 159 + 93 + 122 + 129 + 166 + 135 + 166 + 172 + 171 + 166 + 165 + 172 + 129 + 166 + 135 + 166 + 171 + 129 + 160 + 129 + 129 + 129 + 165 + 129 + 86 + 122 + 93 + 122 + 129 + 129 + 123 + 128 + 87 + 129 + 129 + 171 + 123 + 92 + 80 + 86 + 86 + 86 + 93 + 86 + 87 + 86 + 86 + 93 + 87 + 129 + 93 + 130 + 129 + 129 + 93 + 129 + 129 + 93 + 130 + 79 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 8 + 43 + 50 + 86 + 87 + 93 + 123 + 136 + 130 + 172 + 172 + 173 + 179 + 179 + 214 + 209 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 7 + 43 + 87 + 165 + 172 + 172 + 86 + 43 + 49 + 87 + 122 + 136 + 165 + 178 + 173 + 172 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 179 + 209 + 215 + 214 + 208 + 209 + 178 + 172 + 166 + 172 + 208 + 178 + 209 + 172 + 172 + 172 + 208 + 172 + 166 + 171 + 172 + 209 + 214 + 215 + 209 + 214 + 172 + 172 + 129 + 87 + 85 + 87 + 128 + 130 + 129 + 135 + 166 + 122 + 86 + 86 + 79 + 86 + 43 + 122 + 129 + 172 + 129 + 172 + 80 + 42 + 37 + 43 + 43 + 129 + 165 + 172 + 165 + 129 + 172 + 166 + 128 + 129 + 166 + 165 + 171 + 130 + 129 + 208 + 136 + 166 + 171 + 166 + 129 + 129 + 165 + 130 + 128 + 123 + 129 + 171 + 129 + 165 + 87 + 79 + 128 + 87 + 129 + 122 + 129 + 129 + 123 + 93 + 171 + 129 + 130 + 128 + 86 + 80 + 86 + 86 + 93 + 86 + 86 + 87 + 92 + 123 + 129 + 130 + 129 + 136 + 130 + 130 + 135 + 130 + 130 + 136 + 129 + 129 + 44 + 85 + 80 + 50 + 43 + 43 + 44 + 36 + 44 + 50 + 50 + 50 + 87 + 129 + 130 + 131 + 171 + 137 + 171 + 173 + 172 + 215 + 179 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 43 + 79 + 50 + 123 + 178 + 172 + 129 + 86 + 80 + 43 + 86 + 129 + 136 + 208 + 172 + 172 + 179 + 208 + 179 + 208 + 208 + 179 + 209 + 214 + 214 + 209 + 178 + 208 + 173 + 208 + 214 + 166 + 172 + 172 + 208 + 179 + 208 + 208 + 172 + 172 + 172 + 172 + 208 + 130 + 171 + 209 + 208 + 179 + 208 + 215 + 172 + 172 + 172 + 86 + 86 + 80 + 135 + 129 + 166 + 171 + 136 + 122 + 86 + 86 + 79 + 43 + 86 + 86 + 123 + 171 + 166 + 172 + 85 + 37 + 43 + 0 + 80 + 129 + 129 + 129 + 171 + 130 + 129 + 164 + 130 + 123 + 128 + 172 + 172 + 166 + 129 + 165 + 129 + 172 + 129 + 166 + 171 + 130 + 171 + 130 + 165 + 128 + 123 + 129 + 129 + 129 + 80 + 86 + 128 + 86 + 165 + 129 + 129 + 129 + 165 + 129 + 171 + 129 + 87 + 86 + 49 + 80 + 86 + 93 + 87 + 122 + 93 + 86 + 87 + 129 + 129 + 136 + 129 + 136 + 129 + 130 + 172 + 129 + 130 + 136 + 129 + 129 + 86 + 44 + 86 + 86 + 44 + 79 + 44 + 49 + 8 + 43 + 49 + 86 + 94 + 129 + 130 + 129 + 172 + 172 + 130 + 171 + 136 + 178 + 209 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 86 + 43 + 43 + 43 + 86 + 166 + 178 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 165 + 130 + 178 + 172 + 209 + 171 + 208 + 173 + 208 + 178 + 209 + 208 + 179 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 209 + 178 + 209 + 172 + 171 + 172 + 166 + 172 + 172 + 129 + 165 + 172 + 215 + 209 + 214 + 173 + 214 + 173 + 165 + 93 + 79 + 50 + 129 + 166 + 172 + 172 + 171 + 87 + 86 + 122 + 43 + 79 + 86 + 86 + 129 + 165 + 172 + 166 + 92 + 80 + 42 + 37 + 43 + 86 + 129 + 165 + 123 + 129 + 128 + 87 + 171 + 208 + 129 + 123 + 172 + 172 + 129 + 165 + 93 + 165 + 172 + 166 + 171 + 166 + 135 + 166 + 172 + 165 + 123 + 92 + 123 + 128 + 123 + 86 + 129 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 135 + 129 + 86 + 86 + 86 + 87 + 122 + 93 + 129 + 86 + 87 + 92 + 130 + 129 + 130 + 135 + 130 + 130 + 129 + 166 + 135 + 129 + 130 + 129 + 130 + 129 + 86 + 87 + 92 + 80 + 49 + 80 + 43 + 44 + 49 + 44 + 50 + 87 + 92 + 125 + 99 + 129 + 166 + 136 + 130 + 135 + 130 + 171 + 142 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 43 + 43 + 43 + 43 + 50 + 122 + 172 + 178 + 172 + 130 + 85 + 80 + 49 + 44 + 86 + 129 + 172 + 165 + 136 + 172 + 165 + 172 + 209 + 178 + 208 + 208 + 215 + 172 + 208 + 179 + 171 + 202 + 172 + 172 + 215 + 209 + 172 + 208 + 178 + 208 + 172 + 166 + 129 + 165 + 93 + 171 + 209 + 172 + 214 + 209 + 215 + 172 + 172 + 165 + 92 + 44 + 85 + 130 + 135 + 165 + 136 + 166 + 128 + 87 + 122 + 86 + 79 + 49 + 87 + 165 + 129 + 171 + 165 + 129 + 86 + 79 + 1 + 43 + 43 + 122 + 129 + 86 + 86 + 123 + 128 + 123 + 135 + 166 + 171 + 130 + 165 + 171 + 123 + 135 + 166 + 171 + 130 + 165 + 172 + 129 + 172 + 166 + 170 + 123 + 129 + 86 + 122 + 86 + 86 + 129 + 123 + 128 + 129 + 166 + 129 + 171 + 130 + 135 + 123 + 85 + 51 + 86 + 122 + 129 + 87 + 129 + 129 + 86 + 93 + 93 + 129 + 129 + 130 + 129 + 172 + 129 + 93 + 130 + 172 + 93 + 130 + 129 + 136 + 122 + 129 + 86 + 123 + 49 + 80 + 50 + 43 + 44 + 50 + 44 + 86 + 50 + 93 + 123 + 129 + 129 + 129 + 129 + 93 + 136 + 165 + 136 + 172 + 172 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 43 + 43 + 43 + 87 + 172 + 172 + 178 + 172 + 166 + 86 + 43 + 0 + 80 + 92 + 166 + 135 + 129 + 172 + 166 + 214 + 172 + 172 + 209 + 215 + 172 + 208 + 172 + 172 + 209 + 172 + 172 + 208 + 178 + 208 + 173 + 171 + 173 + 208 + 171 + 166 + 172 + 129 + 129 + 165 + 172 + 166 + 214 + 172 + 173 + 214 + 172 + 129 + 44 + 85 + 87 + 129 + 172 + 171 + 129 + 129 + 123 + 128 + 87 + 85 + 86 + 79 + 87 + 165 + 86 + 172 + 129 + 129 + 122 + 122 + 7 + 37 + 42 + 80 + 86 + 86 + 122 + 86 + 122 + 129 + 129 + 172 + 165 + 166 + 171 + 130 + 129 + 165 + 129 + 165 + 129 + 129 + 172 + 172 + 202 + 135 + 172 + 123 + 128 + 123 + 92 + 129 + 165 + 129 + 165 + 129 + 166 + 171 + 178 + 166 + 135 + 123 + 86 + 86 + 50 + 122 + 92 + 123 + 93 + 128 + 87 + 128 + 87 + 129 + 130 + 93 + 136 + 165 + 136 + 130 + 129 + 172 + 130 + 136 + 135 + 166 + 136 + 86 + 129 + 123 + 86 + 86 + 86 + 43 + 50 + 43 + 44 + 49 + 44 + 51 + 86 + 86 + 87 + 92 + 129 + 93 + 86 + 134 + 93 + 129 + 136 + 171 + 130 + 141 + 171 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 44 + 85 + 43 + 43 + 86 + 129 + 173 + 208 + 171 + 136 + 123 + 85 + 50 + 44 + 86 + 128 + 130 + 129 + 166 + 172 + 208 + 171 + 172 + 172 + 209 + 172 + 208 + 179 + 208 + 172 + 208 + 165 + 178 + 173 + 208 + 172 + 172 + 202 + 172 + 171 + 172 + 130 + 165 + 129 + 129 + 165 + 172 + 136 + 201 + 173 + 171 + 136 + 123 + 49 + 86 + 86 + 166 + 172 + 135 + 123 + 129 + 87 + 128 + 122 + 44 + 86 + 79 + 86 + 122 + 92 + 129 + 166 + 128 + 129 + 123 + 43 + 42 + 37 + 86 + 43 + 86 + 79 + 43 + 85 + 123 + 123 + 128 + 130 + 171 + 129 + 129 + 165 + 130 + 171 + 166 + 129 + 129 + 129 + 165 + 172 + 166 + 171 + 129 + 130 + 128 + 165 + 123 + 129 + 129 + 129 + 165 + 130 + 172 + 171 + 172 + 129 + 86 + 123 + 86 + 91 + 87 + 129 + 129 + 92 + 87 + 86 + 93 + 87 + 128 + 129 + 130 + 129 + 172 + 130 + 136 + 172 + 129 + 173 + 135 + 172 + 166 + 136 + 128 + 87 + 129 + 86 + 86 + 86 + 44 + 44 + 49 + 44 + 44 + 50 + 49 + 80 + 50 + 87 + 85 + 93 + 86 + 91 + 87 + 92 + 128 + 129 + 135 + 129 + 134 + 135 + 134 + 171 + 178 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 44 + 85 + 44 + 43 + 92 + 166 + 172 + 172 + 172 + 129 + 92 + 86 + 80 + 49 + 86 + 129 + 129 + 165 + 172 + 166 + 172 + 135 + 166 + 172 + 171 + 208 + 172 + 209 + 172 + 172 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 165 + 172 + 172 + 166 + 129 + 129 + 129 + 165 + 129 + 129 + 165 + 172 + 129 + 129 + 86 + 43 + 92 + 123 + 129 + 171 + 130 + 122 + 86 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 122 + 86 + 129 + 165 + 172 + 123 + 129 + 85 + 43 + 1 + 79 + 43 + 79 + 86 + 43 + 80 + 128 + 129 + 129 + 129 + 129 + 165 + 129 + 166 + 129 + 172 + 165 + 165 + 129 + 130 + 171 + 129 + 166 + 172 + 165 + 171 + 129 + 166 + 172 + 129 + 165 + 129 + 129 + 165 + 172 + 172 + 129 + 129 + 86 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 44 + 86 + 86 + 87 + 93 + 171 + 130 + 136 + 172 + 172 + 137 + 172 + 172 + 130 + 173 + 171 + 136 + 129 + 129 + 86 + 123 + 86 + 50 + 86 + 44 + 50 + 43 + 44 + 50 + 49 + 79 + 50 + 49 + 80 + 86 + 50 + 86 + 91 + 86 + 92 + 91 + 92 + 91 + 128 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 129 + 49 + 80 + 50 + 85 + 44 + 79 + 86 + 129 + 172 + 172 + 172 + 129 + 129 + 86 + 50 + 79 + 86 + 93 + 123 + 128 + 166 + 172 + 172 + 129 + 165 + 129 + 136 + 165 + 208 + 172 + 166 + 136 + 171 + 209 + 172 + 208 + 172 + 208 + 172 + 165 + 172 + 166 + 171 + 130 + 129 + 128 + 166 + 129 + 122 + 129 + 136 + 122 + 129 + 86 + 7 + 86 + 123 + 128 + 172 + 130 + 85 + 50 + 79 + 86 + 79 + 44 + 122 + 86 + 86 + 86 + 85 + 80 + 172 + 172 + 165 + 129 + 86 + 79 + 37 + 43 + 42 + 43 + 80 + 85 + 87 + 122 + 129 + 129 + 165 + 129 + 172 + 129 + 172 + 129 + 165 + 136 + 172 + 166 + 171 + 208 + 172 + 166 + 135 + 172 + 166 + 165 + 135 + 166 + 208 + 129 + 171 + 130 + 165 + 172 + 172 + 129 + 86 + 86 + 123 + 92 + 130 + 129 + 129 + 129 + 129 + 86 + 44 + 49 + 86 + 87 + 129 + 130 + 172 + 136 + 173 + 173 + 172 + 178 + 172 + 173 + 172 + 173 + 173 + 165 + 93 + 122 + 87 + 86 + 86 + 86 + 50 + 80 + 7 + 50 + 44 + 50 + 80 + 49 + 50 + 85 + 50 + 86 + 91 + 49 + 92 + 86 + 92 + 91 + 128 + 91 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 172 + 79 + 86 + 50 + 86 + 86 + 44 + 85 + 123 + 136 + 172 + 171 + 166 + 129 + 92 + 87 + 86 + 86 + 122 + 93 + 165 + 172 + 172 + 165 + 130 + 128 + 166 + 171 + 166 + 136 + 171 + 166 + 171 + 166 + 178 + 209 + 129 + 172 + 172 + 172 + 208 + 165 + 172 + 136 + 165 + 129 + 165 + 128 + 123 + 86 + 129 + 128 + 87 + 86 + 86 + 43 + 86 + 129 + 130 + 129 + 171 + 87 + 86 + 86 + 79 + 86 + 36 + 86 + 86 + 86 + 122 + 86 + 80 + 171 + 172 + 129 + 129 + 123 + 86 + 43 + 86 + 43 + 43 + 79 + 79 + 87 + 122 + 86 + 129 + 128 + 166 + 172 + 165 + 135 + 166 + 129 + 171 + 208 + 166 + 172 + 172 + 171 + 172 + 166 + 172 + 172 + 172 + 165 + 129 + 172 + 129 + 165 + 172 + 171 + 130 + 129 + 122 + 92 + 123 + 86 + 129 + 129 + 129 + 136 + 129 + 129 + 86 + 92 + 87 + 87 + 129 + 129 + 172 + 136 + 172 + 173 + 172 + 173 + 178 + 173 + 173 + 178 + 173 + 172 + 129 + 129 + 123 + 86 + 87 + 86 + 86 + 86 + 44 + 49 + 8 + 43 + 50 + 86 + 86 + 49 + 86 + 86 + 56 + 85 + 92 + 85 + 55 + 86 + 91 + 127 + 98 + 134 + 97 + 171 + 177 + 214 + 215 + 215 + 215 + 172 + 86 + 86 + 50 + 79 + 87 + 85 + 86 + 87 + 129 + 172 + 172 + 172 + 171 + 87 + 129 + 92 + 87 + 128 + 123 + 172 + 171 + 172 + 165 + 129 + 130 + 165 + 172 + 172 + 172 + 201 + 172 + 136 + 165 + 172 + 208 + 166 + 172 + 135 + 166 + 214 + 166 + 172 + 165 + 129 + 129 + 171 + 87 + 85 + 80 + 93 + 122 + 86 + 86 + 86 + 43 + 129 + 129 + 165 + 130 + 135 + 123 + 86 + 122 + 86 + 86 + 79 + 86 + 86 + 122 + 86 + 129 + 80 + 129 + 135 + 165 + 129 + 165 + 87 + 86 + 85 + 80 + 43 + 86 + 79 + 86 + 86 + 129 + 122 + 129 + 129 + 166 + 171 + 130 + 171 + 166 + 171 + 172 + 166 + 129 + 172 + 207 + 172 + 166 + 172 + 208 + 172 + 171 + 172 + 172 + 165 + 166 + 171 + 130 + 129 + 122 + 93 + 86 + 129 + 86 + 129 + 129 + 135 + 130 + 171 + 129 + 130 + 93 + 130 + 130 + 129 + 172 + 172 + 137 + 172 + 172 + 173 + 215 + 173 + 208 + 179 + 173 + 208 + 179 + 129 + 123 + 92 + 87 + 122 + 86 + 86 + 44 + 49 + 44 + 7 + 44 + 50 + 92 + 50 + 85 + 50 + 85 + 55 + 85 + 92 + 49 + 85 + 55 + 92 + 127 + 98 + 133 + 141 + 140 + 178 + 214 + 215 + 214 + 215 + 172 + 129 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 122 + 136 + 172 + 172 + 165 + 130 + 129 + 128 + 87 + 128 + 129 + 172 + 165 + 130 + 171 + 172 + 166 + 165 + 172 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 130 + 165 + 135 + 123 + 50 + 79 + 86 + 50 + 80 + 85 + 86 + 86 + 123 + 128 + 129 + 129 + 165 + 129 + 86 + 129 + 122 + 129 + 80 + 86 + 85 + 86 + 86 + 123 + 129 + 79 + 87 + 170 + 129 + 166 + 129 + 165 + 129 + 86 + 122 + 86 + 86 + 86 + 79 + 129 + 122 + 93 + 129 + 159 + 135 + 166 + 172 + 165 + 129 + 172 + 208 + 172 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 122 + 172 + 172 + 208 + 129 + 123 + 86 + 92 + 87 + 129 + 93 + 165 + 129 + 136 + 172 + 172 + 172 + 137 + 172 + 136 + 166 + 136 + 173 + 136 + 173 + 178 + 173 + 179 + 215 + 173 + 215 + 173 + 173 + 214 + 173 + 129 + 129 + 123 + 122 + 86 + 51 + 85 + 44 + 44 + 43 + 7 + 50 + 49 + 86 + 92 + 50 + 85 + 50 + 85 + 56 + 85 + 49 + 92 + 49 + 91 + 134 + 134 + 140 + 140 + 135 + 177 + 214 + 215 + 215 + 215 + 215 + 172 + 86 + 129 + 86 + 86 + 50 + 86 + 79 + 87 + 129 + 171 + 172 + 129 + 129 + 172 + 129 + 129 + 129 + 129 + 130 + 165 + 135 + 166 + 172 + 165 + 129 + 172 + 166 + 172 + 172 + 207 + 166 + 135 + 208 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 123 + 92 + 80 + 43 + 49 + 44 + 79 + 86 + 86 + 129 + 122 + 172 + 123 + 128 + 172 + 129 + 86 + 123 + 122 + 92 + 80 + 86 + 43 + 79 + 86 + 122 + 93 + 79 + 86 + 129 + 159 + 135 + 166 + 129 + 128 + 129 + 123 + 85 + 87 + 122 + 85 + 87 + 122 + 86 + 129 + 165 + 129 + 172 + 172 + 165 + 129 + 208 + 172 + 172 + 172 + 172 + 208 + 166 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 172 + 172 + 129 + 165 + 87 + 128 + 129 + 94 + 129 + 165 + 137 + 172 + 179 + 214 + 173 + 179 + 173 + 215 + 179 + 173 + 173 + 143 + 172 + 173 + 209 + 179 + 173 + 215 + 173 + 215 + 173 + 179 + 172 + 209 + 93 + 129 + 122 + 123 + 86 + 50 + 80 + 49 + 7 + 43 + 8 + 44 + 49 + 86 + 92 + 49 + 86 + 49 + 50 + 49 + 85 + 49 + 55 + 85 + 129 + 134 + 135 + 141 + 141 + 177 + 177 + 214 + 215 + 215 + 215 + 215 + 215 + 129 + 86 + 92 + 86 + 86 + 86 + 44 + 122 + 86 + 93 + 172 + 172 + 172 + 129 + 166 + 129 + 135 + 129 + 129 + 165 + 130 + 165 + 172 + 129 + 172 + 165 + 172 + 171 + 172 + 166 + 171 + 166 + 172 + 171 + 172 + 166 + 129 + 165 + 136 + 172 + 123 + 129 + 129 + 92 + 86 + 86 + 80 + 49 + 43 + 44 + 122 + 129 + 129 + 129 + 164 + 130 + 86 + 129 + 122 + 86 + 123 + 86 + 122 + 86 + 43 + 43 + 43 + 86 + 165 + 86 + 79 + 86 + 86 + 123 + 92 + 165 + 129 + 165 + 129 + 129 + 80 + 86 + 122 + 86 + 86 + 122 + 93 + 165 + 171 + 166 + 172 + 129 + 171 + 166 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 173 + 208 + 214 + 173 + 172 + 171 + 123 + 129 + 122 + 93 + 129 + 130 + 135 + 173 + 215 + 173 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 173 + 179 + 173 + 179 + 209 + 179 + 215 + 173 + 173 + 215 + 173 + 173 + 179 + 86 + 123 + 86 + 122 + 86 + 50 + 86 + 43 + 7 + 37 + 8 + 49 + 87 + 50 + 92 + 86 + 50 + 50 + 85 + 49 + 49 + 85 + 56 + 128 + 128 + 136 + 135 + 177 + 141 + 178 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 93 + 123 + 128 + 87 + 86 + 86 + 85 + 86 + 87 + 172 + 172 + 172 + 171 + 130 + 165 + 93 + 129 + 165 + 129 + 129 + 172 + 165 + 136 + 202 + 171 + 172 + 166 + 135 + 172 + 166 + 171 + 166 + 129 + 172 + 172 + 165 + 165 + 130 + 171 + 130 + 128 + 130 + 128 + 87 + 86 + 86 + 49 + 80 + 86 + 129 + 129 + 123 + 128 + 165 + 130 + 86 + 122 + 86 + 85 + 123 + 86 + 86 + 86 + 86 + 79 + 37 + 86 + 128 + 123 + 49 + 79 + 86 + 123 + 86 + 93 + 165 + 122 + 129 + 129 + 86 + 79 + 87 + 122 + 92 + 165 + 123 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 208 + 173 + 214 + 172 + 208 + 172 + 173 + 208 + 214 + 215 + 166 + 172 + 171 + 129 + 129 + 123 + 129 + 122 + 93 + 136 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 179 + 173 + 215 + 179 + 173 + 179 + 209 + 179 + 172 + 173 + 86 + 86 + 79 + 51 + 122 + 87 + 49 + 44 + 43 + 0 + 8 + 50 + 85 + 87 + 49 + 87 + 49 + 50 + 91 + 49 + 49 + 85 + 92 + 129 + 136 + 135 + 177 + 136 + 178 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 171 + 129 + 87 + 129 + 86 + 86 + 86 + 86 + 129 + 130 + 172 + 172 + 171 + 130 + 128 + 93 + 165 + 165 + 136 + 165 + 129 + 172 + 207 + 173 + 171 + 166 + 135 + 172 + 166 + 172 + 165 + 129 + 171 + 130 + 172 + 165 + 129 + 166 + 135 + 130 + 128 + 86 + 93 + 86 + 86 + 80 + 49 + 123 + 129 + 129 + 165 + 135 + 166 + 122 + 93 + 122 + 43 + 86 + 86 + 122 + 129 + 79 + 86 + 87 + 42 + 43 + 80 + 86 + 86 + 79 + 86 + 165 + 86 + 129 + 166 + 92 + 122 + 123 + 86 + 85 + 87 + 122 + 129 + 129 + 165 + 136 + 165 + 172 + 172 + 208 + 172 + 172 + 172 + 165 + 172 + 215 + 172 + 208 + 165 + 172 + 130 + 171 + 172 + 166 + 135 + 130 + 129 + 129 + 123 + 128 + 129 + 130 + 171 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 173 + 179 + 173 + 172 + 179 + 173 + 79 + 43 + 44 + 79 + 93 + 122 + 50 + 80 + 7 + 43 + 7 + 50 + 51 + 86 + 87 + 50 + 85 + 92 + 50 + 86 + 92 + 49 + 129 + 134 + 136 + 136 + 172 + 141 + 142 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 92 + 123 + 86 + 128 + 87 + 129 + 129 + 215 + 165 + 136 + 122 + 93 + 165 + 172 + 166 + 171 + 129 + 166 + 135 + 172 + 166 + 171 + 208 + 130 + 165 + 172 + 165 + 129 + 166 + 171 + 136 + 164 + 129 + 166 + 135 + 130 + 122 + 92 + 86 + 86 + 86 + 44 + 86 + 122 + 136 + 165 + 129 + 207 + 130 + 165 + 92 + 123 + 43 + 79 + 86 + 86 + 165 + 50 + 122 + 86 + 79 + 43 + 86 + 86 + 43 + 79 + 86 + 166 + 129 + 129 + 129 + 165 + 122 + 93 + 79 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 129 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 166 + 172 + 172 + 172 + 165 + 135 + 129 + 165 + 130 + 93 + 165 + 129 + 129 + 87 + 129 + 129 + 129 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 179 + 173 + 179 + 173 + 173 + 179 + 173 + 43 + 42 + 38 + 49 + 122 + 87 + 86 + 86 + 50 + 2 + 49 + 43 + 50 + 86 + 93 + 50 + 86 + 50 + 92 + 86 + 92 + 86 + 129 + 135 + 130 + 177 + 136 + 135 + 142 + 141 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 92 + 129 + 123 + 92 + 87 + 128 + 129 + 172 + 172 + 172 + 129 + 172 + 166 + 171 + 172 + 166 + 129 + 165 + 136 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 172 + 129 + 165 + 130 + 165 + 135 + 165 + 129 + 123 + 93 + 86 + 79 + 86 + 86 + 43 + 86 + 86 + 87 + 129 + 165 + 129 + 172 + 171 + 166 + 86 + 122 + 43 + 43 + 86 + 122 + 129 + 80 + 49 + 86 + 80 + 43 + 79 + 86 + 79 + 43 + 79 + 166 + 135 + 123 + 171 + 129 + 123 + 129 + 86 + 129 + 165 + 129 + 129 + 129 + 165 + 129 + 165 + 172 + 166 + 178 + 202 + 172 + 171 + 172 + 172 + 172 + 202 + 171 + 130 + 165 + 129 + 93 + 128 + 87 + 128 + 93 + 122 + 93 + 129 + 129 + 129 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 215 + 173 + 179 + 179 + 173 + 179 + 173 + 179 + 173 + 137 + 173 + 42 + 37 + 43 + 49 + 80 + 93 + 86 + 86 + 44 + 50 + 43 + 7 + 87 + 86 + 51 + 86 + 50 + 87 + 92 + 86 + 93 + 92 + 92 + 130 + 171 + 136 + 135 + 141 + 136 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 129 + 86 + 129 + 86 + 93 + 129 + 165 + 172 + 171 + 173 + 171 + 172 + 129 + 166 + 171 + 166 + 135 + 166 + 172 + 172 + 172 + 201 + 172 + 166 + 171 + 129 + 129 + 129 + 166 + 165 + 93 + 129 + 128 + 123 + 93 + 79 + 50 + 43 + 86 + 44 + 85 + 129 + 123 + 129 + 129 + 171 + 166 + 128 + 122 + 87 + 85 + 43 + 43 + 122 + 123 + 49 + 37 + 79 + 49 + 44 + 79 + 43 + 86 + 79 + 44 + 128 + 129 + 123 + 135 + 123 + 122 + 129 + 129 + 128 + 130 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 123 + 130 + 128 + 129 + 87 + 92 + 129 + 86 + 129 + 93 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 215 + 137 + 179 + 173 + 173 + 136 + 179 + 173 + 137 + 137 + 79 + 7 + 37 + 79 + 50 + 86 + 86 + 87 + 44 + 49 + 44 + 7 + 50 + 86 + 93 + 86 + 50 + 86 + 87 + 55 + 87 + 128 + 100 + 129 + 172 + 135 + 177 + 135 + 135 + 142 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 128 + 129 + 123 + 93 + 122 + 93 + 165 + 136 + 165 + 172 + 136 + 165 + 129 + 165 + 130 + 171 + 166 + 172 + 172 + 171 + 208 + 172 + 166 + 135 + 166 + 171 + 130 + 122 + 172 + 165 + 129 + 129 + 129 + 129 + 129 + 80 + 50 + 85 + 44 + 79 + 50 + 129 + 129 + 166 + 128 + 129 + 129 + 129 + 80 + 122 + 86 + 43 + 43 + 86 + 122 + 43 + 43 + 1 + 79 + 43 + 79 + 43 + 86 + 79 + 44 + 86 + 122 + 128 + 129 + 86 + 123 + 129 + 165 + 129 + 129 + 129 + 123 + 92 + 165 + 123 + 171 + 172 + 166 + 172 + 171 + 172 + 208 + 130 + 171 + 166 + 135 + 166 + 129 + 129 + 129 + 92 + 123 + 92 + 130 + 129 + 93 + 135 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 173 + 173 + 179 + 137 + 172 + 173 + 137 + 136 + 137 + 136 + 137 + 79 + 36 + 7 + 43 + 79 + 44 + 92 + 81 + 49 + 44 + 50 + 44 + 86 + 87 + 51 + 86 + 50 + 92 + 87 + 56 + 122 + 93 + 134 + 136 + 171 + 136 + 177 + 135 + 99 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 135 + 166 + 129 + 93 + 129 + 122 + 129 + 129 + 129 + 129 + 136 + 172 + 166 + 171 + 172 + 165 + 130 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 165 + 136 + 165 + 129 + 166 + 92 + 129 + 123 + 92 + 85 + 80 + 50 + 86 + 79 + 87 + 129 + 170 + 123 + 129 + 129 + 129 + 122 + 80 + 49 + 79 + 44 + 85 + 79 + 43 + 43 + 37 + 42 + 44 + 43 + 42 + 80 + 79 + 50 + 79 + 86 + 80 + 86 + 122 + 93 + 165 + 135 + 123 + 165 + 86 + 122 + 129 + 129 + 129 + 166 + 171 + 172 + 165 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 171 + 123 + 129 + 129 + 86 + 93 + 86 + 165 + 135 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 215 + 173 + 173 + 179 + 172 + 173 + 143 + 130 + 173 + 136 + 137 + 136 + 130 + 100 + 79 + 43 + 1 + 43 + 80 + 49 + 87 + 86 + 44 + 50 + 43 + 50 + 51 + 86 + 87 + 50 + 86 + 87 + 56 + 122 + 93 + 93 + 129 + 172 + 135 + 172 + 135 + 141 + 135 + 135 + 178 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 166 + 129 + 93 + 128 + 123 + 93 + 122 + 93 + 165 + 172 + 172 + 172 + 208 + 172 + 129 + 172 + 171 + 172 + 208 + 173 + 208 + 172 + 208 + 136 + 165 + 172 + 129 + 172 + 165 + 172 + 129 + 171 + 87 + 128 + 130 + 122 + 86 + 50 + 86 + 86 + 43 + 129 + 86 + 165 + 87 + 207 + 136 + 122 + 86 + 86 + 79 + 44 + 79 + 49 + 79 + 43 + 43 + 37 + 43 + 79 + 43 + 1 + 85 + 43 + 86 + 80 + 43 + 79 + 86 + 86 + 129 + 165 + 129 + 129 + 123 + 92 + 123 + 128 + 129 + 165 + 166 + 172 + 172 + 165 + 172 + 129 + 172 + 172 + 166 + 171 + 129 + 129 + 129 + 129 + 123 + 86 + 92 + 136 + 129 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 173 + 173 + 179 + 173 + 137 + 178 + 131 + 137 + 136 + 136 + 94 + 136 + 130 + 100 + 80 + 49 + 38 + 42 + 44 + 43 + 87 + 49 + 80 + 44 + 14 + 80 + 50 + 94 + 87 + 86 + 93 + 87 + 86 + 51 + 87 + 135 + 129 + 172 + 172 + 172 + 135 + 130 + 134 + 172 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 164 + 129 + 123 + 92 + 123 + 128 + 88 + 129 + 165 + 172 + 209 + 172 + 171 + 166 + 172 + 172 + 208 + 173 + 208 + 172 + 172 + 172 + 171 + 166 + 135 + 173 + 208 + 172 + 171 + 130 + 129 + 172 + 129 + 129 + 129 + 92 + 86 + 86 + 44 + 86 + 86 + 129 + 122 + 130 + 129 + 172 + 129 + 86 + 43 + 86 + 79 + 7 + 37 + 43 + 43 + 36 + 7 + 43 + 79 + 43 + 1 + 42 + 43 + 43 + 37 + 43 + 43 + 86 + 123 + 129 + 129 + 129 + 165 + 92 + 123 + 86 + 122 + 130 + 129 + 165 + 208 + 136 + 208 + 129 + 129 + 172 + 166 + 129 + 135 + 123 + 129 + 92 + 123 + 86 + 129 + 130 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 209 + 179 + 173 + 179 + 173 + 137 + 178 + 137 + 173 + 130 + 136 + 136 + 130 + 101 + 136 + 130 + 94 + 86 + 85 + 1 + 43 + 43 + 86 + 86 + 44 + 44 + 43 + 51 + 44 + 93 + 88 + 123 + 93 + 93 + 88 + 87 + 87 + 87 + 94 + 135 + 166 + 172 + 172 + 172 + 165 + 136 + 171 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 129 + 122 + 93 + 123 + 129 + 124 + 129 + 171 + 166 + 173 + 208 + 171 + 173 + 208 + 172 + 166 + 171 + 172 + 166 + 178 + 173 + 165 + 172 + 214 + 172 + 172 + 166 + 171 + 136 + 165 + 130 + 135 + 123 + 129 + 86 + 128 + 44 + 86 + 92 + 122 + 130 + 171 + 129 + 172 + 123 + 86 + 49 + 80 + 43 + 43 + 43 + 0 + 44 + 43 + 36 + 44 + 85 + 43 + 1 + 36 + 43 + 43 + 43 + 44 + 43 + 43 + 129 + 129 + 129 + 166 + 129 + 165 + 129 + 87 + 122 + 123 + 129 + 171 + 167 + 172 + 172 + 166 + 129 + 136 + 165 + 129 + 129 + 123 + 128 + 93 + 123 + 171 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 137 + 173 + 173 + 143 + 137 + 173 + 136 + 131 + 137 + 136 + 94 + 137 + 136 + 94 + 94 + 128 + 80 + 7 + 43 + 80 + 86 + 50 + 44 + 7 + 44 + 44 + 87 + 87 + 94 + 129 + 124 + 94 + 87 + 88 + 92 + 124 + 130 + 136 + 131 + 172 + 166 + 172 + 172 + 166 + 171 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 130 + 129 + 123 + 129 + 87 + 129 + 123 + 129 + 166 + 172 + 172 + 209 + 172 + 165 + 173 + 165 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 166 + 171 + 172 + 136 + 165 + 172 + 135 + 130 + 122 + 92 + 87 + 85 + 123 + 92 + 87 + 171 + 130 + 171 + 130 + 165 + 93 + 43 + 79 + 44 + 43 + 42 + 1 + 43 + 79 + 7 + 80 + 44 + 43 + 0 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 123 + 123 + 129 + 130 + 135 + 123 + 123 + 92 + 159 + 129 + 123 + 136 + 165 + 165 + 172 + 172 + 166 + 135 + 166 + 135 + 129 + 123 + 129 + 129 + 172 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 173 + 137 + 173 + 137 + 173 + 136 + 136 + 131 + 136 + 137 + 94 + 136 + 130 + 94 + 99 + 129 + 80 + 7 + 43 + 79 + 51 + 79 + 50 + 8 + 44 + 87 + 87 + 87 + 130 + 95 + 130 + 88 + 129 + 88 + 130 + 88 + 130 + 130 + 131 + 173 + 172 + 131 + 172 + 166 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 93 + 123 + 129 + 87 + 165 + 173 + 136 + 208 + 209 + 173 + 208 + 173 + 214 + 173 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 171 + 172 + 172 + 129 + 135 + 122 + 87 + 79 + 93 + 122 + 129 + 136 + 166 + 135 + 129 + 166 + 92 + 43 + 44 + 79 + 50 + 36 + 7 + 37 + 43 + 43 + 44 + 85 + 38 + 6 + 43 + 87 + 80 + 43 + 36 + 7 + 37 + 86 + 129 + 123 + 135 + 130 + 122 + 123 + 86 + 129 + 123 + 136 + 165 + 130 + 164 + 166 + 136 + 171 + 130 + 165 + 136 + 165 + 136 + 171 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 173 + 179 + 137 + 173 + 137 + 173 + 137 + 136 + 131 + 136 + 130 + 100 + 136 + 131 + 94 + 94 + 100 + 122 + 43 + 43 + 37 + 43 + 44 + 43 + 44 + 50 + 80 + 51 + 88 + 129 + 94 + 124 + 94 + 124 + 94 + 124 + 95 + 124 + 130 + 131 + 136 + 167 + 131 + 173 + 166 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 130 + 124 + 129 + 129 + 124 + 129 + 129 + 172 + 172 + 209 + 214 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 172 + 178 + 172 + 172 + 166 + 171 + 172 + 172 + 172 + 178 + 166 + 135 + 130 + 122 + 86 + 43 + 93 + 128 + 123 + 172 + 135 + 166 + 135 + 129 + 86 + 50 + 79 + 86 + 50 + 79 + 1 + 43 + 37 + 43 + 43 + 43 + 44 + 43 + 1 + 85 + 86 + 1 + 43 + 44 + 37 + 49 + 87 + 129 + 166 + 135 + 130 + 122 + 87 + 86 + 122 + 172 + 165 + 130 + 135 + 166 + 172 + 172 + 171 + 172 + 208 + 178 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 173 + 179 + 137 + 173 + 137 + 137 + 130 + 137 + 94 + 137 + 94 + 136 + 95 + 94 + 130 + 94 + 50 + 43 + 43 + 36 + 43 + 37 + 14 + 80 + 50 + 87 + 87 + 88 + 88 + 94 + 124 + 94 + 124 + 88 + 94 + 124 + 94 + 131 + 124 + 131 + 131 + 173 + 167 + 131 + 173 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 165 + 87 + 136 + 130 + 165 + 87 + 129 + 172 + 166 + 136 + 166 + 172 + 136 + 165 + 129 + 172 + 171 + 173 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 166 + 171 + 93 + 80 + 6 + 86 + 129 + 129 + 166 + 135 + 166 + 129 + 129 + 86 + 49 + 80 + 86 + 86 + 43 + 44 + 36 + 7 + 43 + 37 + 43 + 43 + 44 + 43 + 86 + 44 + 79 + 43 + 43 + 43 + 44 + 86 + 135 + 166 + 165 + 130 + 129 + 87 + 86 + 92 + 123 + 172 + 167 + 172 + 215 + 215 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 137 + 179 + 137 + 137 + 137 + 173 + 137 + 131 + 100 + 131 + 100 + 131 + 94 + 94 + 100 + 130 + 94 + 44 + 79 + 43 + 43 + 43 + 1 + 50 + 80 + 44 + 87 + 87 + 87 + 94 + 88 + 130 + 88 + 88 + 88 + 94 + 88 + 124 + 94 + 124 + 130 + 131 + 131 + 167 + 131 + 167 + 136 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 129 + 130 + 129 + 93 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 129 + 130 + 135 + 172 + 172 + 166 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 129 + 79 + 43 + 50 + 86 + 129 + 129 + 166 + 135 + 123 + 86 + 86 + 43 + 86 + 86 + 86 + 43 + 86 + 37 + 7 + 37 + 43 + 44 + 49 + 44 + 37 + 86 + 86 + 44 + 79 + 43 + 44 + 50 + 122 + 129 + 137 + 172 + 129 + 122 + 87 + 50 + 122 + 130 + 172 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 137 + 179 + 173 + 137 + 143 + 137 + 137 + 131 + 137 + 137 + 95 + 136 + 94 + 94 + 130 + 95 + 94 + 93 + 58 + 80 + 85 + 44 + 43 + 43 + 37 + 43 + 50 + 44 + 86 + 51 + 88 + 93 + 124 + 94 + 88 + 123 + 87 + 94 + 87 + 88 + 88 + 94 + 124 + 94 + 125 + 130 + 131 + 130 + 131 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 130 + 123 + 129 + 129 + 130 + 129 + 130 + 135 + 129 + 166 + 93 + 129 + 166 + 129 + 129 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 166 + 172 + 172 + 172 + 171 + 129 + 86 + 43 + 43 + 86 + 129 + 129 + 129 + 172 + 122 + 43 + 43 + 50 + 86 + 86 + 86 + 43 + 44 + 43 + 37 + 43 + 43 + 43 + 50 + 79 + 1 + 43 + 86 + 86 + 80 + 49 + 44 + 79 + 93 + 129 + 123 + 130 + 129 + 86 + 86 + 87 + 172 + 172 + 173 + 178 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 179 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 95 + 136 + 95 + 94 + 130 + 95 + 130 + 94 + 93 + 94 + 52 + 86 + 122 + 43 + 44 + 43 + 43 + 43 + 44 + 8 + 86 + 87 + 88 + 87 + 93 + 88 + 93 + 88 + 88 + 87 + 87 + 87 + 129 + 88 + 88 + 124 + 94 + 94 + 124 + 88 + 130 + 131 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 166 + 136 + 130 + 129 + 93 + 129 + 123 + 93 + 130 + 129 + 93 + 129 + 129 + 130 + 171 + 166 + 136 + 171 + 130 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 129 + 172 + 130 + 128 + 44 + 86 + 86 + 128 + 87 + 172 + 129 + 87 + 43 + 43 + 49 + 80 + 85 + 44 + 43 + 86 + 43 + 43 + 44 + 43 + 43 + 79 + 44 + 6 + 37 + 86 + 123 + 50 + 44 + 86 + 86 + 86 + 123 + 93 + 129 + 122 + 93 + 129 + 130 + 173 + 178 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 137 + 179 + 137 + 173 + 143 + 131 + 137 + 101 + 137 + 131 + 100 + 131 + 94 + 94 + 130 + 94 + 94 + 88 + 95 + 87 + 95 + 86 + 87 + 85 + 44 + 43 + 37 + 50 + 43 + 44 + 51 + 87 + 87 + 87 + 87 + 94 + 87 + 94 + 87 + 87 + 130 + 87 + 93 + 88 + 87 + 94 + 124 + 88 + 94 + 130 + 88 + 166 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 179 + 173 + 136 + 171 + 130 + 86 + 130 + 93 + 129 + 129 + 129 + 129 + 130 + 129 + 135 + 166 + 172 + 129 + 172 + 136 + 171 + 130 + 172 + 172 + 130 + 171 + 130 + 171 + 172 + 93 + 122 + 86 + 129 + 86 + 129 + 129 + 129 + 93 + 79 + 43 + 43 + 50 + 43 + 79 + 44 + 49 + 44 + 79 + 44 + 43 + 44 + 43 + 44 + 42 + 44 + 86 + 86 + 50 + 80 + 129 + 86 + 86 + 123 + 129 + 130 + 136 + 136 + 172 + 173 + 214 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 173 + 143 + 137 + 173 + 101 + 131 + 137 + 95 + 136 + 94 + 95 + 130 + 94 + 94 + 94 + 89 + 93 + 52 + 93 + 88 + 58 + 122 + 86 + 86 + 43 + 43 + 44 + 43 + 44 + 43 + 51 + 86 + 87 + 87 + 51 + 93 + 86 + 93 + 87 + 94 + 129 + 87 + 129 + 94 + 87 + 88 + 94 + 94 + 87 + 130 + 94 + 137 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 179 + 179 + 215 + 215 + 179 + 215 + 173 + 136 + 129 + 128 + 130 + 93 + 129 + 129 + 93 + 129 + 129 + 129 + 129 + 172 + 129 + 136 + 166 + 171 + 136 + 166 + 135 + 166 + 136 + 165 + 136 + 165 + 129 + 93 + 122 + 129 + 130 + 129 + 171 + 129 + 93 + 43 + 43 + 43 + 86 + 44 + 49 + 43 + 80 + 43 + 50 + 80 + 43 + 44 + 43 + 43 + 43 + 44 + 86 + 86 + 80 + 50 + 128 + 87 + 123 + 172 + 135 + 166 + 136 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 137 + 179 + 137 + 137 + 137 + 137 + 131 + 101 + 130 + 94 + 101 + 130 + 94 + 94 + 94 + 89 + 94 + 87 + 95 + 88 + 93 + 52 + 123 + 86 + 50 + 43 + 44 + 43 + 37 + 43 + 50 + 45 + 86 + 93 + 86 + 50 + 87 + 93 + 93 + 87 + 135 + 94 + 87 + 93 + 93 + 94 + 94 + 94 + 93 + 94 + 130 + 130 + 131 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 137 + 178 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 172 + 172 + 166 + 129 + 129 + 93 + 123 + 92 + 129 + 129 + 130 + 129 + 165 + 135 + 130 + 129 + 172 + 129 + 129 + 166 + 129 + 172 + 129 + 129 + 123 + 92 + 122 + 129 + 130 + 129 + 172 + 129 + 92 + 80 + 43 + 43 + 49 + 87 + 86 + 43 + 50 + 79 + 43 + 86 + 50 + 80 + 43 + 43 + 43 + 44 + 86 + 86 + 44 + 86 + 92 + 130 + 172 + 167 + 172 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 173 + 143 + 173 + 137 + 137 + 179 + 131 + 101 + 137 + 94 + 130 + 95 + 94 + 100 + 88 + 94 + 57 + 124 + 93 + 52 + 93 + 87 + 87 + 51 + 122 + 51 + 44 + 85 + 7 + 37 + 7 + 44 + 85 + 51 + 122 + 87 + 56 + 50 + 87 + 93 + 51 + 135 + 93 + 94 + 129 + 94 + 93 + 94 + 93 + 129 + 100 + 94 + 130 + 137 + 130 + 167 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 173 + 179 + 137 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 129 + 135 + 123 + 129 + 129 + 129 + 130 + 129 + 171 + 172 + 172 + 130 + 129 + 129 + 172 + 172 + 172 + 129 + 129 + 123 + 86 + 87 + 128 + 136 + 130 + 129 + 129 + 50 + 43 + 86 + 50 + 123 + 86 + 43 + 43 + 50 + 44 + 50 + 43 + 44 + 50 + 79 + 7 + 80 + 86 + 86 + 87 + 129 + 173 + 209 + 215 + 215 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 143 + 173 + 137 + 173 + 137 + 101 + 137 + 131 + 100 + 95 + 130 + 94 + 94 + 94 + 93 + 52 + 94 + 93 + 88 + 93 + 87 + 51 + 87 + 93 + 87 + 87 + 86 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 50 + 86 + 87 + 86 + 93 + 50 + 87 + 93 + 92 + 93 + 94 + 93 + 129 + 100 + 129 + 93 + 94 + 94 + 130 + 100 + 136 + 131 + 172 + 131 + 209 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 172 + 143 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 173 + 136 + 136 + 129 + 130 + 129 + 130 + 136 + 179 + 173 + 215 + 172 + 131 + 171 + 172 + 173 + 179 + 166 + 129 + 129 + 86 + 93 + 86 + 130 + 171 + 130 + 129 + 51 + 85 + 44 + 80 + 50 + 86 + 43 + 44 + 49 + 44 + 86 + 50 + 43 + 79 + 50 + 43 + 44 + 123 + 135 + 166 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 173 + 143 + 173 + 137 + 137 + 131 + 101 + 94 + 130 + 94 + 94 + 94 + 93 + 52 + 93 + 51 + 87 + 51 + 51 + 51 + 93 + 87 + 86 + 51 + 87 + 86 + 51 + 86 + 43 + 80 + 49 + 44 + 7 + 44 + 44 + 86 + 86 + 129 + 86 + 93 + 87 + 93 + 92 + 87 + 93 + 129 + 100 + 94 + 129 + 93 + 57 + 87 + 93 + 93 + 94 + 130 + 136 + 130 + 131 + 136 + 131 + 172 + 179 + 173 + 215 + 179 + 173 + 137 + 136 + 166 + 143 + 173 + 143 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 172 + 137 + 172 + 179 + 215 + 173 + 179 + 215 + 179 + 173 + 173 + 178 + 172 + 173 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 130 + 129 + 86 + 50 + 43 + 86 + 44 + 86 + 86 + 49 + 50 + 43 + 86 + 50 + 43 + 44 + 86 + 50 + 165 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 137 + 137 + 130 + 137 + 94 + 94 + 94 + 94 + 93 + 94 + 88 + 94 + 57 + 87 + 51 + 87 + 57 + 51 + 51 + 87 + 86 + 86 + 57 + 87 + 87 + 87 + 86 + 50 + 86 + 43 + 44 + 43 + 43 + 44 + 86 + 50 + 87 + 129 + 93 + 87 + 93 + 92 + 87 + 93 + 93 + 130 + 99 + 129 + 86 + 57 + 51 + 86 + 50 + 93 + 88 + 93 + 94 + 94 + 130 + 124 + 100 + 131 + 130 + 137 + 136 + 131 + 136 + 129 + 137 + 130 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 173 + 179 + 215 + 179 + 179 + 179 + 215 + 173 + 179 + 179 + 179 + 173 + 172 + 136 + 179 + 173 + 172 + 136 + 129 + 130 + 172 + 93 + 129 + 129 + 87 + 136 + 129 + 136 + 165 + 129 + 93 + 86 + 93 + 92 + 86 + 92 + 129 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 172 + 101 + 130 + 94 + 94 + 88 + 94 + 94 + 94 + 129 + 100 + 87 + 57 + 93 + 87 + 51 + 57 + 87 + 51 + 93 + 86 + 87 + 87 + 93 + 86 + 93 + 86 + 80 + 50 + 43 + 44 + 49 + 44 + 43 + 86 + 50 + 122 + 93 + 87 + 129 + 93 + 86 + 93 + 129 + 94 + 129 + 93 + 93 + 86 + 51 + 50 + 44 + 51 + 50 + 87 + 87 + 94 + 87 + 94 + 88 + 94 + 93 + 130 + 94 + 93 + 130 + 93 + 94 + 131 + 136 + 137 + 172 + 143 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 209 + 179 + 179 + 179 + 179 + 173 + 179 + 179 + 173 + 178 + 172 + 136 + 173 + 166 + 215 + 178 + 173 + 215 + 179 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 136 + 130 + 94 + 136 + 130 + 130 + 137 + 136 + 130 + 100 + 130 + 94 + 93 + 93 + 94 + 88 + 93 + 56 + 87 + 87 + 93 + 86 + 93 + 93 + 130 + 86 + 57 + 79 + 44 + 43 + 44 + 44 + 49 + 80 + 56 + 123 + 86 + 86 + 93 + 87 + 86 + 93 + 93 + 129 + 94 + 129 + 93 + 123 + 56 + 44 + 7 + 43 + 2 + 50 + 44 + 50 + 51 + 87 + 57 + 88 + 87 + 94 + 51 + 88 + 93 + 94 + 87 + 94 + 129 + 94 + 137 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 215 + 179 + 179 + 215 + 179 + 215 + 179 + 179 + 179 + 215 + 215 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 137 + 173 + 137 + 136 + 137 + 173 + 172 + 173 + 143 + 173 + 137 + 171 + 100 + 130 + 93 + 129 + 93 + 94 + 87 + 93 + 93 + 92 + 130 + 93 + 129 + 93 + 122 + 8 + 43 + 43 + 49 + 44 + 44 + 86 + 92 + 86 + 87 + 87 + 128 + 87 + 50 + 93 + 87 + 129 + 92 + 130 + 129 + 87 + 93 + 43 + 8 + 43 + 6 + 44 + 44 + 51 + 50 + 87 + 58 + 87 + 51 + 94 + 87 + 52 + 93 + 88 + 58 + 129 + 94 + 94 + 137 + 136 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 215 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 179 + 173 + 179 + 179 + 173 + 179 + 179 + 173 + 172 + 137 + 135 + 130 + 129 + 100 + 130 + 129 + 93 + 129 + 129 + 100 + 129 + 93 + 129 + 94 + 79 + 50 + 43 + 44 + 49 + 80 + 86 + 93 + 86 + 87 + 86 + 93 + 86 + 86 + 50 + 87 + 86 + 129 + 129 + 130 + 86 + 93 + 86 + 0 + 7 + 8 + 43 + 45 + 50 + 51 + 51 + 88 + 51 + 93 + 51 + 88 + 50 + 94 + 94 + 87 + 94 + 94 + 95 + 136 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 215 + 179 + 179 + 173 + 178 + 137 + 172 + 129 + 136 + 136 + 130 + 136 + 129 + 136 + 129 + 136 + 135 + 130 + 129 + 49 + 80 + 44 + 85 + 44 + 86 + 87 + 50 + 86 + 87 + 92 + 86 + 80 + 50 + 50 + 80 + 87 + 92 + 129 + 93 + 123 + 93 + 44 + 43 + 0 + 43 + 8 + 44 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 57 + 88 + 51 + 94 + 94 + 88 + 136 + 94 + 136 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 179 + 173 + 178 + 173 + 172 + 137 + 172 + 136 + 172 + 136 + 135 + 130 + 136 + 172 + 136 + 136 + 128 + 136 + 44 + 86 + 86 + 50 + 86 + 44 + 86 + 87 + 50 + 86 + 50 + 80 + 50 + 43 + 43 + 86 + 86 + 86 + 94 + 122 + 92 + 86 + 44 + 37 + 7 + 1 + 43 + 50 + 44 + 51 + 51 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 101 + 130 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 173 + 179 + 172 + 173 + 136 + 172 + 136 + 172 + 173 + 136 + 136 + 172 + 135 + 130 + 135 + 136 + 130 + 135 + 93 + 129 + 87 + 92 + 86 + 44 + 86 + 43 + 50 + 44 + 49 + 44 + 43 + 43 + 43 + 43 + 44 + 86 + 51 + 86 + 86 + 87 + 86 + 44 + 7 + 1 + 42 + 8 + 44 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 94 + 51 + 94 + 87 + 94 + 95 + 136 + 137 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 209 + 179 + 173 + 173 + 172 + 143 + 172 + 130 + 137 + 171 + 136 + 137 + 172 + 136 + 130 + 136 + 171 + 136 + 136 + 130 + 136 + 129 + 99 + 129 + 94 + 93 + 86 + 86 + 43 + 44 + 43 + 7 + 43 + 43 + 7 + 43 + 37 + 7 + 7 + 42 + 44 + 80 + 50 + 86 + 50 + 79 + 44 + 7 + 7 + 37 + 7 + 44 + 51 + 51 + 50 + 16 + 45 + 51 + 93 + 51 + 88 + 57 + 87 + 94 + 52 + 129 + 100 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 136 + 172 + 137 + 136 + 136 + 130 + 136 + 136 + 137 + 165 + 137 + 100 + 166 + 100 + 136 + 129 + 94 + 135 + 93 + 93 + 93 + 87 + 49 + 86 + 44 + 43 + 7 + 42 + 1 + 7 + 43 + 7 + 43 + 1 + 43 + 6 + 1 + 43 + 44 + 85 + 44 + 50 + 43 + 44 + 7 + 37 + 7 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 52 + 57 + 87 + 51 + 94 + 87 + 58 + 94 + 94 + 130 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 136 + 172 + 173 + 173 + 136 + 167 + 136 + 136 + 136 + 165 + 136 + 130 + 136 + 94 + 137 + 135 + 130 + 101 + 136 + 130 + 136 + 93 + 93 + 130 + 93 + 99 + 87 + 129 + 57 + 86 + 50 + 43 + 44 + 43 + 7 + 0 + 43 + 1 + 7 + 43 + 7 + 0 + 43 + 7 + 37 + 7 + 43 + 43 + 44 + 43 + 14 + 43 + 43 + 7 + 44 + 44 + 8 + 86 + 9 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 94 + 94 + 94 + 137 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 136 + 130 + 136 + 130 + 171 + 101 + 166 + 129 + 100 + 130 + 130 + 136 + 94 + 135 + 130 + 100 + 130 + 130 + 135 + 94 + 94 + 129 + 93 + 93 + 93 + 86 + 57 + 93 + 87 + 93 + 92 + 80 + 49 + 43 + 7 + 1 + 43 + 6 + 1 + 43 + 7 + 43 + 43 + 43 + 2 + 42 + 43 + 7 + 44 + 43 + 43 + 44 + 50 + 44 + 43 + 44 + 8 + 51 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 52 + 87 + 57 + 87 + 58 + 88 + 93 + 88 + 136 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 178 + 94 + 130 + 136 + 137 + 130 + 130 + 130 + 136 + 94 + 129 + 94 + 130 + 130 + 100 + 130 + 94 + 130 + 93 + 94 + 94 + 93 + 94 + 93 + 92 + 87 + 57 + 93 + 87 + 56 + 124 + 93 + 92 + 86 + 44 + 6 + 1 + 43 + 1 + 7 + 43 + 43 + 43 + 50 + 43 + 1 + 43 + 43 + 7 + 43 + 43 + 44 + 86 + 44 + 49 + 8 + 43 + 44 + 51 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 52 + 87 + 52 + 93 + 53 + 88 + 88 + 93 + 131 + 173 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 94 + 136 + 130 + 136 + 130 + 136 + 94 + 130 + 130 + 100 + 130 + 93 + 130 + 94 + 130 + 94 + 93 + 130 + 93 + 94 + 93 + 87 + 93 + 94 + 92 + 87 + 93 + 51 + 87 + 129 + 93 + 86 + 92 + 49 + 43 + 7 + 43 + 1 + 43 + 43 + 50 + 49 + 86 + 50 + 80 + 44 + 7 + 43 + 43 + 50 + 86 + 45 + 50 + 43 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 8 + 44 + 15 + 44 + 9 + 50 + 51 + 52 + 87 + 51 + 46 + 87 + 52 + 95 + 131 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 136 + 95 + 136 + 131 + 136 + 130 + 137 + 94 + 130 + 100 + 130 + 129 + 94 + 94 + 130 + 94 + 93 + 94 + 123 + 94 + 93 + 93 + 51 + 93 + 87 + 51 + 93 + 50 + 130 + 92 + 129 + 86 + 51 + 86 + 7 + 43 + 1 + 43 + 43 + 49 + 87 + 92 + 86 + 45 + 49 + 37 + 43 + 43 + 51 + 86 + 86 + 50 + 44 + 50 + 43 + 44 + 15 + 44 + 50 + 51 + 8 + 45 + 8 + 14 + 44 + 51 + 45 + 51 + 51 + 52 + 88 + 52 + 125 + 94 + 130 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 130 + 137 + 130 + 101 + 130 + 94 + 130 + 94 + 136 + 94 + 124 + 94 + 93 + 130 + 94 + 93 + 94 + 124 + 93 + 88 + 57 + 87 + 87 + 57 + 87 + 51 + 87 + 50 + 129 + 93 + 129 + 92 + 123 + 49 + 50 + 44 + 43 + 43 + 50 + 86 + 86 + 123 + 92 + 50 + 44 + 43 + 43 + 44 + 86 + 93 + 87 + 50 + 80 + 50 + 43 + 50 + 9 + 51 + 50 + 45 + 50 + 9 + 7 + 8 + 8 + 45 + 50 + 52 + 88 + 52 + 125 + 94 + 89 + 131 + 131 + 173 + 173 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 137 + 94 + 137 + 94 + 130 + 94 + 101 + 88 + 94 + 94 + 94 + 130 + 87 + 94 + 87 + 94 + 87 + 94 + 51 + 87 + 94 + 51 + 86 + 51 + 51 + 51 + 80 + 15 + 129 + 129 + 93 + 129 + 93 + 86 + 86 + 44 + 43 + 50 + 49 + 86 + 129 + 87 + 129 + 86 + 50 + 43 + 44 + 44 + 86 + 129 + 86 + 87 + 50 + 50 + 44 + 44 + 51 + 50 + 45 + 14 + 45 + 8 + 8 + 7 + 51 + 44 + 52 + 52 + 88 + 89 + 94 + 125 + 131 + 131 + 131 + 131 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 100 + 130 + 95 + 94 + 94 + 94 + 94 + 87 + 94 + 93 + 88 + 57 + 88 + 88 + 93 + 51 + 88 + 93 + 51 + 87 + 50 + 87 + 51 + 45 + 51 + 50 + 51 + 44 + 129 + 135 + 93 + 123 + 92 + 87 + 55 + 80 + 50 + 44 + 86 + 92 + 87 + 129 + 93 + 87 + 86 + 49 + 80 + 50 + 87 + 129 + 93 + 86 + 45 + 50 + 44 + 44 + 50 + 51 + 44 + 15 + 45 + 8 + 7 + 50 + 9 + 51 + 88 + 88 + 95 + 89 + 95 + 125 + 95 + 131 + 125 + 167 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 131 + 94 + 95 + 136 + 52 + 93 + 94 + 88 + 57 + 88 + 87 + 94 + 51 + 88 + 87 + 52 + 87 + 51 + 51 + 88 + 45 + 50 + 51 + 50 + 44 + 51 + 8 + 51 diff --git a/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO.BAS b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO.BAS new file mode 100755 index 0000000..601f9d6 --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO.BAS @@ -0,0 +1,352 @@ +DECLARE SUB playsound (a$) +DECLARE SUB turnon () +DECLARE SUB ellips (x!, y!, s!, v!, t!) +DECLARE SUB prn (x!, y!, msg$, siz!, col1!) +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerdisp () +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + + +pi = 3.14128 + +turnon + +SCREEN 7, , , 1 + +timerinit +s = 50 +2 +s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 +s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 + + +frm = frm + 1 +sv1 = 5 * s1 +sv2 = 2 +vp = SIN(timerCvalue(1) * 1.3) + +sh1 = 2 * s2 +sh2 = 1.4 +hp = SIN(timerCvalue(1)) * .7 + + +mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 + +ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 +ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 +ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 +prn timerCvalue(5), 10, "KHK", 7, 250 + +prn timerCvalue(8), 130, "Infotehno-", 2, 0 +prn timerCvalue(8), 150, " loogia", 2, 0 + +timerprocess +LOCATE 1, 1 +'PRINT timerCtime(0) +IF timerCtime(0) > 26 THEN CHAIN "ray.bas" +PCOPY 0, 1 +LINE (0, 0)-(319, 199), 15, BF +GOTO 2 +SYSTEM + +SUB ellips (x, y, s, v, t) + +IF x > 0 THEN +IF y > 0 THEN + +CIRCLE (x, y), s, v, , , t +PAINT (x, y), v + +END IF +END IF + +END SUB + +SUB mo (x, y, an, s, w) +depth = depth + 1 +IF s < .2 THEN GOTO 1 + +IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 + +CIRCLE (x, y), s, c +PAINT (x, y), c + +IF w <> 1 THEN +x1 = SIN(an) * s * 2.5 + x +y1 = COS(an) * s * 2.5 + y +IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 3 +END IF + +IF w <> 2 THEN +x1 = SIN(an - pi / 2) * s * 2.5 + x +y1 = COS(an - pi / 2) * s * 2.5 + y +IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 4 +END IF + +IF w <> 3 THEN +x1 = SIN(an - pi) * s * 2.5 + x +y1 = COS(an - pi) * s * 2.5 + y +IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 1 +END IF + +IF w <> 4 THEN +x1 = SIN(an - pi * 1.5) * s * 2.5 + x +y1 = COS(an - pi * 1.5) * s * 2.5 + y +IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 2 +END IF + +1 +depth = depth - 1 +END SUB + +SUB playsound (a$) +REM SHELL "c:\progra~1\winamp\winamp.exe " + a$ +SCREEN 0 +SCREEN 7, , , 1 + +END SUB + +SUB prn (x, y, msg$, siz, col1) +IF x < 0 THEN GOTO prn1 +IF x > 319 THEN GOTO prn1 + +DIM bck(10000) + +GET (0, 0)-(100, 7), bck +LOCATE 1, 1 +PRINT msg$ + +col = col1 + +FOR x1 = 0 TO LEN(msg$) * 8 - 1 +FOR y1 = 0 TO 7 + IF POINT(x1, y1) > 0 THEN + rx = x1 * siz + x + ry = y1 * siz + y + IF col1 > 100 THEN col = RND * 4 + 10 + IF col1 > 200 THEN + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B + ELSE + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +' LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +NEXT y1 +NEXT x1 + + +PUT (0, 0), bck, PSET +prn1: +END SUB + +SUB timerAdd (element, time, value) + +FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 +NEXT a +timer3: + +timerTime(element, a) = time +timerValue(element, a) = value + +END SUB + +SUB timerdisp +LOCATE 1, 1 + +FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) +NEXT a + +END SUB + +SUB timerinit +timerLast = TIMER + +paus = 24 + +' stuff size +timerAdd 0, 0, 50 +timerAdd 0, 7, 10 +timerAdd 0, 20, 10 +timerAdd 0, 24, 0 +timerAdd 0, 1000, 0 + + +' stuff speed +timerAdd 1, 0, .1 +timerAdd 1, 1000, 1000 + +' stuff X & Y +timerAdd 2, 0, 160 +timerAdd 3, 0, 100 + +timerAdd 2, 5, 160 +timerAdd 3, 5, 100 + +timerAdd 2, 9, 280 +timerAdd 3, 9, 160 + +timerAdd 2, 10, 280 +timerAdd 3, 10, 160 + +timerAdd 2, 20, 40 +timerAdd 3, 20, 160 + +timerAdd 2, 1000, 40 +timerAdd 3, 1000, 160 + +' stuff rotations +timerAdd 4, 0, .1 +timerAdd 4, 10, .1 +timerAdd 4, 22, 18 +timerAdd 4, 2000, 10000 + +' KHK message X + +timerAdd 5, 0, -1 +timerAdd 5, 5, -1 +timerAdd 5, 9, 50 +timerAdd 5, 10, 30 +timerAdd 5, paus, 30 +timerAdd 5, paus + 2, 321 + +' Ellips Y & radius +timerAdd 6, 0, -1 +timerAdd 6, 4, -1 +timerAdd 6, 10, 30 +timerAdd 6, 1000, 50 + +timerAdd 7, 0, 1 +timerAdd 7, 6, 1 +timerAdd 7, 12, 130 + +timerAdd 7, paus, 130 +timerAdd 7, paus + 2, 1 + +' "Infotehnoloogia" message + +timerAdd 8, 0, 320 +timerAdd 8, 11, 320 +timerAdd 8, 20, 100 +timerAdd 8, paus, 100 +timerAdd 8, paus + 1, -1 + + +END SUB + +SUB timerprocess + +timerCurrent = TIMER +timerDiff = timerCurrent - timerLast +timerLast = timerCurrent + +FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim +NEXT a + +END SUB + +SUB turnon +'a$ = INPUT$(1) +playsound "marine.mp3" + +SCREEN 7, , , 1 + +FOR x = 0 TO 160 STEP 15 + + LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF + LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF + LINE (160 - x, 90)-(160 + x, 110), 15, BF + + PCOPY 0, 1 + CLS + SOUND 0, .5 +NEXT x + +FOR y = 10 TO 100 STEP 15 + CLS + + LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF + LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF + LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF + + PCOPY 0, 1 + SOUND 0, .5 +NEXT y + +FOR a = 1 TO 25 + prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 + PCOPY 0, 1 + SOUND 0, 1 +NEXT a + +DIM buf(1 TO 1000) +FOR b = 1 TO 30 +FOR a = 0 TO 195 + t = ABS(100 - a) + + IF RND * 50 < t THEN + GET (1, a)-(318, a + 1), buf + IF a > 100 THEN + PUT (0, a), buf, PSET + ELSE + PUT (2, a), buf, PSET + END IF + END IF +NEXT a +PCOPY 0, 1 +'SOUND 0, 1 +NEXT b + + +END SUB + diff --git a/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO2.BAS b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO2.BAS new file mode 100755 index 0000000..4ce482e --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO2.BAS @@ -0,0 +1,46 @@ +SCREEN 7, , , 1 + +1 +FOR a = 1 TO SIN(frm / 30) * 3 + 4 + LOCATE a * 2, a * 4 + COLOR RND * 5 + 10 + PRINT "Programmeerimine ***" +NEXT a + +frm = frm + 1 +st = (SIN(frm / 10) + 2) / 3 +x = SIN(frm / 30) * 50 +y = COS(frm / 42) * 30 + + +FOR a = .1 TO 10 STEP st + CIRCLE (160 + x, 100 + y), 80, 2, , , a +NEXT a + +c = RND * 2 + 12 +FOR a = 0 TO 10 + f = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 50 + y2 = COS(f2 + 6) * 30 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), c +NEXT a + +FOR a = 0 TO 50 + x = RND * 320 + y = RND * 320 + PSET (x, y), RND * 15 +NEXT a + + + +PCOPY 0, 1 +CLS + +IF frm > 200 THEN GOTO 2 +GOTO 1 +2 +CHAIN "KHKDEMO3.BAS" + diff --git a/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO3.BAS b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO3.BAS new file mode 100755 index 0000000..0e69f0f --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO3.BAS @@ -0,0 +1,62 @@ +SCREEN 7, , , 1 + +1 +LINE (0, 0)-(319, 199), RND, BF +SOUND 0, 1 +frm = frm + 1 +st = (SIN(frm / 10) + 2) / 3 +x = SIN(frm / 30) * 50 +y = COS(frm / 42) * 30 + + +FOR a = .1 TO 10 STEP st + CIRCLE (160 + x, 100 + y), 80, 10, , , a +NEXT a + +c = RND * 2 + 12 +FOR a = 0 TO 50 + f = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), c +NEXT a + +FOR a = 0 TO 50 + f = (a * 15 + frm) / 12 + f2 = (a * 15 + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + CIRCLE (x1 + 80, y1 + 50), a / 2, 14 + PAINT (x1 + 80, y1 + 50), 14 +NEXT a + + +FOR a = 0 TO 15 + f = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), c +NEXT a + +FOR a = 0 TO 50 + x = RND * 320 + y = RND * 320 + PSET (x, y), RND * 15 +NEXT a + +PCOPY 0, 1 +CLS + +IF frm > 100 THEN GOTO 2 +GOTO 1 +2 +CHAIN "KHKDEMO4.BAS" + diff --git a/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO6.BAS b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO6.BAS new file mode 100755 index 0000000..980806a --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/KHKDEMO6.BAS @@ -0,0 +1,33 @@ +SCREEN 13 + +LOCATE 1, 1 +PRINT "Tulege meile “ppima!!" + +FOR x = 0 TO 160 + FOR y = 0 TO 32 + c = POINT(x, y) + x1 = x * 2 + y1 = y * 2 + 90 + LINE (x1, y1)-(x1 + 1, y1 + 1), c, BF + NEXT y +NEXT x + +LOCATE 1, 1 +PRINT " " + +FOR x = 0 TO 320 + CIRCLE (x, 130), 10, 9 + SOUND 0, .1 +NEXT x + +FOR y = 0 TO 70 + SOUND 0, .1 + LINE (160 - 70 + y, y)-(160 + 70 - y, y), 9 +NEXT y + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a + +CHAIN "khkdemo.bas" + diff --git a/graphics/3D/KHK Intellektika 2004 demo/RAY.BAS b/graphics/3D/KHK Intellektika 2004 demo/RAY.BAS new file mode 100755 index 0000000..89451bc --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/RAY.BAS @@ -0,0 +1,318 @@ +DECLARE SUB dispimg () +DECLARE SUB updateland () +DECLARE SUB makeland () +DECLARE FUNCTION getcol! (r!, g!, b!) +DEFINT A-Y +DECLARE SUB traceline (x%, y%, xl) +DECLARE SUB dispframe () +DECLARE SUB tower (x%, y%) +DECLARE SUB square (x1%, y1%, x2%, y2%, c%, h%) +DECLARE SUB displand () +DECLARE SUB start () +DECLARE SUB setupal () + +DIM SHARED landh(0 TO 180, 0 TO 180) +DIM SHARED landc(0 TO 180, 0 TO 180) + +DIM SHARED zmyx, zmyy, zmyz +DIM SHARED myx, myy, myz +DIM SHARED zmyan, myan2 +DIM SHARED ste, stem, dist +DIM SHARED tim$, frm, frmrate +DIM SHARED pi +DIM SHARED white + +sky = getcol(100, 100, 255) +pi = 3.141592 + +frmrate = 10 ' Desired framerate. + ' Lower framerate, better quality + +start +makeland + +'displand +'a$ = INPUT$(1) +myan2 = 2 +OPEN "cat.i01" FOR INPUT AS #1 +INPUT #1, pictxw +INPUT #1, pictyw +INPUT #1, pictx +INPUT #1, picty + + +1 +x1 = RND * 160 +y1 = RND * 160 +x2 = x1 + RND * 10 + 1 +y2 = y1 + RND * 10 + 1 + +IF (frm > 50) AND (frm < 150) THEN square x1, y1, x2, y2, RND * 200, RND * 10 +IF (frm > 150) AND (picty < 177) THEN + + FOR ff = 1 TO 180 * 2 + INPUT #1, c + landc(pictx, picty) = c + landh(pictx, picty) = 0 + pictx = pictx + 1 + IF pictx >= pictxw THEN pictx = 0: picty = picty + 1 + IF picty >= pictyw THEN picty = 0 + NEXT ff +END IF + +IF frm = 430 THEN dispimg +LOCATE 1, 30 +'PRINT frm + +updateland +dispframe +GOTO 1 +CLOSE #1 + +SUB dispframe + +l = 0 +zst = -.0031 * ste +FOR z = .5 TO -.5 STEP zst +traceline SIN(zmyan + z) * dist + myx, COS(zmyan + z) * dist + myy, l +l = l + ste +NEXT z + +END SUB + +SUB dispimg + +CLOSE #1 + + +OPEN "cat.i01" FOR INPUT AS #1 +INPUT #1, pictxw +INPUT #1, pictyw + +FOR y = 0 TO pictyw - 1 +FOR x = 0 TO pictxw - 1 +INPUT #1, c +PSET (x + 50, 150 - y), c +NEXT x +NEXT y + +CLOSE #1 + + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a +CHAIN "KHKDEMO2.BAS" + +END SUB + +SUB displand + + +FOR z = 0 TO 180 +zs = 1 +IF z > 120 THEN zs = .7 +IF z > 160 THEN zs = .6 +FOR zx = 0 TO 180 STEP zs +y1 = landh(zx, z) - 80 +zx1 = zx - 90 +z1 = 300 - z +zx2 = zx1 / z1 * 190 +zy2 = y1 / z1 * 190 + +LINE (zx2 + 160, 40 - zy2)-(zx2 + 160, 200), landc(zx, z) +NEXT zx +NEXT z + +LOCATE 1, 1 +PRINT "Press any key to continue..." + +END SUB + +DEFSNG A-Y +FUNCTION getcol (r, g, b) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 255 THEN r = 255 +IF g > 255 THEN g = 255 +IF b > 255 THEN b = 255 +getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43) +END FUNCTION + +DEFINT A-Y +SUB makeland + +square 0, 0, 180, 180, 15, 0 + +FOR y = 0 TO 180 +FOR x = 0 TO 180 +x1 = (x \ 10) MOD 2 +y1 = (y \ 10) MOD 2 +c = (x1 + y1) MOD 2 +IF c = 0 THEN + landc(x, y) = getcol(250, 250, 250) +ELSE + landc(x, y) = getcol(250, 50, 50) +END IF +NEXT x +NEXT y + +FOR y = 10 TO 90 +FOR x = 90 TO 170 +v = SQR((ABS(50 - y)) ^ 2 + (ABS(130 - x)) ^ 2) +h = SQR((60 - v) * (60 + v)) - 35 +IF h > 0 THEN landh(x, y) = h +NEXT x +NEXT y + +tower 20, 20 +tower 60, 20 +tower 40, 150 + + +FOR za = 0 TO 20 STEP .1 +x = SIN(za) * (1 + (za * 2)) + 100 +y = COS(za) * (1 + (za * 2)) + 100 +landc(x, y) = getcol(20, RND * 200, 20) +landc(x + 1, y) = getcol(20, RND * 200, 20) +landc(x, y + 1) = getcol(20, RND * 200, 20) +landc(x + 1, y + 1) = getcol(20, RND * 200, 20) +NEXT za + +END SUB + +SUB setupal +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r +END SUB + +SUB square (x1, y1, x2, y2, c, h) + +FOR y = y1 TO y2 +FOR x = x1 TO x2 +landh(x, y) = h +landc(x, y) = c +NEXT x +NEXT y + +END SUB + +SUB start +SCREEN 13 +'PRINT "please wait..." + +setupal + +zmyan = 4.14 +myan2 = 100 +ste = 1 +stem = ste - 1 +dist = 190 +tim$ = TIME$ +zmyx = 170 +zmyy = 170 +zmyz = 20 + +END SUB + +SUB tower (x, y) + +FOR a = 10 TO 0 STEP -1 +square x - a, y - a, x + a, y + a, getcol(100, 0, a * 20), 20 - a +NEXT a + +square x - 11, y - 11, x - 9, y - 9, getcol(255, 0, 0), 20 +square x + 9, y - 11, x + 11, y - 9, getcol(0, 255, 0), 20 +square x - 11, y + 9, x - 9, y + 11, getcol(0, 0, 255), 20 +square x + 9, y + 9, x + 11, y + 11, getcol(255, 255, 0), 20 + + +END SUB + +SUB traceline (x, y, xl) + +IF x < 0 THEN +zpr = myx / (myx - x) +x = 0 +y = myy - ((myy - y) * zpr) +END IF + +IF y < 0 THEN +zpr = myy / (myy - y) +y = 0 +x = myx - ((myx - x) * zpr) +END IF + +IF x > 180 THEN +zpr = (180 - myx) / (x - myx) +x = 180 +y = myy - ((myy - y) * zpr) +END IF + +IF y > 180 THEN +zpr = (180 - myy) / (y - myy) +y = 180 +x = myx - ((myx - x) * zpr) +END IF + +lp = SQR(ABS(myx - x) ^ 2 + ABS(myy - y) ^ 2) + +xp = x - myx +yp = y - myy + +yo = 200 + +FOR a = 1 TO lp + cx = xp * a / lp + myx + cy = yp * a / lp + myy + yn = myan2 - ((landh(cx, cy) - myz) * 300) / a + IF yn < yo THEN LINE (xl, yn)-(xl + stem, yo - 1), landc(cx, cy), BF: yo = yn +NEXT a +LINE (xl, yo - 1)-(xl + stem, 0), sky, BF + +END SUB + +SUB updateland + +frm = frm + 1 +ste = 4 +stem = ste - 1 + + +zmyan = frm / 15 + pi +'myan2 = myan2 + 5 +'zmyx = SIN(zmyan) * 3 + zmyx +'zmyy = COS(zmyan) * 3 + zmyy +'zmyzs = 2 + +zmyx = 90 - SIN(zmyan) * 91 +zmyy = 90 - COS(zmyan) * 91 + +IF zmyx > 170 THEN zmyx = 170 +IF zmyy > 170 THEN zmyy = 170 +IF zmyx < 10 THEN zmyx = 10 +IF zmyy < 10 THEN zmyy = 10 + +zmyz = SIN(zmyan / 2) * 4 + 4 +zmyz = SIN(zmyan / 2) * 50 + 50 +myan2 = -SIN(zmyan / 2) * 120 + 121 +myan2 = -(SIN(zmyan / 2) * 10 + 10) +IF zmyz < landh(myx, myy) + 10 THEN zmyz = landh(myx, myy) + 10: zmyzs = (zmyzs / 2) + .2 + +myz = zmyz +myy = zmyy +myx = zmyx + +END SUB + diff --git a/graphics/3D/KHK Intellektika 2004 demo/khkdemo4.BAS b/graphics/3D/KHK Intellektika 2004 demo/khkdemo4.BAS new file mode 100755 index 0000000..ec82d00 --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/khkdemo4.BAS @@ -0,0 +1,35 @@ +DECLARE SUB ga (x!, y!, s!) +DIM SHARED colr ' this variable holds fractal color + ' and because it is 'SHARED' it is accessible + ' from within sub module. +SCREEN 12 + +colr = 10 ' display single fractel +ga 320, 240, 127 + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a +CLS + +FOR a = 1 TO 128 STEP 5 ' display fractal serie + colr = RND * 7 + 7 + ga 320, 240, a +NEXT a + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a + +CHAIN "khkdemo5.bas" + +SUB ga (x, y, s) +IF s >= 1 THEN + LINE (x - s, y - s)-(x + s, y + s), colr, B + ga x - s, y - s, s / 2.3 ' each fractel sub element is 2.3 times smaller + ga x + s, y - s, s / 2.3 ' than previous. + ga x + s, y + s, s / 2.3 + ga x - s, y + s, s / 2.3 +END IF +END SUB + diff --git a/graphics/3D/KHK Intellektika 2004 demo/khkdemo5.BAS b/graphics/3D/KHK Intellektika 2004 demo/khkdemo5.BAS new file mode 100755 index 0000000..3f08b6c --- /dev/null +++ b/graphics/3D/KHK Intellektika 2004 demo/khkdemo5.BAS @@ -0,0 +1,329 @@ +' 3D Maze explorer +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB startext () +DECLARE SUB control () +DECLARE SUB putbyte (addr!, dat!) +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () +DECLARE SUB animate () + +DIM SHARED px(1 TO 5000) +DIM SHARED py(1 TO 5000) +DIM SHARED pz(1 TO 5000) +DIM SHARED rpx(1 TO 5000) +DIM SHARED rpy(1 TO 5000) +DIM SHARED rpe(1 TO 5000) + +DIM SHARED l1(1 TO 5000) +DIM SHARED l2(1 TO 5000) +DIM SHARED lc(1 TO 5000) + +DIM SHARED nl, np + +DIM SHARED an1, an2, an3 + +DIM SHARED tim + +DIM SHARED extSEG, extADDR + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED buttL, buttR +DIM SHARED maxmove + +nl = 0 +np = 0 + +start + + +cx = 0 +cy = 0 +cz = 0 + +np = 1 +px(1) = 0 +py(1) = 0 +pz(1) = 0 + +1 +frm = frm + 1 +myx = SIN(frm / 30) * 100 +myz = COS(frm / 59) * 100 +myy = SIN(frm / 300) +an1 = SIN(frm / 60) +an2 = SIN(frm / 36) / 3 + + +np = np + 1 +px(np) = cx +py(np) = cy +pz(np) = cz + + + +nl = nl + 1 +l1(nl) = np +l2(nl) = np - 1 +lc(nl) = INT(RND * 15) + 1 +'lc(nl) = ABS(cx / 20) + + + +va = INT(RND * 3) + +SELECT CASE va +CASE 0 + cx = RND * 500 - 250 +CASE 1 + cy = RND * 100 - 50 +CASE 2 + cz = RND * 500 - 250 +END SELECT + + +'control +animate + +PCOPY 0, 1 +CLS + +IF frm > 1200 THEN GOTO 200 +GOTO 1 +200 + +CHAIN "khkdemo6.bas" + +SUB animate + + +s1 = SIN(an1) +s2 = SIN(an2) +s3 = SIN(an3) + +c1 = COS(an1) +c2 = COS(an2) +c3 = COS(an3) + + + +FOR a = 1 TO np + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + +' z2 = z2 + 10 + + IF z2 > 3 THEN + rpe(a) = 1 + rpx(a) = x1 / z2 * 130 + 160 + rpy(a) = y1 / z2 * 130 + 100 + ELSE + rpe(a) = 0 + END IF + +NEXT a + + +FOR a = 1 TO nl + + p1 = l1(a) + p2 = l2(a) + IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) + +NEXT a + + +END SUB + +SUB control + + +IF getbyte(8) <> 0 THEN + putbyte 8, 0 + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + butt = getword(6) + putword 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + + + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + + + +a$ = INKEY$ + +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) +IF a$ = "q" THEN SYSTEM + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs +myz = myz + myzs +myy = myy + myys + +END SUB + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +100 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 100 + + +END SUB + +SUB putbyte (addr, dat) + +POKE (extADDR + addr), dat +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +SUB start +' startext + + +SCREEN 7, , , 1 + +maxmove = 50 + +END SUB + +SUB startext + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + diff --git a/graphics/3D/font.dat b/graphics/3D/font.dat new file mode 100755 index 0000000..d3c1e68 --- /dev/null +++ b/graphics/3D/font.dat @@ -0,0 +1,230 @@ +# a +p 1 0 +p 0 1 +p 2 1 +p 0 2 +p 2 2 +l 0 1 +l 0 2 +l 1 2 +l 1 3 +l 2 4 +# b +p 0 0 +p 2 0 +p 0 1 +p 0 2 +p 2 2 +l 0 1 +l 0 3 +l 1 2 +l 3 4 +l 4 2 +# c +p 2 0 +p 1 0 +p 0 1 +p 1 2 +p 2 2 +l 0 1 +l 1 2 +l 2 3 +l 3 4 +# d +p 0 0 +p 1 0 +p 2 1 +p 1 2 +p 0 2 +l 0 1 +l 1 2 +l 2 3 +l 3 4 +l 4 0 +# e +p 0 0 +p 2 0 +p 0 1 +p 2 1 +p 0 2 +p 2 2 +l 0 1 +l 2 3 +l 4 5 +l 0 4 +# f +p 0 0 +p 2 0 +p 0 1 +p 2 1 +p 0 2 +l 0 1 +l 2 3 +l 0 4 +# g +p 2 0 +p 1 0 +p 0 1 +p 1 2 +p 2 2 +p 2 1 +p 1 1 +l 0 1 +l 1 2 +l 2 3 +l 3 4 +l 4 5 +l 5 6 +# h +p 0 0 +p 0 2 +p 2 0 +p 2 2 +p 0 1 +p 2 1 +l 0 1 +l 2 3 +l 4 5 +# i +p 1 0 +p 1 2 +l 0 1 +# j +p 0 1 +p 0 2 +p 1 2 +p 1 0 +l 0 1 +l 1 2 +l 2 3 +# k +p 0 0 +p 0 2 +p 2 0 +p 2 2 +p 0 1 +l 0 1 +l 2 4 +l 4 3 +# l +p 0 0 +p 0 2 +p 2 2 +l 0 1 +l 1 2 +# m +p 0 2 +p 0 0 +p 1 1 +p 2 0 +p 2 2 +l 0 1 +l 1 2 +l 2 3 +l 3 4 +# n +p 0 2 +p 0 0 +p 2 2 +p 2 0 +l 0 1 +l 1 2 +l 2 3 +# o +p 0 0 +p 2 0 +p 2 2 +p 0 2 +l 0 1 +l 1 2 +l 2 3 +l 3 0 +# p +p 0 0 +p 2 0 +p 2 1 +p 0 1 +p 0 2 +l 0 1 +l 1 2 +l 2 3 +l 0 4 +# q +p 0 0 +p 2 0 +p 2 2 +p 0 2 +p 1 1 +l 0 1 +l 1 2 +l 2 3 +l 3 0 +l 2 4 +# r +p 0 0 +p 2 0 +p 2 1 +p 0 1 +p 0 2 +p 2 2 +l 0 1 +l 1 2 +l 2 3 +l 0 4 +l 5 3 +# s +p 2 0 +p 0 0 +p 0 1 +p 2 1 +p 2 2 +p 0 2 +l 0 1 +l 1 2 +l 2 3 +l 3 4 +l 4 5 +# t +p 0 0 +p 2 0 +p 1 0 +p 1 2 +l 0 1 +l 2 3 +# u +p 0 0 +p 0 2 +p 2 2 +p 2 0 +l 0 1 +l 1 2 +l 2 3 +# v +p 0 0 +p 1 2 +p 2 0 +l 0 1 +l 1 2 +# x +p 0 0 +p 2 2 +p 2 0 +p 0 2 +l 0 1 +l 2 3 +# y +p 0 0 +p 2 0 +p 1 1 +p 1 2 +l 0 2 +l 1 2 +l 2 3 +# z +p 0 0 +p 2 0 +p 0 2 +p 2 2 +l 0 1 +l 1 2 +l 2 3 \ No newline at end of file diff --git a/graphics/3D/gravi.bas b/graphics/3D/gravi.bas new file mode 100755 index 0000000..04d40df --- /dev/null +++ b/graphics/3D/gravi.bas @@ -0,0 +1,113 @@ +' 3D gravitation model +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB gravi () +DECLARE SUB adda (x!, y!, z!, s!) +DECLARE SUB display () +DIM SHARED atx(1 TO 100) +DIM SHARED aty(1 TO 100) +DIM SHARED atz(1 TO 100) +DIM SHARED atxs(1 TO 100) +DIM SHARED atys(1 TO 100) +DIM SHARED atzs(1 TO 100) +DIM SHARED ats(1 TO 100) +DIM SHARED mitu +DIM SHARED myx, myy, myz +DIM SHARED oax(1 TO 100) +DIM SHARED oay(1 TO 100) +DIM SHARED oas(1 TO 100) + + +myx = 0 +myy = 0 +myz = -5 +mitu = 0 + +SCREEN 13 + +FOR a = 1 TO 30 +adda RND * 6 - 3, RND * 6 - 3, RND * 4, 50 +NEXT a + +1 +display +gravi +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + +SUB adda (x, y, z, s) + +mitu = mitu + 1 +atx(mitu) = x +aty(mitu) = y +atz(mitu) = z +ats(mitu) = s + +atxs(mitu) = 0 +atys(mitu) = 0 +atzs(mitu) = 0 + +END SUB + +SUB display + +FOR a = 1 TO mitu +x = atx(a) - myx +y = aty(a) - myy +z = atz(a) - myz + +x1 = x / z * 100 + 160 +y1 = y / z * 100 + 100 + +CIRCLE (oax(a), oay(a)), oas(a), 0 +CIRCLE (x1, y1), ats(a) / z, 15 +oax(a) = x1 +oay(a) = y1 +oas(a) = ats(a) / z + +NEXT a + + +END SUB + +SUB gravi +FOR a = 1 TO mitu +x = atx(a) +y = aty(a) +z = atz(a) +pxs = 0 +pys = 0 +pzs = 0 + + +FOR b = 1 TO mitu +IF b = a THEN GOTO 2 +v = SQR((atx(b) - x) ^ 2 + (aty(b) - y) ^ 2 + (atz(b) - z) ^ 2) +v2 = 1 / (v - 1) + +pxs = pxs + (atx(b) - x) / v2 / 10000 +pys = pys + (aty(b) - y) / v2 / 10000 +pzs = pzs + (atz(b) - z) / v2 / 10000 + +2 +NEXT b + +atxs(a) = atxs(a) / 1.01 + pxs +atys(a) = atys(a) / 1.01 + pys +atzs(a) = atzs(a) / 1.01 + pzs +NEXT a + +FOR a = 1 TO mitu + +atx(a) = atx(a) + atxs(a) +aty(a) = aty(a) + atys(a) +atz(a) = atz(a) + atzs(a) +NEXT a + + + +END SUB + diff --git a/graphics/3D/mtrxmath.bas b/graphics/3D/mtrxmath.bas new file mode 100755 index 0000000..65770cd --- /dev/null +++ b/graphics/3D/mtrxmath.bas @@ -0,0 +1,64 @@ +' 3D transformation using 3*3 matrix math. +' by Svjatoslav Agejenko 2003.03 + +' use keys: +' 7 9 - change alpha +' 4 6 - change beta +' 1 3 - change gamma +' ESC - quit program + +DECLARE SUB gc (x!, y!, z!, x1!, y1!) +DECLARE SUB setan (a!, b!, c!) +DIM SHARED mx1, my1, mz1 +DIM SHARED mx2, my2, mz2 +DIM SHARED mx3, my3, mz3 + +SCREEN 7, , , 1 + +1 +setan n1, n2, n3 + +FOR y = -70 TO 70 STEP 5 + FOR x = -70 TO 70 STEP 5 + gc x, y, SIN((ABS(x) + ABS(y)) / 30) * 30, x1, y1 + PSET (x1, y1), 15 + NEXT x +NEXT y +PCOPY 0, 1 +CLS +a$ = INPUT$(1) +IF a$ = "7" THEN n1 = n1 + .1 +IF a$ = "9" THEN n1 = n1 - .1 +IF a$ = "4" THEN n2 = n2 + .1 +IF a$ = "6" THEN n2 = n2 - .1 +IF a$ = "1" THEN n3 = n3 + .1 +IF a$ = "3" THEN n3 = n3 - .1 +IF a$ = CHR$(27) THEN SYSTEM +GOTO 1 + +SUB gc (x, y, z, x1, y1) + +rx = x * mx1 + y * my1 + z * mz1 ' matrix transformation +ry = x * mx2 + y * my2 + z * mz2 +rz = x * mx3 + y * my3 + z * mz3 + +rz = rz + 100 ' perspective calculation +x1 = rx / rz * 120 + 160 +y1 = ry / rz * 120 + 100 + +END SUB + +SUB setan (alp, bet, gam) +mx1 = SIN(gam) * SIN(bet) * SIN(alp) + COS(gam) * COS(alp) +my1 = COS(bet) * SIN(alp) +mz1 = SIN(gam) * COS(alp) - COS(gam) * SIN(bet) * SIN(alp) + +mx2 = SIN(gam) * SIN(bet) * COS(alp) - COS(gam) * SIN(alp) +my2 = COS(bet) * COS(alp) +mz2 = -COS(gam) * SIN(bet) * COS(alp) - SIN(gam) * SIN(alp) + +mx3 = -SIN(gam) * COS(bet) +my3 = SIN(bet) +mz3 = COS(gam) * COS(bet) +END SUB + diff --git a/graphics/3D/ray casting engine/index.html b/graphics/3D/ray casting engine/index.html new file mode 100755 index 0000000..d5184d9 --- /dev/null +++ b/graphics/3D/ray casting engine/index.html @@ -0,0 +1,16 @@ + +ray casting 3D engine + + + +

ray casting 3D engine

+
+
+3D engine what draws 3D landscape using ray casting alghoritm +in realtime. You can walk/jump around, rotate view and look up and down. +Image Quality will be automatically adjusted, to keep constant framerate. +At least Pentium 200 MHz in DOS mode should be nice. + +
+ + \ No newline at end of file diff --git a/graphics/3D/ray casting engine/raycast.bas b/graphics/3D/ray casting engine/raycast.bas new file mode 100755 index 0000000..49985b6 --- /dev/null +++ b/graphics/3D/ray casting engine/raycast.bas @@ -0,0 +1,308 @@ +' Ray casting engine, written by Svjatoslav Agejenko +' E-mail: svjatoslavagejenko@gmail.com +' Homepage: svjatoslav.eu +' 2003.03 + +' Quality will be automatically adjusted, +' to keep constant framerate. + +' at least P 200 MHz in DOS mode should be nice. + +' keys to use: +' Arrow keys - move around +' 4, 6 - turn left, right +' 8, 2 - look up, down +' Enter - Toggle full quality +' Space - jump up (fly) +' ESC - exit program + +DECLARE SUB makeland () +DECLARE FUNCTION getcol! (r!, g!, b!) +DEFINT A-Y +DECLARE SUB traceline (x%, y%, xl) +DECLARE SUB dispframe () +DECLARE SUB tower (x%, y%) +DECLARE SUB square (x1%, y1%, x2%, y2%, c%, h%) +DECLARE SUB displand () +DECLARE SUB start () +DECLARE SUB setupal () + +DIM SHARED landh(0 TO 180, 0 TO 180) +DIM SHARED landc(0 TO 180, 0 TO 180) + +DIM SHARED zmyx, zmyy, zmyz +DIM SHARED myx, myy, myz +DIM SHARED zmyan, myan2 +DIM SHARED ste, stem, dist +DIM SHARED tim$, frm, frmrate + +frmrate = 10 ' Desired framerate. + ' Lower framerate, better quality + +start +makeland + +displand +a$ = INPUT$(1) +1 +LOCATE 1, 35 +PRINT frml + +frm = frm + 1 +IF tim$ <> TIME$ THEN +tim$ = TIME$ +IF frm > frmrate THEN ste = ste - 1 ELSE ste = ste + 1 +IF ste < 1 THEN ste = 1 +stem = ste - 1 +frml = frm +frm = 0 +END IF + +a$ = INKEY$ +IF a$ <> "" THEN +SELECT CASE a$ +CASE "4" +zmyan = zmyan + .1 +CASE "6" +zmyan = zmyan - .1 +CASE "8" +myan2 = myan2 + 5 +CASE "2" +myan2 = myan2 - 5 +CASE CHR$(0) + "H" ' foward +zmyx = SIN(zmyan) * 3 + zmyx +zmyy = COS(zmyan) * 3 + zmyy +CASE CHR$(0) + "P" ' backward +zmyx = -SIN(zmyan) * 3 + zmyx +zmyy = -COS(zmyan) * 3 + zmyy +CASE CHR$(0) + "K" ' left +zmyx = COS(zmyan) * 3 + zmyx +zmyy = -SIN(zmyan) * 3 + zmyy +CASE CHR$(0) + "M" ' left +zmyx = -COS(zmyan) * 3 + zmyx +zmyy = SIN(zmyan) * 3 + zmyy +CASE " " ' jump +zmyzs = 2 +CASE CHR$(13) ' full quality +ste = 1 +CASE CHR$(27) ' exit +SYSTEM +END SELECT +END IF + +IF zmyx > 170 THEN zmyx = 170 +IF zmyy > 170 THEN zmyy = 170 +IF zmyx < 10 THEN zmyx = 10 +IF zmyy < 10 THEN zmyy = 10 + +zmyz = zmyz + zmyzs +zmyzs = zmyzs - .1 +IF zmyz < landh(myx, myy) + 10 THEN zmyz = landh(myx, myy) + 10: zmyzs = (zmyzs / 2) + .2 + +myz = zmyz +myy = zmyy +myx = zmyx +dispframe +GOTO 1 + +SUB dispframe + +l = 0 +zst = -.0031 * ste +FOR z = .5 TO -.5 STEP zst +traceline SIN(zmyan + z) * dist + myx, COS(zmyan + z) * dist + myy, l +l = l + ste +NEXT z + +END SUB + +SUB displand + + +FOR z = 0 TO 180 +zs = 1 +IF z > 120 THEN zs = .7 +IF z > 160 THEN zs = .6 +FOR zx = 0 TO 180 STEP zs +y1 = landh(zx, z) - 80 +zx1 = zx - 90 +z1 = 300 - z +zx2 = zx1 / z1 * 190 +zy2 = y1 / z1 * 190 + +LINE (zx2 + 160, 40 - zy2)-(zx2 + 160, 200), landc(zx, z) +NEXT zx +NEXT z + +LOCATE 1, 1 +PRINT "Press any key to continue..." + +END SUB + +DEFSNG A-Y +FUNCTION getcol (r, g, b) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 255 THEN r = 255 +IF g > 255 THEN g = 255 +IF b > 255 THEN b = 255 +getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43) +END FUNCTION + +DEFINT A-Y +SUB makeland + +square 0, 0, 180, 180, 15, 0 + +FOR y = 0 TO 180 +FOR x = 0 TO 180 +x1 = (x \ 10) MOD 2 +y1 = (y \ 10) MOD 2 +c = (x1 + y1) MOD 2 +IF c = 0 THEN + landc(x, y) = getcol(0, 0, 250) +ELSE + landc(x, y) = getcol(50, 50, 50) +END IF +NEXT x +NEXT y + +FOR y = 10 TO 90 +FOR x = 90 TO 170 +v = SQR((ABS(50 - y)) ^ 2 + (ABS(130 - x)) ^ 2) +h = SQR((60 - v) * (60 + v)) - 35 +IF h > 0 THEN landh(x, y) = h +NEXT x +NEXT y + +tower 20, 20 +tower 60, 20 +tower 40, 60 + +FOR y = 100 TO 150 +FOR x = 0 TO 50 +landc(x, y) = getcol(SIN((x + y) / 2) * 125 + 125, SIN(x / 2) * 125 + 125, SIN(y / 2) * 125 + 125) +landh(x, y) = 50 - x +NEXT x +NEXT y + +FOR za = 0 TO 20 STEP .1 +x = SIN(za) * (1 + (za * 2)) + 100 +y = COS(za) * (1 + (za * 2)) + 100 +landc(x, y) = 200 +landc(x + 1, y) = 200 +landc(x, y + 1) = 200 +landc(x + 1, y + 1) = 200 +NEXT za + +END SUB + +SUB setupal +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r +END SUB + +SUB square (x1, y1, x2, y2, c, h) + +FOR y = y1 TO y2 +FOR x = x1 TO x2 +landh(x, y) = h +landc(x, y) = c +NEXT x +NEXT y + +END SUB + +SUB start +SCREEN 13 +PRINT "please wait..." + +setupal + +zmyan = 4.14 +myan2 = 100 +ste = 1 +stem = ste - 1 +dist = 190 +tim$ = TIME$ +zmyx = 170 +zmyy = 170 +zmyz = 20 + +END SUB + +SUB tower (x, y) + +FOR a = 10 TO 0 STEP -1 +square x - a, y - a, x + a, y + a, getcol(100, 0, a * 20), 20 - a +NEXT a + +square x - 11, y - 11, x - 9, y - 9, getcol(255, 0, 0), 20 +square x + 9, y - 11, x + 11, y - 9, getcol(0, 255, 0), 20 +square x - 11, y + 9, x - 9, y + 11, getcol(0, 0, 255), 20 +square x + 9, y + 9, x + 11, y + 11, getcol(255, 255, 0), 20 + + +END SUB + +SUB traceline (x, y, xl%) + +IF x < 0 THEN +zpr = myx / (myx - x) +x = 0 +y = myy - ((myy - y) * zpr) +END IF + +IF y < 0 THEN +zpr = myy / (myy - y) +y = 0 +x = myx - ((myx - x) * zpr) +END IF + +IF x > 180 THEN +zpr = (180 - myx) / (x - myx) +x = 180 +y = myy - ((myy - y) * zpr) +END IF + +IF y > 180 THEN +zpr = (180 - myy) / (y - myy) +y = 180 +x = myx - ((myx - x) * zpr) +END IF + +lp = SQR(ABS(myx - x) ^ 2 + ABS(myy - y) ^ 2) + +imyx% = myx +imyy% = myy +imyz% = myz +xp% = x - imyx% +yp% = y - imyy% +istem% = stem +imyan2% = myan2 + +yo% = 200 +FOR a% = 1 TO lp% + cx% = xp% * a% / lp% + imyx% + cy% = yp% * a% / lp% + imyy% + yn% = imyan2% - ((landh(cx%, cy%) - imyz%) / a%) * 300 + IF yn% < yo% THEN + LINE (xl%, yn%)-(xl% + istem%, yo% - 1), landc(cx%, cy%), BF + yo% = yn% + END IF +NEXT a +LINE (xl%, yo% - 1)-(xl% + istem%, 0), 0, BF + +END SUB + diff --git a/graphics/3D/ray casting engine/sshot.png b/graphics/3D/ray casting engine/sshot.png new file mode 100755 index 0000000..bc1851d Binary files /dev/null and b/graphics/3D/ray casting engine/sshot.png differ diff --git a/graphics/3D/realtime anaglyph/glasses-front.gif b/graphics/3D/realtime anaglyph/glasses-front.gif new file mode 100755 index 0000000..600c018 Binary files /dev/null and b/graphics/3D/realtime anaglyph/glasses-front.gif differ diff --git a/graphics/3D/realtime anaglyph/index.html b/graphics/3D/realtime anaglyph/index.html new file mode 100755 index 0000000..43346da --- /dev/null +++ b/graphics/3D/realtime anaglyph/index.html @@ -0,0 +1,18 @@ + +stereo vision + + + +

stereo vision

+
+
+3D engine producing realtime stereo view. (ANAGLYPH) +Conical grid with cubes flying around. +You can freely fly around and adjust +stereo view properties. Requires stereo glasses. + +
+ +
+ + \ No newline at end of file diff --git a/graphics/3D/realtime anaglyph/sshot.png b/graphics/3D/realtime anaglyph/sshot.png new file mode 100755 index 0000000..8f81825 Binary files /dev/null and b/graphics/3D/realtime anaglyph/sshot.png differ diff --git a/graphics/3D/realtime anaglyph/stereo.BAS b/graphics/3D/realtime anaglyph/stereo.BAS new file mode 100755 index 0000000..a17677d --- /dev/null +++ b/graphics/3D/realtime anaglyph/stereo.BAS @@ -0,0 +1,444 @@ +DECLARE SUB ling (x1%, y1%, x2%, y2%) +' Svjatoslav Agejenko, svjatoslavagejenko@gmail.com, svjatoslav.eu +' 2004.07 + +' Generate stereo image. Red & Green (blue) glasses necessary. + +' arrow keys - move around +' 2, 6, 4, 8 - look around +' - - fly up +' + - fly down +' q, w - change horisontal distance between left and right view + + +DECLARE SUB mkkoll () +DECLARE SUB putkol () +DECLARE SUB rend () +DECLARE SUB env () +DECLARE SUB start () +DIM SHARED npo, nlo, np, nl +DIM SHARED px(1 TO 1000) +DIM SHARED py(1 TO 1000) +DIM SHARED pz(1 TO 1000) + +DIM SHARED rpx(1 TO 1000) +DIM SHARED rpx2(1 TO 1000) +DIM SHARED rpy(1 TO 1000) + +DIM SHARED orpx(1 TO 1000) +DIM SHARED orpx2(1 TO 1000) +DIM SHARED orpy(1 TO 1000) +DIM SHARED onp +DIM SHARED lin1(1 TO 1000) +DIM SHARED lin2(1 TO 1000) +DIM SHARED linc(1 TO 1000) +DIM SHARED olin1(1 TO 1000) +DIM SHARED olin2(1 TO 1000) +DIM SHARED onl +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED an1, an2 +DIM SHARED an1s, an2s +DIM SHARED kolx(1 TO 10) +DIM SHARED koly(1 TO 10) +DIM SHARED kolz(1 TO 10) +DIM SHARED kolxs(1 TO 10) +DIM SHARED kolys(1 TO 10) +DIM SHARED kolzs(1 TO 10) +DIM SHARED kolm +DIM SHARED difp + +DIM SHARED spee + +spee = 4 +'ON ERROR GOTO 2 + +start +env +putkol +difp = -.1 +1 +PCOPY 0, 1 +CLS + +np = npo +nl = nlo + +mkkoll +rend + +myx = myx + myxs +myy = myy + myys +myz = myz + myzs +an1 = an1 + an1s +an2 = an2 + an2s + +a$ = INKEY$ +IF a$ <> "" THEN +IF a$ = CHR$(0) + "H" THEN +myzs = myzs - SIN(an1) / 100 +myxs = myxs - COS(an1) / 100 +END IF +IF a$ = CHR$(0) + "P" THEN +myzs = myzs + SIN(an1) / 100 +myxs = myxs + COS(an1) / 100 +END IF +IF a$ = CHR$(0) + "M" THEN +myzs = myzs + COS(an1) / 100 +myxs = myxs - SIN(an1) / 100 +END IF +IF a$ = CHR$(0) + "K" THEN +myzs = myzs - COS(an1) / 100 +myxs = myxs + SIN(an1) / 100 +END IF + +IF a$ = "6" THEN an1s = an1s - .01 +IF a$ = "4" THEN an1s = an1s + .01 +IF a$ = "8" THEN an2s = an2s - .01 +IF a$ = "2" THEN an2s = an2s + .01 +IF a$ = "+" THEN myys = myys - .01 +IF a$ = "-" THEN myys = myys + .01 +IF a$ = "q" THEN difp = difp - .01 +IF a$ = "w" THEN difp = difp + .01 +IF a$ = " " THEN + myxs = myxs / 2 + myys = myys / 2 + myzs = myzs / 2 + + an1s = an1s / 2 + an2s = an2s / 2 + an3s = an3s / 2 + +END IF +IF a$ = CHR$(27) THEN SYSTEM +END IF +GOTO 1 +2 +END +RESUME + +SUB env + +FOR z = -5 TO 5 +FOR x = -5 TO 5 +np = np + 1 +px(np) = x +py(np) = SIN(SQR(x * x + z * z) / 2) +pz(np) = z +IF x > -5 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 1 +linc(nl) = 3 +END IF +IF z > -5 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 11 +linc(nl) = 3 +END IF +NEXT x +NEXT z + +npo = np +nlo = nl + + +END SUB + +SUB env1 + +np = 1 +px(np) = -2 +py(np) = 0 +pz(np) = 0 +np = np + 1 +px(np) = 2 +py(np) = 0 +pz(np) = 0 + +nl = 1 +lin1(nl) = 1 +lin2(nl) = 2 +linc(nl) = 14 + +END SUB + +SUB ling (x1%, y1%, x2%, y2%) + +s = ABS(x1% - x2%) +s2 = ABS(y1% - y2%) +IF s2 > s THEN s = s2 +IF s < 2 THEN GOTO 101 +xp = x2% - x1% +yp = y2% - y1% + +FOR a% = 1 TO s + rx% = xp * a% / s + x1% + ry% = yp * a% / s + y1% + c% = POINT(rx%, ry%) + IF c% = 0 THEN PSET (rx%, ry%), 2 + IF c% = 1 THEN PSET (rx%, ry%), 3 +NEXT a% +101 +END SUB + +SUB linr (x1, y1, x2, y2) + LINE (x1, y1)-(x2, y2), 1 +END SUB + +SUB mkkoll + +FOR a = 1 TO kolm +x = kolx(a) +y = koly(a) +z = kolz(a) + +xs = kolxs(a) +ys = kolys(a) +zs = kolzs(a) + +ys = ys - .01 + +x = x + xs / spee +y = y + ys / spee +z = z + zs / spee + +IF x > 5 THEN xs = -.1 +IF z > 5 THEN zs = -.1 +IF x < -5 THEN xs = .1 +IF z < -5 THEN zs = .1 +IF y < .5 THEN ys = RND * .2 + .1 + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 2 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 2 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 4 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 4 +linc(nl) = 14 + + +nl = nl + 1 +lin1(nl) = np + 1 +lin2(nl) = np + 5 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 2 +lin2(nl) = np + 6 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 3 +lin2(nl) = np + 7 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 4 +lin2(nl) = np + 8 +linc(nl) = 14 + + + +nl = nl + 1 +lin1(nl) = np + 5 +lin2(nl) = np + 6 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 7 +lin2(nl) = np + 6 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 7 +lin2(nl) = np + 8 +linc(nl) = 14 + +nl = nl + 1 +lin1(nl) = np + 5 +lin2(nl) = np + 8 +linc(nl) = 14 + + + + +np = np + 1 +px(np) = x - .5 +py(np) = y - .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y - .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y + .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y + .5 +pz(np) = z - .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y - .5 +pz(np) = z + .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y - .5 +pz(np) = z + .5 + +np = np + 1 +px(np) = x + .5 +py(np) = y + .5 +pz(np) = z + .5 + +np = np + 1 +px(np) = x - .5 +py(np) = y + .5 +pz(np) = z + .5 + + + + +kolx(a) = x +koly(a) = y +kolz(a) = z +kolxs(a) = xs +kolys(a) = ys +kolzs(a) = zs +NEXT a + +END SUB + +SUB putkol + +s = 1 +FOR a = 1 TO kolm +kolx(a) = RND * 10 - 5 +koly(a) = 2 +kolz(a) = RND * 10 - 5 +kolxs(a) = (RND * .5 - .25) / s +kolys(a) = (RND * .5 + .1) / s +kolzs(a) = (RND * .5 - .25) / s +NEXT a +END SUB + +SUB rend +'C3& = Cosine&(Deg3): S3& = Sine&(Deg3) + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +FOR a = 1 TO np +x = px(a) + myx +y = py(a) - myy +z = pz(a) + myz + +x1 = x * s1 - z * c1 +z1 = x * c1 + z * s1 +y1 = y * s2 - z1 * c2 +z2 = y * c2 + z1 * s2 + +IF z2 < .1 THEN +rpx(a) = -1 +ELSE +rpx(a) = 160 + ((x1 + difp) / z2 * 200) +rpx2(a) = 160 + ((x1 - difp) / z2 * 200) +rpy(a) = 100 - (y1 / z2 * 200) + +END IF +NEXT a + + +FOR a = 1 TO nl +l1 = lin1(a) +l2 = lin2(a) +IF rpx(l1) = -1 OR rpx(l2) = -1 THEN + ELSE + LINE (rpx(l1), rpy(l1))-(rpx(l2), rpy(l2)), 1 +END IF +NEXT + +FOR a = 1 TO nl +l1 = lin1(a) +l2 = lin2(a) +IF rpx(l1) = -1 OR rpx(l2) = -1 THEN + ELSE + ling INT(rpx2(l1)), INT(rpy(l1)), INT(rpx2(l2)), INT(rpy(l2)) +END IF +NEXT + + +END SUB + +SUB start +SCREEN 7, , , 1 + +OUT &H3C8, 0 +OUT &H3C9, 63 +OUT &H3C9, 63 +OUT &H3C9, 63 + + +OUT &H3C8, 1 +OUT &H3C9, 63 +OUT &H3C9, 0 +OUT &H3C9, 0 + +OUT &H3C8, 2 +OUT &H3C9, 0 +OUT &H3C9, 63 +OUT &H3C9, 63 + +OUT &H3C8, 3 +OUT &H3C9, 0 +OUT &H3C9, 0 +OUT &H3C9, 0 + + +npo = 0 +nlo = 0 +np = npo +nl = nlo +kolm = 9 + +myx = 0 +myy = 4 +myz = 7 +an1 = 3.14 / 2 +an2 = an1 + .6 + +FOR a = 1 TO 1000 +linc(a) = 4 +NEXT a + +FOR a = 1 TO 1000 +olin1(a) = 1 +olin2(a) = 1 +NEXT a + + + +END SUB + diff --git a/graphics/3D/rocket.bas b/graphics/3D/rocket.bas new file mode 100755 index 0000000..69cc0f7 --- /dev/null +++ b/graphics/3D/rocket.bas @@ -0,0 +1,493 @@ +' 3D rocket simulator +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +' arrow keys - move around +' 2, 6, 4, 8 - look around +' - - fly up +' + - fly down + + +DECLARE SUB addp () +DECLARE SUB addl () +DEFDBL A-Z +DECLARE SUB teerock () +DECLARE SUB teemaa () +DECLARE SUB start () +DECLARE SUB n3d () + +DIM SHARED px(1 TO 1500) +DIM SHARED py(1 TO 1500) +DIM SHARED pz(1 TO 1500) + +DIM SHARED l1(1 TO 3000) +DIM SHARED l2(1 TO 3000) +DIM SHARED lc(1 TO 3000) + +DIM SHARED rpx(1 TO 1900) +DIM SHARED rpy(1 TO 1900) + +DIM SHARED rkx(1 TO 200) +DIM SHARED rky(1 TO 200) +DIM SHARED rkz(1 TO 200) + +DIM SHARED mitp, mitl +DIM SHARED myx, myy, myz +DIM SHARED myxp, myyp, myzp +DIM SHARED my1, my2 + + +DIM SHARED ox1(1 TO 2500) +DIM SHARED oy1(1 TO 2500) +DIM SHARED ox2(1 TO 2500) +DIM SHARED oy2(1 TO 2500) +DIM SHARED frm, frm2, frm3 + +DIM SHARED mk, mks, rs, rst +DIM SHARED pi +DIM SHARED rkb, rke, rkm +DIM SHARED rx, ry, rz, rxp, ryp, rzp + +DIM SHARED tmr$, ts +DIM SHARED ale + +start +my1 = -pi / 2 + +rx = 0 +ry = mk / 2 + .009 +rz = 0 + +myx = 0 +myy = mk / 2 +myz = -.05 + +ts = 0 +frm2 = 999999 +tmr$ = TIME$ +1 +frm = frm + 1 +frm2 = frm2 + 1 + +LOCATE 1, 1 +PRINT mitp, mitl, mk, mks +LOCATE 2, 1 +PRINT rkb, rke, TIMER + + +rx = rx + (rxp * ts) +ry = ry + (ryp * ts) +rz = rz + (rzp * ts) + +ryp = ryp + (.0098 * ts) +rxp = SIN(frm / 20) / 50 +'ryp = .001 + +FOR a = 1 TO rkm +px(a + rkb - 1) = rkx(a) + rx +py(a + rkb - 1) = rky(a) + ry +pz(a + rkb - 1) = rkz(a) + rz +NEXT a + + +myx = myx + (myxp * ts) +myy = myy + (myyp * ts) +myz = myz + (myzp * ts) + +n3d + + + +a$ = INKEY$ +IF a$ <> "" THEN +IF a$ = CHR$(0) + "H" THEN +myzp = myzp - SIN(my1) / 100 +myxp = myxp + COS(my1) / 100 +END IF +IF a$ = CHR$(0) + "P" THEN +myzp = myzp + SIN(my1) / 100 +myxp = myxp - COS(my1) / 100 +END IF + +IF a$ = CHR$(0) + "M" THEN +myzp = myzp + COS(my1) / 100 +myxp = myxp + SIN(my1) / 100 +END IF +IF a$ = CHR$(0) + "K" THEN +myzp = myzp - COS(my1) / 100 +myxp = myxp - SIN(my1) / 100 +END IF + + +IF a$ = CHR$(27) THEN SYSTEM +IF a$ = "4" THEN my1 = my1 + .1 +IF a$ = "6" THEN my1 = my1 - .1 +IF a$ = "2" THEN my2 = my2 + .1 +IF a$ = "8" THEN my2 = my2 - .1 +IF a$ = "-" THEN myyp = myyp + .01 +IF a$ = "+" THEN myyp = myyp - .01 +IF a$ = " " THEN myzp = myzp / 2: myxp = myxp / 2 + +END IF + +v = SQR(rx * rx + ry * ry + rz * rz) +s = SQR(rxp * rxp + ryp * ryp + rzp * rzp) + + +IF tmr$ <> TIME$ THEN +tmr$ = TIME$ + +LOCATE 29, 1 +PRINT "speed"; INT(s * 1000) +LOCATE 30, 1 +PRINT "fps"; frm3; "timeslice"; INT(ts * 1000); "distance"; v; +frm3 = frm2 +ts = 1 / frm3 +frm2 = 0 +addp +addl +END IF +GOTO 1 + +SUB addl +mitp = mitp + 1 +px(mitp) = rx +py(mitp) = ry +pz(mitp) = rz + +IF ale > 0 THEN +mitl = mitl + 1 +l1(mitl) = ale +l2(mitl) = mitp +lc(mitl) = 13 +END IF + +ale = mitp +END SUB + +SUB addp +'DIM SHARED mitp, mitl +mitp = mitp + 1 +px(mitp) = rx +py(mitp) = ry +pz(mitp) = rz + +mitp = mitp + 1 +px(mitp) = rx - .001 +py(mitp) = ry - .001 +pz(mitp) = rz + +mitp = mitp + 1 +px(mitp) = rx + .001 +py(mitp) = ry - .001 +pz(mitp) = rz + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 1 +lc(mitl) = 14 + +mitl = mitl + 1 +l1(mitl) = mitp - 2 +l2(mitl) = mitp - 1 +lc(mitl) = 14 + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 2 +lc(mitl) = 14 + + + +END SUB + +SUB n3d +s1 = SIN(my1) +c1 = COS(my1) + +s2 = SIN(my2) +c2 = COS(my2) + + +FOR a = 1 TO mitp +x = px(a) - myx +y = py(a) - myy +z = pz(a) - myz + +x1 = x * s1 + z * c1 +z1 = x * c1 - z * s1 + +y1 = z1 * s2 + y * c2 +z2 = z1 * c2 - y * s2 + +IF z2 < .00001 THEN +rpx(a) = -1 +ELSE +rpx(a) = x1 / z2 * 200 + 320 +rpy(a) = 240 - y1 / z2 * 200 +IF rpx(a) < -50 OR rpx(a) > 1000 OR rpy(a) < -50 OR rpy(a) > 1000 THEN rpx(a) = -1 +END IF +NEXT a + + + +FOR a = 1 TO mitl +p1 = l1(a) +p2 = l2(a) +x1 = rpx(p1) +y1 = rpy(p1) +x2 = rpx(p2) +y2 = rpy(p2) +IF ox1(a) = -1 OR ox2(a) = -1 THEN ELSE LINE (ox1(a), oy1(a))-(ox2(a), oy2(a)), 0 +IF x1 = -1 OR x2 = -1 THEN GOTO 2 +LINE (x1, y1)-(x2, y2), lc(a) +2 +ox1(a) = x1 +oy1(a) = y1 +ox2(a) = x2 +oy2(a) = y2 + +NEXT a + + +END SUB + +SUB start +SCREEN 12 +VIEW PRINT 1 TO 30 + +mk = 12714 +'mks = 250 +mks = 500 +rst = 4 +pi = 3.142657 +rs = .00002 +frm2 = 0 + +ale = -1 +px(1) = -.001 +py(1) = mk / 2 +pz(1) = -.001 + +px(2) = .001 +py(2) = mk / 2 +pz(2) = -.001 + +px(3) = .001 +py(3) = mk / 2 +pz(3) = .001 + +px(4) = -.001 +py(4) = mk / 2 +pz(4) = .001 + +mitp = 4 + +l1(1) = 1 +l2(1) = 2 +lc(1) = 14 + +l1(2) = 2 +l2(2) = 3 +lc(2) = 14 + +l1(3) = 3 +l2(3) = 4 +lc(3) = 14 + +l1(4) = 4 +l2(4) = 1 +lc(4) = 14 + +mitl = 4 + +myx = 0 +myy = mk * 2 +myz = -35 + +teemaa +myxp = 0 +myyp = 0 +myzp = 0 + +my1 = 0 + +rkb = mitp + 1 +teerock +rke = mitp + +rkm = rke - rkb + 1 +'DIM SHARED rkx(1 TO 1000) +'DIM SHARED rky(1 TO 1000) +'DIM SHARED rkz(1 TO 1000) + +FOR a = 1 TO rkm +p = rkb + a - 1 +rkx(a) = px(p) +rky(a) = py(p) +rkz(a) = pz(p) +NEXT a + + +END SUB + +SUB teemaa +tmpp = mitp +le2 = 0 + +FOR z = -(mk / 3) TO (mk / 3) STEP mks +le = 0 +le2 = le2 + 1 +FOR x = -(mk / 3) TO (mk / 3) STEP mks + + +IF SQR(x * x + z * z) > (mk / 2.5) THEN GOTO 4 +le = le + 1 +IF le = 1 THEN xs = (x / mks) +mitp = mitp + 1 +px(mitp) = x +v = SQR(x * x + z * z) +py(mitp) = SQR((v + (mk / 2)) * ((mk / 2) - v)) +pz(mitp) = z +IF le > 1 THEN +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 1 +lc(mitl) = 3 +END IF + +IF le2 > 1 THEN +IF xso > (x / mks) THEN GOTO 4 +IF xso + leo <= (x / mks) THEN GOTO 4 + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - leo - xso + xs +lc(mitl) = 3 +END IF +4 + +NEXT x +leo = le +xso = xs +NEXT z + +END SUB + +SUB teerock + + +s = 50 +FOR y = -9 TO 10 STEP rst +st = pi * 2 / 6 +IF y > 5 THEN s = s - 3 +IF y > 8 THEN s = s - 6 +FOR a = 0 TO pi * 2 STEP st +x1 = SIN(a) * s +z1 = COS(a) * s +'DIM SHARED mitp, mitl +'DIM SHARED px(1 TO 4000) +'DIM SHARED py(1 TO 4000) +'DIM SHARED pz(1 TO 4000) +'DIM SHARED l1(1 TO 7000) +'DIM SHARED l2(1 TO 7000) +'DIM SHARED lc(1 TO 7000) + +mitp = mitp + 1 +px(mitp) = x1 * rs +py(mitp) = y * 50 * rs +pz(mitp) = z1 * rs + +IF a > 0 THEN +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 1 +lc(mitl) = 10 +END IF + +IF y > -9 THEN +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 7 +lc(mitl) = 10 +END IF + +NEXT a +NEXT y + +mitp = mitp + 1 +px(mitp) = 0 +py(mitp) = 11 * 50 * rs +pz(mitp) = 0 + + +FOR a = 1 TO 6 +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - a +lc(mitl) = 10 +NEXT a + +mitp = mitp + 1 +px(mitp) = -100 * rs +py(mitp) = -450 * rs +pz(mitp) = 0 + +mitp = mitp + 1 +px(mitp) = 100 * rs +py(mitp) = -450 * rs +pz(mitp) = 0 + +mitp = mitp + 1 +px(mitp) = 0 +py(mitp) = -200 * rs +pz(mitp) = 0 + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 1 +lc(mitl) = 12 + +mitl = mitl + 1 +l1(mitl) = mitp - 2 +l2(mitl) = mitp - 1 +lc(mitl) = 12 + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 2 +lc(mitl) = 12 + + + +mitp = mitp + 1 +px(mitp) = 0 +py(mitp) = -450 * rs +pz(mitp) = -100 * rs + +mitp = mitp + 1 +px(mitp) = 0 +py(mitp) = -450 * rs +pz(mitp) = 100 * rs + + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 1 +lc(mitl) = 12 + +mitl = mitl + 1 +l1(mitl) = mitp - 2 +l2(mitl) = mitp - 1 +lc(mitl) = 12 + +mitl = mitl + 1 +l1(mitl) = mitp +l2(mitl) = mitp - 2 +lc(mitl) = 12 + + +END SUB + diff --git a/graphics/3D/stars.bas b/graphics/3D/stars.bas new file mode 100755 index 0000000..1247455 --- /dev/null +++ b/graphics/3D/stars.bas @@ -0,0 +1,140 @@ +' 3D starfield +' made by Svjatoslav Agejenko +' in 2003.03 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB setstar (x2!, y2!, z2!) +DECLARE SUB galaxy () +DIM SHARED mitu +DIM SHARED mituv + + +RANDOMIZE TIMER +mituv = 2000 +mitu = mituv +rns = 500 +wl = 0 + +DIM SHARED px(1 TO mitu + 1000) +DIM SHARED py(1 TO mitu + 1000) +DIM SHARED pz(1 TO mitu + 1000) + +FOR a = 1 TO mitu +pz(a) = RND * 500 + 20 + n = RND * 100 + px(a) = SIN(n) * 20 + py(a) = COS(n) * 20 +NEXT a + + +SCREEN 13 + + +frm = 10 +1 +fps = fps + 1 +IF tm$ <> TIME$ THEN +'LOCATE 1, 1 +'PRINT fps +IF fps > 20 THEN wl = wl + 2 ELSE wl = wl - 1 +IF wl < 0 THEN wl = 0 +fps = 0 +tm$ = TIME$ +END IF +frm = frm + 1 +xp = SIN(frm / 21) * 3 +yp = SIN(frm / 18) * 3 + +nrk = (3.1412) / 2 + SIN(frm / 35) / 100 + SIN(frm / 21) / 100 +rs1 = SIN(nrk) +rc1 = COS(nrk) + +FOR a = 1 TO mitu +x = px(a) +y = py(a) +z = pz(a) +x1 = x / z * 160 + 160 +y1 = y / z * 100 + 100 +PSET (x1, y1), 0 + +x5 = x * rs1 - y * rc1 +y5 = x * rc1 + y * rs1 + +x = x5 +y = y5 + +z = z - 3 +x = x + xp +y = y + yp +IF z < 10 THEN +z = RND * 300 + 400 +x = RND * 800 - 400 +y = RND * 800 - 400 +END IF + +x1 = x / z * 160 + 160 +y1 = y / z * 100 + 100 +c = 3000 / z + 15 +IF c > 31 THEN c = 31 +PSET (x1, y1), c + +px(a) = x +py(a) = y +pz(a) = z +NEXT a + + +IF mituv - mitu > rns THEN galaxy: rns = RND * 800 + 100 + +FOR a = 1 TO 2 +b = RND * (mitu - 10) + 1 +SWAP px(mitu), px(b) +SWAP py(mitu), py(b) +SWAP pz(mitu), pz(b) + +x = px(mitu) +y = py(mitu) +z = pz(mitu) +x1 = x / z * 160 + 160 +y1 = y / z * 100 + 100 +PSET (x1, y1), 0 +mitu = mitu - 1 +NEXT a + +'LOCATE 2, 1 +'PRINT wl +FOR a = 0 TO wl +FOR b = 0 TO 1000 +c = c / 100 +NEXT b +NEXT a + +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + +SUB galaxy + +xf = RND * 4 - 2 +yf = RND * 4 - 2 +xp = RND * 200 - 100 +yp = RND * 200 - 100 + +FOR a = 1 TO RND * 15 + 10 STEP .04 +x = SIN(a) * a * a / 10 +y = COS(a) * a * a / 10 +setstar x + RND * a * a / 30 + xp, y + RND * a * a / 30 + yp, 700 + RND * a * a / 30 + (x * xf) + (y * yf) +NEXT a + +'SOUND 1000, 1 +END SUB + +SUB setstar (x2, y2, z2) +mitu = mitu + 1 +s = mitu + +px(s) = x2 +py(s) = y2 +pz(s) = z2 +END SUB + diff --git a/graphics/3D/swapping 3D engine/doc/index.html b/graphics/3D/swapping 3D engine/doc/index.html new file mode 100755 index 0000000..6552282 --- /dev/null +++ b/graphics/3D/swapping 3D engine/doc/index.html @@ -0,0 +1,29 @@ + +swapping 3D engine + + + +

swapping 3D engine

+
+
+3D engine implements visibility distance, far away objects will be +swapped into hard disk to increase framerate and reduce memory usage. +Visibility distance adjusts automatically. + +This techniqe allows handling of a very complex world (for QBasic). +World is broked down to 100x100x100 units sized blocks, +and stored on disk into separate files. One file per +block. + +This is just an experiment to test out the idea, +world will be synthezied and constantly updated. +Engine allows user to freely fly around using mouse and keyboard. + +
+
+System requirements:
+	CPU 500 MHz or better
+	MS QBasic (preferably QB 4.5) in your path
+
+ + \ No newline at end of file diff --git a/graphics/3D/swapping 3D engine/doc/sshot.png b/graphics/3D/swapping 3D engine/doc/sshot.png new file mode 100755 index 0000000..d482abb Binary files /dev/null and b/graphics/3D/swapping 3D engine/doc/sshot.png differ diff --git a/graphics/3D/swapping 3D engine/engine.bas b/graphics/3D/swapping 3D engine/engine.bas new file mode 100755 index 0000000..4f22c1d --- /dev/null +++ b/graphics/3D/swapping 3D engine/engine.bas @@ -0,0 +1,932 @@ +DECLARE SUB createLongLine (x1!, y1!, z1!, x2!, y2!, z2!, c!) +DECLARE SUB makeGrid (x1!, y1!, z1!, x2!, y2!, z2!) +DECLARE SUB prn (a$, x!, y!, z!) +DECLARE SUB fill4 () +DECLARE SUB loadObject (name$, x!, y!, z!) +DECLARE SUB putChar (a$, x!, y!, z!) +' 3D engine +' made by Svjatoslav Agejenko +' last edit 2004.1 +' E-Mail: svjatoslavagejenko@gmail.com +' H-Page: svjatoslav.eu + +DECLARE SUB fill3 () +DECLARE SUB fill1 () +DECLARE SUB fill2 () +DECLARE SUB addMsg (a$) +DECLARE SUB dispmsg () +DECLARE SUB loadArea (tx1!, ty1!, tz1!, tx2!, ty2!, tz2!) +DECLARE SUB loadCluster (x!, y!, z!) +DECLARE SUB checkVisibility () +DECLARE SUB decVisibility () +DECLARE SUB applyBounds () +DECLARE SUB clearWorld () +DECLARE SUB createNewLine (x1!, y1!, z1!, x2!, y2!, z2!, c!) +DECLARE SUB createWorld () +DECLARE FUNCTION getClustName$ (a!, b!, c!) +DECLARE FUNCTION toStr$ (a!) + +DECLARE SUB insertLine (x1!, y1!, z1!, x2!, y2!, z2!, c!) +DECLARE SUB startext () +DECLARE SUB control () +DECLARE SUB putbyte (addr!, dat!) +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () +DECLARE SUB render () + + +DIM SHARED an1, an2 + +DIM SHARED extSEG, extADDR +DIM SHARED buttL, buttR +DIM SHARED maxmove + +DIM SHARED linAmo +linAmo = 5000 + +DIM SHARED linX1(0 TO linAmo) AS INTEGER +DIM SHARED linY1(0 TO linAmo) AS INTEGER +DIM SHARED linZ1(0 TO linAmo) AS INTEGER +DIM SHARED linX2(0 TO linAmo) AS INTEGER +DIM SHARED linY2(0 TO linAmo) AS INTEGER +DIM SHARED linZ2(0 TO linAmo) AS INTEGER +DIM SHARED linC(0 TO linAmo) AS INTEGER + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs + +DIM SHARED curFreeLine +DIM SHARED worldSize + +DIM SHARED usedLines +DIM SHARED desMaxLines + +DIM SHARED visMaxX, visMaxY, visMaxZ +DIM SHARED visMinX, visMinY, visMinZ + +DIM SHARED visDist +DIM SHARED msgs$(1 TO 10) +DIM SHARED frm + + +'DIM SHARED blkData(1 TO 50) AS STRING * 512 +'DIM SHARED blkFrag(1 TO 50) AS STRING * 512 + + + + +nl = 0 +np = 0 + +start + + +cx = 0 +cy = 0 +cz = 0 + +np = 1 +px(1) = 0 +py(1) = 0 +pz(1) = 0 + +makeGrid -400, -400, -400, 400, 400, 400 + +1 +frm = frm + 1 + +'fill1 +fill2 +fill3 +fill4 + + +control + +render + +LOCATE 1, 1 +PRINT usedLines, visDist + +checkVisibility + +PCOPY 0, 1 +CLS +GOTO 1 + +SUB addMsg (a$) + +FOR a = 1 TO 9 + msgs$(a) = msgs$(a + 1) +NEXT a + +msgs$(10) = a$ +END SUB + +SUB applyBounds + +FOR a = 0 TO linAmo + IF linC(a) > 0 THEN + + + cx = (linX1(a) + linX2(a)) / 2 + cy = (linY1(a) + linY2(a)) / 2 + cz = (linZ1(a) + linZ2(a)) / 2 + + clx = INT(cx / 100) + cly = INT(cy / 100) + clz = INT(cz / 100) + + IF clx > visMaxX THEN GOTO 8 + IF clx < visMinX THEN GOTO 8 + + IF cly > visMaxY THEN GOTO 8 + IF cly < visMinY THEN GOTO 8 + + IF clz > visMaxZ THEN GOTO 8 + IF clz < visMinZ THEN GOTO 8 + + GOTO 7 +8 linC(a) = -1 + usedLines = usedLines - 1 + END IF +7 +NEXT a + +END SUB + +SUB checkVisibility + +'DIM SHARED visMaxX, visMaxY, visMaxZ +'DIM SHARED visMinX, visMinY, visMinZ + + +mx = INT(myx / 100) +my = INT(myy / 100) +mz = INT(myz / 100) + + +IF mx + visDist > visMaxX THEN + newX = mx + visDist + loadArea visMaxX + 1, visMinY, visMinZ, newX, visMaxY, visMaxZ + visMaxX = newX + LOCATE 1, 30 + PRINT "1" +END IF +IF mx - visDist < visMinX THEN + newX = mx - visDist + loadArea visMinX - 1, visMinY, visMinZ, newX, visMaxY, visMaxZ + visMinX = newX + LOCATE 1, 30 + PRINT "2" +END IF + + +IF my + visDist > visMaxY THEN + newY = my + visDist + loadArea visMinX, visMaxY + 1, visMinZ, visMaxX, newY, visMaxZ + visMaxY = newY + LOCATE 1, 30 + PRINT "3" +END IF +IF my - visDist < visMinY THEN + newY = my - visDist + loadArea visMinX, visMinY - 1, visMinZ, visMaxX, newY, visMaxZ + visMinY = newY + LOCATE 1, 30 + PRINT "4" +END IF + + +IF mz + visDist > visMaxZ THEN + newZ = mz + visDist + loadArea visMinX, visMinY, visMaxZ + 1, visMaxX, visMaxY, newZ + visMaxZ = newZ + LOCATE 1, 30 + PRINT "5" +END IF +IF mz - visDist < visMinZ THEN + newZ = mz - visDist + loadArea visMinX, visMinY, visMinZ - 1, visMaxX, visMaxY, newZ + visMinZ = newZ + LOCATE 1, 30 + PRINT "6" +END IF + + +IF usedLines > desMaxLines THEN decVisibility + +END SUB + +SUB clearWorld + + +CHDIR "world" + +FOR x = -worldSize TO worldSize + + n$ = "X" + toStr$(x) + CHDIR n$ + + FOR y = -worldSize TO worldSize + + n2$ = "Y" + toStr$(y) + CHDIR n2$ + + PRINT x, y + FOR z = -worldSize TO worldSize + + n3$ = "z" + toStr$(z) + ".dat" + OPEN n3$ FOR OUTPUT AS #1 +' PRINT #1, "0" + CLOSE #1 + NEXT z + + CHDIR ".." + NEXT y + + CHDIR ".." +NEXT x + +CHDIR ".." + +END SUB + +SUB control + + +IF getbyte(8) <> 0 THEN + putbyte 8, 0 + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + butt = getword(6) + putword 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + + + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + + + +a$ = INKEY$ + +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) +IF a$ = "q" THEN SYSTEM + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs +myz = myz + myzs +myy = myy + myys + +END SUB + +SUB createLongLine (x1, y1, z1, x2, y2, z2, c) +d = SQR((x1 - x2) ^ 2 + (y1 - y2) ^ 2 + (z1 - z2) ^ 2) + +IF d < 100 THEN + createNewLine x1, y1, z1, x2, y2, z2, c +ELSE + xp = (x1 + x2) / 2 + yp = (y1 + y2) / 2 + zp = (z1 + z2) / 2 + createLongLine x1, y1, z1, xp, yp, zp, c + createLongLine xp, yp, zp, x2, y2, z2, c +END IF +END SUB + +SUB createNewLine (x1, y1, z1, x2, y2, z2, c) + +cx = (x1 + x2) / 2 +cy = (y1 + y2) / 2 +cz = (z1 + z2) / 2 + +clx = INT(cx / 100) +cly = INT(cy / 100) +clz = INT(cz / 100) + +IF clx >= visMinX THEN + IF clx <= visMaxX THEN + IF cly >= visMinY THEN + IF cly <= visMaxY THEN + IF clz >= visMinZ THEN + IF clz <= visMaxZ THEN + insertLine x1, y1, z1, x2, y2, z2, c + END IF + END IF + END IF + END IF + END IF +END IF + +cln$ = getClustName(clx, cly, clz) + +OPEN cln$ FOR APPEND AS #1 + PRINT #1, x1; y1; z1; x2; y2; z2; c +CLOSE #1 + +END SUB + +SUB createWorld + + + +CHDIR "world" + +FOR x = -worldSize TO worldSize + + n$ = "X" + toStr$(x) + MKDIR n$ + CHDIR n$ + + FOR y = -worldSize TO worldSize + + n2$ = "Y" + toStr$(y) + MKDIR n2$ + CHDIR n2$ + + PRINT x, y + FOR z = -worldSize TO worldSize + + n3$ = "z" + toStr$(z) + ".dat" + OPEN n3$ FOR OUTPUT AS #1 +' PRINT #1, "0" + CLOSE #1 + NEXT z + + CHDIR ".." + NEXT y + + CHDIR ".." +NEXT x + +CHDIR ".." + +END SUB + +SUB decVisibility + +mx = INT(myx / 100) +my = INT(myy / 100) +mz = INT(myz / 100) + +6 +de = 0 + +IF visMaxX > mx + visDist THEN + visMaxX = mx + visDist + de = 1 +END IF + +IF visMinX < mx - visDist THEN + visMinX = mx - visDist + de = 1 +END IF + + +IF visMaxY > my + visDist THEN + visMaxY = my + visDist + de = 1 +END IF + +IF visMinY < my - visDist THEN + visMinY = my - visDist + de = 1 +END IF + + +IF visMaxZ > mz + visDist THEN + visMaxZ = mz + visDist + de = 1 +END IF + +IF visMinZ < mz - visDist THEN + visMinZ = mz - visDist + de = 1 +END IF + +IF de = 0 THEN + IF visDist > 3 THEN visDist = visDist - 1: GOTO 6 +ELSE + addMsg "Visibility decareased" +END IF + + +applyBounds +END SUB + +SUB dispmsg +FOR a = 1 TO 10 + LOCATE a, 39 - LEN(msgs$(a)) + PRINT msgs$(a) +NEXT a +END SUB + +SUB fill1 + +x1 = RND * 800 - 400 +y1 = RND * 800 - 400 +z1 = RND * 800 - 400 + +x2 = x1 + RND * 20 +y2 = y1 + RND * 20 +z2 = z1 + RND * 20 + +createNewLine x1, y1, z1, x2, y2, z2, INT(RND * 15) + 1 + +END SUB + +SUB fill2 + + +frmt = frm * 15 + +x1 = SIN(frmt / 533) * 300 + SIN(frmt / 53) * 50 +y1 = COS(frmt / 422) * 300 + SIN(frmt / 31) * 20 +z1 = SIN(frmt / 133) * 300 + SIN(frmt / 39) * 60 + +frmt = (frm - 1) * 15 + +x2 = SIN(frmt / 533) * 300 + SIN(frmt / 53) * 50 +y2 = COS(frmt / 422) * 300 + SIN(frmt / 31) * 20 +z2 = SIN(frmt / 133) * 300 + SIN(frmt / 39) * 60 + + + +createNewLine x1, y1, z1, x2, y2, z2, INT(RND * 15) + 1 + +END SUB + +SUB fill3 + +IF frm / 10 = frm \ 10 THEN ELSE GOTO fill31 + +c = RND * 15 + 1 + +x = RND * 800 - 400 +y = RND * 800 - 400 +z = RND * 800 - 400 + +s = RND * 10 + 3 + +createNewLine x - s, y - s, z - s, x + s, y - s, z - s, c +createNewLine x + s, y - s, z - s, x + s, y + s, z - s, c +createNewLine x + s, y + s, z - s, x - s, y + s, z - s, c +createNewLine x - s, y + s, z - s, x - s, y - s, z - s, c + +createNewLine x - s, y - s, z + s, x + s, y - s, z + s, c +createNewLine x + s, y - s, z + s, x + s, y + s, z + s, c +createNewLine x + s, y + s, z + s, x - s, y + s, z + s, c +createNewLine x - s, y + s, z + s, x - s, y - s, z + s, c + +createNewLine x - s, y - s, z - s, x - s, y - s, z + s, c +createNewLine x + s, y - s, z - s, x + s, y - s, z + s, c +createNewLine x + s, y + s, z - s, x + s, y + s, z + s, c +createNewLine x - s, y + s, z - s, x - s, y + s, z + s, c + +xo = x +yo = y +zo = z + + +x = x + RND * 80 - 40 +y = y + RND * 80 - 40 +z = z + RND * 80 - 40 + +s = RND * 10 + 3 + +createNewLine x - s, y - s, z - s, x + s, y - s, z - s, c +createNewLine x + s, y - s, z - s, x + s, y + s, z - s, c +createNewLine x + s, y + s, z - s, x - s, y + s, z - s, c +createNewLine x - s, y + s, z - s, x - s, y - s, z - s, c + +createNewLine x - s, y - s, z + s, x + s, y - s, z + s, c +createNewLine x + s, y - s, z + s, x + s, y + s, z + s, c +createNewLine x + s, y + s, z + s, x - s, y + s, z + s, c +createNewLine x - s, y + s, z + s, x - s, y - s, z + s, c + +createNewLine x - s, y - s, z - s, x - s, y - s, z + s, c +createNewLine x + s, y - s, z - s, x + s, y - s, z + s, c +createNewLine x + s, y + s, z - s, x + s, y + s, z + s, c +createNewLine x - s, y + s, z - s, x - s, y + s, z + s, c + + +createNewLine x, y, z, xo, yo, zo, c + +fill31: +END SUB + +SUB fill4 +IF RND * 100 < 2 THEN + +b$ = "" +FOR a = 1 TO RND * 3 + 1 +b$ = b$ + CHR$(48 + RND * 9) +NEXT a + +'b$ = "Hello, world!" +prn b$, RND * 800 - 400, RND * 800 - 400, RND * 800 - 400 + +END IF +END SUB + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getClustName$ (a, b, c) + +getClustName$ = "WORLD\X" + toStr$(a) + "\Y" + toStr$(b) + "\Z" + toStr$(c) + ".DAT" + +END FUNCTION + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB importCluster (x, y, z) + +cln$ = getClustName(x, y, z) +'[PRINT cln$ + +OPEN cln$ FOR INPUT AS #1 +5 +IF EOF(1) <> 0 THEN GOTO 4 + +INPUT #1, x1, y1, z1, x2, y2, z2, c +insertLine x1, y1, z1, x2, y2, z2, c + +GOTO 5 +4 +CLOSE #1 + + +END SUB + +SUB insertLine (x1, y1, z1, x2, y2, z2, c) + +insertLine1: +IF linC(curFreeLine) = -1 THEN + linX1(curFreeLine) = x1 + linY1(curFreeLine) = y1 + linZ1(curFreeLine) = z1 + + linX2(curFreeLine) = x2 + linY2(curFreeLine) = y2 + linZ2(curFreeLine) = z2 + + linC(curFreeLine) = c + curFreeLine = curFreeLine + 1 + usedLines = usedLines + 1 + IF curFreeLine > linAmo THEN curFreeLine = 0 +ELSE + curFreeLine = curFreeLine + 1 + IF curFreeLine > linAmo THEN curFreeLine = 0 + GOTO insertLine1 +END IF + + +END SUB + +SUB loadArea (tx1, ty1, tz1, tx2, ty2, tz2) + +LOCATE 3, 1 +addMsg "Loading Area!" +addMsg toStr$(tx1) + " " + toStr$(ty1) + " " + toStr$(tz1) +addMsg toStr$(tx2) + " " + toStr$(ty2) + " " + toStr$(tz2) + + +'PCOPY 0, 1 +'SLEEP + +x1 = tx1 +x2 = tx2 + +y1 = ty1 +y2 = ty2 + +z1 = tz1 +z2 = tz2 + +IF x1 > x2 THEN SWAP x1, x2 +IF y1 > y2 THEN SWAP y1, y2 +IF z1 > z2 THEN SWAP z1, z2 + +FOR x = x1 TO x2 + FOR y = y1 TO y2 + FOR z = z1 TO z2 + loadCluster x, y, z + NEXT z + NEXT y +NEXT x + +END SUB + +SUB loadCluster (x, y, z) + +IF ABS(x) > worldSize THEN GOTO 11 +IF ABS(y) > worldSize THEN GOTO 11 +IF ABS(z) > worldSize THEN GOTO 11 + +cln$ = getClustName(x, y, z) + +OPEN cln$ FOR INPUT AS #1 +10 +IF EOF(1) <> 0 THEN GOTO 9 + +INPUT #1, x1, y1, z1, x2, y2, z2, c +insertLine x1, y1, z1, x2, y2, z2, c + +GOTO 10 +9 +CLOSE #1 + +11 + +END SUB + +SUB loadObject (name$, x, y, z) + +'SCREEN 13 +'PRINT "objects\" + name$ + ".3d" +'END + +OPEN "OBJECTS\" + name$ + ".3d" FOR INPUT AS #2 +13 +IF EOF(2) <> 0 THEN GOTO 12 +INPUT #2, x1, y1, z1, x2, y2, z2, co +createNewLine x1 + x, y1 + y, z1 + z, x2 + x, y2 + y, z2 + z, co +GOTO 13 +12 +CLOSE #2 + +END SUB + +SUB makeGrid (x1, y1, z1, x2, y2, z2) + +s = 100 + +FOR x = x1 TO x2 STEP s + FOR y = y1 TO y2 STEP s + createLongLine x1, y, x, x2, y, x, 1 + createLongLine x, y1, y, x, y2, y, 1 + createLongLine x, y, z1, x, y, z2, 1 + NEXT y +NEXT x + +END SUB + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +100 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 100 + + +END SUB + +SUB prn (a$, x, y, z) + +FOR a = 1 TO LEN(a$) + b$ = RIGHT$(LEFT$(a$, a), 1) + putChar b$, x + (a - 1) * 8, y, z +NEXT a +END SUB + +SUB putbyte (addr, dat) + +POKE (extADDR + addr), dat +END SUB + +SUB putChar (a$, x, y, z) + +n$ = "FONT\LTR" + toStr(ASC(a$)) +loadObject n$, x, y, z + +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +SUB render + +s1 = SIN(an1) +c1 = COS(an1) + +s2 = SIN(an2) +c2 = COS(an2) + + +FOR a = 0 TO linAmo + + IF linC(a) > 0 THEN + x11 = linX1(a) - myx + y11 = linY1(a) - myy + z11 = linZ1(a) - myz + + x21 = linX2(a) - myx + y21 = linY2(a) - myy + z21 = linZ2(a) - myz + + + x12 = x11 * c1 + z11 * s1 + z12 = z11 * c1 - x11 * s1 + + + y12 = y11 * c2 + z12 * s2 + z13 = z12 * c2 - y11 * s2 + + + IF z13 > 3 THEN + x22 = x21 * c1 + z21 * s1 + z22 = z21 * c1 - x21 * s1 + + + y22 = y21 * c2 + z22 * s2 + z23 = z22 * c2 - y21 * s2 + + + IF z23 > 3 THEN + + rx1 = x12 / z13 * 130 + 160 + ry1 = y12 / z13 * 130 + 100 + + rx2 = x22 / z23 * 130 + 160 + ry2 = y22 / z23 * 130 + 100 + + LINE (rx1, ry1)-(rx2, ry2), linC(a) + END IF + END IF + END IF +NEXT a + + +'dispmsg + +END SUB + +SUB start + +RANDOMIZE TIMER + +FOR a = 0 TO linAmo + linC(a) = -1 +NEXT a + + +startext + +maxmove = 50 +curFreeLine = 0 +worldSize = 5 +usedLines = 0 +desMaxLines = 2000 + +visMaxX = worldSize +visMaxY = worldSize +visMaxZ = worldSize +visMinX = -worldSize +visMinY = -worldSize +visMinZ = -worldSize + +visDist = worldSize + +'INPUT "create new world (y/n)", a$ +'IF a$ = "y" THEN +' createWorld +'ELSE +' INPUT "clear existing world (y/n)", a$ +' IF a$ = "y" THEN clearWorld +'END IF + +clearWorld + +SCREEN 7, , , 1 + + + +END SUB + +SUB startext + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + +FUNCTION toStr$ (a) + +b$ = STR$(a) +IF LEFT$(b$, 1) = " " THEN b$ = RIGHT$(b$, LEN(b$) - 1) +toStr$ = b$ + +END FUNCTION + diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR100.3D b/graphics/3D/swapping 3D engine/objects/font/LTR100.3D new file mode 100755 index 0000000..e801017 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR100.3D @@ -0,0 +1,40 @@ + 4 1 0 4 2 0 10 + 7 1 0 7 2 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR101.3D b/graphics/3D/swapping 3D engine/objects/font/LTR101.3D new file mode 100755 index 0000000..ac4241a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR101.3D @@ -0,0 +1,40 @@ + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR102.3D b/graphics/3D/swapping 3D engine/objects/font/LTR102.3D new file mode 100755 index 0000000..ac95a57 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR102.3D @@ -0,0 +1,38 @@ + 4 1 0 4 2 0 10 + 7 1 0 7 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 1 4 0 1 5 0 10 + 7 4 0 7 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 2 7 0 2 8 0 10 + 6 7 0 6 8 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR103.3D b/graphics/3D/swapping 3D engine/objects/font/LTR103.3D new file mode 100755 index 0000000..56b4043 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR103.3D @@ -0,0 +1,46 @@ + 2 3 0 2 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 8 6 0 8 7 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 2 8 0 2 9 0 10 + 7 8 0 7 9 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 2 9 0 3 9 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 9 0 7 9 0 10 + 7 3 0 8 3 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR104.3D b/graphics/3D/swapping 3D engine/objects/font/LTR104.3D new file mode 100755 index 0000000..1ddd2d4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR104.3D @@ -0,0 +1,38 @@ + 1 1 0 1 2 0 10 + 4 1 0 4 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR105.3D b/graphics/3D/swapping 3D engine/objects/font/LTR105.3D new file mode 100755 index 0000000..508952b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR105.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR106.3D b/graphics/3D/swapping 3D engine/objects/font/LTR106.3D new file mode 100755 index 0000000..213b922 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR106.3D @@ -0,0 +1,34 @@ + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 2 8 0 2 9 0 10 + 6 8 0 6 9 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 7 0 3 7 0 10 + 2 9 0 3 9 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 9 0 6 9 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR107.3D b/graphics/3D/swapping 3D engine/objects/font/LTR107.3D new file mode 100755 index 0000000..1b7f522 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR107.3D @@ -0,0 +1,42 @@ + 1 1 0 1 2 0 10 + 4 1 0 4 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 6 5 0 6 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR108.3D b/graphics/3D/swapping 3D engine/objects/font/LTR108.3D new file mode 100755 index 0000000..a597be1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR108.3D @@ -0,0 +1,20 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 7 7 0 7 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR109.3D b/graphics/3D/swapping 3D engine/objects/font/LTR109.3D new file mode 100755 index 0000000..2da5e88 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR109.3D @@ -0,0 +1,36 @@ + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 4 0 2 4 0 10 + 1 8 0 2 8 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 5 0 4 5 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR110.3D b/graphics/3D/swapping 3D engine/objects/font/LTR110.3D new file mode 100755 index 0000000..588fa51 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR110.3D @@ -0,0 +1,34 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR111.3D b/graphics/3D/swapping 3D engine/objects/font/LTR111.3D new file mode 100755 index 0000000..7a05ac4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR111.3D @@ -0,0 +1,36 @@ + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR112.3D b/graphics/3D/swapping 3D engine/objects/font/LTR112.3D new file mode 100755 index 0000000..115a6c5 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR112.3D @@ -0,0 +1,40 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 1 8 0 1 9 0 10 + 5 8 0 5 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 8 0 2 8 0 10 + 1 9 0 2 9 0 10 + 2 3 0 3 3 0 10 + 2 9 0 3 9 0 10 + 3 4 0 4 4 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 7 0 7 7 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR113.3D b/graphics/3D/swapping 3D engine/objects/font/LTR113.3D new file mode 100755 index 0000000..623fcfc --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR113.3D @@ -0,0 +1,40 @@ + 2 3 0 2 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 2 6 0 2 7 0 10 + 7 6 0 7 7 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 4 8 0 4 9 0 10 + 8 8 0 8 9 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 4 0 6 4 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 9 0 7 9 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR114.3D b/graphics/3D/swapping 3D engine/objects/font/LTR114.3D new file mode 100755 index 0000000..dcb0bef --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR114.3D @@ -0,0 +1,32 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 1 7 0 1 8 0 10 + 5 7 0 5 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR115.3D b/graphics/3D/swapping 3D engine/objects/font/LTR115.3D new file mode 100755 index 0000000..25f6cc6 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR115.3D @@ -0,0 +1,40 @@ + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 8 0 7 8 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR116.3D b/graphics/3D/swapping 3D engine/objects/font/LTR116.3D new file mode 100755 index 0000000..783a7b3 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR116.3D @@ -0,0 +1,34 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 1 3 0 1 4 0 10 + 7 3 0 7 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 4 7 0 4 8 0 10 + 7 7 0 7 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 3 1 0 4 1 0 10 + 3 7 0 4 7 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR117.3D b/graphics/3D/swapping 3D engine/objects/font/LTR117.3D new file mode 100755 index 0000000..f0c5227 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR117.3D @@ -0,0 +1,34 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR118.3D b/graphics/3D/swapping 3D engine/objects/font/LTR118.3D new file mode 100755 index 0000000..bd8b439 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR118.3D @@ -0,0 +1,30 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 1 3 0 2 3 0 10 + 1 5 0 2 5 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR119.3D b/graphics/3D/swapping 3D engine/objects/font/LTR119.3D new file mode 100755 index 0000000..7a0cdc4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR119.3D @@ -0,0 +1,34 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR120.3D b/graphics/3D/swapping 3D engine/objects/font/LTR120.3D new file mode 100755 index 0000000..17b3575 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR120.3D @@ -0,0 +1,40 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 3 0 3 3 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR121.3D b/graphics/3D/swapping 3D engine/objects/font/LTR121.3D new file mode 100755 index 0000000..706a9ac --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR121.3D @@ -0,0 +1,42 @@ + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 2 8 0 2 9 0 10 + 7 8 0 7 9 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 2 9 0 3 9 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 9 0 7 9 0 10 + 7 3 0 8 3 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR122.3D b/graphics/3D/swapping 3D engine/objects/font/LTR122.3D new file mode 100755 index 0000000..68a6c6e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR122.3D @@ -0,0 +1,38 @@ + 1 3 0 1 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 7 7 0 7 8 0 10 + 1 3 0 2 3 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR123.3D b/graphics/3D/swapping 3D engine/objects/font/LTR123.3D new file mode 100755 index 0000000..1554dd6 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR123.3D @@ -0,0 +1,32 @@ + 5 1 0 5 2 0 10 + 8 1 0 8 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 2 4 0 2 5 0 10 + 5 4 0 5 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 5 7 0 5 8 0 10 + 8 7 0 8 8 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR124.3D b/graphics/3D/swapping 3D engine/objects/font/LTR124.3D new file mode 100755 index 0000000..52cb916 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR124.3D @@ -0,0 +1,20 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 8 0 6 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR125.3D b/graphics/3D/swapping 3D engine/objects/font/LTR125.3D new file mode 100755 index 0000000..1c0fbef --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR125.3D @@ -0,0 +1,32 @@ + 2 1 0 2 2 0 10 + 5 1 0 5 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 8 4 0 8 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR126.3D b/graphics/3D/swapping 3D engine/objects/font/LTR126.3D new file mode 100755 index 0000000..4229ec1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR126.3D @@ -0,0 +1,22 @@ + 2 1 0 2 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 4 2 0 4 3 0 10 + 7 2 0 7 3 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR127.3D b/graphics/3D/swapping 3D engine/objects/font/LTR127.3D new file mode 100755 index 0000000..962efa5 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR127.3D @@ -0,0 +1,32 @@ + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 5 0 7 5 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR128.3D b/graphics/3D/swapping 3D engine/objects/font/LTR128.3D new file mode 100755 index 0000000..145a357 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR128.3D @@ -0,0 +1,56 @@ + 3 1 0 3 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 3 5 0 3 6 0 10 + 7 5 0 7 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 2 8 0 2 9 0 10 + 6 8 0 6 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 2 9 0 3 9 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR129.3D b/graphics/3D/swapping 3D engine/objects/font/LTR129.3D new file mode 100755 index 0000000..981d948 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR129.3D @@ -0,0 +1,42 @@ + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR130.3D b/graphics/3D/swapping 3D engine/objects/font/LTR130.3D new file mode 100755 index 0000000..8bc967e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR130.3D @@ -0,0 +1,48 @@ + 5 1 0 5 2 0 10 + 8 1 0 8 2 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR131.3D b/graphics/3D/swapping 3D engine/objects/font/LTR131.3D new file mode 100755 index 0000000..6ece448 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR131.3D @@ -0,0 +1,54 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR132.3D b/graphics/3D/swapping 3D engine/objects/font/LTR132.3D new file mode 100755 index 0000000..cf79614 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR132.3D @@ -0,0 +1,48 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 2 3 0 2 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR133.3D b/graphics/3D/swapping 3D engine/objects/font/LTR133.3D new file mode 100755 index 0000000..6854182 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR133.3D @@ -0,0 +1,44 @@ + 1 1 0 1 2 0 10 + 4 1 0 4 2 0 10 + 2 3 0 2 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR134.3D b/graphics/3D/swapping 3D engine/objects/font/LTR134.3D new file mode 100755 index 0000000..b21e48e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR134.3D @@ -0,0 +1,40 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR135.3D b/graphics/3D/swapping 3D engine/objects/font/LTR135.3D new file mode 100755 index 0000000..bb4e3cb --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR135.3D @@ -0,0 +1,42 @@ + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 3 8 0 3 9 0 10 + 6 8 0 6 9 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR136.3D b/graphics/3D/swapping 3D engine/objects/font/LTR136.3D new file mode 100755 index 0000000..794ecf8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR136.3D @@ -0,0 +1,56 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR137.3D b/graphics/3D/swapping 3D engine/objects/font/LTR137.3D new file mode 100755 index 0000000..0c38357 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR137.3D @@ -0,0 +1,52 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR138.3D b/graphics/3D/swapping 3D engine/objects/font/LTR138.3D new file mode 100755 index 0000000..eaa7c4e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR138.3D @@ -0,0 +1,48 @@ + 1 1 0 1 2 0 10 + 4 1 0 4 2 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR139.3D b/graphics/3D/swapping 3D engine/objects/font/LTR139.3D new file mode 100755 index 0000000..0082063 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR139.3D @@ -0,0 +1,32 @@ + 2 1 0 2 2 0 10 + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR140.3D b/graphics/3D/swapping 3D engine/objects/font/LTR140.3D new file mode 100755 index 0000000..785166a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR140.3D @@ -0,0 +1,40 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR141.3D b/graphics/3D/swapping 3D engine/objects/font/LTR141.3D new file mode 100755 index 0000000..38359b1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR141.3D @@ -0,0 +1,28 @@ + 1 1 0 1 2 0 10 + 4 1 0 4 2 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR142.3D b/graphics/3D/swapping 3D engine/objects/font/LTR142.3D new file mode 100755 index 0000000..ad2032d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR142.3D @@ -0,0 +1,52 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR143.3D b/graphics/3D/swapping 3D engine/objects/font/LTR143.3D new file mode 100755 index 0000000..fbf6f01 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR143.3D @@ -0,0 +1,42 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 5 0 2 5 0 10 + 1 8 0 2 8 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 5 0 8 5 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR144.3D b/graphics/3D/swapping 3D engine/objects/font/LTR144.3D new file mode 100755 index 0000000..f40ecad --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR144.3D @@ -0,0 +1,48 @@ + 5 1 0 5 2 0 10 + 8 1 0 8 2 0 10 + 1 3 0 1 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 3 0 2 3 0 10 + 1 8 0 2 8 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR145.3D b/graphics/3D/swapping 3D engine/objects/font/LTR145.3D new file mode 100755 index 0000000..17d2a41 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR145.3D @@ -0,0 +1,48 @@ + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 7 4 0 7 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 8 7 0 8 8 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR146.3D b/graphics/3D/swapping 3D engine/objects/font/LTR146.3D new file mode 100755 index 0000000..591171c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR146.3D @@ -0,0 +1,48 @@ + 2 1 0 2 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 4 7 0 4 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR147.3D b/graphics/3D/swapping 3D engine/objects/font/LTR147.3D new file mode 100755 index 0000000..c189294 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR147.3D @@ -0,0 +1,52 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR148.3D b/graphics/3D/swapping 3D engine/objects/font/LTR148.3D new file mode 100755 index 0000000..d402979 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR148.3D @@ -0,0 +1,44 @@ + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR149.3D b/graphics/3D/swapping 3D engine/objects/font/LTR149.3D new file mode 100755 index 0000000..ed1197e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR149.3D @@ -0,0 +1,40 @@ + 1 2 0 1 3 0 10 + 4 2 0 4 3 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR150.3D b/graphics/3D/swapping 3D engine/objects/font/LTR150.3D new file mode 100755 index 0000000..859a861 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR150.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR151.3D b/graphics/3D/swapping 3D engine/objects/font/LTR151.3D new file mode 100755 index 0000000..ae77dad --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR151.3D @@ -0,0 +1,38 @@ + 1 2 0 1 3 0 10 + 4 2 0 4 3 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR152.3D b/graphics/3D/swapping 3D engine/objects/font/LTR152.3D new file mode 100755 index 0000000..0c05150 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR152.3D @@ -0,0 +1,50 @@ + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 2 8 0 2 9 0 10 + 7 8 0 7 9 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 2 9 0 3 9 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 5 9 0 6 9 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 9 0 7 9 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR153.3D b/graphics/3D/swapping 3D engine/objects/font/LTR153.3D new file mode 100755 index 0000000..509a938 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR153.3D @@ -0,0 +1,52 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 7 0 7 7 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR154.3D b/graphics/3D/swapping 3D engine/objects/font/LTR154.3D new file mode 100755 index 0000000..e61a78c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR154.3D @@ -0,0 +1,44 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR155.3D b/graphics/3D/swapping 3D engine/objects/font/LTR155.3D new file mode 100755 index 0000000..8b455ef --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR155.3D @@ -0,0 +1,36 @@ + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 2 6 0 2 7 0 10 + 8 6 0 8 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 2 0 5 2 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR156.3D b/graphics/3D/swapping 3D engine/objects/font/LTR156.3D new file mode 100755 index 0000000..c27bfa8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR156.3D @@ -0,0 +1,46 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 1 4 0 1 5 0 10 + 5 4 0 5 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 8 0 7 8 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR157.3D b/graphics/3D/swapping 3D engine/objects/font/LTR157.3D new file mode 100755 index 0000000..b7b7caf --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR157.3D @@ -0,0 +1,42 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 7 1 0 7 2 0 10 + 9 1 0 9 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 8 4 0 8 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 3 6 0 3 7 0 10 + 7 6 0 7 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 7 1 0 8 1 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 8 1 0 9 1 0 10 + 8 2 0 9 2 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR158.3D b/graphics/3D/swapping 3D engine/objects/font/LTR158.3D new file mode 100755 index 0000000..2c75a85 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR158.3D @@ -0,0 +1,50 @@ + 1 1 0 1 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR159.3D b/graphics/3D/swapping 3D engine/objects/font/LTR159.3D new file mode 100755 index 0000000..7514b13 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR159.3D @@ -0,0 +1,40 @@ + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 8 2 0 8 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 2 4 0 2 5 0 10 + 8 4 0 8 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 2 8 0 2 9 0 10 + 5 8 0 5 9 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 2 9 0 3 9 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 2 0 5 2 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR160.3D b/graphics/3D/swapping 3D engine/objects/font/LTR160.3D new file mode 100755 index 0000000..afaebbf --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR160.3D @@ -0,0 +1,44 @@ + 5 1 0 5 2 0 10 + 8 1 0 8 2 0 10 + 2 3 0 2 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR161.3D b/graphics/3D/swapping 3D engine/objects/font/LTR161.3D new file mode 100755 index 0000000..28d0234 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR161.3D @@ -0,0 +1,28 @@ + 4 1 0 4 2 0 10 + 7 1 0 7 2 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR162.3D b/graphics/3D/swapping 3D engine/objects/font/LTR162.3D new file mode 100755 index 0000000..0240ffa --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR162.3D @@ -0,0 +1,40 @@ + 5 2 0 5 3 0 10 + 8 2 0 8 3 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR163.3D b/graphics/3D/swapping 3D engine/objects/font/LTR163.3D new file mode 100755 index 0000000..8d473a4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR163.3D @@ -0,0 +1,38 @@ + 5 2 0 5 3 0 10 + 8 2 0 8 3 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR164.3D b/graphics/3D/swapping 3D engine/objects/font/LTR164.3D new file mode 100755 index 0000000..72d446a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR164.3D @@ -0,0 +1,46 @@ + 1 2 0 1 3 0 10 + 7 2 0 7 3 0 10 + 1 4 0 1 5 0 10 + 2 4 0 2 5 0 10 + 3 4 0 3 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 5 0 8 5 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR165.3D b/graphics/3D/swapping 3D engine/objects/font/LTR165.3D new file mode 100755 index 0000000..8fbee8b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR165.3D @@ -0,0 +1,50 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR166.3D b/graphics/3D/swapping 3D engine/objects/font/LTR166.3D new file mode 100755 index 0000000..f208090 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR166.3D @@ -0,0 +1,36 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 3 3 0 3 4 0 10 + 8 3 0 8 4 0 10 + 2 5 0 2 6 0 10 + 8 5 0 8 6 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR167.3D b/graphics/3D/swapping 3D engine/objects/font/LTR167.3D new file mode 100755 index 0000000..02c4975 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR167.3D @@ -0,0 +1,40 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR168.3D b/graphics/3D/swapping 3D engine/objects/font/LTR168.3D new file mode 100755 index 0000000..9b169b6 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR168.3D @@ -0,0 +1,34 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 3 4 0 4 4 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR169.3D b/graphics/3D/swapping 3D engine/objects/font/LTR169.3D new file mode 100755 index 0000000..b42c00a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR169.3D @@ -0,0 +1,16 @@ + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 2 4 0 3 4 0 10 + 2 7 0 3 7 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR170.3D b/graphics/3D/swapping 3D engine/objects/font/LTR170.3D new file mode 100755 index 0000000..33c680b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR170.3D @@ -0,0 +1,16 @@ + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR171.3D b/graphics/3D/swapping 3D engine/objects/font/LTR171.3D new file mode 100755 index 0000000..0f1d44b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR171.3D @@ -0,0 +1,50 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 3 8 0 3 9 0 10 + 8 8 0 8 9 0 10 + 1 1 0 2 1 0 10 + 1 4 0 2 4 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 9 0 6 9 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR172.3D b/graphics/3D/swapping 3D engine/objects/font/LTR172.3D new file mode 100755 index 0000000..8bddea3 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR172.3D @@ -0,0 +1,46 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 5 8 0 5 9 0 10 + 7 8 0 7 9 0 10 + 1 1 0 2 1 0 10 + 1 4 0 2 4 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR173.3D b/graphics/3D/swapping 3D engine/objects/font/LTR173.3D new file mode 100755 index 0000000..4a91a28 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR173.3D @@ -0,0 +1,24 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 7 6 0 7 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 5 0 7 5 0 10 + 6 7 0 7 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR174.3D b/graphics/3D/swapping 3D engine/objects/font/LTR174.3D new file mode 100755 index 0000000..463c329 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR174.3D @@ -0,0 +1,44 @@ + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 6 0 6 6 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 7 0 7 7 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR175.3D b/graphics/3D/swapping 3D engine/objects/font/LTR175.3D new file mode 100755 index 0000000..e9c550d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR175.3D @@ -0,0 +1,44 @@ + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR176.3D b/graphics/3D/swapping 3D engine/objects/font/LTR176.3D new file mode 100755 index 0000000..6522964 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR176.3D @@ -0,0 +1,64 @@ + 3 1 0 3 2 0 10 + 4 1 0 4 2 0 10 + 7 1 0 7 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 2 2 0 2 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 2 4 0 2 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 7 5 0 7 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 2 6 0 2 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 4 7 0 4 8 0 10 + 7 7 0 7 8 0 10 + 8 7 0 8 8 0 10 + 1 8 0 1 9 0 10 + 2 8 0 2 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 1 9 0 2 9 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 5 9 0 6 9 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR177.3D b/graphics/3D/swapping 3D engine/objects/font/LTR177.3D new file mode 100755 index 0000000..6e3c67f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR177.3D @@ -0,0 +1,128 @@ + 2 1 0 2 2 0 10 + 3 1 0 3 2 0 10 + 4 1 0 4 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 7 1 0 7 2 0 10 + 8 1 0 8 2 0 10 + 9 1 0 9 2 0 10 + 1 2 0 1 3 0 10 + 2 2 0 2 3 0 10 + 3 2 0 3 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 7 2 0 7 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 7 3 0 7 4 0 10 + 8 3 0 8 4 0 10 + 9 3 0 9 4 0 10 + 1 4 0 1 5 0 10 + 2 4 0 2 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 7 4 0 7 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 7 5 0 7 6 0 10 + 8 5 0 8 6 0 10 + 9 5 0 9 6 0 10 + 1 6 0 1 7 0 10 + 2 6 0 2 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 7 6 0 7 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 3 7 0 3 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 7 7 0 7 8 0 10 + 8 7 0 8 8 0 10 + 9 7 0 9 8 0 10 + 1 8 0 1 9 0 10 + 2 8 0 2 9 0 10 + 3 8 0 3 9 0 10 + 4 8 0 4 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 7 8 0 7 9 0 10 + 8 8 0 8 9 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 1 9 0 2 9 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 5 9 0 6 9 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 + 7 9 0 8 9 0 10 + 8 1 0 9 1 0 10 + 8 2 0 9 2 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 + 8 7 0 9 7 0 10 + 8 8 0 9 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR178.3D b/graphics/3D/swapping 3D engine/objects/font/LTR178.3D new file mode 100755 index 0000000..3a8f20f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR178.3D @@ -0,0 +1,80 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 4 1 0 4 2 0 10 + 7 1 0 7 2 0 10 + 8 1 0 8 2 0 10 + 9 1 0 9 2 0 10 + 2 2 0 2 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 9 2 0 9 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 8 3 0 8 4 0 10 + 9 3 0 9 4 0 10 + 2 4 0 2 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 9 4 0 9 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 7 5 0 7 6 0 10 + 8 5 0 8 6 0 10 + 9 5 0 9 6 0 10 + 2 6 0 2 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 9 6 0 9 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 4 7 0 4 8 0 10 + 7 7 0 7 8 0 10 + 8 7 0 8 8 0 10 + 9 7 0 9 8 0 10 + 2 8 0 2 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 9 8 0 9 9 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 9 0 3 9 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 + 7 9 0 8 9 0 10 + 8 1 0 9 1 0 10 + 8 9 0 9 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR179.3D b/graphics/3D/swapping 3D engine/objects/font/LTR179.3D new file mode 100755 index 0000000..f6a2cd7 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR179.3D @@ -0,0 +1,20 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR180.3D b/graphics/3D/swapping 3D engine/objects/font/LTR180.3D new file mode 100755 index 0000000..ba2bcc3 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR180.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR181.3D b/graphics/3D/swapping 3D engine/objects/font/LTR181.3D new file mode 100755 index 0000000..35e3118 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR181.3D @@ -0,0 +1,32 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 1 3 0 1 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR182.3D b/graphics/3D/swapping 3D engine/objects/font/LTR182.3D new file mode 100755 index 0000000..01e2f8f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR182.3D @@ -0,0 +1,44 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR183.3D b/graphics/3D/swapping 3D engine/objects/font/LTR183.3D new file mode 100755 index 0000000..1e0f94e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR183.3D @@ -0,0 +1,28 @@ + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR184.3D b/graphics/3D/swapping 3D engine/objects/font/LTR184.3D new file mode 100755 index 0000000..8e63e20 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR184.3D @@ -0,0 +1,28 @@ + 1 3 0 1 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 3 0 5 3 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 9 0 6 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR185.3D b/graphics/3D/swapping 3D engine/objects/font/LTR185.3D new file mode 100755 index 0000000..b039c9a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR185.3D @@ -0,0 +1,50 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR186.3D b/graphics/3D/swapping 3D engine/objects/font/LTR186.3D new file mode 100755 index 0000000..fac68d2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR186.3D @@ -0,0 +1,40 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR187.3D b/graphics/3D/swapping 3D engine/objects/font/LTR187.3D new file mode 100755 index 0000000..3d602cb --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR187.3D @@ -0,0 +1,42 @@ + 1 3 0 1 4 0 10 + 8 3 0 8 4 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 9 0 7 9 0 10 + 7 3 0 8 3 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR188.3D b/graphics/3D/swapping 3D engine/objects/font/LTR188.3D new file mode 100755 index 0000000..8fa7098 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR188.3D @@ -0,0 +1,38 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR189.3D b/graphics/3D/swapping 3D engine/objects/font/LTR189.3D new file mode 100755 index 0000000..0cd5eb6 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR189.3D @@ -0,0 +1,32 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR190.3D b/graphics/3D/swapping 3D engine/objects/font/LTR190.3D new file mode 100755 index 0000000..dd40100 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR190.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 1 3 0 1 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR191.3D b/graphics/3D/swapping 3D engine/objects/font/LTR191.3D new file mode 100755 index 0000000..b1446fc --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR191.3D @@ -0,0 +1,18 @@ + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR192.3D b/graphics/3D/swapping 3D engine/objects/font/LTR192.3D new file mode 100755 index 0000000..7e7021b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR192.3D @@ -0,0 +1,20 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 9 5 0 9 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR193.3D b/graphics/3D/swapping 3D engine/objects/font/LTR193.3D new file mode 100755 index 0000000..68ac02f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR193.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR194.3D b/graphics/3D/swapping 3D engine/objects/font/LTR194.3D new file mode 100755 index 0000000..0908537 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR194.3D @@ -0,0 +1,24 @@ + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR195.3D b/graphics/3D/swapping 3D engine/objects/font/LTR195.3D new file mode 100755 index 0000000..9eed92f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR195.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR196.3D b/graphics/3D/swapping 3D engine/objects/font/LTR196.3D new file mode 100755 index 0000000..f26d8f5 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR196.3D @@ -0,0 +1,18 @@ + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR197.3D b/graphics/3D/swapping 3D engine/objects/font/LTR197.3D new file mode 100755 index 0000000..84a2312 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR197.3D @@ -0,0 +1,32 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR198.3D b/graphics/3D/swapping 3D engine/objects/font/LTR198.3D new file mode 100755 index 0000000..e5ce811 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR198.3D @@ -0,0 +1,32 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 9 3 0 9 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR199.3D b/graphics/3D/swapping 3D engine/objects/font/LTR199.3D new file mode 100755 index 0000000..72cc1a2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR199.3D @@ -0,0 +1,42 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR200.3D b/graphics/3D/swapping 3D engine/objects/font/LTR200.3D new file mode 100755 index 0000000..17db339 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR200.3D @@ -0,0 +1,34 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 9 3 0 9 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 3 5 0 3 6 0 10 + 9 5 0 9 6 0 10 + 3 1 0 4 1 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR201.3D b/graphics/3D/swapping 3D engine/objects/font/LTR201.3D new file mode 100755 index 0000000..42542d1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR201.3D @@ -0,0 +1,38 @@ + 3 3 0 3 4 0 10 + 9 3 0 9 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 3 3 0 4 3 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR202.3D b/graphics/3D/swapping 3D engine/objects/font/LTR202.3D new file mode 100755 index 0000000..96712e3 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR202.3D @@ -0,0 +1,44 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 9 3 0 9 4 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR203.3D b/graphics/3D/swapping 3D engine/objects/font/LTR203.3D new file mode 100755 index 0000000..f56d3fd --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR203.3D @@ -0,0 +1,48 @@ + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR204.3D b/graphics/3D/swapping 3D engine/objects/font/LTR204.3D new file mode 100755 index 0000000..aec08e8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR204.3D @@ -0,0 +1,46 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 9 3 0 9 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR205.3D b/graphics/3D/swapping 3D engine/objects/font/LTR205.3D new file mode 100755 index 0000000..3101e8e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR205.3D @@ -0,0 +1,36 @@ + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR206.3D b/graphics/3D/swapping 3D engine/objects/font/LTR206.3D new file mode 100755 index 0000000..819590c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR206.3D @@ -0,0 +1,56 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 9 3 0 9 4 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR207.3D b/graphics/3D/swapping 3D engine/objects/font/LTR207.3D new file mode 100755 index 0000000..74674ba --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR207.3D @@ -0,0 +1,40 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR208.3D b/graphics/3D/swapping 3D engine/objects/font/LTR208.3D new file mode 100755 index 0000000..b5f8341 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR208.3D @@ -0,0 +1,34 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR209.3D b/graphics/3D/swapping 3D engine/objects/font/LTR209.3D new file mode 100755 index 0000000..2cfaaa1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR209.3D @@ -0,0 +1,42 @@ + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR210.3D b/graphics/3D/swapping 3D engine/objects/font/LTR210.3D new file mode 100755 index 0000000..8716a37 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR210.3D @@ -0,0 +1,30 @@ + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR211.3D b/graphics/3D/swapping 3D engine/objects/font/LTR211.3D new file mode 100755 index 0000000..f4bc64d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR211.3D @@ -0,0 +1,30 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 3 5 0 3 6 0 10 + 9 5 0 9 6 0 10 + 3 1 0 4 1 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR212.3D b/graphics/3D/swapping 3D engine/objects/font/LTR212.3D new file mode 100755 index 0000000..c93d8ed --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR212.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 9 3 0 9 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 9 5 0 9 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR213.3D b/graphics/3D/swapping 3D engine/objects/font/LTR213.3D new file mode 100755 index 0000000..11d95b9 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR213.3D @@ -0,0 +1,28 @@ + 4 3 0 4 4 0 10 + 9 3 0 9 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 4 3 0 5 3 0 10 + 4 9 0 5 9 0 10 + 5 3 0 6 3 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR214.3D b/graphics/3D/swapping 3D engine/objects/font/LTR214.3D new file mode 100755 index 0000000..3e9507b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR214.3D @@ -0,0 +1,26 @@ + 3 5 0 3 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR215.3D b/graphics/3D/swapping 3D engine/objects/font/LTR215.3D new file mode 100755 index 0000000..5dd09bc --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR215.3D @@ -0,0 +1,46 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR216.3D b/graphics/3D/swapping 3D engine/objects/font/LTR216.3D new file mode 100755 index 0000000..8fd55cf --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR216.3D @@ -0,0 +1,44 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 3 0 9 3 0 10 + 8 4 0 9 4 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR217.3D b/graphics/3D/swapping 3D engine/objects/font/LTR217.3D new file mode 100755 index 0000000..c8c0967 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR217.3D @@ -0,0 +1,20 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR218.3D b/graphics/3D/swapping 3D engine/objects/font/LTR218.3D new file mode 100755 index 0000000..32d627e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR218.3D @@ -0,0 +1,18 @@ + 4 5 0 4 6 0 10 + 9 5 0 9 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 8 5 0 9 5 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR219.3D b/graphics/3D/swapping 3D engine/objects/font/LTR219.3D new file mode 100755 index 0000000..538af36 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR219.3D @@ -0,0 +1,32 @@ + 1 1 0 1 2 0 10 + 9 1 0 9 2 0 10 + 1 2 0 1 3 0 10 + 9 2 0 9 3 0 10 + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 1 4 0 1 5 0 10 + 9 4 0 9 5 0 10 + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 6 0 1 7 0 10 + 9 6 0 9 7 0 10 + 1 7 0 1 8 0 10 + 9 7 0 9 8 0 10 + 1 8 0 1 9 0 10 + 9 8 0 9 9 0 10 + 1 1 0 2 1 0 10 + 1 9 0 2 9 0 10 + 2 1 0 3 1 0 10 + 2 9 0 3 9 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 + 8 1 0 9 1 0 10 + 8 9 0 9 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR220.3D b/graphics/3D/swapping 3D engine/objects/font/LTR220.3D new file mode 100755 index 0000000..8f9d4a2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR220.3D @@ -0,0 +1,24 @@ + 1 5 0 1 6 0 10 + 9 5 0 9 6 0 10 + 1 6 0 1 7 0 10 + 9 6 0 9 7 0 10 + 1 7 0 1 8 0 10 + 9 7 0 9 8 0 10 + 1 8 0 1 9 0 10 + 9 8 0 9 9 0 10 + 1 5 0 2 5 0 10 + 1 9 0 2 9 0 10 + 2 5 0 3 5 0 10 + 2 9 0 3 9 0 10 + 3 5 0 4 5 0 10 + 3 9 0 4 9 0 10 + 4 5 0 5 5 0 10 + 4 9 0 5 9 0 10 + 5 5 0 6 5 0 10 + 5 9 0 6 9 0 10 + 6 5 0 7 5 0 10 + 6 9 0 7 9 0 10 + 7 5 0 8 5 0 10 + 7 9 0 8 9 0 10 + 8 5 0 9 5 0 10 + 8 9 0 9 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR221.3D b/graphics/3D/swapping 3D engine/objects/font/LTR221.3D new file mode 100755 index 0000000..0a78ddf --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR221.3D @@ -0,0 +1,24 @@ + 1 1 0 1 2 0 10 + 5 1 0 5 2 0 10 + 1 2 0 1 3 0 10 + 5 2 0 5 3 0 10 + 1 3 0 1 4 0 10 + 5 3 0 5 4 0 10 + 1 4 0 1 5 0 10 + 5 4 0 5 5 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 1 6 0 1 7 0 10 + 5 6 0 5 7 0 10 + 1 7 0 1 8 0 10 + 5 7 0 5 8 0 10 + 1 8 0 1 9 0 10 + 5 8 0 5 9 0 10 + 1 1 0 2 1 0 10 + 1 9 0 2 9 0 10 + 2 1 0 3 1 0 10 + 2 9 0 3 9 0 10 + 3 1 0 4 1 0 10 + 3 9 0 4 9 0 10 + 4 1 0 5 1 0 10 + 4 9 0 5 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR222.3D b/graphics/3D/swapping 3D engine/objects/font/LTR222.3D new file mode 100755 index 0000000..391d2c4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR222.3D @@ -0,0 +1,24 @@ + 5 1 0 5 2 0 10 + 9 1 0 9 2 0 10 + 5 2 0 5 3 0 10 + 9 2 0 9 3 0 10 + 5 3 0 5 4 0 10 + 9 3 0 9 4 0 10 + 5 4 0 5 5 0 10 + 9 4 0 9 5 0 10 + 5 5 0 5 6 0 10 + 9 5 0 9 6 0 10 + 5 6 0 5 7 0 10 + 9 6 0 9 7 0 10 + 5 7 0 5 8 0 10 + 9 7 0 9 8 0 10 + 5 8 0 5 9 0 10 + 9 8 0 9 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 1 0 8 1 0 10 + 7 9 0 8 9 0 10 + 8 1 0 9 1 0 10 + 8 9 0 9 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR223.3D b/graphics/3D/swapping 3D engine/objects/font/LTR223.3D new file mode 100755 index 0000000..870a1e1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR223.3D @@ -0,0 +1,24 @@ + 1 1 0 1 2 0 10 + 9 1 0 9 2 0 10 + 1 2 0 1 3 0 10 + 9 2 0 9 3 0 10 + 1 3 0 1 4 0 10 + 9 3 0 9 4 0 10 + 1 4 0 1 5 0 10 + 9 4 0 9 5 0 10 + 1 1 0 2 1 0 10 + 1 5 0 2 5 0 10 + 2 1 0 3 1 0 10 + 2 5 0 3 5 0 10 + 3 1 0 4 1 0 10 + 3 5 0 4 5 0 10 + 4 1 0 5 1 0 10 + 4 5 0 5 5 0 10 + 5 1 0 6 1 0 10 + 5 5 0 6 5 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 7 1 0 8 1 0 10 + 7 5 0 8 5 0 10 + 8 1 0 9 1 0 10 + 8 5 0 9 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR224.3D b/graphics/3D/swapping 3D engine/objects/font/LTR224.3D new file mode 100755 index 0000000..4c0ceac --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR224.3D @@ -0,0 +1,40 @@ + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR225.3D b/graphics/3D/swapping 3D engine/objects/font/LTR225.3D new file mode 100755 index 0000000..9cd067c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR225.3D @@ -0,0 +1,42 @@ + 2 2 0 2 3 0 10 + 6 2 0 6 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 1 3 0 2 3 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 2 0 6 2 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 8 0 7 8 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR226.3D b/graphics/3D/swapping 3D engine/objects/font/LTR226.3D new file mode 100755 index 0000000..767049d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR226.3D @@ -0,0 +1,30 @@ + 1 2 0 1 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 1 7 0 1 8 0 10 + 4 7 0 4 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR227.3D b/graphics/3D/swapping 3D engine/objects/font/LTR227.3D new file mode 100755 index 0000000..9f6d17d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR227.3D @@ -0,0 +1,36 @@ + 1 2 0 1 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 5 2 0 6 2 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR228.3D b/graphics/3D/swapping 3D engine/objects/font/LTR228.3D new file mode 100755 index 0000000..1a346d3 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR228.3D @@ -0,0 +1,50 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR229.3D b/graphics/3D/swapping 3D engine/objects/font/LTR229.3D new file mode 100755 index 0000000..22b26c5 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR229.3D @@ -0,0 +1,40 @@ + 2 2 0 2 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR230.3D b/graphics/3D/swapping 3D engine/objects/font/LTR230.3D new file mode 100755 index 0000000..0fd6ec6 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR230.3D @@ -0,0 +1,34 @@ + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 7 2 0 8 2 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR231.3D b/graphics/3D/swapping 3D engine/objects/font/LTR231.3D new file mode 100755 index 0000000..ae60755 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR231.3D @@ -0,0 +1,32 @@ + 2 2 0 2 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 2 2 0 3 2 0 10 + 2 4 0 3 4 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR232.3D b/graphics/3D/swapping 3D engine/objects/font/LTR232.3D new file mode 100755 index 0000000..42c06bd --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR232.3D @@ -0,0 +1,56 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR233.3D b/graphics/3D/swapping 3D engine/objects/font/LTR233.3D new file mode 100755 index 0000000..365c15b --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR233.3D @@ -0,0 +1,48 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR234.3D b/graphics/3D/swapping 3D engine/objects/font/LTR234.3D new file mode 100755 index 0000000..48bb66a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR234.3D @@ -0,0 +1,48 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 8 7 0 8 8 0 10 + 1 3 0 2 3 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR235.3D b/graphics/3D/swapping 3D engine/objects/font/LTR235.3D new file mode 100755 index 0000000..f627767 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR235.3D @@ -0,0 +1,50 @@ + 3 1 0 3 2 0 10 + 8 1 0 8 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 6 7 0 6 8 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR236.3D b/graphics/3D/swapping 3D engine/objects/font/LTR236.3D new file mode 100755 index 0000000..aeadc99 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR236.3D @@ -0,0 +1,36 @@ + 2 3 0 2 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 7 4 0 7 5 0 10 + 9 4 0 9 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 7 5 0 7 6 0 10 + 9 5 0 9 6 0 10 + 2 6 0 2 7 0 10 + 8 6 0 8 7 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 7 3 0 8 3 0 10 + 7 7 0 8 7 0 10 + 8 4 0 9 4 0 10 + 8 6 0 9 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR237.3D b/graphics/3D/swapping 3D engine/objects/font/LTR237.3D new file mode 100755 index 0000000..a6d5d6a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR237.3D @@ -0,0 +1,44 @@ + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 2 2 0 2 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 7 0 7 7 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR238.3D b/graphics/3D/swapping 3D engine/objects/font/LTR238.3D new file mode 100755 index 0000000..0452f14 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR238.3D @@ -0,0 +1,36 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 1 4 0 1 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR239.3D b/graphics/3D/swapping 3D engine/objects/font/LTR239.3D new file mode 100755 index 0000000..5c06afb --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR239.3D @@ -0,0 +1,40 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR240.3D b/graphics/3D/swapping 3D engine/objects/font/LTR240.3D new file mode 100755 index 0000000..bcd22ca --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR240.3D @@ -0,0 +1,48 @@ + 1 2 0 1 3 0 10 + 8 2 0 8 3 0 10 + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 1 6 0 1 7 0 10 + 8 6 0 8 7 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR241.3D b/graphics/3D/swapping 3D engine/objects/font/LTR241.3D new file mode 100755 index 0000000..81e85e1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR241.3D @@ -0,0 +1,36 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 8 3 0 8 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR242.3D b/graphics/3D/swapping 3D engine/objects/font/LTR242.3D new file mode 100755 index 0000000..d7102f0 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR242.3D @@ -0,0 +1,36 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR243.3D b/graphics/3D/swapping 3D engine/objects/font/LTR243.3D new file mode 100755 index 0000000..abee609 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR243.3D @@ -0,0 +1,36 @@ + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR244.3D b/graphics/3D/swapping 3D engine/objects/font/LTR244.3D new file mode 100755 index 0000000..46a732a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR244.3D @@ -0,0 +1,24 @@ + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 8 2 0 8 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 4 8 0 4 9 0 10 + 6 8 0 6 9 0 10 + 4 2 0 5 2 0 10 + 4 9 0 5 9 0 10 + 5 1 0 6 1 0 10 + 5 9 0 6 9 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR245.3D b/graphics/3D/swapping 3D engine/objects/font/LTR245.3D new file mode 100755 index 0000000..c5220b2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR245.3D @@ -0,0 +1,22 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 2 6 0 2 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 7 0 6 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR246.3D b/graphics/3D/swapping 3D engine/objects/font/LTR246.3D new file mode 100755 index 0000000..b892620 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR246.3D @@ -0,0 +1,26 @@ + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 2 5 0 2 6 0 10 + 8 5 0 8 6 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR247.3D b/graphics/3D/swapping 3D engine/objects/font/LTR247.3D new file mode 100755 index 0000000..a5eb13f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR247.3D @@ -0,0 +1,44 @@ + 2 2 0 2 3 0 10 + 5 2 0 5 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 2 5 0 2 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 7 6 0 7 7 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 6 7 0 7 7 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR248.3D b/graphics/3D/swapping 3D engine/objects/font/LTR248.3D new file mode 100755 index 0000000..81e9e8e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR248.3D @@ -0,0 +1,32 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 2 1 0 3 1 0 10 + 2 5 0 3 5 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR249.3D b/graphics/3D/swapping 3D engine/objects/font/LTR249.3D new file mode 100755 index 0000000..c44b33a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR249.3D @@ -0,0 +1,8 @@ + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR250.3D b/graphics/3D/swapping 3D engine/objects/font/LTR250.3D new file mode 100755 index 0000000..78ba839 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR250.3D @@ -0,0 +1,6 @@ + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR251.3D b/graphics/3D/swapping 3D engine/objects/font/LTR251.3D new file mode 100755 index 0000000..60e248d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR251.3D @@ -0,0 +1,30 @@ + 4 1 0 4 2 0 10 + 9 1 0 9 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 6 5 0 6 6 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 8 1 0 9 1 0 10 + 8 2 0 9 2 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR252.3D b/graphics/3D/swapping 3D engine/objects/font/LTR252.3D new file mode 100755 index 0000000..3b3c226 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR252.3D @@ -0,0 +1,28 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 2 1 0 3 1 0 10 + 2 5 0 3 5 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 5 1 0 6 1 0 10 + 5 5 0 6 5 0 10 + 6 2 0 7 2 0 10 + 6 5 0 7 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR253.3D b/graphics/3D/swapping 3D engine/objects/font/LTR253.3D new file mode 100755 index 0000000..ceea4a4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR253.3D @@ -0,0 +1,28 @@ + 2 1 0 2 2 0 10 + 5 1 0 5 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 1 4 0 1 5 0 10 + 6 4 0 6 5 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 5 0 4 5 0 10 + 4 1 0 5 1 0 10 + 4 5 0 5 5 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR254.3D b/graphics/3D/swapping 3D engine/objects/font/LTR254.3D new file mode 100755 index 0000000..94a0b7d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR254.3D @@ -0,0 +1,18 @@ + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 2 6 0 2 7 0 10 + 7 6 0 7 7 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 3 3 0 4 3 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 7 0 7 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR255.3D b/graphics/3D/swapping 3D engine/objects/font/LTR255.3D new file mode 100755 index 0000000..e69de29 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR32.3D b/graphics/3D/swapping 3D engine/objects/font/LTR32.3D new file mode 100755 index 0000000..e69de29 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR33.3D b/graphics/3D/swapping 3D engine/objects/font/LTR33.3D new file mode 100755 index 0000000..9981886 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR33.3D @@ -0,0 +1,24 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 3 2 0 3 3 0 10 + 7 2 0 7 3 0 10 + 3 3 0 3 4 0 10 + 7 3 0 7 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 4 1 0 5 1 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR34.3D b/graphics/3D/swapping 3D engine/objects/font/LTR34.3D new file mode 100755 index 0000000..43a9f9e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR34.3D @@ -0,0 +1,20 @@ + 2 1 0 2 2 0 10 + 4 1 0 4 2 0 10 + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 3 1 0 4 1 0 10 + 3 4 0 4 4 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR35.3D b/graphics/3D/swapping 3D engine/objects/font/LTR35.3D new file mode 100755 index 0000000..269ce00 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR35.3D @@ -0,0 +1,44 @@ + 2 1 0 2 2 0 10 + 4 1 0 4 2 0 10 + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR36.3D b/graphics/3D/swapping 3D engine/objects/font/LTR36.3D new file mode 100755 index 0000000..9b612b0 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR36.3D @@ -0,0 +1,48 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 7 6 0 7 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR37.3D b/graphics/3D/swapping 3D engine/objects/font/LTR37.3D new file mode 100755 index 0000000..56432ad --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR37.3D @@ -0,0 +1,38 @@ + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR38.3D b/graphics/3D/swapping 3D engine/objects/font/LTR38.3D new file mode 100755 index 0000000..9613bc8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR38.3D @@ -0,0 +1,52 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 2 4 0 2 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR39.3D b/graphics/3D/swapping 3D engine/objects/font/LTR39.3D new file mode 100755 index 0000000..0ea2822 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR39.3D @@ -0,0 +1,12 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR40.3D b/graphics/3D/swapping 3D engine/objects/font/LTR40.3D new file mode 100755 index 0000000..255496e --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR40.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR41.3D b/graphics/3D/swapping 3D engine/objects/font/LTR41.3D new file mode 100755 index 0000000..8096075 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR41.3D @@ -0,0 +1,26 @@ + 2 1 0 2 2 0 10 + 4 1 0 4 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 6 0 6 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR42.3D b/graphics/3D/swapping 3D engine/objects/font/LTR42.3D new file mode 100755 index 0000000..77a6463 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR42.3D @@ -0,0 +1,36 @@ + 1 2 0 1 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR43.3D b/graphics/3D/swapping 3D engine/objects/font/LTR43.3D new file mode 100755 index 0000000..cf7cff9 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR43.3D @@ -0,0 +1,22 @@ + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 2 4 0 2 5 0 10 + 8 4 0 8 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR44.3D b/graphics/3D/swapping 3D engine/objects/font/LTR44.3D new file mode 100755 index 0000000..b17183a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR44.3D @@ -0,0 +1,12 @@ + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 5 7 0 5 8 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 5 0 5 5 0 10 + 4 8 0 5 8 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR45.3D b/graphics/3D/swapping 3D engine/objects/font/LTR45.3D new file mode 100755 index 0000000..a8d42ba --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR45.3D @@ -0,0 +1,16 @@ + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR46.3D b/graphics/3D/swapping 3D engine/objects/font/LTR46.3D new file mode 100755 index 0000000..98ff4ca --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR46.3D @@ -0,0 +1,10 @@ + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR47.3D b/graphics/3D/swapping 3D engine/objects/font/LTR47.3D new file mode 100755 index 0000000..2a000b3 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR47.3D @@ -0,0 +1,28 @@ + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 3 4 0 3 5 0 10 + 5 4 0 5 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 1 7 0 1 8 0 10 + 2 7 0 2 8 0 10 + 1 6 0 2 6 0 10 + 1 8 0 2 8 0 10 + 2 5 0 3 5 0 10 + 2 7 0 3 7 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 4 3 0 5 3 0 10 + 4 5 0 5 5 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR48.3D b/graphics/3D/swapping 3D engine/objects/font/LTR48.3D new file mode 100755 index 0000000..fe7bcf2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR48.3D @@ -0,0 +1,48 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR49.3D b/graphics/3D/swapping 3D engine/objects/font/LTR49.3D new file mode 100755 index 0000000..6c57234 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR49.3D @@ -0,0 +1,30 @@ + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 2 2 0 3 2 0 10 + 2 3 0 3 3 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR50.3D b/graphics/3D/swapping 3D engine/objects/font/LTR50.3D new file mode 100755 index 0000000..1af7b90 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR50.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR51.3D b/graphics/3D/swapping 3D engine/objects/font/LTR51.3D new file mode 100755 index 0000000..06fc18f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR51.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 7 4 0 7 5 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR52.3D b/graphics/3D/swapping 3D engine/objects/font/LTR52.3D new file mode 100755 index 0000000..78092ac --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR52.3D @@ -0,0 +1,32 @@ + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 7 2 0 7 3 0 10 + 3 3 0 3 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 1 5 0 2 5 0 10 + 1 6 0 2 6 0 10 + 2 4 0 3 4 0 10 + 2 6 0 3 6 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR53.3D b/graphics/3D/swapping 3D engine/objects/font/LTR53.3D new file mode 100755 index 0000000..51e3c92 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR53.3D @@ -0,0 +1,50 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 1 3 0 1 4 0 10 + 7 3 0 7 4 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR54.3D b/graphics/3D/swapping 3D engine/objects/font/LTR54.3D new file mode 100755 index 0000000..5dbd567 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR54.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 1 4 0 1 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR55.3D b/graphics/3D/swapping 3D engine/objects/font/LTR55.3D new file mode 100755 index 0000000..74f4a9a --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR55.3D @@ -0,0 +1,34 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 1 1 0 2 1 0 10 + 1 3 0 2 3 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 7 1 0 8 1 0 10 + 7 4 0 8 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR56.3D b/graphics/3D/swapping 3D engine/objects/font/LTR56.3D new file mode 100755 index 0000000..c9fa0a2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR56.3D @@ -0,0 +1,52 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR57.3D b/graphics/3D/swapping 3D engine/objects/font/LTR57.3D new file mode 100755 index 0000000..c790ac8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR57.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 8 4 0 8 5 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR58.3D b/graphics/3D/swapping 3D engine/objects/font/LTR58.3D new file mode 100755 index 0000000..2678315 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR58.3D @@ -0,0 +1,20 @@ + 4 2 0 4 3 0 10 + 7 2 0 7 3 0 10 + 4 3 0 4 4 0 10 + 7 3 0 7 4 0 10 + 4 6 0 4 7 0 10 + 7 6 0 7 7 0 10 + 4 7 0 4 8 0 10 + 7 7 0 7 8 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR59.3D b/graphics/3D/swapping 3D engine/objects/font/LTR59.3D new file mode 100755 index 0000000..a23d9dd --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR59.3D @@ -0,0 +1,20 @@ + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 3 8 0 3 9 0 10 + 5 8 0 5 9 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 9 0 5 9 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR60.3D b/graphics/3D/swapping 3D engine/objects/font/LTR60.3D new file mode 100755 index 0000000..93c051d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR60.3D @@ -0,0 +1,30 @@ + 5 1 0 5 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 5 7 0 5 8 0 10 + 7 7 0 7 8 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR61.3D b/graphics/3D/swapping 3D engine/objects/font/LTR61.3D new file mode 100755 index 0000000..7334a08 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR61.3D @@ -0,0 +1,32 @@ + 1 3 0 1 4 0 10 + 8 3 0 8 4 0 10 + 1 6 0 1 7 0 10 + 8 6 0 8 7 0 10 + 1 3 0 2 3 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 6 0 3 6 0 10 + 2 7 0 3 7 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 7 3 0 8 3 0 10 + 7 4 0 8 4 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR62.3D b/graphics/3D/swapping 3D engine/objects/font/LTR62.3D new file mode 100755 index 0000000..821766c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR62.3D @@ -0,0 +1,30 @@ + 2 1 0 2 2 0 10 + 4 1 0 4 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 2 7 0 2 8 0 10 + 4 7 0 4 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 5 3 0 6 3 0 10 + 5 6 0 6 6 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR63.3D b/graphics/3D/swapping 3D engine/objects/font/LTR63.3D new file mode 100755 index 0000000..4b11d9c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR63.3D @@ -0,0 +1,36 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 7 0 4 8 0 10 + 6 7 0 6 8 0 10 + 1 2 0 2 2 0 10 + 1 3 0 2 3 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR64.3D b/graphics/3D/swapping 3D engine/objects/font/LTR64.3D new file mode 100755 index 0000000..797aa6c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR64.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR65.3D b/graphics/3D/swapping 3D engine/objects/font/LTR65.3D new file mode 100755 index 0000000..faaddfa --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR65.3D @@ -0,0 +1,44 @@ + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 3 0 2 3 0 10 + 1 8 0 2 8 0 10 + 2 2 0 3 2 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 6 2 0 7 2 0 10 + 6 8 0 7 8 0 10 + 7 3 0 8 3 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR66.3D b/graphics/3D/swapping 3D engine/objects/font/LTR66.3D new file mode 100755 index 0000000..4b6c653 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR66.3D @@ -0,0 +1,48 @@ + 1 1 0 1 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR67.3D b/graphics/3D/swapping 3D engine/objects/font/LTR67.3D new file mode 100755 index 0000000..2f94d93 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR67.3D @@ -0,0 +1,42 @@ + 3 1 0 3 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 1 3 0 2 3 0 10 + 1 6 0 2 6 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 3 6 0 4 6 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR68.3D b/graphics/3D/swapping 3D engine/objects/font/LTR68.3D new file mode 100755 index 0000000..880065c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR68.3D @@ -0,0 +1,44 @@ + 1 1 0 1 2 0 10 + 6 1 0 6 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 6 7 0 6 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 3 0 6 3 0 10 + 5 6 0 6 6 0 10 + 5 8 0 6 8 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR69.3D b/graphics/3D/swapping 3D engine/objects/font/LTR69.3D new file mode 100755 index 0000000..37fddb8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR69.3D @@ -0,0 +1,48 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 7 2 0 7 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 1 4 0 1 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 7 6 0 7 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR70.3D b/graphics/3D/swapping 3D engine/objects/font/LTR70.3D new file mode 100755 index 0000000..6b7c9cf --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR70.3D @@ -0,0 +1,40 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 7 2 0 7 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 1 7 0 1 8 0 10 + 5 7 0 5 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 4 0 7 4 0 10 + 6 5 0 7 5 0 10 + 7 1 0 8 1 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR71.3D b/graphics/3D/swapping 3D engine/objects/font/LTR71.3D new file mode 100755 index 0000000..eca32d5 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR71.3D @@ -0,0 +1,48 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 5 0 6 5 0 10 + 5 6 0 6 6 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR72.3D b/graphics/3D/swapping 3D engine/objects/font/LTR72.3D new file mode 100755 index 0000000..83489a5 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR72.3D @@ -0,0 +1,40 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR73.3D b/graphics/3D/swapping 3D engine/objects/font/LTR73.3D new file mode 100755 index 0000000..1e5d7c0 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR73.3D @@ -0,0 +1,26 @@ + 3 1 0 3 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR74.3D b/graphics/3D/swapping 3D engine/objects/font/LTR74.3D new file mode 100755 index 0000000..776b3f4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR74.3D @@ -0,0 +1,32 @@ + 3 1 0 3 2 0 10 + 7 1 0 7 2 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 2 7 0 2 8 0 10 + 5 7 0 5 8 0 10 + 1 5 0 2 5 0 10 + 1 7 0 2 7 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR75.3D b/graphics/3D/swapping 3D engine/objects/font/LTR75.3D new file mode 100755 index 0000000..db2fdc8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR75.3D @@ -0,0 +1,46 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 1 4 0 1 5 0 10 + 5 4 0 5 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR76.3D b/graphics/3D/swapping 3D engine/objects/font/LTR76.3D new file mode 100755 index 0000000..0176492 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR76.3D @@ -0,0 +1,34 @@ + 1 1 0 1 2 0 10 + 5 1 0 5 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 7 6 0 7 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 6 0 8 6 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR77.3D b/graphics/3D/swapping 3D engine/objects/font/LTR77.3D new file mode 100755 index 0000000..7832c68 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR77.3D @@ -0,0 +1,44 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR78.3D b/graphics/3D/swapping 3D engine/objects/font/LTR78.3D new file mode 100755 index 0000000..f1281ae --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR78.3D @@ -0,0 +1,42 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR79.3D b/graphics/3D/swapping 3D engine/objects/font/LTR79.3D new file mode 100755 index 0000000..6e293f9 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR79.3D @@ -0,0 +1,44 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR80.3D b/graphics/3D/swapping 3D engine/objects/font/LTR80.3D new file mode 100755 index 0000000..d307dc8 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR80.3D @@ -0,0 +1,40 @@ + 1 1 0 1 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 1 7 0 1 8 0 10 + 5 7 0 5 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR81.3D b/graphics/3D/swapping 3D engine/objects/font/LTR81.3D new file mode 100755 index 0000000..424817f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR81.3D @@ -0,0 +1,50 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 6 8 0 6 9 0 10 + 8 8 0 8 9 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 9 0 7 9 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 + 7 9 0 8 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR82.3D b/graphics/3D/swapping 3D engine/objects/font/LTR82.3D new file mode 100755 index 0000000..2c79434 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR82.3D @@ -0,0 +1,48 @@ + 1 1 0 1 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 7 4 0 7 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR83.3D b/graphics/3D/swapping 3D engine/objects/font/LTR83.3D new file mode 100755 index 0000000..4f6b2b1 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR83.3D @@ -0,0 +1,52 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 2 4 0 2 5 0 10 + 7 4 0 7 5 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 2 0 2 2 0 10 + 1 4 0 2 4 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 5 0 3 5 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 2 0 8 2 0 10 + 7 3 0 8 3 0 10 + 7 5 0 8 5 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR84.3D b/graphics/3D/swapping 3D engine/objects/font/LTR84.3D new file mode 100755 index 0000000..cb09b71 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR84.3D @@ -0,0 +1,34 @@ + 2 1 0 2 2 0 10 + 8 1 0 8 2 0 10 + 2 2 0 2 3 0 10 + 3 2 0 3 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 7 2 0 7 3 0 10 + 8 2 0 8 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 3 0 8 3 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR85.3D b/graphics/3D/swapping 3D engine/objects/font/LTR85.3D new file mode 100755 index 0000000..220ef59 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR85.3D @@ -0,0 +1,40 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 7 0 2 7 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR86.3D b/graphics/3D/swapping 3D engine/objects/font/LTR86.3D new file mode 100755 index 0000000..e47f39c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR86.3D @@ -0,0 +1,38 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 4 7 0 4 8 0 10 + 5 7 0 5 8 0 10 + 1 1 0 2 1 0 10 + 1 5 0 2 5 0 10 + 2 1 0 3 1 0 10 + 2 6 0 3 6 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 6 0 5 6 0 10 + 4 8 0 5 8 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 6 0 7 6 0 10 + 7 1 0 8 1 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR87.3D b/graphics/3D/swapping 3D engine/objects/font/LTR87.3D new file mode 100755 index 0000000..8e76d1d --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR87.3D @@ -0,0 +1,44 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 1 3 0 1 4 0 10 + 3 3 0 3 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 4 4 0 4 5 0 10 + 5 4 0 5 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 8 5 0 8 6 0 10 + 1 6 0 1 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR88.3D b/graphics/3D/swapping 3D engine/objects/font/LTR88.3D new file mode 100755 index 0000000..e0aa360 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR88.3D @@ -0,0 +1,44 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 3 3 0 3 4 0 10 + 6 3 0 6 4 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 6 5 0 6 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 1 7 0 1 8 0 10 + 3 7 0 3 8 0 10 + 6 7 0 6 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 4 3 0 5 3 0 10 + 4 6 0 5 6 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 6 1 0 7 1 0 10 + 6 3 0 7 3 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 2 0 8 2 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR89.3D b/graphics/3D/swapping 3D engine/objects/font/LTR89.3D new file mode 100755 index 0000000..b037de4 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR89.3D @@ -0,0 +1,36 @@ + 2 1 0 2 2 0 10 + 4 1 0 4 2 0 10 + 6 1 0 6 2 0 10 + 8 1 0 8 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 8 3 0 8 4 0 10 + 3 4 0 3 5 0 10 + 7 4 0 7 5 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 3 7 0 3 8 0 10 + 7 7 0 7 8 0 10 + 2 1 0 3 1 0 10 + 2 4 0 3 4 0 10 + 3 1 0 4 1 0 10 + 3 5 0 4 5 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 4 0 5 4 0 10 + 4 8 0 5 8 0 10 + 5 4 0 6 4 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 5 0 7 5 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 4 0 8 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR90.3D b/graphics/3D/swapping 3D engine/objects/font/LTR90.3D new file mode 100755 index 0000000..c8e42ce --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR90.3D @@ -0,0 +1,50 @@ + 1 1 0 1 2 0 10 + 8 1 0 8 2 0 10 + 1 2 0 1 3 0 10 + 2 2 0 2 3 0 10 + 6 2 0 6 3 0 10 + 8 2 0 8 3 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 3 5 0 3 6 0 10 + 5 5 0 5 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 7 6 0 7 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 3 0 2 3 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 6 0 3 6 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 5 0 4 5 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 4 0 5 4 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 3 0 6 3 0 10 + 5 5 0 6 5 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 4 0 7 4 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 + 7 1 0 8 1 0 10 + 7 3 0 8 3 0 10 + 7 6 0 8 6 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR91.3D b/graphics/3D/swapping 3D engine/objects/font/LTR91.3D new file mode 100755 index 0000000..91b7752 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR91.3D @@ -0,0 +1,30 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 2 0 6 2 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 2 0 7 2 0 10 + 6 7 0 7 7 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR92.3D b/graphics/3D/swapping 3D engine/objects/font/LTR92.3D new file mode 100755 index 0000000..a5fbdba --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR92.3D @@ -0,0 +1,28 @@ + 1 1 0 1 2 0 10 + 3 1 0 3 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 3 3 0 3 4 0 10 + 5 3 0 5 4 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 7 7 0 7 8 0 10 + 8 7 0 8 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 2 1 0 3 1 0 10 + 2 3 0 3 3 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 4 3 0 5 3 0 10 + 4 5 0 5 5 0 10 + 5 4 0 6 4 0 10 + 5 6 0 6 6 0 10 + 6 5 0 7 5 0 10 + 6 7 0 7 7 0 10 + 7 6 0 8 6 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR93.3D b/graphics/3D/swapping 3D engine/objects/font/LTR93.3D new file mode 100755 index 0000000..4c6475c --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR93.3D @@ -0,0 +1,30 @@ + 2 1 0 2 2 0 10 + 7 1 0 7 2 0 10 + 5 2 0 5 3 0 10 + 7 2 0 7 3 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 5 5 0 5 6 0 10 + 7 5 0 7 6 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 2 1 0 3 1 0 10 + 2 2 0 3 2 0 10 + 2 7 0 3 7 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 2 0 4 2 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 1 0 5 1 0 10 + 4 2 0 5 2 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 1 0 6 1 0 10 + 5 8 0 6 8 0 10 + 6 1 0 7 1 0 10 + 6 8 0 7 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR94.3D b/graphics/3D/swapping 3D engine/objects/font/LTR94.3D new file mode 100755 index 0000000..15f43e7 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR94.3D @@ -0,0 +1,26 @@ + 4 1 0 4 2 0 10 + 5 1 0 5 2 0 10 + 3 2 0 3 3 0 10 + 6 2 0 6 3 0 10 + 2 3 0 2 4 0 10 + 4 3 0 4 4 0 10 + 5 3 0 5 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 4 0 2 4 0 10 + 1 5 0 2 5 0 10 + 2 3 0 3 3 0 10 + 2 5 0 3 5 0 10 + 3 2 0 4 2 0 10 + 3 4 0 4 4 0 10 + 4 1 0 5 1 0 10 + 4 3 0 5 3 0 10 + 5 2 0 6 2 0 10 + 5 4 0 6 4 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR95.3D b/graphics/3D/swapping 3D engine/objects/font/LTR95.3D new file mode 100755 index 0000000..720440f --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR95.3D @@ -0,0 +1,18 @@ + 1 8 0 1 9 0 10 + 9 8 0 9 9 0 10 + 1 8 0 2 8 0 10 + 1 9 0 2 9 0 10 + 2 8 0 3 8 0 10 + 2 9 0 3 9 0 10 + 3 8 0 4 8 0 10 + 3 9 0 4 9 0 10 + 4 8 0 5 8 0 10 + 4 9 0 5 9 0 10 + 5 8 0 6 8 0 10 + 5 9 0 6 9 0 10 + 6 8 0 7 8 0 10 + 6 9 0 7 9 0 10 + 7 8 0 8 8 0 10 + 7 9 0 8 9 0 10 + 8 8 0 9 8 0 10 + 8 9 0 9 9 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR96.3D b/graphics/3D/swapping 3D engine/objects/font/LTR96.3D new file mode 100755 index 0000000..e6dfc49 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR96.3D @@ -0,0 +1,12 @@ + 3 1 0 3 2 0 10 + 5 1 0 5 2 0 10 + 3 2 0 3 3 0 10 + 5 2 0 5 3 0 10 + 4 3 0 4 4 0 10 + 6 3 0 6 4 0 10 + 3 1 0 4 1 0 10 + 3 3 0 4 3 0 10 + 4 1 0 5 1 0 10 + 4 4 0 5 4 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR97.3D b/graphics/3D/swapping 3D engine/objects/font/LTR97.3D new file mode 100755 index 0000000..5016e75 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR97.3D @@ -0,0 +1,36 @@ + 2 3 0 2 4 0 10 + 6 3 0 6 4 0 10 + 5 4 0 5 5 0 10 + 7 4 0 7 5 0 10 + 2 5 0 2 6 0 10 + 7 5 0 7 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 5 6 0 5 7 0 10 + 7 6 0 7 7 0 10 + 2 7 0 2 8 0 10 + 8 7 0 8 8 0 10 + 1 6 0 2 6 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 4 0 3 4 0 10 + 2 5 0 3 5 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 5 0 4 5 0 10 + 3 6 0 4 6 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 5 0 5 5 0 10 + 4 6 0 5 6 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 8 0 6 8 0 10 + 6 4 0 7 4 0 10 + 6 8 0 7 8 0 10 + 7 7 0 8 7 0 10 + 7 8 0 8 8 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR98.3D b/graphics/3D/swapping 3D engine/objects/font/LTR98.3D new file mode 100755 index 0000000..f2324d2 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR98.3D @@ -0,0 +1,40 @@ + 1 1 0 1 2 0 10 + 4 1 0 4 2 0 10 + 2 2 0 2 3 0 10 + 4 2 0 4 3 0 10 + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 2 4 0 2 5 0 10 + 4 4 0 4 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 2 5 0 2 6 0 10 + 4 5 0 4 6 0 10 + 6 5 0 6 6 0 10 + 8 5 0 8 6 0 10 + 2 6 0 2 7 0 10 + 4 6 0 4 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 1 7 0 1 8 0 10 + 7 7 0 7 8 0 10 + 1 1 0 2 1 0 10 + 1 2 0 2 2 0 10 + 1 7 0 2 7 0 10 + 1 8 0 2 8 0 10 + 2 1 0 3 1 0 10 + 2 8 0 3 8 0 10 + 3 1 0 4 1 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/LTR99.3D b/graphics/3D/swapping 3D engine/objects/font/LTR99.3D new file mode 100755 index 0000000..68cfd33 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/LTR99.3D @@ -0,0 +1,38 @@ + 2 3 0 2 4 0 10 + 7 3 0 7 4 0 10 + 1 4 0 1 5 0 10 + 3 4 0 3 5 0 10 + 6 4 0 6 5 0 10 + 8 4 0 8 5 0 10 + 1 5 0 1 6 0 10 + 3 5 0 3 6 0 10 + 1 6 0 1 7 0 10 + 3 6 0 3 7 0 10 + 6 6 0 6 7 0 10 + 8 6 0 8 7 0 10 + 2 7 0 2 8 0 10 + 7 7 0 7 8 0 10 + 1 4 0 2 4 0 10 + 1 7 0 2 7 0 10 + 2 3 0 3 3 0 10 + 2 8 0 3 8 0 10 + 3 3 0 4 3 0 10 + 3 4 0 4 4 0 10 + 3 7 0 4 7 0 10 + 3 8 0 4 8 0 10 + 4 3 0 5 3 0 10 + 4 4 0 5 4 0 10 + 4 7 0 5 7 0 10 + 4 8 0 5 8 0 10 + 5 3 0 6 3 0 10 + 5 4 0 6 4 0 10 + 5 7 0 6 7 0 10 + 5 8 0 6 8 0 10 + 6 3 0 7 3 0 10 + 6 5 0 7 5 0 10 + 6 6 0 7 6 0 10 + 6 8 0 7 8 0 10 + 7 4 0 8 4 0 10 + 7 5 0 8 5 0 10 + 7 6 0 8 6 0 10 + 7 7 0 8 7 0 10 diff --git a/graphics/3D/swapping 3D engine/objects/font/mk3dfont.bas b/graphics/3D/swapping 3D engine/objects/font/mk3dfont.bas new file mode 100755 index 0000000..db21b62 --- /dev/null +++ b/graphics/3D/swapping 3D engine/objects/font/mk3dfont.bas @@ -0,0 +1,44 @@ +' 3D font table generator +' made by Svjatoslav Agejenko +' last edit 2004.01 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB ln (x1!, y1!, x2!, y2!) +SCREEN 13 + +FOR a = 32 TO 255 + LOCATE 2, 2 + PRINT CHR$(a) + n$ = STR$(a) + IF LEFT$(n$, 1) = " " THEN n$ = RIGHT$(n$, LEN(n$) - 1) + + n$ = "ltr" + n$ + ".3d" + + OPEN n$ FOR OUTPUT AS #1 + FOR y = 0 TO 15 + FOR x = 0 TO 15 + c1 = POINT(x, y) + c2 = POINT(x + 1, y) + IF c2 <> c1 THEN ln x + 1, y, x + 1, y + 1 + NEXT x + NEXT y + + FOR x = 0 TO 15 + FOR y = 0 TO 15 + c1 = POINT(x, y) + c2 = POINT(x, y + 1) + IF c2 <> c1 THEN ln x, y + 1, x + 1, y + 1 + NEXT y + NEXT x + + CLOSE #1 +NEXT a +SCREEN 0 +PRINT "done" +SYSTEM + +SUB ln (x1, y1, x2, y2) + PRINT #1, x1 - 7; y1 - 7; 0; x2 - 7; y2 - 7; 0; 10 +END SUB + diff --git a/graphics/3D/swapping 3D engine/qbext.com b/graphics/3D/swapping 3D engine/qbext.com new file mode 100755 index 0000000..ae54fc4 Binary files /dev/null and b/graphics/3D/swapping 3D engine/qbext.com differ diff --git a/graphics/3D/swapping 3D engine/run.bat b/graphics/3D/swapping 3D engine/run.bat new file mode 100755 index 0000000..2558764 --- /dev/null +++ b/graphics/3D/swapping 3D engine/run.bat @@ -0,0 +1,2 @@ +qbext +qb /run engine.bas \ No newline at end of file diff --git a/graphics/3D/tank1.bas b/graphics/3D/tank1.bas new file mode 100755 index 0000000..5f3a762 --- /dev/null +++ b/graphics/3D/tank1.bas @@ -0,0 +1,821 @@ +' Tank +' made by Svjatoslav Agejenko +' in 2000 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +' Use keys to move around: +' Left, Right, Up, Down look around +' + move fovard +' - move back +' q quit +' - stop + + +DECLARE SUB start () +DECLARE SUB savepos (x1%, y1%, x2%, y2%) +DECLARE SUB teemaad () +DECLARE SUB setgus () +DECLARE SUB getgus () +DECLARE SUB getgus1 (x1%, y1%, x2%, y2%) +DECLARE SUB kiri () +DECLARE SUB getcor () +DECLARE SUB mulcor () +DECLARE SUB nait3d () +DECLARE SUB calcsin () +DEFINT A-Y +DIM SHARED xn(1000), yn(1000), czn(1000) ' original points +DIM SHARED x(1000), y(1000), cz(1000) ' Rotated points +DIM SHARED Xs1(1000), Ys1(1000), Xe1(1000), Ye1(1000) ' Old rotated points +DIM SHARED pointers1(1000), pointers2(1000) ' Connected points +DIM SHARED cosine&(360), sine&(360) ' SIN & COS table +DIM SHARED np, nl + +DIM SHARED gusx(1 TO 1000) +DIM SHARED gusy(1 TO 1000) +DIM SHARED mitgus +DIM SHARED smes + + +DIM SHARED gusalgp ' segment +DIM SHARED gusalgl +DIM SHARED silalgp ' segment +DIM SHARED silalgl + +DIM SHARED gusxp +DIM SHARED myx, myy, myz +DIM SHARED myxp, myyp, myzp + +DIM SHARED deg1, deg2, deg3 +DIM SHARED speed + +DIM SHARED ssu + + +start + +nait3d + + + + +DATA -10,-30,-20 +DATA 30,-30,-20 +DATA 30,-10,-20 +DATA -10,-10,-20 + +DATA -10,-30,20 +DATA 30,-30,20 +DATA 30,-10,20 +DATA -10,-10,20 + +DATA -10,-40,-15 +DATA 30,-40,-15 +DATA -10,-40,15 +DATA 30,-40,15 + +DATA -20,-30,-15 +DATA -20,-30, 15 + +DATA -70,-10,-50 +DATA 60,-10, -50 +DATA 70, 0, -50 +DATA 70, 20, -50 +DATA 60, 30, -50 +DATA -70,30, -50 +DATA -80,20, -50 +DATA -80, 0, -50 + +DATA -70,-10,-30 +DATA 60,-10, -30 +DATA 70, 0, -30 +DATA 70, 20, -30 +DATA 60, 30, -30 +DATA -70,30, -30 +DATA -80,20, -30 +DATA -80, 0, -30 + +DATA -70,-10, 50 +DATA 60,-10, 50 +DATA 70, 0, 50 +DATA 70, 20, 50 +DATA 60, 30, 50 +DATA -70,30, 50 +DATA -80,20, 50 +DATA -80, 0, 50 + +DATA -70,-10, 30 +DATA 60,-10, 30 +DATA 70, 0, 30 +DATA 70, 20, 30 +DATA 60, 30, 30 +DATA -70,30, 30 +DATA -80,20, 30 +DATA -80, 0, 30 + +DATA -50,-7,-30 +DATA 50,-7,-30 +DATA 50, 15,-30 +DATA -50, 15,-30 + +DATA -50,-7, 30 +DATA 50,-7, 30 +DATA 50, 15,30 +DATA -50, 15,30 + +DATA -20,-20,-5 +DATA -20,-20, 5 +DATA -20,-30, 5 +DATA -20,-30,-5 + +DATA -100,-30,-5 +DATA -100,-30, 5 +DATA -100,-40, 5 +DATA -100,-40,-5 + +DATA 999,999,999 + +DATA 0,1 +DATA 1,2 +DATA 2,3 +DATA 3,0 + +DATA 4,5 +DATA 5,6 +DATA 6,7 +DATA 7,4 + +DATA 0,8 +DATA 1,9 +DATA 4,10 +DATA 5,11 + +DATA 0,12 +DATA 4,13 +DATA 12,8 +DATA 13,10 + +DATA 8,9 +DATA 10,11 +DATA 8,10 +DATA 9,11 + +DATA 12,13 +DATA 12,3 +DATA 13,7 +DATA 3,7 +DATA 1,5 +DATA 2,6 + +DATA 14,15 +DATA 15,16 +DATA 16,17 +DATA 17,18 +DATA 18,19 +DATA 19,20 +DATA 20,21 +DATA 21,14 + +DATA 22,23 +DATA 23,24 +DATA 24,25 +DATA 25,26 +DATA 26,27 +DATA 27,28 +DATA 28,29 +DATA 29,22 + +'DATA 14,22 +'DATA 15,23 +'DATA 16,24 +'DATA 17,25 +'DATA 18,26 +'DATA 19,27 +'DATA 20,28 +'DATA 21,29 + +DATA 30,31 +DATA 31,32 +DATA 32,33 +DATA 33,34 +DATA 34,35 +DATA 35,36 +DATA 36,37 +DATA 37,30 + +DATA 38,39 +DATA 39,40 +DATA 40,41 +DATA 41,42 +DATA 42,43 +DATA 43,44 +DATA 44,45 +DATA 45,38 + +'DATA 30,38 +'DATA 31,39 +'DATA 32,40 +'DATA 33,41 +'DATA 34,42 +'DATA 35,43 +'DATA 36,44 +'DATA 37,45 + +DATA 46,47 +DATA 47,48 +DATA 48,49 +DATA 49,46 + +DATA 50,51 +DATA 51,52 +DATA 52,53 +DATA 53,50 + +DATA 50,46 +DATA 51,47 +DATA 52,48 +DATA 53,49 + +DATA 54,55 +DATA 55,56 +DATA 56,57 +DATA 57,54 + +DATA 54,58 +DATA 55,59 +DATA 56,60 +DATA 57,61 + +DATA 58,59 +DATA 59,60 +DATA 60,61 +DATA 61,58 + +DATA 54,3 +DATA 55,7 + + +'DATA 62,63 + +DATA 999, 999 +' S I L D + + + + + + + + + + + ' parempoolsed k�epided +DATA 100,0,100 +DATA 100,50,100 + +DATA 50,0,100 +DATA 50,50,100 + +DATA 0,0,100 +DATA 0,50,100 + +DATA -50,0,100 +DATA -50,50,100 + +DATA -100,0,100 +DATA -100,50,100 + ' 5 +DATA -150,0,100 +DATA -150,50,100 + +DATA -200,0,100 +DATA -200,50,100 + +DATA -250,0,100 +DATA -250,50,100 + +DATA -300,0,100 +DATA -300,50,100 + +DATA -350,0,100 +DATA -350,50,100 + ' 10 + +DATA -400,0,100 +DATA -400,50,100 + +DATA -450,0,100 +DATA -450,50,100 + +DATA -500,0,100 +DATA -500,50,100 + +DATA -550,0,100 +DATA -550,50,100 + +DATA -600,0,100 +DATA -600,50,100 + +DATA -650,0,100 +DATA -650,50,100 + + ' vasak poolsed k�epided +DATA 100,0,-100 +DATA 100,50,-100 + +DATA 50,0,-100 +DATA 50,50,-100 + +DATA 0,0,-100 +DATA 0,50,-100 + +DATA -50,0,-100 +DATA -50,50,-100 + +DATA -100,0,-100 +DATA -100,50,-100 + ' 5 +DATA -150,0,-100 +DATA -150,50,-100 + +DATA -200,0,-100 +DATA -200,50,-100 + +DATA -250,0,-100 +DATA -250,50,-100 + +DATA -300,0,-100 +DATA -300,50,-100 + +DATA -350,0,-100 +DATA -350,50,-100 + ' 10 + +DATA -400,0,-100 +DATA -400,50,-100 + +DATA -450,0,-100 +DATA -450,50,-100 + +DATA -500,0,-100 +DATA -500,50,-100 + +DATA -550,0,-100 +DATA -550,50,-100 + +DATA -600,0,-100 +DATA -600,50,-100 + +DATA -650,0,-100 +DATA -650,50,-100 + ' alumine joon +DATA 100,75,-100 +DATA -650,75,-100 + +DATA 100,75,100 +DATA -650,75,100 + ' kallas +DATA 75,75,-100 +DATA 75,75,100 + 'parem +DATA -50,200,-100 +DATA -50,200,100 + +DATA 75,200,-190 +DATA 75,200, 190 + 'vasak +DATA -525,200,-100 +DATA -525,200, 100 + +DATA -600,200,-190 +DATA -600,200, 190 + + + + +DATA 999,999,999 + + 'parempoolesd k�epided +'DATA 0,1 +DATA 2,3 +DATA 4,5 +DATA 6,7 +DATA 8,9 + +DATA 10,11 +DATA 12,13 +DATA 14,15 +DATA 16,17 +DATA 18,19 + +DATA 20,21 +DATA 22,23 +DATA 24,25 +DATA 26,27 +DATA 28,29 +'DATA 30,31 + + 'vasakpoolsed k�epided +'DATA 32,33 +DATA 34,35 +DATA 36,37 +DATA 38,39 +DATA 40,41 + +DATA 42,43 +DATA 44,45 +DATA 46,47 +DATA 48,49 +DATA 50,51 + +DATA 52,53 +DATA 54,55 +DATA 56,57 +DATA 58,59 +DATA 60,61 +'DATA 62,63 + ' sild ise +'DATA 0,30 +'DATA 1,31 +'DATA 32,62 +'DATA 33,63 + +' pikad +DATA 0,4 +DATA 4,8 +DATA 8,12 +DATA 12,16 +DATA 16,20 +DATA 20,24 +DATA 24,28 +DATA 28,30 + +DATA 1,5 +DATA 5,9 +DATA 9,13 +DATA 13,17 +DATA 17,21 +DATA 21,25 +DATA 25,29 +DATA 29,31 + +DATA 32,36 +DATA 36,40 +DATA 40,44 +DATA 44,48 +DATA 48,52 +DATA 52,56 +DATA 56,60 +DATA 60,62 + +DATA 33,37 +DATA 37,41 +DATA 41,45 +DATA 45,49 +DATA 49,53 +DATA 53,57 +DATA 57,61 +DATA 61,63 + + + +' l�pp + +DATA 1,33 +DATA 31,63 + +DATA 64,65 +DATA 66,67 +DATA 64,66 +DATA 65,67 + +DATA 0,66 +DATA 32,64 +DATA 30,67 +DATA 62,65 + ' kallas +DATA 68,69 +DATA 70,71 +DATA 68,70 +DATA 69,71 + +DATA 72,70 +DATA 72,68 + +DATA 73,71 +DATA 73,69 + 'vasak +DATA 74,76 +DATA 75,77 +DATA 74,75 + +DATA 74,65 +DATA 76,65 + +DATA 75,67 +DATA 77,67 + + +DATA 999, 999 + +DEFINT Z +SUB calcsin +PRINT "Calculating SIN and COS data..." + +FOR a! = 0 TO 359 / 57.29577951# STEP 1 / 57.29577951# + cosine&(a) = INT(.5 + COS(a!) * 1024) + sine&(a) = INT(.5 + SIN(a!) * 1024) + a = a + 1 +NEXT +CLS +END SUB + +DEFSNG Z +SUB getcor +FOR a = 0 TO 10000 + READ x(a), y(a), cz(a) + IF x(a) = 999 THEN x(a) = 0: y(a) = 0: cz(a) = 0: GOTO 1 +NEXT +1 +np = a +FOR a = 0 TO 10000 + READ pointers1(a), pointers2(a) + IF pointers1(a) = 999 THEN GOTO 2 +NEXT +2 +nl = a + +gusalgp = np +gusalgl = nl + +FOR a = 1 TO 48 +pointers1(nl) = np +np = np + 1 +pointers2(nl) = np +np = np + 1 +nl = nl + 1 +NEXT a + + + +END SUB + +DEFINT Z +SUB getgus + +mitgus = 1 +getgus1 -70, -10, -80, 0 +getgus1 -80, 0, -80, 20 +getgus1 -80, 20, -70, 30 +getgus1 -70, 30, 60, 30 +getgus1 60, 30, 70, 20 +getgus1 70, 20, 70, 0 +getgus1 70, 0, 60, -10 +getgus1 60, -10, -70, -10 +'LOCATE 1, 1 +'PRINT mitgus +'SLEEP + + +END SUB + +DEFSNG Z +SUB getgus1 (x1, y1, x2, y2) +z1 = ABS(x1 - x2) +z2 = ABS(y2 - y1) +mi = SQR(z1 ^ 2 + z2 ^ 2) * 1.017142857# + +zxp = (x1 - x2) / mi +zyp = (y2 - y1) / mi +zx = x1 +zy = y1 + +FOR a = 1 TO mi +zx = zx - zxp +zy = zy + zyp +gusx(mitgus) = zx +gusy(mitgus) = zy +mitgus = mitgus + 1 +NEXT a + +END SUB + +DEFINT Z +SUB moveright +END SUB + +DEFSNG Z +SUB nait3d + +DO + +setgus + + deg1 = deg1 + d1 + deg2 = deg2 + d2 + deg3 = deg3 + d3 +'LOCATE 1, 1 +'PRINT deg1, deg2, deg3, speed + + IF deg1 <= 0 THEN deg1 = deg1 + 360 + IF deg2 <= 0 THEN deg2 = deg2 + 360 + IF deg3 <= 0 THEN deg3 = deg3 + 360 + + IF deg1 >= 360 THEN deg1 = deg1 - 360 + IF deg2 >= 360 THEN deg2 = deg2 - 360 + IF deg3 >= 360 THEN deg3 = deg3 - 360 + + c1& = cosine&(deg1): s1& = sine&(deg1) + c2& = cosine&(deg2): s2& = sine&(deg2) + c3& = cosine&(deg3): S3& = sine&(deg3) + +myx = myx - (s1& * speed / 100) +myy = myy - (c1& * speed / 100) +myz = myz - (s2& * speed / 100) + +FOR a = 0 TO np - 1 +x1 = x(a) + myx +y1 = y(a) + myz +pz1 = cz(a) + myy + +x2 = (x1 * c1& - pz1 * s1&) \ 1024 +pz2 = (x1 * s1& + pz1 * c1&) \ 1024 + +y2 = (y1 * c2& - pz2 * s2&) \ 1024 +pz3 = (y1 * s2& + pz2 * c2&) \ 1024 + +x3 = (y2 * c3& - x2 * S3&) \ 1024 +y3 = (y2 * S3& + x2 * c3&) \ 1024 + +IF pz3 > 10 THEN +xn(a) = 320 + (x3 / pz3 * 500) +yn(a) = 240 + (y3 / pz3 * 500) +ELSE +xn(a) = -1 +END IF + + +NEXT + + +FOR a1 = 0 TO nl - 1 +f1 = pointers1(a1) +s1 = pointers2(a1) + +xn = xn(f1) +yn = yn(f1) + +x1 = xn(s1) +y1 = yn(s1) + +IF Xs1(a1) = -1 OR Xe1(a1) = -1 THEN ELSE LINE (Xs1(a1), Ys1(a1))-(Xe1(a1), Ye1(a1)), 0 +IF x1 = -1 OR xn = -1 THEN ELSE LINE (x1, y1)-(xn, yn), 15 + + +Xs1(a1) = x1: Ys1(a1) = y1 +Xe1(a1) = xn: Ye1(a1) = yn +NEXT + + +k$ = INKEY$ +IF k$ <> "" THEN + +SELECT CASE k$ + +CASE CHR$(0) + "M" +d1 = d1 - 1 + +CASE CHR$(0) + "K" +d1 = d1 + 1 + +CASE CHR$(0) + "P" +d2 = d2 + 1 + +CASE CHR$(0) + "H" +d2 = d2 - 1 + +CASE "w" +d3 = d3 - 1 + +CASE "z" +d3 = d3 + 1 + +CASE "-" +speed = speed - 1 + +CASE "+" +speed = speed + 1 + +CASE " " +d1 = 0 +d2 = 0 +d3 = 0 +speed = 0 + +CASE CHR$(27) +SYSTEM + +END SELECT +k$ = "" +END IF +LOOP +END SUB + +SUB setgus +gusxp = gusxp + ssu +smes = smes + ssu +IF smes > 15 THEN smes = 1 +IF smes < 1 THEN smes = 15 +b = smes + +FOR a = gusalgp TO gusalgp + 48 STEP 2 +x(a) = gusx(b) - gusxp +y(a) = gusy(b) +cz(a) = 50 +x(a + 1) = gusx(b) - gusxp +y(a + 1) = gusy(b) +cz(a + 1) = 30 +b = b + 15 +NEXT a + +b = smes +FOR a = gusalgp + 48 TO gusalgp + 94 STEP 2 +x(a) = gusx(b) - gusxp +y(a) = gusy(b) +cz(a) = -50 +x(a + 1) = gusx(b) - gusxp +y(a + 1) = gusy(b) +cz(a + 1) = -30 +b = b + 15 +NEXT a + +' maa +FOR a = 0 TO 84 +x(a) = x(a) - ssu +NEXT a + +IF x(84) > 0 THEN ssu = 1 +IF x(83) < -400 THEN ssu = -1 + + + + +END SUB + +SUB start +SCREEN 12 +CLS +speed = 0 + +'deg1 = 270 +'deg2 = 0 +'deg3 = 90 + +deg1 = 210 +deg2 = 20 +deg3 = 90 + +smes = 1 +gusxp = 0 + +myxp = 0 +myyp = 0 +myzp = 0 +myx = 0 +myy = -300 +myz = 100 +smes = 1 + +ssu = 1 + +calcsin + +getcor +teemaad +getgus + + +END SUB + +SUB teemaad +silalgl = nl +np = np + 0 +silalgp = np + +5 +READ x(np), y(np), cz(np) +IF x(np) = 999 THEN x(np) = 0: y(np) = 0: cz(np) = 0: GOTO 3 +np = np + 1 +GOTO 5 + +3 +READ pointers1(nl), pointers2(nl) +IF pointers1(nl) = 999 THEN GOTO 4 +pointers1(nl) = pointers1(nl) + silalgp +pointers2(nl) = pointers2(nl) + silalgp +nl = nl + 1 +GOTO 3 +4 + +END SUB + diff --git a/graphics/3D/universe explorer/1.png b/graphics/3D/universe explorer/1.png new file mode 100755 index 0000000..ca51227 Binary files /dev/null and b/graphics/3D/universe explorer/1.png differ diff --git a/graphics/3D/universe explorer/2.png b/graphics/3D/universe explorer/2.png new file mode 100755 index 0000000..1b73573 Binary files /dev/null and b/graphics/3D/universe explorer/2.png differ diff --git a/graphics/3D/universe explorer/3.png b/graphics/3D/universe explorer/3.png new file mode 100755 index 0000000..1633045 Binary files /dev/null and b/graphics/3D/universe explorer/3.png differ diff --git a/graphics/3D/universe explorer/expluniv.bas b/graphics/3D/universe explorer/expluniv.bas new file mode 100755 index 0000000..152dacf --- /dev/null +++ b/graphics/3D/universe explorer/expluniv.bas @@ -0,0 +1,741 @@ +' 3D Universe Explorer +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB loadScript (a$) + +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerinit () +DECLARE SUB timerprocess () + +DECLARE SUB getCloudXYZ (a!, x1!, y1!, z2!) +DECLARE FUNCTION gdist! (x!, y!, z!) +DECLARE SUB mkworld () +DECLARE SUB galacloud (rx!, ry!, rz!) +DECLARE SUB temp () +DECLARE SUB mkgalaxy (x!, y!, z!) +DECLARE SUB rndinit () +DECLARE FUNCTION rn! () +DECLARE SUB disp () +DECLARE SUB startext () +DECLARE SUB control () +DECLARE SUB putbyte (addr!, dat!) +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () +DECLARE SUB animate () + + +DIM SHARED an1, an2, an3 + +DIM SHARED tim + +DIM SHARED extSEG, extADDR + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED buttL, buttR +DIM SHARED maxmove + + +DIM SHARED zoom +DIM SHARED rndval(0 TO 10000) +DIM SHARED rndp + + +DIM SHARED px(1 TO 10000) +DIM SHARED py(1 TO 10000) +DIM SHARED pz(1 TO 10000) +DIM SHARED pc(1 TO 10000) +DIM SHARED nump +DIM SHARED myspd + +DIM SHARED tempr(0 TO 10) + +DIM SHARED vd + + +DIM SHARED oftcloud(0 TO 3) + + +DIM SHARED oftGalaX(0 TO 19) +DIM SHARED oftGalaY(0 TO 19) +DIM SHARED oftGalaZ(0 TO 19) + + +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + +DIM SHARED timerStartScript +DIM SHARED ScriptRunning + + +start + + +cx = 0 +cy = 0 +cz = 0 + +myx = 123456 +myy = 321 +myz = 23 + +nump = 9999 +1 +mkworld + + + + + + +va = INT(RND * 3) + +SELECT CASE va +CASE 0 + cx = RND * 500 - 250 +CASE 1 + cy = RND * 100 - 50 +CASE 2 + cz = RND * 500 - 250 +END SELECT + + +control +disp + +timerprocess + +PCOPY 0, 1 +CLS +GOTO 1 + +SUB control + + +IF getbyte(8) <> 0 THEN + putbyte 8, 0 + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + butt = getword(6) + putword 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + + + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + + + +a$ = INKEY$ + +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) + +IF a$ = "1" THEN myspd = .1 +IF a$ = "2" THEN myspd = 1 +IF a$ = "3" THEN myspd = 10 +IF a$ = "4" THEN myspd = 100 +IF a$ = "5" THEN myspd = 1000 +IF a$ = "6" THEN myspd = 10000 +IF a$ = "7" THEN myspd = 100000 +IF a$ = "8" THEN myspd = 1000000 + +IF a$ = "q" THEN SYSTEM + +IF a$ = " " THEN + IF timerStartScript = 0 THEN + OPEN "script.dat" FOR OUTPUT AS #1 + timerStartScript = TIMER + END IF + PRINT #1, TIMER - timerStartScript; + PRINT #1, myx; myy; myz; an1; an2 + SOUND 2000, .1 +END IF + +IF a$ = "r" THEN + IF ScriptRunning = 0 THEN + timerinit + loadScript "script.dat" + ELSE + ScriptRunning = 0 + + END IF +END IF + + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs * myspd +myz = myz + myzs * myspd +myy = myy + myys * myspd + + +IF ScriptRunning = 1 THEN +'DIM SHARED timerCvalue(0 TO 50) + myx = timerCvalue(1) + myy = timerCvalue(2) + myz = timerCvalue(3) + an1 = timerCvalue(4) + an2 = timerCvalue(5) + + LOCATE 20, 1 +' PRINT "demo" +END IF + +END SUB + +SUB disp + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +vdn = 100000000 + +FOR a = 1 TO nump + + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + + IF ABS(x) < vdn THEN + IF ABS(y) < vdn THEN + IF ABS(z) < vdn THEN vdn = SQR(x * x + y * y + z * z) + END IF + END IF + + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + + IF z2 > 3 THEN + PSET (x1 / z2 * 130 + 160, y1 / z2 * 130 + 100), pc(a) + END IF + + +NEXT a + +vd = (vd * 5 + vdn) / 6 + + +LOCATE 1, 1 +'PRINT vdn +LOCATE 1, 20 +'PRINT vd + +END SUB + +SUB galacloud (rx, ry, rz) + + +a = INT(RND * 100) + + +d = (a + 30) * 500 + + +x = d +y = 0 +z = 0 + +a1 = SIN(a * (123.45 - (rx MOD 1235))) * 100 +a2 = SIN(a * 324 + (ry MOD 5431)) * 120 + + +s1 = SIN(a1) +c1 = COS(a1) +s2 = SIN(a2) +c2 = COS(a2) + + +x1 = x * c1 + z * s1 +z1 = z * c1 - x * s1 + +y1 = y * c2 + z1 * s2 +z2 = z1 * c2 - y * s2 + +fx = x1 + rx +fy = y1 + ry +fz = z2 + rz + +dist = gdist(fx, fy, fz) + +IF dist < 20000 THEN + pl = INT(RND * 20) + oftGalaX(pl) = fx + oftGalaY(pl) = fy + oftGalaZ(pl) = fz + mkgalaxy fx, fy, fz +ELSE + IF (RND * 100 < 10) OR (vd > 500000) THEN + mkgalaxy fx, fy, fz + END IF +END IF + + +END SUB + +FUNCTION gdist (x, y, z) +gdist = SQR((x - myx) ^ 2 + (y - myy) ^ 2 + (z - myz) ^ 2) + +END FUNCTION + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +SUB getCloudXYZ (a, x1, y1, z2) + + +d = a * 1000000 + + +x = d +y = 0 +z = 0 + +a1 = SIN(a * 123) * 100 +a2 = SIN(a * 975) * 120 + + +s1 = SIN(a1) +c1 = COS(a1) +s2 = SIN(a2) +c2 = COS(a2) + + +x1 = x * c1 + z * s1 +z1 = z * c1 - x * s1 + +y1 = y * c2 + z1 * s2 +z2 = z1 * c2 - y * s2 + + +END SUB + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB loadScript (a$) +ScriptRunning = 1 +rt = 2 + +OPEN "script.dat" FOR INPUT AS #2 +5 +IF EOF(2) <> 0 THEN GOTO 6 + +INPUT #2, t +t = t / 2 +rt = rt + 6 +FOR a = 1 TO 5 + INPUT #2, b + timerAdd a, rt, b +NEXT a + +GOTO 5 +6 +CLOSE #2 + +FOR a = 1 TO 5 + timerAdd a, -1, b +NEXT a + +END SUB + +SUB mkgalaxy (lx, ly, lz) + +IF (lx = 0) AND (ly = 0) AND (lz = 0) THEN GOTO 4 + + +rndp = ABS(lx + ly + lz) MOD 9000 +n1 = rn * 100 +n2 = rn * 100 +n3 = rn * 100 + +gs1 = SIN(n1) +gc1 = COS(n1) +gs2 = SIN(n2) +gc2 = COS(n2) +gs3 = SIN(n3) +gc3 = COS(n3) + + + +siz = rn * 50 + 75 +pi = 3.14 +sbm = INT(rn * 3) + 1 + + +dist = gdist(lx, ly, lz) +amo = 1 +IF dist < 20000 THEN amo = 1 +IF dist < 5000 THEN amo = 2 +IF dist < 1000 THEN amo = 10 +IF dist < 500 THEN amo = 50 + + + +FOR a = 1 TO amo + + b = RND * 10 + s = b * b / 30 + + v1 = RND * (11.5 - b) / 3 + v1p = v1 / 2 + + ane = RND * (s / 2) / sbm * 2 + sba = 2 * pi / sbm * INT(RND * sbm) + + x = (SIN(b - sba + ane) * s + RND * v1 - v1p) * siz + z = (COS(b - sba + ane) * s + RND * v1 - v1p) * siz + y = (RND * v1 - v1p) * siz + + + x1 = x * gc1 + z * gs1 + z1 = z * gc1 - x * gs1 + + y1 = y * gc2 + z1 * gs2 + z2 = z1 * gc2 - y * gs2 + + y2 = y1 * gc3 + x1 * gs3 + x2 = x1 * gc3 - y1 * gs3 + + + pla = INT(RND * nump) + 1 + + px(pla) = x2 + lx + py(pla) = y2 + ly + pz(pla) = z2 + lz + pc(pla) = INT(RND * 15) + 1 +NEXT a + + +4 +END SUB + +SUB mkworld + + +FOR b = 1 TO 10 + a = INT(RND * 100) + getCloudXYZ a, x, y, z + IF gdist(x, y, z) < vd * 3 THEN oftcloud(INT(RND * 4)) = a + galacloud x, y, z +NEXT b + + +IF vd < 4000000 THEN + LOCATE 3 +' PRINT "galaxy cloud zoom"; + + FOR b = 0 TO 3 + a = oftcloud(b) +' PRINT a; + getCloudXYZ a, x, y, z + galacloud x, y, z + NEXT b +END IF + +IF vd < 10000 THEN + LOCATE 4, 1 +' PRINT "Galaxy zoom" + FOR b = 0 TO 19 + x = oftGalaX(b) + y = oftGalaY(b) + z = oftGalaZ(b) +' PRINT x; y; z + mkgalaxy x, y, z + NEXT b +ELSE +' FOR b = 0 TO 3 +' oftGalaX(b) = 0 +' oftGalaY(b) = 0 +' oftGalaZ(b) = 0 +' NEXT b +END IF + + +END SUB + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +100 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 100 + + +END SUB + +SUB putbyte (addr, dat) + +POKE (extADDR + addr), dat +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +FUNCTION rn + +rndp = rndp + 1 +IF rndp > 10000 THEN rndp = 0 +rn = rndval(rndp) + +END FUNCTION + +SUB rndinit + + +FOR a = 0 TO 10000 + rndval(a) = RND +NEXT a + +rndp = 0 +END SUB + +SUB start + +PRINT "Universe Explorer" +PRINT "by Svjatoslav Agejenko, n0@hot.ee" +PRINT "2003.12" +PRINT +PRINT "Use mouse to aim." +PRINT "Use keys: a, s, d, w to move around," +PRINT "1 2 3 4 5 6 7 to change speed multiplier." +PRINT "r - to start/stop demo." +PRINT "q - to quit program." + +PRINT "right mouse button, to move UP <> DOWN." +PRINT "both right & left mouse buttons pressed to move BACK <> FRONT." + +PRINT "At least P3 500 MHz, would be nice." +PRINT "Better CPU, more details and higher framerate." +PRINT "Requires mouse driver, and QBasic extension TSR" +PRINT "to be loaded first." + +PRINT +PRINT "In this program:" + +PRINT "Several stars, make up galaxy." +PRINT "Several galaxies makes metagalaxy." +PRINT "Several metagalaxies makes up universe." + +PRINT +PRINT "Press Any key To Continue." +a$ = INPUT$(1) + +startext + + +SCREEN 7, , , 1 + +maxmove = 50 +rndinit +myspd = 1000000 + +END SUB + +SUB startext + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + +SUB timerAdd (element, time, value) + +FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 +NEXT a +timer3: + +timerTime(element, a) = time +timerValue(element, a) = value + +END SUB + +SUB timerdisp +LOCATE 1, 1 + +FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) +NEXT a + +END SUB + +SUB timerinit +timerLast = TIMER + + +FOR a = 1 TO 50 + FOR b = 1 TO 100 + timerTime(a, b) = 0 + timerValue(a, b) = 0 + NEXT b +NEXT a + + +END SUB + +SUB timerprocess + +timerCurrent = TIMER +timerDiff = timerCurrent - timerLast +timerLast = timerCurrent + +FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim +NEXT a + +END SUB + diff --git a/graphics/3D/universe explorer/index.html b/graphics/3D/universe explorer/index.html new file mode 100755 index 0000000..2daf567 --- /dev/null +++ b/graphics/3D/universe explorer/index.html @@ -0,0 +1,45 @@ + +Universe Explorer + + + +

Universe Explorer

+
+
+This QBasic program draws 3D universe consisting of stars in realtime. + +Stars form different galaxies, and galaxies in turn form metagalaxies, witch +finally form universe. + +Program allows you to freely fly around using mouse and the keyboard. +In this simulation universe consists from many millions of stars. +Since QBasic cannot handle large arrays it was quite an art to +invent and optimize formula witch syntheszies any part of the +universe on demand. Every galaxy and metagalaxy is unique. +When user flies near to some galaxy, it will be synthezied, +and detail level will increase. +


+
single metagalaxy +
+


+
single galaxy +
+


+
another galaxy +
+
+
+
+Requirements:
+	CPU 500 MHz or better
+	MS QBasic (preferably QB 4.5)
+	QBEXT TSR (included)
+
+Running program:
+	Since QB has no mouse support there is workaround hack: QBEXT.
+	Thats a tiny TSR that must be loaded first to allow
+	mouse usage.
+
+
+ + \ No newline at end of file diff --git a/graphics/3D/universe explorer/qbext.com b/graphics/3D/universe explorer/qbext.com new file mode 100755 index 0000000..ae54fc4 Binary files /dev/null and b/graphics/3D/universe explorer/qbext.com differ diff --git a/graphics/3D/universe explorer/run.bat b/graphics/3D/universe explorer/run.bat new file mode 100755 index 0000000..15e61be --- /dev/null +++ b/graphics/3D/universe explorer/run.bat @@ -0,0 +1,2 @@ +qbext +qb /run expluniv.bas \ No newline at end of file diff --git a/graphics/4D engine/index.html b/graphics/4D engine/index.html new file mode 100755 index 0000000..67998b4 --- /dev/null +++ b/graphics/4D engine/index.html @@ -0,0 +1,22 @@ + +4D engine + + + +

4D engine

+
+
+Implementation of 4 dimensional (4D) engine. +It's like 3D but with additional extra dimension. + +It's possible to define objects from 4D polygons. +In 4D world minimum amount of points to define 4D +shape is 5. Each point will be defined by 4 coordinates (X, Y, Z, Q). + +You can rotate object around any axis +(4D world has 6 rotation axes!) +Program allows you to move along any dimension. + +
+ + \ No newline at end of file diff --git a/graphics/4D engine/qeng.bas b/graphics/4D engine/qeng.bas new file mode 100755 index 0000000..bd9ab8f --- /dev/null +++ b/graphics/4D engine/qeng.bas @@ -0,0 +1,265 @@ +' 4D engine +' made by Svjatoslav Agejenko +' in 2003.08 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB chlin (x1!, y1!, z1!, q1!, x2!, y2!, z2!, q2!) +DECLARE SUB rot (x1!, y1!, z1!, q1!, x4!, y4!, z4!, q4!) +DECLARE SUB setpal () +DECLARE SUB getp (x1!, y1!, z1!, q1!, x2!, y2!, z2!, q2!, n!, rx!, ry!, rz!, rq!) +DECLARE SUB qpyra (x1!, y1!, z1!, q1!, x2!, y2!, z2!, q2!, x3!, y3!, z3!, q3!, x4!, y4!, z4!, q4!, x5!, y5!, z5!, q5!) +DECLARE FUNCTION vahe! (x1!, y1!, z1!, q1!, x2!, y2!, z2!, q2!) +DIM SHARED siz +DIM SHARED an1, an2, an3, an4, an5, an6 +DIM SHARED myx, myy, myz, myq +DIM SHARED pi +DIM SHARED s1, s2, s3, s4, s5, s6 +DIM SHARED c1, c2, c3, c4, c5, c6 + +DIM SHARED px(1 TO 10) +DIM SHARED py(1 TO 10) +DIM SHARED pm +DIM SHARED frm + +PRINT " 4D Engine, 2003.08" +PRINT " Svjatoslav Agejenko: n0@hot.ee" +PRINT "" +PRINT " use keys:" +PRINT " rotate:" +PRINT " qw - XZ" +PRINT " as - YZ" +PRINT " zx - XY" +PRINT " er - QX" +PRINT " df - QY" +PRINT " cv - QZ" +PRINT " move:" +PRINT " 46 - x" +PRINT " 82 - y" +PRINT " 71 - z" +PRINT " -+ - q" +PRINT +PRINT " ESC - to quit program" +PRINT +PRINT "press any key to continue..." +a$ = INPUT$(1) + +pi = 3.1415 + +an1 = pi * .5 +an2 = an1 +an3 = an1 +an4 = an1 +an5 = an1 +an6 = an1 + +myx = 0 +myy = 0 +myz = 0 +myq = .5 +SCREEN 12 +setpal + + +1 +CLS +s1 = SIN(an1): c1 = COS(an1) +s2 = SIN(an2): c2 = COS(an2) +s3 = SIN(an3): c3 = COS(an3) +s4 = SIN(an4): c4 = COS(an4) +s5 = SIN(an5): c5 = COS(an5) +s6 = SIN(an6): c6 = COS(an6) + +FOR frm = 1 TO 15 STEP 3 + qpyra -10, -10, -10, 0, 10, -10, -10, 0, 0, -10, 10, 0, 0, 10, 0, 0, 0, 0, 0, 10 +NEXT frm + +a$ = INPUT$(1) + +SELECT CASE a$ +CASE CHR$(27) + SYSTEM +CASE "q" + an1 = an1 + .1 +CASE "w" + an1 = an1 - .1 +CASE "a" + an2 = an2 + .1 +CASE "s" + an2 = an2 - .1 +CASE "z" + an3 = an3 + .1 +CASE "x" + an3 = an3 - .1 +CASE "e" + an4 = an4 + .1 +CASE "r" + an4 = an4 - .1 +CASE "d" + an5 = an5 + .1 +CASE "f" + an5 = an5 - .1 +CASE "c" + an6 = an6 + .1 +CASE "v" + an6 = an6 - .1 + +CASE "4" + myx = myx - 3 +CASE "6" + myx = myx + 3 +CASE "8" + myz = myz + 3 +CASE "2" + myz = myz - 3 +CASE "7" + myy = myy + 3 +CASE "1" + myy = myy - 3 +CASE "+" + myq = myq + .3 +CASE "-" + myq = myq - .3 + +END SELECT +GOTO 1 + +SUB chlin (ox1, oy1, oz1, oq1, ox2, oy2, oz2, oq2) +x1 = ox1: y1 = oy1: z1 = oz1: q1 = oq1 +x2 = ox2: y2 = oy2: z2 = oz2: q2 = oq2 + +IF (q1 > myq) AND (q2 < myq) THEN + SWAP x1, x2 + SWAP y1, y2 + SWAP z1, z2 + SWAP q1, q2 +END IF + +IF (q1 < myq) AND (q2 > myq) THEN + vq = q2 - q1 + vmq = myq - q1 + jt = vmq / vq + pm = pm + 1 + rx = (x2 - x1) * jt + x1 + ry = (y2 - y1) * jt + y1 + rz = (z2 - z1) * jt + z1 + 50 + px(pm) = rx / rz * 700 + 320 + py(pm) = ry / rz * 700 + 240 +END IF +END SUB + +SUB getp (x1, y1, z1, q1, x2, y2, z2, q2, n, rx, ry, rz, rq) +xv = x2 - x1 +yv = y2 - y1 +zv = z2 - z1 +qv = q2 - q1 + +rx = x1 + (xv * n) +ry = y1 + (yv * n) +rz = z1 + (zv * n) +rq = q1 + (qv * n) +END SUB + +SUB qpyra (ox1, oy1, oz1, oq1, ox2, oy2, oz2, oq2, ox3, oy3, oz3, oq3, ox4, oy4, oz4, oq4, ox5, oy5, oz5, oq5) + +ox1 = ox1 - myx +oy1 = oy1 - myy +oz1 = oz1 - myz +oq1 = oq1 - myq - frm + +ox2 = ox2 - myx +oy2 = oy2 - myy +oz2 = oz2 - myz +oq2 = oq2 - myq - frm + +ox3 = ox3 - myx +oy3 = oy3 - myy +oz3 = oz3 - myz +oq3 = oq3 - myq - frm + +ox4 = ox4 - myx +oy4 = oy4 - myy +oz4 = oz4 - myz +oq4 = oq4 - myq - frm + +ox5 = ox5 - myx +oy5 = oy5 - myy +oz5 = oz5 - myz +oq5 = oq5 - myq - frm + +rot ox1, oy1, oz1, oq1, x1, y1, z1, q1 +rot ox2, oy2, oz2, oq2, x2, y2, z2, q2 +rot ox3, oy3, oz3, oq3, x3, y3, z3, q3 +rot ox4, oy4, oz4, oq4, x4, y4, z4, q4 +rot ox5, oy5, oz5, oq5, x5, y5, z5, q5 + +pm = 0 + +chlin x1, y1, z1, q1, x2, y2, z2, q2 +chlin x1, y1, z1, q1, x3, y3, z3, q3 +chlin x1, y1, z1, q1, x4, y4, z4, q4 +chlin x1, y1, z1, q1, x5, y5, z5, q5 + +chlin x2, y2, z2, q2, x3, y3, z3, q3 +chlin x2, y2, z2, q2, x4, y4, z4, q4 +chlin x2, y2, z2, q2, x5, y5, z5, q5 + +chlin x3, y3, z3, q3, x4, y4, z4, q4 +chlin x3, y3, z3, q3, x5, y5, z5, q5 + +chlin x4, y4, z4, q4, x5, y5, z5, q5 + +FOR a = 1 TO pm + FOR b = a + 1 TO pm + LINE (px(a), py(a))-(px(b), py(b)), 15 - frm + NEXT b +NEXT a + + +END SUB + +SUB rot (x1, y1, z1, q1, x4, y4, z4, q4) + +' qx +q2 = q1 * s4 - x1 * c4 +x2 = q1 * c4 + x1 * s4 + +' qy +q3 = q2 * s5 - y1 * c5 +y2 = q2 * c5 + y1 * s5 + +' qz +q4 = q3 * s6 - z1 * c6 +z2 = q3 * c6 + z1 * s6 + +' zx +x3 = x2 * s1 - z2 * c1 +z3 = x2 * c1 + z2 * s1 + +' zy +y3 = y2 * s2 - z3 * c2 +z4 = y2 * c2 + z3 * s2 + +' xy +y4 = y3 * s3 - x3 * c3 +x4 = y3 * c3 + x3 * s3 + + +END SUB + +SUB setpal + +FOR a = 0 TO 15 + OUT &H3C8, a + OUT &H3C9, a * 4 + OUT &H3C9, a * 4 + OUT &H3C9, a * 4 + LINE (a, 0)-(a, 400), a +NEXT a +'a$ = INPUT$(1) +END SUB + +FUNCTION vahe (x1, y1, z1, q1, x2, y2, z2, q2) +vahe = SQR((x1 - x2) ^ 2 + (y1 - y2) ^ 2 + (z1 - z2) ^ 2 + (q1 - q2) ^ 2) +END FUNCTION + diff --git a/graphics/4D engine/sshot.png b/graphics/4D engine/sshot.png new file mode 100755 index 0000000..03e6e3e Binary files /dev/null and b/graphics/4D engine/sshot.png differ diff --git a/graphics/animations/2drot.bas b/graphics/animations/2drot.bas new file mode 100755 index 0000000..ab97306 --- /dev/null +++ b/graphics/animations/2drot.bas @@ -0,0 +1,54 @@ +' 3D rotation +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DIM SHARED px(1000) ' point x & y location +DIM SHARED py(1000) +DIM SHARED ox(1000) ' point old x & y location +DIM SHARED oy(1000) + + +SCREEN 13 + +np = 0 'Set points to them place +FOR x = -10 TO 10 +FOR y = -10 TO 10 +np = np + 1 +px(np) = x +py(np) = y +NEXT y +NEXT x + + 'Rotate points now +nrk = 0 'start angle +1 +nrk = nrk + .01 +s1 = SIN(nrk) +c1 = COS(nrk) + + +FOR a = 1 TO 399 +PSET (ox(a), oy(a)), 0 + +x = px(a) +y = py(a) + +x1 = x * s1 + y * c1 +y1 = x * c1 - y * s1 +x1 = x1 * 7 + 160 +y1 = y1 * 7 + 100 + + +ox(a) = x1 +oy(a) = y1 +PSET (x1, y1), 15 + +NEXT a + +IF INKEY$ = "" THEN GOTO 1 + + +SYSTEM + diff --git a/graphics/animations/matrix.bas b/graphics/animations/matrix.bas new file mode 100755 index 0000000..c44486c --- /dev/null +++ b/graphics/animations/matrix.bas @@ -0,0 +1,320 @@ +' Svjatoslav Agejenko +' year: 2002 + +DECLARE SUB adus (a%) +DECLARE SUB pt (x%, y%) +DECLARE SUB addn (x%, y%) +DECLARE SUB smo (x1%, y1%, x2%, y2%, r%) +DECLARE SUB putsym (x%, y%, a%) +DECLARE SUB setpal (b%) +DECLARE SUB start () +DECLARE SUB getfnt () +DEFINT A-Z +DIM SHARED font1(1 TO 400, 1 TO 10) +DIM SHARED font2(1 TO 400, 1 TO 10) +DIM SHARED font3(1 TO 400, 1 TO 10) +DIM SHARED pag(0 TO 20, 0 TO 20) +DIM SHARED pah(0 TO 20, 0 TO 20) +DIM SHARED pat(0 TO 20, 0 TO 20) +DIM SHARED usx(0 TO 20) +DIM SHARED usy(0 TO 20) +DIM SHARED uso(0 TO 20) +DIM SHARED tmr AS DOUBLE +usm = 8 + +start + +2 +FOR a = 1 TO usm +IF uso(a) = 0 THEN adus a +addn usx(a), usy(a) +usy(a) = usy(a) + 1 +IF usy(a) > 13 THEN usy(a) = 0 +uso(a) = uso(a) - 1 +NEXT a + + +FOR y = 0 TO 13 +FOR x = 0 TO 18 +a = pat(x, y) +a = a + 1 +IF a = 2 THEN pah(x, y) = 2: pt x, y +IF a = 5 THEN pah(x, y) = 3: pt x, y +IF a = 30 THEN pag(x, y) = 0: pt x, y +pat(x, y) = a +NEXT x +NEXT y + +3 +IF ABS(tmr - TIMER) < .1 THEN GOTO 3 +tmr = TIMER +IF INKEY$ <> "" THEN SYSTEM +GOTO 2 + +SUB addn (x, y) +pag(x, y) = RND * 8 + 1 +pah(x, y) = 1 +pat(x, y) = 0 +pt x, y + + +END SUB + +SUB adus (a) +usx(a) = RND * 18 +usy(a) = RND * 13 +uso(a) = RND * 5 + 3 +END SUB + +SUB getfnt +FOR a = 1 TO 9 +LOCATE 1, 1 +PRINT "Loading:" + STR$(a * 10) + "%" +LINE (49, 49)-(83, 83), 0, BF +putsym 50, 50, a +smo 50, 50, 82, 82, 1 +GET (50, 50)-(82, 82), font1(1, a) + +LINE (49, 49)-(83, 83), 0, BF +putsym 50, 50, a +smo 50, 50, 82, 82, 2 +GET (50, 50)-(82, 82), font2(1, a) + +LINE (49, 49)-(83, 83), 0, BF +putsym 50, 50, a +smo 50, 50, 82, 82, 3 +GET (50, 50)-(82, 82), font3(1, a) + +NEXT a +CLS +END SUB + +SUB pt (x, y) +x1 = x * 32 + 12 +y1 = y * 32 + 15 + +a = pag(x, y) +b = pah(x, y) + +IF a = 0 THEN +LINE (x1, y1)-(x1 + 32, y1 + 32), 0, BF +ELSE +SELECT CASE b +CASE 1 +PUT (x1, y1), font1(1, a), PSET +CASE 2 +PUT (x1, y1), font2(1, a), PSET +CASE 3 +PUT (x1, y1), font3(1, a), PSET +END SELECT +END IF + +END SUB + +SUB putsym (x, y, a) +SELECT CASE a +CASE 1 +LINE (x + 10, y + 5)-(x + 10, y + 20), 14 +LINE (x + 5, y + 15)-(x + 20, y + 15), 14 +LINE (x + 15, y + 25)-(x + 20, y + 25), 14 +LINE (x + 20, y + 25)-(x + 25, y + 20), 14 +LINE (x + 25, y + 20)-(x + 25, y + 5), 14 +CASE 2 +LINE (x + 5, y + 15)-(x + 25, y + 10), 14 +LINE (x + 15, y + 5)-(x + 10, y + 25), 14 +LINE (x + 25, y + 5)-(x + 20, y + 20), 14 +LINE (x + 20, y + 30)-(x + 30, y + 20), 14 +CASE 3 +LINE (x + 5, y + 5)-(x + 5, y + 25), 14 +LINE (x + 5, y + 5)-(x + 25, y + 25), 14 +LINE (x + 5, y + 25)-(x + 25, y + 25), 14 +LINE (x + 10, y + 10)-(x + 25, y + 5), 14 +CASE 4 +LINE (x + 10, y + 5)-(x + 20, y + 5), 14 +LINE (x + 20, y + 5)-(x + 25, y + 10), 14 +LINE (x + 25, y + 20)-(x + 20, y + 25), 14 +LINE (x + 20, y + 25)-(x + 10, y + 25), 14 +LINE (x + 10, y + 25)-(x + 10, y + 5), 14 +LINE (x + 5, y + 15)-(x + 20, y + 15), 14 +CASE 5 +LINE (x + 5, y + 5)-(x + 10, y + 10), 14 +LINE (x + 10, y + 10)-(x + 10, y + 25), 14 +LINE (x + 10, y + 25)-(x + 5, y + 30), 14 +LINE (x + 10, y + 25)-(x + 15, y + 30), 14 +LINE (x + 15, y + 30)-(x + 25, y + 30), 14 +LINE (x + 10, y + 20)-(x + 25, y + 20), 14 +CASE 6 +LINE (x + 5, y + 5)-(x + 10, y + 5), 14 +LINE (x + 5, y + 5)-(x + 5, y + 10), 14 +LINE (x + 10, y + 10)-(x + 10, y + 15), 14 +LINE (x + 10, y + 15)-(x + 20, y + 30), 14 +LINE (x + 20, y + 30)-(x + 25, y + 30), 14 +LINE (x + 5, y + 30)-(x + 10, y + 30), 14 +LINE (x + 25, y + 15)-(x + 10, y + 30), 14 +CASE 7 +LINE (x + 5, y + 15)-(x + 10, y + 15), 14 +LINE (x + 10, y + 15)-(x + 25, y + 5), 14 +LINE (x + 5, y + 25)-(x + 10, y + 25), 14 +LINE (x + 10, y + 25)-(x + 15, y + 5), 14 +LINE (x + 20, y + 5)-(x + 20, y + 20), 14 +PSET (x + 15, y + 25), 14 +PSET (x + 22, y + 25), 14 +CASE 8 +'line (x+,y+)-(x+,y+),15 +LINE (x + 15, y + 10)-(x + 15, y + 25), 14 +LINE (x + 20, y + 15)-(x + 20, y + 25), 14 +LINE (x + 5, y + 20)-(x + 10, y + 25), 14 +LINE (x + 10, y + 25)-(x + 25, y + 25), 14 +CASE 9 +LINE (x + 5, y + 5)-(x + 25, y + 5), 14 +LINE (x + 15, y + 5)-(x + 5, y + 20), 14 +LINE (x + 15, y + 5)-(x + 25, y + 20), 14 +LINE (x + 15, y + 5)-(x + 15, y + 25), 14 +LINE (x + 5, y + 30)-(x + 20, y + 20), 14 + +END SELECT + + + + +END SUB + +SUB setpal (b) +SELECT CASE b +CASE 2 +FOR a = 0 TO 14 +OUT &H3C8, a +OUT &H3C9, a * 2 +OUT &H3C9, a * 4.5 +OUT &H3C9, a * 3 +NEXT a +CASE 1 +FOR a = 0 TO 14 +OUT &H3C8, a +OUT &H3C9, 0 +OUT &H3C9, 0 +OUT &H3C9, 0 +NEXT a +OUT &H3C8, 15 +OUT &H3C9, 20 +OUT &H3C9, 63 +OUT &H3C9, 63 +END SELECT +END SUB + +SUB smo (x1, y1, x2, y2, r) + +c1 = 0 + +FOR y = y1 TO y2 +FOR x = x1 TO x2 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT x +NEXT y + +FOR x = x1 TO x2 +c1 = 0 +FOR y = y1 TO y2 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT y +NEXT x + + +FOR y = y1 TO y2 +c1 = 0 +FOR x = x2 TO x1 STEP -1 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT x +NEXT y + + +FOR x = x1 TO x2 +c1 = 0 +FOR y = y2 TO y1 STEP -1 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT y +NEXT x + + + + +IF r = 1 THEN GOTO 1 +rr = r + 1 + + +FOR y = y1 TO y2 +c1 = 0 +FOR x = x1 TO x2 +c = POINT(x, y) +c1 = (c1 * r + c) / rr +c2 = c1 - r +IF c2 < 0 THEN c2 = 0 +PSET (x, y), c2 +NEXT x +NEXT y + +FOR x = x1 TO x2 +c1 = 0 +FOR y = y1 TO y2 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT y +NEXT x + + +FOR y = y1 TO y2 +c1 = 0 +FOR x = x2 TO x1 STEP -1 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT x +NEXT y + + +FOR x = x1 TO x2 +c1 = 0 +FOR y = y2 TO y1 STEP -1 +c = POINT(x, y) +c1 = c1 - 5 +IF c1 < 0 THEN c1 = 0 +IF c > c1 THEN c1 = c +PSET (x, y), c1 +NEXT y +NEXT x + +1 + + + +END SUB + +SUB start +SCREEN 12 +setpal 1 +getfnt +setpal 2 + +END SUB + diff --git a/graphics/animations/matrix2.bas b/graphics/animations/matrix2.bas new file mode 100755 index 0000000..645e0f0 --- /dev/null +++ b/graphics/animations/matrix2.bas @@ -0,0 +1,73 @@ +' Svjatoslav Agejenko +' year: 2002 +DEFINT A-Z +DECLARE SUB putm () +DIM SHARED tmr AS DOUBLE +DIM SHARED arv(1 TO 20) +DIM SHARED lng +DIM SHARED msg$ +RANDOMIZE 2 + +CLS +COLOR 10, 0 +msg$ = "" +e = 0 +g = 0 +putm +1 +f = 0 +IF g >= 3 THEN f = 10000: g = 0 +SOUND f, .2 +e = e + 1 +g = g + 1 +IF e > 100 THEN putm: e = 0 + +b$ = "" +c = 1 +FOR a = 1 TO 80 +c = c + 1 +d$ = CHR$(RND * 9 + 48) +IF c > lng THEN c = 1: d$ = " " +b$ = b$ + d$ +NEXT a +LOCATE 25, 1 +PRINT b$ +IF INKEY$ <> "" THEN COLOR 7, 0: CLS : SYSTEM +GOTO 1 + +SUB putm +VIEW PRINT 1 TO 25 +SELECT CASE lng +CASE 13 +msg$ = "Are you sure the line is clear ?" +CASE 6 +msg$ = " Then I'll go ..." +END SELECT + +LOCATE 1, 30 +PRINT " " +LOCATE 1, 30 +PRINT msg$ +c = RND * 9 + 1 +FOR b = 1 TO 3 +FOR a = c TO 10 +IF arv(a) = -1 THEN arv(a) = RND * 8 + 1: lng = lng - 1: GOTO 2 +NEXT a +c = 1 +NEXT b +lng = 13 +FOR a = 1 TO 20 +arv(a) = -1 +NEXT a +CLS +IF msg$ <> "" THEN SYSTEM +2 +FOR a = 1 TO 20 +LOCATE 1, a +IF arv(a) = -1 THEN b$ = " " ELSE b$ = STR$(arv(a)) +b$ = RIGHT$(b$, 1) +PRINT b$ +NEXT a +VIEW PRINT 2 TO 25 +END SUB + diff --git a/graphics/animations/matrix4.bas b/graphics/animations/matrix4.bas new file mode 100755 index 0000000..876bbe7 --- /dev/null +++ b/graphics/animations/matrix4.bas @@ -0,0 +1,194 @@ +' by Svjatoslav Agejenko svjatoslavagejenko@gmail.com +' 2003.04 + +DECLARE FUNCTION getc% () +DECLARE SUB mks () +DEFINT A-Y +DECLARE SUB disp () +DECLARE SUB shpal () +DECLARE SUB start () + +DIM SHARED buf(1 TO 40, 1 TO 25) AS INTEGER +DIM SHARED col(1 TO 40, 1 TO 25) AS INTEGER +DIM SHARED snd(1 TO 20) +DIM SHARED sndp + +start +'shpal + +FOR y = 1 TO 25 + FOR x = 1 TO 40 + buf(x, y) = getc + NEXT x +NEXT y + +FOR y = 1 TO 25 + FOR x = 1 TO 40 + col(x, y) = 1 + NEXT x +NEXT y + +act = 0 +1 +mks +frm = frm + 1 +IF frm > 10000 THEN frm = 1 +FOR y = 25 TO 2 STEP -1 + FOR x = 1 TO 40 + buf(x, y) = buf(x, y - 1) + NEXT x +NEXT y +mks +FOR x = 1 TO 40 + buf(x, 1) = buf(x, 25) +NEXT x +buf(RND * 39 + 1, RND * 10 + 1) = getc +act = act + 1 +disp +SELECT CASE act +CASE 1 + FOR a = 1 TO 20 + snd(a) = 0 + IF RND * 100 < 2 THEN snd(a) = RND * 4000 + 4000 + NEXT a + b = SIN(frm / 100) * 3 + 6 + FOR a = 1 TO 20 STEP b + snd(a) = 10000 + NEXT a + +CASE 2 + c = RND * 5 + x1 = RND * 38 + 1 + y = RND * 23 + 1 + x2 = RND * 38 + 1 + IF x1 > x2 THEN SWAP x1, x2 + FOR x = x1 TO x2 + col(x, y) = c + NEXT x +CASE 3 + c = RND * 5 + y1 = RND * 23 + 1 + x = RND * 38 + 1 + y2 = RND * 23 + 1 + IF y1 > y2 THEN SWAP x1, x2 + FOR y = y1 TO y2 + col(x, y) = c + NEXT y +CASE 4 + IF RND * 100 < 20 THEN + FOR y = 1 TO 25 + FOR x = 1 TO 40 + IF col(x, y) > 1 THEN col(x, y) = col(x, y) - 1 + NEXT x + NEXT y + END IF +CASE 5 + IF RND * 100 < 5 THEN + FOR y = 1 TO 25 STEP 2 + FOR x = 1 TO 40 + col(x, y) = 1 + NEXT x + NEXT y + END IF +CASE 6 + IF RND * 100 < 5 THEN + FOR x = 1 TO 40 STEP 2 + FOR y = 1 TO 25 + col(x, y) = 1 + NEXT y + NEXT x + END IF +CASE 7 + FOR a = 1 TO 30 + col(RND * 39 + 1, RND * 23 + 1) = RND * 4 + 1 + NEXT a +CASE 8 + IF INKEY$ <> "" THEN SYSTEM + act = 0 +END SELECT +GOTO 1 + +SYSTEM + +SUB disp + +mks +LOCATE 1, 1 +FOR y = 1 TO 10 +FOR x = 1 TO 40 +COLOR col(x, y), 0 +PRINT CHR$(buf(x, y)); +NEXT x +NEXT y +mks +FOR y = 11 TO 20 +FOR x = 1 TO 40 +COLOR col(x, y), 0 +PRINT CHR$(buf(x, y)); +NEXT x +NEXT y +mks +FOR y = 21 TO 25 +FOR x = 1 TO 40 +COLOR col(x, y), 0 +PRINT CHR$(buf(x, y)); +NEXT x +NEXT y +mks + +END SUB + +FUNCTION getc +IF RND * 100 > 50 THEN + a = RND * 9 + 48 +ELSE + a = RND * 25 + 65 +END IF +IF RND * 100 < 15 THEN a = 32 +getc = a +END FUNCTION + +SUB mks +sndp = sndp + 1 +IF sndp > 20 THEN sndp = 1 +SOUND snd(sndp), .07 +'SOUND 0, .07 +END SUB + +SUB shpal + +FOR a = 0 TO 16 +COLOR a +PRINT a, "Palette test" +NEXT a +a$ = INPUT$(1) +END SUB + +SUB start +RANDOMIZE TIMER +CLS +WIDTH 40, 25 +VIEW PRINT 1 TO 25 + + OUT &H3C8, 0 + OUT &H3C9, 0 + OUT &H3C9, 0 + OUT &H3C9, 0 + +FOR a = 1 TO 5 + OUT &H3C8, a + + b = a * 5 + g = a * 10 + 20 + r = a * 0 + + IF r > 63 THEN r = 63 + IF g > 63 THEN g = 63 + IF b > 63 THEN b = 63 + OUT &H3C9, r + OUT &H3C9, g + OUT &H3C9, b +NEXT a + +END SUB + diff --git a/graphics/animations/mkcircle.bas b/graphics/animations/mkcircle.bas new file mode 100755 index 0000000..0dd6cdb --- /dev/null +++ b/graphics/animations/mkcircle.bas @@ -0,0 +1,194 @@ +' Svjatoslav Agejenko svjatoslavagejenko@gmail.com +' 2003.10 + + +DECLARE SUB textpage () +DECLARE SUB mkcircle () +DECLARE SUB mklines () +DECLARE SUB disp () +DECLARE SUB fill () +DIM SHARED pi +DIM SHARED an +DIM SHARED frm +DIM SHARED buf2(1 TO 50, 1 TO 80) AS STRING * 1 +DIM SHARED buf(1 TO 50, 1 TO 80) AS STRING * 1 +DIM SHARED col(1 TO 50, 1 TO 80) AS INTEGER + +DIM SHARED vl, hl, vls, hls + +WIDTH 80, 50 +VIEW PRINT 1 TO 50 +pi = 3.14159 +OPEN "mkcircle.bas" FOR INPUT AS #1 + +CLS + +hl = 20 +hls = 1 +vl = 20 +vls = 1 + +1 +frm = frm + 1 + +textpage +fill +mklines +mkcircle +disp +IF INKEY$ <> "" THEN GOTO 2 +GOTO 1 +2 +CLOSE #1 +SYSTEM + +SUB disp +COLOR 7, 0 +LOCATE 1, 1 +FOR y = 1 TO 50 + FOR x = 1 TO 80 + COLOR col(y, x) + PRINT buf(y, x); + buf(y, x) = buf2(y, x) + col(y, x) = 4 + NEXT x +NEXT y + +END SUB + +SUB fill +COLOR 4, 0 +siz = SIN(frm / 7) + 1.1 + +an = an + SIN(frm / 30) / 10 +rsx = 50 - SIN(an + pi / 4) * 12 * 20 * siz +rsy = 50 - COS(an + pi / 4) * 12 * 20 * siz + +sxp = SIN(an) * 6 * siz +syp = COS(an) * 6 * siz +rsxp = SIN(an + pi / 2) * 6 * siz +rsyp = COS(an + pi / 2) * 6 * siz + +FOR y = 1 TO 50 +rsx = rsx + rsxp +rsy = rsy + rsyp + +4 +IF rsx > 100 THEN rsx = rsx - 100: GOTO 4 +IF rsx < 0 THEN rsx = rsx + 100: GOTO 4 +IF rsy > 100 THEN rsy = rsy - 100: GOTO 4 +IF rsy < 0 THEN rsy = rsy + 100: GOTO 4 + +sx = rsx +sy = rsy + +FOR x = 1 TO 80 + c = 0 + sx = sx + sxp + sy = sy + syp + +3 + IF sx > 100 THEN sx = sx - 100: GOTO 3 + IF sx < 0 THEN sx = sx + 100: GOTO 3 + IF sy > 100 THEN sy = sy - 100: GOTO 3 + IF sy < 0 THEN sy = sy + 100: GOTO 3 + + IF sx < 12 OR sy < 12 THEN buf(y, x) = "*": col(y, x) = 9 + NEXT x +NEXT y +END SUB + +SUB mkcircle +cs = (SIN(frm / 10) + 1.01) * 30 +cy = SIN(frm / 12) * 30 + 40 +cx = COS(frm / 17) * 15 + 25 + +FOR y = 1 TO 50 +xp = SIN(y / 5 + frm / 30) * cs / 10 + +IF (y >= cy - cs) AND (y <= cy + cs) THEN + +h1 = SQR((y - (cy - cs)) * ((cy + cs) - y)) +IF (y >= cy - cs / 2) AND (y <= cy + cs / 2) THEN h2 = SQR((y - (cy - cs / 2)) * ((cy + cs / 2) - y)) ELSE h2 = 0 + + +s = cx - h1 + xp +IF s < 1 THEN s = 1 +e = cx - h2 + xp +IF e > 80 THEN e = 80 + +FOR x = s TO e +buf(y, x) = CHR$(RND * 40 + 48) +col(y, x) = RND * 15 +NEXT x + + +s = cx + h2 + xp +IF s < 1 THEN s = 1 +e = cx + h1 + xp +IF e > 80 THEN e = 80 + +FOR x = s TO e +buf(y, x) = CHR$(RND * 200 + 32) +col(y, x) = RND * 15 +NEXT x + +END IF + + +NEXT y + + + +END SUB + +SUB mklines +vl = vl + vls +IF vl > 49 THEN vls = -1 +IF vl < 2 THEN vls = 1 + +hl = hl + hls +IF hl > 79 THEN hls = -1 +IF hl < 2 THEN hls = 1 + +FOR x = 1 TO 80 + IF buf(vl, x) = "*" THEN c = 31 ELSE c = 10 + buf(vl, x) = "#" + col(vl, x) = c +NEXT x + +FOR y = 1 TO 50 + IF buf(y, hl) = "*" THEN c = 31 ELSE c = 10 + buf(y, hl) = "#" + col(y, hl) = c +NEXT y +END SUB + +SUB textpage +IF EOF(1) <> 0 THEN + CLOSE 1 + OPEN "mkcircle.bas" FOR INPUT AS #1 +END IF + +LINE INPUT #1, a$ + +FOR y = 1 TO 49 +FOR x = 1 TO 80 + buf2(y, x) = buf2(y + 1, x) +NEXT x +NEXT y + +FOR x = 1 TO 80 + buf2(50, x) = " " +NEXT x + +IF LEN(a$) > 80 THEN a$ = LEFT$(a$, 80) +FOR b = 1 TO LEN(a$) + c$ = RIGHT$(LEFT$(a$, b), 1) + buf2(50, b) = c$ +NEXT b + + + +END SUB + diff --git a/graphics/animations/movdna.bas b/graphics/animations/movdna.bas new file mode 100755 index 0000000..51d02be --- /dev/null +++ b/graphics/animations/movdna.bas @@ -0,0 +1,50 @@ +' Svjatoslav Agejenko + +DEFINT A-Y + +DIM SHARED cx(1 TO 100) +DIM SHARED cy(1 TO 100) +DIM SHARED cz(1 TO 100) +DIM SHARED cc(1 TO 100) + +SCREEN 7, , , 1 +f = 0 +1 +b = 0 +zf = zf + .1 +FOR a = 1 TO 20 + +b = b + 1 +cx(b) = SIN(a / 2 + zf) * 30 + 150 +cz(b) = SIN(a / 2 + zf + 1.6) * 2 + 2 +cy(b) = a * 8 + cz(b) +cc(b) = 3 +b = b + 1 +cx(b) = SIN(a / 2 + zf + 2.5) * 30 + 150 +cz(b) = SIN(a / 2 + zf + 1.6 + 2.5) * 2 + 2 +cy(b) = a * 8 + cz(b) +cc(b) = 4 +NEXT a + +CLS +FOR b = 0 TO 4 + +IF b = 1 THEN +FOR a = 1 TO 40 STEP 2 +LINE (cx(a), cy(a))-(cx(a + 1), cy(a + 1)), 15 +NEXT a +END IF + +FOR a = 1 TO 40 +IF cz(a) = b THEN +CIRCLE (cx(a), cy(a)), b + 5, cc(a) +PAINT (cx(a), cy(a)), cc(a) +CIRCLE (cx(a), cy(a)), b + 5, 0 +END IF +NEXT a +NEXT b +PCOPY 0, 1 +CLS +IF INKEY$ = "" THEN GOTO 1 +SYSTEM + diff --git a/graphics/animations/orbiit.bas b/graphics/animations/orbiit.bas new file mode 100755 index 0000000..9993ef4 --- /dev/null +++ b/graphics/animations/orbiit.bas @@ -0,0 +1,39 @@ +' Svjatoslav Agejenko + +DEFINT A-Y +SCREEN 7, , , 1 +RANDOMIZE TIMER +DIM SHARED zme(1 TO 100) +DIM SHARED zme1(1 TO 100) +DIM SHARED zme2(1 TO 100) + + + +FOR a = 1 TO 100 +zme2(a) = RND * 15 +zme1(a) = RND * 100 +zme(a) = RND * 100 +NEXT a +1 +CLS +FOR a = 1 TO 50 +z2 = zme(a) +z1 = zme1(a) +c = zme2(a) +x = SIN(z2) * 25 +y = SIN(z1) * 20 +zb = (COS(z2) + 2) * 2 +x = x * zb +y = y * zb +CIRCLE (x + 160, y + 100), zb, c +PAINT (x + 160, y + 100), c +LINE (160, 100)-(x + 160, y + 100), c + +zme(a) = zme(a) + .1 +NEXT a +PCOPY 0, 1 +IF INKEY$ <> "" THEN SYSTEM +SOUND 0, 1 +GOTO 1 + + diff --git a/graphics/animations/snow.bas b/graphics/animations/snow.bas new file mode 100755 index 0000000..5665707 --- /dev/null +++ b/graphics/animations/snow.bas @@ -0,0 +1,77 @@ +' Svjatoslav Agejenko 2003.04 + +DEFINT A-Z +DECLARE SUB fall (a) +DECLARE SUB start () + +amo = 500 + +DIM SHARED fx(1 TO amo) +DIM SHARED fy(1 TO amo) + +FOR a = 1 TO amo +fx(a) = RND * 300 + 10 +fy(a) = RND * 100 + 10 +NEXT a + +start + +1 +FOR b = 1 TO 100 +a = INT(RND * amo) + 1 +fall a +NEXT b +SOUND 0, .1 +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + +SUB fall (a) + +t = 0 +2 +PSET (fx(a), fy(a)), 0 + +ny = fy(a) + 1 +nx = fx(a) + INT(RND * 3) - 1 +IF POINT(nx, ny) > 0 THEN + IF t < 10 THEN t = t + 1: GOTO 2 + PSET (fx(a), fy(a)), 15 + nx = RND * 300 + 10 + ny = 1 +END IF + +IF fy(a) > 198 THEN + PSET (fx(a), fy(a)), 15 + nx = RND * 300 + 10 + ny = 1 +END IF + +fx(a) = nx +fy(a) = ny +PSET (fx(a), fy(a)), 15 +END SUB + +DEFSNG A-Z +SUB start +SCREEN 13 + +LOCATE 1, 1 +PRINT "SNOW" + +FOR y = 0 TO 15 STEP .2 + xp = SIN(y / 1) * 3 + 65 + FOR x = 0 TO 30 STEP .1 + ys = 4 + COS(x / 5) + yp = COS(x / 4 + 3) * 5 + 130 + c = POINT(x, y) + IF c > 0 THEN + LINE (x * 6 + xp, y * ys + yp)-(x * 6 + xp + 1, y * ys + yp + 1), 11, BF + END IF + NEXT x +NEXT y + +LOCATE 1, 1 +PRINT " " + +END SUB + diff --git a/graphics/animations/ssaver.bas b/graphics/animations/ssaver.bas new file mode 100755 index 0000000..e6547f5 --- /dev/null +++ b/graphics/animations/ssaver.bas @@ -0,0 +1,28 @@ +' Mystery screensaver +' made by Svjatoslav Agejenko +' last edit 2004.01 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +SCREEN 7, , , 1 + + +1 +frm = frm + 1 + +f = (SIN(frm / 100) + 1.1) * 2 +FOR s = 1 TO 20 STEP .1 + x = SIN(s / 1 + frm / 7) * 100 + y = COS(s / 1 + frm / 10) * 100 + x1 = SIN(s / 1 - frm / 8) * 100 + y1 = COS(s / 1 + frm / 15) * 100 + LINE (x + 160, y + 100)-(x1 + 160, y1 + 100), s MOD 15 +NEXT s + + +PCOPY 0, 1 +SOUND 0, 1 +CLS +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + diff --git a/graphics/animations/ssaver2.bas b/graphics/animations/ssaver2.bas new file mode 100755 index 0000000..5cd885b --- /dev/null +++ b/graphics/animations/ssaver2.bas @@ -0,0 +1,31 @@ +' Svjatoslav Agejenko 2003.04 + +SCREEN 7, , , 1 + +1 +IF frm > 10000 THEN frm = -10000 +FOR c = 1 TO 6 + OUT &H3C8, c + OUT &H3C9, SIN(c + frm * 3) * 30 + 31 + OUT &H3C9, COS(c * 1 + frm * 5) * 30 + 31 + OUT &H3C9, SIN(c * .7 + frm * 2.23) * 30 + 31 +NEXT c + +frm = frm + .01 + +FOR b = 1 TO 10 + c = (b MOD 6) + 1 + x = SIN(b + frm) * 100 + 150 + y = COS(b * 1.2 + frm * 1.81) * 80 + 100 + xs = SIN(b * frm * 2.3) + FOR xp = -50 TO 50 STEP 10 + ys = COS(xp / 60 + frm * 1 + b) * 50 + LINE (x, y)-(x + xp * xs, y - ys), c + NEXT xp +NEXT b +PCOPY 0, 1 +CLS +SOUND 0, .4 +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + diff --git a/graphics/animations/strange.bas b/graphics/animations/strange.bas new file mode 100755 index 0000000..6d7f2bd --- /dev/null +++ b/graphics/animations/strange.bas @@ -0,0 +1,27 @@ +' Svjatoslav Agejenko 2000 + +DECLARE SUB cir (x!, y!, r!, c!) +SCREEN 13 +pi = 3.1415926# +PAINT (1, 1), 1 +1 +x = SIN(a) * 40 + 160 +x1 = SIN(a + pi) * 40 + 160 +y = COS(a) * 34 + 100 +y1 = COS(a + pi) * 34 + 100 +cir x, y, 40, 0 +cir x1, y1, 40, 1 +a = a + .05 +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + +SUB cir (x, y, r, c) +cc1 = 0 +cc2 = 15 +IF c = 1 THEN SWAP cc1, cc2 +FOR a = 1 TO r +IF a < r / 2 THEN c1 = cc1 ELSE c1 = cc2 +CIRCLE (x, y), a, c1 +NEXT a +END SUB + diff --git a/graphics/animations/sun&eart.bas b/graphics/animations/sun&eart.bas new file mode 100755 index 0000000..628b1a5 --- /dev/null +++ b/graphics/animations/sun&eart.bas @@ -0,0 +1,45 @@ +' Sun; Earth and Moon +' made by Svjatoslav Agejenko +' in 1999 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + +DECLARE SUB maa (a2%, b2%, c2%) +DEFINT A-Y +DIM SHARED zw +DIM SHARED zy +SCREEN 7, , , 1 + + + +z = 0 +1 +z = z + .01 +a1 = SIN(z) * 100 + 100 +b1 = COS(z) * 30 + 100 +IF b1 >= 100 THEN CIRCLE (100, 100), 50, 12: PAINT (100, 100), 12 +maa a1, b1, (b1 - 70) / 2 + 2 +IF b1 < 100 THEN CIRCLE (100, 100), 50, 12: PAINT (100, 100), 12 +PCOPY 0, 1 +CLS +IF INKEY$ = "" THEN GOTO 1 +SYSTEM + +SUB maa (a2, b2, c2) +ed = (b2 - 70) / 2 + 2 + +zw = zw + .1 +zy = zy + .01 + +a1 = SIN(zw) * ed * 2 +b1 = COS(zw) * 10 + +IF b1 > 0 THEN CIRCLE (a2, b2), c2, 1: PAINT (a2, b2), 1 + +CIRCLE (a1 + a2, b1 + b2), ((b1 + 20) * ed) \ 50, 14 +PAINT (a1 + a2, b1 + b2), 14 + +IF b1 <= 0 THEN CIRCLE (a2, b2), c2, 1: PAINT (a2, b2), 1 +END SUB + diff --git a/graphics/animations/txtpal.bas b/graphics/animations/txtpal.bas new file mode 100755 index 0000000..0e35856 --- /dev/null +++ b/graphics/animations/txtpal.bas @@ -0,0 +1,67 @@ +' Svjatoslav Agejenko 2003.01 +' svjatoslavagejenko@gmail.com + +DEFINT A-Z +CLS +COLOR 7 + +FOR b = 1 TO 500 +COLOR RND * 15 +PRINT RND; +NEXT b + +COLOR 0, 1 +FOR y = 5 TO 20 +FOR x = 20 TO 50 +LOCATE y, x +PRINT " " +NEXT x +NEXT y +LOCATE 10, 25 +PRINT "[ TEST ]" + +LOCATE 15, 37 +COLOR 2 +PRINT "[ TEST ]" + +wa = 1 +p = &H3DA +1 +w = w + 1 +a = INP(p) +IF a >= 128 THEN a = a - 128 +IF a >= 64 THEN a = a - 64 +IF a >= 32 THEN a = a - 32 +IF a >= 16 THEN a = a - 16 +IF a < 8 THEN GOTO 1 + +frm = frm + 1 +IF frm > 10000 THEN frm = -10000 + + +IF w > 300 THEN wa = wa + 1 ELSE wa = wa - 1 +IF w < 250 THEN wa = wa - 5 +IF w > 3000 THEN wa = wa + 30 +IF w > 1000 THEN wa = wa + 5 + +IF INKEY$ <> "" THEN + OUT &H3C8, 0 + OUT &H3C9, 0 + OUT &H3C9, 0 + OUT &H3C9, 0 + SYSTEM +END IF + +FOR a = 0 TO 70 + b = a * 6 + frm + OUT &H3C8, 0 + OUT &H3C9, SIN(b / 20) * 30 + 30 + OUT &H3C9, SIN(b / 27) * 30 + 30 + OUT &H3C9, SIN(b / 31) * 30 + 30 + FOR u = 1 TO wa + NEXT u +NEXT a + +w = 0 +GOTO 1 + diff --git a/graphics/animations/water1.bas b/graphics/animations/water1.bas new file mode 100755 index 0000000..f6fdd5d --- /dev/null +++ b/graphics/animations/water1.bas @@ -0,0 +1,46 @@ +' Wave simulation +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +SCREEN 13 + +DIM SHARED yh(1 TO 300) +DIM SHARED yhs(1 TO 300) + + +FOR x = 1 TO 300 +yhs(x) = 0 +yh(x) = 100 +NEXT x + +FOR x = 140 TO 160 +yh(x) = 150 +NEXT x + + + +1 +FOR x = 1 TO 300 + LINE (x, 0)-(x, 200 - yh(x)), 0 + LINE (x, 200 - yh(x))-(x, 200), 15 +NEXT x + +FOR x = 10 TO 290 + hk = (yh(x - 1) + yh(x + 1) + yh(x + 2) + yh(x - 2)) / 4 + yhs(x) = yhs(x) + (hk - yh(x)) / 5 + yhs(x) = yhs(x) / 1.01 +NEXT x + +FOR x = 10 TO 290 + yh(x) = yh(x) + yhs(x) + yh(x - 1) = yh(x - 1) + yhs(x) / 2 + yh(x + 1) = yh(x + 1) + yhs(x) / 2 +NEXT x + +SOUND 0, .5 +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + + diff --git a/graphics/animations/water2.bas b/graphics/animations/water2.bas new file mode 100755 index 0000000..2865119 --- /dev/null +++ b/graphics/animations/water2.bas @@ -0,0 +1,59 @@ +' Wave simulation +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +SCREEN 13 + +DIM SHARED yh(1 TO 300) +DIM SHARED yhs(1 TO 300) + + +FOR x = 1 TO 300 +yhs(x) = 0 +yh(x) = 50 +NEXT x + + + +1 + +CLS +FOR x = 1 TO 300 +' LINE (x, 0)-(x, 200 - yh(x)), 0 +' LINE (x, 200 - yh(x))-(x, 200), 15 + PSET (x, 200 - yh(x)), 31 +NEXT x + + +FOR x = 10 TO 290 + hk = (yh(x - 1) + yh(x + 1) + yh(x + 2) + yh(x - 2)) / 4 + yhs(x) = yhs(x) + (hk - yh(x)) / 5 + yhs(x) = yhs(x) / 1.01 +NEXT x + +FOR x = 10 TO 290 + yh(x) = yh(x) + yhs(x) +' yh(x - 1) = yh(x - 1) + yhs(x) / 2 +' yh(x + 1) = yh(x + 1) + yhs(x) / 2 +'SOUND 0, .05 +NEXT x + +'FOR x = 10 TO 290 +' yh(x) = (yh(x) * 100 + yh(x + 1) + yh(x - 1)) / 102 +'NEXT x + +IF RND * 100 < 2 THEN + p = RND * 200 + s = RND * 10 + 2 + FOR x = 0 TO 3.14 STEP 3.14 / s + yh(p) = yh(p) + SIN(x) * s * 3 + p = p + 1 + NEXT x +END IF + +IF INKEY$ <> "" THEN SYSTEM +GOTO 1 + + diff --git a/graphics/bumpmap.bas b/graphics/bumpmap.bas new file mode 100755 index 0000000..e947549 --- /dev/null +++ b/graphics/bumpmap.bas @@ -0,0 +1,99 @@ +DECLARE SUB makeSurface () +DECLARE SUB animate () +DECLARE SUB makeDot (x!, y!) +DECLARE SUB paintImage () +SCREEN 13 + +DIM SHARED imgh(0 TO 50, 0 TO 50) + +PAINT (0, 0), 1 + +makeSurface +paintImage +animate + +SUB animate + +frm = 0 +1 +frm = frm + 5 +lx = SIN(frm / 100) * 20 + 25 +ly = SIN(frm / 71.32) * 20 + 25 +lx = lx + SIN(frm / 34) * 10 +ly = ly + SIN(frm / 45) * 10 + + +FOR y = 2 TO 48 + FOR x = 2 TO 48 + d = SQR((x - lx) ^ 2 + (y - ly) ^ 2) + b = (30 - d) / 4 + + v = imgh(x - 1, y) - imgh(x, y) + bpx = (lx - x) * v + + v = imgh(x, y - 1) - imgh(x, y) + bpy = (ly - y) * v + + b = b + (bpx + bpy) / (d / 2) + + IF b < 0 THEN b = 0 + IF b > 15 THEN b = 15 + PSET (x + 150, y), 16 + b + NEXT x +NEXT y + +CIRCLE (lx + 150, ly), 2, 12 + + +GOTO 1 + + +END SUB + +SUB makeDot (x, y) + +FOR x1 = -10 TO 10 + FOR y1 = -10 TO 10 + dist = SQR(x1 * x1 + y1 * y1) + p = 4 - dist + IF p < 0 THEN p = 0 + imgx = x1 + x + imgy = y1 + y + IF imgx < 0 THEN imgx = 0 + IF imgy < 0 THEN imgy = 0 + IF imgx > 50 THEN imgx = 50 + IF imgy > 50 THEN imgy = 50 + imgh(imgx, imgy) = imgh(imgx, imgy) + p + + + NEXT y1 +NEXT x1 + +END SUB + +SUB makeSurface +FOR x = 0 TO 10 + makeDot RND * 50, RND * 50 +NEXT x + +FOR x = 0 TO 45 STEP 2 + makeDot x, x / 2 + 5 +NEXT x + +FOR x = 5 TO 30 STEP 2 + makeDot x, -x / 1.2 + 30 +NEXT x + +END SUB + +SUB paintImage +FOR x = 0 TO 50 + FOR y = 0 TO 50 + c = imgh(x, y) + 16 + PSET (x, y), c + NEXT y +NEXT x + + +END SUB + diff --git a/graphics/fract.bas b/graphics/fract.bas new file mode 100755 index 0000000..2ecb464 --- /dev/null +++ b/graphics/fract.bas @@ -0,0 +1,35 @@ +' by Svjatoslav Agejenko +' 04.2003 + +DECLARE SUB ga (x!, y!, s!) +DIM SHARED depth +DIM SHARED m1, m2, m3, m4 +SCREEN 7, , , 1 + +depth = 1 +1 +frm = frm + 1 +m1 = SIN(frm / 19) * 1 + 3 +m2 = SIN(frm / 12) * 1 + 3 +m3 = SIN(frm / 17) * 1 + 3 +m4 = SIN(frm / 22) * 1 + 3 +PCOPY 0, 1 +CLS +ga 160, 100, 40 +SOUND 0, .4 +a$ = INKEY$ +IF a$ <> "" THEN SYSTEM +GOTO 1 + +SUB ga (x, y, s) +IF s > 1 THEN + depth = depth + 1 + LINE (x - s, y - s)-(x + s, y + s), depth, BF + ga x - s, y - s, s / m1 + ga x + s, y - s, s / m2 + ga x + s, y + s, s / m3 + ga x - s, y + s, s / m4 + depth = depth - 1 +END IF +END SUB + diff --git a/graphics/fract2.bas b/graphics/fract2.bas new file mode 100755 index 0000000..6feb3e9 --- /dev/null +++ b/graphics/fract2.bas @@ -0,0 +1,44 @@ +' by Svjatoslav Agejenko +' 04.2003 + +DECLARE SUB ga (x!, y!, s!) +DIM SHARED m1, m2, m3 +DIM SHARED v11, v12 +DIM SHARED v21, v22 +DIM SHARED v31, v32 +SCREEN 7, , , 1 + +1 +frm = frm + 1 +m1 = SIN(frm / 19) + 3 +m2 = SIN(frm / 12) + 3 +m3 = SIN(frm / 17) + 3 + +v11 = SIN(frm / 13) / 3 + 1 +v12 = SIN(frm / 18) / 3 + 1 + +v21 = SIN(frm / 20) / 3 + 1 +v22 = SIN(frm / 28) / 3 + 1 + +v31 = SIN(frm / 31) / 3 + 1 +v32 = SIN(frm / 24) / 3 + 1 + +PCOPY 0, 1 +CLS +ga 160, 180, 80 +SOUND 0, .5 +a$ = INKEY$ +IF a$ <> "" THEN SYSTEM +GOTO 1 + +SUB ga (x, y, s) +IF s > 1 THEN + LINE (x, y)-(x - s * v11, y - s * v12), 15 + LINE (x, y)-(x + s * v21, y - s * v22), 15 + LINE (x, y)-(x, y - s), 15 + ga x - s * v11, y - s * v12, s / m1 + ga x + s * v21, y - s * v22, s / m2 + ga x, y - s, s / m3 +END IF +END SUB + diff --git a/graphics/fract3.bas b/graphics/fract3.bas new file mode 100755 index 0000000..e3867c7 --- /dev/null +++ b/graphics/fract3.bas @@ -0,0 +1,73 @@ +' Fractal +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp + + +pi = 3.14128 + +SCREEN 12 + + +sv1 = 5 +sv2 = 2 +vp = .2 + +sh1 = 2 +sh2 = 1.4 +hp = .2 + + +mo 320, 240, pi - .9, 50, 0 + +a$ = INPUT$(1) +SYSTEM + +SUB mo (x, y, an, s, w) +depth = depth + 1 +IF s < .2 THEN GOTO 1 + +IF depth / 2 = depth \ 2 THEN c = 15 ELSE c = 10 + +CIRCLE (x, y), s, c +PAINT (x, y), c + +IF w <> 1 THEN +x1 = SIN(an) * s * 2.5 + x +y1 = COS(an) * s * 2.5 + y +IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 3 +END IF + +IF w <> 2 THEN +x1 = SIN(an - pi / 2) * s * 2.5 + x +y1 = COS(an - pi / 2) * s * 2.5 + y +IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 4 +END IF + +IF w <> 3 THEN +x1 = SIN(an - pi) * s * 2.5 + x +y1 = COS(an - pi) * s * 2.5 + y +IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 1 +END IF + +IF w <> 4 THEN +x1 = SIN(an - pi * 1.5) * s * 2.5 + x +y1 = COS(an - pi * 1.5) * s * 2.5 + y +IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 2 +END IF + +1 +depth = depth - 1 +END SUB + diff --git a/graphics/poly.bas b/graphics/poly.bas new file mode 100755 index 0000000..9339610 --- /dev/null +++ b/graphics/poly.bas @@ -0,0 +1,59 @@ +' Plygon mapping +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DEFINT A-Z +DECLARE SUB fp (x1, y1, x2, y2, x3, y3, c) +SCREEN 13 + +2 +x1 = RND * 318 + 1 +y1 = RND * 198 + 1 + +x2 = RND * 318 + 1 +y2 = RND * 198 + 1 + +x3 = RND * 318 + 1 +y3 = RND * 198 + 1 + + +fp x1, y1, x2, y2, x3, y3, RND * 255 +IF INKEY$ <> "" THEN SYSTEM +GOTO 2 + +SUB fp (x1, y1, x2, y2, x3, y3, c) +DIM yb(-10 TO 210) + +mx1 = x1 +my1 = y1 +mx2 = x2 +my2 = y2 +GOSUB mkl +mx1 = x1 +my1 = y1 +mx2 = x3 +my2 = y3 +GOSUB mkl +mx1 = x3 +my1 = y3 +mx2 = x2 +my2 = y2 +GOSUB mkl +GOTO 1 + +mkl: +IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2 +FOR y = my1 TO my2 - 1 +x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1)) +IF yb(y) = 0 THEN +yb(y) = x +ELSE +LINE (x, y)-(yb(y), y), c +END IF +NEXT y +RETURN +1 +END SUB + diff --git a/graphics/polymap.bas b/graphics/polymap.bas new file mode 100755 index 0000000..a251eaa --- /dev/null +++ b/graphics/polymap.bas @@ -0,0 +1,544 @@ +' Texture mapping and different interpolation methods, +' by Timo Laidla & Svjatoslav Agejenko +' 2003.07 + +' Use keys: +' 0 - no interpolation +' 1 - linear interpolation +' 2 - cosinus interpolation +' 3 - quadric interpolation +' 4 - double texture, main with linear interpolation + mikro texture, +' for very close up look. +' 5 - smart interpolation. Rounds up sharp edges, good for drawings. +' ESC - exit program + + +DECLARE SUB initsmart () +DECLARE FUNCTION intsmart! (bx1!, by1!, sx!, sy!) +DECLARE FUNCTION getmappix! (x!, y!, s!) +DECLARE SUB initmap () +DECLARE FUNCTION intmap! (bx1!, by1!, sx!, sy!) +DECLARE SUB demo () +DECLARE FUNCTION intcos! (bx1!, by1!, sx!, sy!) +DECLARE FUNCTION intlin! (bx1!, by1!, sx!, sy!) +DECLARE FUNCTION intcub! (bx1!, by1!, sx!, sy!) +DECLARE FUNCTION Cub! (n0!, n1!, n2!, n3!, x!) +DECLARE SUB hline (x1!, x2!, y!, u1!, v1!, u2!, v2!) +DECLARE SUB lin (x1!, y1!, x2!, y2!, u1!, v1!, u2!, v2!) +DECLARE SUB poly (x1!, y1!, x2!, y2!, x3!, y3!, u1!, v1!, u2!, v2!, u3!, v3!) +DECLARE SUB start () + +DIM SHARED buf(0 TO 99, 0 TO 99) + +DIM SHARED xbuf(0 TO 199) +DIM SHARED ubuf(0 TO 199) +DIM SHARED vbuf(0 TO 199) +DIM SHARED pi +DIM SHARED su +DIM SHARED mode + +DIM SHARED map1(0 TO 63, 0 TO 63) +DIM SHARED map2(0 TO 31, 0 TO 31) +DIM SHARED map3(0 TO 15, 0 TO 15) +DIM SHARED map4(0 TO 7, 0 TO 7) +DIM SHARED map5(0 TO 3, 0 TO 3) +DIM SHARED map6(0 TO 1, 0 TO 1) +DIM SHARED map7 +DIM SHARED pixs + +DIM SHARED smart(0 TO 31, 0 TO 31) + + +su = 9 + +start + +demo + +3 +a$ = INKEY$ +IF a$ = CHR$(27) THEN SYSTEM +IF a$ = "0" THEN mode = 0 +IF a$ = "1" THEN mode = 1 +IF a$ = "2" THEN mode = 2 +IF a$ = "3" THEN mode = 3 +IF a$ = "4" THEN mode = 4 +IF a$ = "5" THEN mode = 5 +poly RND * 319, RND * 199, RND * 319, RND * 199, RND * 319, RND * 199, 3, 3, su, 3, 3, su +GOTO 3 + +FUNCTION Cub (v0, v1, v2, v3, x) + + p = (v3 - v2) - (v0 - v1) + q = (v0 - v1) - p + r = v2 - v0 + s = v1 + + Cub = (p * (x * x * x)) + (q * (x * x)) + (r * x) + s + +END FUNCTION + +SUB demo +'GOTO 6 + +mode = 0 +poly 0, 0, 159, 0, 0, 99, 10, 10, 20, 10, 10, 20 +poly 159, 0, 159, 99, 0, 99, 20, 10, 20, 20, 10, 20 + +mode = 1 +poly 160, 0, 319, 0, 160, 99, 10, 10, 20, 10, 10, 20 +poly 319, 0, 319, 99, 160, 99, 20, 10, 20, 20, 10, 20 + +mode = 2 +poly 0, 100, 159, 100, 0, 199, 10, 10, 20, 10, 10, 20 +poly 159, 100, 159, 199, 0, 199, 20, 10, 20, 20, 10, 20 + +mode = 3 +poly 160, 100, 319, 100, 160, 199, 10, 10, 20, 10, 10, 20 +poly 319, 100, 319, 199, 160, 199, 20, 10, 20, 20, 10, 20 + +LOCATE 1, 1 +PRINT "original" +LOCATE 1, 21 +PRINT "linear" +LOCATE 14, 1 +PRINT "cosinus" +LOCATE 14, 21 +PRINT "quadric" + + +a$ = INPUT$(1) +4 +mode = 4 + +s = 1 +poly 0, 0, 159 * s, 0, 0, 99 * s, 10, 10, 20, 10, 10, 20 +poly 159 * s, 0, 159 * s, 99 * s, 0, 99 * s, 20, 10, 20, 20, 10, 20 + +s = .5 +y = 100 +poly 0, 0 + y, 159 * s, 0 + y, 0, 99 * s + y, 10, 10, 20, 10, 10, 20 +poly 159 * s, 0 + y, 159 * s, 99 * s + y, 0, 99 * s + y, 20, 10, 20, 20, 10, 20 + +s = .25 +y = 150 +poly 0, 0 + y, 159 * s, 0 + y, 0, 99 * s + y, 10, 10, 20, 10, 10, 20 +poly 159 * s, 0 + y, 159 * s, 99 * s + y, 0, 99 * s + y, 20, 10, 20, 20, 10, 20 + +s = .125 +y = 175 +poly 0, 0 + y, 159 * s, 0 + y, 0, 99 * s + y, 10, 10, 20, 10, 10, 20 +poly 159 * s, 0 + y, 159 * s, 99 * s + y, 0, 99 * s + y, 20, 10, 20, 20, 10, 20 +6 + +mode = 5 +poly 160, 0, 319, 0, 160, 99, 10, 10, 20, 10, 10, 20 +poly 319, 0, 319, 99, 160, 99, 20, 10, 20, 20, 10, 20 + +LOCATE 1, 1 +PRINT "double" + +LOCATE 1, 21 +PRINT "smart" +a$ = INPUT$(1) + + +END SUB + +FUNCTION getmappix (x, y, s) + +IF s <= 1 THEN + getmappix = map7 + GOTO 5 +END IF + +IF s <= 2 THEN + getmappix = map6(x * 1, y * 1) + GOTO 5 +END IF + +IF s <= 4 THEN + getmappix = map5(x * 3, y * 3) + GOTO 5 +END IF + +IF s <= 8 THEN + getmappix = map4(x * 7, y * 7) + GOTO 5 +END IF + +IF s <= 16 THEN + getmappix = map3(x * 15, y * 15) + GOTO 5 +END IF + +IF s <= 32 THEN + getmappix = map2(x * 31, y * 31) + GOTO 5 +END IF + +getmappix = map1(x * 63, y * 63) + +5 +END FUNCTION + +SUB hline (ox1, ox2, y, ou1, ov1, ou2, ov2) +IF ox1 = ox2 THEN GOTO 1 + +IF ox1 < ox2 THEN + x1 = ox1 + x2 = ox2 + u1 = ou1 + v1 = ov1 + u2 = ou2 + v2 = ov2 +ELSE + x1 = ox2 + x2 = ox1 + u1 = ou2 + v1 = ov2 + u2 = ou1 + v2 = ov1 +END IF + +ass = x2 - x1 ' amount of steps +uv = u2 - u1 +vv = v2 - v1 + +FOR a = 0 TO ass + rx = x1 + a + ru = uv * a / ass + u1 + rv = vv * a / ass + v1 + + bx1 = INT(ru) ' interpolatsioon + by1 = INT(rv) + sx = ru - bx1 + sy = rv - by1 + +SELECT CASE mode +CASE 0 + PSET (rx, y), buf(bx1, by1) +CASE 1 + PSET (rx, y), intlin(bx1, by1, sx, sy) +CASE 2 + PSET (rx, y), intcos(bx1, by1, sx, sy) +CASE 3 + PSET (rx, y), intcub(bx1, by1, sx, sy) +CASE 4 + PSET (rx, y), intmap(bx1, by1, sx, sy) +CASE 5 + PSET (rx, y), intsmart(bx1, by1, sx, sy) +END SELECT + +NEXT a +1 + +END SUB + +SUB initmap + +DIM byte AS STRING * 1 + +OPEN "polymap.dat" FOR BINARY AS #1 +FOR y = 0 TO 63 + FOR x = 0 TO 63 + GET #1, , byte + c = ASC(byte) + map1(x, y) = c + PSET (x, y), c + PSET (x + 64, y), c + PSET (x, y + 64), c + PSET (x + 64, y + 64), c + NEXT x +NEXT y +CLOSE #1 + +FOR y = 0 TO 31 + FOR x = 0 TO 31 + map2(x, y) = (map1(x * 2, y * 2) + map1(x * 2 + 1, y * 2) + map1(x * 2, y * 2 + 1) + map1(x * 2 + 1, y * 2 + 1)) / 4 + PSET (x + 150, y), map2(x, y) + NEXT x +NEXT y + +FOR y = 0 TO 15 + FOR x = 0 TO 15 + map3(x, y) = (map2(x * 2, y * 2) + map2(x * 2 + 1, y * 2) + map2(x * 2, y * 2 + 1) + map2(x * 2 + 1, y * 2 + 1)) / 4 + PSET (x + 200, y), map3(x, y) + NEXT x +NEXT y + +FOR y = 0 TO 7 + FOR x = 0 TO 7 + map4(x, y) = (map3(x * 2, y * 2) + map3(x * 2 + 1, y * 2) + map3(x * 2, y * 2 + 1) + map3(x * 2 + 1, y * 2 + 1)) / 4 + PSET (x + 220, y), map4(x, y) + NEXT x +NEXT y + +FOR y = 0 TO 3 + FOR x = 0 TO 3 + map5(x, y) = (map4(x * 2, y * 2) + map4(x * 2 + 1, y * 2) + map4(x * 2, y * 2 + 1) + map4(x * 2 + 1, y * 2 + 1)) / 4 + PSET (x + 250, y), map5(x, y) + NEXT x +NEXT y + +a = 0 +FOR y = 0 TO 1 + FOR x = 0 TO 1 + map6(x, y) = (map5(x * 2, y * 2) + map5(x * 2 + 1, y * 2) + map5(x * 2, y * 2 + 1) + map5(x * 2 + 1, y * 2 + 1)) / 4 + a = a + map6(x, y) + PSET (x + 260, y), map6(x, y) + NEXT x +NEXT y + +LOCATE 19 +map7 = a / 4 +PRINT "Average:", map7 + +END SUB + +SUB initsmart +LINE (0, 0)-(15, 15), 1, BF +LINE (16, 0)-(31, 15), 2, BF +LINE (0, 16)-(15, 31), 3, BF +LINE (16, 16)-(31, 31), 4, BF + +CIRCLE (0, 0), 15, 5, , , 1 +PAINT (0, 0), 5 +CIRCLE (31, 0), 15, 6, , , 1 +PAINT (31, 0), 6 +CIRCLE (0, 31), 15, 7, , , 1 +PAINT (0, 31), 7 +CIRCLE (31, 31), 15, 8, , , 1 +PAINT (31, 31), 8 + +FOR y = 0 TO 31 + FOR x = 0 TO 31 + smart(x, y) = POINT(x, y) + NEXT x +NEXT y + +'a$ = INPUT$(1) +END SUB + +FUNCTION intcos (bx1, by1, sx, sy) + + c1 = buf(bx1, by1) + c2 = buf(bx1 + 1, by1) + c3 = buf(bx1 + 1, by1 + 1) + c4 = buf(bx1, by1 + 1) + f = (1 - COS(sy * pi)) * .5 + tonel = c1 * (1 - f) + c4 * f + toner = c2 * (1 - f) + c3 * f + f2 = (1 - COS(sx * pi)) * .5 + intcos = tonel * (1 - f2) + toner * f2 + + +END FUNCTION + +FUNCTION intcub (bx1, by1, sx, sy) + + c11 = buf(bx1 - 1, by1 - 1) + c21 = buf(bx1 - 0, by1 - 1) + c31 = buf(bx1 + 1, by1 - 1) + c41 = buf(bx1 + 2, by1 - 1) + + c12 = buf(bx1 - 1, by1 - 0) + c22 = buf(bx1 - 0, by1 - 0) + c32 = buf(bx1 + 1, by1 - 0) + c42 = buf(bx1 + 2, by1 - 0) + + c13 = buf(bx1 - 1, by1 + 1) + c23 = buf(bx1 - 0, by1 + 1) + c33 = buf(bx1 + 1, by1 + 1) + c43 = buf(bx1 + 2, by1 + 1) + + c14 = buf(bx1 - 1, by1 + 2) + c24 = buf(bx1 - 0, by1 + 2) + c34 = buf(bx1 + 1, by1 + 2) + c44 = buf(bx1 + 2, by1 + 2) + + tone1 = Cub(c11, c12, c13, c14, sy) + tone2 = Cub(c21, c22, c23, c24, sy) + tone3 = Cub(c31, c32, c33, c34, sy) + tone4 = Cub(c41, c42, c43, c44, sy) + + tone = Cub(tone1, tone2, tone3, tone4, sx) + IF tone < 0 THEN tone = 0 + IF tone > 255 THEN tone = 255 + + intcub = tone + +END FUNCTION + +FUNCTION intlin (bx1, by1, sx, sy) + + c1 = buf(bx1, by1) + c2 = buf(bx1 + 1, by1) + c3 = buf(bx1 + 1, by1 + 1) + c4 = buf(bx1, by1 + 1) + tonel = (c4 - c1) * sy + c1 + toner = (c3 - c2) * sy + c2 + intlin = (toner - tonel) * sx + tonel + +END FUNCTION + +FUNCTION intmap (bx1, by1, sx, sy) + + c1 = buf(bx1, by1) + c2 = buf(bx1 + 1, by1) + c3 = buf(bx1 + 1, by1 + 1) + c4 = buf(bx1, by1 + 1) + tonel = (c4 - c1) * sy + c1 + toner = (c3 - c2) * sy + c2 + f = (toner - tonel) * sx + tonel + + nsx = sx / 4 + (bx1 MOD 4) / 4 + nsy = sy / 4 + (by1 MOD 4) / 4 + + intmap = getmappix(nsx, nsy, pixs) / 255 * f + +END FUNCTION + +FUNCTION intsmart (bx1, by1, sx, sy) + +p = smart(sx * 31, sy * 31) +SELECT CASE p +CASE 1 + IF (buf(bx1 + 1, by1) = buf(bx1 + 1, by1 + 1)) AND (buf(bx1, by1 + 1) = buf(bx1 + 1, by1 + 1)) THEN r = buf(bx1 + 1, by1) ELSE r = buf(bx1, by1) +CASE 2 + IF (buf(bx1, by1) = buf(bx1, by1 + 1)) AND (buf(bx1, by1 + 1) = buf(bx1 + 1, by1 + 1)) THEN r = buf(bx1, by1) ELSE r = buf(bx1 + 1, by1) +CASE 3 + IF (buf(bx1, by1) = buf(bx1 + 1, by1)) AND (buf(bx1 + 1, by1) = buf(bx1 + 1, by1 + 1)) THEN r = buf(bx1, by1) ELSE r = buf(bx1, by1 + 1) +CASE 4 + IF (buf(bx1, by1) = buf(bx1, by1 + 1)) AND (buf(bx1, by1) = buf(bx1 + 1, by1)) THEN r = buf(bx1, by1) ELSE r = buf(bx1 + 1, by1 + 1) +CASE 5 + r = buf(bx1, by1) +CASE 6 + r = buf(bx1 + 1, by1) +CASE 7 + r = buf(bx1, by1 + 1) +CASE 8 + r = buf(bx1 + 1, by1 + 1) +END SELECT + +intsmart = r +END FUNCTION + +SUB lin (x1, y1, x2, y2, u1, v1, u2, v2) + +IF y1 = y2 THEN + hline x1, x2, y1, u1, v1, u2, v2 + GOTO 2 +END IF + +IF y1 < y2 THEN + rx1 = INT(x1): ry1 = INT(y1): rx2 = INT(x2): ry2 = INT(y2) + ru1 = INT(u1): rv1 = INT(v1): ru2 = INT(u2): rv2 = INT(v2) +ELSE + rx1 = INT(x2): ry1 = INT(y2): rx2 = INT(x1): ry2 = INT(y1) + ru1 = INT(u2): rv1 = INT(v2): ru2 = INT(u1): rv2 = INT(v1) +END IF + +ass = ry2 - ry1 + +xv = rx2 - rx1 +uv = ru2 - ru1 +vv = rv2 - rv1 + +FOR a = 0 TO ass - 1 + y = ry1 + a + + x = xv * a / ass + rx1 + u = uv * a / ass + ru1 + v = vv * a / ass + rv1 + + IF xbuf(y) = -1 THEN + xbuf(y) = INT(x) + ubuf(y) = u + vbuf(y) = v + ELSE + hline INT(x), xbuf(y), y, u, v, ubuf(y), vbuf(y) + END IF +NEXT a +2 +END SUB + +SUB poly (x1, y1, x2, y2, x3, y3, u1, v1, u2, v2, u3, v3) + +p = SQR((x1 - x2) ^ 2 + (y1 - y2) ^ 2) +p = p + SQR((x3 - x2) ^ 2 + (y3 - y2) ^ 2) +p = p + SQR((x3 - x1) ^ 2 + (y3 - y1) ^ 2) + +p1 = SQR((u1 - u2) ^ 2 + (v1 - v2) ^ 2) +p1 = p1 + SQR((u3 - u2) ^ 2 + (v3 - v2) ^ 2) +p1 = p1 + SQR((u3 - u1) ^ 2 + (v3 - v1) ^ 2) +pixs = p / p1 * 4 + +'LOCATE 20, 1 +'PRINT "pixel size", pixs +'LOCATE 21 +'PRINT p, p1 + + + +FOR a = 0 TO 199 + xbuf(a) = -1 + ubuf(a) = -1 + vbuf(a) = -1 +NEXT a + +lin x1, y1, x2, y2, u1, v1, u2, v2 +lin x2, y2, x3, y3, u2, v2, u3, v3 +lin x3, y3, x1, y1, u3, v3, u1, v1 + + +END SUB + +SUB start +SCREEN 13 +initsmart +RANDOMIZE 20 + +pi = 3.141592 + +FOR a = 0 TO 255 + OUT &H3C8, a + OUT &H3C9, a \ 4 + OUT &H3C9, a \ 4 + OUT &H3C9, a \ 4 +NEXT a + +FOR x = 0 TO 255 + LINE (x, 100)-(x, 199), x +NEXT x + +'PAINT (0, 0), 200 +'FOR a = 0 TO 255 +' LINE (a, 0)-(a, 200), a +'NEXT a +'SLEEP + + +FOR a = 1 TO 5000 + c = RND * 255 + x = RND * 100 + y = RND * 100 + CIRCLE (x, y), RND * su / 10, c + PAINT (x, y), c +NEXT a + +LOCATE 2, 2 +COLOR 200 +PRINT "Test!" + +FOR y = 0 TO 99 + FOR x = 0 TO 99 + buf(x, y) = POINT(x, y) + PSET (x, y), 1 + NEXT x +NEXT y + +initmap + +END SUB + diff --git a/graphics/polymap.dat b/graphics/polymap.dat new file mode 100755 index 0000000..8a3687f --- /dev/null +++ b/graphics/polymap.dat @@ -0,0 +1 @@ +­½ËÓÝëåíåÅ­µÛåÍËóýõåãëëåõã­£ÃÝûóõûÝÝ£­ãõÛÅ«ÅÛÕÝÕ»³³µÓõóåíõÓ³««ÃÕëíÛÍËãõ뻫ÍëåÃÕõûóÝåíýûóíóóíåååãååííóíõõóãË«µÅËÓÍŽ»½ÝõÛÛãíåÅ»ÕãõõóõÝËãýë½Óóõë½ËõõÝåûûíåÛÍ˽»»µ»»»ÃËÓÛãíûûóÍ««­³µ»»µ­»ãóÝÛÕëíÛãÝíõÛÝëåËíûãÓõåëíËÓûóóåÕû­£››‹‹‹‹•›­»ÅÕåóõݵ£££«­«­ÕóëÝÛóõãÛÕãóÝÛãíÕóõÝóÛÕÝóóíÝ˵«›‹…}ƒ}ƒ}}}ƒƒ}…‹›¥µËÝííś‹£««­ÍóûõûõÍÃÅÃÓíóåííÓõíÝíãóóÛÅ­£…ƒƒƒ‹“››•‹ƒƒƒ…“³ÅÛó㭃ƒ}…›«¥µÛíóí嵫»Ëµ½ÓëõõËÅëåëõã˵…ƒ…•£­µÃÅËËËËÅõ­£•…ƒ…£³ËãíՃ}…››¥ËÛÝÝÓ»««µ½³­³ËÕÝËóóÕ½“…ƒ…“³ÃÍÝãííóõõóííãÝÍ󣓅ƒ…£½Õó㥅ƒ•¥ÅÛÝÕ˽¥­­Ã½»­«¥£›Ýíͳ•‹ƒ…“¥»ÍÝëíóóóíËÅÓÝóåíóíëÝ͵¥“…ƒ…›­Íëí³ƒ›«½ÛãÝÓóµÅËÍËÓÅ»µååÅ«…ƒ“»Íãóëŝ›ÅóõÅ­­½ÛóśÅëóãÍ»“……«Åå󻍃›½ÕíëÝÕ»»ËÕÛÕÕÝãóãÅ£‹ƒ…•«Åãóó͝…‹«Õõýãó«½íÕ«‹…ÓóóÝË«•…ƒ£Ååí½ƒ£Ëëûíí͵»ÓÛÝÛÝóëÅ¥}‹›µÕíåóÕ³ƒ•½ëóõûåÛ»³Ý뽕ƒ‹­ÛííëÕµ…ƒ‹£Åë뻍‹¥ÓõýýíÍ­³ÅÛÕëíË£‹}‹½ãíÓÕ뽕…‹¥ÓóËãûýýóÝÓóÍ«‹…•½ëÝãóÝ»£…}£Ëí뻣µÝûûýíË­­ÃÝóÓ«ƒ‹»Ý嫳óÍ«‹ƒ›»åõ½Ëíýûëëóõ廕ƒ‹«ÍóÓÍóÝ»‹ƒ­ÓõåÅ­³ÍóõýýëË­½óݵ•ƒ…½ãëóëÕµ“ƒ‹¥Õóãå½ÓóýýíãíõÓ«ƒ“³ÕíÍÛóݽ…ƒ•µÝõãË­»ÛÛíõóãËÛëۅ…›»ÝóõÕëݽ•……Ãëå»ëÝÃÍóýûíÛíëۅ…›½ÝëÓÝóÝ»›……›ÃëûåÓ»½½ÓãëåÝóÓ¥ƒ“³Õûóõõݽ£ƒƒ•µÝíó½ËóÝÍÓõûõãÝíݵ•ƒ…½ãëÛãõÛ³“ƒ‹«ÕõûëÕ½»ÃÍÕÛó彛ƒ¥Íóûûó㻝…ƒ«ÓóÓÛóÅÕíóëíõýíóëóÓ«ƒ‹»ÝíåóóÍ¥‹…•»åýõãÓõ½ËÕóÍ¥‹…•Ãåõýóݽ‹}‹¥ËíõËÅÝõÕÛÕÛÝÛåûýõûíË¥‹}‹½ãóûûåՅ‹¥ÓõûíÕÍõ½å뽕ƒ‹³ÕëóíÕµ›…ƒ‹¥Ååûýå½ÓëûóåÓÍŽÓÝûýûåÅ£‹ƒ…›³ÕëýõÛ­‹ƒ›»ëýûëÝË»ÃíÕ«‹…ÓóóÝÅ­›ƒƒ‹¥ÅåãÝûûãÅÕãíõóÛÛÓÍÍÍóíýåÅ£‹ƒ…•­Åãóóӝ……«ÕõýóãÓÃÍóśÅëíã͵£“……«Ãå땕ÓõûÕÍÓÍÓÕóåÕÍÓÓÕóëûåÅ¥“……£µÍåí뽛ÅóýíãÝÍåãíóóëÝÍ»¥“…ƒ…›³Íëû㵅ãûíÕÛͽ³»ãíÓËËÃÅõõûíͳ•‹ƒ…“£»ÍÝëíóíóûóõõóíëãÝËõ“…ƒ…£»ÕóõõóÕ«ƒ¥ëýõëãË­¥³ÛíÕËÍÃÓõûóóÕ»£…ƒ…“³ÃÍÝåííóËËËÅõ­£•…ƒ…£³Ëãóõåëûå͛}«åûååÝ»«­­ÕóÛÍÍÅëûíãóã˳£…ƒ…•£­»½Ëŝ››•‹ƒ…ƒ…“³ÃÝóõÛíåãíõ㜃µíûëëÕ³«­¥ÅíåÕËÕõûÝÛíóÝÅ­£…ƒƒƒ‹“›}ƒ}}ƒ}…‹›«µËÝíëÝíåÝóããûëݽƒ½íûõõÕ³³³«ÃóëÝÛíýõåÕÛííã˵«›‹…}ƒ}}‹‹‹“•›£«»ÅÕãóëÓµ³½ËÛíûíûõëݵ‹…ÃíûýûÛ­µµ«ÅíóãåûûõëÕÃÕóóãÕÅ»«£›•“‹»µ»µÃËÍÝãíóåͽµ³¥«³½ÝûûýíÛÛÛ­ƒ‹ÅãëûûÝ««­¥ÃíûíóýýûõÝ»½ëûõíåÛÍËõ»ååååííóíõåû½µ³½³««³ÕóýûåÍÃÓÅ¥ƒƒ£½ÝõûÕ¥££½åûûýûýýû㻽åûõóíõííååýóûãÝ£­ã㥥³µ«µ½µ«µÓõõûíÅ­³Ë퍃‹¥ÅÛÝӕ£»Õõýûýûýû廳Íõã­£Ããûýëõ͝}‹µã볫¥«««­µ­­½ëóãûÕ­«½ÓÕÅ­•“•³­“}“›“£»ãóóýõóõííë㵋ƒËõûûõÓ£}­ã펭­­­­»½³³ÍóÝå뭝«ÃÕÍÍÓۅ‹‹ƒƒ•›•›½ËÝûýõóóÍå㭋}£ÓõåãóÍ£}‹³Ýãûµ³«³³»Ë˽ÅíåÛó͕›«³³ÅãåÃ¥›ƒ«³»«£¥³Óíõõûõõݳ}£Íó»µíÕ¥……­Ûëíã˽µ«¥¥µÃ½ÃÓëÓÕíś¥«›½åëÕ󝍍«½ÕíåÓ³¥ÃãíûûõÛ«……¥Õ틍åÛ­‹…¥ÓíÝåóëÛų­«­««³ÕåÛÛ󫛭­¥›¥ÃÝëåÓ»›…½ÅåûõóÝÓåóåÝóÓ¥…‹­Ûå}ƒÕ峋ƒËó˵ËÝíóÝó»»­­³åÝÛëݓ‹¥««µµµÍÝÝÓµ›ÃÅ»ãõíûíÝ˵Ë󽃋µã՝Ë뽓ƒ•½åӝ³ÅÛóíÕµÅÅ»»ÓíÓÕëՓƒ‹£µÃ»³½ÍÍË­µÛÅÅõóÛų“Ã뽕ƒ“½ëËËËÕ󽃋³Ý充£³ËãóåËÓÍÅËëåÓÛëݵ“…¥ÍÓ½­»Ë˽£Ëíóã˳…‹ãݳ‹ƒËóÕõõóûÕ¥‹…¥Í󥅃…£½ÕóíãÝÓÍÝóÛÕÝûõÝ«‹³ÝÛË«ÃÓÓ½­ÛóÕ»£…ƒ…£óÍ¥……«Õõóíã½í㵍ƒ›½ë㥓…ƒ…›­ÍíóåëÝÝëíÕãóýû󽍻åÝŵÕããëíͳ•……‹“£ãåՅµãõãíóãÕ󶃋«ÛóÓµ£…ƒ“«ÅåõåãëõõãÝõõõûû˝Íëã»ÃåûåÅ«……“µÓõÕ­‹ƒ›ÃóõíûûûóóÕ«……›ÅëóÝÅ­•…ƒ‹¥ÅëóÍÅíûÝÕóóÝíýõ˳ÛíÝÃíåÅ£‹ƒ…•«Åãó붅‹«Õíëýõííóý뽛ƒ‹­ÕëëëÛµ…ƒ‹£Ãëí»»ÝíËÛõÓÅãýóËËíõóëÅ¥‹ƒ…³ÛíííÕ­‹ƒ•½ëݽóóõëÝíõÍ¥‹…•ÃåÕÕóÛ½…}¥ËíóûåÓµÝå«£Óíã½ËõíË£‹}…£½ÝóõõëՅ‹¥Íó³Ë½åûíãó录ƒ‹«Íó½ËóÛ݋ƒ‹­ÓóóÅËó³¥Ýە›ËÕËËóÓ«ƒ‹»ÝóõýóÍ¥ƒ›»åóÓ»£µ³ÍíûóõÓ«ƒ“³Õí½ÓíÝ»…ƒ•µÝûóËÓëµµë˝½Ííݵ•ƒ…½ãëÓÝûÕ³•ƒ‹«ÕõûûõÝíͳÅëõûëۅ…•»ãíÍÓíÝ»›……ÃëõóÍÛëËÝí»£Ý붅…›»ÝóãÕëÝ»›……ÃëýõûõõýûÛ«»åíóݵ•ƒ…½ÝóÓËóÕ³“ƒ‹¥ÕóåõÛåëÝûÕ«³íÓ«‹ƒ“³Õõûõóݽ…ƒ•³Ýõóóõýûýýû͛«ãåóÓ­ƒ…£»ÝóÝÍóÍ¥‹…›»åíÝõåíãëó½Ý录ƒ¥Íóûûõ㽛‹ƒ«ÓõõãÕÕãíëýûåÅ­ÓåíË£ƒ…½ÝóëÛ뽛……¥ÓõåóõãóÝõãóÍ¥‹…›½ëÛåõÝ»‹}‹£ÍëýûãÓÃÃÓËíýí㵅«ÍåëÅ£‹ƒ‹›»ÕíõõÕ­‹ƒ›½ëûûûÝÍõõû뽛ƒ‹­ÛåãëÕµ›…ƒ‹£ÅëíåóëÕµ­³«ËóõÝ͝‹­ÃëåÅ£‹}…“«ËÝó붅…«ÕõëÛÓÅÓõûÕ«……›ÅëíãÅ­›ƒƒ‹¥ÅåëÅÝóíÝÃ¥¥¥³ÕõëÍ­ƒƒ­ëåÅ«“……£µÓõÕ«‹…›ÅíÓµµ­µí휃‹­ÕõÓµ£……«ÅåûÓµÍóûóÛ³£««»åóÛÅ«ƒ…¥ãëÍ­›…ƒ…“£ã뽕ƒµãí½»»Ãí㵍…•½ë㥓…ƒ‹•³ÍëóãóÅ»ÛýýõÓ­¥­³Õíëͽ…›£­ÝóÕ»£“…ƒ…¥óÍ¥‹…«ÕûóõõóûÕ«…‹¥Í󥅃…£»ÕóóåÕÝó½µÛõõÝ»­«­½ãëÛ˽«£­«³Óóã˳…‹ãݳ‹ƒËóÕËËÓ󽃋³Ý㋅£³ËãíûíãÛÝíÅÃãóåËË««³ÍãåÓ˵«ÃÓ½«ËííÛų£Ã뽕ƒ“½ë˝Ë뽓ƒ•»ëӝ³ÃÝíãŵÃóíåûëÍÍóýëëÅ«­½ÝõíÛÓ½½ãíÓµ½åóíÝ˵Ëóŝƒ‹µãÕ}ƒÕ峋}ËóŵËÝíõÛ½µÃ½µÕóûýõÛ½Ûõýõëë­»ÛóíãÕËÕûûëÅÃÅÕåóåÝíÕ¥……­Ý勋ãÝ­‹…¥ÓíãåóóóãÓËý»½ÕÝëíëëÕËåûÛãíË­«µÍããÛËËíõõûÛ»µ³ÅãóíÛ­‹…¥Óí»µíÓ¥……­Ûíóåõ½ÅÅË»µ³»ÕÝÝÝÓÓÕÍÕõíÓÅíÓµ³µÅÍËÍÅÓõûûõãÍÃÅ»½ã㭋}£ÓóååóÓ£}‹³ÝåÍÕ˳¥¥­­««»Ûëíã˽»½ËãëíÕËëãË»µµ»ÅÅËÛõýýóåÝÛÕËå㭋ƒÍõóíõӝƒ‹­ãëµÕíå˳›“¥­¥­ÓóûõÝ»««µÃµãíëåýåÛóµ½ÕËÅãýýóëåãÝÛí㵋}£ÍõãåõÍ£}‹µãóóÍëåÛË¥¥«³ÍóûûõÕ³«¥« \ No newline at end of file diff --git a/graphics/presentations/Artifical Intelligence/data.dat b/graphics/presentations/Artifical Intelligence/data.dat new file mode 100755 index 0000000..f0644de --- /dev/null +++ b/graphics/presentations/Artifical Intelligence/data.dat @@ -0,0 +1,1129 @@ +0main01 410 718 +89.204338 6.623288 10.9639 +88.564339 2.520903 7.963761 +87.60434 6.935034 8.745699 +83.444336 6.093147 6.688511 +99.124336 -6.848641 17.149164 +99.124336 -10.478266 13.084459 +96.084335 -10.772884 12.881481 +95.28434 -6.170335 16.921349 +93.204338 -9.171329 10.68298 +92.884338 -5.313886 15.425991 +90.96434 -4.2202 8.793657 +91.124336 -6.171187 6.580594 +88.564339 -2.920966 2.998073 +90.324341 2.486645 12.806118 +87.28434 5.861047 14.088221 +88.244339 2.925144 16.58391 +91.444336 -3.338062 18.611977 +94.644341 -4.286149 19.609739 +99.124336 -5.053528 20.471325 +83.924339 -1.562647 23.223949 +79.764336 4.940365 17.190277 +76.884338 1.670444 22.062607 +71.60434 6.997552 16.348389 +70.004333 6.279848 19.155825 +66.004333 12.468541 14.208982 +64.244339 12.698928 16.018658 +63.764332 16.355104 11.846901 +62.484333 17.263796 13.428761 +60.084343 23.388258 10.088614 +64.564331 17.070242 7.908096 +63.604336 15.180919 2.956967 +59.764343 22.357954 4.773498 +70.804337 10.457606 5.524599 +83.124336 1.235376 -0.133957 +75.124336 4.471036 -0.163931 +75.60434 7.380387 5.576841 +69.844337 7.867706 0.95973 +57.524345 22.780184 -8.577671 +60.884335 14.068394 -8.671026 +68.244339 4.700564 -8.695011 +74.644333 0.739494 -9.251703 +86.96434 -3.899883 -9.58058 +90.164337 -8.499012 -2.148324 +93.684341 -14.457324 4.608192 +92.084335 -11.159997 1.840152 +92.084335 -14.62861 -1.070912 +88.884338 -14.096755 -6.004914 +90.644341 -18.575119 -5.180153 +88.244339 -12.453233 -9.651669 +91.28434 -10.85681 -14.112907 +89.044342 -8.960634 -16.108429 +85.204338 -8.312301 -19.571907 +77.684341 -1.006799 -20.968773 +71.924332 4.017982 -30.280075 +69.524338 4.521569 -17.768227 +90.644341 -12.565423 -19.200211 +94.804337 -15.067966 -15.189461 +92.564339 -13.817552 -12.590141 +96.404335 -16.98727 6.514645 +99.124336 -17.37096 6.945438 +99.124336 -25.125237 0.039037 +96.564339 -21.998348 1.932645 +93.844337 -17.3367 2.10308 +93.524338 -21.144463 -0.694079 +93.364334 -23.25647 -4.060776 +96.404335 -25.355621 -1.770636 +90.324341 -14.78534 -10.302568 +90.164337 -16.253292 -9.054724 +91.924339 -18.605095 -8.415813 +92.724335 -19.80584 -9.069284 +94.004333 -19.46925 -10.314562 +95.764336 -24.643055 -6.840809 +96.404335 -17.553375 -13.599895 +95.28434 -17.414631 -12.287815 +96.564339 -15.793377 -15.776131 +94.324341 -15.607529 -13.64957 +99.124336 -27.192703 -3.644545 +96.244339 -26.175243 -3.986268 +99.124336 -25.076416 -8.355864 +98.96434 -16.427147 -15.865196 +98.96434 -14.647448 -19.331245 +96.884338 -14.489006 -19.308975 +94.644341 -14.375095 -18.969826 +98.96434 -16.467396 -23.626328 +96.564339 -16.445129 -23.784775 +93.044334 -15.675183 -23.514999 +89.364334 -13.504088 -24.017731 +84.244339 -9.7734 -25.270714 +78.96434 -3.601835 -27.796379 +77.204338 -2.114184 -30.33403 +80.404343 -4.203916 -33.859169 +81.044342 -3.087108 -30.309189 +84.564339 -9.202147 -32.784325 +98.804337 -12.136337 -39.498032 +96.084335 -16.21817 -33.44722 +98.96434 -16.21817 -33.44722 +93.684341 -11.975326 -38.344391 +93.364334 -15.720574 -33.538864 +88.244339 -12.868604 -33.138046 +88.724335 -10.955297 -37.554741 +84.884338 -9.006877 -36.473053 +80.724335 -3.835641 -41.078178 +86.644341 -7.999694 -41.34024 +89.364334 -9.606388 -41.40448 +93.844337 -11.14371 -40.812668 +98.804337 -13.260849 -46.442108 +92.884338 -12.401834 -46.806099 +89.044342 -10.522787 -46.38044 +86.484337 -8.871554 -46.633095 +81.044342 -3.509334 -46.848915 +74.804337 3.890378 -46.616821 +74.164337 3.972595 -40.30394 +61.204334 14.094946 -16.907494 +57.204346 23.465345 -15.752136 +57.684349 23.625502 -24.939255 +62.964336 14.750134 -27.317619 +60.564346 23.174154 -34.373886 +66.164337 15.833541 -38.475418 +62.004349 22.916365 -38.287857 +67.924332 16.337994 -45.51371 +64.564331 22.220076 -45.979614 +69.524338 17.003458 -51.398361 +73.364334 17.896734 -56.604721 +71.444336 21.607725 -56.567879 +79.28434 20.938837 -62.155346 +78.004333 5.60756 -57.685555 +83.764336 5.961273 -61.352001 +67.444336 21.459557 -52.064682 +69.524338 10.627194 -39.368706 +75.60434 4.172151 -52.070686 +80.724335 -3.997507 -52.572563 +98.804337 -13.798698 -54.111595 +93.524338 -13.120393 -54.339417 +93.524338 -9.692029 -59.189476 +98.804337 -10.189623 -59.097847 +98.644341 -2.369394 -63.007519 +93.364342 -2.753085 -62.576725 +88.244339 -3.111937 -61.173008 +89.204338 -9.303204 -57.357536 +89.044342 -11.241344 -53.913757 +86.324341 -9.362298 -53.488098 +83.60434 -3.579558 -57.845711 +98.644341 5.772858 -64.609924 +93.044342 6.000672 -63.931637 +98.644341 20.203152 -67.267487 +92.244339 18.599026 -66.200356 +86.484337 20.230555 -65.163185 +88.084335 6.025507 -62.958706 +61.524334 18.511641 14.896713 +62.644337 12.976414 18.642815 +60.244347 22.641432 20.001144 +63.124332 16.675413 23.363556 +68.884338 5.789958 22.641567 +69.684341 8.040704 27.320347 +61.684349 22.295424 27.061703 +63.444332 19.198507 28.403755 +63.124344 21.832941 32.651737 +70.324341 12.992682 35.771774 +70.484337 10.855845 31.432152 +76.244339 1.361266 25.412174 +76.404343 2.683621 29.798904 +76.884338 4.659446 32.984894 +77.044342 7.090899 37.527493 +76.724335 9.363912 42.047829 +70.324341 14.768098 40.383751 +65.84433 20.647617 38.786476 +71.284332 19.014368 46.958702 +77.364334 12.751162 48.986771 +82.804337 5.474781 43.278542 +75.124336 18.210167 51.531281 +79.284332 18.106533 55.717598 +82.164337 20.173992 59.401184 +85.204338 19.859678 60.488014 +84.084335 14.692729 57.015114 +83.444336 25.293842 62.059601 +87.124336 25.001791 62.987984 +91.28434 24.484493 64.369446 +90.644341 18.461102 62.391899 +95.60434 24.100807 64.800232 +94.644341 17.715988 63.095039 +99.28434 24.259251 64.822495 +99.444336 17.354568 63.367386 +99.444336 11.373137 59.941597 +93.844337 11.893003 59.691513 +89.364342 12.615841 59.14682 +82.96434 8.862031 50.217484 +83.444336 3.427015 38.305149 +82.96434 0.928757 34.237877 +83.28434 -0.480099 31.616287 +82.644333 -1.304856 27.13792 +89.364334 -3.439124 23.929665 +89.364334 -3.428847 28.455135 +93.844337 -3.981255 24.338188 +99.124336 -4.251036 25.108135 +93.364342 -3.812536 28.885929 +99.28434 -4.129421 28.841393 +89.204338 -2.198133 32.344265 +93.204338 -2.492751 32.141289 +99.28434 -2.515018 32.299732 +93.364342 -0.811544 35.124294 +99.28434 -0.992255 35.260475 +93.044342 0.758325 38.899521 +99.28434 0.555346 39.194141 +92.884338 2.286225 44.123001 +99.28434 2.083248 44.417618 +93.364342 7.924221 55.740715 +99.28434 5.020005 52.26268 +93.364342 4.950633 51.606644 +88.724335 6.148803 51.128746 +89.044342 3.009068 43.5783 +89.204338 1.572807 38.852417 +89.204338 -0.630835 34.988125 +66.96434 11.490479 11.971083 +68.404343 10.373672 8.421106 +72.564339 6.58132 12.412153 +74.484337 6.368066 8.181299 +80.564339 4.863286 13.140133 +81.204338 5.03629 9.609854 +84.404335 5.422548 10.310429 +110.644341 6.957304 8.587257 +109.684341 2.543172 7.805317 +109.044342 6.645557 10.805456 +114.644341 6.273862 6.552335 +103.124336 -6.170334 16.921349 +102.324341 -10.772884 12.881481 +105.524338 -5.291618 15.267548 +105.204338 -9.149059 10.524538 +107.28434 -4.19793 8.635214 +107.124336 -6.148917 6.422151 +109.684341 -2.898697 2.83963 +107.924339 2.508914 12.647675 +110.96434 5.883318 13.929779 +110.004341 2.947415 16.425468 +106.96434 -3.315792 18.453535 +103.764336 -4.286148 19.609739 +114.484337 -1.381933 23.087776 +118.484337 5.143347 16.895658 +121.524338 1.873427 21.76799 +128.244339 6.505099 18.702765 +126.644333 7.200536 16.053772 +134.004333 12.924178 15.565598 +132.244339 12.693795 13.755922 +135.60434 17.48905 12.975698 +134.324341 16.580359 11.393839 +138.004333 23.613512 9.635551 +133.524338 17.295492 7.455036 +138.164337 22.583204 4.320436 +134.484329 15.406175 2.503908 +127.284332 10.682858 5.071537 +114.96434 1.41609 -0.270133 +122.96434 4.674019 -0.45855 +122.484337 7.583371 5.282223 +128.244339 8.092959 0.50667 +140.244339 23.027704 -9.189175 +137.044342 14.293647 -9.124086 +129.684341 4.925817 -9.148069 +123.284332 0.942477 -9.546322 +111.124336 -3.877613 -9.739023 +107.924339 -8.476742 -2.306769 +106.164337 -11.137728 1.681711 +104.564339 -14.457322 4.608192 +106.164337 -14.606341 -1.229359 +109.204338 -14.074485 -6.163357 +107.60434 -18.552853 -5.338597 +109.844337 -12.430963 -9.81011 +106.804337 -10.834541 -14.271347 +108.884338 -8.938365 -16.266869 +112.724335 -8.290032 -19.730347 +120.084335 -0.803817 -21.263397 +128.244339 4.746822 -18.221283 +125.684341 4.220966 -30.574692 +107.28434 -12.543151 -19.358658 +103.28434 -15.067966 -15.189461 +105.524338 -13.795281 -12.748585 +102.004341 -16.98727 6.514645 +101.684334 -21.998348 1.932645 +104.404335 -17.3367 2.10308 +104.724335 -21.122196 -0.852522 +104.884338 -23.2342 -4.21922 +101.844337 -25.355621 -1.770636 +107.764336 -14.763068 -10.461012 +107.924339 -16.231022 -9.213167 +106.164337 -18.582829 -8.574255 +105.364334 -19.783569 -9.227726 +102.484337 -24.643055 -6.840809 +104.084335 -19.46925 -10.314562 +102.804337 -17.414631 -12.287815 +101.684341 -17.553375 -13.599895 +101.524338 -15.793377 -15.776131 +103.764336 -15.607529 -13.64957 +102.004333 -26.175243 -3.986268 +101.044334 -14.489006 -19.308975 +103.28434 -14.375095 -18.969826 +101.364334 -16.445129 -23.784775 +104.884338 -15.652915 -23.673439 +108.564339 -13.481818 -24.17617 +113.684341 -9.592689 -25.406883 +118.804337 -3.398854 -28.090996 +120.564339 -1.911202 -30.628647 +117.364334 -4.000934 -34.153786 +116.724335 -2.884128 -30.603813 +113.204338 -9.021438 -32.920502 +101.684341 -16.21817 -33.44722 +104.084335 -11.975322 -38.344391 +104.404335 -15.720572 -33.538864 +109.524338 -12.846332 -33.296486 +109.044342 -10.933026 -37.713188 +112.884338 -8.984607 -36.6315 +116.884338 -3.63266 -41.372787 +110.96434 -7.977424 -41.498688 +108.244339 -9.584119 -41.562912 +103.764336 -11.143711 -40.812668 +104.724335 -12.379563 -46.964554 +108.564339 -10.500516 -46.538895 +111.124336 -8.849284 -46.791542 +116.404343 -3.306351 -47.143539 +122.644333 4.09336 -46.911438 +123.444336 4.175578 -40.598557 +136.564331 14.320199 -17.36055 +140.564331 23.712866 -16.36364 +139.924332 23.873026 -25.550758 +134.644333 14.975389 -27.770676 +136.884338 23.399412 -34.82695 +135.444336 23.141619 -38.740913 +131.284332 16.058798 -38.928482 +132.724335 22.44533 -46.432678 +129.524338 16.563246 -45.966774 +125.684341 21.810703 -56.862511 +123.924332 18.099718 -56.899338 +127.764336 17.228706 -51.851425 +117.844337 21.141823 -62.449963 +119.284332 5.810542 -57.980179 +113.524338 6.141986 -61.488178 +129.844345 21.684809 -52.517738 +127.924332 10.852447 -39.821754 +121.844337 4.375133 -52.365303 +116.724335 -3.794525 -52.86718 +103.924339 -13.120392 -54.339417 +103.924339 -9.692028 -59.189476 +103.924339 -2.753083 -62.576725 +109.044342 -3.089667 -61.331448 +108.244339 -9.280932 -57.515976 +108.404335 -11.219075 -54.072197 +111.124336 -9.340028 -53.646553 +113.844337 -3.398845 -57.98188 +104.244339 6.000674 -63.931637 +104.884338 18.621292 -66.358788 +109.204338 6.047778 -63.117146 +110.644341 20.252831 -65.32164 +135.60434 13.201668 18.189754 +136.724335 18.736891 14.443651 +138.004333 22.866682 19.548082 +135.124329 16.900667 22.910496 +128.724335 8.265954 26.867283 +129.524338 6.015211 22.188507 +134.96434 19.423761 27.950691 +136.564331 22.520678 26.608643 +135.284332 22.058195 32.198677 +127.924332 11.081098 30.979092 +128.244339 13.217937 35.318718 +122.164337 1.564248 25.117558 +122.164337 2.886603 29.504288 +121.684341 4.862428 32.690273 +121.524338 7.293882 37.232876 +128.244339 14.99335 39.930691 +121.844337 9.566894 41.753208 +132.564331 20.872869 38.333416 +127.284332 19.21735 46.664085 +121.364334 12.954141 48.692154 +115.924332 5.655496 43.142365 +123.60434 18.413145 51.236656 +119.444336 18.309515 55.422981 +114.644341 14.873444 56.878937 +113.524338 20.040392 60.351837 +116.564339 20.376976 59.10656 +111.60434 25.024063 62.829544 +115.28434 25.474562 61.923424 +108.244339 18.483368 62.233459 +107.444336 24.506763 64.210999 +104.244339 17.715988 63.095039 +103.124336 24.100807 64.800232 +105.044342 11.893 59.691513 +109.524338 12.638112 58.988373 +115.764336 9.042745 50.08131 +115.124336 3.607729 38.168968 +115.60434 1.109471 34.1017 +115.284332 -0.299386 31.48011 +115.764336 -1.124143 27.001743 +109.044342 -3.416854 23.771221 +109.204338 -3.406578 28.296692 +104.564339 -3.981254 24.338188 +105.204338 -3.790267 28.727486 +109.364334 -2.175864 32.185822 +105.364342 -2.470482 31.982845 +105.204338 -0.789276 34.965858 +105.524338 0.780594 38.741077 +105.844337 2.308495 43.964554 +105.364342 7.946491 55.582275 +105.364342 4.972902 51.448196 +110.004341 6.171074 50.970291 +109.684341 3.031338 43.419853 +109.364334 1.595075 38.693977 +109.364334 -0.608564 34.829678 +129.684341 10.598924 7.968044 +131.284332 11.71573 11.518023 +125.684341 6.784304 12.117535 +123.764336 6.571049 7.886681 +117.684341 5.066267 12.845516 +117.044342 5.239271 9.315237 +113.844337 5.60326 10.174253 +1 3 2 0 1 +1 3 3 2 1 +1 3 6 4 5 +1 3 4 6 7 +1 3 8 7 6 +1 3 7 8 9 +1 3 8 10 9 +1 3 11 10 8 +1 3 12 10 11 +1 3 1 10 12 +1 3 13 10 1 +1 3 9 10 13 +1 3 0 13 1 +1 3 14 13 0 +1 3 15 13 14 +1 3 9 15 16 +1 3 15 9 13 +1 3 17 9 16 +1 3 9 17 7 +1 3 18 7 17 +1 3 7 18 4 +1 3 19 15 14 +1 3 20 19 14 +1 3 19 20 21 +1 3 22 21 20 +1 3 21 22 23 +1 3 24 23 22 +1 3 23 24 25 +1 3 26 25 24 +1 3 25 26 27 +1 3 28 27 26 +1 3 28 26 29 +1 3 31 29 30 +1 3 32 30 29 +1 3 33 3 1 +1 3 12 33 1 +1 3 34 3 33 +1 3 3 34 35 +1 3 36 35 34 +1 3 35 36 32 +1 3 30 32 36 +1 3 31 30 37 +1 3 37 30 38 +1 3 38 30 36 +1 3 39 38 36 +1 3 34 39 36 +1 3 40 34 33 +1 3 40 33 41 +1 3 34 40 39 +1 3 41 33 12 +1 3 42 41 12 +1 3 44 8 43 +1 3 8 44 11 +1 3 42 11 44 +1 3 11 42 12 +1 3 42 44 45 +1 3 46 42 45 +1 3 47 46 45 +1 3 42 46 41 +1 3 48 41 46 +1 3 41 48 49 +1 3 50 41 49 +1 3 41 50 51 +1 3 52 41 51 +1 3 54 52 53 +1 3 52 54 40 +1 3 41 52 40 +1 3 50 49 55 +1 3 51 50 55 +1 3 56 55 49 +1 3 57 56 49 +1 3 8 58 43 +1 3 58 8 6 +1 3 58 5 59 +1 3 5 58 6 +1 3 61 59 60 +1 3 59 61 58 +1 3 62 58 61 +1 3 58 62 43 +1 3 44 43 62 +1 3 45 44 62 +1 3 63 45 62 +1 3 47 63 64 +1 3 63 47 45 +1 3 61 63 62 +1 3 63 61 65 +1 3 48 57 49 +1 3 57 48 66 +1 3 67 66 48 +1 3 46 67 48 +1 3 47 68 67 +1 3 46 47 67 +1 3 69 47 64 +1 3 47 69 68 +1 3 64 70 69 +1 3 70 64 71 +1 3 73 71 72 +1 3 71 73 70 +1 3 74 73 72 +1 3 75 74 56 +1 3 75 56 57 +1 3 74 75 73 +1 3 76 61 60 +1 3 61 76 65 +1 3 64 65 77 +1 3 65 64 63 +1 3 77 65 76 +1 3 78 77 76 +1 3 77 78 71 +1 3 77 71 64 +1 3 79 71 78 +1 3 71 79 72 +1 3 74 72 79 +1 3 80 74 79 +1 3 74 80 81 +1 3 56 81 82 +1 3 81 56 74 +1 3 55 56 82 +1 3 84 80 83 +1 3 80 84 81 +1 3 85 81 84 +1 3 81 85 82 +1 3 55 82 85 +1 3 86 55 85 +1 3 55 86 87 +1 3 51 55 87 +1 3 88 51 87 +1 3 51 88 52 +1 3 52 88 89 +1 3 53 52 89 +1 3 90 53 89 +1 3 89 91 90 +1 3 88 91 89 +1 3 90 91 92 +1 3 95 93 94 +1 3 96 94 93 +1 3 94 96 97 +1 3 98 97 96 +1 3 99 98 96 +1 3 98 99 100 +1 3 92 98 100 +1 3 90 92 100 +1 3 101 90 100 +1 3 102 101 100 +1 3 99 102 100 +1 3 102 99 103 +1 3 96 103 99 +1 3 103 96 104 +1 3 93 104 96 +1 3 106 93 105 +1 3 93 106 104 +1 3 107 104 106 +1 3 104 107 103 +1 3 108 103 107 +1 3 103 108 102 +1 3 101 102 109 +1 3 109 102 108 +1 3 101 109 110 +1 3 111 101 110 +1 3 101 111 53 +1 3 90 101 53 +1 3 39 40 54 +1 3 112 39 54 +1 3 39 112 38 +1 3 113 38 112 +1 3 38 113 37 +1 3 114 113 112 +1 3 115 114 112 +1 3 114 115 116 +1 3 118 115 117 +1 3 115 118 116 +1 3 120 117 119 +1 3 117 120 118 +1 3 123 121 122 +1 3 124 123 122 +1 3 125 124 122 +1 3 124 125 126 +1 3 127 119 121 +1 3 119 127 120 +1 3 128 119 117 +1 3 115 128 117 +1 3 128 115 53 +1 3 111 128 53 +1 3 128 111 110 +1 3 119 128 110 +1 3 121 119 110 +1 3 129 121 110 +1 3 109 129 110 +1 3 129 109 130 +1 3 115 54 53 +1 3 54 115 112 +1 3 127 121 123 +1 3 132 105 131 +1 3 105 132 106 +1 3 132 131 133 +1 3 133 131 134 +1 3 135 133 134 +1 3 133 135 136 +1 3 137 133 136 +1 3 138 133 137 +1 3 133 138 132 +1 3 139 132 138 +1 3 140 139 138 +1 3 141 140 138 +1 3 140 141 130 +1 3 109 140 130 +1 3 140 109 108 +1 3 139 140 108 +1 3 107 139 108 +1 3 142 136 135 +1 3 136 142 143 +1 3 144 143 142 +1 3 143 144 145 +1 3 147 145 146 +1 3 145 147 143 +1 3 124 147 146 +1 3 147 124 126 +1 3 121 125 122 +1 3 125 121 129 +1 3 141 129 130 +1 3 129 141 125 +1 3 126 137 147 +1 3 141 126 125 +1 3 126 141 137 +1 3 138 137 141 +1 3 147 136 143 +1 3 136 147 137 +1 3 132 107 106 +1 3 107 132 139 +1 3 28 29 31 +1 3 148 25 27 +1 3 25 148 149 +1 3 28 148 27 +1 3 148 28 150 +1 3 151 148 150 +1 3 148 151 149 +1 3 153 152 149 +1 3 151 153 149 +1 3 154 151 150 +1 3 151 154 155 +1 3 156 155 154 +1 3 158 156 157 +1 3 156 158 155 +1 3 151 155 158 +1 3 153 151 158 +1 3 149 152 25 +1 3 25 152 23 +1 3 152 21 23 +1 3 21 152 159 +1 3 153 159 152 +1 3 159 153 160 +1 3 158 160 153 +1 3 160 158 161 +1 3 162 161 158 +1 3 157 162 158 +1 3 157 163 162 +1 3 163 157 164 +1 3 156 164 157 +1 3 164 156 165 +1 3 164 165 166 +1 3 167 164 166 +1 3 164 167 163 +1 3 168 163 167 +1 3 166 169 167 +1 3 170 167 169 +1 3 172 170 171 +1 3 170 172 173 +1 3 174 172 171 +1 3 172 174 175 +1 3 172 176 177 +1 3 176 172 175 +1 3 179 176 178 +1 3 176 179 177 +1 3 181 178 180 +1 3 178 181 179 +1 3 183 181 182 +1 3 181 183 179 +1 3 184 179 183 +1 3 179 184 177 +1 3 173 177 184 +1 3 177 173 172 +1 3 167 173 185 +1 3 173 167 170 +1 3 167 185 168 +1 3 163 168 162 +1 3 186 162 168 +1 3 161 186 187 +1 3 188 161 187 +1 3 161 188 160 +1 3 189 160 188 +1 3 160 189 159 +1 3 159 189 19 +1 3 21 159 19 +1 3 190 19 189 +1 3 191 190 189 +1 3 19 190 16 +1 3 15 19 16 +1 3 192 16 190 +1 3 16 192 17 +1 3 193 17 192 +1 3 17 193 18 +1 3 194 193 192 +1 3 193 194 195 +1 3 190 194 192 +1 3 194 190 191 +1 3 188 191 189 +1 3 191 188 196 +1 3 194 196 197 +1 3 196 194 191 +1 3 198 194 197 +1 3 194 198 195 +1 3 199 198 197 +1 3 198 199 200 +1 3 201 200 199 +1 3 200 201 202 +1 3 203 202 201 +1 3 202 203 204 +1 3 183 182 205 +1 3 205 182 206 +1 3 207 205 206 +1 3 205 207 208 +1 3 173 184 185 +1 3 185 184 208 +1 3 168 185 208 +1 3 209 168 208 +1 3 168 209 210 +1 3 186 168 210 +1 3 211 186 210 +1 3 186 211 187 +1 3 196 187 211 +1 3 187 196 188 +1 3 199 196 211 +1 3 196 199 197 +1 3 210 199 211 +1 3 199 210 201 +1 3 209 201 210 +1 3 201 209 203 +1 3 207 203 209 +1 3 208 207 209 +1 3 204 207 206 +1 3 207 204 203 +1 3 162 186 161 +1 3 183 205 184 +1 3 205 208 184 +1 3 0 2 14 +1 3 26 32 29 +1 3 213 26 212 +1 3 26 24 212 +1 3 212 22 214 +1 3 22 212 24 +1 3 214 213 212 +1 3 213 214 215 +1 3 22 216 214 +1 3 216 22 20 +1 3 214 217 215 +1 3 217 214 216 +1 3 218 217 216 +1 3 216 14 218 +1 3 14 216 20 +1 3 221 219 220 +1 3 219 222 220 +1 3 5 223 224 +1 3 223 5 4 +1 3 224 225 226 +1 3 225 224 223 +1 3 227 226 225 +1 3 227 228 226 +1 3 227 229 228 +1 3 227 220 229 +1 3 227 230 220 +1 3 227 225 230 +1 3 230 221 220 +1 3 230 231 221 +1 3 230 232 231 +1 3 233 230 225 +1 3 230 233 232 +1 3 233 223 234 +1 3 223 233 225 +1 3 234 4 18 +1 3 4 234 223 +1 3 232 235 231 +1 3 235 236 231 +1 3 236 235 237 +1 3 236 238 239 +1 3 238 236 237 +1 3 239 240 241 +1 3 240 239 238 +1 3 241 242 243 +1 3 242 241 240 +1 3 242 244 243 +1 3 243 244 245 +1 3 245 246 247 +1 3 247 248 245 +1 3 222 249 220 +1 3 249 229 220 +1 3 222 250 249 +1 3 250 222 251 +1 3 251 252 250 +1 3 252 251 248 +1 3 248 247 252 +1 3 247 246 253 +1 3 247 253 254 +1 3 247 254 252 +1 3 254 255 252 +1 3 255 250 252 +1 3 250 256 249 +1 3 249 256 257 +1 3 256 250 255 +1 3 249 257 229 +1 3 257 258 229 +1 3 260 228 259 +1 3 228 260 226 +1 3 259 229 258 +1 3 229 259 228 +1 3 259 258 261 +1 3 258 262 261 +1 3 262 263 261 +1 3 262 258 257 +1 3 257 264 262 +1 3 264 257 265 +1 3 257 266 265 +1 3 266 257 267 +1 3 257 268 267 +1 3 268 269 270 +1 3 269 268 256 +1 3 268 257 256 +1 3 265 266 271 +1 3 266 267 271 +1 3 271 272 265 +1 3 272 273 265 +1 3 260 224 226 +1 3 224 260 274 +1 3 59 224 274 +1 3 224 59 5 +1 3 60 274 275 +1 3 274 60 59 +1 3 275 260 276 +1 3 260 275 274 +1 3 260 259 276 +1 3 259 261 276 +1 3 261 277 276 +1 3 278 261 263 +1 3 261 278 277 +1 3 276 279 275 +1 3 279 276 277 +1 3 265 280 264 +1 3 280 265 273 +1 3 280 281 264 +1 3 281 262 264 +1 3 282 263 281 +1 3 263 262 281 +1 3 278 282 283 +1 3 282 278 263 +1 3 283 284 278 +1 3 284 283 285 +1 3 287 285 286 +1 3 285 287 284 +1 3 286 288 287 +1 3 288 289 272 +1 3 272 289 273 +1 3 289 288 286 +1 3 60 279 76 +1 3 279 60 275 +1 3 290 277 278 +1 3 277 290 279 +1 3 279 290 76 +1 3 76 284 78 +1 3 284 76 290 +1 3 284 290 278 +1 3 284 79 78 +1 3 79 284 287 +1 3 287 288 79 +1 3 79 291 80 +1 3 291 79 288 +1 3 292 288 272 +1 3 288 292 291 +1 3 272 271 292 +1 3 83 291 293 +1 3 291 83 80 +1 3 293 292 294 +1 3 292 293 291 +1 3 292 271 294 +1 3 271 295 294 +1 3 295 271 296 +1 3 271 267 296 +1 3 267 297 296 +1 3 297 267 268 +1 3 297 268 298 +1 3 268 270 298 +1 3 270 299 298 +1 3 300 298 299 +1 3 300 297 298 +1 3 300 299 301 +1 3 93 95 302 +1 3 302 303 93 +1 3 303 302 304 +1 3 304 305 303 +1 3 305 306 303 +1 3 306 305 307 +1 3 305 301 307 +1 3 301 299 307 +1 3 299 308 307 +1 3 308 309 307 +1 3 307 310 306 +1 3 310 307 309 +1 3 306 311 303 +1 3 311 306 310 +1 3 311 93 303 +1 3 105 311 312 +1 3 311 105 93 +1 3 312 310 313 +1 3 310 312 311 +1 3 313 309 314 +1 3 309 313 310 +1 3 309 308 315 +1 3 309 315 314 +1 3 315 308 316 +1 3 308 317 316 +1 3 317 308 270 +1 3 308 299 270 +1 3 256 255 269 +1 3 255 318 269 +1 3 318 255 254 +1 3 254 319 318 +1 3 319 254 253 +1 3 319 320 318 +1 3 320 321 318 +1 3 321 320 322 +1 3 324 322 323 +1 3 322 324 321 +1 3 326 323 325 +1 3 323 326 324 +1 3 329 327 328 +1 3 327 330 328 +1 3 330 331 328 +1 3 331 330 332 +1 3 326 333 329 +1 3 333 326 325 +1 3 326 334 324 +1 3 334 321 324 +1 3 321 334 270 +1 3 334 317 270 +1 3 317 334 316 +1 3 334 326 316 +1 3 326 329 316 +1 3 329 335 316 +1 3 316 336 315 +1 3 336 316 335 +1 3 269 321 270 +1 3 321 269 318 +1 3 329 333 327 +1 3 131 312 337 +1 3 312 131 105 +1 3 131 337 338 +1 3 131 338 134 +1 3 134 339 135 +1 3 339 134 338 +1 3 338 340 339 +1 3 338 341 340 +1 3 341 338 337 +1 3 337 342 341 +1 3 342 343 341 +1 3 343 344 341 +1 3 344 343 336 +1 3 343 315 336 +1 3 315 343 314 +1 3 343 342 314 +1 3 342 313 314 +1 3 135 345 142 +1 3 345 135 339 +1 3 142 346 144 +1 3 346 142 345 +1 3 348 345 347 +1 3 345 348 346 +1 3 348 332 330 +1 3 332 348 347 +1 3 328 335 329 +1 3 335 328 331 +1 3 336 331 344 +1 3 331 336 335 +1 3 340 332 347 +1 3 331 340 344 +1 3 340 331 332 +1 3 340 341 344 +1 3 345 340 347 +1 3 340 345 339 +1 3 312 342 337 +1 3 342 312 313 +1 3 245 244 246 +1 3 242 349 350 +1 3 349 242 240 +1 3 350 244 242 +1 3 244 350 351 +1 3 350 352 351 +1 3 352 350 349 +1 3 354 353 349 +1 3 353 352 349 +1 3 351 355 356 +1 3 355 351 352 +1 3 355 357 356 +1 3 359 355 358 +1 3 355 359 357 +1 3 355 352 358 +1 3 352 353 358 +1 3 354 349 240 +1 3 354 240 238 +1 3 238 360 354 +1 3 360 238 237 +1 3 354 361 353 +1 3 361 354 360 +1 3 353 362 358 +1 3 362 353 361 +1 3 362 363 358 +1 3 363 359 358 +1 3 363 364 359 +1 3 364 363 365 +1 3 359 366 357 +1 3 366 359 364 +1 3 366 364 367 +1 3 367 365 368 +1 3 365 367 364 +1 3 365 369 368 +1 3 370 367 368 +1 3 368 371 370 +1 3 374 372 373 +1 3 372 374 371 +1 3 374 375 376 +1 3 375 374 373 +1 3 377 375 373 +1 3 375 377 378 +1 3 380 377 379 +1 3 377 380 378 +1 3 180 379 181 +1 3 379 180 380 +1 3 182 379 381 +1 3 379 182 181 +1 3 381 377 382 +1 3 377 381 379 +1 3 382 373 372 +1 3 373 382 377 +1 3 383 371 368 +1 3 371 383 372 +1 3 383 368 369 +1 3 369 365 363 +1 3 363 384 369 +1 3 384 362 385 +1 3 385 361 386 +1 3 361 385 362 +1 3 386 360 387 +1 3 360 386 361 +1 3 387 360 235 +1 3 360 237 235 +1 3 235 388 387 +1 3 388 389 387 +1 3 388 235 233 +1 3 235 232 233 +1 3 233 390 388 +1 3 390 233 234 +1 3 234 193 390 +1 3 193 234 18 +1 3 390 195 391 +1 3 195 390 193 +1 3 390 389 388 +1 3 389 390 391 +1 3 387 392 386 +1 3 392 387 389 +1 3 393 389 391 +1 3 389 393 392 +1 3 393 195 198 +1 3 195 393 391 +1 3 393 200 394 +1 3 200 393 198 +1 3 394 202 395 +1 3 202 394 200 +1 3 395 204 396 +1 3 204 395 202 +1 3 182 381 397 +1 3 182 397 206 +1 3 397 398 206 +1 3 398 397 399 +1 3 382 372 383 +1 3 382 383 399 +1 3 383 369 399 +1 3 369 400 399 +1 3 400 369 401 +1 3 369 384 401 +1 3 401 385 402 +1 3 385 401 384 +1 3 402 386 392 +1 3 386 402 385 +1 3 402 393 394 +1 3 393 402 392 +1 3 394 401 402 +1 3 401 394 395 +1 3 401 396 400 +1 3 396 401 395 +1 3 396 398 400 +1 3 398 399 400 +1 3 206 396 204 +1 3 396 206 398 +1 3 384 363 362 +1 3 397 381 382 +1 3 399 397 382 +1 3 219 221 231 +1 3 248 243 245 +1 3 243 403 404 +1 3 241 243 404 +1 3 405 241 404 +1 3 241 405 239 +1 3 404 406 405 +1 3 406 404 403 +1 3 405 236 239 +1 3 236 405 407 +1 3 406 407 405 +1 3 407 406 408 +1 3 408 409 407 +1 3 231 407 409 +1 3 407 231 236 diff --git a/graphics/presentations/Artifical Intelligence/data2.dat b/graphics/presentations/Artifical Intelligence/data2.dat new file mode 100755 index 0000000..a6a3427 --- /dev/null +++ b/graphics/presentations/Artifical Intelligence/data2.dat @@ -0,0 +1,50 @@ +0 -10 -5 +0 -10 5 +-20 -10 -5 +-20 -10 5 +-20 0 -5 +-20 0 5 +0 10 -5 +0 10 5 +30 10 0 +10 0 -5 +10 0 5 +30 0 0 +40 10 0 +40 20 0 +-30 15 -3 +-30 15 3 +30 15 -3 +30 15 3 +999 999 999 +0 1 +2 3 +0 2 +1 3 +4 5 +2 4 +3 5 +4 0 +5 1 +6 7 +4 6 +5 7 +6 0 +7 1 +6 8 +7 8 +9 10 +6 9 +7 10 +0 9 +1 10 +9 11 +10 11 +11 12 +12 13 +13 8 +14 15 +16 17 +14 17 +15 16 +999 999 \ No newline at end of file diff --git a/graphics/presentations/Artifical Intelligence/tehis.bas b/graphics/presentations/Artifical Intelligence/tehis.bas new file mode 100755 index 0000000..1c943d0 --- /dev/null +++ b/graphics/presentations/Artifical Intelligence/tehis.bas @@ -0,0 +1,1118 @@ +' AI presentation +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB sc10 () +DECLARE SUB sc9 () +DECLARE SUB sc8 () +DECLARE SUB sc7 () +DECLARE SUB sc6 () +DECLARE SUB inpur () +DECLARE SUB sc5 () +DECLARE SUB box (x1!, y1!, x2!, y2!) +DECLARE SUB pri (x!, y!, s!, c!, a$) +DECLARE SUB getfnt () +DECLARE SUB sc4 () +DECLARE SUB mkback () +DECLARE SUB sc3 () +DECLARE SUB calc (x1!, y1!, z1!, x2!, y2!, z2!, x3!, y3!, z3!, c!) +DECLARE SUB getan (x1!, y1!, x2!, y2!, N!) +DECLARE SUB rot (zx!, zy!, x1!, y1!, N!) +DECLARE SUB getcol (x1!, y1!, z1!, x2!, y2!, z2!, x3!, y3!, z3!, c!) +DECLARE SUB fp1 (x1!, y1!, x2!, y2!, x3!, c!) +DECLARE SUB fp (x1!, y1!, x2!, y2!, x3!, y3!, c!) +DECLARE SUB sc2 () +DECLARE SUB pal (r!, g!, b!, c!) +DECLARE SUB sc1 () +DECLARE SUB start () +DIM SHARED pii +DIM SHARED pi +DIM SHARED angl1, angl2 +DIM SHARED font(0 TO 7, 0 TO 7, 32 TO 150) +start +'GOTO 6 +sc1 +sc2 +sc3 +sc4 +sc5 +sc6 +sc7 +6 +sc8 +sc10 +sc9 + +SYSTEM + +SUB box (x1, y1, x2, y2) + +'FOR a = 0 TO 30 +'IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a)) +'IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10 +'IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10))) +'NEXT a + +FOR y = y1 TO y2 +s = 10 +IF y - y1 <= 10 THEN +s = (SQR((20 - (y - y1)) * (y - y1))) +END IF + +IF y2 - y <= 10 THEN +s = (SQR((20 - (y2 - y)) * (y2 - y))) +END IF + +FOR x = x1 - s TO x2 + s +c = POINT(x, y) +IF c <= 127 THEN +c = c + 127 +IF c > 245 THEN c = 245 +PSET (x, y), c +END IF +NEXT x +NEXT y + +END SUB + +SUB calc (tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3, c) +x1 = tx1 +y1 = ty1 +z1 = tz1 + +x2 = tx2 +y2 = ty2 +z2 = tz2 + +x3 = tx3 +y3 = ty3 +z3 = tz3 + + +'LINE (x1, y1)-(x2, y2), 3 +'LINE (x3, y3)-(x2, y2), 3 +'LINE (x1, y1)-(x3, y3), 3 + + +getan x1, y1, x2, y2, n1 +rot x1, y1, x2, y2, -n1 +rot x1, y1, x3, y3, -n1 + +getan y1, z1, y2, z2, n2 +n2 = n2 + pi / 2 +rot y1, z1, y2, z2, -n2 +rot y1, z1, y3, z3, -n2 + +getan x1, z1, x3, z3, n3 +n3 = n3 + pi / 2 +rot x1, z1, x2, z2, -n3 +rot x1, z1, x3, z3, -n3 + +x4 = x1 +y4 = y1 +z4 = z1 + 30 + +rot x1, z1, x4, z4, n3 +rot y1, z1, y4, z4, n2 +rot x1, y1, x4, y4, n1 + +'LINE (tx1, ty1)-(x4, y4), 255 +x1 = tx1 + 20 +y1 = ty1 + 10 +a = SQR((x1 - x4) ^ 2 + (y1 - y4) ^ 2) +c = 49 - a +IF c < 0 THEN c = 0 +END SUB + +SUB fp (x1, y1, x2, y2, x3, y3, c) + + +DIM yb(-100 TO 300) + +mx1 = x1 +my1 = y1 +mx2 = x2 +my2 = y2 +GOSUB mkl +mx1 = x1 +my1 = y1 +mx2 = x3 +my2 = y3 +GOSUB mkl +mx1 = x3 +my1 = y3 +mx2 = x2 +my2 = y2 +GOSUB mkl +GOTO 1 + +mkl: +IF my2 < my1 THEN SWAP my1, my2: SWAP mx1, mx2 +FOR y = my1 TO my2 - 1 +x = mx1 + (mx2 - mx1) * ((y - my1) / (my2 - my1)) +IF yb(y) = 0 THEN +yb(y) = x +ELSE +LINE (x, y)-(yb(y), y), c +END IF +NEXT y +RETURN +1 + + +'LINE (x1, y1)-(x2, y2), 0 +'LINE (x3, y3)-(x2, y2), 0 +'LINE (x1, y1)-(x3, y3), 0 + +END SUB + +SUB getan (x1, y1, x2, y2, N) +IF y1 = y2 THEN +IF x2 > x1 THEN N = pi / 2 ELSE N = pi * 1.5 +GOTO 2 +END IF + +IF y2 > y1 THEN +IF x2 = x1 THEN N = pi: GOTO 2 +IF x2 > x1 THEN +N = (pi * 1) - ATN((x2 - x1) / (y2 - y1)) +ELSE +N = pi + ATN((x1 - x2) / (y2 - y1)) +END IF +ELSE +IF x2 = x1 THEN N = 0: GOTO 2 +IF x2 > x1 THEN +N = ATN((x2 - x1) / (y1 - y2)) +ELSE +N = pi * 2 - ATN((x1 - x2) / (y1 - y2)) +END IF +END IF +2 +END SUB + +SUB getfnt +'DIM SHARED font(0 TO 7, 0 TO 7, 10 TO 200) + +pal 0, 0, 0, 70 +COLOR 70 +FOR a = 32 TO 150 +LOCATE 1, 1 +PRINT CHR$(a) +FOR y = 0 TO 7 +FOR x = 0 TO 7 +font(x, y, a) = POINT(x, y) +NEXT x +NEXT y +NEXT a + +END SUB + +SUB inpur +a$ = INPUT$(1) + + +END SUB + +DEFINT A-Z +SUB mkback +CLS +pal 0, 5, 5, 250 +pal 0, 5, 5, 251 +pal 0, 5, 5, 252 +pal 0, 5, 5, 253 +pal 0, 5, 5, 254 +pal 0, 5, 5, 255 + +FOR a = 0 TO 127 +OUT &H3C8, a +OUT &H3C9, SIN(a / 22) * 30 + 30 +OUT &H3C9, SIN(a / 18) * 5 + 5 +OUT &H3C9, COS(a / 12) * 10 + 10 +NEXT a + +FOR a = 128 TO 245 +OUT &H3C8, a +b = a - 128 +OUT &H3C9, SIN(b / 22) * 4 + 10 +OUT &H3C9, SIN(b / 18) * 4 + 10 +OUT &H3C9, COS(b / 12) * 4 + 10 +NEXT a + +DIM lm +lm = 127 + + +s = 2 ^ 8 +5 +s = s \ 2 +x2 = (319 \ s) - 1 +y2 = (199 \ s) - 1 + +FOR y = 0 TO y2 +FOR x = 0 TO x2 +x1 = x * s +y1 = y * s +c1 = POINT(x1, y1) +c2 = POINT(x1 + s, y1) +c3 = POINT(x1, y1 + s) +c4 = POINT(x1 + s, y1 + s) + +sp = s \ 2 + +cc2 = ((c1 + c2) / 2) + (RND * 6) - 3 +IF cc2 > lm THEN cc2 = lm + +cc3 = ((c1 + c3) / 2) + (RND * 6) - 3 +IF cc3 > lm THEN cc3 = lm + +cc4 = ((c2 + c4) / 2) + (RND * 6) - 3 +IF cc4 > lm THEN cc4 = lm + +cc5 = ((c3 + c4) / 2) + (RND * 6) - 3 +IF cc5 > lm THEN cc5 = lm + +cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * 6) - 3 +IF cc1 > lm THEN cc1 = lm + + + +PSET (x1 + sp, y1 + sp), cc1 +PSET (x1 + sp, y1), cc2 +PSET (x1, y1 + sp), cc3 +PSET (x1 + s, y1 + sp), cc4 +PSET (x1 + sp, y1 + s), cc5 + + +NEXT x +NEXT y +IF s > 2 THEN GOTO 5 + + + +END SUB + +DEFSNG A-Z +SUB pal (r, g, b, c) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 63 THEN r = 63 +IF g > 63 THEN g = 63 +IF b > 63 THEN b = 63 + +OUT &H3C8, c +OUT &H3C9, r +OUT &H3C9, g +OUT &H3C9, b +END SUB + +SUB pri (x, y, s, c, a$) +IF s = 1 THEN +x2 = x +FOR a = 1 TO LEN(a$) +b = ASC(RIGHT$(LEFT$(a$, a), 1)) +IF b > 150 OR b < 32 THEN GOTO 7 +FOR y1 = 0 TO 7 +FOR x1 = 0 TO 7 +c1 = font(x1, y1, b) +IF c1 > 0 THEN PSET (x1 + x2, y1 + y), c +NEXT x1 +NEXT y1 +7 +x2 = x2 + 8 +NEXT a +END IF +END SUB + +SUB rot (zx, zy, x1, y1, N) +x2 = x1 - zx +y2 = y1 - zy +c1 = SIN(N) +s1 = COS(N) +x1 = x2 * s1 - y2 * c1 + zx +y1 = x2 * c1 + y2 * s1 + zy +END SUB + +SUB sc1 +pal 0, 63, 20, 255 +DIM px(0 TO 1000) +DIM py(0 TO 1000) +DIM pz(0 TO 1000) +DIM px1(0 TO 1000) +DIM py1(0 TO 1000) +DIM lin1!(0 TO 1500) +DIM lin2!(0 TO 1500) +DIM lbx1(1 TO 1500) +DIM lby1(1 TO 1500) +DIM lbx2(1 TO 1500) +DIM lby2(1 TO 1500) + +DIM np, nl +DIM an1, an2, an3 +DIM an1s, an2s, an3s +DIM inco, inpo +DIM tim +DIM nlt +DIM ehi + +tim = 0 +ehi = 1 + + +an1 = 0 +an2 = 0 + +np = -1 +nl = 0 +inco = 0 +inpo = 0 +nlt = 0 + +pal 40, 40, 40, 254 +COLOR 254 +LOCATE 2, 11 +PRINT "�ks hetk" + +OPEN "data.dat" FOR INPUT AS #1 +INPUT #1, a +INPUT #1, inco +INPUT #1, inpo + +FOR a = 1 TO inco +INPUT #1, x, y, z +np = np + 1 +px(np) = x - 100 +py(np) = y +pz(np) = z +NEXT a + +INPUT #1, b, b, l1, l2, l3 + +FOR a = 1 TO inpo - 1 +INPUT #1, b, b, l1!, l2!, l3! +nlin1! = l1! +nlin2! = l2! +GOSUB addlin +nlin1! = l2! +nlin2! = l3! +GOSUB addlin +nlin1! = l1! +nlin2! = l3! +GOSUB addlin +LOCATE 4, 10 +PRINT STR$(INT(a / (inpo - 1) * 100)) + "% valmis" +NEXT a +CLOSE 1 +CLS +3 +tim = tim + 1 +sj$ = INKEY$ +IF sj$ = "q" THEN END + +a = COS(tim / 25) +an1 = COS(tim / 29) * a +an2 = (pii / 2) + SIN(tim / 42) * a + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +IF ehi >= 1 THEN +nlt = nlt + ehi +ehi = ehi + .03 +IF nlt > nl THEN nlt = nl: ehi = 0 +END IF + +FOR a = 0 TO np +x = px(a) +y = py(a) +z = pz(a) + +z2 = z * s1 + y * c1 +y1 = y * s1 - z * c1 + +z1 = z2 * s2 + x * c2 +x1 = x * s2 - z2 * c2 + + +z1 = z1 + 100 + +x1 = x1 / z1 * 74 * 2 +y1 = y1 / z1 * 65 * 2 + +px1(a) = x1 + 160 +py1(a) = y1 + 80 +NEXT a + +FOR a = 1 TO nlt +l1 = lin1!(a) +l2 = lin2!(a) +x1 = px1(l1) +y1 = py1(l1) +x2 = px1(l2) +y2 = py1(l2) +LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 +LINE (x1, y1)-(x2, y2), 255 +lbx1(a) = x1 +lby1(a) = y1 +lbx2(a) = x2 +lby2(a) = y2 +NEXT a +SOUND 0, .5 +IF tim < 280 THEN GOTO 3 +GOTO 4 + +addlin: +FOR b = 1 TO nl +IF lin1!(b) = nlin1! THEN IF lin2!(b) = nlin2! THEN RETURN +IF lin1!(b) = nlin2! THEN IF lin2!(b) = nlin1! THEN RETURN +NEXT b +nl = nl + 1 +lin1!(nl) = nlin1! +lin2!(nl) = nlin2! +RETURN +4 +angl1 = an1 +angl2 = an2 +END SUB + +SUB sc10 + +RANDOMIZE 122 +mkback + +box 30, 50, 250, 180 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, " Kasutatud kirjandus:" +y = y + 20 +pri 30, 70 + y, 1, 250, "An augmented computer vision" +y = y + 13 +pri 30, 70 + y, 1, 250, "approach for anhanced" +y = y + 13 +pri 30, 70 + y, 1, 250, "understanding. M.Adjouadi," +y = y + 13 +pri 30, 70 + y, 1, 250, "J.Riley;" +y = y + 13 +pri 30, 70 + y, 1, 250, "Journal of Rehabilitation" +y = y + 13 +pri 30, 70 + y, 1, 250, "Research & Development," +y = y + 13 +pri 30, 70 + y, 1, 250, "Oct 95,Vol. 32 issue 3" + +inpur + + +END SUB + +SUB sc2 +pal 0, 63, 20, 255 +CLS +angl1 = 0 +angl2 = 1.5 +DIM px(0 TO 2000) +DIM py(0 TO 2000) +DIM pz(0 TO 2000) + +DIM rpx(0 TO 2000) +DIM rpy(0 TO 2000) +DIM rpz(0 TO 2000) + +DIM pol1(1 TO 2000) +DIM pol2(1 TO 2000) +DIM pol3(1 TO 2000) + +np = 0 +nl = 0 + +OPEN "data.dat" FOR INPUT AS #1 +INPUT #1, a +INPUT #1, inco +INPUT #1, inpo + +FOR a = 1 TO inco +INPUT #1, x, y, z +px(np) = x - 100 +py(np) = y +pz(np) = z +np = np + 1 +NEXT a + +INPUT #1, b, b, l1, l2, l3 + +FOR a = 1 TO inpo - 1 +INPUT #1, b, b, l1, l2, l3 +nl = nl + 1 +pol1(nl) = l1 +pol2(nl) = l2 +pol3(nl) = l3 +NEXT a +CLOSE 1 + +s1 = SIN(angl1) +c1 = COS(angl1) +s2 = SIN(angl2) +c2 = COS(angl2) + +FOR a = 0 TO np +x = px(a) +y = py(a) +z = pz(a) +z2 = z * s1 + y * c1 +y1 = y * s1 - z * c1 +z1 = z2 * s2 + x * c2 +x1 = x * s2 - z2 * c2 +z1 = z1 + 100 +x1 = x1 / z1 * 74 * 2 +y1 = y1 / z1 * 65 * 2 +rpx(a) = x1 + 160 +rpy(a) = y1 + 80 +rpz(a) = z1 +NEXT a + +'FOR a = 1 TO 63 +'pal COS(a / 9) * 30 + 30, SIN(a / 5) * 30 + 30, SIN(a / 13) * 30 + 30, a +'NEXT a + +FOR a = 1 TO 49 +pal a * 1.1 + 20, a * 1.1 + 10, a * 1.1, a +NEXT a + +DIM polz(1 TO nl) + +FOR a = 1 TO nl +polz(a) = (rpz(pol1(a)) + rpz(pol2(a)) + rpz(pol3(a))) +NEXT a + +e = nl +FOR a = 1 TO nl +su = -10000 +sun = 1 +FOR b = 1 TO e +IF polz(b) > su THEN su = polz(b): sun = b +NEXT b + +p1 = pol1(sun) +p2 = pol2(sun) +p3 = pol3(sun) + +polz(sun) = polz(e) +pol1(sun) = pol1(e) +pol2(sun) = pol2(e) +pol3(sun) = pol3(e) +e = e - 1 +calc rpx(p1), rpy(p1), rpz(p1), rpx(p2), rpy(p2), rpz(p2), rpx(p3), rpy(p3), rpz(p3), d +fp INT(rpx(p1)), INT(rpy(p1)), INT(rpx(p2)), INT(rpy(p2)), INT(rpx(p3)), INT(rpy(p3)), INT(d) +'SOUND 0, .07 +NEXT a + + +END SUB + +SUB sc3 +DIM buf(1 TO 10000) +DIM buf1(0 TO 35) + +FOR a = 1 TO 20 +SOUND 0, 1 +NEXT a +FOR a = 0 TO 30 +IF a <= 5 THEN buf1(a) = 120 + (SQR((20 - a) * a)) +IF (a > 5) AND (a < 25) THEN buf1(a) = 120 + 10 +IF a >= 25 THEN buf1(a) = 120 + (SQR((30 - a) * (a - 10))) +NEXT a + +FOR y = 0 TO 30 +FOR x = 10 TO 300 STEP 10 +GET (x, 0)-(x + 9, 198), buf(1) +PUT (x, 1), buf(1), PSET +NEXT x +FOR a = 1 TO 49 +pal a * 1.1 + (20 - y), a * 1.1 + 10 + (y / 1.5), a * 1.1, a +NEXT a +SOUND 0, 1 +LINE (160 - buf1(y), 20)-(160 + buf1(y), 20), 255 +NEXT y + +LOCATE 1, 1 +COLOR 254 +pal 0, 0, 0, 254 +PRINT "Tehisintellekt" +pal 63, 0, 0, 253 +FOR y = 0 TO 8 +FOR x = 0 TO 120 +c = POINT(x, y) +IF c > 0 THEN CIRCLE (x * 2 + 50, y * 3 + 26), 2, 0 +NEXT x +FOR x = 0 TO 120 +c = POINT(x, y + 1) +IF c > 0 THEN CIRCLE (x * 2 + 50, (y + 1) * 3 + 26), 2, 253 +NEXT x +SOUND 0, 2 +NEXT y + +RANDOMIZE 1 + +FOR a = 1 TO 10 +y = RND * 100 + 50 +FOR x = 10 TO 300 STEP 10 +GET (x, y)-(x + 9, 198), buf(1) +PUT (x, y - 1), buf(1), PSET +NEXT x +NEXT a + +COLOR 253 +pal 0, 0, 0, 253 +LOCATE 1 +PRINT " autor: Svjatoslav Agejenko 30.09.2001 " +GET (0, 0)-(319, 8), buf(1) +LOCATE 1 +PRINT " " +PUT (0, 190), buf(1), PSET +FOR a = 1 TO 32 +pal 0, a, a * 2, 253 +SOUND 0, 1 +NEXT a +inpur +END SUB + +SUB sc4 +RANDOMIZE 1 +mkback + +box 30, 50, 290, 150 + +pal 32, 64, 32, 250 +y = 0 +pri 30, 70 + y, 1, 250, " Ruumiliselt laiendatud n�gemise" +y = y + 16 +pri 30, 70 + y, 1, 250, "l�henemine kujutise tuvastamiseks" +y = y + 20 +pri 30, 70 + y, 1, 250, "eesm�rk: + interpriteerimine" +y = y + 16 +pri 30, 70 + y, 1, 250, " + automaatjuhtimine" + +inpur +END SUB + +SUB sc5 +RANDOMIZE 4 +mkback + +box 30, 50, 290, 150 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, "Tunnuste ekstraheerimise protsess" +y = y + 20 +pri 30, 70 + y, 1, 250, "a) Laplace - Gaussi operaator;" +y = y + 12 +pri 30, 70 + y, 1, 250, "b) lainekese teisenduse multi-" +y = y + 12 +pri 30, 70 + y, 1, 250, " skaalaline serva avastamine;" +y = y + 12 +pri 30, 70 + y, 1, 250, "c) h�perveeru teooria lihtsate" +y = y + 12 +pri 30, 70 + y, 1, 250, " rakkude p�him�tted." + + +inpur + +END SUB + +SUB sc6 +RANDOMIZE 40 +mkback + +box 30, 50, 290, 150 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, "* S�gavusinfo ekstraheerimine" +y = y + 20 +pri 30, 70 + y, 1, 250, "* Ruumilise n�gemise kasutamine" +y = y + 20 +pri 30, 70 + y, 1, 250, "* Sarnasusm��de" +y = y + 20 +pri 30, 70 + y, 1, 250, "* Sobitamisstrateegia" +inpur + + +END SUB + +SUB sc7 +pal 0, 0, 0, 0 +FOR a = 0 TO 19 +FOR y = a TO 199 STEP 20 +LINE (0, y)-(319, y), 0 +NEXT y +SOUND 0, .5 +NEXT a + +END SUB + +SUB sc8 +FOR a = 1 TO 50 +pal 0, 0, 0, a +NEXT a + + +DIM px(0 TO 800) +DIM py(0 TO 800) +DIM pz(0 TO 800) +DIM lin1(0 TO 1000) +DIM lin2(0 TO 1000) +DIM linc(0 TO 1000) +DIM lbx1(1 TO 1000) +DIM lby1(1 TO 1000) +DIM lbx2(1 TO 1000) +DIM lby2(1 TO 1000) +DIM px1(0 TO 800) +DIM py1(0 TO 800) +DIM hlkx(1 TO 50) +DIM hlky(1 TO 50) +DIM hlkz(1 TO 50) +DIM hlka +DIM hlkr +DIM hlknu +DIM hlkin +DIM hlax, hlay, hlaz +DIM mx, mz, my +DIM desx, desz +DIM desa + +DIM np, nl +DIM an1, an2 +DIM tim +DIM eta +DIM mil +DIM miin + +miin = 0 +mil = 25 +tim = 0 +eta = 1 +an1 = 0 +an2 = 0 + +np = 0 +nl = 0 +RANDOMIZE 100 +s = 64 +14 +sp = s / 2 +FOR y = 0 TO 100 STEP s +FOR x = 0 TO 100 STEP s +c1 = POINT(x, y) +c2 = POINT(x + s, y) +c3 = POINT(x, y + s) +c4 = POINT(x + s, y + s) +c5 = (c1 + c2 + c3 + c4) / 4 + RND * s * 6 - sp * 7 +c6 = (c2 + c4) / 2 + RND * s * 6 - sp * 7 +c7 = (c3 + c4) / 2 + RND * s * 6 - sp * 7 +IF c5 > 50 THEN c5 = 50 +IF c5 < 0 THEN c5 = 0 +IF c6 > 50 THEN c6 = 50 +IF c6 < 0 THEN c6 = 0 +IF c7 > 50 THEN c7 = 50 +IF c7 < 0 THEN c7 = 0 +PSET (x + sp, y + sp), c5 +PSET (x + s, y + sp), c6 +PSET (x + sp, y + s), c7 +NEXT x +NEXT y +s = s / 2 +IF s > 1 THEN GOTO 14 +'a$ = INPUT$(1) + +FOR z = 1 TO 400 STEP 20 +FOR x = 1 TO 400 STEP 20 +np = np + 1 +px(np) = x +py(np) = POINT(z / 20 + 10, x / 20 + 10) * 2 +pz(np) = z +IF x > 1 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 1 +linc(nl) = 1 +END IF +IF z > 1 THEN +nl = nl + 1 +lin1(nl) = np +lin2(nl) = np - 20 +linc(nl) = 1 +END IF +NEXT x +NEXT z + + +LINE (0, 0)-(319, 199), 0, BF + +pal 0, 0, 0, 0 +pal 0, 40, 10, 1 +pal 0, 32, 64, 2 +pal 50, 50, 0, 3 +pal 64, 20, 0, 4 + +mx = 200 +mz = 200 +kau = 1000 +hlax = 200 +hlay = 0 +hlaz = 200 +desx = 200 +desz = 200 + +OPEN "data2.dat" FOR INPUT AS #1 +a = 0 +b = 0 +hlkin = np + 1 +15 +INPUT #1, x, y, z +IF x = 999 THEN GOTO 16 +a = a + 1 +hlkx(a) = x +hlky(a) = -y +hlkz(a) = z +GOTO 15 +16 +INPUT #1, x, y +IF x = 999 THEN GOTO 17 +nl = nl + 1 +lin1(nl) = x + np + 1 +lin2(nl) = y + np + 1 +linc(nl) = 2 +GOTO 16 +17 +CLOSE #1 +np = np + a +hlknu = a + +RANDOMIZE 10 +c = 3 +FOR a = 1 TO 25 +p = RND * 396 + 2 +x = px(p) +z = pz(p) +yy = py(p) - 4 + +px(np + 1) = x - 5 +py(np + 1) = yy +pz(np + 1) = z - 5 + +px(np + 2) = x + 5 +py(np + 2) = yy +pz(np + 2) = z - 5 + +px(np + 3) = x + 5 +py(np + 3) = yy +pz(np + 3) = z + 5 + +px(np + 4) = x - 5 +py(np + 4) = yy +pz(np + 4) = z + 5 + +px(np + 5) = x +py(np + 5) = yy - 5 +pz(np + 5) = z + + +lin1(nl + 1) = np + 1 +lin2(nl + 1) = np + 2 +linc(nl + 1) = c + +lin1(nl + 2) = np + 2 +lin2(nl + 2) = np + 3 +linc(nl + 2) = c + +lin1(nl + 3) = np + 3 +lin2(nl + 3) = np + 4 +linc(nl + 3) = c + +lin1(nl + 4) = np + 4 +lin2(nl + 4) = np + 1 +linc(nl + 4) = c + +lin1(nl + 5) = np + 1 +lin2(nl + 5) = np + 5 +linc(nl + 5) = c + +lin1(nl + 6) = np + 2 +lin2(nl + 6) = np + 5 +linc(nl + 6) = c + +lin1(nl + 7) = np + 3 +lin2(nl + 7) = np + 5 +linc(nl + 7) = c + +lin1(nl + 8) = np + 4 +lin2(nl + 8) = np + 5 +linc(nl + 8) = c + +np = np + 5 +nl = nl + 8 +NEXT a + + +10 +SOUND 0, 1 +IF INKEY$ <> "" THEN miin = 1 +IF miin > 150 THEN GOTO 13 +IF miin <> 0 THEN miin = miin + 7 +mx = hlax +my = 50 - hlay - miin +mz = hlaz + +SELECT CASE eta +CASE 1 +desx = px(np) +desz = pz(np) +getan desx, desz, hlax, hlaz, desa +IF desa - hlka > pi THEN desa = desa - (pi * 2) +IF hlka - desa > pi THEN desa = desa + (pi * 2) +eta = 2 +FOR a = nl - 7 TO nl +linc(a) = 4 +NEXT a +CASE 2 +a = desa - hlka +IF desa = hlka THEN eta = 3 +IF a > .05 THEN a = .05 +IF a < -.05 THEN a = -.05 +hlka = hlka + a +CASE 3 +x = desx - hlax +z = desz - hlaz +v = SQR(x * x + z * z) +IF v < 5 THEN eta = 4 +v = v / 2 +hlax = hlax + x / v +hlaz = hlaz + z / v +CASE 4 +FOR a = np - 4 TO np +py(a) = py(a) - 1 +NEXT a +IF py(np) < 3 - hlay THEN +FOR a = nl - 7 TO nl +LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 +NEXT a +np = np - 5 +nl = nl - 8 +mil = mil - 1 +eta = 6 +IF mil <= 0 THEN eta = 7 +END IF +CASE 6 +eta = 5 +CASE 5 +eta = 1 +END SELECT + +y = 60 - py(INT((hlaz + 10) / 20) * 20 + INT((hlax + 10) / 20)) +IF hlay > y + 5 THEN hlay = hlay - 1 +IF hlay < y THEN hlay = hlay + 1 +IF hlay > y + 25 THEN hlay = hlay - 1: ' SOUND 1000, 1 +IF hlay < y - 20 THEN hlay = hlay + 1: ' SOUND 1000, 1 + +s1 = SIN(hlka) +c1 = COS(hlka) +FOR a = 0 TO hlknu - 5 +x = hlkx(a + 1) +z = hlkz(a + 1) +px(a + hlkin) = x * s1 + z * c1 + hlax +py(a + hlkin) = hlky(a + 1) - hlay +pz(a + hlkin) = z * s1 - x * c1 + hlaz +NEXT a + +hlkr = hlkr + .5 +s1 = SIN(hlkr) +c1 = COS(hlkr) +FOR a = hlknu - 4 TO hlknu - 1 +x = hlkx(a + 1) +z = hlkz(a + 1) +px(a + hlkin) = x * s1 + z * c1 + hlax +py(a + hlkin) = hlky(a + 1) - hlay +pz(a + hlkin) = z * s1 - x * c1 + hlaz +NEXT a + +tim = tim + 1 + +an1 = an1 + SIN(tim / 100) / 20 +an2 = SIN(tim / 42) * .3 + 1.15 + +s1 = SIN(an1) +c1 = COS(an1) +s2 = SIN(an2) +c2 = COS(an2) + +FOR a = 0 TO np +x = px(a) - mx +y = py(a) - my +z = pz(a) - mz + +z2 = z * s1 + x * c1 +x1 = x * s1 - z * c1 + +z1 = z2 * s2 + y * c2 +y1 = y * s2 - z2 * c2 + + +z1 = z1 + kau +IF z1 < 1 THEN px1(a) = -1: GOTO 11 +x1 = x1 / z1 * 74 * 2 +y1 = y1 / z1 * 65 * 2 + +px1(a) = x1 + 160 +py1(a) = y1 + 80 +11 +NEXT a + +FOR a = 1 TO nl +l1 = lin1!(a) +l2 = lin2!(a) +x1 = px1(l1) +x2 = px1(l2) +LINE (lbx1(a), lby1(a))-(lbx2(a), lby2(a)), 0 +IF (x1 = -1) OR (x2 = -1) THEN GOTO 12 +y1 = py1(l1) +y2 = py1(l2) +LINE (x1, y1)-(x2, y2), linc(a) +lbx1(a) = x1 +lby1(a) = y1 +lbx2(a) = x2 +lby2(a) = y2 +12 +NEXT a +IF kau > 200 THEN kau = kau - 10 +IF tim < 28000 THEN GOTO 10 +13 +END SUB + +SUB sc9 +RANDOMIZE 45 +mkback + +box 30, 50, 290, 80 + +pal 32, 64, 32, 250 +y = -8 +pri 30, 70 + y, 1, 250, " T�nan t�helepanu eest" +inpur + + + +END SUB + +SUB start +SCREEN 13 +pi = 3.141592 +pii = pi +fac = 360 / (pi * 2) +getfnt +END SUB + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/CAT.I01 b/graphics/presentations/KHK Intellektika 2004 demo/CAT.I01 new file mode 100755 index 0000000..eb828e6 --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/CAT.I01 @@ -0,0 +1,32222 @@ + 179 + 180 + 0 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 1 + 6 + 37 + 0 + 0 + 43 + 1 + 43 + 43 + 44 + 86 + 86 + 123 + 129 + 93 + 165 + 129 + 136 + 165 + 172 + 129 + 136 + 165 + 136 + 165 + 172 + 173 + 178 + 208 + 172 + 215 + 172 + 208 + 214 + 173 + 208 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 159 + 135 + 123 + 93 + 122 + 129 + 122 + 93 + 159 + 129 + 135 + 166 + 165 + 136 + 165 + 130 + 135 + 165 + 130 + 129 + 129 + 129 + 129 + 93 + 122 + 93 + 129 + 122 + 87 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 86 + 43 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 87 + 128 + 86 + 129 + 123 + 129 + 129 + 122 + 129 + 86 + 79 + 86 + 43 + 86 + 43 + 43 + 79 + 43 + 43 + 37 + 43 + 85 + 86 + 122 + 87 + 128 + 87 + 80 + 85 + 44 + 79 + 49 + 80 + 86 + 85 + 80 + 86 + 80 + 85 + 80 + 86 + 86 + 79 + 86 + 79 + 43 + 43 + 43 + 43 + 44 + 86 + 92 + 171 + 136 + 173 + 178 + 173 + 215 + 178 + 137 + 178 + 173 + 178 + 173 + 172 + 178 + 173 + 178 + 173 + 172 + 179 + 172 + 179 + 36 + 0 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 0 + 7 + 0 + 0 + 1 + 36 + 0 + 1 + 6 + 37 + 7 + 36 + 44 + 86 + 122 + 87 + 122 + 129 + 129 + 172 + 172 + 165 + 136 + 129 + 171 + 136 + 166 + 178 + 209 + 172 + 208 + 179 + 172 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 129 + 129 + 130 + 164 + 93 + 123 + 129 + 128 + 87 + 122 + 86 + 129 + 87 + 128 + 130 + 171 + 130 + 171 + 166 + 135 + 166 + 129 + 171 + 130 + 129 + 129 + 129 + 129 + 129 + 87 + 128 + 87 + 129 + 86 + 129 + 86 + 123 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 79 + 44 + 86 + 128 + 87 + 93 + 128 + 123 + 128 + 123 + 129 + 165 + 136 + 123 + 128 + 86 + 86 + 86 + 80 + 85 + 44 + 79 + 43 + 43 + 43 + 43 + 43 + 79 + 86 + 123 + 92 + 86 + 86 + 86 + 80 + 85 + 43 + 43 + 44 + 79 + 86 + 79 + 85 + 44 + 79 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 43 + 43 + 43 + 49 + 87 + 129 + 129 + 178 + 173 + 178 + 136 + 215 + 143 + 172 + 172 + 178 + 172 + 143 + 172 + 179 + 172 + 179 + 172 + 173 + 178 + 209 + 178 + 1 + 0 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 0 + 37 + 0 + 0 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 0 + 0 + 43 + 43 + 36 + 44 + 49 + 116 + 92 + 123 + 128 + 130 + 165 + 172 + 130 + 171 + 129 + 172 + 130 + 178 + 172 + 208 + 173 + 172 + 215 + 172 + 214 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 130 + 122 + 93 + 129 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 172 + 166 + 172 + 135 + 166 + 135 + 165 + 130 + 129 + 129 + 129 + 130 + 128 + 129 + 87 + 129 + 128 + 87 + 86 + 129 + 85 + 93 + 122 + 86 + 86 + 43 + 50 + 79 + 86 + 87 + 86 + 128 + 93 + 128 + 129 + 123 + 129 + 136 + 165 + 129 + 165 + 129 + 129 + 87 + 122 + 86 + 85 + 44 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 128 + 87 + 86 + 122 + 50 + 79 + 43 + 43 + 86 + 43 + 43 + 80 + 79 + 79 + 50 + 79 + 86 + 79 + 43 + 79 + 43 + 79 + 43 + 7 + 43 + 44 + 50 + 85 + 166 + 135 + 172 + 178 + 173 + 179 + 177 + 173 + 178 + 137 + 178 + 173 + 178 + 136 + 178 + 173 + 178 + 172 + 173 + 177 + 173 + 178 + 1 + 36 + 0 + 0 + 1 + 0 + 0 + 43 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 7 + 0 + 37 + 42 + 43 + 80 + 86 + 128 + 87 + 128 + 165 + 130 + 171 + 166 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 179 + 172 + 172 + 173 + 178 + 171 + 166 + 172 + 136 + 165 + 86 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 85 + 44 + 86 + 86 + 86 + 86 + 129 + 129 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 136 + 165 + 129 + 129 + 130 + 129 + 129 + 92 + 123 + 129 + 92 + 122 + 93 + 122 + 87 + 129 + 86 + 86 + 43 + 86 + 93 + 122 + 93 + 122 + 93 + 122 + 129 + 129 + 129 + 171 + 165 + 130 + 171 + 129 + 123 + 129 + 129 + 86 + 86 + 79 + 50 + 80 + 49 + 80 + 43 + 43 + 7 + 43 + 79 + 86 + 86 + 86 + 87 + 86 + 85 + 44 + 79 + 43 + 7 + 50 + 79 + 79 + 43 + 86 + 79 + 79 + 44 + 79 + 43 + 79 + 43 + 44 + 43 + 6 + 44 + 49 + 80 + 93 + 129 + 172 + 178 + 136 + 178 + 173 + 178 + 173 + 179 + 172 + 179 + 172 + 172 + 143 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 179 + 0 + 36 + 1 + 0 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 43 + 43 + 86 + 122 + 123 + 129 + 128 + 129 + 130 + 165 + 172 + 129 + 172 + 171 + 172 + 173 + 172 + 178 + 172 + 172 + 173 + 208 + 171 + 172 + 172 + 129 + 130 + 129 + 129 + 86 + 86 + 86 + 50 + 80 + 85 + 43 + 86 + 43 + 43 + 80 + 49 + 80 + 86 + 93 + 122 + 136 + 171 + 166 + 171 + 172 + 172 + 136 + 166 + 171 + 136 + 165 + 136 + 129 + 165 + 136 + 129 + 129 + 129 + 129 + 123 + 129 + 93 + 122 + 129 + 93 + 122 + 86 + 86 + 86 + 86 + 87 + 129 + 129 + 128 + 87 + 129 + 129 + 129 + 129 + 172 + 165 + 136 + 159 + 128 + 129 + 129 + 129 + 123 + 85 + 44 + 86 + 85 + 80 + 50 + 43 + 43 + 37 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 43 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 79 + 43 + 79 + 44 + 43 + 49 + 43 + 43 + 43 + 50 + 86 + 129 + 136 + 135 + 209 + 179 + 172 + 179 + 179 + 172 + 179 + 171 + 179 + 172 + 172 + 179 + 172 + 179 + 172 + 179 + 209 + 178 + 179 + 172 + 1 + 36 + 6 + 1 + 0 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 43 + 37 + 43 + 86 + 122 + 129 + 129 + 128 + 123 + 172 + 129 + 172 + 129 + 136 + 171 + 209 + 172 + 214 + 172 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 124 + 128 + 93 + 86 + 87 + 85 + 80 + 43 + 50 + 79 + 43 + 50 + 43 + 43 + 37 + 49 + 86 + 87 + 128 + 87 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 166 + 172 + 172 + 135 + 166 + 135 + 166 + 135 + 165 + 129 + 129 + 135 + 129 + 123 + 129 + 129 + 129 + 86 + 87 + 128 + 86 + 86 + 86 + 93 + 128 + 123 + 93 + 129 + 128 + 130 + 129 + 129 + 165 + 129 + 166 + 129 + 128 + 123 + 129 + 129 + 86 + 122 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 43 + 43 + 86 + 79 + 50 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 79 + 43 + 43 + 44 + 79 + 43 + 86 + 43 + 43 + 44 + 49 + 44 + 87 + 128 + 135 + 136 + 172 + 215 + 172 + 179 + 173 + 178 + 173 + 178 + 209 + 178 + 173 + 172 + 178 + 173 + 179 + 214 + 173 + 178 + 209 + 179 + 214 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 0 + 0 + 1 + 6 + 0 + 37 + 0 + 0 + 1 + 42 + 43 + 43 + 79 + 86 + 86 + 123 + 129 + 129 + 165 + 129 + 165 + 136 + 165 + 136 + 172 + 172 + 209 + 178 + 172 + 173 + 172 + 171 + 172 + 172 + 130 + 165 + 93 + 86 + 122 + 86 + 86 + 50 + 79 + 43 + 44 + 49 + 43 + 44 + 42 + 43 + 37 + 50 + 86 + 122 + 93 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 165 + 136 + 165 + 136 + 129 + 129 + 129 + 130 + 165 + 92 + 129 + 129 + 86 + 122 + 92 + 87 + 128 + 86 + 86 + 87 + 128 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 128 + 130 + 128 + 129 + 123 + 129 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 1 + 43 + 43 + 85 + 44 + 85 + 44 + 86 + 86 + 43 + 44 + 42 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 79 + 43 + 44 + 49 + 49 + 86 + 87 + 129 + 135 + 172 + 173 + 178 + 173 + 178 + 173 + 179 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 214 + 173 + 215 + 172 + 214 + 215 + 173 + 214 + 0 + 1 + 0 + 42 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 43 + 7 + 79 + 44 + 86 + 122 + 86 + 122 + 129 + 86 + 129 + 165 + 136 + 165 + 129 + 130 + 171 + 172 + 179 + 172 + 208 + 172 + 172 + 172 + 136 + 129 + 123 + 128 + 93 + 122 + 87 + 85 + 86 + 86 + 50 + 49 + 79 + 44 + 85 + 44 + 85 + 43 + 44 + 86 + 122 + 93 + 128 + 129 + 130 + 171 + 172 + 130 + 172 + 172 + 178 + 166 + 172 + 172 + 171 + 172 + 130 + 165 + 135 + 130 + 129 + 129 + 129 + 129 + 165 + 130 + 129 + 129 + 92 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 129 + 92 + 123 + 129 + 92 + 123 + 129 + 129 + 129 + 129 + 122 + 165 + 93 + 122 + 86 + 86 + 86 + 86 + 44 + 79 + 43 + 7 + 43 + 36 + 7 + 43 + 80 + 49 + 80 + 50 + 85 + 80 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 1 + 49 + 43 + 43 + 43 + 44 + 43 + 79 + 50 + 80 + 50 + 128 + 93 + 166 + 136 + 172 + 172 + 179 + 214 + 173 + 179 + 208 + 179 + 178 + 209 + 179 + 172 + 179 + 179 + 208 + 179 + 208 + 215 + 179 + 209 + 214 + 209 + 179 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 36 + 0 + 1 + 42 + 1 + 43 + 43 + 86 + 86 + 122 + 129 + 123 + 128 + 93 + 159 + 129 + 129 + 135 + 166 + 129 + 136 + 165 + 172 + 172 + 135 + 166 + 171 + 130 + 172 + 129 + 86 + 129 + 86 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 43 + 86 + 86 + 50 + 79 + 50 + 86 + 123 + 92 + 123 + 129 + 172 + 136 + 171 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 165 + 136 + 129 + 129 + 129 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 122 + 86 + 93 + 86 + 123 + 86 + 92 + 129 + 122 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 80 + 86 + 50 + 43 + 43 + 43 + 43 + 37 + 7 + 43 + 79 + 49 + 44 + 86 + 86 + 44 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 6 + 44 + 43 + 79 + 49 + 86 + 50 + 86 + 92 + 130 + 129 + 171 + 136 + 172 + 179 + 208 + 179 + 173 + 214 + 173 + 214 + 173 + 214 + 173 + 214 + 172 + 178 + 209 + 178 + 209 + 214 + 215 + 209 + 178 + 209 + 214 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 7 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 37 + 6 + 43 + 80 + 86 + 122 + 136 + 159 + 128 + 129 + 129 + 129 + 165 + 129 + 130 + 129 + 129 + 129 + 129 + 136 + 165 + 130 + 135 + 165 + 130 + 128 + 87 + 122 + 92 + 86 + 86 + 86 + 129 + 87 + 128 + 129 + 87 + 85 + 86 + 86 + 86 + 80 + 50 + 122 + 93 + 123 + 128 + 130 + 171 + 136 + 172 + 166 + 172 + 135 + 172 + 172 + 166 + 172 + 171 + 172 + 135 + 166 + 135 + 130 + 165 + 129 + 129 + 136 + 129 + 129 + 166 + 129 + 93 + 122 + 92 + 123 + 93 + 122 + 93 + 86 + 122 + 86 + 86 + 86 + 93 + 122 + 86 + 129 + 129 + 86 + 129 + 123 + 86 + 128 + 86 + 122 + 87 + 85 + 80 + 50 + 43 + 86 + 43 + 37 + 43 + 42 + 44 + 43 + 49 + 80 + 50 + 86 + 86 + 50 + 79 + 44 + 43 + 43 + 43 + 49 + 44 + 43 + 44 + 13 + 80 + 50 + 86 + 86 + 92 + 129 + 130 + 135 + 172 + 172 + 172 + 178 + 173 + 179 + 208 + 179 + 172 + 215 + 172 + 215 + 172 + 179 + 215 + 172 + 214 + 173 + 215 + 214 + 209 + 214 + 173 + 215 + 214 + 209 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 43 + 1 + 0 + 43 + 6 + 1 + 36 + 0 + 1 + 0 + 7 + 36 + 7 + 37 + 6 + 37 + 43 + 43 + 43 + 122 + 129 + 129 + 165 + 129 + 129 + 165 + 128 + 129 + 87 + 129 + 129 + 128 + 124 + 129 + 135 + 129 + 129 + 129 + 130 + 128 + 87 + 122 + 93 + 123 + 92 + 129 + 129 + 129 + 130 + 165 + 129 + 93 + 85 + 129 + 87 + 85 + 92 + 123 + 92 + 129 + 123 + 135 + 166 + 172 + 171 + 136 + 172 + 166 + 136 + 171 + 166 + 172 + 172 + 172 + 136 + 165 + 172 + 129 + 136 + 129 + 165 + 130 + 135 + 165 + 130 + 135 + 123 + 92 + 129 + 128 + 87 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 92 + 123 + 93 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 123 + 122 + 86 + 50 + 86 + 79 + 50 + 43 + 80 + 43 + 43 + 7 + 43 + 79 + 43 + 86 + 50 + 86 + 122 + 50 + 86 + 43 + 86 + 44 + 86 + 49 + 49 + 86 + 49 + 79 + 50 + 86 + 92 + 129 + 129 + 130 + 135 + 179 + 172 + 208 + 179 + 172 + 179 + 209 + 178 + 179 + 208 + 179 + 208 + 214 + 173 + 215 + 208 + 179 + 215 + 208 + 215 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 0 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 0 + 43 + 1 + 42 + 1 + 0 + 43 + 0 + 0 + 1 + 43 + 42 + 1 + 43 + 37 + 6 + 37 + 43 + 85 + 123 + 92 + 165 + 123 + 129 + 129 + 129 + 129 + 86 + 128 + 87 + 86 + 128 + 87 + 129 + 129 + 122 + 93 + 129 + 128 + 87 + 129 + 129 + 128 + 129 + 130 + 129 + 171 + 129 + 172 + 129 + 129 + 129 + 123 + 93 + 128 + 123 + 93 + 122 + 129 + 129 + 129 + 172 + 172 + 172 + 135 + 166 + 136 + 166 + 171 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 165 + 135 + 130 + 165 + 135 + 130 + 165 + 136 + 129 + 123 + 92 + 130 + 128 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 128 + 87 + 129 + 86 + 122 + 129 + 86 + 122 + 86 + 87 + 128 + 86 + 80 + 86 + 85 + 44 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 86 + 87 + 128 + 87 + 92 + 93 + 129 + 93 + 129 + 136 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 209 + 178 + 215 + 173 + 178 + 209 + 172 + 215 + 208 + 178 + 215 + 209 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 209 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 43 + 0 + 43 + 43 + 0 + 1 + 0 + 43 + 0 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 6 + 37 + 43 + 79 + 86 + 122 + 129 + 86 + 129 + 129 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 86 + 86 + 87 + 128 + 92 + 123 + 129 + 93 + 129 + 165 + 135 + 166 + 136 + 171 + 130 + 165 + 172 + 135 + 166 + 135 + 123 + 93 + 128 + 129 + 123 + 129 + 92 + 130 + 129 + 172 + 171 + 130 + 172 + 165 + 136 + 171 + 130 + 172 + 165 + 172 + 136 + 171 + 172 + 166 + 135 + 130 + 165 + 135 + 130 + 129 + 171 + 130 + 165 + 129 + 93 + 129 + 129 + 122 + 129 + 93 + 122 + 87 + 86 + 128 + 87 + 86 + 129 + 86 + 122 + 87 + 92 + 122 + 122 + 87 + 128 + 86 + 86 + 80 + 86 + 85 + 87 + 43 + 86 + 44 + 85 + 43 + 43 + 43 + 43 + 43 + 49 + 87 + 86 + 129 + 86 + 92 + 86 + 86 + 129 + 92 + 86 + 129 + 100 + 165 + 136 + 136 + 130 + 178 + 135 + 173 + 172 + 179 + 178 + 215 + 173 + 178 + 179 + 209 + 214 + 179 + 173 + 214 + 208 + 214 + 173 + 214 + 215 + 209 + 215 + 215 + 209 + 179 + 214 + 209 + 214 + 208 + 215 + 214 + 209 + 43 + 36 + 1 + 6 + 37 + 6 + 43 + 37 + 43 + 7 + 36 + 7 + 37 + 42 + 37 + 43 + 79 + 43 + 49 + 43 + 79 + 44 + 36 + 43 + 43 + 79 + 86 + 86 + 122 + 129 + 123 + 129 + 129 + 129 + 129 + 86 + 86 + 85 + 44 + 86 + 87 + 85 + 86 + 87 + 123 + 128 + 129 + 129 + 130 + 171 + 135 + 166 + 172 + 130 + 171 + 172 + 130 + 171 + 130 + 129 + 171 + 130 + 129 + 129 + 129 + 92 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 166 + 129 + 135 + 172 + 130 + 171 + 172 + 172 + 165 + 136 + 129 + 129 + 166 + 135 + 130 + 171 + 129 + 130 + 128 + 123 + 129 + 129 + 129 + 93 + 123 + 128 + 93 + 122 + 87 + 128 + 86 + 86 + 86 + 129 + 86 + 122 + 93 + 123 + 128 + 122 + 86 + 80 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 49 + 81 + 92 + 93 + 86 + 129 + 92 + 129 + 93 + 129 + 129 + 136 + 129 + 137 + 172 + 177 + 137 + 178 + 173 + 179 + 214 + 173 + 179 + 179 + 208 + 179 + 179 + 172 + 215 + 179 + 178 + 209 + 179 + 208 + 215 + 214 + 209 + 179 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 215 + 214 + 209 + 79 + 43 + 0 + 43 + 0 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 79 + 49 + 43 + 80 + 43 + 79 + 79 + 44 + 43 + 42 + 43 + 37 + 43 + 85 + 80 + 129 + 86 + 129 + 122 + 129 + 86 + 165 + 87 + 128 + 44 + 86 + 79 + 87 + 86 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 130 + 172 + 171 + 172 + 130 + 171 + 172 + 172 + 129 + 130 + 135 + 165 + 130 + 129 + 129 + 135 + 165 + 129 + 87 + 171 + 130 + 171 + 130 + 171 + 172 + 130 + 171 + 129 + 165 + 136 + 129 + 172 + 166 + 172 + 135 + 166 + 135 + 129 + 130 + 129 + 129 + 166 + 135 + 165 + 93 + 129 + 122 + 93 + 129 + 129 + 122 + 135 + 123 + 93 + 128 + 87 + 128 + 87 + 122 + 93 + 122 + 86 + 129 + 129 + 122 + 87 + 128 + 86 + 122 + 44 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 80 + 43 + 7 + 43 + 43 + 49 + 86 + 129 + 87 + 92 + 136 + 165 + 135 + 172 + 136 + 172 + 179 + 179 + 172 + 179 + 215 + 179 + 179 + 178 + 215 + 179 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 215 + 209 + 214 + 209 + 215 + 214 + 215 + 209 + 215 + 215 + 208 + 215 + 215 + 214 + 209 + 214 + 215 + 214 + 79 + 37 + 7 + 43 + 0 + 37 + 6 + 43 + 80 + 43 + 43 + 86 + 43 + 43 + 86 + 43 + 43 + 79 + 80 + 43 + 43 + 42 + 37 + 43 + 43 + 79 + 86 + 122 + 129 + 86 + 86 + 123 + 128 + 87 + 129 + 86 + 80 + 86 + 50 + 122 + 86 + 93 + 122 + 87 + 129 + 92 + 165 + 130 + 129 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 165 + 129 + 129 + 136 + 164 + 130 + 129 + 172 + 135 + 130 + 165 + 129 + 136 + 165 + 172 + 136 + 171 + 166 + 136 + 165 + 136 + 165 + 129 + 130 + 171 + 136 + 172 + 165 + 130 + 129 + 135 + 129 + 130 + 129 + 171 + 129 + 129 + 129 + 122 + 93 + 122 + 129 + 93 + 128 + 129 + 129 + 93 + 123 + 128 + 87 + 129 + 86 + 129 + 122 + 129 + 129 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 79 + 86 + 86 + 86 + 50 + 86 + 43 + 43 + 43 + 44 + 43 + 85 + 86 + 93 + 86 + 93 + 129 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 179 + 215 + 179 + 214 + 179 + 215 + 178 + 179 + 179 + 208 + 179 + 179 + 209 + 178 + 179 + 209 + 178 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 179 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 208 + 215 + 79 + 43 + 43 + 0 + 1 + 42 + 43 + 43 + 43 + 80 + 43 + 86 + 43 + 43 + 79 + 43 + 79 + 50 + 79 + 44 + 43 + 43 + 42 + 79 + 43 + 80 + 85 + 87 + 86 + 122 + 128 + 87 + 123 + 128 + 129 + 87 + 86 + 86 + 86 + 87 + 122 + 93 + 87 + 123 + 86 + 129 + 129 + 129 + 136 + 165 + 172 + 172 + 171 + 172 + 172 + 135 + 172 + 166 + 135 + 129 + 166 + 135 + 166 + 171 + 136 + 166 + 171 + 135 + 166 + 135 + 172 + 172 + 165 + 136 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 123 + 135 + 129 + 129 + 130 + 171 + 87 + 128 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 129 + 129 + 123 + 92 + 129 + 123 + 128 + 123 + 93 + 122 + 86 + 129 + 86 + 122 + 86 + 86 + 80 + 49 + 122 + 86 + 50 + 86 + 44 + 43 + 79 + 50 + 43 + 44 + 43 + 86 + 93 + 86 + 129 + 135 + 130 + 178 + 172 + 173 + 179 + 214 + 179 + 215 + 179 + 209 + 179 + 215 + 179 + 178 + 209 + 179 + 179 + 208 + 179 + 178 + 209 + 179 + 214 + 173 + 215 + 214 + 215 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 215 + 208 + 214 + 215 + 215 + 215 + 208 + 215 + 79 + 43 + 43 + 43 + 0 + 1 + 42 + 43 + 44 + 43 + 50 + 79 + 86 + 36 + 43 + 79 + 44 + 85 + 44 + 85 + 79 + 44 + 79 + 85 + 43 + 43 + 80 + 86 + 86 + 122 + 129 + 87 + 128 + 123 + 129 + 87 + 92 + 86 + 123 + 93 + 129 + 165 + 130 + 86 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 172 + 173 + 171 + 172 + 136 + 166 + 171 + 136 + 172 + 171 + 166 + 172 + 129 + 172 + 129 + 129 + 129 + 166 + 136 + 165 + 135 + 130 + 129 + 129 + 165 + 129 + 129 + 130 + 135 + 123 + 92 + 129 + 86 + 129 + 87 + 128 + 129 + 87 + 128 + 129 + 129 + 129 + 123 + 129 + 93 + 129 + 122 + 86 + 122 + 86 + 129 + 86 + 86 + 86 + 116 + 85 + 86 + 86 + 86 + 50 + 80 + 86 + 43 + 50 + 43 + 43 + 43 + 44 + 85 + 87 + 129 + 129 + 136 + 136 + 208 + 172 + 179 + 179 + 214 + 215 + 179 + 215 + 215 + 179 + 215 + 172 + 215 + 179 + 214 + 173 + 215 + 172 + 215 + 214 + 173 + 215 + 208 + 179 + 215 + 215 + 215 + 209 + 214 + 215 + 215 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 214 + 215 + 79 + 43 + 43 + 43 + 1 + 43 + 36 + 7 + 43 + 80 + 49 + 79 + 44 + 49 + 79 + 44 + 79 + 86 + 79 + 50 + 79 + 79 + 43 + 50 + 79 + 43 + 80 + 85 + 123 + 92 + 123 + 122 + 129 + 86 + 129 + 129 + 123 + 93 + 122 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 171 + 166 + 136 + 171 + 172 + 136 + 166 + 172 + 172 + 178 + 166 + 172 + 171 + 130 + 129 + 172 + 171 + 172 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 172 + 171 + 136 + 166 + 135 + 165 + 135 + 130 + 129 + 165 + 136 + 129 + 129 + 122 + 136 + 129 + 129 + 129 + 123 + 129 + 128 + 87 + 129 + 86 + 87 + 128 + 86 + 86 + 129 + 92 + 166 + 129 + 93 + 122 + 92 + 123 + 92 + 123 + 86 + 122 + 86 + 122 + 86 + 86 + 86 + 123 + 86 + 86 + 85 + 50 + 80 + 86 + 43 + 50 + 37 + 43 + 7 + 42 + 44 + 49 + 93 + 129 + 129 + 130 + 171 + 142 + 209 + 179 + 214 + 179 + 209 + 215 + 215 + 179 + 215 + 179 + 215 + 178 + 209 + 179 + 214 + 208 + 179 + 214 + 209 + 179 + 214 + 215 + 208 + 215 + 215 + 215 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 215 + 214 + 215 + 208 + 215 + 214 + 209 + 86 + 79 + 86 + 43 + 0 + 7 + 36 + 43 + 43 + 43 + 43 + 44 + 79 + 43 + 43 + 85 + 44 + 79 + 86 + 79 + 50 + 79 + 44 + 43 + 79 + 49 + 80 + 122 + 92 + 123 + 129 + 128 + 123 + 86 + 123 + 92 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 129 + 172 + 130 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 172 + 136 + 166 + 214 + 173 + 214 + 172 + 172 + 172 + 135 + 173 + 172 + 172 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 129 + 172 + 129 + 129 + 92 + 165 + 129 + 93 + 129 + 123 + 129 + 129 + 86 + 93 + 122 + 93 + 122 + 86 + 92 + 123 + 93 + 122 + 129 + 93 + 129 + 122 + 87 + 128 + 123 + 128 + 87 + 86 + 86 + 85 + 122 + 86 + 87 + 86 + 86 + 80 + 85 + 50 + 80 + 85 + 43 + 7 + 37 + 7 + 43 + 43 + 50 + 122 + 93 + 129 + 136 + 171 + 173 + 172 + 179 + 215 + 215 + 173 + 215 + 214 + 179 + 215 + 215 + 172 + 215 + 215 + 215 + 208 + 179 + 208 + 215 + 179 + 208 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 178 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 79 + 86 + 43 + 79 + 43 + 1 + 43 + 0 + 43 + 43 + 7 + 43 + 79 + 43 + 43 + 79 + 44 + 85 + 80 + 85 + 44 + 79 + 86 + 79 + 43 + 80 + 85 + 87 + 128 + 129 + 123 + 129 + 122 + 93 + 122 + 86 + 129 + 123 + 130 + 129 + 129 + 130 + 135 + 166 + 135 + 166 + 172 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 166 + 136 + 172 + 172 + 171 + 166 + 172 + 135 + 172 + 171 + 173 + 208 + 179 + 172 + 208 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 166 + 135 + 129 + 166 + 135 + 129 + 130 + 128 + 129 + 129 + 130 + 129 + 123 + 128 + 93 + 128 + 86 + 87 + 128 + 87 + 122 + 93 + 86 + 122 + 93 + 123 + 128 + 93 + 123 + 92 + 123 + 129 + 122 + 93 + 86 + 116 + 85 + 87 + 122 + 86 + 86 + 86 + 79 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 42 + 44 + 49 + 86 + 130 + 129 + 135 + 172 + 136 + 208 + 179 + 214 + 209 + 215 + 215 + 179 + 215 + 215 + 172 + 215 + 215 + 209 + 178 + 215 + 208 + 214 + 209 + 179 + 208 + 215 + 214 + 209 + 214 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 79 + 43 + 43 + 80 + 49 + 37 + 43 + 6 + 37 + 7 + 43 + 43 + 43 + 79 + 43 + 43 + 86 + 79 + 80 + 85 + 86 + 86 + 80 + 86 + 85 + 80 + 86 + 86 + 128 + 87 + 165 + 86 + 123 + 128 + 87 + 129 + 124 + 128 + 93 + 166 + 129 + 129 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 129 + 172 + 166 + 172 + 178 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 171 + 172 + 136 + 165 + 166 + 135 + 129 + 129 + 165 + 135 + 129 + 123 + 93 + 129 + 129 + 129 + 122 + 93 + 129 + 122 + 93 + 123 + 92 + 123 + 86 + 86 + 123 + 91 + 87 + 92 + 123 + 92 + 129 + 86 + 129 + 123 + 128 + 86 + 86 + 86 + 116 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 44 + 86 + 43 + 43 + 43 + 7 + 37 + 6 + 44 + 86 + 92 + 128 + 130 + 135 + 172 + 172 + 173 + 178 + 209 + 215 + 178 + 209 + 215 + 214 + 215 + 179 + 209 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 208 + 215 + 208 + 172 + 215 + 209 + 178 + 209 + 214 + 209 + 215 + 214 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 79 + 43 + 43 + 44 + 79 + 43 + 7 + 43 + 43 + 1 + 43 + 43 + 79 + 49 + 79 + 80 + 49 + 86 + 80 + 86 + 85 + 86 + 116 + 86 + 86 + 86 + 122 + 86 + 87 + 128 + 123 + 128 + 86 + 123 + 86 + 92 + 123 + 129 + 87 + 129 + 165 + 130 + 136 + 165 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 172 + 166 + 136 + 165 + 136 + 171 + 172 + 172 + 172 + 171 + 130 + 172 + 171 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 136 + 122 + 123 + 135 + 123 + 92 + 129 + 123 + 93 + 122 + 93 + 122 + 93 + 122 + 93 + 86 + 86 + 86 + 86 + 122 + 93 + 128 + 87 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 86 + 85 + 80 + 50 + 86 + 86 + 44 + 79 + 43 + 43 + 7 + 43 + 0 + 50 + 86 + 86 + 129 + 130 + 135 + 172 + 172 + 173 + 172 + 214 + 215 + 173 + 214 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 178 + 209 + 214 + 209 + 215 + 208 + 179 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 79 + 43 + 43 + 44 + 79 + 50 + 43 + 36 + 43 + 43 + 43 + 44 + 85 + 44 + 85 + 80 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 86 + 122 + 122 + 93 + 122 + 86 + 122 + 86 + 44 + 86 + 87 + 122 + 93 + 129 + 129 + 130 + 171 + 130 + 166 + 171 + 136 + 166 + 135 + 166 + 129 + 136 + 165 + 172 + 136 + 172 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 172 + 178 + 173 + 208 + 172 + 178 + 166 + 136 + 172 + 172 + 165 + 172 + 136 + 165 + 135 + 130 + 129 + 129 + 129 + 130 + 128 + 92 + 123 + 92 + 129 + 128 + 87 + 93 + 85 + 129 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 93 + 86 + 86 + 128 + 87 + 86 + 129 + 122 + 86 + 87 + 128 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 1 + 43 + 7 + 43 + 86 + 86 + 129 + 135 + 172 + 130 + 178 + 172 + 172 + 215 + 208 + 179 + 215 + 209 + 214 + 215 + 209 + 215 + 215 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 178 + 209 + 214 + 209 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 214 + 214 + 209 + 86 + 79 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 43 + 43 + 79 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 129 + 129 + 122 + 129 + 86 + 80 + 85 + 86 + 86 + 87 + 123 + 129 + 129 + 136 + 165 + 130 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 172 + 129 + 172 + 172 + 171 + 130 + 165 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 178 + 172 + 172 + 172 + 172 + 172 + 171 + 130 + 172 + 172 + 129 + 136 + 129 + 129 + 129 + 129 + 130 + 92 + 87 + 129 + 92 + 123 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 93 + 86 + 86 + 50 + 86 + 86 + 86 + 86 + 50 + 87 + 86 + 87 + 128 + 86 + 87 + 122 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 129 + 136 + 165 + 172 + 172 + 172 + 178 + 209 + 215 + 172 + 215 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 179 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 123 + 92 + 86 + 80 + 50 + 79 + 43 + 43 + 43 + 43 + 44 + 49 + 80 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 128 + 87 + 122 + 86 + 86 + 80 + 122 + 86 + 86 + 122 + 129 + 86 + 86 + 86 + 80 + 86 + 43 + 129 + 86 + 130 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 136 + 129 + 165 + 129 + 136 + 166 + 135 + 172 + 172 + 166 + 135 + 130 + 165 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 171 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 129 + 136 + 123 + 93 + 129 + 86 + 94 + 122 + 93 + 87 + 92 + 123 + 50 + 86 + 86 + 44 + 50 + 86 + 86 + 50 + 86 + 80 + 50 + 87 + 86 + 86 + 50 + 86 + 86 + 50 + 86 + 87 + 128 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 50 + 80 + 50 + 43 + 79 + 44 + 43 + 43 + 44 + 43 + 43 + 43 + 86 + 128 + 129 + 130 + 172 + 171 + 173 + 172 + 172 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 208 + 214 + 123 + 128 + 86 + 86 + 50 + 80 + 43 + 43 + 43 + 43 + 85 + 44 + 86 + 43 + 122 + 86 + 86 + 129 + 86 + 123 + 128 + 86 + 123 + 86 + 122 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 123 + 85 + 44 + 86 + 86 + 87 + 128 + 129 + 124 + 135 + 166 + 130 + 171 + 130 + 171 + 129 + 172 + 129 + 130 + 171 + 172 + 136 + 165 + 136 + 165 + 172 + 136 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 172 + 172 + 172 + 129 + 135 + 130 + 165 + 129 + 129 + 93 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 87 + 43 + 86 + 44 + 43 + 50 + 43 + 44 + 86 + 43 + 86 + 44 + 49 + 86 + 44 + 50 + 86 + 43 + 87 + 86 + 50 + 86 + 122 + 87 + 86 + 86 + 86 + 122 + 86 + 50 + 86 + 43 + 79 + 86 + 44 + 85 + 80 + 50 + 44 + 79 + 43 + 43 + 44 + 43 + 43 + 86 + 93 + 165 + 129 + 136 + 165 + 172 + 179 + 208 + 172 + 214 + 209 + 173 + 214 + 209 + 214 + 173 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 214 + 214 + 208 + 208 + 214 + 87 + 129 + 79 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 44 + 86 + 85 + 86 + 87 + 122 + 129 + 122 + 93 + 122 + 129 + 86 + 122 + 87 + 122 + 85 + 86 + 123 + 86 + 122 + 87 + 128 + 86 + 44 + 86 + 86 + 128 + 123 + 93 + 130 + 165 + 136 + 165 + 130 + 135 + 129 + 165 + 130 + 172 + 135 + 166 + 172 + 172 + 171 + 130 + 172 + 171 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 172 + 166 + 136 + 165 + 172 + 135 + 166 + 129 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 51 + 86 + 86 + 86 + 44 + 50 + 79 + 43 + 44 + 43 + 7 + 43 + 44 + 49 + 44 + 43 + 43 + 50 + 43 + 44 + 43 + 49 + 44 + 43 + 86 + 50 + 80 + 86 + 92 + 86 + 87 + 128 + 86 + 86 + 50 + 80 + 86 + 44 + 85 + 80 + 50 + 86 + 80 + 49 + 44 + 79 + 44 + 43 + 43 + 43 + 86 + 92 + 166 + 129 + 129 + 136 + 171 + 173 + 214 + 173 + 208 + 214 + 173 + 208 + 214 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 208 + 214 + 208 + 87 + 85 + 80 + 49 + 44 + 79 + 50 + 43 + 79 + 44 + 49 + 80 + 50 + 85 + 116 + 87 + 128 + 87 + 128 + 123 + 128 + 87 + 122 + 92 + 122 + 87 + 86 + 122 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 80 + 93 + 87 + 129 + 130 + 165 + 130 + 171 + 129 + 130 + 129 + 129 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 171 + 136 + 172 + 129 + 129 + 130 + 128 + 123 + 86 + 93 + 86 + 86 + 86 + 44 + 51 + 85 + 44 + 86 + 43 + 50 + 44 + 44 + 43 + 43 + 7 + 7 + 37 + 7 + 43 + 43 + 7 + 36 + 8 + 42 + 2 + 42 + 7 + 43 + 8 + 43 + 80 + 49 + 86 + 86 + 87 + 85 + 129 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 85 + 80 + 50 + 86 + 79 + 44 + 50 + 43 + 79 + 43 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 130 + 214 + 172 + 209 + 178 + 208 + 173 + 214 + 208 + 179 + 209 + 208 + 214 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 172 + 215 + 208 + 214 + 209 + 214 + 208 + 208 + 173 + 85 + 44 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 128 + 123 + 129 + 86 + 86 + 86 + 79 + 50 + 86 + 123 + 129 + 129 + 136 + 165 + 129 + 130 + 129 + 129 + 129 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 178 + 166 + 172 + 171 + 172 + 172 + 129 + 172 + 172 + 129 + 165 + 93 + 123 + 92 + 86 + 80 + 50 + 86 + 86 + 44 + 50 + 80 + 49 + 50 + 44 + 43 + 44 + 49 + 80 + 43 + 8 + 42 + 43 + 7 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 43 + 44 + 85 + 44 + 122 + 86 + 93 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 86 + 50 + 44 + 80 + 85 + 86 + 44 + 79 + 44 + 49 + 80 + 86 + 86 + 129 + 92 + 130 + 129 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 173 + 214 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 215 + 209 + 214 + 173 + 214 + 209 + 215 + 208 + 215 + 172 + 215 + 208 + 179 + 209 + 214 + 208 + 178 + 209 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 85 + 80 + 86 + 122 + 129 + 86 + 86 + 129 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 122 + 93 + 129 + 122 + 122 + 86 + 50 + 80 + 86 + 123 + 92 + 130 + 129 + 166 + 129 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 172 + 166 + 135 + 172 + 172 + 165 + 172 + 172 + 173 + 172 + 172 + 172 + 135 + 172 + 130 + 171 + 130 + 129 + 122 + 93 + 86 + 122 + 50 + 80 + 85 + 50 + 80 + 50 + 50 + 79 + 50 + 80 + 49 + 44 + 43 + 50 + 44 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 8 + 43 + 1 + 43 + 7 + 36 + 7 + 1 + 43 + 6 + 38 + 42 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 44 + 86 + 43 + 86 + 44 + 86 + 44 + 85 + 44 + 86 + 43 + 86 + 86 + 86 + 86 + 129 + 129 + 136 + 171 + 172 + 209 + 172 + 209 + 178 + 208 + 209 + 214 + 173 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 215 + 173 + 208 + 209 + 179 + 214 + 209 + 215 + 172 + 215 + 172 + 209 + 215 + 172 + 209 + 178 + 209 + 43 + 42 + 37 + 43 + 7 + 37 + 49 + 43 + 43 + 43 + 43 + 79 + 86 + 43 + 86 + 122 + 86 + 123 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 123 + 128 + 129 + 123 + 128 + 87 + 80 + 49 + 87 + 86 + 122 + 130 + 129 + 129 + 129 + 123 + 129 + 135 + 130 + 129 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 172 + 172 + 178 + 166 + 172 + 136 + 171 + 172 + 166 + 129 + 129 + 86 + 93 + 86 + 79 + 87 + 85 + 50 + 80 + 50 + 85 + 45 + 86 + 86 + 50 + 80 + 49 + 44 + 43 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 80 + 7 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 43 + 7 + 7 + 43 + 79 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 80 + 85 + 44 + 50 + 80 + 86 + 86 + 43 + 80 + 49 + 86 + 86 + 86 + 123 + 129 + 136 + 172 + 172 + 208 + 172 + 215 + 208 + 208 + 179 + 209 + 214 + 209 + 214 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 178 + 215 + 173 + 214 + 215 + 209 + 179 + 208 + 179 + 208 + 179 + 208 + 173 + 215 + 172 + 173 + 42 + 37 + 43 + 43 + 7 + 37 + 49 + 79 + 43 + 43 + 44 + 49 + 80 + 49 + 80 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 123 + 86 + 85 + 86 + 86 + 86 + 116 + 93 + 128 + 129 + 123 + 122 + 86 + 86 + 50 + 80 + 86 + 129 + 130 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 171 + 129 + 130 + 128 + 130 + 171 + 136 + 166 + 178 + 172 + 166 + 136 + 171 + 130 + 129 + 128 + 87 + 86 + 86 + 50 + 80 + 85 + 86 + 86 + 44 + 86 + 86 + 50 + 86 + 86 + 50 + 80 + 50 + 43 + 44 + 50 + 43 + 44 + 50 + 43 + 44 + 43 + 43 + 50 + 37 + 43 + 43 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 43 + 1 + 42 + 1 + 43 + 43 + 50 + 80 + 49 + 86 + 87 + 86 + 86 + 86 + 49 + 80 + 44 + 86 + 43 + 86 + 80 + 50 + 86 + 43 + 44 + 122 + 91 + 87 + 129 + 129 + 172 + 172 + 208 + 179 + 208 + 215 + 173 + 214 + 209 + 214 + 173 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 208 + 214 + 208 + 215 + 208 + 215 + 215 + 173 + 214 + 215 + 172 + 215 + 179 + 208 + 215 + 173 + 178 + 209 + 173 + 214 + 173 + 209 + 178 + 37 + 7 + 79 + 43 + 43 + 43 + 86 + 43 + 80 + 43 + 49 + 43 + 43 + 86 + 80 + 85 + 86 + 123 + 128 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 79 + 86 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 86 + 86 + 123 + 130 + 129 + 129 + 130 + 129 + 129 + 129 + 135 + 166 + 135 + 166 + 129 + 129 + 129 + 130 + 135 + 166 + 171 + 172 + 172 + 135 + 166 + 171 + 130 + 122 + 93 + 122 + 87 + 50 + 85 + 80 + 49 + 86 + 123 + 85 + 86 + 50 + 87 + 86 + 86 + 86 + 50 + 86 + 50 + 44 + 43 + 80 + 50 + 43 + 50 + 44 + 43 + 50 + 43 + 43 + 44 + 43 + 43 + 44 + 6 + 38 + 6 + 44 + 6 + 37 + 7 + 1 + 6 + 37 + 43 + 1 + 49 + 43 + 79 + 80 + 50 + 86 + 86 + 86 + 86 + 79 + 50 + 80 + 50 + 79 + 86 + 44 + 86 + 43 + 86 + 86 + 86 + 129 + 129 + 130 + 171 + 215 + 172 + 215 + 173 + 214 + 209 + 214 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 173 + 214 + 215 + 179 + 208 + 215 + 179 + 172 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 214 + 173 + 43 + 43 + 79 + 44 + 85 + 44 + 86 + 85 + 44 + 79 + 43 + 43 + 44 + 85 + 79 + 86 + 86 + 122 + 87 + 86 + 128 + 86 + 122 + 80 + 49 + 80 + 79 + 86 + 86 + 86 + 122 + 129 + 86 + 86 + 80 + 86 + 44 + 86 + 122 + 86 + 93 + 123 + 129 + 129 + 171 + 130 + 129 + 172 + 129 + 172 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 172 + 171 + 166 + 172 + 136 + 129 + 129 + 86 + 86 + 128 + 86 + 50 + 80 + 49 + 80 + 86 + 93 + 122 + 93 + 86 + 87 + 86 + 86 + 86 + 86 + 51 + 79 + 50 + 44 + 49 + 44 + 79 + 50 + 44 + 50 + 43 + 44 + 43 + 50 + 43 + 44 + 42 + 2 + 43 + 7 + 43 + 1 + 42 + 1 + 6 + 1 + 43 + 0 + 43 + 7 + 37 + 49 + 44 + 86 + 86 + 86 + 50 + 80 + 86 + 44 + 49 + 80 + 87 + 79 + 44 + 85 + 50 + 80 + 86 + 93 + 122 + 129 + 172 + 136 + 208 + 172 + 215 + 208 + 215 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 209 + 214 + 208 + 179 + 215 + 215 + 215 + 214 + 173 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 215 + 172 + 209 + 178 + 44 + 122 + 128 + 87 + 86 + 122 + 86 + 86 + 43 + 43 + 43 + 37 + 79 + 43 + 49 + 80 + 86 + 85 + 123 + 86 + 122 + 85 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 92 + 80 + 86 + 86 + 87 + 86 + 129 + 129 + 87 + 122 + 93 + 122 + 129 + 130 + 135 + 165 + 136 + 165 + 130 + 165 + 136 + 172 + 166 + 172 + 135 + 130 + 165 + 93 + 129 + 128 + 87 + 79 + 50 + 79 + 86 + 50 + 80 + 85 + 50 + 86 + 123 + 86 + 93 + 122 + 86 + 87 + 50 + 86 + 87 + 49 + 44 + 86 + 44 + 85 + 8 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 44 + 42 + 8 + 37 + 43 + 43 + 7 + 7 + 1 + 42 + 1 + 0 + 0 + 43 + 0 + 43 + 43 + 43 + 44 + 50 + 79 + 86 + 86 + 44 + 79 + 49 + 44 + 80 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 172 + 178 + 209 + 214 + 209 + 214 + 209 + 215 + 215 + 208 + 214 + 209 + 178 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 215 + 209 + 215 + 215 + 209 + 214 + 179 + 209 + 214 + 172 + 179 + 209 + 172 + 178 + 172 + 172 + 173 + 128 + 86 + 123 + 129 + 128 + 87 + 86 + 85 + 80 + 43 + 79 + 7 + 79 + 43 + 80 + 85 + 86 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 122 + 87 + 86 + 122 + 86 + 50 + 80 + 86 + 129 + 123 + 93 + 128 + 124 + 129 + 129 + 129 + 129 + 172 + 129 + 130 + 171 + 129 + 130 + 172 + 172 + 171 + 172 + 166 + 135 + 165 + 87 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 80 + 86 + 86 + 86 + 86 + 92 + 87 + 128 + 87 + 86 + 86 + 87 + 50 + 86 + 44 + 86 + 49 + 44 + 44 + 85 + 44 + 43 + 50 + 44 + 43 + 50 + 43 + 37 + 49 + 44 + 1 + 43 + 43 + 44 + 7 + 43 + 8 + 42 + 7 + 37 + 1 + 6 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 49 + 80 + 50 + 80 + 86 + 44 + 43 + 86 + 44 + 79 + 50 + 43 + 86 + 86 + 129 + 128 + 130 + 207 + 173 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 209 + 179 + 208 + 173 + 214 + 209 + 214 + 209 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 173 + 215 + 215 + 208 + 215 + 209 + 178 + 173 + 214 + 172 + 173 + 172 + 214 + 172 + 173 + 92 + 165 + 123 + 129 + 129 + 86 + 86 + 86 + 79 + 79 + 43 + 43 + 37 + 43 + 49 + 86 + 80 + 86 + 122 + 85 + 86 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 128 + 86 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 135 + 166 + 129 + 172 + 130 + 171 + 166 + 178 + 166 + 172 + 129 + 136 + 86 + 79 + 50 + 80 + 86 + 50 + 86 + 86 + 86 + 86 + 86 + 92 + 86 + 122 + 93 + 122 + 86 + 50 + 93 + 86 + 86 + 86 + 45 + 86 + 50 + 79 + 50 + 80 + 14 + 79 + 50 + 43 + 44 + 49 + 43 + 44 + 43 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 1 + 0 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 42 + 2 + 43 + 85 + 44 + 50 + 80 + 79 + 50 + 80 + 49 + 80 + 44 + 43 + 86 + 86 + 123 + 129 + 172 + 172 + 208 + 172 + 215 + 208 + 215 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 215 + 209 + 215 + 208 + 214 + 173 + 214 + 179 + 172 + 208 + 173 + 172 + 178 + 159 + 129 + 129 + 122 + 93 + 122 + 80 + 49 + 79 + 43 + 43 + 37 + 43 + 43 + 85 + 80 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 116 + 85 + 86 + 80 + 49 + 86 + 80 + 122 + 86 + 86 + 86 + 87 + 86 + 86 + 129 + 130 + 129 + 129 + 124 + 129 + 129 + 172 + 129 + 130 + 166 + 171 + 137 + 166 + 172 + 172 + 173 + 171 + 130 + 129 + 129 + 86 + 43 + 79 + 50 + 86 + 86 + 122 + 93 + 122 + 87 + 128 + 87 + 86 + 129 + 86 + 85 + 87 + 86 + 86 + 87 + 92 + 50 + 86 + 44 + 86 + 50 + 80 + 50 + 79 + 50 + 43 + 86 + 44 + 43 + 44 + 43 + 49 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 44 + 1 + 6 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 36 + 7 + 1 + 43 + 43 + 43 + 86 + 44 + 86 + 43 + 80 + 50 + 43 + 43 + 43 + 87 + 85 + 129 + 129 + 172 + 172 + 172 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 208 + 173 + 214 + 173 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 173 + 214 + 209 + 214 + 209 + 214 + 208 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 178 + 208 + 123 + 128 + 123 + 92 + 86 + 80 + 79 + 6 + 37 + 43 + 43 + 36 + 43 + 43 + 80 + 85 + 86 + 80 + 86 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 79 + 86 + 80 + 85 + 44 + 85 + 80 + 86 + 128 + 44 + 87 + 86 + 86 + 123 + 128 + 130 + 129 + 129 + 93 + 165 + 130 + 129 + 172 + 129 + 166 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 129 + 86 + 86 + 50 + 85 + 44 + 86 + 86 + 129 + 92 + 123 + 129 + 129 + 129 + 92 + 123 + 86 + 87 + 86 + 50 + 87 + 92 + 86 + 87 + 86 + 50 + 86 + 44 + 85 + 44 + 86 + 50 + 44 + 85 + 44 + 50 + 43 + 43 + 43 + 44 + 49 + 43 + 44 + 43 + 7 + 43 + 43 + 43 + 1 + 7 + 1 + 42 + 1 + 7 + 43 + 1 + 6 + 1 + 37 + 7 + 43 + 44 + 79 + 50 + 43 + 86 + 43 + 44 + 43 + 79 + 44 + 86 + 92 + 123 + 129 + 172 + 172 + 208 + 215 + 208 + 209 + 214 + 215 + 209 + 214 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 208 + 86 + 122 + 86 + 85 + 44 + 79 + 43 + 43 + 0 + 43 + 37 + 42 + 43 + 79 + 44 + 85 + 80 + 86 + 86 + 79 + 87 + 86 + 122 + 92 + 122 + 86 + 80 + 86 + 85 + 80 + 49 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 87 + 87 + 129 + 165 + 130 + 129 + 129 + 129 + 136 + 166 + 129 + 172 + 172 + 172 + 166 + 136 + 166 + 171 + 93 + 123 + 50 + 122 + 43 + 86 + 86 + 50 + 86 + 123 + 129 + 135 + 166 + 135 + 129 + 123 + 93 + 85 + 123 + 50 + 122 + 92 + 87 + 86 + 87 + 50 + 86 + 86 + 86 + 50 + 80 + 50 + 50 + 80 + 50 + 43 + 50 + 44 + 43 + 44 + 43 + 49 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 7 + 36 + 7 + 1 + 6 + 37 + 43 + 44 + 43 + 86 + 43 + 44 + 43 + 79 + 43 + 50 + 86 + 123 + 128 + 130 + 135 + 202 + 178 + 209 + 214 + 208 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 209 + 173 + 214 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 179 + 208 + 173 + 208 + 172 + 214 + 44 + 86 + 79 + 43 + 43 + 79 + 36 + 43 + 1 + 42 + 43 + 79 + 43 + 80 + 43 + 85 + 80 + 86 + 43 + 86 + 86 + 122 + 80 + 128 + 86 + 123 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 86 + 80 + 86 + 86 + 86 + 122 + 87 + 129 + 129 + 130 + 129 + 93 + 165 + 130 + 129 + 129 + 130 + 165 + 136 + 173 + 165 + 172 + 136 + 129 + 123 + 86 + 85 + 44 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 136 + 166 + 135 + 129 + 129 + 87 + 128 + 87 + 86 + 93 + 86 + 86 + 87 + 92 + 81 + 86 + 50 + 86 + 86 + 50 + 87 + 43 + 86 + 44 + 50 + 86 + 43 + 44 + 49 + 80 + 50 + 43 + 44 + 43 + 43 + 49 + 8 + 37 + 43 + 6 + 43 + 43 + 1 + 7 + 43 + 0 + 43 + 1 + 7 + 36 + 1 + 43 + 7 + 79 + 44 + 86 + 43 + 44 + 44 + 79 + 50 + 86 + 86 + 129 + 129 + 165 + 136 + 202 + 172 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 173 + 214 + 208 + 179 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 172 + 208 + 208 + 215 + 172 + 79 + 50 + 43 + 79 + 43 + 43 + 79 + 43 + 43 + 80 + 43 + 85 + 80 + 49 + 79 + 44 + 85 + 80 + 86 + 79 + 86 + 123 + 86 + 128 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 79 + 86 + 43 + 87 + 86 + 86 + 80 + 92 + 123 + 129 + 130 + 171 + 130 + 129 + 129 + 129 + 166 + 130 + 171 + 130 + 172 + 129 + 172 + 129 + 130 + 165 + 92 + 86 + 80 + 50 + 80 + 86 + 85 + 87 + 92 + 123 + 129 + 135 + 130 + 165 + 93 + 122 + 129 + 87 + 128 + 86 + 93 + 87 + 86 + 93 + 86 + 86 + 86 + 86 + 44 + 92 + 44 + 87 + 85 + 50 + 44 + 86 + 44 + 85 + 44 + 86 + 44 + 49 + 44 + 43 + 8 + 43 + 42 + 8 + 43 + 37 + 43 + 7 + 43 + 7 + 37 + 7 + 6 + 1 + 43 + 1 + 43 + 0 + 43 + 7 + 43 + 79 + 44 + 43 + 43 + 43 + 80 + 50 + 86 + 86 + 86 + 86 + 172 + 165 + 172 + 173 + 214 + 209 + 214 + 209 + 208 + 179 + 208 + 209 + 214 + 209 + 179 + 208 + 214 + 209 + 208 + 215 + 172 + 215 + 209 + 208 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 173 + 214 + 208 + 86 + 86 + 80 + 43 + 85 + 80 + 85 + 80 + 86 + 43 + 86 + 86 + 79 + 86 + 43 + 79 + 44 + 85 + 86 + 86 + 122 + 86 + 87 + 122 + 86 + 86 + 122 + 86 + 129 + 86 + 86 + 80 + 85 + 44 + 85 + 87 + 80 + 86 + 86 + 129 + 130 + 129 + 171 + 130 + 165 + 130 + 130 + 171 + 136 + 166 + 135 + 167 + 172 + 136 + 165 + 129 + 129 + 85 + 87 + 49 + 122 + 86 + 86 + 86 + 87 + 85 + 87 + 128 + 130 + 135 + 129 + 123 + 129 + 92 + 123 + 86 + 129 + 87 + 86 + 93 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 50 + 86 + 87 + 50 + 86 + 87 + 86 + 43 + 50 + 44 + 86 + 43 + 44 + 43 + 7 + 43 + 8 + 42 + 38 + 13 + 43 + 38 + 7 + 43 + 6 + 37 + 7 + 37 + 6 + 7 + 37 + 7 + 36 + 43 + 1 + 43 + 80 + 49 + 38 + 49 + 43 + 44 + 86 + 86 + 86 + 129 + 165 + 172 + 209 + 178 + 208 + 215 + 208 + 215 + 209 + 214 + 172 + 209 + 215 + 172 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 214 + 209 + 172 + 208 + 129 + 122 + 86 + 123 + 92 + 86 + 122 + 80 + 86 + 85 + 80 + 49 + 80 + 79 + 43 + 85 + 44 + 79 + 86 + 86 + 122 + 86 + 123 + 92 + 122 + 86 + 87 + 122 + 86 + 122 + 86 + 43 + 86 + 79 + 86 + 80 + 50 + 80 + 92 + 124 + 135 + 130 + 165 + 130 + 172 + 129 + 166 + 136 + 166 + 172 + 172 + 165 + 172 + 137 + 165 + 129 + 87 + 86 + 50 + 86 + 85 + 123 + 92 + 92 + 123 + 122 + 93 + 86 + 129 + 123 + 135 + 86 + 129 + 86 + 129 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 86 + 129 + 87 + 86 + 93 + 87 + 128 + 87 + 92 + 87 + 86 + 86 + 51 + 79 + 50 + 80 + 49 + 43 + 8 + 43 + 37 + 7 + 43 + 7 + 43 + 43 + 43 + 37 + 7 + 43 + 1 + 43 + 7 + 43 + 1 + 42 + 1 + 7 + 36 + 43 + 37 + 8 + 79 + 43 + 43 + 43 + 44 + 87 + 91 + 129 + 129 + 166 + 214 + 208 + 173 + 214 + 208 + 209 + 214 + 209 + 209 + 178 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 173 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 209 + 208 + 215 + 208 + 209 + 214 + 208 + 208 + 209 + 172 + 208 + 129 + 129 + 128 + 123 + 123 + 92 + 122 + 86 + 86 + 79 + 80 + 49 + 79 + 44 + 43 + 79 + 43 + 86 + 86 + 122 + 86 + 86 + 123 + 128 + 86 + 86 + 122 + 86 + 87 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 44 + 85 + 87 + 129 + 129 + 130 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 130 + 172 + 172 + 166 + 135 + 130 + 122 + 86 + 86 + 50 + 86 + 122 + 93 + 123 + 128 + 130 + 129 + 128 + 86 + 93 + 122 + 87 + 128 + 87 + 129 + 86 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 87 + 129 + 129 + 86 + 94 + 129 + 129 + 93 + 123 + 93 + 122 + 93 + 80 + 50 + 50 + 80 + 43 + 44 + 7 + 43 + 7 + 43 + 43 + 7 + 37 + 44 + 7 + 43 + 7 + 36 + 8 + 42 + 1 + 43 + 43 + 7 + 1 + 37 + 6 + 37 + 7 + 43 + 43 + 37 + 43 + 43 + 44 + 86 + 92 + 123 + 171 + 136 + 208 + 173 + 214 + 209 + 209 + 214 + 208 + 215 + 208 + 215 + 172 + 215 + 208 + 215 + 172 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 208 + 214 + 123 + 129 + 129 + 86 + 122 + 86 + 80 + 49 + 43 + 80 + 49 + 79 + 80 + 43 + 43 + 43 + 79 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 86 + 86 + 50 + 86 + 123 + 129 + 129 + 129 + 130 + 172 + 166 + 136 + 172 + 166 + 172 + 171 + 167 + 136 + 165 + 136 + 122 + 86 + 44 + 86 + 86 + 86 + 93 + 122 + 130 + 135 + 129 + 123 + 93 + 86 + 87 + 86 + 86 + 92 + 87 + 93 + 122 + 93 + 122 + 130 + 129 + 136 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 129 + 130 + 122 + 93 + 86 + 129 + 86 + 87 + 86 + 44 + 49 + 80 + 43 + 44 + 7 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 7 + 37 + 7 + 42 + 1 + 44 + 43 + 0 + 0 + 7 + 36 + 1 + 43 + 43 + 7 + 37 + 43 + 87 + 86 + 86 + 93 + 129 + 172 + 208 + 172 + 215 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 209 + 208 + 215 + 208 + 208 + 209 + 208 + 172 + 208 + 178 + 208 + 166 + 208 + 93 + 122 + 129 + 86 + 80 + 79 + 43 + 79 + 43 + 79 + 49 + 44 + 79 + 43 + 43 + 43 + 79 + 44 + 85 + 122 + 86 + 123 + 86 + 129 + 122 + 92 + 122 + 80 + 86 + 86 + 79 + 50 + 79 + 86 + 80 + 50 + 80 + 86 + 86 + 128 + 130 + 129 + 130 + 123 + 135 + 166 + 129 + 172 + 131 + 172 + 172 + 172 + 172 + 130 + 123 + 92 + 86 + 86 + 80 + 86 + 92 + 123 + 86 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 86 + 51 + 86 + 129 + 86 + 129 + 129 + 130 + 129 + 172 + 130 + 165 + 129 + 129 + 130 + 92 + 123 + 93 + 122 + 92 + 124 + 93 + 87 + 129 + 122 + 87 + 50 + 85 + 44 + 43 + 44 + 43 + 7 + 44 + 7 + 37 + 42 + 8 + 42 + 1 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 0 + 1 + 42 + 1 + 37 + 43 + 7 + 43 + 43 + 80 + 50 + 86 + 128 + 130 + 171 + 172 + 173 + 214 + 209 + 215 + 208 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 209 + 172 + 178 + 208 + 172 + 172 + 207 + 166 + 172 + 129 + 129 + 123 + 86 + 49 + 79 + 43 + 43 + 79 + 43 + 44 + 79 + 43 + 79 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 86 + 123 + 122 + 86 + 86 + 122 + 86 + 86 + 79 + 50 + 79 + 86 + 79 + 50 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 166 + 136 + 165 + 172 + 172 + 136 + 123 + 128 + 87 + 86 + 86 + 80 + 86 + 87 + 122 + 93 + 123 + 129 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 86 + 86 + 87 + 92 + 130 + 129 + 166 + 172 + 136 + 166 + 172 + 123 + 92 + 123 + 86 + 44 + 86 + 44 + 85 + 86 + 86 + 123 + 86 + 87 + 128 + 87 + 86 + 44 + 43 + 49 + 44 + 43 + 7 + 43 + 38 + 7 + 42 + 7 + 37 + 7 + 43 + 7 + 37 + 7 + 43 + 43 + 1 + 36 + 6 + 1 + 37 + 7 + 36 + 43 + 37 + 49 + 80 + 50 + 86 + 92 + 130 + 135 + 209 + 172 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 208 + 208 + 173 + 178 + 208 + 208 + 172 + 208 + 171 + 172 + 165 + 172 + 171 + 172 + 171 + 165 + 172 + 129 + 122 + 86 + 86 + 80 + 85 + 44 + 79 + 49 + 79 + 44 + 79 + 43 + 79 + 44 + 85 + 86 + 86 + 86 + 122 + 86 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 79 + 44 + 86 + 86 + 80 + 49 + 123 + 93 + 165 + 93 + 129 + 123 + 129 + 129 + 130 + 171 + 130 + 172 + 166 + 136 + 87 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 122 + 87 + 86 + 129 + 87 + 92 + 86 + 86 + 44 + 86 + 86 + 87 + 50 + 86 + 129 + 130 + 171 + 172 + 173 + 172 + 129 + 129 + 80 + 49 + 37 + 7 + 37 + 0 + 43 + 1 + 43 + 37 + 7 + 79 + 50 + 123 + 92 + 87 + 43 + 86 + 43 + 8 + 43 + 43 + 43 + 44 + 44 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 43 + 1 + 7 + 36 + 7 + 0 + 37 + 0 + 7 + 43 + 43 + 80 + 50 + 86 + 93 + 129 + 166 + 171 + 173 + 214 + 209 + 172 + 214 + 208 + 215 + 208 + 208 + 178 + 208 + 214 + 208 + 208 + 215 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 214 + 208 + 214 + 172 + 214 + 209 + 207 + 172 + 172 + 207 + 166 + 171 + 208 + 172 + 171 + 129 + 171 + 171 + 165 + 171 + 171 + 171 + 165 + 172 + 129 + 128 + 123 + 129 + 86 + 122 + 86 + 80 + 85 + 79 + 44 + 79 + 49 + 44 + 79 + 86 + 79 + 86 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 86 + 86 + 123 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 50 + 86 + 80 + 129 + 129 + 87 + 129 + 165 + 129 + 130 + 129 + 136 + 166 + 135 + 166 + 129 + 86 + 87 + 86 + 86 + 80 + 86 + 92 + 80 + 86 + 87 + 92 + 123 + 86 + 86 + 51 + 86 + 86 + 86 + 87 + 50 + 86 + 86 + 129 + 172 + 166 + 173 + 135 + 129 + 86 + 44 + 43 + 38 + 6 + 37 + 0 + 0 + 1 + 42 + 1 + 0 + 0 + 37 + 7 + 85 + 45 + 86 + 86 + 86 + 50 + 43 + 43 + 44 + 50 + 43 + 44 + 42 + 7 + 44 + 37 + 7 + 43 + 7 + 37 + 43 + 7 + 7 + 37 + 0 + 37 + 6 + 0 + 1 + 37 + 43 + 50 + 43 + 44 + 86 + 92 + 129 + 165 + 136 + 172 + 214 + 173 + 208 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 208 + 172 + 208 + 172 + 208 + 171 + 171 + 208 + 171 + 172 + 171 + 207 + 135 + 165 + 171 + 171 + 171 + 165 + 171 + 171 + 165 + 134 + 172 + 128 + 172 + 134 + 166 + 171 + 166 + 135 + 165 + 130 + 128 + 123 + 93 + 122 + 86 + 79 + 44 + 79 + 49 + 43 + 79 + 44 + 85 + 80 + 86 + 122 + 86 + 86 + 129 + 86 + 122 + 86 + 122 + 93 + 123 + 128 + 86 + 80 + 86 + 43 + 50 + 80 + 86 + 80 + 50 + 122 + 129 + 130 + 129 + 130 + 129 + 135 + 130 + 165 + 130 + 165 + 129 + 93 + 123 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 123 + 92 + 86 + 86 + 81 + 86 + 50 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 136 + 165 + 173 + 172 + 93 + 80 + 0 + 43 + 0 + 1 + 43 + 37 + 7 + 36 + 7 + 36 + 1 + 0 + 1 + 36 + 6 + 1 + 43 + 44 + 86 + 86 + 87 + 49 + 44 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 42 + 1 + 0 + 44 + 43 + 43 + 49 + 86 + 129 + 129 + 130 + 171 + 173 + 172 + 208 + 172 + 214 + 173 + 208 + 178 + 209 + 172 + 208 + 178 + 209 + 172 + 214 + 172 + 202 + 171 + 172 + 207 + 172 + 171 + 171 + 171 + 171 + 172 + 164 + 171 + 165 + 165 + 134 + 171 + 165 + 171 + 165 + 171 + 128 + 171 + 128 + 171 + 170 + 129 + 171 + 135 + 165 + 129 + 166 + 135 + 159 + 129 + 129 + 129 + 122 + 86 + 86 + 43 + 79 + 43 + 86 + 43 + 80 + 85 + 86 + 86 + 123 + 86 + 122 + 92 + 122 + 87 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 79 + 44 + 43 + 86 + 44 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 87 + 86 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 87 + 123 + 86 + 86 + 50 + 80 + 50 + 43 + 87 + 86 + 93 + 87 + 128 + 93 + 166 + 172 + 172 + 130 + 43 + 1 + 42 + 1 + 6 + 37 + 80 + 7 + 43 + 37 + 7 + 37 + 43 + 43 + 0 + 1 + 42 + 1 + 0 + 43 + 43 + 44 + 86 + 87 + 50 + 49 + 80 + 44 + 49 + 44 + 43 + 43 + 7 + 43 + 37 + 44 + 7 + 43 + 50 + 37 + 43 + 7 + 37 + 43 + 7 + 37 + 43 + 44 + 43 + 44 + 85 + 87 + 129 + 93 + 172 + 130 + 171 + 172 + 208 + 172 + 172 + 171 + 171 + 172 + 201 + 172 + 171 + 171 + 171 + 166 + 135 + 208 + 172 + 165 + 166 + 170 + 129 + 170 + 165 + 129 + 170 + 165 + 128 + 171 + 129 + 164 + 165 + 134 + 165 + 128 + 165 + 134 + 165 + 134 + 165 + 129 + 134 + 165 + 134 + 171 + 122 + 129 + 129 + 129 + 123 + 129 + 165 + 86 + 122 + 86 + 50 + 43 + 79 + 80 + 85 + 43 + 80 + 86 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 129 + 86 + 122 + 123 + 128 + 86 + 86 + 86 + 80 + 43 + 86 + 44 + 86 + 86 + 129 + 122 + 93 + 166 + 93 + 129 + 123 + 129 + 129 + 129 + 130 + 129 + 129 + 86 + 87 + 80 + 86 + 92 + 87 + 122 + 129 + 87 + 129 + 86 + 87 + 122 + 50 + 86 + 44 + 86 + 50 + 86 + 129 + 87 + 129 + 136 + 129 + 166 + 129 + 43 + 0 + 1 + 43 + 37 + 43 + 50 + 86 + 80 + 85 + 44 + 87 + 122 + 92 + 81 + 49 + 38 + 43 + 0 + 0 + 1 + 42 + 44 + 43 + 87 + 85 + 51 + 80 + 50 + 79 + 50 + 43 + 44 + 7 + 44 + 7 + 43 + 43 + 50 + 80 + 7 + 37 + 7 + 36 + 43 + 1 + 42 + 44 + 43 + 37 + 7 + 85 + 86 + 93 + 129 + 129 + 130 + 171 + 166 + 172 + 171 + 166 + 136 + 172 + 165 + 136 + 172 + 172 + 171 + 165 + 136 + 165 + 171 + 165 + 171 + 165 + 166 + 134 + 165 + 128 + 165 + 170 + 129 + 164 + 135 + 171 + 128 + 171 + 164 + 129 + 170 + 135 + 164 + 135 + 165 + 134 + 165 + 134 + 165 + 134 + 171 + 80 + 86 + 128 + 123 + 128 + 87 + 122 + 86 + 86 + 43 + 79 + 44 + 85 + 80 + 49 + 79 + 44 + 122 + 86 + 122 + 93 + 122 + 122 + 93 + 122 + 87 + 128 + 123 + 86 + 128 + 86 + 123 + 79 + 50 + 44 + 79 + 86 + 86 + 86 + 81 + 92 + 86 + 129 + 88 + 128 + 123 + 129 + 93 + 123 + 165 + 129 + 93 + 87 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 128 + 87 + 86 + 86 + 87 + 86 + 80 + 86 + 50 + 87 + 92 + 87 + 165 + 136 + 137 + 165 + 92 + 38 + 6 + 0 + 37 + 43 + 43 + 86 + 87 + 128 + 87 + 129 + 129 + 130 + 123 + 129 + 87 + 128 + 86 + 86 + 1 + 43 + 0 + 0 + 1 + 43 + 50 + 86 + 86 + 50 + 81 + 50 + 86 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 50 + 79 + 7 + 43 + 43 + 37 + 7 + 43 + 0 + 80 + 7 + 36 + 43 + 50 + 85 + 87 + 92 + 129 + 130 + 129 + 171 + 166 + 165 + 172 + 135 + 166 + 170 + 136 + 166 + 171 + 136 + 171 + 165 + 136 + 171 + 202 + 171 + 172 + 165 + 134 + 166 + 164 + 171 + 171 + 165 + 171 + 165 + 135 + 171 + 171 + 165 + 171 + 171 + 165 + 171 + 171 + 165 + 170 + 135 + 165 + 171 + 171 + 135 + 80 + 86 + 86 + 122 + 87 + 128 + 79 + 50 + 43 + 79 + 43 + 79 + 43 + 80 + 49 + 79 + 44 + 86 + 122 + 86 + 129 + 122 + 87 + 128 + 123 + 86 + 86 + 128 + 123 + 86 + 86 + 86 + 79 + 86 + 79 + 43 + 50 + 80 + 86 + 87 + 128 + 123 + 93 + 129 + 129 + 123 + 129 + 93 + 130 + 165 + 129 + 87 + 86 + 122 + 50 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 80 + 50 + 79 + 50 + 86 + 87 + 86 + 86 + 93 + 129 + 130 + 172 + 172 + 129 + 44 + 7 + 36 + 7 + 80 + 43 + 129 + 123 + 136 + 129 + 130 + 122 + 129 + 87 + 128 + 87 + 86 + 129 + 129 + 123 + 43 + 7 + 0 + 1 + 36 + 7 + 43 + 86 + 45 + 86 + 86 + 86 + 50 + 86 + 44 + 49 + 80 + 50 + 43 + 8 + 79 + 49 + 44 + 7 + 37 + 43 + 43 + 0 + 43 + 44 + 37 + 7 + 43 + 85 + 51 + 86 + 129 + 129 + 172 + 129 + 165 + 172 + 130 + 172 + 171 + 172 + 172 + 135 + 172 + 171 + 172 + 171 + 166 + 178 + 172 + 207 + 172 + 208 + 172 + 207 + 172 + 208 + 171 + 172 + 207 + 172 + 207 + 172 + 172 + 207 + 172 + 207 + 172 + 171 + 208 + 135 + 165 + 172 + 172 + 171 + 172 + 165 + 171 + 79 + 86 + 86 + 86 + 122 + 86 + 43 + 43 + 37 + 42 + 37 + 43 + 49 + 79 + 43 + 37 + 79 + 86 + 86 + 129 + 122 + 87 + 128 + 87 + 122 + 128 + 86 + 123 + 86 + 86 + 86 + 86 + 79 + 86 + 80 + 50 + 43 + 86 + 86 + 123 + 123 + 93 + 129 + 166 + 129 + 93 + 129 + 129 + 129 + 166 + 93 + 122 + 87 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 87 + 86 + 80 + 43 + 50 + 79 + 50 + 86 + 87 + 93 + 129 + 166 + 136 + 130 + 136 + 43 + 37 + 1 + 43 + 79 + 92 + 87 + 123 + 129 + 93 + 123 + 86 + 128 + 87 + 86 + 122 + 93 + 86 + 87 + 122 + 51 + 79 + 0 + 7 + 0 + 36 + 1 + 7 + 80 + 49 + 87 + 86 + 50 + 80 + 86 + 50 + 86 + 44 + 43 + 50 + 43 + 80 + 49 + 43 + 44 + 43 + 37 + 7 + 43 + 43 + 44 + 36 + 44 + 43 + 50 + 86 + 93 + 129 + 165 + 136 + 129 + 172 + 207 + 173 + 208 + 172 + 179 + 208 + 179 + 171 + 178 + 172 + 172 + 173 + 178 + 172 + 208 + 209 + 208 + 215 + 208 + 171 + 209 + 207 + 214 + 172 + 171 + 208 + 172 + 207 + 172 + 208 + 171 + 208 + 171 + 172 + 208 + 172 + 171 + 172 + 171 + 172 + 166 + 172 + 85 + 86 + 86 + 122 + 80 + 50 + 79 + 36 + 43 + 7 + 79 + 43 + 80 + 79 + 43 + 43 + 43 + 79 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 87 + 122 + 92 + 122 + 86 + 87 + 85 + 116 + 86 + 43 + 43 + 86 + 44 + 86 + 123 + 92 + 123 + 129 + 94 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 87 + 92 + 123 + 86 + 87 + 86 + 93 + 87 + 86 + 86 + 44 + 80 + 50 + 43 + 43 + 87 + 86 + 87 + 92 + 130 + 135 + 130 + 135 + 123 + 7 + 0 + 37 + 43 + 87 + 129 + 123 + 129 + 93 + 123 + 87 + 80 + 50 + 86 + 80 + 43 + 86 + 87 + 80 + 50 + 79 + 44 + 0 + 7 + 36 + 0 + 1 + 6 + 80 + 44 + 86 + 86 + 43 + 87 + 86 + 86 + 50 + 86 + 44 + 80 + 49 + 80 + 50 + 43 + 44 + 79 + 7 + 37 + 43 + 86 + 7 + 37 + 79 + 7 + 50 + 86 + 166 + 99 + 166 + 136 + 172 + 172 + 178 + 208 + 173 + 214 + 208 + 214 + 173 + 214 + 208 + 178 + 173 + 207 + 173 + 208 + 172 + 208 + 214 + 208 + 172 + 208 + 172 + 208 + 171 + 208 + 172 + 178 + 208 + 172 + 171 + 173 + 207 + 171 + 173 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 165 + 93 + 122 + 86 + 86 + 79 + 50 + 79 + 37 + 42 + 43 + 44 + 79 + 86 + 43 + 43 + 36 + 43 + 79 + 86 + 122 + 93 + 122 + 123 + 92 + 122 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 86 + 86 + 43 + 80 + 50 + 79 + 86 + 87 + 86 + 86 + 122 + 93 + 123 + 92 + 87 + 129 + 93 + 129 + 130 + 86 + 86 + 86 + 87 + 86 + 87 + 92 + 87 + 86 + 86 + 50 + 80 + 43 + 50 + 44 + 86 + 87 + 128 + 93 + 130 + 165 + 136 + 129 + 50 + 37 + 0 + 7 + 79 + 44 + 130 + 123 + 129 + 86 + 86 + 86 + 44 + 43 + 44 + 79 + 44 + 44 + 43 + 86 + 80 + 44 + 43 + 0 + 1 + 36 + 7 + 0 + 1 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 79 + 50 + 86 + 44 + 86 + 79 + 50 + 80 + 7 + 43 + 80 + 43 + 43 + 43 + 43 + 37 + 87 + 135 + 130 + 135 + 166 + 172 + 136 + 172 + 208 + 179 + 172 + 208 + 214 + 173 + 214 + 208 + 173 + 214 + 172 + 208 + 172 + 209 + 208 + 178 + 172 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 172 + 172 + 136 + 172 + 172 + 135 + 172 + 136 + 172 + 172 + 136 + 171 + 123 + 86 + 86 + 86 + 86 + 43 + 43 + 36 + 43 + 43 + 79 + 80 + 49 + 80 + 42 + 37 + 43 + 43 + 86 + 122 + 93 + 122 + 129 + 122 + 87 + 86 + 128 + 123 + 86 + 86 + 122 + 86 + 79 + 86 + 44 + 43 + 86 + 86 + 86 + 81 + 86 + 86 + 86 + 87 + 92 + 87 + 86 + 86 + 93 + 123 + 86 + 50 + 87 + 49 + 87 + 86 + 87 + 93 + 86 + 86 + 87 + 50 + 86 + 86 + 50 + 87 + 86 + 123 + 93 + 135 + 166 + 136 + 172 + 87 + 43 + 0 + 7 + 0 + 37 + 44 + 122 + 94 + 122 + 88 + 80 + 43 + 43 + 1 + 43 + 1 + 43 + 43 + 43 + 44 + 80 + 7 + 37 + 0 + 43 + 0 + 1 + 0 + 36 + 7 + 37 + 50 + 79 + 87 + 85 + 44 + 86 + 86 + 86 + 86 + 80 + 87 + 86 + 86 + 50 + 80 + 86 + 43 + 44 + 86 + 43 + 43 + 37 + 43 + 43 + 93 + 129 + 130 + 129 + 136 + 166 + 135 + 173 + 172 + 136 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 178 + 208 + 173 + 208 + 172 + 209 + 178 + 208 + 208 + 173 + 172 + 207 + 173 + 208 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 172 + 135 + 172 + 172 + 130 + 172 + 129 + 129 + 122 + 79 + 86 + 43 + 43 + 37 + 43 + 43 + 79 + 43 + 86 + 43 + 42 + 37 + 37 + 43 + 86 + 86 + 128 + 123 + 128 + 86 + 123 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 80 + 49 + 80 + 43 + 86 + 86 + 123 + 92 + 87 + 86 + 86 + 87 + 122 + 93 + 86 + 87 + 93 + 129 + 86 + 50 + 81 + 50 + 86 + 92 + 87 + 122 + 93 + 50 + 122 + 50 + 87 + 86 + 87 + 128 + 93 + 88 + 171 + 131 + 172 + 135 + 130 + 87 + 6 + 37 + 0 + 7 + 0 + 37 + 86 + 86 + 81 + 86 + 43 + 37 + 7 + 36 + 8 + 36 + 43 + 1 + 43 + 44 + 37 + 43 + 43 + 0 + 37 + 0 + 1 + 6 + 0 + 1 + 36 + 44 + 50 + 80 + 79 + 50 + 86 + 80 + 86 + 86 + 86 + 87 + 86 + 87 + 86 + 86 + 44 + 86 + 86 + 80 + 43 + 43 + 43 + 7 + 80 + 92 + 123 + 86 + 93 + 93 + 130 + 172 + 130 + 172 + 208 + 179 + 173 + 214 + 209 + 214 + 173 + 208 + 214 + 173 + 208 + 172 + 172 + 208 + 179 + 208 + 173 + 172 + 208 + 173 + 172 + 202 + 172 + 173 + 172 + 178 + 172 + 172 + 136 + 171 + 173 + 135 + 173 + 136 + 171 + 166 + 136 + 172 + 136 + 172 + 171 + 129 + 87 + 128 + 80 + 86 + 86 + 43 + 79 + 43 + 79 + 43 + 43 + 79 + 1 + 43 + 0 + 43 + 37 + 85 + 86 + 122 + 123 + 86 + 129 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 86 + 79 + 50 + 80 + 79 + 51 + 128 + 87 + 129 + 123 + 86 + 87 + 92 + 124 + 92 + 87 + 129 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 87 + 93 + 86 + 86 + 51 + 86 + 86 + 86 + 129 + 94 + 129 + 129 + 136 + 130 + 171 + 130 + 129 + 87 + 0 + 1 + 42 + 1 + 37 + 7 + 80 + 43 + 44 + 43 + 43 + 1 + 42 + 1 + 37 + 6 + 38 + 42 + 1 + 37 + 43 + 1 + 43 + 1 + 36 + 6 + 1 + 0 + 0 + 0 + 37 + 7 + 43 + 43 + 80 + 50 + 80 + 85 + 87 + 80 + 50 + 122 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 43 + 80 + 43 + 44 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 130 + 172 + 178 + 173 + 173 + 214 + 209 + 178 + 209 + 172 + 215 + 209 + 214 + 172 + 209 + 172 + 173 + 214 + 172 + 209 + 172 + 172 + 173 + 208 + 173 + 166 + 178 + 136 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 136 + 171 + 136 + 166 + 135 + 166 + 136 + 136 + 172 + 129 + 122 + 86 + 122 + 87 + 49 + 79 + 86 + 43 + 80 + 43 + 43 + 42 + 79 + 1 + 1 + 36 + 43 + 79 + 86 + 86 + 86 + 123 + 128 + 86 + 86 + 123 + 122 + 93 + 122 + 86 + 86 + 79 + 86 + 43 + 80 + 86 + 93 + 123 + 129 + 86 + 86 + 87 + 122 + 93 + 87 + 93 + 122 + 93 + 86 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 129 + 130 + 136 + 165 + 136 + 130 + 135 + 123 + 50 + 1 + 43 + 1 + 36 + 7 + 43 + 44 + 37 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 36 + 1 + 7 + 37 + 36 + 7 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 37 + 44 + 43 + 86 + 44 + 86 + 86 + 86 + 80 + 92 + 44 + 86 + 86 + 44 + 86 + 122 + 87 + 50 + 43 + 79 + 44 + 50 + 128 + 45 + 86 + 92 + 123 + 129 + 136 + 136 + 166 + 179 + 208 + 179 + 209 + 179 + 208 + 215 + 172 + 215 + 209 + 178 + 173 + 208 + 173 + 208 + 173 + 179 + 208 + 173 + 172 + 172 + 166 + 172 + 173 + 178 + 172 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 172 + 172 + 136 + 130 + 171 + 136 + 171 + 130 + 172 + 165 + 128 + 129 + 129 + 86 + 122 + 44 + 85 + 79 + 44 + 79 + 43 + 43 + 43 + 42 + 1 + 37 + 42 + 80 + 49 + 122 + 87 + 86 + 122 + 86 + 122 + 86 + 86 + 122 + 87 + 86 + 85 + 80 + 49 + 80 + 86 + 87 + 128 + 87 + 129 + 129 + 87 + 128 + 87 + 123 + 93 + 128 + 87 + 50 + 86 + 50 + 80 + 50 + 86 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 92 + 87 + 86 + 129 + 129 + 136 + 130 + 135 + 166 + 130 + 135 + 87 + 7 + 37 + 6 + 1 + 36 + 7 + 37 + 7 + 37 + 43 + 0 + 37 + 1 + 42 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 37 + 7 + 43 + 44 + 79 + 49 + 80 + 50 + 86 + 80 + 87 + 86 + 85 + 81 + 92 + 86 + 80 + 50 + 86 + 80 + 86 + 129 + 86 + 44 + 86 + 51 + 86 + 129 + 129 + 130 + 172 + 173 + 178 + 173 + 172 + 208 + 179 + 173 + 209 + 178 + 209 + 173 + 214 + 173 + 173 + 214 + 173 + 208 + 173 + 172 + 172 + 179 + 208 + 172 + 172 + 172 + 179 + 136 + 172 + 208 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 171 + 172 + 136 + 172 + 136 + 166 + 135 + 166 + 122 + 93 + 122 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 42 + 37 + 43 + 36 + 7 + 37 + 79 + 85 + 80 + 92 + 86 + 122 + 86 + 87 + 86 + 122 + 86 + 86 + 80 + 85 + 80 + 49 + 80 + 86 + 129 + 123 + 129 + 129 + 93 + 123 + 86 + 129 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 80 + 50 + 86 + 50 + 86 + 123 + 50 + 87 + 86 + 92 + 87 + 86 + 129 + 93 + 130 + 129 + 136 + 172 + 166 + 136 + 93 + 86 + 43 + 1 + 43 + 0 + 0 + 1 + 43 + 1 + 36 + 7 + 37 + 0 + 43 + 0 + 1 + 36 + 1 + 0 + 0 + 43 + 1 + 36 + 7 + 1 + 36 + 7 + 37 + 0 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 43 + 7 + 79 + 44 + 86 + 86 + 87 + 85 + 80 + 87 + 43 + 86 + 87 + 86 + 85 + 80 + 86 + 87 + 129 + 129 + 43 + 80 + 50 + 86 + 93 + 129 + 129 + 172 + 172 + 173 + 172 + 179 + 173 + 172 + 173 + 209 + 178 + 173 + 209 + 179 + 172 + 209 + 179 + 172 + 173 + 215 + 172 + 172 + 173 + 172 + 173 + 178 + 173 + 172 + 178 + 172 + 172 + 173 + 135 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 136 + 172 + 166 + 136 + 171 + 130 + 165 + 86 + 128 + 86 + 80 + 85 + 80 + 43 + 43 + 43 + 43 + 79 + 42 + 1 + 37 + 6 + 37 + 79 + 49 + 80 + 86 + 86 + 123 + 85 + 86 + 80 + 122 + 86 + 86 + 86 + 86 + 79 + 80 + 86 + 92 + 124 + 129 + 129 + 129 + 123 + 93 + 86 + 124 + 92 + 86 + 50 + 87 + 86 + 50 + 80 + 50 + 43 + 86 + 44 + 92 + 86 + 87 + 86 + 51 + 87 + 128 + 87 + 129 + 129 + 130 + 135 + 173 + 166 + 136 + 130 + 129 + 50 + 37 + 6 + 1 + 36 + 1 + 42 + 1 + 37 + 6 + 37 + 1 + 42 + 1 + 0 + 1 + 36 + 7 + 0 + 37 + 0 + 43 + 1 + 36 + 1 + 43 + 1 + 0 + 43 + 0 + 43 + 1 + 36 + 0 + 1 + 0 + 43 + 1 + 43 + 79 + 50 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 44 + 86 + 129 + 123 + 93 + 79 + 50 + 86 + 87 + 86 + 172 + 130 + 172 + 173 + 172 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 209 + 173 + 179 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 178 + 209 + 172 + 172 + 173 + 172 + 136 + 178 + 173 + 172 + 135 + 172 + 166 + 136 + 172 + 135 + 172 + 172 + 130 + 172 + 135 + 172 + 136 + 172 + 128 + 87 + 122 + 86 + 85 + 80 + 86 + 43 + 86 + 43 + 43 + 36 + 43 + 37 + 42 + 1 + 43 + 37 + 42 + 43 + 80 + 49 + 122 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 86 + 80 + 85 + 86 + 86 + 86 + 129 + 129 + 123 + 130 + 86 + 87 + 128 + 86 + 123 + 86 + 51 + 86 + 50 + 79 + 50 + 44 + 50 + 79 + 86 + 51 + 86 + 86 + 92 + 87 + 129 + 93 + 123 + 129 + 130 + 135 + 136 + 166 + 136 + 166 + 93 + 86 + 49 + 37 + 7 + 0 + 43 + 38 + 43 + 7 + 36 + 1 + 43 + 0 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 36 + 7 + 37 + 0 + 1 + 42 + 1 + 1 + 42 + 1 + 37 + 0 + 0 + 7 + 36 + 1 + 36 + 7 + 43 + 44 + 86 + 86 + 86 + 80 + 86 + 87 + 86 + 86 + 86 + 80 + 86 + 86 + 130 + 122 + 50 + 86 + 86 + 86 + 87 + 93 + 166 + 136 + 172 + 172 + 173 + 178 + 173 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 173 + 208 + 179 + 173 + 173 + 172 + 178 + 173 + 172 + 137 + 208 + 173 + 142 + 172 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 172 + 136 + 165 + 136 + 172 + 172 + 172 + 86 + 86 + 79 + 86 + 86 + 79 + 86 + 44 + 79 + 43 + 43 + 43 + 42 + 37 + 43 + 0 + 43 + 37 + 42 + 43 + 43 + 80 + 79 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 85 + 86 + 86 + 80 + 86 + 123 + 93 + 129 + 123 + 86 + 87 + 86 + 86 + 92 + 123 + 87 + 92 + 81 + 49 + 50 + 44 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 93 + 129 + 123 + 94 + 129 + 135 + 130 + 172 + 130 + 171 + 136 + 123 + 93 + 44 + 43 + 0 + 7 + 43 + 44 + 43 + 43 + 37 + 43 + 1 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 37 + 0 + 6 + 1 + 0 + 37 + 7 + 36 + 1 + 0 + 0 + 1 + 42 + 1 + 36 + 1 + 43 + 43 + 86 + 44 + 86 + 86 + 86 + 87 + 86 + 86 + 80 + 50 + 122 + 123 + 92 + 44 + 86 + 86 + 86 + 87 + 86 + 130 + 135 + 130 + 171 + 137 + 208 + 173 + 178 + 173 + 173 + 173 + 173 + 173 + 172 + 179 + 173 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 172 + 173 + 136 + 179 + 172 + 171 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 172 + 130 + 172 + 136 + 171 + 172 + 136 + 172 + 172 + 80 + 49 + 80 + 85 + 44 + 86 + 79 + 50 + 79 + 1 + 42 + 43 + 37 + 42 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 86 + 43 + 86 + 80 + 86 + 85 + 86 + 44 + 86 + 85 + 80 + 86 + 86 + 86 + 86 + 87 + 128 + 87 + 85 + 44 + 86 + 86 + 86 + 123 + 87 + 92 + 50 + 86 + 44 + 86 + 43 + 87 + 86 + 93 + 86 + 93 + 123 + 92 + 129 + 130 + 129 + 130 + 135 + 130 + 130 + 172 + 136 + 166 + 92 + 86 + 80 + 7 + 0 + 43 + 1 + 86 + 44 + 37 + 7 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 1 + 42 + 0 + 1 + 0 + 1 + 36 + 7 + 0 + 0 + 37 + 1 + 43 + 43 + 0 + 0 + 1 + 36 + 7 + 38 + 6 + 1 + 36 + 43 + 50 + 80 + 86 + 50 + 87 + 122 + 50 + 80 + 85 + 87 + 129 + 87 + 86 + 43 + 86 + 86 + 44 + 86 + 130 + 135 + 165 + 129 + 130 + 172 + 172 + 172 + 179 + 173 + 172 + 173 + 173 + 208 + 173 + 173 + 172 + 173 + 179 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 130 + 178 + 167 + 178 + 166 + 178 + 130 + 171 + 136 + 172 + 172 + 135 + 172 + 135 + 166 + 136 + 171 + 136 + 172 + 172 + 135 + 80 + 85 + 44 + 79 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 43 + 37 + 6 + 37 + 0 + 43 + 0 + 1 + 43 + 43 + 43 + 79 + 50 + 79 + 50 + 80 + 85 + 50 + 80 + 86 + 44 + 85 + 86 + 44 + 86 + 86 + 86 + 85 + 80 + 50 + 79 + 50 + 87 + 86 + 129 + 86 + 87 + 50 + 80 + 49 + 44 + 86 + 86 + 93 + 86 + 86 + 94 + 123 + 129 + 135 + 130 + 129 + 94 + 165 + 136 + 166 + 135 + 166 + 93 + 80 + 50 + 36 + 1 + 7 + 44 + 80 + 43 + 7 + 1 + 36 + 7 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 1 + 36 + 7 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 50 + 80 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 1 + 42 + 44 + 49 + 80 + 43 + 86 + 86 + 87 + 49 + 80 + 93 + 122 + 129 + 86 + 43 + 50 + 80 + 43 + 122 + 136 + 87 + 86 + 171 + 130 + 129 + 136 + 166 + 178 + 172 + 209 + 173 + 173 + 208 + 173 + 173 + 173 + 215 + 173 + 208 + 173 + 179 + 173 + 172 + 173 + 172 + 173 + 178 + 172 + 166 + 136 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 166 + 172 + 135 + 166 + 135 + 172 + 135 + 172 + 129 + 172 + 135 + 86 + 79 + 86 + 44 + 86 + 79 + 50 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 36 + 6 + 1 + 37 + 6 + 37 + 7 + 43 + 85 + 44 + 79 + 50 + 86 + 43 + 86 + 44 + 85 + 43 + 43 + 44 + 49 + 80 + 43 + 43 + 79 + 86 + 87 + 86 + 86 + 92 + 122 + 87 + 93 + 50 + 86 + 44 + 86 + 44 + 86 + 50 + 86 + 87 + 92 + 123 + 93 + 129 + 87 + 130 + 129 + 135 + 130 + 172 + 129 + 130 + 129 + 86 + 86 + 1 + 37 + 7 + 37 + 79 + 7 + 43 + 8 + 37 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 6 + 1 + 0 + 37 + 0 + 0 + 7 + 37 + 0 + 43 + 44 + 86 + 86 + 44 + 85 + 44 + 86 + 80 + 50 + 86 + 43 + 80 + 86 + 43 + 43 + 43 + 50 + 86 + 79 + 50 + 86 + 129 + 123 + 86 + 43 + 86 + 50 + 79 + 50 + 165 + 43 + 86 + 130 + 128 + 87 + 129 + 129 + 165 + 172 + 172 + 173 + 215 + 209 + 173 + 173 + 209 + 178 + 209 + 173 + 209 + 179 + 173 + 172 + 179 + 172 + 173 + 172 + 173 + 172 + 172 + 137 + 171 + 136 + 172 + 136 + 172 + 172 + 135 + 172 + 130 + 135 + 172 + 165 + 136 + 172 + 129 + 171 + 171 + 136 + 86 + 80 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 42 + 1 + 6 + 37 + 0 + 43 + 7 + 37 + 43 + 43 + 49 + 80 + 49 + 80 + 49 + 80 + 50 + 79 + 43 + 43 + 7 + 43 + 37 + 43 + 49 + 86 + 87 + 122 + 92 + 123 + 86 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 80 + 50 + 87 + 86 + 92 + 87 + 87 + 129 + 93 + 122 + 94 + 129 + 136 + 130 + 171 + 130 + 129 + 129 + 86 + 44 + 0 + 43 + 43 + 37 + 7 + 36 + 8 + 37 + 6 + 1 + 43 + 1 + 6 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 1 + 0 + 37 + 6 + 1 + 43 + 43 + 44 + 80 + 86 + 86 + 87 + 128 + 87 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 43 + 85 + 87 + 129 + 86 + 86 + 86 + 44 + 43 + 86 + 129 + 86 + 86 + 86 + 129 + 86 + 86 + 86 + 87 + 171 + 130 + 172 + 173 + 172 + 209 + 173 + 172 + 173 + 173 + 173 + 208 + 173 + 215 + 172 + 173 + 179 + 172 + 173 + 172 + 172 + 172 + 137 + 171 + 172 + 136 + 171 + 136 + 172 + 135 + 166 + 136 + 171 + 135 + 130 + 171 + 136 + 164 + 136 + 171 + 129 + 172 + 86 + 86 + 122 + 50 + 79 + 44 + 43 + 43 + 43 + 43 + 6 + 37 + 7 + 0 + 36 + 1 + 7 + 42 + 37 + 7 + 43 + 36 + 43 + 44 + 49 + 80 + 43 + 50 + 79 + 49 + 80 + 43 + 43 + 43 + 7 + 79 + 50 + 122 + 129 + 129 + 130 + 129 + 129 + 86 + 129 + 87 + 92 + 50 + 81 + 49 + 86 + 87 + 86 + 86 + 93 + 122 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 172 + 129 + 130 + 136 + 129 + 80 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 43 + 37 + 7 + 1 + 43 + 43 + 0 + 1 + 0 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 7 + 37 + 44 + 86 + 85 + 87 + 86 + 86 + 123 + 129 + 86 + 130 + 128 + 124 + 129 + 129 + 129 + 128 + 123 + 93 + 86 + 86 + 122 + 43 + 43 + 80 + 91 + 93 + 86 + 80 + 85 + 44 + 86 + 93 + 122 + 86 + 86 + 93 + 80 + 43 + 85 + 44 + 86 + 129 + 129 + 172 + 129 + 172 + 167 + 172 + 179 + 172 + 173 + 208 + 173 + 173 + 172 + 209 + 179 + 172 + 173 + 142 + 172 + 173 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 135 + 171 + 130 + 171 + 135 + 135 + 129 + 171 + 129 + 136 + 165 + 136 + 165 + 135 + 165 + 86 + 123 + 85 + 50 + 80 + 49 + 44 + 43 + 43 + 43 + 0 + 43 + 37 + 6 + 0 + 1 + 43 + 0 + 43 + 37 + 6 + 37 + 7 + 49 + 80 + 43 + 86 + 43 + 50 + 79 + 44 + 43 + 85 + 44 + 79 + 86 + 92 + 130 + 171 + 129 + 130 + 171 + 129 + 129 + 87 + 128 + 87 + 50 + 86 + 86 + 86 + 87 + 86 + 93 + 87 + 129 + 130 + 93 + 129 + 129 + 129 + 93 + 130 + 130 + 171 + 130 + 129 + 129 + 87 + 79 + 1 + 43 + 37 + 7 + 0 + 37 + 43 + 44 + 42 + 1 + 43 + 44 + 43 + 0 + 43 + 1 + 0 + 1 + 36 + 7 + 36 + 1 + 0 + 43 + 44 + 86 + 80 + 86 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 171 + 129 + 129 + 165 + 129 + 87 + 86 + 165 + 93 + 85 + 80 + 129 + 86 + 86 + 86 + 43 + 79 + 86 + 129 + 129 + 86 + 92 + 86 + 80 + 49 + 80 + 50 + 122 + 129 + 129 + 123 + 93 + 129 + 129 + 172 + 209 + 173 + 214 + 172 + 173 + 173 + 208 + 173 + 179 + 172 + 179 + 172 + 208 + 179 + 172 + 136 + 172 + 172 + 136 + 171 + 136 + 165 + 136 + 171 + 135 + 172 + 135 + 171 + 129 + 135 + 130 + 171 + 130 + 135 + 165 + 136 + 129 + 129 + 86 + 86 + 79 + 50 + 79 + 44 + 43 + 43 + 43 + 0 + 43 + 7 + 0 + 37 + 42 + 7 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 50 + 80 + 86 + 43 + 86 + 43 + 50 + 80 + 49 + 44 + 86 + 129 + 129 + 165 + 136 + 129 + 172 + 129 + 129 + 129 + 129 + 86 + 87 + 50 + 86 + 50 + 79 + 87 + 93 + 86 + 130 + 93 + 122 + 93 + 129 + 129 + 94 + 129 + 129 + 135 + 166 + 129 + 94 + 122 + 50 + 37 + 43 + 0 + 43 + 1 + 0 + 42 + 1 + 43 + 37 + 7 + 43 + 80 + 1 + 43 + 0 + 37 + 7 + 36 + 0 + 1 + 0 + 0 + 43 + 43 + 80 + 86 + 93 + 86 + 123 + 129 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 129 + 123 + 171 + 166 + 86 + 122 + 129 + 129 + 129 + 159 + 92 + 123 + 49 + 44 + 85 + 86 + 87 + 128 + 87 + 122 + 92 + 44 + 85 + 44 + 86 + 122 + 135 + 123 + 86 + 50 + 86 + 122 + 130 + 172 + 208 + 179 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 135 + 173 + 172 + 178 + 136 + 208 + 172 + 136 + 172 + 135 + 171 + 136 + 171 + 129 + 135 + 172 + 135 + 171 + 99 + 172 + 129 + 171 + 130 + 165 + 136 + 129 + 165 + 129 + 87 + 122 + 50 + 85 + 86 + 44 + 43 + 79 + 43 + 7 + 43 + 43 + 0 + 43 + 37 + 6 + 1 + 43 + 0 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 44 + 86 + 43 + 86 + 44 + 85 + 86 + 86 + 87 + 129 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 93 + 122 + 93 + 87 + 50 + 80 + 86 + 86 + 93 + 129 + 86 + 129 + 87 + 93 + 129 + 87 + 129 + 129 + 136 + 130 + 129 + 129 + 88 + 128 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 1 + 43 + 80 + 7 + 36 + 44 + 86 + 43 + 80 + 43 + 43 + 44 + 43 + 36 + 1 + 6 + 0 + 37 + 50 + 86 + 86 + 123 + 129 + 123 + 171 + 129 + 164 + 129 + 130 + 165 + 129 + 165 + 129 + 165 + 86 + 122 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 92 + 43 + 86 + 87 + 128 + 129 + 123 + 92 + 86 + 44 + 43 + 86 + 129 + 129 + 86 + 86 + 44 + 85 + 86 + 87 + 129 + 165 + 136 + 172 + 129 + 130 + 166 + 135 + 166 + 135 + 166 + 172 + 136 + 178 + 172 + 172 + 172 + 172 + 142 + 172 + 130 + 172 + 171 + 136 + 135 + 136 + 165 + 136 + 171 + 136 + 130 + 135 + 166 + 135 + 165 + 136 + 165 + 130 + 171 + 130 + 86 + 123 + 86 + 49 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 36 + 7 + 43 + 37 + 6 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 44 + 43 + 86 + 49 + 87 + 79 + 50 + 86 + 80 + 86 + 92 + 129 + 166 + 135 + 172 + 172 + 165 + 136 + 129 + 129 + 129 + 123 + 93 + 128 + 87 + 86 + 87 + 50 + 93 + 128 + 88 + 129 + 86 + 129 + 87 + 92 + 130 + 129 + 129 + 129 + 129 + 130 + 93 + 128 + 81 + 7 + 43 + 36 + 7 + 43 + 1 + 43 + 43 + 37 + 85 + 43 + 80 + 86 + 86 + 129 + 86 + 80 + 86 + 86 + 79 + 7 + 37 + 0 + 1 + 43 + 86 + 43 + 87 + 86 + 158 + 129 + 129 + 165 + 129 + 165 + 129 + 208 + 171 + 171 + 166 + 171 + 123 + 129 + 122 + 86 + 129 + 165 + 129 + 123 + 165 + 129 + 128 + 86 + 86 + 129 + 123 + 92 + 80 + 43 + 85 + 50 + 123 + 128 + 87 + 92 + 79 + 44 + 85 + 92 + 87 + 165 + 93 + 122 + 93 + 129 + 129 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 136 + 172 + 177 + 136 + 172 + 172 + 172 + 136 + 171 + 172 + 136 + 165 + 136 + 136 + 166 + 135 + 130 + 172 + 135 + 130 + 165 + 136 + 129 + 172 + 129 + 166 + 135 + 166 + 92 + 123 + 86 + 86 + 86 + 50 + 80 + 49 + 79 + 43 + 43 + 1 + 43 + 42 + 1 + 37 + 7 + 42 + 1 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 86 + 86 + 86 + 50 + 86 + 122 + 135 + 129 + 172 + 171 + 172 + 172 + 130 + 172 + 129 + 129 + 129 + 130 + 93 + 122 + 93 + 87 + 92 + 123 + 93 + 86 + 129 + 93 + 129 + 123 + 94 + 129 + 129 + 129 + 130 + 135 + 130 + 93 + 129 + 123 + 80 + 43 + 6 + 43 + 37 + 43 + 43 + 80 + 49 + 80 + 86 + 128 + 123 + 129 + 129 + 122 + 129 + 122 + 87 + 122 + 50 + 43 + 0 + 0 + 37 + 43 + 44 + 92 + 123 + 122 + 129 + 129 + 165 + 171 + 171 + 172 + 208 + 215 + 208 + 208 + 214 + 208 + 171 + 166 + 129 + 123 + 128 + 165 + 123 + 122 + 129 + 165 + 129 + 129 + 86 + 49 + 80 + 86 + 50 + 80 + 86 + 128 + 86 + 86 + 44 + 86 + 86 + 122 + 93 + 129 + 122 + 93 + 86 + 86 + 87 + 86 + 129 + 129 + 172 + 129 + 172 + 172 + 129 + 172 + 136 + 177 + 172 + 172 + 135 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 136 + 165 + 136 + 130 + 171 + 130 + 130 + 135 + 130 + 165 + 130 + 166 + 135 + 129 + 88 + 165 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 43 + 50 + 79 + 43 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 43 + 43 + 50 + 80 + 85 + 86 + 86 + 87 + 129 + 129 + 172 + 171 + 172 + 172 + 171 + 130 + 172 + 171 + 130 + 129 + 86 + 128 + 87 + 93 + 122 + 93 + 87 + 93 + 129 + 130 + 87 + 129 + 129 + 93 + 129 + 130 + 136 + 129 + 129 + 93 + 129 + 87 + 86 + 85 + 44 + 44 + 43 + 80 + 86 + 86 + 86 + 86 + 129 + 123 + 165 + 129 + 129 + 129 + 165 + 86 + 123 + 128 + 87 + 122 + 7 + 43 + 0 + 0 + 44 + 79 + 93 + 129 + 165 + 136 + 201 + 172 + 214 + 209 + 214 + 208 + 215 + 215 + 214 + 209 + 207 + 172 + 208 + 208 + 171 + 165 + 130 + 122 + 122 + 129 + 129 + 129 + 129 + 87 + 86 + 85 + 80 + 87 + 128 + 93 + 80 + 85 + 50 + 80 + 92 + 166 + 92 + 86 + 87 + 86 + 85 + 86 + 122 + 50 + 122 + 93 + 129 + 165 + 130 + 171 + 136 + 165 + 136 + 171 + 136 + 172 + 135 + 172 + 178 + 136 + 172 + 171 + 136 + 173 + 129 + 172 + 131 + 129 + 131 + 130 + 172 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 87 + 122 + 129 + 129 + 86 + 86 + 86 + 86 + 80 + 86 + 49 + 80 + 7 + 36 + 43 + 1 + 6 + 37 + 7 + 36 + 43 + 43 + 43 + 44 + 43 + 86 + 43 + 49 + 44 + 79 + 50 + 86 + 122 + 130 + 129 + 171 + 130 + 172 + 172 + 172 + 171 + 130 + 172 + 165 + 129 + 130 + 128 + 93 + 87 + 86 + 93 + 123 + 129 + 129 + 93 + 123 + 128 + 93 + 130 + 123 + 93 + 129 + 129 + 136 + 129 + 129 + 87 + 122 + 44 + 85 + 44 + 122 + 86 + 93 + 122 + 130 + 129 + 123 + 128 + 129 + 164 + 130 + 171 + 129 + 165 + 129 + 123 + 128 + 129 + 123 + 43 + 7 + 36 + 1 + 7 + 37 + 85 + 123 + 135 + 166 + 214 + 208 + 209 + 172 + 214 + 209 + 214 + 215 + 208 + 215 + 214 + 208 + 209 + 171 + 208 + 172 + 165 + 129 + 122 + 123 + 86 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 85 + 44 + 86 + 129 + 129 + 129 + 87 + 86 + 85 + 86 + 80 + 86 + 86 + 86 + 86 + 92 + 123 + 93 + 128 + 129 + 130 + 129 + 135 + 166 + 135 + 171 + 136 + 171 + 129 + 172 + 136 + 172 + 171 + 136 + 172 + 137 + 130 + 173 + 129 + 167 + 136 + 130 + 130 + 130 + 165 + 129 + 130 + 129 + 123 + 123 + 86 + 86 + 86 + 123 + 128 + 87 + 128 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 7 + 36 + 7 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 7 + 43 + 79 + 44 + 85 + 44 + 86 + 86 + 86 + 93 + 129 + 129 + 166 + 171 + 130 + 172 + 135 + 172 + 166 + 136 + 165 + 136 + 129 + 129 + 123 + 128 + 129 + 87 + 129 + 87 + 129 + 129 + 129 + 123 + 135 + 123 + 135 + 130 + 129 + 129 + 129 + 129 + 123 + 86 + 44 + 85 + 43 + 122 + 129 + 130 + 165 + 129 + 129 + 129 + 129 + 159 + 92 + 130 + 165 + 165 + 129 + 172 + 165 + 130 + 128 + 129 + 86 + 79 + 7 + 37 + 0 + 37 + 6 + 1 + 43 + 86 + 123 + 170 + 172 + 172 + 214 + 209 + 208 + 214 + 209 + 171 + 215 + 202 + 135 + 207 + 172 + 166 + 171 + 172 + 164 + 129 + 129 + 129 + 129 + 122 + 93 + 122 + 86 + 80 + 122 + 92 + 129 + 130 + 122 + 92 + 80 + 50 + 85 + 80 + 50 + 86 + 122 + 92 + 129 + 123 + 92 + 86 + 86 + 43 + 87 + 128 + 129 + 171 + 130 + 136 + 129 + 136 + 172 + 136 + 136 + 172 + 136 + 173 + 130 + 135 + 173 + 130 + 130 + 136 + 167 + 135 + 130 + 130 + 130 + 87 + 129 + 123 + 123 + 86 + 122 + 86 + 116 + 50 + 123 + 86 + 122 + 93 + 86 + 80 + 49 + 86 + 44 + 85 + 37 + 7 + 36 + 7 + 37 + 7 + 36 + 1 + 43 + 6 + 37 + 43 + 43 + 44 + 49 + 80 + 79 + 50 + 86 + 86 + 128 + 129 + 130 + 171 + 136 + 165 + 136 + 166 + 171 + 136 + 171 + 130 + 172 + 129 + 129 + 123 + 129 + 93 + 123 + 129 + 93 + 123 + 129 + 129 + 123 + 135 + 130 + 130 + 165 + 129 + 130 + 129 + 129 + 123 + 92 + 80 + 86 + 86 + 86 + 165 + 172 + 129 + 165 + 130 + 165 + 135 + 123 + 171 + 166 + 172 + 129 + 165 + 129 + 172 + 166 + 135 + 129 + 122 + 43 + 1 + 0 + 7 + 36 + 1 + 6 + 37 + 6 + 80 + 86 + 172 + 208 + 172 + 214 + 209 + 214 + 173 + 165 + 129 + 129 + 128 + 129 + 165 + 130 + 129 + 171 + 172 + 171 + 172 + 207 + 130 + 129 + 122 + 128 + 87 + 129 + 164 + 129 + 129 + 87 + 85 + 86 + 80 + 50 + 122 + 93 + 86 + 128 + 87 + 122 + 92 + 86 + 80 + 50 + 79 + 50 + 80 + 92 + 129 + 130 + 129 + 135 + 93 + 130 + 136 + 130 + 136 + 136 + 130 + 136 + 172 + 135 + 131 + 172 + 130 + 129 + 136 + 130 + 129 + 87 + 130 + 87 + 87 + 128 + 123 + 80 + 122 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 44 + 85 + 44 + 85 + 44 + 43 + 42 + 1 + 37 + 7 + 36 + 7 + 37 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 129 + 129 + 172 + 129 + 172 + 165 + 136 + 172 + 171 + 130 + 172 + 172 + 171 + 129 + 130 + 129 + 129 + 129 + 123 + 92 + 129 + 87 + 122 + 130 + 129 + 129 + 135 + 166 + 129 + 130 + 129 + 129 + 129 + 87 + 86 + 86 + 80 + 128 + 165 + 130 + 171 + 166 + 171 + 166 + 136 + 172 + 165 + 129 + 172 + 166 + 171 + 172 + 165 + 172 + 172 + 165 + 136 + 86 + 37 + 6 + 0 + 37 + 6 + 1 + 36 + 7 + 0 + 37 + 43 + 122 + 129 + 172 + 172 + 208 + 215 + 214 + 166 + 129 + 129 + 86 + 129 + 123 + 85 + 165 + 129 + 172 + 171 + 172 + 207 + 172 + 129 + 166 + 129 + 172 + 165 + 129 + 86 + 86 + 86 + 86 + 122 + 87 + 129 + 128 + 87 + 85 + 86 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 86 + 86 + 86 + 87 + 128 + 129 + 129 + 93 + 130 + 172 + 129 + 136 + 136 + 172 + 136 + 166 + 136 + 130 + 135 + 124 + 94 + 129 + 123 + 93 + 87 + 86 + 86 + 80 + 87 + 122 + 86 + 116 + 86 + 123 + 122 + 92 + 87 + 122 + 86 + 86 + 86 + 44 + 86 + 43 + 49 + 37 + 43 + 1 + 42 + 1 + 43 + 0 + 43 + 1 + 42 + 43 + 37 + 43 + 43 + 44 + 49 + 79 + 50 + 123 + 92 + 129 + 165 + 136 + 165 + 136 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 171 + 130 + 129 + 129 + 123 + 129 + 87 + 129 + 122 + 93 + 123 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 130 + 122 + 50 + 86 + 159 + 171 + 130 + 171 + 166 + 178 + 208 + 172 + 166 + 172 + 165 + 135 + 166 + 214 + 172 + 208 + 172 + 173 + 208 + 135 + 79 + 37 + 6 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 0 + 43 + 43 + 79 + 129 + 166 + 214 + 215 + 209 + 215 + 171 + 165 + 129 + 134 + 129 + 80 + 122 + 92 + 166 + 128 + 172 + 172 + 172 + 172 + 208 + 165 + 129 + 86 + 129 + 129 + 122 + 129 + 123 + 92 + 87 + 122 + 92 + 80 + 50 + 79 + 86 + 86 + 50 + 80 + 86 + 50 + 79 + 86 + 86 + 86 + 129 + 86 + 129 + 87 + 93 + 136 + 130 + 172 + 172 + 136 + 136 + 172 + 130 + 135 + 130 + 123 + 93 + 123 + 87 + 92 + 87 + 80 + 86 + 86 + 86 + 86 + 116 + 87 + 123 + 122 + 129 + 122 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 7 + 37 + 7 + 36 + 43 + 1 + 36 + 7 + 37 + 43 + 43 + 43 + 43 + 44 + 85 + 44 + 86 + 129 + 122 + 136 + 129 + 172 + 129 + 171 + 166 + 135 + 172 + 165 + 179 + 172 + 172 + 136 + 165 + 136 + 130 + 129 + 159 + 93 + 86 + 129 + 123 + 93 + 123 + 129 + 93 + 129 + 123 + 129 + 129 + 124 + 129 + 122 + 93 + 86 + 86 + 165 + 129 + 166 + 171 + 172 + 172 + 172 + 208 + 172 + 130 + 208 + 171 + 209 + 178 + 209 + 214 + 215 + 215 + 208 + 172 + 129 + 43 + 36 + 1 + 7 + 36 + 6 + 1 + 0 + 37 + 0 + 6 + 1 + 36 + 43 + 43 + 123 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 172 + 171 + 129 + 165 + 129 + 92 + 123 + 171 + 128 + 166 + 129 + 172 + 129 + 123 + 129 + 164 + 129 + 93 + 123 + 128 + 87 + 86 + 80 + 86 + 86 + 85 + 50 + 80 + 43 + 49 + 80 + 43 + 86 + 43 + 86 + 50 + 86 + 86 + 129 + 129 + 136 + 165 + 136 + 135 + 130 + 172 + 130 + 136 + 129 + 130 + 129 + 86 + 87 + 86 + 86 + 50 + 87 + 80 + 86 + 86 + 50 + 116 + 86 + 123 + 123 + 128 + 123 + 123 + 128 + 129 + 123 + 129 + 122 + 92 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 36 + 7 + 37 + 43 + 7 + 43 + 43 + 79 + 50 + 80 + 92 + 129 + 129 + 165 + 136 + 165 + 136 + 166 + 135 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 130 + 93 + 128 + 87 + 128 + 87 + 129 + 123 + 93 + 129 + 123 + 128 + 123 + 93 + 86 + 87 + 122 + 50 + 129 + 165 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 171 + 166 + 208 + 215 + 215 + 214 + 215 + 209 + 215 + 215 + 209 + 172 + 128 + 37 + 43 + 7 + 36 + 1 + 0 + 6 + 1 + 36 + 1 + 0 + 43 + 1 + 36 + 43 + 43 + 129 + 208 + 214 + 215 + 215 + 208 + 172 + 208 + 215 + 171 + 173 + 171 + 165 + 87 + 129 + 129 + 165 + 129 + 171 + 166 + 129 + 171 + 123 + 86 + 123 + 92 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 43 + 44 + 79 + 50 + 79 + 86 + 50 + 86 + 86 + 86 + 86 + 123 + 129 + 129 + 136 + 165 + 130 + 129 + 130 + 129 + 136 + 123 + 92 + 129 + 86 + 86 + 81 + 49 + 86 + 44 + 86 + 86 + 87 + 80 + 86 + 86 + 123 + 128 + 123 + 159 + 128 + 123 + 129 + 129 + 165 + 87 + 128 + 87 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 36 + 7 + 37 + 0 + 43 + 1 + 43 + 43 + 37 + 43 + 49 + 79 + 44 + 86 + 129 + 129 + 129 + 165 + 136 + 165 + 136 + 165 + 136 + 172 + 166 + 171 + 172 + 172 + 136 + 165 + 136 + 166 + 129 + 130 + 129 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 123 + 93 + 122 + 93 + 122 + 94 + 122 + 92 + 123 + 86 + 130 + 165 + 172 + 172 + 172 + 172 + 208 + 172 + 208 + 166 + 172 + 215 + 214 + 215 + 215 + 215 + 208 + 215 + 208 + 172 + 172 + 86 + 37 + 6 + 37 + 6 + 37 + 6 + 37 + 43 + 43 + 43 + 79 + 7 + 36 + 43 + 37 + 6 + 80 + 165 + 208 + 178 + 209 + 129 + 135 + 172 + 165 + 214 + 208 + 214 + 214 + 208 + 171 + 136 + 165 + 172 + 166 + 172 + 165 + 129 + 128 + 87 + 129 + 122 + 129 + 93 + 129 + 123 + 92 + 128 + 123 + 93 + 128 + 87 + 92 + 128 + 87 + 85 + 87 + 86 + 85 + 86 + 86 + 123 + 92 + 129 + 87 + 129 + 93 + 123 + 92 + 123 + 93 + 86 + 93 + 123 + 85 + 44 + 86 + 80 + 49 + 80 + 79 + 86 + 86 + 87 + 122 + 129 + 122 + 123 + 129 + 159 + 86 + 129 + 165 + 129 + 129 + 128 + 87 + 86 + 86 + 79 + 50 + 79 + 7 + 37 + 43 + 43 + 0 + 7 + 36 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 86 + 123 + 135 + 129 + 130 + 165 + 135 + 166 + 135 + 166 + 136 + 171 + 130 + 172 + 129 + 172 + 129 + 166 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 129 + 165 + 129 + 130 + 129 + 93 + 129 + 165 + 130 + 86 + 123 + 92 + 123 + 93 + 165 + 130 + 178 + 208 + 172 + 208 + 166 + 172 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 172 + 86 + 43 + 36 + 7 + 37 + 43 + 6 + 80 + 43 + 86 + 79 + 50 + 86 + 79 + 80 + 85 + 43 + 37 + 42 + 87 + 165 + 178 + 209 + 86 + 86 + 164 + 93 + 165 + 215 + 215 + 215 + 215 + 214 + 172 + 209 + 214 + 172 + 208 + 165 + 136 + 171 + 165 + 130 + 164 + 129 + 130 + 129 + 135 + 129 + 159 + 93 + 128 + 87 + 122 + 86 + 86 + 50 + 37 + 42 + 43 + 44 + 85 + 86 + 86 + 92 + 124 + 128 + 87 + 86 + 86 + 93 + 123 + 92 + 124 + 128 + 87 + 86 + 85 + 86 + 80 + 86 + 44 + 85 + 80 + 86 + 87 + 122 + 129 + 122 + 159 + 92 + 123 + 122 + 81 + 171 + 129 + 129 + 123 + 92 + 86 + 80 + 50 + 44 + 85 + 43 + 43 + 37 + 6 + 37 + 7 + 0 + 43 + 37 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 92 + 122 + 130 + 135 + 165 + 135 + 166 + 135 + 166 + 135 + 165 + 136 + 166 + 135 + 130 + 165 + 136 + 165 + 136 + 165 + 129 + 130 + 129 + 136 + 165 + 130 + 129 + 129 + 129 + 130 + 129 + 166 + 129 + 166 + 136 + 129 + 166 + 135 + 166 + 172 + 172 + 208 + 172 + 208 + 173 + 171 + 172 + 172 + 215 + 209 + 215 + 215 + 214 + 209 + 215 + 209 + 214 + 172 + 166 + 85 + 1 + 0 + 43 + 43 + 43 + 86 + 80 + 49 + 87 + 86 + 85 + 80 + 50 + 85 + 80 + 86 + 36 + 43 + 43 + 165 + 172 + 215 + 122 + 86 + 129 + 86 + 86 + 209 + 178 + 208 + 208 + 178 + 209 + 214 + 208 + 173 + 172 + 172 + 171 + 130 + 165 + 128 + 87 + 86 + 128 + 123 + 129 + 93 + 129 + 85 + 87 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 79 + 50 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 123 + 86 + 123 + 129 + 129 + 93 + 123 + 129 + 86 + 86 + 86 + 122 + 79 + 86 + 80 + 86 + 129 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 80 + 165 + 129 + 93 + 128 + 86 + 86 + 86 + 80 + 50 + 85 + 44 + 43 + 43 + 37 + 0 + 7 + 36 + 7 + 37 + 7 + 37 + 43 + 43 + 43 + 43 + 79 + 87 + 92 + 129 + 129 + 129 + 166 + 135 + 129 + 129 + 130 + 129 + 129 + 123 + 129 + 129 + 135 + 165 + 136 + 166 + 129 + 130 + 171 + 130 + 165 + 136 + 129 + 123 + 129 + 129 + 87 + 129 + 129 + 129 + 166 + 135 + 130 + 129 + 166 + 129 + 172 + 172 + 215 + 172 + 208 + 172 + 172 + 208 + 172 + 215 + 215 + 208 + 208 + 172 + 172 + 215 + 215 + 208 + 172 + 129 + 79 + 0 + 43 + 43 + 43 + 86 + 87 + 86 + 86 + 86 + 122 + 93 + 122 + 86 + 86 + 80 + 43 + 85 + 44 + 79 + 129 + 135 + 209 + 171 + 165 + 128 + 86 + 128 + 123 + 129 + 208 + 215 + 214 + 172 + 166 + 172 + 172 + 208 + 136 + 165 + 129 + 165 + 129 + 129 + 86 + 123 + 129 + 129 + 129 + 129 + 86 + 93 + 122 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 85 + 87 + 86 + 86 + 123 + 86 + 129 + 87 + 129 + 165 + 129 + 172 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 87 + 116 + 92 + 123 + 128 + 123 + 123 + 122 + 86 + 122 + 86 + 123 + 86 + 129 + 122 + 93 + 86 + 86 + 85 + 80 + 50 + 43 + 43 + 43 + 37 + 6 + 37 + 7 + 36 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 85 + 44 + 86 + 129 + 128 + 87 + 129 + 129 + 129 + 86 + 86 + 92 + 86 + 87 + 86 + 129 + 128 + 130 + 129 + 129 + 172 + 129 + 130 + 166 + 135 + 130 + 129 + 165 + 93 + 129 + 123 + 129 + 129 + 172 + 130 + 129 + 129 + 129 + 166 + 172 + 172 + 172 + 208 + 172 + 165 + 136 + 208 + 215 + 208 + 179 + 208 + 208 + 172 + 130 + 214 + 208 + 215 + 209 + 171 + 87 + 85 + 1 + 43 + 43 + 86 + 86 + 122 + 86 + 93 + 128 + 87 + 128 + 86 + 86 + 86 + 86 + 122 + 80 + 86 + 49 + 80 + 172 + 172 + 172 + 172 + 166 + 129 + 164 + 135 + 122 + 129 + 135 + 171 + 166 + 129 + 165 + 172 + 166 + 135 + 166 + 171 + 129 + 123 + 86 + 129 + 128 + 130 + 128 + 123 + 129 + 129 + 129 + 86 + 86 + 87 + 85 + 79 + 50 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 79 + 86 + 123 + 92 + 123 + 129 + 129 + 130 + 129 + 172 + 172 + 165 + 165 + 129 + 123 + 129 + 122 + 129 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 123 + 86 + 122 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 86 + 87 + 79 + 50 + 86 + 43 + 80 + 43 + 6 + 1 + 43 + 0 + 1 + 43 + 43 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 44 + 86 + 43 + 86 + 86 + 86 + 51 + 79 + 50 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 93 + 129 + 130 + 165 + 129 + 130 + 166 + 135 + 130 + 123 + 129 + 129 + 128 + 87 + 130 + 171 + 129 + 130 + 129 + 171 + 130 + 208 + 172 + 215 + 172 + 209 + 172 + 214 + 208 + 172 + 214 + 173 + 208 + 130 + 214 + 209 + 215 + 215 + 214 + 166 + 86 + 85 + 44 + 79 + 50 + 79 + 129 + 87 + 135 + 123 + 128 + 123 + 129 + 93 + 86 + 79 + 87 + 86 + 86 + 86 + 79 + 86 + 129 + 172 + 130 + 207 + 172 + 214 + 208 + 172 + 129 + 166 + 171 + 166 + 165 + 135 + 202 + 172 + 129 + 129 + 122 + 87 + 86 + 129 + 128 + 123 + 128 + 135 + 166 + 129 + 129 + 129 + 166 + 129 + 129 + 92 + 122 + 86 + 123 + 86 + 86 + 86 + 122 + 86 + 86 + 86 + 80 + 50 + 86 + 86 + 122 + 87 + 129 + 166 + 172 + 172 + 166 + 136 + 172 + 165 + 165 + 136 + 165 + 129 + 122 + 123 + 93 + 158 + 123 + 129 + 122 + 122 + 116 + 87 + 122 + 85 + 87 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 44 + 86 + 85 + 44 + 86 + 7 + 37 + 6 + 1 + 43 + 43 + 1 + 43 + 44 + 43 + 43 + 7 + 36 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 50 + 43 + 44 + 85 + 50 + 123 + 93 + 129 + 130 + 93 + 129 + 123 + 129 + 129 + 136 + 159 + 129 + 94 + 165 + 129 + 129 + 129 + 130 + 93 + 165 + 93 + 165 + 130 + 171 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 215 + 209 + 172 + 171 + 166 + 178 + 208 + 172 + 209 + 214 + 215 + 209 + 172 + 86 + 85 + 80 + 49 + 80 + 86 + 123 + 135 + 129 + 165 + 93 + 130 + 128 + 123 + 87 + 85 + 86 + 87 + 86 + 86 + 86 + 44 + 128 + 130 + 166 + 214 + 208 + 179 + 208 + 209 + 171 + 208 + 179 + 208 + 214 + 172 + 166 + 172 + 165 + 129 + 172 + 129 + 123 + 92 + 122 + 123 + 129 + 92 + 159 + 129 + 86 + 122 + 93 + 165 + 129 + 123 + 128 + 129 + 86 + 123 + 86 + 128 + 93 + 123 + 122 + 43 + 43 + 86 + 44 + 123 + 93 + 129 + 129 + 166 + 135 + 166 + 172 + 172 + 165 + 136 + 165 + 129 + 165 + 130 + 122 + 93 + 122 + 159 + 123 + 165 + 122 + 122 + 87 + 122 + 122 + 80 + 86 + 49 + 80 + 50 + 79 + 87 + 85 + 50 + 86 + 44 + 79 + 50 + 43 + 43 + 44 + 43 + 43 + 50 + 43 + 80 + 7 + 43 + 43 + 1 + 37 + 0 + 43 + 1 + 36 + 7 + 43 + 43 + 44 + 43 + 43 + 43 + 50 + 86 + 87 + 129 + 86 + 129 + 93 + 123 + 129 + 129 + 130 + 129 + 166 + 129 + 129 + 136 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 129 + 171 + 136 + 166 + 172 + 172 + 172 + 208 + 136 + 208 + 173 + 214 + 215 + 166 + 128 + 166 + 172 + 214 + 173 + 172 + 208 + 214 + 179 + 202 + 86 + 85 + 43 + 44 + 79 + 50 + 123 + 93 + 172 + 165 + 136 + 129 + 166 + 87 + 128 + 87 + 86 + 122 + 87 + 86 + 86 + 86 + 87 + 171 + 172 + 208 + 179 + 209 + 214 + 208 + 173 + 208 + 215 + 215 + 208 + 179 + 207 + 130 + 165 + 128 + 123 + 129 + 129 + 172 + 129 + 165 + 123 + 128 + 87 + 122 + 92 + 122 + 80 + 86 + 86 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 128 + 116 + 50 + 43 + 43 + 80 + 86 + 129 + 93 + 165 + 130 + 130 + 172 + 172 + 166 + 173 + 165 + 136 + 165 + 129 + 123 + 93 + 122 + 123 + 165 + 123 + 158 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 79 + 43 + 44 + 79 + 43 + 86 + 50 + 80 + 49 + 80 + 43 + 14 + 37 + 6 + 43 + 1 + 44 + 49 + 80 + 50 + 44 + 79 + 50 + 37 + 6 + 37 + 7 + 37 + 6 + 37 + 44 + 49 + 80 + 43 + 50 + 44 + 93 + 86 + 87 + 129 + 86 + 87 + 92 + 123 + 129 + 136 + 165 + 130 + 171 + 130 + 166 + 135 + 130 + 129 + 165 + 136 + 129 + 172 + 171 + 130 + 171 + 130 + 172 + 172 + 172 + 208 + 171 + 173 + 208 + 208 + 172 + 171 + 130 + 172 + 208 + 172 + 172 + 165 + 129 + 172 + 215 + 172 + 165 + 79 + 50 + 43 + 80 + 86 + 92 + 124 + 171 + 130 + 172 + 129 + 166 + 129 + 93 + 129 + 86 + 87 + 122 + 87 + 86 + 87 + 129 + 172 + 208 + 214 + 173 + 208 + 178 + 209 + 215 + 215 + 209 + 214 + 208 + 215 + 215 + 166 + 129 + 129 + 129 + 164 + 166 + 135 + 166 + 171 + 166 + 129 + 129 + 129 + 122 + 122 + 93 + 86 + 122 + 129 + 129 + 123 + 128 + 123 + 135 + 123 + 86 + 122 + 86 + 43 + 43 + 86 + 80 + 86 + 92 + 123 + 92 + 166 + 129 + 172 + 172 + 165 + 172 + 166 + 130 + 129 + 165 + 129 + 122 + 87 + 123 + 122 + 165 + 123 + 122 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 43 + 43 + 80 + 49 + 43 + 44 + 43 + 85 + 44 + 79 + 50 + 44 + 43 + 7 + 43 + 0 + 43 + 8 + 43 + 37 + 42 + 7 + 37 + 43 + 50 + 79 + 44 + 86 + 86 + 93 + 86 + 86 + 86 + 50 + 87 + 86 + 129 + 123 + 93 + 87 + 93 + 123 + 130 + 171 + 130 + 172 + 171 + 130 + 166 + 135 + 130 + 165 + 130 + 135 + 129 + 166 + 135 + 165 + 130 + 135 + 172 + 166 + 171 + 173 + 208 + 178 + 208 + 173 + 172 + 165 + 171 + 173 + 172 + 208 + 129 + 129 + 123 + 128 + 172 + 215 + 208 + 172 + 122 + 87 + 85 + 86 + 87 + 86 + 129 + 130 + 166 + 135 + 166 + 130 + 171 + 130 + 123 + 86 + 93 + 129 + 122 + 87 + 86 + 129 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 215 + 215 + 215 + 172 + 215 + 208 + 172 + 165 + 93 + 129 + 166 + 171 + 208 + 130 + 165 + 172 + 171 + 166 + 171 + 135 + 159 + 129 + 129 + 129 + 128 + 123 + 129 + 165 + 129 + 93 + 158 + 87 + 128 + 80 + 85 + 44 + 79 + 50 + 80 + 92 + 87 + 122 + 129 + 130 + 129 + 172 + 167 + 135 + 166 + 173 + 165 + 129 + 165 + 94 + 122 + 87 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 129 + 86 + 86 + 80 + 49 + 80 + 43 + 50 + 43 + 43 + 37 + 6 + 43 + 7 + 43 + 1 + 43 + 44 + 50 + 85 + 44 + 43 + 7 + 43 + 1 + 36 + 7 + 37 + 7 + 36 + 43 + 44 + 44 + 85 + 87 + 86 + 86 + 87 + 92 + 129 + 87 + 92 + 123 + 93 + 86 + 86 + 123 + 130 + 135 + 166 + 129 + 129 + 130 + 129 + 172 + 129 + 165 + 136 + 165 + 136 + 165 + 130 + 135 + 165 + 136 + 172 + 209 + 214 + 209 + 178 + 209 + 171 + 166 + 172 + 208 + 179 + 165 + 86 + 86 + 165 + 165 + 172 + 215 + 209 + 135 + 129 + 122 + 44 + 86 + 86 + 123 + 86 + 130 + 129 + 173 + 129 + 172 + 129 + 166 + 129 + 87 + 86 + 130 + 165 + 93 + 86 + 86 + 129 + 129 + 130 + 165 + 179 + 215 + 172 + 209 + 178 + 215 + 208 + 172 + 179 + 201 + 130 + 135 + 165 + 172 + 172 + 172 + 208 + 173 + 165 + 172 + 172 + 165 + 136 + 165 + 165 + 129 + 129 + 128 + 123 + 86 + 129 + 129 + 164 + 129 + 129 + 122 + 86 + 43 + 80 + 43 + 44 + 86 + 86 + 122 + 87 + 129 + 123 + 136 + 166 + 172 + 166 + 172 + 166 + 136 + 165 + 129 + 123 + 122 + 93 + 116 + 87 + 123 + 86 + 123 + 87 + 93 + 87 + 87 + 86 + 129 + 86 + 86 + 122 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 37 + 6 + 8 + 43 + 43 + 44 + 43 + 7 + 43 + 43 + 44 + 37 + 43 + 44 + 85 + 44 + 86 + 122 + 93 + 123 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 86 + 93 + 123 + 93 + 165 + 130 + 172 + 135 + 130 + 129 + 123 + 86 + 171 + 130 + 129 + 171 + 130 + 171 + 130 + 135 + 166 + 172 + 214 + 209 + 215 + 172 + 209 + 172 + 172 + 208 + 214 + 215 + 172 + 172 + 123 + 43 + 165 + 178 + 209 + 208 + 215 + 129 + 166 + 86 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 171 + 166 + 136 + 165 + 136 + 166 + 93 + 122 + 129 + 130 + 129 + 129 + 129 + 129 + 87 + 86 + 129 + 171 + 172 + 165 + 179 + 172 + 172 + 172 + 172 + 129 + 165 + 130 + 171 + 208 + 172 + 166 + 172 + 172 + 172 + 171 + 165 + 130 + 171 + 129 + 166 + 166 + 135 + 129 + 123 + 165 + 93 + 165 + 129 + 165 + 129 + 129 + 122 + 50 + 79 + 44 + 43 + 85 + 44 + 86 + 80 + 93 + 86 + 129 + 129 + 166 + 135 + 166 + 165 + 172 + 131 + 171 + 165 + 123 + 93 + 122 + 87 + 122 + 87 + 123 + 80 + 92 + 80 + 50 + 87 + 122 + 129 + 93 + 122 + 87 + 86 + 85 + 43 + 43 + 43 + 43 + 43 + 43 + 8 + 36 + 7 + 1 + 43 + 43 + 7 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 37 + 7 + 43 + 79 + 86 + 87 + 92 + 130 + 129 + 87 + 129 + 136 + 129 + 129 + 130 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 123 + 86 + 129 + 123 + 93 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 173 + 208 + 214 + 215 + 173 + 208 + 135 + 123 + 165 + 136 + 208 + 172 + 208 + 173 + 171 + 129 + 86 + 80 + 86 + 86 + 129 + 129 + 124 + 129 + 135 + 172 + 167 + 172 + 129 + 172 + 129 + 87 + 165 + 136 + 166 + 172 + 172 + 129 + 86 + 49 + 80 + 50 + 87 + 171 + 129 + 136 + 172 + 171 + 172 + 172 + 166 + 172 + 207 + 172 + 173 + 208 + 172 + 214 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 166 + 129 + 172 + 123 + 128 + 123 + 129 + 128 + 130 + 129 + 164 + 87 + 122 + 80 + 43 + 49 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 93 + 166 + 129 + 166 + 135 + 166 + 129 + 172 + 123 + 129 + 129 + 122 + 80 + 87 + 50 + 80 + 87 + 80 + 51 + 86 + 51 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 43 + 44 + 43 + 7 + 37 + 43 + 7 + 37 + 0 + 43 + 0 + 43 + 1 + 43 + 80 + 86 + 93 + 123 + 136 + 129 + 129 + 129 + 93 + 130 + 129 + 130 + 93 + 87 + 85 + 80 + 50 + 86 + 86 + 87 + 86 + 87 + 86 + 129 + 129 + 129 + 129 + 172 + 173 + 172 + 171 + 172 + 130 + 171 + 129 + 172 + 166 + 172 + 172 + 208 + 215 + 215 + 215 + 215 + 208 + 166 + 128 + 129 + 172 + 208 + 209 + 178 + 172 + 166 + 172 + 165 + 86 + 79 + 87 + 92 + 123 + 129 + 129 + 129 + 130 + 172 + 172 + 172 + 165 + 172 + 130 + 92 + 123 + 136 + 173 + 172 + 166 + 129 + 50 + 43 + 44 + 86 + 92 + 166 + 136 + 172 + 215 + 179 + 208 + 172 + 215 + 208 + 173 + 214 + 172 + 209 + 214 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 165 + 136 + 172 + 166 + 165 + 86 + 122 + 93 + 128 + 166 + 129 + 122 + 129 + 86 + 79 + 43 + 44 + 85 + 80 + 86 + 86 + 87 + 86 + 129 + 130 + 129 + 165 + 136 + 166 + 165 + 136 + 159 + 135 + 159 + 93 + 122 + 80 + 50 + 80 + 51 + 79 + 51 + 44 + 51 + 44 + 86 + 79 + 86 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 80 + 43 + 50 + 7 + 43 + 43 + 80 + 50 + 44 + 43 + 43 + 7 + 37 + 43 + 43 + 44 + 43 + 86 + 86 + 86 + 129 + 130 + 172 + 129 + 136 + 172 + 130 + 136 + 165 + 130 + 135 + 130 + 93 + 122 + 87 + 86 + 86 + 80 + 50 + 80 + 123 + 92 + 166 + 172 + 136 + 171 + 172 + 166 + 171 + 129 + 136 + 129 + 129 + 123 + 136 + 165 + 172 + 214 + 209 + 214 + 215 + 173 + 214 + 209 + 129 + 129 + 165 + 172 + 172 + 215 + 208 + 165 + 136 + 172 + 166 + 128 + 80 + 87 + 129 + 129 + 129 + 130 + 130 + 171 + 166 + 178 + 166 + 173 + 130 + 171 + 129 + 87 + 166 + 135 + 130 + 165 + 93 + 43 + 43 + 43 + 44 + 92 + 136 + 172 + 172 + 215 + 215 + 215 + 178 + 215 + 209 + 214 + 209 + 215 + 214 + 173 + 214 + 209 + 208 + 172 + 129 + 172 + 165 + 130 + 171 + 165 + 130 + 129 + 128 + 123 + 129 + 122 + 129 + 86 + 122 + 93 + 79 + 86 + 80 + 49 + 86 + 80 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 165 + 136 + 165 + 130 + 129 + 165 + 129 + 130 + 122 + 86 + 80 + 86 + 44 + 80 + 51 + 50 + 81 + 14 + 51 + 79 + 44 + 43 + 86 + 79 + 86 + 50 + 79 + 44 + 49 + 43 + 43 + 44 + 85 + 44 + 43 + 86 + 86 + 87 + 86 + 50 + 86 + 44 + 43 + 86 + 44 + 123 + 129 + 93 + 165 + 130 + 171 + 172 + 173 + 172 + 172 + 130 + 172 + 135 + 172 + 130 + 129 + 130 + 129 + 129 + 86 + 129 + 86 + 44 + 86 + 122 + 136 + 166 + 172 + 129 + 135 + 130 + 129 + 123 + 128 + 93 + 129 + 123 + 128 + 130 + 129 + 171 + 173 + 208 + 215 + 172 + 208 + 172 + 172 + 208 + 179 + 208 + 129 + 172 + 166 + 171 + 209 + 171 + 166 + 172 + 172 + 129 + 43 + 129 + 129 + 130 + 172 + 165 + 172 + 129 + 173 + 172 + 172 + 172 + 172 + 173 + 165 + 136 + 123 + 129 + 93 + 129 + 123 + 86 + 49 + 50 + 43 + 86 + 136 + 172 + 173 + 178 + 215 + 215 + 215 + 215 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 178 + 208 + 129 + 129 + 165 + 166 + 136 + 164 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 122 + 92 + 86 + 80 + 86 + 79 + 87 + 86 + 50 + 86 + 80 + 92 + 123 + 86 + 129 + 130 + 129 + 165 + 131 + 171 + 130 + 123 + 129 + 123 + 93 + 116 + 86 + 86 + 45 + 52 + 49 + 81 + 51 + 50 + 45 + 43 + 50 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 85 + 44 + 43 + 43 + 44 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 122 + 93 + 123 + 136 + 165 + 172 + 172 + 173 + 172 + 173 + 172 + 172 + 209 + 172 + 172 + 137 + 171 + 130 + 130 + 135 + 165 + 136 + 129 + 129 + 166 + 135 + 166 + 172 + 136 + 165 + 129 + 136 + 123 + 92 + 122 + 86 + 130 + 171 + 136 + 165 + 129 + 136 + 129 + 165 + 130 + 214 + 215 + 172 + 172 + 173 + 172 + 208 + 179 + 208 + 172 + 165 + 136 + 166 + 171 + 130 + 129 + 129 + 165 + 129 + 130 + 129 + 172 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 179 + 172 + 208 + 173 + 209 + 172 + 171 + 87 + 128 + 130 + 122 + 129 + 86 + 1 + 43 + 129 + 129 + 172 + 178 + 209 + 178 + 209 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 208 + 215 + 172 + 172 + 165 + 165 + 136 + 165 + 172 + 172 + 123 + 128 + 123 + 128 + 87 + 122 + 92 + 123 + 79 + 50 + 79 + 79 + 50 + 80 + 50 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 129 + 130 + 130 + 130 + 129 + 94 + 123 + 129 + 88 + 86 + 87 + 51 + 81 + 50 + 9 + 50 + 51 + 45 + 50 + 43 + 43 + 37 + 7 + 43 + 80 + 86 + 49 + 80 + 43 + 44 + 85 + 44 + 86 + 44 + 86 + 86 + 129 + 129 + 129 + 130 + 129 + 136 + 166 + 129 + 172 + 172 + 173 + 209 + 172 + 179 + 173 + 208 + 173 + 178 + 173 + 172 + 172 + 167 + 136 + 165 + 129 + 130 + 172 + 215 + 172 + 172 + 172 + 129 + 172 + 129 + 129 + 87 + 129 + 122 + 129 + 130 + 129 + 135 + 129 + 166 + 136 + 165 + 129 + 129 + 93 + 129 + 165 + 172 + 136 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 135 + 123 + 129 + 87 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 166 + 179 + 172 + 165 + 136 + 129 + 172 + 172 + 209 + 214 + 172 + 172 + 172 + 172 + 166 + 128 + 123 + 172 + 129 + 171 + 87 + 43 + 36 + 43 + 87 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 208 + 178 + 209 + 172 + 172 + 208 + 215 + 172 + 215 + 172 + 208 + 172 + 215 + 172 + 166 + 172 + 171 + 166 + 128 + 129 + 129 + 123 + 122 + 86 + 86 + 79 + 86 + 43 + 43 + 86 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 87 + 129 + 130 + 129 + 93 + 130 + 93 + 129 + 88 + 86 + 87 + 87 + 87 + 51 + 51 + 45 + 50 + 15 + 45 + 50 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 43 + 43 + 1 + 80 + 49 + 81 + 86 + 86 + 92 + 123 + 130 + 171 + 131 + 172 + 172 + 172 + 171 + 173 + 209 + 173 + 214 + 173 + 215 + 209 + 178 + 209 + 173 + 178 + 209 + 172 + 173 + 171 + 166 + 136 + 165 + 130 + 136 + 129 + 166 + 135 + 166 + 129 + 135 + 129 + 130 + 129 + 165 + 93 + 129 + 166 + 178 + 172 + 172 + 172 + 165 + 136 + 122 + 93 + 129 + 86 + 129 + 129 + 130 + 165 + 135 + 172 + 172 + 166 + 172 + 171 + 130 + 135 + 130 + 123 + 122 + 86 + 50 + 80 + 44 + 43 + 86 + 123 + 135 + 172 + 172 + 172 + 129 + 165 + 136 + 166 + 172 + 178 + 172 + 172 + 165 + 166 + 129 + 165 + 93 + 165 + 172 + 172 + 171 + 129 + 80 + 43 + 43 + 43 + 43 + 43 + 80 + 85 + 43 + 80 + 43 + 85 + 80 + 43 + 123 + 128 + 129 + 130 + 165 + 165 + 172 + 172 + 172 + 208 + 173 + 172 + 171 + 172 + 166 + 171 + 165 + 129 + 86 + 123 + 85 + 50 + 79 + 80 + 85 + 44 + 121 + 50 + 80 + 50 + 79 + 87 + 92 + 123 + 129 + 123 + 129 + 93 + 93 + 94 + 123 + 87 + 93 + 87 + 88 + 51 + 80 + 51 + 50 + 45 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 0 + 43 + 43 + 80 + 43 + 50 + 79 + 43 + 43 + 43 + 50 + 123 + 93 + 166 + 129 + 215 + 172 + 209 + 179 + 209 + 215 + 179 + 214 + 209 + 179 + 209 + 214 + 179 + 209 + 172 + 173 + 172 + 178 + 166 + 172 + 129 + 129 + 130 + 129 + 129 + 129 + 166 + 135 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 172 + 166 + 178 + 172 + 172 + 173 + 172 + 171 + 172 + 172 + 135 + 165 + 171 + 129 + 87 + 87 + 128 + 130 + 171 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 86 + 86 + 44 + 79 + 8 + 79 + 86 + 87 + 135 + 165 + 172 + 172 + 130 + 135 + 166 + 129 + 129 + 129 + 130 + 129 + 128 + 165 + 129 + 129 + 123 + 86 + 92 + 202 + 215 + 172 + 208 + 129 + 165 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 79 + 86 + 80 + 85 + 86 + 86 + 80 + 85 + 86 + 80 + 129 + 129 + 165 + 172 + 171 + 173 + 172 + 207 + 172 + 166 + 172 + 171 + 129 + 123 + 86 + 79 + 86 + 43 + 86 + 122 + 86 + 86 + 86 + 80 + 86 + 44 + 86 + 87 + 86 + 122 + 88 + 92 + 87 + 93 + 87 + 86 + 87 + 51 + 87 + 45 + 87 + 51 + 51 + 45 + 50 + 51 + 45 + 50 + 51 + 45 + 7 + 42 + 37 + 7 + 36 + 1 + 43 + 43 + 44 + 43 + 43 + 80 + 86 + 86 + 129 + 136 + 209 + 173 + 172 + 215 + 215 + 173 + 215 + 215 + 209 + 179 + 215 + 209 + 172 + 179 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 130 + 129 + 86 + 93 + 122 + 130 + 129 + 166 + 172 + 178 + 172 + 172 + 172 + 165 + 172 + 172 + 172 + 172 + 136 + 171 + 166 + 136 + 165 + 135 + 166 + 135 + 166 + 136 + 172 + 128 + 123 + 92 + 87 + 122 + 93 + 122 + 93 + 129 + 129 + 122 + 93 + 123 + 86 + 87 + 128 + 86 + 44 + 86 + 86 + 130 + 171 + 172 + 173 + 171 + 123 + 93 + 165 + 93 + 123 + 128 + 87 + 128 + 129 + 123 + 129 + 129 + 122 + 86 + 86 + 129 + 208 + 173 + 172 + 208 + 178 + 166 + 171 + 123 + 171 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 165 + 166 + 135 + 123 + 128 + 123 + 129 + 165 + 135 + 166 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 129 + 86 + 86 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 80 + 50 + 80 + 50 + 79 + 87 + 86 + 129 + 123 + 93 + 86 + 51 + 87 + 44 + 51 + 87 + 44 + 86 + 51 + 45 + 50 + 9 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 43 + 0 + 43 + 37 + 7 + 37 + 6 + 37 + 43 + 50 + 86 + 129 + 166 + 172 + 179 + 208 + 173 + 215 + 215 + 209 + 215 + 215 + 215 + 179 + 209 + 214 + 173 + 173 + 208 + 172 + 136 + 166 + 172 + 130 + 129 + 129 + 86 + 80 + 86 + 92 + 123 + 136 + 172 + 208 + 179 + 209 + 178 + 172 + 208 + 173 + 172 + 172 + 135 + 172 + 172 + 165 + 136 + 165 + 136 + 166 + 172 + 172 + 135 + 166 + 135 + 130 + 164 + 93 + 122 + 86 + 93 + 129 + 129 + 130 + 129 + 166 + 172 + 129 + 129 + 86 + 37 + 50 + 122 + 172 + 179 + 172 + 214 + 130 + 86 + 123 + 92 + 123 + 86 + 93 + 128 + 123 + 129 + 129 + 129 + 165 + 129 + 80 + 85 + 86 + 129 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 173 + 207 + 172 + 172 + 165 + 172 + 172 + 172 + 166 + 171 + 166 + 135 + 129 + 130 + 158 + 129 + 130 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 172 + 123 + 128 + 86 + 123 + 86 + 122 + 128 + 87 + 129 + 86 + 86 + 122 + 50 + 80 + 86 + 43 + 87 + 128 + 129 + 87 + 93 + 123 + 50 + 80 + 44 + 49 + 51 + 81 + 50 + 15 + 81 + 51 + 14 + 45 + 51 + 50 + 45 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 7 + 36 + 7 + 37 + 6 + 37 + 86 + 87 + 165 + 137 + 208 + 179 + 209 + 215 + 215 + 172 + 215 + 215 + 209 + 179 + 209 + 179 + 172 + 209 + 172 + 173 + 172 + 172 + 165 + 136 + 172 + 130 + 122 + 50 + 80 + 49 + 80 + 86 + 87 + 171 + 172 + 173 + 178 + 209 + 178 + 209 + 172 + 172 + 171 + 130 + 172 + 214 + 173 + 214 + 172 + 173 + 172 + 178 + 209 + 172 + 178 + 172 + 173 + 172 + 171 + 129 + 166 + 171 + 173 + 178 + 172 + 209 + 179 + 208 + 172 + 130 + 86 + 44 + 43 + 129 + 172 + 172 + 215 + 215 + 86 + 80 + 93 + 122 + 92 + 86 + 86 + 122 + 93 + 123 + 128 + 129 + 165 + 87 + 129 + 122 + 43 + 86 + 129 + 165 + 172 + 172 + 165 + 172 + 208 + 173 + 208 + 178 + 208 + 172 + 208 + 172 + 171 + 166 + 172 + 129 + 172 + 165 + 166 + 171 + 172 + 130 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 135 + 165 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 123 + 86 + 86 + 50 + 80 + 86 + 86 + 129 + 123 + 130 + 86 + 44 + 43 + 44 + 50 + 45 + 51 + 87 + 52 + 45 + 50 + 51 + 45 + 51 + 44 + 51 + 14 + 45 + 43 + 86 + 43 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 7 + 79 + 44 + 129 + 129 + 172 + 209 + 179 + 209 + 215 + 214 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 173 + 172 + 173 + 166 + 171 + 172 + 172 + 131 + 171 + 166 + 93 + 80 + 86 + 43 + 86 + 86 + 123 + 172 + 172 + 178 + 173 + 208 + 179 + 172 + 172 + 166 + 135 + 172 + 215 + 172 + 172 + 208 + 179 + 208 + 172 + 179 + 172 + 208 + 179 + 172 + 208 + 172 + 172 + 173 + 178 + 208 + 215 + 179 + 209 + 215 + 215 + 165 + 130 + 129 + 86 + 7 + 44 + 129 + 208 + 215 + 179 + 172 + 86 + 86 + 87 + 128 + 123 + 93 + 86 + 122 + 128 + 86 + 123 + 129 + 165 + 129 + 129 + 122 + 86 + 43 + 86 + 122 + 129 + 129 + 166 + 135 + 166 + 208 + 178 + 209 + 172 + 215 + 208 + 173 + 208 + 172 + 214 + 172 + 209 + 172 + 214 + 166 + 136 + 207 + 166 + 179 + 208 + 172 + 172 + 165 + 172 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 172 + 165 + 129 + 123 + 86 + 86 + 44 + 86 + 79 + 93 + 129 + 129 + 124 + 86 + 43 + 44 + 43 + 1 + 44 + 86 + 50 + 45 + 51 + 51 + 51 + 51 + 44 + 51 + 15 + 44 + 51 + 45 + 49 + 80 + 49 + 80 + 43 + 1 + 43 + 43 + 43 + 37 + 7 + 44 + 86 + 123 + 171 + 173 + 173 + 215 + 215 + 208 + 179 + 215 + 209 + 215 + 179 + 209 + 215 + 172 + 172 + 166 + 172 + 135 + 172 + 173 + 165 + 136 + 130 + 165 + 92 + 87 + 122 + 93 + 123 + 129 + 87 + 135 + 165 + 172 + 172 + 173 + 172 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 178 + 172 + 172 + 173 + 208 + 178 + 173 + 208 + 179 + 214 + 173 + 214 + 172 + 172 + 172 + 172 + 215 + 209 + 215 + 215 + 173 + 215 + 165 + 87 + 86 + 86 + 123 + 172 + 178 + 215 + 209 + 86 + 86 + 92 + 123 + 128 + 130 + 129 + 86 + 128 + 87 + 128 + 87 + 122 + 129 + 165 + 129 + 172 + 86 + 86 + 80 + 128 + 123 + 129 + 171 + 130 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 209 + 214 + 172 + 208 + 166 + 178 + 172 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 166 + 207 + 172 + 130 + 171 + 172 + 166 + 171 + 172 + 165 + 172 + 165 + 93 + 86 + 79 + 43 + 44 + 123 + 129 + 130 + 171 + 87 + 86 + 37 + 43 + 44 + 43 + 44 + 51 + 44 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 8 + 51 + 50 + 80 + 50 + 80 + 49 + 44 + 79 + 37 + 7 + 43 + 37 + 43 + 50 + 86 + 123 + 172 + 172 + 215 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 215 + 173 + 215 + 173 + 172 + 172 + 166 + 173 + 172 + 129 + 130 + 129 + 129 + 166 + 129 + 130 + 129 + 129 + 87 + 86 + 85 + 87 + 129 + 172 + 166 + 178 + 129 + 166 + 135 + 172 + 172 + 171 + 130 + 172 + 172 + 172 + 172 + 172 + 172 + 214 + 172 + 215 + 173 + 214 + 173 + 214 + 172 + 172 + 173 + 214 + 215 + 209 + 215 + 179 + 209 + 129 + 129 + 44 + 86 + 172 + 172 + 215 + 173 + 214 + 130 + 86 + 86 + 129 + 129 + 129 + 129 + 87 + 128 + 80 + 86 + 128 + 87 + 128 + 129 + 130 + 158 + 136 + 122 + 86 + 86 + 129 + 123 + 129 + 129 + 165 + 129 + 171 + 130 + 171 + 166 + 208 + 172 + 172 + 208 + 179 + 215 + 209 + 214 + 172 + 166 + 172 + 208 + 171 + 173 + 214 + 172 + 208 + 172 + 172 + 172 + 166 + 172 + 172 + 165 + 179 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 44 + 43 + 80 + 86 + 92 + 130 + 167 + 171 + 129 + 44 + 79 + 37 + 43 + 44 + 50 + 87 + 44 + 15 + 51 + 51 + 52 + 51 + 51 + 51 + 51 + 44 + 51 + 51 + 43 + 80 + 49 + 80 + 49 + 43 + 44 + 37 + 43 + 43 + 43 + 80 + 92 + 130 + 172 + 172 + 209 + 215 + 179 + 215 + 209 + 179 + 215 + 208 + 179 + 209 + 172 + 172 + 172 + 172 + 172 + 165 + 173 + 136 + 172 + 130 + 165 + 136 + 129 + 123 + 92 + 124 + 86 + 50 + 79 + 93 + 129 + 164 + 172 + 136 + 172 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 208 + 173 + 214 + 172 + 209 + 179 + 215 + 214 + 179 + 208 + 173 + 171 + 87 + 86 + 86 + 123 + 129 + 129 + 166 + 172 + 172 + 172 + 93 + 85 + 123 + 129 + 129 + 129 + 86 + 129 + 86 + 86 + 122 + 86 + 92 + 123 + 129 + 129 + 122 + 129 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 129 + 171 + 130 + 165 + 129 + 129 + 165 + 172 + 172 + 209 + 172 + 208 + 172 + 172 + 178 + 202 + 172 + 172 + 172 + 208 + 172 + 208 + 214 + 209 + 172 + 172 + 171 + 166 + 172 + 208 + 172 + 208 + 172 + 136 + 165 + 129 + 123 + 85 + 44 + 85 + 81 + 129 + 172 + 130 + 129 + 171 + 80 + 80 + 7 + 43 + 43 + 81 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 80 + 49 + 44 + 80 + 43 + 44 + 43 + 43 + 44 + 85 + 87 + 172 + 172 + 173 + 215 + 179 + 209 + 215 + 179 + 209 + 215 + 179 + 209 + 179 + 172 + 173 + 171 + 167 + 135 + 130 + 172 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 87 + 129 + 123 + 86 + 86 + 93 + 123 + 129 + 135 + 172 + 129 + 172 + 209 + 172 + 172 + 171 + 136 + 172 + 166 + 172 + 172 + 178 + 166 + 172 + 172 + 178 + 172 + 209 + 214 + 173 + 215 + 215 + 215 + 214 + 130 + 122 + 86 + 123 + 128 + 129 + 166 + 173 + 171 + 130 + 136 + 165 + 172 + 123 + 92 + 86 + 130 + 128 + 123 + 129 + 92 + 87 + 86 + 128 + 86 + 86 + 80 + 128 + 87 + 165 + 92 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 165 + 129 + 165 + 135 + 165 + 130 + 165 + 129 + 128 + 166 + 172 + 208 + 208 + 178 + 209 + 208 + 172 + 208 + 130 + 207 + 172 + 209 + 172 + 208 + 171 + 209 + 214 + 173 + 172 + 201 + 172 + 208 + 172 + 172 + 172 + 202 + 129 + 128 + 80 + 86 + 43 + 86 + 122 + 130 + 172 + 172 + 129 + 165 + 86 + 1 + 43 + 37 + 86 + 8 + 86 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 86 + 87 + 86 + 50 + 86 + 43 + 43 + 44 + 43 + 8 + 49 + 87 + 129 + 166 + 178 + 173 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 215 + 173 + 215 + 137 + 208 + 136 + 167 + 135 + 130 + 130 + 135 + 130 + 93 + 94 + 129 + 93 + 87 + 87 + 130 + 86 + 86 + 86 + 87 + 128 + 129 + 130 + 171 + 136 + 172 + 173 + 165 + 136 + 165 + 130 + 135 + 172 + 166 + 171 + 172 + 171 + 172 + 172 + 172 + 209 + 178 + 209 + 214 + 209 + 135 + 123 + 122 + 129 + 86 + 172 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 123 + 129 + 129 + 122 + 93 + 123 + 129 + 135 + 87 + 128 + 123 + 86 + 50 + 79 + 93 + 122 + 86 + 86 + 129 + 129 + 129 + 87 + 129 + 129 + 165 + 171 + 166 + 136 + 171 + 166 + 165 + 171 + 166 + 135 + 165 + 130 + 165 + 208 + 172 + 209 + 214 + 172 + 202 + 172 + 208 + 165 + 129 + 129 + 165 + 208 + 172 + 171 + 166 + 165 + 172 + 172 + 165 + 208 + 172 + 172 + 172 + 208 + 172 + 208 + 129 + 122 + 44 + 79 + 86 + 86 + 123 + 135 + 172 + 166 + 165 + 136 + 43 + 37 + 42 + 43 + 44 + 80 + 50 + 52 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 43 + 44 + 79 + 44 + 49 + 44 + 50 + 80 + 50 + 86 + 86 + 129 + 136 + 166 + 179 + 209 + 179 + 179 + 209 + 178 + 215 + 173 + 215 + 172 + 215 + 173 + 179 + 172 + 166 + 136 + 136 + 166 + 129 + 136 + 94 + 130 + 130 + 136 + 93 + 87 + 87 + 86 + 87 + 87 + 86 + 86 + 86 + 86 + 129 + 93 + 165 + 172 + 172 + 129 + 129 + 166 + 135 + 172 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 208 + 178 + 209 + 172 + 165 + 129 + 123 + 92 + 123 + 171 + 166 + 172 + 172 + 171 + 172 + 166 + 171 + 166 + 129 + 123 + 128 + 93 + 165 + 129 + 135 + 129 + 165 + 93 + 122 + 86 + 87 + 49 + 80 + 86 + 92 + 86 + 92 + 123 + 86 + 172 + 129 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 166 + 171 + 172 + 165 + 129 + 165 + 166 + 172 + 207 + 172 + 209 + 215 + 215 + 208 + 165 + 172 + 128 + 159 + 129 + 172 + 208 + 172 + 202 + 172 + 171 + 166 + 171 + 166 + 172 + 208 + 171 + 166 + 172 + 165 + 123 + 122 + 43 + 79 + 86 + 129 + 129 + 165 + 172 + 166 + 129 + 165 + 43 + 43 + 43 + 43 + 44 + 87 + 44 + 51 + 87 + 51 + 51 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 45 + 85 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 43 + 43 + 50 + 87 + 135 + 173 + 172 + 173 + 215 + 172 + 179 + 215 + 173 + 179 + 173 + 214 + 173 + 179 + 172 + 172 + 136 + 166 + 135 + 130 + 172 + 94 + 135 + 131 + 136 + 93 + 129 + 87 + 93 + 86 + 88 + 128 + 87 + 86 + 86 + 79 + 50 + 86 + 123 + 128 + 93 + 130 + 165 + 135 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 214 + 173 + 172 + 171 + 130 + 122 + 86 + 86 + 165 + 166 + 172 + 171 + 130 + 171 + 172 + 208 + 172 + 173 + 172 + 172 + 165 + 171 + 130 + 165 + 136 + 172 + 172 + 165 + 136 + 122 + 87 + 128 + 86 + 86 + 44 + 86 + 86 + 86 + 128 + 87 + 92 + 165 + 93 + 129 + 164 + 130 + 165 + 172 + 172 + 166 + 172 + 171 + 130 + 171 + 166 + 129 + 128 + 165 + 166 + 172 + 208 + 129 + 208 + 208 + 172 + 208 + 172 + 166 + 171 + 166 + 171 + 209 + 208 + 208 + 172 + 214 + 166 + 208 + 172 + 202 + 135 + 165 + 166 + 128 + 165 + 87 + 79 + 43 + 79 + 92 + 123 + 165 + 130 + 171 + 129 + 166 + 129 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 50 + 51 + 87 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 51 + 45 + 86 + 43 + 43 + 50 + 43 + 44 + 86 + 43 + 44 + 50 + 86 + 87 + 129 + 136 + 172 + 172 + 173 + 179 + 173 + 208 + 179 + 173 + 178 + 209 + 179 + 172 + 172 + 172 + 130 + 136 + 130 + 171 + 130 + 136 + 130 + 100 + 129 + 94 + 130 + 92 + 88 + 86 + 87 + 129 + 123 + 92 + 86 + 86 + 87 + 122 + 93 + 129 + 165 + 130 + 135 + 172 + 166 + 172 + 172 + 214 + 172 + 179 + 209 + 178 + 171 + 166 + 86 + 122 + 87 + 171 + 172 + 208 + 208 + 172 + 172 + 172 + 208 + 172 + 171 + 166 + 172 + 171 + 166 + 136 + 208 + 172 + 171 + 172 + 209 + 172 + 136 + 165 + 92 + 86 + 87 + 86 + 86 + 80 + 86 + 49 + 80 + 86 + 93 + 122 + 93 + 122 + 93 + 129 + 123 + 171 + 166 + 172 + 171 + 208 + 136 + 166 + 171 + 165 + 129 + 166 + 165 + 172 + 208 + 172 + 208 + 208 + 165 + 136 + 208 + 208 + 172 + 165 + 166 + 171 + 166 + 172 + 208 + 171 + 202 + 172 + 172 + 165 + 129 + 165 + 208 + 129 + 165 + 123 + 86 + 79 + 79 + 86 + 86 + 129 + 165 + 129 + 166 + 135 + 165 + 123 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 50 + 43 + 44 + 43 + 43 + 49 + 44 + 43 + 44 + 43 + 43 + 86 + 93 + 129 + 166 + 178 + 172 + 173 + 172 + 215 + 173 + 178 + 173 + 179 + 208 + 173 + 172 + 136 + 172 + 130 + 130 + 135 + 130 + 136 + 136 + 130 + 94 + 129 + 94 + 86 + 87 + 86 + 88 + 92 + 123 + 129 + 93 + 86 + 79 + 50 + 122 + 93 + 123 + 135 + 165 + 172 + 135 + 208 + 173 + 178 + 215 + 208 + 172 + 172 + 130 + 171 + 172 + 130 + 171 + 166 + 214 + 209 + 215 + 172 + 172 + 172 + 208 + 172 + 208 + 172 + 172 + 166 + 172 + 208 + 178 + 209 + 215 + 172 + 178 + 208 + 172 + 123 + 93 + 86 + 86 + 122 + 43 + 86 + 50 + 79 + 43 + 50 + 122 + 86 + 129 + 93 + 122 + 50 + 80 + 128 + 129 + 166 + 172 + 208 + 172 + 165 + 136 + 171 + 166 + 165 + 165 + 165 + 136 + 165 + 172 + 208 + 209 + 207 + 166 + 214 + 166 + 172 + 165 + 166 + 171 + 172 + 208 + 202 + 172 + 171 + 166 + 165 + 122 + 123 + 129 + 165 + 123 + 122 + 85 + 43 + 80 + 122 + 86 + 129 + 129 + 129 + 165 + 166 + 171 + 86 + 43 + 43 + 79 + 44 + 43 + 87 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 44 + 43 + 50 + 43 + 44 + 43 + 50 + 43 + 80 + 50 + 86 + 93 + 87 + 172 + 136 + 172 + 136 + 172 + 173 + 172 + 173 + 208 + 179 + 166 + 136 + 172 + 172 + 172 + 136 + 172 + 130 + 135 + 172 + 94 + 136 + 94 + 123 + 94 + 86 + 87 + 86 + 87 + 129 + 129 + 129 + 87 + 128 + 92 + 86 + 86 + 86 + 87 + 165 + 136 + 172 + 172 + 215 + 215 + 173 + 178 + 172 + 172 + 209 + 172 + 214 + 208 + 173 + 214 + 208 + 172 + 208 + 172 + 172 + 215 + 172 + 172 + 166 + 172 + 214 + 208 + 215 + 215 + 208 + 179 + 209 + 214 + 209 + 172 + 135 + 86 + 86 + 93 + 80 + 86 + 86 + 49 + 123 + 49 + 43 + 122 + 93 + 86 + 79 + 93 + 123 + 86 + 86 + 92 + 166 + 128 + 173 + 171 + 166 + 172 + 165 + 172 + 165 + 129 + 165 + 172 + 208 + 166 + 172 + 165 + 208 + 172 + 208 + 208 + 172 + 208 + 166 + 171 + 166 + 207 + 172 + 166 + 171 + 166 + 122 + 129 + 165 + 129 + 123 + 122 + 116 + 49 + 79 + 79 + 80 + 92 + 123 + 129 + 129 + 122 + 172 + 172 + 129 + 79 + 80 + 49 + 43 + 80 + 50 + 87 + 86 + 50 + 52 + 51 + 51 + 51 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 43 + 43 + 44 + 43 + 43 + 80 + 50 + 43 + 43 + 44 + 86 + 50 + 86 + 129 + 130 + 135 + 167 + 136 + 172 + 136 + 172 + 173 + 172 + 179 + 172 + 172 + 172 + 137 + 166 + 136 + 171 + 130 + 137 + 130 + 172 + 101 + 130 + 99 + 123 + 93 + 87 + 51 + 86 + 122 + 129 + 130 + 129 + 171 + 130 + 129 + 129 + 86 + 86 + 128 + 129 + 130 + 172 + 208 + 179 + 209 + 214 + 215 + 172 + 215 + 209 + 178 + 172 + 172 + 166 + 172 + 208 + 214 + 173 + 208 + 172 + 214 + 173 + 208 + 172 + 201 + 172 + 215 + 173 + 214 + 215 + 208 + 179 + 209 + 214 + 173 + 135 + 122 + 86 + 86 + 50 + 86 + 122 + 44 + 86 + 86 + 86 + 43 + 86 + 87 + 122 + 93 + 122 + 50 + 43 + 122 + 129 + 123 + 171 + 172 + 172 + 172 + 165 + 172 + 129 + 159 + 171 + 165 + 166 + 171 + 172 + 209 + 207 + 130 + 165 + 171 + 166 + 172 + 207 + 209 + 208 + 172 + 165 + 165 + 166 + 171 + 129 + 165 + 129 + 159 + 122 + 87 + 86 + 79 + 79 + 79 + 43 + 123 + 128 + 87 + 122 + 129 + 171 + 129 + 123 + 43 + 79 + 43 + 86 + 44 + 86 + 86 + 87 + 51 + 56 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 51 + 51 + 52 + 36 + 43 + 7 + 43 + 43 + 44 + 79 + 50 + 44 + 50 + 86 + 87 + 86 + 129 + 136 + 130 + 136 + 171 + 167 + 172 + 178 + 173 + 172 + 179 + 173 + 173 + 172 + 172 + 172 + 172 + 130 + 171 + 136 + 173 + 136 + 136 + 130 + 136 + 87 + 130 + 86 + 50 + 86 + 87 + 86 + 129 + 166 + 135 + 172 + 172 + 129 + 129 + 129 + 128 + 129 + 129 + 173 + 178 + 209 + 214 + 173 + 215 + 215 + 215 + 179 + 208 + 214 + 172 + 209 + 172 + 208 + 172 + 172 + 172 + 172 + 215 + 172 + 165 + 172 + 172 + 208 + 173 + 214 + 215 + 208 + 215 + 209 + 178 + 215 + 172 + 166 + 93 + 122 + 86 + 86 + 86 + 50 + 85 + 129 + 86 + 44 + 86 + 86 + 85 + 86 + 129 + 129 + 86 + 43 + 79 + 86 + 129 + 166 + 172 + 172 + 172 + 165 + 172 + 122 + 129 + 166 + 165 + 129 + 171 + 202 + 214 + 166 + 172 + 208 + 165 + 172 + 165 + 172 + 208 + 165 + 172 + 166 + 171 + 165 + 129 + 208 + 123 + 129 + 165 + 122 + 86 + 116 + 86 + 43 + 86 + 122 + 86 + 123 + 128 + 130 + 129 + 165 + 129 + 122 + 50 + 79 + 44 + 85 + 44 + 122 + 93 + 51 + 51 + 93 + 51 + 51 + 87 + 50 + 51 + 51 + 86 + 51 + 51 + 86 + 7 + 36 + 7 + 37 + 7 + 43 + 44 + 85 + 44 + 43 + 87 + 50 + 128 + 124 + 135 + 130 + 136 + 129 + 172 + 136 + 173 + 215 + 172 + 179 + 172 + 172 + 173 + 172 + 172 + 173 + 172 + 172 + 179 + 173 + 142 + 173 + 136 + 130 + 129 + 94 + 86 + 51 + 86 + 80 + 86 + 129 + 172 + 172 + 172 + 179 + 166 + 171 + 130 + 129 + 129 + 171 + 172 + 172 + 172 + 209 + 178 + 215 + 209 + 178 + 215 + 209 + 178 + 208 + 173 + 208 + 178 + 166 + 208 + 172 + 214 + 209 + 172 + 172 + 165 + 172 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 172 + 215 + 172 + 129 + 129 + 86 + 87 + 86 + 91 + 123 + 43 + 129 + 86 + 43 + 80 + 86 + 50 + 122 + 92 + 123 + 93 + 86 + 79 + 86 + 80 + 135 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 123 + 165 + 165 + 129 + 171 + 166 + 172 + 208 + 165 + 172 + 166 + 207 + 130 + 171 + 202 + 171 + 129 + 165 + 165 + 130 + 171 + 159 + 129 + 123 + 164 + 86 + 87 + 116 + 86 + 122 + 86 + 122 + 93 + 122 + 165 + 136 + 165 + 129 + 122 + 44 + 85 + 80 + 85 + 87 + 86 + 93 + 87 + 51 + 86 + 57 + 51 + 87 + 51 + 51 + 86 + 87 + 51 + 87 + 51 + 43 + 7 + 36 + 7 + 43 + 37 + 7 + 50 + 44 + 43 + 86 + 50 + 86 + 123 + 93 + 166 + 135 + 130 + 136 + 172 + 215 + 172 + 215 + 173 + 179 + 172 + 172 + 179 + 172 + 172 + 179 + 215 + 215 + 215 + 179 + 131 + 100 + 165 + 100 + 131 + 86 + 86 + 44 + 86 + 44 + 128 + 130 + 171 + 130 + 172 + 136 + 165 + 130 + 171 + 129 + 172 + 172 + 172 + 172 + 208 + 179 + 215 + 172 + 215 + 172 + 215 + 208 + 179 + 208 + 172 + 166 + 172 + 214 + 209 + 178 + 208 + 172 + 166 + 172 + 171 + 173 + 208 + 215 + 208 + 215 + 208 + 179 + 172 + 215 + 171 + 129 + 87 + 85 + 86 + 87 + 129 + 129 + 86 + 80 + 86 + 43 + 43 + 50 + 86 + 123 + 128 + 93 + 129 + 86 + 79 + 43 + 43 + 129 + 166 + 171 + 166 + 172 + 165 + 129 + 165 + 129 + 159 + 129 + 165 + 129 + 165 + 165 + 135 + 202 + 172 + 165 + 172 + 165 + 172 + 208 + 165 + 123 + 129 + 165 + 165 + 130 + 171 + 123 + 128 + 86 + 123 + 122 + 122 + 87 + 165 + 123 + 92 + 123 + 129 + 164 + 130 + 129 + 128 + 87 + 85 + 80 + 86 + 87 + 122 + 87 + 50 + 128 + 51 + 87 + 57 + 87 + 51 + 93 + 87 + 51 + 87 + 93 + 87 + 93 + 43 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 44 + 43 + 14 + 80 + 86 + 93 + 93 + 130 + 130 + 130 + 171 + 172 + 179 + 173 + 215 + 173 + 178 + 173 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 129 + 130 + 172 + 129 + 129 + 87 + 43 + 44 + 86 + 86 + 129 + 136 + 172 + 166 + 214 + 172 + 215 + 172 + 179 + 215 + 208 + 173 + 214 + 209 + 215 + 215 + 208 + 214 + 173 + 214 + 209 + 172 + 172 + 214 + 166 + 172 + 214 + 172 + 209 + 172 + 172 + 165 + 172 + 166 + 171 + 215 + 172 + 215 + 209 + 215 + 208 + 178 + 209 + 135 + 123 + 86 + 86 + 93 + 122 + 129 + 129 + 93 + 80 + 49 + 43 + 79 + 50 + 80 + 86 + 129 + 171 + 129 + 86 + 43 + 43 + 79 + 44 + 171 + 166 + 171 + 166 + 171 + 166 + 129 + 129 + 122 + 130 + 165 + 165 + 166 + 171 + 129 + 166 + 171 + 165 + 165 + 130 + 207 + 172 + 202 + 135 + 166 + 122 + 129 + 166 + 165 + 128 + 87 + 122 + 122 + 87 + 128 + 123 + 165 + 129 + 129 + 129 + 129 + 129 + 129 + 165 + 86 + 44 + 86 + 86 + 86 + 123 + 86 + 86 + 87 + 57 + 87 + 93 + 87 + 93 + 93 + 87 + 93 + 87 + 130 + 86 + 94 + 93 + 79 + 43 + 43 + 7 + 37 + 43 + 7 + 43 + 44 + 43 + 50 + 86 + 44 + 129 + 87 + 130 + 135 + 167 + 172 + 173 + 178 + 215 + 172 + 215 + 179 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 86 + 122 + 130 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 166 + 172 + 172 + 178 + 172 + 215 + 208 + 172 + 215 + 214 + 209 + 178 + 208 + 215 + 209 + 215 + 172 + 215 + 172 + 208 + 172 + 209 + 171 + 172 + 172 + 209 + 172 + 208 + 214 + 166 + 172 + 172 + 172 + 172 + 172 + 208 + 215 + 208 + 215 + 215 + 172 + 172 + 129 + 129 + 86 + 86 + 87 + 128 + 129 + 129 + 87 + 128 + 80 + 43 + 79 + 86 + 85 + 87 + 129 + 172 + 159 + 128 + 50 + 79 + 37 + 43 + 128 + 129 + 166 + 172 + 135 + 166 + 135 + 159 + 93 + 122 + 129 + 166 + 135 + 166 + 172 + 171 + 166 + 165 + 172 + 129 + 166 + 135 + 166 + 171 + 129 + 160 + 129 + 129 + 129 + 165 + 129 + 86 + 122 + 93 + 122 + 129 + 129 + 123 + 128 + 87 + 129 + 129 + 171 + 123 + 92 + 80 + 86 + 86 + 86 + 93 + 86 + 87 + 86 + 86 + 93 + 87 + 129 + 93 + 130 + 129 + 129 + 93 + 129 + 129 + 93 + 130 + 79 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 8 + 43 + 50 + 86 + 87 + 93 + 123 + 136 + 130 + 172 + 172 + 173 + 179 + 179 + 214 + 209 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 7 + 43 + 87 + 165 + 172 + 172 + 86 + 43 + 49 + 87 + 122 + 136 + 165 + 178 + 173 + 172 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 179 + 209 + 215 + 214 + 208 + 209 + 178 + 172 + 166 + 172 + 208 + 178 + 209 + 172 + 172 + 172 + 208 + 172 + 166 + 171 + 172 + 209 + 214 + 215 + 209 + 214 + 172 + 172 + 129 + 87 + 85 + 87 + 128 + 130 + 129 + 135 + 166 + 122 + 86 + 86 + 79 + 86 + 43 + 122 + 129 + 172 + 129 + 172 + 80 + 42 + 37 + 43 + 43 + 129 + 165 + 172 + 165 + 129 + 172 + 166 + 128 + 129 + 166 + 165 + 171 + 130 + 129 + 208 + 136 + 166 + 171 + 166 + 129 + 129 + 165 + 130 + 128 + 123 + 129 + 171 + 129 + 165 + 87 + 79 + 128 + 87 + 129 + 122 + 129 + 129 + 123 + 93 + 171 + 129 + 130 + 128 + 86 + 80 + 86 + 86 + 93 + 86 + 86 + 87 + 92 + 123 + 129 + 130 + 129 + 136 + 130 + 130 + 135 + 130 + 130 + 136 + 129 + 129 + 44 + 85 + 80 + 50 + 43 + 43 + 44 + 36 + 44 + 50 + 50 + 50 + 87 + 129 + 130 + 131 + 171 + 137 + 171 + 173 + 172 + 215 + 179 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 43 + 79 + 50 + 123 + 178 + 172 + 129 + 86 + 80 + 43 + 86 + 129 + 136 + 208 + 172 + 172 + 179 + 208 + 179 + 208 + 208 + 179 + 209 + 214 + 214 + 209 + 178 + 208 + 173 + 208 + 214 + 166 + 172 + 172 + 208 + 179 + 208 + 208 + 172 + 172 + 172 + 172 + 208 + 130 + 171 + 209 + 208 + 179 + 208 + 215 + 172 + 172 + 172 + 86 + 86 + 80 + 135 + 129 + 166 + 171 + 136 + 122 + 86 + 86 + 79 + 43 + 86 + 86 + 123 + 171 + 166 + 172 + 85 + 37 + 43 + 0 + 80 + 129 + 129 + 129 + 171 + 130 + 129 + 164 + 130 + 123 + 128 + 172 + 172 + 166 + 129 + 165 + 129 + 172 + 129 + 166 + 171 + 130 + 171 + 130 + 165 + 128 + 123 + 129 + 129 + 129 + 80 + 86 + 128 + 86 + 165 + 129 + 129 + 129 + 165 + 129 + 171 + 129 + 87 + 86 + 49 + 80 + 86 + 93 + 87 + 122 + 93 + 86 + 87 + 129 + 129 + 136 + 129 + 136 + 129 + 130 + 172 + 129 + 130 + 136 + 129 + 129 + 86 + 44 + 86 + 86 + 44 + 79 + 44 + 49 + 8 + 43 + 49 + 86 + 94 + 129 + 130 + 129 + 172 + 172 + 130 + 171 + 136 + 178 + 209 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 86 + 43 + 43 + 43 + 86 + 166 + 178 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 165 + 130 + 178 + 172 + 209 + 171 + 208 + 173 + 208 + 178 + 209 + 208 + 179 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 209 + 178 + 209 + 172 + 171 + 172 + 166 + 172 + 172 + 129 + 165 + 172 + 215 + 209 + 214 + 173 + 214 + 173 + 165 + 93 + 79 + 50 + 129 + 166 + 172 + 172 + 171 + 87 + 86 + 122 + 43 + 79 + 86 + 86 + 129 + 165 + 172 + 166 + 92 + 80 + 42 + 37 + 43 + 86 + 129 + 165 + 123 + 129 + 128 + 87 + 171 + 208 + 129 + 123 + 172 + 172 + 129 + 165 + 93 + 165 + 172 + 166 + 171 + 166 + 135 + 166 + 172 + 165 + 123 + 92 + 123 + 128 + 123 + 86 + 129 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 135 + 129 + 86 + 86 + 86 + 87 + 122 + 93 + 129 + 86 + 87 + 92 + 130 + 129 + 130 + 135 + 130 + 130 + 129 + 166 + 135 + 129 + 130 + 129 + 130 + 129 + 86 + 87 + 92 + 80 + 49 + 80 + 43 + 44 + 49 + 44 + 50 + 87 + 92 + 125 + 99 + 129 + 166 + 136 + 130 + 135 + 130 + 171 + 142 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 43 + 43 + 43 + 43 + 50 + 122 + 172 + 178 + 172 + 130 + 85 + 80 + 49 + 44 + 86 + 129 + 172 + 165 + 136 + 172 + 165 + 172 + 209 + 178 + 208 + 208 + 215 + 172 + 208 + 179 + 171 + 202 + 172 + 172 + 215 + 209 + 172 + 208 + 178 + 208 + 172 + 166 + 129 + 165 + 93 + 171 + 209 + 172 + 214 + 209 + 215 + 172 + 172 + 165 + 92 + 44 + 85 + 130 + 135 + 165 + 136 + 166 + 128 + 87 + 122 + 86 + 79 + 49 + 87 + 165 + 129 + 171 + 165 + 129 + 86 + 79 + 1 + 43 + 43 + 122 + 129 + 86 + 86 + 123 + 128 + 123 + 135 + 166 + 171 + 130 + 165 + 171 + 123 + 135 + 166 + 171 + 130 + 165 + 172 + 129 + 172 + 166 + 170 + 123 + 129 + 86 + 122 + 86 + 86 + 129 + 123 + 128 + 129 + 166 + 129 + 171 + 130 + 135 + 123 + 85 + 51 + 86 + 122 + 129 + 87 + 129 + 129 + 86 + 93 + 93 + 129 + 129 + 130 + 129 + 172 + 129 + 93 + 130 + 172 + 93 + 130 + 129 + 136 + 122 + 129 + 86 + 123 + 49 + 80 + 50 + 43 + 44 + 50 + 44 + 86 + 50 + 93 + 123 + 129 + 129 + 129 + 129 + 93 + 136 + 165 + 136 + 172 + 172 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 43 + 43 + 43 + 87 + 172 + 172 + 178 + 172 + 166 + 86 + 43 + 0 + 80 + 92 + 166 + 135 + 129 + 172 + 166 + 214 + 172 + 172 + 209 + 215 + 172 + 208 + 172 + 172 + 209 + 172 + 172 + 208 + 178 + 208 + 173 + 171 + 173 + 208 + 171 + 166 + 172 + 129 + 129 + 165 + 172 + 166 + 214 + 172 + 173 + 214 + 172 + 129 + 44 + 85 + 87 + 129 + 172 + 171 + 129 + 129 + 123 + 128 + 87 + 85 + 86 + 79 + 87 + 165 + 86 + 172 + 129 + 129 + 122 + 122 + 7 + 37 + 42 + 80 + 86 + 86 + 122 + 86 + 122 + 129 + 129 + 172 + 165 + 166 + 171 + 130 + 129 + 165 + 129 + 165 + 129 + 129 + 172 + 172 + 202 + 135 + 172 + 123 + 128 + 123 + 92 + 129 + 165 + 129 + 165 + 129 + 166 + 171 + 178 + 166 + 135 + 123 + 86 + 86 + 50 + 122 + 92 + 123 + 93 + 128 + 87 + 128 + 87 + 129 + 130 + 93 + 136 + 165 + 136 + 130 + 129 + 172 + 130 + 136 + 135 + 166 + 136 + 86 + 129 + 123 + 86 + 86 + 86 + 43 + 50 + 43 + 44 + 49 + 44 + 51 + 86 + 86 + 87 + 92 + 129 + 93 + 86 + 134 + 93 + 129 + 136 + 171 + 130 + 141 + 171 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 44 + 85 + 43 + 43 + 86 + 129 + 173 + 208 + 171 + 136 + 123 + 85 + 50 + 44 + 86 + 128 + 130 + 129 + 166 + 172 + 208 + 171 + 172 + 172 + 209 + 172 + 208 + 179 + 208 + 172 + 208 + 165 + 178 + 173 + 208 + 172 + 172 + 202 + 172 + 171 + 172 + 130 + 165 + 129 + 129 + 165 + 172 + 136 + 201 + 173 + 171 + 136 + 123 + 49 + 86 + 86 + 166 + 172 + 135 + 123 + 129 + 87 + 128 + 122 + 44 + 86 + 79 + 86 + 122 + 92 + 129 + 166 + 128 + 129 + 123 + 43 + 42 + 37 + 86 + 43 + 86 + 79 + 43 + 85 + 123 + 123 + 128 + 130 + 171 + 129 + 129 + 165 + 130 + 171 + 166 + 129 + 129 + 129 + 165 + 172 + 166 + 171 + 129 + 130 + 128 + 165 + 123 + 129 + 129 + 129 + 165 + 130 + 172 + 171 + 172 + 129 + 86 + 123 + 86 + 91 + 87 + 129 + 129 + 92 + 87 + 86 + 93 + 87 + 128 + 129 + 130 + 129 + 172 + 130 + 136 + 172 + 129 + 173 + 135 + 172 + 166 + 136 + 128 + 87 + 129 + 86 + 86 + 86 + 44 + 44 + 49 + 44 + 44 + 50 + 49 + 80 + 50 + 87 + 85 + 93 + 86 + 91 + 87 + 92 + 128 + 129 + 135 + 129 + 134 + 135 + 134 + 171 + 178 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 44 + 85 + 44 + 43 + 92 + 166 + 172 + 172 + 172 + 129 + 92 + 86 + 80 + 49 + 86 + 129 + 129 + 165 + 172 + 166 + 172 + 135 + 166 + 172 + 171 + 208 + 172 + 209 + 172 + 172 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 165 + 172 + 172 + 166 + 129 + 129 + 129 + 165 + 129 + 129 + 165 + 172 + 129 + 129 + 86 + 43 + 92 + 123 + 129 + 171 + 130 + 122 + 86 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 122 + 86 + 129 + 165 + 172 + 123 + 129 + 85 + 43 + 1 + 79 + 43 + 79 + 86 + 43 + 80 + 128 + 129 + 129 + 129 + 129 + 165 + 129 + 166 + 129 + 172 + 165 + 165 + 129 + 130 + 171 + 129 + 166 + 172 + 165 + 171 + 129 + 166 + 172 + 129 + 165 + 129 + 129 + 165 + 172 + 172 + 129 + 129 + 86 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 44 + 86 + 86 + 87 + 93 + 171 + 130 + 136 + 172 + 172 + 137 + 172 + 172 + 130 + 173 + 171 + 136 + 129 + 129 + 86 + 123 + 86 + 50 + 86 + 44 + 50 + 43 + 44 + 50 + 49 + 79 + 50 + 49 + 80 + 86 + 50 + 86 + 91 + 86 + 92 + 91 + 92 + 91 + 128 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 129 + 49 + 80 + 50 + 85 + 44 + 79 + 86 + 129 + 172 + 172 + 172 + 129 + 129 + 86 + 50 + 79 + 86 + 93 + 123 + 128 + 166 + 172 + 172 + 129 + 165 + 129 + 136 + 165 + 208 + 172 + 166 + 136 + 171 + 209 + 172 + 208 + 172 + 208 + 172 + 165 + 172 + 166 + 171 + 130 + 129 + 128 + 166 + 129 + 122 + 129 + 136 + 122 + 129 + 86 + 7 + 86 + 123 + 128 + 172 + 130 + 85 + 50 + 79 + 86 + 79 + 44 + 122 + 86 + 86 + 86 + 85 + 80 + 172 + 172 + 165 + 129 + 86 + 79 + 37 + 43 + 42 + 43 + 80 + 85 + 87 + 122 + 129 + 129 + 165 + 129 + 172 + 129 + 172 + 129 + 165 + 136 + 172 + 166 + 171 + 208 + 172 + 166 + 135 + 172 + 166 + 165 + 135 + 166 + 208 + 129 + 171 + 130 + 165 + 172 + 172 + 129 + 86 + 86 + 123 + 92 + 130 + 129 + 129 + 129 + 129 + 86 + 44 + 49 + 86 + 87 + 129 + 130 + 172 + 136 + 173 + 173 + 172 + 178 + 172 + 173 + 172 + 173 + 173 + 165 + 93 + 122 + 87 + 86 + 86 + 86 + 50 + 80 + 7 + 50 + 44 + 50 + 80 + 49 + 50 + 85 + 50 + 86 + 91 + 49 + 92 + 86 + 92 + 91 + 128 + 91 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 172 + 79 + 86 + 50 + 86 + 86 + 44 + 85 + 123 + 136 + 172 + 171 + 166 + 129 + 92 + 87 + 86 + 86 + 122 + 93 + 165 + 172 + 172 + 165 + 130 + 128 + 166 + 171 + 166 + 136 + 171 + 166 + 171 + 166 + 178 + 209 + 129 + 172 + 172 + 172 + 208 + 165 + 172 + 136 + 165 + 129 + 165 + 128 + 123 + 86 + 129 + 128 + 87 + 86 + 86 + 43 + 86 + 129 + 130 + 129 + 171 + 87 + 86 + 86 + 79 + 86 + 36 + 86 + 86 + 86 + 122 + 86 + 80 + 171 + 172 + 129 + 129 + 123 + 86 + 43 + 86 + 43 + 43 + 79 + 79 + 87 + 122 + 86 + 129 + 128 + 166 + 172 + 165 + 135 + 166 + 129 + 171 + 208 + 166 + 172 + 172 + 171 + 172 + 166 + 172 + 172 + 172 + 165 + 129 + 172 + 129 + 165 + 172 + 171 + 130 + 129 + 122 + 92 + 123 + 86 + 129 + 129 + 129 + 136 + 129 + 129 + 86 + 92 + 87 + 87 + 129 + 129 + 172 + 136 + 172 + 173 + 172 + 173 + 178 + 173 + 173 + 178 + 173 + 172 + 129 + 129 + 123 + 86 + 87 + 86 + 86 + 86 + 44 + 49 + 8 + 43 + 50 + 86 + 86 + 49 + 86 + 86 + 56 + 85 + 92 + 85 + 55 + 86 + 91 + 127 + 98 + 134 + 97 + 171 + 177 + 214 + 215 + 215 + 215 + 172 + 86 + 86 + 50 + 79 + 87 + 85 + 86 + 87 + 129 + 172 + 172 + 172 + 171 + 87 + 129 + 92 + 87 + 128 + 123 + 172 + 171 + 172 + 165 + 129 + 130 + 165 + 172 + 172 + 172 + 201 + 172 + 136 + 165 + 172 + 208 + 166 + 172 + 135 + 166 + 214 + 166 + 172 + 165 + 129 + 129 + 171 + 87 + 85 + 80 + 93 + 122 + 86 + 86 + 86 + 43 + 129 + 129 + 165 + 130 + 135 + 123 + 86 + 122 + 86 + 86 + 79 + 86 + 86 + 122 + 86 + 129 + 80 + 129 + 135 + 165 + 129 + 165 + 87 + 86 + 85 + 80 + 43 + 86 + 79 + 86 + 86 + 129 + 122 + 129 + 129 + 166 + 171 + 130 + 171 + 166 + 171 + 172 + 166 + 129 + 172 + 207 + 172 + 166 + 172 + 208 + 172 + 171 + 172 + 172 + 165 + 166 + 171 + 130 + 129 + 122 + 93 + 86 + 129 + 86 + 129 + 129 + 135 + 130 + 171 + 129 + 130 + 93 + 130 + 130 + 129 + 172 + 172 + 137 + 172 + 172 + 173 + 215 + 173 + 208 + 179 + 173 + 208 + 179 + 129 + 123 + 92 + 87 + 122 + 86 + 86 + 44 + 49 + 44 + 7 + 44 + 50 + 92 + 50 + 85 + 50 + 85 + 55 + 85 + 92 + 49 + 85 + 55 + 92 + 127 + 98 + 133 + 141 + 140 + 178 + 214 + 215 + 214 + 215 + 172 + 129 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 122 + 136 + 172 + 172 + 165 + 130 + 129 + 128 + 87 + 128 + 129 + 172 + 165 + 130 + 171 + 172 + 166 + 165 + 172 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 130 + 165 + 135 + 123 + 50 + 79 + 86 + 50 + 80 + 85 + 86 + 86 + 123 + 128 + 129 + 129 + 165 + 129 + 86 + 129 + 122 + 129 + 80 + 86 + 85 + 86 + 86 + 123 + 129 + 79 + 87 + 170 + 129 + 166 + 129 + 165 + 129 + 86 + 122 + 86 + 86 + 86 + 79 + 129 + 122 + 93 + 129 + 159 + 135 + 166 + 172 + 165 + 129 + 172 + 208 + 172 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 122 + 172 + 172 + 208 + 129 + 123 + 86 + 92 + 87 + 129 + 93 + 165 + 129 + 136 + 172 + 172 + 172 + 137 + 172 + 136 + 166 + 136 + 173 + 136 + 173 + 178 + 173 + 179 + 215 + 173 + 215 + 173 + 173 + 214 + 173 + 129 + 129 + 123 + 122 + 86 + 51 + 85 + 44 + 44 + 43 + 7 + 50 + 49 + 86 + 92 + 50 + 85 + 50 + 85 + 56 + 85 + 49 + 92 + 49 + 91 + 134 + 134 + 140 + 140 + 135 + 177 + 214 + 215 + 215 + 215 + 215 + 172 + 86 + 129 + 86 + 86 + 50 + 86 + 79 + 87 + 129 + 171 + 172 + 129 + 129 + 172 + 129 + 129 + 129 + 129 + 130 + 165 + 135 + 166 + 172 + 165 + 129 + 172 + 166 + 172 + 172 + 207 + 166 + 135 + 208 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 123 + 92 + 80 + 43 + 49 + 44 + 79 + 86 + 86 + 129 + 122 + 172 + 123 + 128 + 172 + 129 + 86 + 123 + 122 + 92 + 80 + 86 + 43 + 79 + 86 + 122 + 93 + 79 + 86 + 129 + 159 + 135 + 166 + 129 + 128 + 129 + 123 + 85 + 87 + 122 + 85 + 87 + 122 + 86 + 129 + 165 + 129 + 172 + 172 + 165 + 129 + 208 + 172 + 172 + 172 + 172 + 208 + 166 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 172 + 172 + 129 + 165 + 87 + 128 + 129 + 94 + 129 + 165 + 137 + 172 + 179 + 214 + 173 + 179 + 173 + 215 + 179 + 173 + 173 + 143 + 172 + 173 + 209 + 179 + 173 + 215 + 173 + 215 + 173 + 179 + 172 + 209 + 93 + 129 + 122 + 123 + 86 + 50 + 80 + 49 + 7 + 43 + 8 + 44 + 49 + 86 + 92 + 49 + 86 + 49 + 50 + 49 + 85 + 49 + 55 + 85 + 129 + 134 + 135 + 141 + 141 + 177 + 177 + 214 + 215 + 215 + 215 + 215 + 215 + 129 + 86 + 92 + 86 + 86 + 86 + 44 + 122 + 86 + 93 + 172 + 172 + 172 + 129 + 166 + 129 + 135 + 129 + 129 + 165 + 130 + 165 + 172 + 129 + 172 + 165 + 172 + 171 + 172 + 166 + 171 + 166 + 172 + 171 + 172 + 166 + 129 + 165 + 136 + 172 + 123 + 129 + 129 + 92 + 86 + 86 + 80 + 49 + 43 + 44 + 122 + 129 + 129 + 129 + 164 + 130 + 86 + 129 + 122 + 86 + 123 + 86 + 122 + 86 + 43 + 43 + 43 + 86 + 165 + 86 + 79 + 86 + 86 + 123 + 92 + 165 + 129 + 165 + 129 + 129 + 80 + 86 + 122 + 86 + 86 + 122 + 93 + 165 + 171 + 166 + 172 + 129 + 171 + 166 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 173 + 208 + 214 + 173 + 172 + 171 + 123 + 129 + 122 + 93 + 129 + 130 + 135 + 173 + 215 + 173 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 173 + 179 + 173 + 179 + 209 + 179 + 215 + 173 + 173 + 215 + 173 + 173 + 179 + 86 + 123 + 86 + 122 + 86 + 50 + 86 + 43 + 7 + 37 + 8 + 49 + 87 + 50 + 92 + 86 + 50 + 50 + 85 + 49 + 49 + 85 + 56 + 128 + 128 + 136 + 135 + 177 + 141 + 178 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 93 + 123 + 128 + 87 + 86 + 86 + 85 + 86 + 87 + 172 + 172 + 172 + 171 + 130 + 165 + 93 + 129 + 165 + 129 + 129 + 172 + 165 + 136 + 202 + 171 + 172 + 166 + 135 + 172 + 166 + 171 + 166 + 129 + 172 + 172 + 165 + 165 + 130 + 171 + 130 + 128 + 130 + 128 + 87 + 86 + 86 + 49 + 80 + 86 + 129 + 129 + 123 + 128 + 165 + 130 + 86 + 122 + 86 + 85 + 123 + 86 + 86 + 86 + 86 + 79 + 37 + 86 + 128 + 123 + 49 + 79 + 86 + 123 + 86 + 93 + 165 + 122 + 129 + 129 + 86 + 79 + 87 + 122 + 92 + 165 + 123 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 208 + 173 + 214 + 172 + 208 + 172 + 173 + 208 + 214 + 215 + 166 + 172 + 171 + 129 + 129 + 123 + 129 + 122 + 93 + 136 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 179 + 173 + 215 + 179 + 173 + 179 + 209 + 179 + 172 + 173 + 86 + 86 + 79 + 51 + 122 + 87 + 49 + 44 + 43 + 0 + 8 + 50 + 85 + 87 + 49 + 87 + 49 + 50 + 91 + 49 + 49 + 85 + 92 + 129 + 136 + 135 + 177 + 136 + 178 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 171 + 129 + 87 + 129 + 86 + 86 + 86 + 86 + 129 + 130 + 172 + 172 + 171 + 130 + 128 + 93 + 165 + 165 + 136 + 165 + 129 + 172 + 207 + 173 + 171 + 166 + 135 + 172 + 166 + 172 + 165 + 129 + 171 + 130 + 172 + 165 + 129 + 166 + 135 + 130 + 128 + 86 + 93 + 86 + 86 + 80 + 49 + 123 + 129 + 129 + 165 + 135 + 166 + 122 + 93 + 122 + 43 + 86 + 86 + 122 + 129 + 79 + 86 + 87 + 42 + 43 + 80 + 86 + 86 + 79 + 86 + 165 + 86 + 129 + 166 + 92 + 122 + 123 + 86 + 85 + 87 + 122 + 129 + 129 + 165 + 136 + 165 + 172 + 172 + 208 + 172 + 172 + 172 + 165 + 172 + 215 + 172 + 208 + 165 + 172 + 130 + 171 + 172 + 166 + 135 + 130 + 129 + 129 + 123 + 128 + 129 + 130 + 171 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 173 + 179 + 173 + 172 + 179 + 173 + 79 + 43 + 44 + 79 + 93 + 122 + 50 + 80 + 7 + 43 + 7 + 50 + 51 + 86 + 87 + 50 + 85 + 92 + 50 + 86 + 92 + 49 + 129 + 134 + 136 + 136 + 172 + 141 + 142 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 92 + 123 + 86 + 128 + 87 + 129 + 129 + 215 + 165 + 136 + 122 + 93 + 165 + 172 + 166 + 171 + 129 + 166 + 135 + 172 + 166 + 171 + 208 + 130 + 165 + 172 + 165 + 129 + 166 + 171 + 136 + 164 + 129 + 166 + 135 + 130 + 122 + 92 + 86 + 86 + 86 + 44 + 86 + 122 + 136 + 165 + 129 + 207 + 130 + 165 + 92 + 123 + 43 + 79 + 86 + 86 + 165 + 50 + 122 + 86 + 79 + 43 + 86 + 86 + 43 + 79 + 86 + 166 + 129 + 129 + 129 + 165 + 122 + 93 + 79 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 129 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 166 + 172 + 172 + 172 + 165 + 135 + 129 + 165 + 130 + 93 + 165 + 129 + 129 + 87 + 129 + 129 + 129 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 179 + 173 + 179 + 173 + 173 + 179 + 173 + 43 + 42 + 38 + 49 + 122 + 87 + 86 + 86 + 50 + 2 + 49 + 43 + 50 + 86 + 93 + 50 + 86 + 50 + 92 + 86 + 92 + 86 + 129 + 135 + 130 + 177 + 136 + 135 + 142 + 141 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 92 + 129 + 123 + 92 + 87 + 128 + 129 + 172 + 172 + 172 + 129 + 172 + 166 + 171 + 172 + 166 + 129 + 165 + 136 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 172 + 129 + 165 + 130 + 165 + 135 + 165 + 129 + 123 + 93 + 86 + 79 + 86 + 86 + 43 + 86 + 86 + 87 + 129 + 165 + 129 + 172 + 171 + 166 + 86 + 122 + 43 + 43 + 86 + 122 + 129 + 80 + 49 + 86 + 80 + 43 + 79 + 86 + 79 + 43 + 79 + 166 + 135 + 123 + 171 + 129 + 123 + 129 + 86 + 129 + 165 + 129 + 129 + 129 + 165 + 129 + 165 + 172 + 166 + 178 + 202 + 172 + 171 + 172 + 172 + 172 + 202 + 171 + 130 + 165 + 129 + 93 + 128 + 87 + 128 + 93 + 122 + 93 + 129 + 129 + 129 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 215 + 173 + 179 + 179 + 173 + 179 + 173 + 179 + 173 + 137 + 173 + 42 + 37 + 43 + 49 + 80 + 93 + 86 + 86 + 44 + 50 + 43 + 7 + 87 + 86 + 51 + 86 + 50 + 87 + 92 + 86 + 93 + 92 + 92 + 130 + 171 + 136 + 135 + 141 + 136 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 129 + 86 + 129 + 86 + 93 + 129 + 165 + 172 + 171 + 173 + 171 + 172 + 129 + 166 + 171 + 166 + 135 + 166 + 172 + 172 + 172 + 201 + 172 + 166 + 171 + 129 + 129 + 129 + 166 + 165 + 93 + 129 + 128 + 123 + 93 + 79 + 50 + 43 + 86 + 44 + 85 + 129 + 123 + 129 + 129 + 171 + 166 + 128 + 122 + 87 + 85 + 43 + 43 + 122 + 123 + 49 + 37 + 79 + 49 + 44 + 79 + 43 + 86 + 79 + 44 + 128 + 129 + 123 + 135 + 123 + 122 + 129 + 129 + 128 + 130 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 123 + 130 + 128 + 129 + 87 + 92 + 129 + 86 + 129 + 93 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 215 + 137 + 179 + 173 + 173 + 136 + 179 + 173 + 137 + 137 + 79 + 7 + 37 + 79 + 50 + 86 + 86 + 87 + 44 + 49 + 44 + 7 + 50 + 86 + 93 + 86 + 50 + 86 + 87 + 55 + 87 + 128 + 100 + 129 + 172 + 135 + 177 + 135 + 135 + 142 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 128 + 129 + 123 + 93 + 122 + 93 + 165 + 136 + 165 + 172 + 136 + 165 + 129 + 165 + 130 + 171 + 166 + 172 + 172 + 171 + 208 + 172 + 166 + 135 + 166 + 171 + 130 + 122 + 172 + 165 + 129 + 129 + 129 + 129 + 129 + 80 + 50 + 85 + 44 + 79 + 50 + 129 + 129 + 166 + 128 + 129 + 129 + 129 + 80 + 122 + 86 + 43 + 43 + 86 + 122 + 43 + 43 + 1 + 79 + 43 + 79 + 43 + 86 + 79 + 44 + 86 + 122 + 128 + 129 + 86 + 123 + 129 + 165 + 129 + 129 + 129 + 123 + 92 + 165 + 123 + 171 + 172 + 166 + 172 + 171 + 172 + 208 + 130 + 171 + 166 + 135 + 166 + 129 + 129 + 129 + 92 + 123 + 92 + 130 + 129 + 93 + 135 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 173 + 173 + 179 + 137 + 172 + 173 + 137 + 136 + 137 + 136 + 137 + 79 + 36 + 7 + 43 + 79 + 44 + 92 + 81 + 49 + 44 + 50 + 44 + 86 + 87 + 51 + 86 + 50 + 92 + 87 + 56 + 122 + 93 + 134 + 136 + 171 + 136 + 177 + 135 + 99 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 135 + 166 + 129 + 93 + 129 + 122 + 129 + 129 + 129 + 129 + 136 + 172 + 166 + 171 + 172 + 165 + 130 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 165 + 136 + 165 + 129 + 166 + 92 + 129 + 123 + 92 + 85 + 80 + 50 + 86 + 79 + 87 + 129 + 170 + 123 + 129 + 129 + 129 + 122 + 80 + 49 + 79 + 44 + 85 + 79 + 43 + 43 + 37 + 42 + 44 + 43 + 42 + 80 + 79 + 50 + 79 + 86 + 80 + 86 + 122 + 93 + 165 + 135 + 123 + 165 + 86 + 122 + 129 + 129 + 129 + 166 + 171 + 172 + 165 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 171 + 123 + 129 + 129 + 86 + 93 + 86 + 165 + 135 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 215 + 173 + 173 + 179 + 172 + 173 + 143 + 130 + 173 + 136 + 137 + 136 + 130 + 100 + 79 + 43 + 1 + 43 + 80 + 49 + 87 + 86 + 44 + 50 + 43 + 50 + 51 + 86 + 87 + 50 + 86 + 87 + 56 + 122 + 93 + 93 + 129 + 172 + 135 + 172 + 135 + 141 + 135 + 135 + 178 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 166 + 129 + 93 + 128 + 123 + 93 + 122 + 93 + 165 + 172 + 172 + 172 + 208 + 172 + 129 + 172 + 171 + 172 + 208 + 173 + 208 + 172 + 208 + 136 + 165 + 172 + 129 + 172 + 165 + 172 + 129 + 171 + 87 + 128 + 130 + 122 + 86 + 50 + 86 + 86 + 43 + 129 + 86 + 165 + 87 + 207 + 136 + 122 + 86 + 86 + 79 + 44 + 79 + 49 + 79 + 43 + 43 + 37 + 43 + 79 + 43 + 1 + 85 + 43 + 86 + 80 + 43 + 79 + 86 + 86 + 129 + 165 + 129 + 129 + 123 + 92 + 123 + 128 + 129 + 165 + 166 + 172 + 172 + 165 + 172 + 129 + 172 + 172 + 166 + 171 + 129 + 129 + 129 + 129 + 123 + 86 + 92 + 136 + 129 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 173 + 173 + 179 + 173 + 137 + 178 + 131 + 137 + 136 + 136 + 94 + 136 + 130 + 100 + 80 + 49 + 38 + 42 + 44 + 43 + 87 + 49 + 80 + 44 + 14 + 80 + 50 + 94 + 87 + 86 + 93 + 87 + 86 + 51 + 87 + 135 + 129 + 172 + 172 + 172 + 135 + 130 + 134 + 172 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 164 + 129 + 123 + 92 + 123 + 128 + 88 + 129 + 165 + 172 + 209 + 172 + 171 + 166 + 172 + 172 + 208 + 173 + 208 + 172 + 172 + 172 + 171 + 166 + 135 + 173 + 208 + 172 + 171 + 130 + 129 + 172 + 129 + 129 + 129 + 92 + 86 + 86 + 44 + 86 + 86 + 129 + 122 + 130 + 129 + 172 + 129 + 86 + 43 + 86 + 79 + 7 + 37 + 43 + 43 + 36 + 7 + 43 + 79 + 43 + 1 + 42 + 43 + 43 + 37 + 43 + 43 + 86 + 123 + 129 + 129 + 129 + 165 + 92 + 123 + 86 + 122 + 130 + 129 + 165 + 208 + 136 + 208 + 129 + 129 + 172 + 166 + 129 + 135 + 123 + 129 + 92 + 123 + 86 + 129 + 130 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 209 + 179 + 173 + 179 + 173 + 137 + 178 + 137 + 173 + 130 + 136 + 136 + 130 + 101 + 136 + 130 + 94 + 86 + 85 + 1 + 43 + 43 + 86 + 86 + 44 + 44 + 43 + 51 + 44 + 93 + 88 + 123 + 93 + 93 + 88 + 87 + 87 + 87 + 94 + 135 + 166 + 172 + 172 + 172 + 165 + 136 + 171 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 129 + 122 + 93 + 123 + 129 + 124 + 129 + 171 + 166 + 173 + 208 + 171 + 173 + 208 + 172 + 166 + 171 + 172 + 166 + 178 + 173 + 165 + 172 + 214 + 172 + 172 + 166 + 171 + 136 + 165 + 130 + 135 + 123 + 129 + 86 + 128 + 44 + 86 + 92 + 122 + 130 + 171 + 129 + 172 + 123 + 86 + 49 + 80 + 43 + 43 + 43 + 0 + 44 + 43 + 36 + 44 + 85 + 43 + 1 + 36 + 43 + 43 + 43 + 44 + 43 + 43 + 129 + 129 + 129 + 166 + 129 + 165 + 129 + 87 + 122 + 123 + 129 + 171 + 167 + 172 + 172 + 166 + 129 + 136 + 165 + 129 + 129 + 123 + 128 + 93 + 123 + 171 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 137 + 173 + 173 + 143 + 137 + 173 + 136 + 131 + 137 + 136 + 94 + 137 + 136 + 94 + 94 + 128 + 80 + 7 + 43 + 80 + 86 + 50 + 44 + 7 + 44 + 44 + 87 + 87 + 94 + 129 + 124 + 94 + 87 + 88 + 92 + 124 + 130 + 136 + 131 + 172 + 166 + 172 + 172 + 166 + 171 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 130 + 129 + 123 + 129 + 87 + 129 + 123 + 129 + 166 + 172 + 172 + 209 + 172 + 165 + 173 + 165 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 166 + 171 + 172 + 136 + 165 + 172 + 135 + 130 + 122 + 92 + 87 + 85 + 123 + 92 + 87 + 171 + 130 + 171 + 130 + 165 + 93 + 43 + 79 + 44 + 43 + 42 + 1 + 43 + 79 + 7 + 80 + 44 + 43 + 0 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 123 + 123 + 129 + 130 + 135 + 123 + 123 + 92 + 159 + 129 + 123 + 136 + 165 + 165 + 172 + 172 + 166 + 135 + 166 + 135 + 129 + 123 + 129 + 129 + 172 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 173 + 137 + 173 + 137 + 173 + 136 + 136 + 131 + 136 + 137 + 94 + 136 + 130 + 94 + 99 + 129 + 80 + 7 + 43 + 79 + 51 + 79 + 50 + 8 + 44 + 87 + 87 + 87 + 130 + 95 + 130 + 88 + 129 + 88 + 130 + 88 + 130 + 130 + 131 + 173 + 172 + 131 + 172 + 166 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 93 + 123 + 129 + 87 + 165 + 173 + 136 + 208 + 209 + 173 + 208 + 173 + 214 + 173 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 171 + 172 + 172 + 129 + 135 + 122 + 87 + 79 + 93 + 122 + 129 + 136 + 166 + 135 + 129 + 166 + 92 + 43 + 44 + 79 + 50 + 36 + 7 + 37 + 43 + 43 + 44 + 85 + 38 + 6 + 43 + 87 + 80 + 43 + 36 + 7 + 37 + 86 + 129 + 123 + 135 + 130 + 122 + 123 + 86 + 129 + 123 + 136 + 165 + 130 + 164 + 166 + 136 + 171 + 130 + 165 + 136 + 165 + 136 + 171 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 173 + 179 + 137 + 173 + 137 + 173 + 137 + 136 + 131 + 136 + 130 + 100 + 136 + 131 + 94 + 94 + 100 + 122 + 43 + 43 + 37 + 43 + 44 + 43 + 44 + 50 + 80 + 51 + 88 + 129 + 94 + 124 + 94 + 124 + 94 + 124 + 95 + 124 + 130 + 131 + 136 + 167 + 131 + 173 + 166 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 130 + 124 + 129 + 129 + 124 + 129 + 129 + 172 + 172 + 209 + 214 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 172 + 178 + 172 + 172 + 166 + 171 + 172 + 172 + 172 + 178 + 166 + 135 + 130 + 122 + 86 + 43 + 93 + 128 + 123 + 172 + 135 + 166 + 135 + 129 + 86 + 50 + 79 + 86 + 50 + 79 + 1 + 43 + 37 + 43 + 43 + 43 + 44 + 43 + 1 + 85 + 86 + 1 + 43 + 44 + 37 + 49 + 87 + 129 + 166 + 135 + 130 + 122 + 87 + 86 + 122 + 172 + 165 + 130 + 135 + 166 + 172 + 172 + 171 + 172 + 208 + 178 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 173 + 179 + 137 + 173 + 137 + 137 + 130 + 137 + 94 + 137 + 94 + 136 + 95 + 94 + 130 + 94 + 50 + 43 + 43 + 36 + 43 + 37 + 14 + 80 + 50 + 87 + 87 + 88 + 88 + 94 + 124 + 94 + 124 + 88 + 94 + 124 + 94 + 131 + 124 + 131 + 131 + 173 + 167 + 131 + 173 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 165 + 87 + 136 + 130 + 165 + 87 + 129 + 172 + 166 + 136 + 166 + 172 + 136 + 165 + 129 + 172 + 171 + 173 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 166 + 171 + 93 + 80 + 6 + 86 + 129 + 129 + 166 + 135 + 166 + 129 + 129 + 86 + 49 + 80 + 86 + 86 + 43 + 44 + 36 + 7 + 43 + 37 + 43 + 43 + 44 + 43 + 86 + 44 + 79 + 43 + 43 + 43 + 44 + 86 + 135 + 166 + 165 + 130 + 129 + 87 + 86 + 92 + 123 + 172 + 167 + 172 + 215 + 215 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 137 + 179 + 137 + 137 + 137 + 173 + 137 + 131 + 100 + 131 + 100 + 131 + 94 + 94 + 100 + 130 + 94 + 44 + 79 + 43 + 43 + 43 + 1 + 50 + 80 + 44 + 87 + 87 + 87 + 94 + 88 + 130 + 88 + 88 + 88 + 94 + 88 + 124 + 94 + 124 + 130 + 131 + 131 + 167 + 131 + 167 + 136 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 129 + 130 + 129 + 93 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 129 + 130 + 135 + 172 + 172 + 166 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 129 + 79 + 43 + 50 + 86 + 129 + 129 + 166 + 135 + 123 + 86 + 86 + 43 + 86 + 86 + 86 + 43 + 86 + 37 + 7 + 37 + 43 + 44 + 49 + 44 + 37 + 86 + 86 + 44 + 79 + 43 + 44 + 50 + 122 + 129 + 137 + 172 + 129 + 122 + 87 + 50 + 122 + 130 + 172 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 137 + 179 + 173 + 137 + 143 + 137 + 137 + 131 + 137 + 137 + 95 + 136 + 94 + 94 + 130 + 95 + 94 + 93 + 58 + 80 + 85 + 44 + 43 + 43 + 37 + 43 + 50 + 44 + 86 + 51 + 88 + 93 + 124 + 94 + 88 + 123 + 87 + 94 + 87 + 88 + 88 + 94 + 124 + 94 + 125 + 130 + 131 + 130 + 131 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 130 + 123 + 129 + 129 + 130 + 129 + 130 + 135 + 129 + 166 + 93 + 129 + 166 + 129 + 129 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 166 + 172 + 172 + 172 + 171 + 129 + 86 + 43 + 43 + 86 + 129 + 129 + 129 + 172 + 122 + 43 + 43 + 50 + 86 + 86 + 86 + 43 + 44 + 43 + 37 + 43 + 43 + 43 + 50 + 79 + 1 + 43 + 86 + 86 + 80 + 49 + 44 + 79 + 93 + 129 + 123 + 130 + 129 + 86 + 86 + 87 + 172 + 172 + 173 + 178 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 179 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 95 + 136 + 95 + 94 + 130 + 95 + 130 + 94 + 93 + 94 + 52 + 86 + 122 + 43 + 44 + 43 + 43 + 43 + 44 + 8 + 86 + 87 + 88 + 87 + 93 + 88 + 93 + 88 + 88 + 87 + 87 + 87 + 129 + 88 + 88 + 124 + 94 + 94 + 124 + 88 + 130 + 131 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 166 + 136 + 130 + 129 + 93 + 129 + 123 + 93 + 130 + 129 + 93 + 129 + 129 + 130 + 171 + 166 + 136 + 171 + 130 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 129 + 172 + 130 + 128 + 44 + 86 + 86 + 128 + 87 + 172 + 129 + 87 + 43 + 43 + 49 + 80 + 85 + 44 + 43 + 86 + 43 + 43 + 44 + 43 + 43 + 79 + 44 + 6 + 37 + 86 + 123 + 50 + 44 + 86 + 86 + 86 + 123 + 93 + 129 + 122 + 93 + 129 + 130 + 173 + 178 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 137 + 179 + 137 + 173 + 143 + 131 + 137 + 101 + 137 + 131 + 100 + 131 + 94 + 94 + 130 + 94 + 94 + 88 + 95 + 87 + 95 + 86 + 87 + 85 + 44 + 43 + 37 + 50 + 43 + 44 + 51 + 87 + 87 + 87 + 87 + 94 + 87 + 94 + 87 + 87 + 130 + 87 + 93 + 88 + 87 + 94 + 124 + 88 + 94 + 130 + 88 + 166 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 179 + 173 + 136 + 171 + 130 + 86 + 130 + 93 + 129 + 129 + 129 + 129 + 130 + 129 + 135 + 166 + 172 + 129 + 172 + 136 + 171 + 130 + 172 + 172 + 130 + 171 + 130 + 171 + 172 + 93 + 122 + 86 + 129 + 86 + 129 + 129 + 129 + 93 + 79 + 43 + 43 + 50 + 43 + 79 + 44 + 49 + 44 + 79 + 44 + 43 + 44 + 43 + 44 + 42 + 44 + 86 + 86 + 50 + 80 + 129 + 86 + 86 + 123 + 129 + 130 + 136 + 136 + 172 + 173 + 214 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 173 + 143 + 137 + 173 + 101 + 131 + 137 + 95 + 136 + 94 + 95 + 130 + 94 + 94 + 94 + 89 + 93 + 52 + 93 + 88 + 58 + 122 + 86 + 86 + 43 + 43 + 44 + 43 + 44 + 43 + 51 + 86 + 87 + 87 + 51 + 93 + 86 + 93 + 87 + 94 + 129 + 87 + 129 + 94 + 87 + 88 + 94 + 94 + 87 + 130 + 94 + 137 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 179 + 179 + 215 + 215 + 179 + 215 + 173 + 136 + 129 + 128 + 130 + 93 + 129 + 129 + 93 + 129 + 129 + 129 + 129 + 172 + 129 + 136 + 166 + 171 + 136 + 166 + 135 + 166 + 136 + 165 + 136 + 165 + 129 + 93 + 122 + 129 + 130 + 129 + 171 + 129 + 93 + 43 + 43 + 43 + 86 + 44 + 49 + 43 + 80 + 43 + 50 + 80 + 43 + 44 + 43 + 43 + 43 + 44 + 86 + 86 + 80 + 50 + 128 + 87 + 123 + 172 + 135 + 166 + 136 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 137 + 179 + 137 + 137 + 137 + 137 + 131 + 101 + 130 + 94 + 101 + 130 + 94 + 94 + 94 + 89 + 94 + 87 + 95 + 88 + 93 + 52 + 123 + 86 + 50 + 43 + 44 + 43 + 37 + 43 + 50 + 45 + 86 + 93 + 86 + 50 + 87 + 93 + 93 + 87 + 135 + 94 + 87 + 93 + 93 + 94 + 94 + 94 + 93 + 94 + 130 + 130 + 131 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 137 + 178 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 172 + 172 + 166 + 129 + 129 + 93 + 123 + 92 + 129 + 129 + 130 + 129 + 165 + 135 + 130 + 129 + 172 + 129 + 129 + 166 + 129 + 172 + 129 + 129 + 123 + 92 + 122 + 129 + 130 + 129 + 172 + 129 + 92 + 80 + 43 + 43 + 49 + 87 + 86 + 43 + 50 + 79 + 43 + 86 + 50 + 80 + 43 + 43 + 43 + 44 + 86 + 86 + 44 + 86 + 92 + 130 + 172 + 167 + 172 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 173 + 143 + 173 + 137 + 137 + 179 + 131 + 101 + 137 + 94 + 130 + 95 + 94 + 100 + 88 + 94 + 57 + 124 + 93 + 52 + 93 + 87 + 87 + 51 + 122 + 51 + 44 + 85 + 7 + 37 + 7 + 44 + 85 + 51 + 122 + 87 + 56 + 50 + 87 + 93 + 51 + 135 + 93 + 94 + 129 + 94 + 93 + 94 + 93 + 129 + 100 + 94 + 130 + 137 + 130 + 167 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 173 + 179 + 137 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 129 + 135 + 123 + 129 + 129 + 129 + 130 + 129 + 171 + 172 + 172 + 130 + 129 + 129 + 172 + 172 + 172 + 129 + 129 + 123 + 86 + 87 + 128 + 136 + 130 + 129 + 129 + 50 + 43 + 86 + 50 + 123 + 86 + 43 + 43 + 50 + 44 + 50 + 43 + 44 + 50 + 79 + 7 + 80 + 86 + 86 + 87 + 129 + 173 + 209 + 215 + 215 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 143 + 173 + 137 + 173 + 137 + 101 + 137 + 131 + 100 + 95 + 130 + 94 + 94 + 94 + 93 + 52 + 94 + 93 + 88 + 93 + 87 + 51 + 87 + 93 + 87 + 87 + 86 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 50 + 86 + 87 + 86 + 93 + 50 + 87 + 93 + 92 + 93 + 94 + 93 + 129 + 100 + 129 + 93 + 94 + 94 + 130 + 100 + 136 + 131 + 172 + 131 + 209 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 172 + 143 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 173 + 136 + 136 + 129 + 130 + 129 + 130 + 136 + 179 + 173 + 215 + 172 + 131 + 171 + 172 + 173 + 179 + 166 + 129 + 129 + 86 + 93 + 86 + 130 + 171 + 130 + 129 + 51 + 85 + 44 + 80 + 50 + 86 + 43 + 44 + 49 + 44 + 86 + 50 + 43 + 79 + 50 + 43 + 44 + 123 + 135 + 166 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 173 + 143 + 173 + 137 + 137 + 131 + 101 + 94 + 130 + 94 + 94 + 94 + 93 + 52 + 93 + 51 + 87 + 51 + 51 + 51 + 93 + 87 + 86 + 51 + 87 + 86 + 51 + 86 + 43 + 80 + 49 + 44 + 7 + 44 + 44 + 86 + 86 + 129 + 86 + 93 + 87 + 93 + 92 + 87 + 93 + 129 + 100 + 94 + 129 + 93 + 57 + 87 + 93 + 93 + 94 + 130 + 136 + 130 + 131 + 136 + 131 + 172 + 179 + 173 + 215 + 179 + 173 + 137 + 136 + 166 + 143 + 173 + 143 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 172 + 137 + 172 + 179 + 215 + 173 + 179 + 215 + 179 + 173 + 173 + 178 + 172 + 173 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 130 + 129 + 86 + 50 + 43 + 86 + 44 + 86 + 86 + 49 + 50 + 43 + 86 + 50 + 43 + 44 + 86 + 50 + 165 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 137 + 137 + 130 + 137 + 94 + 94 + 94 + 94 + 93 + 94 + 88 + 94 + 57 + 87 + 51 + 87 + 57 + 51 + 51 + 87 + 86 + 86 + 57 + 87 + 87 + 87 + 86 + 50 + 86 + 43 + 44 + 43 + 43 + 44 + 86 + 50 + 87 + 129 + 93 + 87 + 93 + 92 + 87 + 93 + 93 + 130 + 99 + 129 + 86 + 57 + 51 + 86 + 50 + 93 + 88 + 93 + 94 + 94 + 130 + 124 + 100 + 131 + 130 + 137 + 136 + 131 + 136 + 129 + 137 + 130 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 173 + 179 + 215 + 179 + 179 + 179 + 215 + 173 + 179 + 179 + 179 + 173 + 172 + 136 + 179 + 173 + 172 + 136 + 129 + 130 + 172 + 93 + 129 + 129 + 87 + 136 + 129 + 136 + 165 + 129 + 93 + 86 + 93 + 92 + 86 + 92 + 129 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 172 + 101 + 130 + 94 + 94 + 88 + 94 + 94 + 94 + 129 + 100 + 87 + 57 + 93 + 87 + 51 + 57 + 87 + 51 + 93 + 86 + 87 + 87 + 93 + 86 + 93 + 86 + 80 + 50 + 43 + 44 + 49 + 44 + 43 + 86 + 50 + 122 + 93 + 87 + 129 + 93 + 86 + 93 + 129 + 94 + 129 + 93 + 93 + 86 + 51 + 50 + 44 + 51 + 50 + 87 + 87 + 94 + 87 + 94 + 88 + 94 + 93 + 130 + 94 + 93 + 130 + 93 + 94 + 131 + 136 + 137 + 172 + 143 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 209 + 179 + 179 + 179 + 179 + 173 + 179 + 179 + 173 + 178 + 172 + 136 + 173 + 166 + 215 + 178 + 173 + 215 + 179 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 136 + 130 + 94 + 136 + 130 + 130 + 137 + 136 + 130 + 100 + 130 + 94 + 93 + 93 + 94 + 88 + 93 + 56 + 87 + 87 + 93 + 86 + 93 + 93 + 130 + 86 + 57 + 79 + 44 + 43 + 44 + 44 + 49 + 80 + 56 + 123 + 86 + 86 + 93 + 87 + 86 + 93 + 93 + 129 + 94 + 129 + 93 + 123 + 56 + 44 + 7 + 43 + 2 + 50 + 44 + 50 + 51 + 87 + 57 + 88 + 87 + 94 + 51 + 88 + 93 + 94 + 87 + 94 + 129 + 94 + 137 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 215 + 179 + 179 + 215 + 179 + 215 + 179 + 179 + 179 + 215 + 215 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 137 + 173 + 137 + 136 + 137 + 173 + 172 + 173 + 143 + 173 + 137 + 171 + 100 + 130 + 93 + 129 + 93 + 94 + 87 + 93 + 93 + 92 + 130 + 93 + 129 + 93 + 122 + 8 + 43 + 43 + 49 + 44 + 44 + 86 + 92 + 86 + 87 + 87 + 128 + 87 + 50 + 93 + 87 + 129 + 92 + 130 + 129 + 87 + 93 + 43 + 8 + 43 + 6 + 44 + 44 + 51 + 50 + 87 + 58 + 87 + 51 + 94 + 87 + 52 + 93 + 88 + 58 + 129 + 94 + 94 + 137 + 136 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 215 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 179 + 173 + 179 + 179 + 173 + 179 + 179 + 173 + 172 + 137 + 135 + 130 + 129 + 100 + 130 + 129 + 93 + 129 + 129 + 100 + 129 + 93 + 129 + 94 + 79 + 50 + 43 + 44 + 49 + 80 + 86 + 93 + 86 + 87 + 86 + 93 + 86 + 86 + 50 + 87 + 86 + 129 + 129 + 130 + 86 + 93 + 86 + 0 + 7 + 8 + 43 + 45 + 50 + 51 + 51 + 88 + 51 + 93 + 51 + 88 + 50 + 94 + 94 + 87 + 94 + 94 + 95 + 136 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 215 + 179 + 179 + 173 + 178 + 137 + 172 + 129 + 136 + 136 + 130 + 136 + 129 + 136 + 129 + 136 + 135 + 130 + 129 + 49 + 80 + 44 + 85 + 44 + 86 + 87 + 50 + 86 + 87 + 92 + 86 + 80 + 50 + 50 + 80 + 87 + 92 + 129 + 93 + 123 + 93 + 44 + 43 + 0 + 43 + 8 + 44 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 57 + 88 + 51 + 94 + 94 + 88 + 136 + 94 + 136 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 179 + 173 + 178 + 173 + 172 + 137 + 172 + 136 + 172 + 136 + 135 + 130 + 136 + 172 + 136 + 136 + 128 + 136 + 44 + 86 + 86 + 50 + 86 + 44 + 86 + 87 + 50 + 86 + 50 + 80 + 50 + 43 + 43 + 86 + 86 + 86 + 94 + 122 + 92 + 86 + 44 + 37 + 7 + 1 + 43 + 50 + 44 + 51 + 51 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 101 + 130 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 173 + 179 + 172 + 173 + 136 + 172 + 136 + 172 + 173 + 136 + 136 + 172 + 135 + 130 + 135 + 136 + 130 + 135 + 93 + 129 + 87 + 92 + 86 + 44 + 86 + 43 + 50 + 44 + 49 + 44 + 43 + 43 + 43 + 43 + 44 + 86 + 51 + 86 + 86 + 87 + 86 + 44 + 7 + 1 + 42 + 8 + 44 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 94 + 51 + 94 + 87 + 94 + 95 + 136 + 137 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 209 + 179 + 173 + 173 + 172 + 143 + 172 + 130 + 137 + 171 + 136 + 137 + 172 + 136 + 130 + 136 + 171 + 136 + 136 + 130 + 136 + 129 + 99 + 129 + 94 + 93 + 86 + 86 + 43 + 44 + 43 + 7 + 43 + 43 + 7 + 43 + 37 + 7 + 7 + 42 + 44 + 80 + 50 + 86 + 50 + 79 + 44 + 7 + 7 + 37 + 7 + 44 + 51 + 51 + 50 + 16 + 45 + 51 + 93 + 51 + 88 + 57 + 87 + 94 + 52 + 129 + 100 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 136 + 172 + 137 + 136 + 136 + 130 + 136 + 136 + 137 + 165 + 137 + 100 + 166 + 100 + 136 + 129 + 94 + 135 + 93 + 93 + 93 + 87 + 49 + 86 + 44 + 43 + 7 + 42 + 1 + 7 + 43 + 7 + 43 + 1 + 43 + 6 + 1 + 43 + 44 + 85 + 44 + 50 + 43 + 44 + 7 + 37 + 7 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 52 + 57 + 87 + 51 + 94 + 87 + 58 + 94 + 94 + 130 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 136 + 172 + 173 + 173 + 136 + 167 + 136 + 136 + 136 + 165 + 136 + 130 + 136 + 94 + 137 + 135 + 130 + 101 + 136 + 130 + 136 + 93 + 93 + 130 + 93 + 99 + 87 + 129 + 57 + 86 + 50 + 43 + 44 + 43 + 7 + 0 + 43 + 1 + 7 + 43 + 7 + 0 + 43 + 7 + 37 + 7 + 43 + 43 + 44 + 43 + 14 + 43 + 43 + 7 + 44 + 44 + 8 + 86 + 9 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 94 + 94 + 94 + 137 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 136 + 130 + 136 + 130 + 171 + 101 + 166 + 129 + 100 + 130 + 130 + 136 + 94 + 135 + 130 + 100 + 130 + 130 + 135 + 94 + 94 + 129 + 93 + 93 + 93 + 86 + 57 + 93 + 87 + 93 + 92 + 80 + 49 + 43 + 7 + 1 + 43 + 6 + 1 + 43 + 7 + 43 + 43 + 43 + 2 + 42 + 43 + 7 + 44 + 43 + 43 + 44 + 50 + 44 + 43 + 44 + 8 + 51 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 52 + 87 + 57 + 87 + 58 + 88 + 93 + 88 + 136 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 178 + 94 + 130 + 136 + 137 + 130 + 130 + 130 + 136 + 94 + 129 + 94 + 130 + 130 + 100 + 130 + 94 + 130 + 93 + 94 + 94 + 93 + 94 + 93 + 92 + 87 + 57 + 93 + 87 + 56 + 124 + 93 + 92 + 86 + 44 + 6 + 1 + 43 + 1 + 7 + 43 + 43 + 43 + 50 + 43 + 1 + 43 + 43 + 7 + 43 + 43 + 44 + 86 + 44 + 49 + 8 + 43 + 44 + 51 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 52 + 87 + 52 + 93 + 53 + 88 + 88 + 93 + 131 + 173 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 94 + 136 + 130 + 136 + 130 + 136 + 94 + 130 + 130 + 100 + 130 + 93 + 130 + 94 + 130 + 94 + 93 + 130 + 93 + 94 + 93 + 87 + 93 + 94 + 92 + 87 + 93 + 51 + 87 + 129 + 93 + 86 + 92 + 49 + 43 + 7 + 43 + 1 + 43 + 43 + 50 + 49 + 86 + 50 + 80 + 44 + 7 + 43 + 43 + 50 + 86 + 45 + 50 + 43 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 8 + 44 + 15 + 44 + 9 + 50 + 51 + 52 + 87 + 51 + 46 + 87 + 52 + 95 + 131 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 136 + 95 + 136 + 131 + 136 + 130 + 137 + 94 + 130 + 100 + 130 + 129 + 94 + 94 + 130 + 94 + 93 + 94 + 123 + 94 + 93 + 93 + 51 + 93 + 87 + 51 + 93 + 50 + 130 + 92 + 129 + 86 + 51 + 86 + 7 + 43 + 1 + 43 + 43 + 49 + 87 + 92 + 86 + 45 + 49 + 37 + 43 + 43 + 51 + 86 + 86 + 50 + 44 + 50 + 43 + 44 + 15 + 44 + 50 + 51 + 8 + 45 + 8 + 14 + 44 + 51 + 45 + 51 + 51 + 52 + 88 + 52 + 125 + 94 + 130 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 130 + 137 + 130 + 101 + 130 + 94 + 130 + 94 + 136 + 94 + 124 + 94 + 93 + 130 + 94 + 93 + 94 + 124 + 93 + 88 + 57 + 87 + 87 + 57 + 87 + 51 + 87 + 50 + 129 + 93 + 129 + 92 + 123 + 49 + 50 + 44 + 43 + 43 + 50 + 86 + 86 + 123 + 92 + 50 + 44 + 43 + 43 + 44 + 86 + 93 + 87 + 50 + 80 + 50 + 43 + 50 + 9 + 51 + 50 + 45 + 50 + 9 + 7 + 8 + 8 + 45 + 50 + 52 + 88 + 52 + 125 + 94 + 89 + 131 + 131 + 173 + 173 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 137 + 94 + 137 + 94 + 130 + 94 + 101 + 88 + 94 + 94 + 94 + 130 + 87 + 94 + 87 + 94 + 87 + 94 + 51 + 87 + 94 + 51 + 86 + 51 + 51 + 51 + 80 + 15 + 129 + 129 + 93 + 129 + 93 + 86 + 86 + 44 + 43 + 50 + 49 + 86 + 129 + 87 + 129 + 86 + 50 + 43 + 44 + 44 + 86 + 129 + 86 + 87 + 50 + 50 + 44 + 44 + 51 + 50 + 45 + 14 + 45 + 8 + 8 + 7 + 51 + 44 + 52 + 52 + 88 + 89 + 94 + 125 + 131 + 131 + 131 + 131 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 100 + 130 + 95 + 94 + 94 + 94 + 94 + 87 + 94 + 93 + 88 + 57 + 88 + 88 + 93 + 51 + 88 + 93 + 51 + 87 + 50 + 87 + 51 + 45 + 51 + 50 + 51 + 44 + 129 + 135 + 93 + 123 + 92 + 87 + 55 + 80 + 50 + 44 + 86 + 92 + 87 + 129 + 93 + 87 + 86 + 49 + 80 + 50 + 87 + 129 + 93 + 86 + 45 + 50 + 44 + 44 + 50 + 51 + 44 + 15 + 45 + 8 + 7 + 50 + 9 + 51 + 88 + 88 + 95 + 89 + 95 + 125 + 95 + 131 + 125 + 167 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 131 + 94 + 95 + 136 + 52 + 93 + 94 + 88 + 57 + 88 + 87 + 94 + 51 + 88 + 87 + 52 + 87 + 51 + 51 + 88 + 45 + 50 + 51 + 50 + 44 + 51 + 8 + 51 diff --git a/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO.BAS b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO.BAS new file mode 100755 index 0000000..601f9d6 --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO.BAS @@ -0,0 +1,352 @@ +DECLARE SUB playsound (a$) +DECLARE SUB turnon () +DECLARE SUB ellips (x!, y!, s!, v!, t!) +DECLARE SUB prn (x!, y!, msg$, siz!, col1!) +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerdisp () +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + + +pi = 3.14128 + +turnon + +SCREEN 7, , , 1 + +timerinit +s = 50 +2 +s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 +s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 + + +frm = frm + 1 +sv1 = 5 * s1 +sv2 = 2 +vp = SIN(timerCvalue(1) * 1.3) + +sh1 = 2 * s2 +sh2 = 1.4 +hp = SIN(timerCvalue(1)) * .7 + + +mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 + +ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 +ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 +ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 +prn timerCvalue(5), 10, "KHK", 7, 250 + +prn timerCvalue(8), 130, "Infotehno-", 2, 0 +prn timerCvalue(8), 150, " loogia", 2, 0 + +timerprocess +LOCATE 1, 1 +'PRINT timerCtime(0) +IF timerCtime(0) > 26 THEN CHAIN "ray.bas" +PCOPY 0, 1 +LINE (0, 0)-(319, 199), 15, BF +GOTO 2 +SYSTEM + +SUB ellips (x, y, s, v, t) + +IF x > 0 THEN +IF y > 0 THEN + +CIRCLE (x, y), s, v, , , t +PAINT (x, y), v + +END IF +END IF + +END SUB + +SUB mo (x, y, an, s, w) +depth = depth + 1 +IF s < .2 THEN GOTO 1 + +IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 + +CIRCLE (x, y), s, c +PAINT (x, y), c + +IF w <> 1 THEN +x1 = SIN(an) * s * 2.5 + x +y1 = COS(an) * s * 2.5 + y +IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 3 +END IF + +IF w <> 2 THEN +x1 = SIN(an - pi / 2) * s * 2.5 + x +y1 = COS(an - pi / 2) * s * 2.5 + y +IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 4 +END IF + +IF w <> 3 THEN +x1 = SIN(an - pi) * s * 2.5 + x +y1 = COS(an - pi) * s * 2.5 + y +IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 1 +END IF + +IF w <> 4 THEN +x1 = SIN(an - pi * 1.5) * s * 2.5 + x +y1 = COS(an - pi * 1.5) * s * 2.5 + y +IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 2 +END IF + +1 +depth = depth - 1 +END SUB + +SUB playsound (a$) +REM SHELL "c:\progra~1\winamp\winamp.exe " + a$ +SCREEN 0 +SCREEN 7, , , 1 + +END SUB + +SUB prn (x, y, msg$, siz, col1) +IF x < 0 THEN GOTO prn1 +IF x > 319 THEN GOTO prn1 + +DIM bck(10000) + +GET (0, 0)-(100, 7), bck +LOCATE 1, 1 +PRINT msg$ + +col = col1 + +FOR x1 = 0 TO LEN(msg$) * 8 - 1 +FOR y1 = 0 TO 7 + IF POINT(x1, y1) > 0 THEN + rx = x1 * siz + x + ry = y1 * siz + y + IF col1 > 100 THEN col = RND * 4 + 10 + IF col1 > 200 THEN + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B + ELSE + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +' LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +NEXT y1 +NEXT x1 + + +PUT (0, 0), bck, PSET +prn1: +END SUB + +SUB timerAdd (element, time, value) + +FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 +NEXT a +timer3: + +timerTime(element, a) = time +timerValue(element, a) = value + +END SUB + +SUB timerdisp +LOCATE 1, 1 + +FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) +NEXT a + +END SUB + +SUB timerinit +timerLast = TIMER + +paus = 24 + +' stuff size +timerAdd 0, 0, 50 +timerAdd 0, 7, 10 +timerAdd 0, 20, 10 +timerAdd 0, 24, 0 +timerAdd 0, 1000, 0 + + +' stuff speed +timerAdd 1, 0, .1 +timerAdd 1, 1000, 1000 + +' stuff X & Y +timerAdd 2, 0, 160 +timerAdd 3, 0, 100 + +timerAdd 2, 5, 160 +timerAdd 3, 5, 100 + +timerAdd 2, 9, 280 +timerAdd 3, 9, 160 + +timerAdd 2, 10, 280 +timerAdd 3, 10, 160 + +timerAdd 2, 20, 40 +timerAdd 3, 20, 160 + +timerAdd 2, 1000, 40 +timerAdd 3, 1000, 160 + +' stuff rotations +timerAdd 4, 0, .1 +timerAdd 4, 10, .1 +timerAdd 4, 22, 18 +timerAdd 4, 2000, 10000 + +' KHK message X + +timerAdd 5, 0, -1 +timerAdd 5, 5, -1 +timerAdd 5, 9, 50 +timerAdd 5, 10, 30 +timerAdd 5, paus, 30 +timerAdd 5, paus + 2, 321 + +' Ellips Y & radius +timerAdd 6, 0, -1 +timerAdd 6, 4, -1 +timerAdd 6, 10, 30 +timerAdd 6, 1000, 50 + +timerAdd 7, 0, 1 +timerAdd 7, 6, 1 +timerAdd 7, 12, 130 + +timerAdd 7, paus, 130 +timerAdd 7, paus + 2, 1 + +' "Infotehnoloogia" message + +timerAdd 8, 0, 320 +timerAdd 8, 11, 320 +timerAdd 8, 20, 100 +timerAdd 8, paus, 100 +timerAdd 8, paus + 1, -1 + + +END SUB + +SUB timerprocess + +timerCurrent = TIMER +timerDiff = timerCurrent - timerLast +timerLast = timerCurrent + +FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim +NEXT a + +END SUB + +SUB turnon +'a$ = INPUT$(1) +playsound "marine.mp3" + +SCREEN 7, , , 1 + +FOR x = 0 TO 160 STEP 15 + + LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF + LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF + LINE (160 - x, 90)-(160 + x, 110), 15, BF + + PCOPY 0, 1 + CLS + SOUND 0, .5 +NEXT x + +FOR y = 10 TO 100 STEP 15 + CLS + + LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF + LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF + LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF + + PCOPY 0, 1 + SOUND 0, .5 +NEXT y + +FOR a = 1 TO 25 + prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 + PCOPY 0, 1 + SOUND 0, 1 +NEXT a + +DIM buf(1 TO 1000) +FOR b = 1 TO 30 +FOR a = 0 TO 195 + t = ABS(100 - a) + + IF RND * 50 < t THEN + GET (1, a)-(318, a + 1), buf + IF a > 100 THEN + PUT (0, a), buf, PSET + ELSE + PUT (2, a), buf, PSET + END IF + END IF +NEXT a +PCOPY 0, 1 +'SOUND 0, 1 +NEXT b + + +END SUB + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO2.BAS b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO2.BAS new file mode 100755 index 0000000..4ce482e --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO2.BAS @@ -0,0 +1,46 @@ +SCREEN 7, , , 1 + +1 +FOR a = 1 TO SIN(frm / 30) * 3 + 4 + LOCATE a * 2, a * 4 + COLOR RND * 5 + 10 + PRINT "Programmeerimine ***" +NEXT a + +frm = frm + 1 +st = (SIN(frm / 10) + 2) / 3 +x = SIN(frm / 30) * 50 +y = COS(frm / 42) * 30 + + +FOR a = .1 TO 10 STEP st + CIRCLE (160 + x, 100 + y), 80, 2, , , a +NEXT a + +c = RND * 2 + 12 +FOR a = 0 TO 10 + f = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 50 + y2 = COS(f2 + 6) * 30 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), c +NEXT a + +FOR a = 0 TO 50 + x = RND * 320 + y = RND * 320 + PSET (x, y), RND * 15 +NEXT a + + + +PCOPY 0, 1 +CLS + +IF frm > 200 THEN GOTO 2 +GOTO 1 +2 +CHAIN "KHKDEMO3.BAS" + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO3.BAS b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO3.BAS new file mode 100755 index 0000000..0e69f0f --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO3.BAS @@ -0,0 +1,62 @@ +SCREEN 7, , , 1 + +1 +LINE (0, 0)-(319, 199), RND, BF +SOUND 0, 1 +frm = frm + 1 +st = (SIN(frm / 10) + 2) / 3 +x = SIN(frm / 30) * 50 +y = COS(frm / 42) * 30 + + +FOR a = .1 TO 10 STEP st + CIRCLE (160 + x, 100 + y), 80, 10, , , a +NEXT a + +c = RND * 2 + 12 +FOR a = 0 TO 50 + f = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), c +NEXT a + +FOR a = 0 TO 50 + f = (a * 15 + frm) / 12 + f2 = (a * 15 + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + CIRCLE (x1 + 80, y1 + 50), a / 2, 14 + PAINT (x1 + 80, y1 + 50), 14 +NEXT a + + +FOR a = 0 TO 15 + f = (a + frm) / 12 + f2 = (a + frm) / 7 + x1 = SIN(f) * 50 + y1 = COS(f) * 30 + x2 = SIN(f2 + 6) * 80 + y2 = COS(f2 + 6) * 120 + LINE (x1 + 180, y1 + 150)-(x2 + 180, y2 + 150), c +NEXT a + +FOR a = 0 TO 50 + x = RND * 320 + y = RND * 320 + PSET (x, y), RND * 15 +NEXT a + +PCOPY 0, 1 +CLS + +IF frm > 100 THEN GOTO 2 +GOTO 1 +2 +CHAIN "KHKDEMO4.BAS" + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO6.BAS b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO6.BAS new file mode 100755 index 0000000..980806a --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/KHKDEMO6.BAS @@ -0,0 +1,33 @@ +SCREEN 13 + +LOCATE 1, 1 +PRINT "Tulege meile “ppima!!" + +FOR x = 0 TO 160 + FOR y = 0 TO 32 + c = POINT(x, y) + x1 = x * 2 + y1 = y * 2 + 90 + LINE (x1, y1)-(x1 + 1, y1 + 1), c, BF + NEXT y +NEXT x + +LOCATE 1, 1 +PRINT " " + +FOR x = 0 TO 320 + CIRCLE (x, 130), 10, 9 + SOUND 0, .1 +NEXT x + +FOR y = 0 TO 70 + SOUND 0, .1 + LINE (160 - 70 + y, y)-(160 + 70 - y, y), 9 +NEXT y + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a + +CHAIN "khkdemo.bas" + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/RAY.BAS b/graphics/presentations/KHK Intellektika 2004 demo/RAY.BAS new file mode 100755 index 0000000..89451bc --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/RAY.BAS @@ -0,0 +1,318 @@ +DECLARE SUB dispimg () +DECLARE SUB updateland () +DECLARE SUB makeland () +DECLARE FUNCTION getcol! (r!, g!, b!) +DEFINT A-Y +DECLARE SUB traceline (x%, y%, xl) +DECLARE SUB dispframe () +DECLARE SUB tower (x%, y%) +DECLARE SUB square (x1%, y1%, x2%, y2%, c%, h%) +DECLARE SUB displand () +DECLARE SUB start () +DECLARE SUB setupal () + +DIM SHARED landh(0 TO 180, 0 TO 180) +DIM SHARED landc(0 TO 180, 0 TO 180) + +DIM SHARED zmyx, zmyy, zmyz +DIM SHARED myx, myy, myz +DIM SHARED zmyan, myan2 +DIM SHARED ste, stem, dist +DIM SHARED tim$, frm, frmrate +DIM SHARED pi +DIM SHARED white + +sky = getcol(100, 100, 255) +pi = 3.141592 + +frmrate = 10 ' Desired framerate. + ' Lower framerate, better quality + +start +makeland + +'displand +'a$ = INPUT$(1) +myan2 = 2 +OPEN "cat.i01" FOR INPUT AS #1 +INPUT #1, pictxw +INPUT #1, pictyw +INPUT #1, pictx +INPUT #1, picty + + +1 +x1 = RND * 160 +y1 = RND * 160 +x2 = x1 + RND * 10 + 1 +y2 = y1 + RND * 10 + 1 + +IF (frm > 50) AND (frm < 150) THEN square x1, y1, x2, y2, RND * 200, RND * 10 +IF (frm > 150) AND (picty < 177) THEN + + FOR ff = 1 TO 180 * 2 + INPUT #1, c + landc(pictx, picty) = c + landh(pictx, picty) = 0 + pictx = pictx + 1 + IF pictx >= pictxw THEN pictx = 0: picty = picty + 1 + IF picty >= pictyw THEN picty = 0 + NEXT ff +END IF + +IF frm = 430 THEN dispimg +LOCATE 1, 30 +'PRINT frm + +updateland +dispframe +GOTO 1 +CLOSE #1 + +SUB dispframe + +l = 0 +zst = -.0031 * ste +FOR z = .5 TO -.5 STEP zst +traceline SIN(zmyan + z) * dist + myx, COS(zmyan + z) * dist + myy, l +l = l + ste +NEXT z + +END SUB + +SUB dispimg + +CLOSE #1 + + +OPEN "cat.i01" FOR INPUT AS #1 +INPUT #1, pictxw +INPUT #1, pictyw + +FOR y = 0 TO pictyw - 1 +FOR x = 0 TO pictxw - 1 +INPUT #1, c +PSET (x + 50, 150 - y), c +NEXT x +NEXT y + +CLOSE #1 + + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a +CHAIN "KHKDEMO2.BAS" + +END SUB + +SUB displand + + +FOR z = 0 TO 180 +zs = 1 +IF z > 120 THEN zs = .7 +IF z > 160 THEN zs = .6 +FOR zx = 0 TO 180 STEP zs +y1 = landh(zx, z) - 80 +zx1 = zx - 90 +z1 = 300 - z +zx2 = zx1 / z1 * 190 +zy2 = y1 / z1 * 190 + +LINE (zx2 + 160, 40 - zy2)-(zx2 + 160, 200), landc(zx, z) +NEXT zx +NEXT z + +LOCATE 1, 1 +PRINT "Press any key to continue..." + +END SUB + +DEFSNG A-Y +FUNCTION getcol (r, g, b) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 255 THEN r = 255 +IF g > 255 THEN g = 255 +IF b > 255 THEN b = 255 +getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43) +END FUNCTION + +DEFINT A-Y +SUB makeland + +square 0, 0, 180, 180, 15, 0 + +FOR y = 0 TO 180 +FOR x = 0 TO 180 +x1 = (x \ 10) MOD 2 +y1 = (y \ 10) MOD 2 +c = (x1 + y1) MOD 2 +IF c = 0 THEN + landc(x, y) = getcol(250, 250, 250) +ELSE + landc(x, y) = getcol(250, 50, 50) +END IF +NEXT x +NEXT y + +FOR y = 10 TO 90 +FOR x = 90 TO 170 +v = SQR((ABS(50 - y)) ^ 2 + (ABS(130 - x)) ^ 2) +h = SQR((60 - v) * (60 + v)) - 35 +IF h > 0 THEN landh(x, y) = h +NEXT x +NEXT y + +tower 20, 20 +tower 60, 20 +tower 40, 150 + + +FOR za = 0 TO 20 STEP .1 +x = SIN(za) * (1 + (za * 2)) + 100 +y = COS(za) * (1 + (za * 2)) + 100 +landc(x, y) = getcol(20, RND * 200, 20) +landc(x + 1, y) = getcol(20, RND * 200, 20) +landc(x, y + 1) = getcol(20, RND * 200, 20) +landc(x + 1, y + 1) = getcol(20, RND * 200, 20) +NEXT za + +END SUB + +SUB setupal +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r +END SUB + +SUB square (x1, y1, x2, y2, c, h) + +FOR y = y1 TO y2 +FOR x = x1 TO x2 +landh(x, y) = h +landc(x, y) = c +NEXT x +NEXT y + +END SUB + +SUB start +SCREEN 13 +'PRINT "please wait..." + +setupal + +zmyan = 4.14 +myan2 = 100 +ste = 1 +stem = ste - 1 +dist = 190 +tim$ = TIME$ +zmyx = 170 +zmyy = 170 +zmyz = 20 + +END SUB + +SUB tower (x, y) + +FOR a = 10 TO 0 STEP -1 +square x - a, y - a, x + a, y + a, getcol(100, 0, a * 20), 20 - a +NEXT a + +square x - 11, y - 11, x - 9, y - 9, getcol(255, 0, 0), 20 +square x + 9, y - 11, x + 11, y - 9, getcol(0, 255, 0), 20 +square x - 11, y + 9, x - 9, y + 11, getcol(0, 0, 255), 20 +square x + 9, y + 9, x + 11, y + 11, getcol(255, 255, 0), 20 + + +END SUB + +SUB traceline (x, y, xl) + +IF x < 0 THEN +zpr = myx / (myx - x) +x = 0 +y = myy - ((myy - y) * zpr) +END IF + +IF y < 0 THEN +zpr = myy / (myy - y) +y = 0 +x = myx - ((myx - x) * zpr) +END IF + +IF x > 180 THEN +zpr = (180 - myx) / (x - myx) +x = 180 +y = myy - ((myy - y) * zpr) +END IF + +IF y > 180 THEN +zpr = (180 - myy) / (y - myy) +y = 180 +x = myx - ((myx - x) * zpr) +END IF + +lp = SQR(ABS(myx - x) ^ 2 + ABS(myy - y) ^ 2) + +xp = x - myx +yp = y - myy + +yo = 200 + +FOR a = 1 TO lp + cx = xp * a / lp + myx + cy = yp * a / lp + myy + yn = myan2 - ((landh(cx, cy) - myz) * 300) / a + IF yn < yo THEN LINE (xl, yn)-(xl + stem, yo - 1), landc(cx, cy), BF: yo = yn +NEXT a +LINE (xl, yo - 1)-(xl + stem, 0), sky, BF + +END SUB + +SUB updateland + +frm = frm + 1 +ste = 4 +stem = ste - 1 + + +zmyan = frm / 15 + pi +'myan2 = myan2 + 5 +'zmyx = SIN(zmyan) * 3 + zmyx +'zmyy = COS(zmyan) * 3 + zmyy +'zmyzs = 2 + +zmyx = 90 - SIN(zmyan) * 91 +zmyy = 90 - COS(zmyan) * 91 + +IF zmyx > 170 THEN zmyx = 170 +IF zmyy > 170 THEN zmyy = 170 +IF zmyx < 10 THEN zmyx = 10 +IF zmyy < 10 THEN zmyy = 10 + +zmyz = SIN(zmyan / 2) * 4 + 4 +zmyz = SIN(zmyan / 2) * 50 + 50 +myan2 = -SIN(zmyan / 2) * 120 + 121 +myan2 = -(SIN(zmyan / 2) * 10 + 10) +IF zmyz < landh(myx, myy) + 10 THEN zmyz = landh(myx, myy) + 10: zmyzs = (zmyzs / 2) + .2 + +myz = zmyz +myy = zmyy +myx = zmyx + +END SUB + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/khkdemo4.BAS b/graphics/presentations/KHK Intellektika 2004 demo/khkdemo4.BAS new file mode 100755 index 0000000..ec82d00 --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/khkdemo4.BAS @@ -0,0 +1,35 @@ +DECLARE SUB ga (x!, y!, s!) +DIM SHARED colr ' this variable holds fractal color + ' and because it is 'SHARED' it is accessible + ' from within sub module. +SCREEN 12 + +colr = 10 ' display single fractel +ga 320, 240, 127 + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a +CLS + +FOR a = 1 TO 128 STEP 5 ' display fractal serie + colr = RND * 7 + 7 + ga 320, 240, a +NEXT a + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a + +CHAIN "khkdemo5.bas" + +SUB ga (x, y, s) +IF s >= 1 THEN + LINE (x - s, y - s)-(x + s, y + s), colr, B + ga x - s, y - s, s / 2.3 ' each fractel sub element is 2.3 times smaller + ga x + s, y - s, s / 2.3 ' than previous. + ga x + s, y + s, s / 2.3 + ga x - s, y + s, s / 2.3 +END IF +END SUB + diff --git a/graphics/presentations/KHK Intellektika 2004 demo/khkdemo5.BAS b/graphics/presentations/KHK Intellektika 2004 demo/khkdemo5.BAS new file mode 100755 index 0000000..3f08b6c --- /dev/null +++ b/graphics/presentations/KHK Intellektika 2004 demo/khkdemo5.BAS @@ -0,0 +1,329 @@ +' 3D Maze explorer +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB startext () +DECLARE SUB control () +DECLARE SUB putbyte (addr!, dat!) +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () +DECLARE SUB animate () + +DIM SHARED px(1 TO 5000) +DIM SHARED py(1 TO 5000) +DIM SHARED pz(1 TO 5000) +DIM SHARED rpx(1 TO 5000) +DIM SHARED rpy(1 TO 5000) +DIM SHARED rpe(1 TO 5000) + +DIM SHARED l1(1 TO 5000) +DIM SHARED l2(1 TO 5000) +DIM SHARED lc(1 TO 5000) + +DIM SHARED nl, np + +DIM SHARED an1, an2, an3 + +DIM SHARED tim + +DIM SHARED extSEG, extADDR + +DIM SHARED myx, myy, myz +DIM SHARED myxs, myys, myzs +DIM SHARED buttL, buttR +DIM SHARED maxmove + +nl = 0 +np = 0 + +start + + +cx = 0 +cy = 0 +cz = 0 + +np = 1 +px(1) = 0 +py(1) = 0 +pz(1) = 0 + +1 +frm = frm + 1 +myx = SIN(frm / 30) * 100 +myz = COS(frm / 59) * 100 +myy = SIN(frm / 300) +an1 = SIN(frm / 60) +an2 = SIN(frm / 36) / 3 + + +np = np + 1 +px(np) = cx +py(np) = cy +pz(np) = cz + + + +nl = nl + 1 +l1(nl) = np +l2(nl) = np - 1 +lc(nl) = INT(RND * 15) + 1 +'lc(nl) = ABS(cx / 20) + + + +va = INT(RND * 3) + +SELECT CASE va +CASE 0 + cx = RND * 500 - 250 +CASE 1 + cy = RND * 100 - 50 +CASE 2 + cz = RND * 500 - 250 +END SELECT + + +'control +animate + +PCOPY 0, 1 +CLS + +IF frm > 1200 THEN GOTO 200 +GOTO 1 +200 + +CHAIN "khkdemo6.bas" + +SUB animate + + +s1 = SIN(an1) +s2 = SIN(an2) +s3 = SIN(an3) + +c1 = COS(an1) +c2 = COS(an2) +c3 = COS(an3) + + + +FOR a = 1 TO np + x = px(a) - myx + y = py(a) - myy + z = pz(a) - myz + + + x1 = x * c1 + z * s1 + z1 = z * c1 - x * s1 + + y1 = y * c2 + z1 * s2 + z2 = z1 * c2 - y * s2 + + +' z2 = z2 + 10 + + IF z2 > 3 THEN + rpe(a) = 1 + rpx(a) = x1 / z2 * 130 + 160 + rpy(a) = y1 / z2 * 130 + 100 + ELSE + rpe(a) = 0 + END IF + +NEXT a + + +FOR a = 1 TO nl + + p1 = l1(a) + p2 = l2(a) + IF (rpe(p1) = 1) AND (rpe(p2) = 1) THEN LINE (rpx(p1), rpy(p1))-(rpx(p2), rpy(p2)), lc(a) + +NEXT a + + +END SUB + +SUB control + + +IF getbyte(8) <> 0 THEN + putbyte 8, 0 + xp = getword(2) + putword 2, 0 + yp = getword(4) + putword 4, 0 + butt = getword(6) + putword 6, 0 + buttL = 0 + buttR = 0 + IF butt = 1 THEN buttL = 1 + IF butt = 2 THEN buttR = 1 + IF butt = 3 THEN buttL = 1: buttR = 1 + + + IF buttR = 1 THEN + IF buttL = 1 THEN + myxs = myxs + SIN(an1) * yp / 4 + myzs = myzs - COS(an1) * yp / 4 + GOTO 3 + END IF + myys = myys + yp / 4 +3 + yp = 0 + END IF + +END IF + + + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +an1 = an1 - xp / 150 + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +an2 = an2 - yp / 150 + + + +a$ = INKEY$ + +IF a$ = "a" THEN myxs = myxs - COS(an1): myzs = myzs - SIN(an1) +IF a$ = "d" THEN myxs = myxs + COS(an1): myzs = myzs + SIN(an1) +IF a$ = "w" THEN myxs = myxs - SIN(an1): myzs = myzs + COS(an1) +IF a$ = "s" THEN myxs = myxs + SIN(an1): myzs = myzs - COS(an1) +IF a$ = "q" THEN SYSTEM + +myxs = myxs / 1.1 +myys = myys / 1.1 +myzs = myzs / 1.1 + +myx = myx + myxs +myz = myz + myzs +myy = myy + myys + +END SUB + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +100 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 100 + + +END SUB + +SUB putbyte (addr, dat) + +POKE (extADDR + addr), dat +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +SUB start +' startext + + +SCREEN 7, , , 1 + +maxmove = 50 + +END SUB + +SUB startext + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + diff --git a/graphics/presentations/KHK j6ulud/cat.i01 b/graphics/presentations/KHK j6ulud/cat.i01 new file mode 100755 index 0000000..eb828e6 --- /dev/null +++ b/graphics/presentations/KHK j6ulud/cat.i01 @@ -0,0 +1,32222 @@ + 179 + 180 + 0 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 1 + 6 + 37 + 0 + 0 + 43 + 1 + 43 + 43 + 44 + 86 + 86 + 123 + 129 + 93 + 165 + 129 + 136 + 165 + 172 + 129 + 136 + 165 + 136 + 165 + 172 + 173 + 178 + 208 + 172 + 215 + 172 + 208 + 214 + 173 + 208 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 159 + 135 + 123 + 93 + 122 + 129 + 122 + 93 + 159 + 129 + 135 + 166 + 165 + 136 + 165 + 130 + 135 + 165 + 130 + 129 + 129 + 129 + 129 + 93 + 122 + 93 + 129 + 122 + 87 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 86 + 43 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 87 + 128 + 86 + 129 + 123 + 129 + 129 + 122 + 129 + 86 + 79 + 86 + 43 + 86 + 43 + 43 + 79 + 43 + 43 + 37 + 43 + 85 + 86 + 122 + 87 + 128 + 87 + 80 + 85 + 44 + 79 + 49 + 80 + 86 + 85 + 80 + 86 + 80 + 85 + 80 + 86 + 86 + 79 + 86 + 79 + 43 + 43 + 43 + 43 + 44 + 86 + 92 + 171 + 136 + 173 + 178 + 173 + 215 + 178 + 137 + 178 + 173 + 178 + 173 + 172 + 178 + 173 + 178 + 173 + 172 + 179 + 172 + 179 + 36 + 0 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 0 + 7 + 0 + 0 + 1 + 36 + 0 + 1 + 6 + 37 + 7 + 36 + 44 + 86 + 122 + 87 + 122 + 129 + 129 + 172 + 172 + 165 + 136 + 129 + 171 + 136 + 166 + 178 + 209 + 172 + 208 + 179 + 172 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 129 + 129 + 130 + 164 + 93 + 123 + 129 + 128 + 87 + 122 + 86 + 129 + 87 + 128 + 130 + 171 + 130 + 171 + 166 + 135 + 166 + 129 + 171 + 130 + 129 + 129 + 129 + 129 + 129 + 87 + 128 + 87 + 129 + 86 + 129 + 86 + 123 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 79 + 44 + 86 + 128 + 87 + 93 + 128 + 123 + 128 + 123 + 129 + 165 + 136 + 123 + 128 + 86 + 86 + 86 + 80 + 85 + 44 + 79 + 43 + 43 + 43 + 43 + 43 + 79 + 86 + 123 + 92 + 86 + 86 + 86 + 80 + 85 + 43 + 43 + 44 + 79 + 86 + 79 + 85 + 44 + 79 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 43 + 43 + 43 + 49 + 87 + 129 + 129 + 178 + 173 + 178 + 136 + 215 + 143 + 172 + 172 + 178 + 172 + 143 + 172 + 179 + 172 + 179 + 172 + 173 + 178 + 209 + 178 + 1 + 0 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 0 + 37 + 0 + 0 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 0 + 0 + 43 + 43 + 36 + 44 + 49 + 116 + 92 + 123 + 128 + 130 + 165 + 172 + 130 + 171 + 129 + 172 + 130 + 178 + 172 + 208 + 173 + 172 + 215 + 172 + 214 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 130 + 122 + 93 + 129 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 172 + 166 + 172 + 135 + 166 + 135 + 165 + 130 + 129 + 129 + 129 + 130 + 128 + 129 + 87 + 129 + 128 + 87 + 86 + 129 + 85 + 93 + 122 + 86 + 86 + 43 + 50 + 79 + 86 + 87 + 86 + 128 + 93 + 128 + 129 + 123 + 129 + 136 + 165 + 129 + 165 + 129 + 129 + 87 + 122 + 86 + 85 + 44 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 128 + 87 + 86 + 122 + 50 + 79 + 43 + 43 + 86 + 43 + 43 + 80 + 79 + 79 + 50 + 79 + 86 + 79 + 43 + 79 + 43 + 79 + 43 + 7 + 43 + 44 + 50 + 85 + 166 + 135 + 172 + 178 + 173 + 179 + 177 + 173 + 178 + 137 + 178 + 173 + 178 + 136 + 178 + 173 + 178 + 172 + 173 + 177 + 173 + 178 + 1 + 36 + 0 + 0 + 1 + 0 + 0 + 43 + 0 + 0 + 1 + 0 + 0 + 37 + 0 + 6 + 1 + 0 + 0 + 37 + 0 + 7 + 0 + 37 + 42 + 43 + 80 + 86 + 128 + 87 + 128 + 165 + 130 + 171 + 166 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 179 + 172 + 172 + 173 + 178 + 171 + 166 + 172 + 136 + 165 + 86 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 85 + 44 + 86 + 86 + 86 + 86 + 129 + 129 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 136 + 165 + 129 + 129 + 130 + 129 + 129 + 92 + 123 + 129 + 92 + 122 + 93 + 122 + 87 + 129 + 86 + 86 + 43 + 86 + 93 + 122 + 93 + 122 + 93 + 122 + 129 + 129 + 129 + 171 + 165 + 130 + 171 + 129 + 123 + 129 + 129 + 86 + 86 + 79 + 50 + 80 + 49 + 80 + 43 + 43 + 7 + 43 + 79 + 86 + 86 + 86 + 87 + 86 + 85 + 44 + 79 + 43 + 7 + 50 + 79 + 79 + 43 + 86 + 79 + 79 + 44 + 79 + 43 + 79 + 43 + 44 + 43 + 6 + 44 + 49 + 80 + 93 + 129 + 172 + 178 + 136 + 178 + 173 + 178 + 173 + 179 + 172 + 179 + 172 + 172 + 143 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 179 + 0 + 36 + 1 + 0 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 43 + 43 + 86 + 122 + 123 + 129 + 128 + 129 + 130 + 165 + 172 + 129 + 172 + 171 + 172 + 173 + 172 + 178 + 172 + 172 + 173 + 208 + 171 + 172 + 172 + 129 + 130 + 129 + 129 + 86 + 86 + 86 + 50 + 80 + 85 + 43 + 86 + 43 + 43 + 80 + 49 + 80 + 86 + 93 + 122 + 136 + 171 + 166 + 171 + 172 + 172 + 136 + 166 + 171 + 136 + 165 + 136 + 129 + 165 + 136 + 129 + 129 + 129 + 129 + 123 + 129 + 93 + 122 + 129 + 93 + 122 + 86 + 86 + 86 + 86 + 87 + 129 + 129 + 128 + 87 + 129 + 129 + 129 + 129 + 172 + 165 + 136 + 159 + 128 + 129 + 129 + 129 + 123 + 85 + 44 + 86 + 85 + 80 + 50 + 43 + 43 + 37 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 43 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 79 + 43 + 79 + 44 + 43 + 49 + 43 + 43 + 43 + 50 + 86 + 129 + 136 + 135 + 209 + 179 + 172 + 179 + 179 + 172 + 179 + 171 + 179 + 172 + 172 + 179 + 172 + 179 + 172 + 179 + 209 + 178 + 179 + 172 + 1 + 36 + 6 + 1 + 0 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 43 + 37 + 43 + 86 + 122 + 129 + 129 + 128 + 123 + 172 + 129 + 172 + 129 + 136 + 171 + 209 + 172 + 214 + 172 + 173 + 172 + 172 + 172 + 171 + 166 + 135 + 124 + 128 + 93 + 86 + 87 + 85 + 80 + 43 + 50 + 79 + 43 + 50 + 43 + 43 + 37 + 49 + 86 + 87 + 128 + 87 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 166 + 172 + 172 + 135 + 166 + 135 + 166 + 135 + 165 + 129 + 129 + 135 + 129 + 123 + 129 + 129 + 129 + 86 + 87 + 128 + 86 + 86 + 86 + 93 + 128 + 123 + 93 + 129 + 128 + 130 + 129 + 129 + 165 + 129 + 166 + 129 + 128 + 123 + 129 + 129 + 86 + 122 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 43 + 43 + 86 + 79 + 50 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 79 + 43 + 43 + 44 + 79 + 43 + 86 + 43 + 43 + 44 + 49 + 44 + 87 + 128 + 135 + 136 + 172 + 215 + 172 + 179 + 173 + 178 + 173 + 178 + 209 + 178 + 173 + 172 + 178 + 173 + 179 + 214 + 173 + 178 + 209 + 179 + 214 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 0 + 0 + 1 + 6 + 0 + 37 + 0 + 0 + 1 + 42 + 43 + 43 + 79 + 86 + 86 + 123 + 129 + 129 + 165 + 129 + 165 + 136 + 165 + 136 + 172 + 172 + 209 + 178 + 172 + 173 + 172 + 171 + 172 + 172 + 130 + 165 + 93 + 86 + 122 + 86 + 86 + 50 + 79 + 43 + 44 + 49 + 43 + 44 + 42 + 43 + 37 + 50 + 86 + 122 + 93 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 165 + 136 + 165 + 136 + 129 + 129 + 129 + 130 + 165 + 92 + 129 + 129 + 86 + 122 + 92 + 87 + 128 + 86 + 86 + 87 + 128 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 128 + 130 + 128 + 129 + 123 + 129 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 1 + 43 + 43 + 85 + 44 + 85 + 44 + 86 + 86 + 43 + 44 + 42 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 79 + 43 + 44 + 49 + 49 + 86 + 87 + 129 + 135 + 172 + 173 + 178 + 173 + 178 + 173 + 179 + 214 + 173 + 172 + 179 + 172 + 179 + 172 + 214 + 173 + 215 + 172 + 214 + 215 + 173 + 214 + 0 + 1 + 0 + 42 + 1 + 0 + 0 + 1 + 0 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 0 + 7 + 36 + 43 + 7 + 79 + 44 + 86 + 122 + 86 + 122 + 129 + 86 + 129 + 165 + 136 + 165 + 129 + 130 + 171 + 172 + 179 + 172 + 208 + 172 + 172 + 172 + 136 + 129 + 123 + 128 + 93 + 122 + 87 + 85 + 86 + 86 + 50 + 49 + 79 + 44 + 85 + 44 + 85 + 43 + 44 + 86 + 122 + 93 + 128 + 129 + 130 + 171 + 172 + 130 + 172 + 172 + 178 + 166 + 172 + 172 + 171 + 172 + 130 + 165 + 135 + 130 + 129 + 129 + 129 + 129 + 165 + 130 + 129 + 129 + 92 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 129 + 92 + 123 + 129 + 92 + 123 + 129 + 129 + 129 + 129 + 122 + 165 + 93 + 122 + 86 + 86 + 86 + 86 + 44 + 79 + 43 + 7 + 43 + 36 + 7 + 43 + 80 + 49 + 80 + 50 + 85 + 80 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 1 + 49 + 43 + 43 + 43 + 44 + 43 + 79 + 50 + 80 + 50 + 128 + 93 + 166 + 136 + 172 + 172 + 179 + 214 + 173 + 179 + 208 + 179 + 178 + 209 + 179 + 172 + 179 + 179 + 208 + 179 + 208 + 215 + 179 + 209 + 214 + 209 + 179 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 0 + 1 + 0 + 6 + 1 + 36 + 0 + 1 + 42 + 1 + 43 + 43 + 86 + 86 + 122 + 129 + 123 + 128 + 93 + 159 + 129 + 129 + 135 + 166 + 129 + 136 + 165 + 172 + 172 + 135 + 166 + 171 + 130 + 172 + 129 + 86 + 129 + 86 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 43 + 86 + 86 + 50 + 79 + 50 + 86 + 123 + 92 + 123 + 129 + 172 + 136 + 171 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 165 + 136 + 129 + 129 + 129 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 122 + 86 + 93 + 86 + 123 + 86 + 92 + 129 + 122 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 80 + 86 + 50 + 43 + 43 + 43 + 43 + 37 + 7 + 43 + 79 + 49 + 44 + 86 + 86 + 44 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 6 + 44 + 43 + 79 + 49 + 86 + 50 + 86 + 92 + 130 + 129 + 171 + 136 + 172 + 179 + 208 + 179 + 173 + 214 + 173 + 214 + 173 + 214 + 173 + 214 + 172 + 178 + 209 + 178 + 209 + 214 + 215 + 209 + 178 + 209 + 214 + 1 + 0 + 36 + 1 + 6 + 0 + 1 + 0 + 36 + 7 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 0 + 0 + 7 + 0 + 37 + 6 + 43 + 80 + 86 + 122 + 136 + 159 + 128 + 129 + 129 + 129 + 165 + 129 + 130 + 129 + 129 + 129 + 129 + 136 + 165 + 130 + 135 + 165 + 130 + 128 + 87 + 122 + 92 + 86 + 86 + 86 + 129 + 87 + 128 + 129 + 87 + 85 + 86 + 86 + 86 + 80 + 50 + 122 + 93 + 123 + 128 + 130 + 171 + 136 + 172 + 166 + 172 + 135 + 172 + 172 + 166 + 172 + 171 + 172 + 135 + 166 + 135 + 130 + 165 + 129 + 129 + 136 + 129 + 129 + 166 + 129 + 93 + 122 + 92 + 123 + 93 + 122 + 93 + 86 + 122 + 86 + 86 + 86 + 93 + 122 + 86 + 129 + 129 + 86 + 129 + 123 + 86 + 128 + 86 + 122 + 87 + 85 + 80 + 50 + 43 + 86 + 43 + 37 + 43 + 42 + 44 + 43 + 49 + 80 + 50 + 86 + 86 + 50 + 79 + 44 + 43 + 43 + 43 + 49 + 44 + 43 + 44 + 13 + 80 + 50 + 86 + 86 + 92 + 129 + 130 + 135 + 172 + 172 + 172 + 178 + 173 + 179 + 208 + 179 + 172 + 215 + 172 + 215 + 172 + 179 + 215 + 172 + 214 + 173 + 215 + 214 + 209 + 214 + 173 + 215 + 214 + 209 + 0 + 0 + 1 + 6 + 36 + 1 + 0 + 43 + 1 + 0 + 43 + 6 + 1 + 36 + 0 + 1 + 0 + 7 + 36 + 7 + 37 + 6 + 37 + 43 + 43 + 43 + 122 + 129 + 129 + 165 + 129 + 129 + 165 + 128 + 129 + 87 + 129 + 129 + 128 + 124 + 129 + 135 + 129 + 129 + 129 + 130 + 128 + 87 + 122 + 93 + 123 + 92 + 129 + 129 + 129 + 130 + 165 + 129 + 93 + 85 + 129 + 87 + 85 + 92 + 123 + 92 + 129 + 123 + 135 + 166 + 172 + 171 + 136 + 172 + 166 + 136 + 171 + 166 + 172 + 172 + 172 + 136 + 165 + 172 + 129 + 136 + 129 + 165 + 130 + 135 + 165 + 130 + 135 + 123 + 92 + 129 + 128 + 87 + 123 + 92 + 123 + 92 + 86 + 87 + 122 + 92 + 123 + 93 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 123 + 122 + 86 + 50 + 86 + 79 + 50 + 43 + 80 + 43 + 43 + 7 + 43 + 79 + 43 + 86 + 50 + 86 + 122 + 50 + 86 + 43 + 86 + 44 + 86 + 49 + 49 + 86 + 49 + 79 + 50 + 86 + 92 + 129 + 129 + 130 + 135 + 179 + 172 + 208 + 179 + 172 + 179 + 209 + 178 + 179 + 208 + 179 + 208 + 214 + 173 + 215 + 208 + 179 + 215 + 208 + 215 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 0 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 0 + 43 + 1 + 42 + 1 + 0 + 43 + 0 + 0 + 1 + 43 + 42 + 1 + 43 + 37 + 6 + 37 + 43 + 85 + 123 + 92 + 165 + 123 + 129 + 129 + 129 + 129 + 86 + 128 + 87 + 86 + 128 + 87 + 129 + 129 + 122 + 93 + 129 + 128 + 87 + 129 + 129 + 128 + 129 + 130 + 129 + 171 + 129 + 172 + 129 + 129 + 129 + 123 + 93 + 128 + 123 + 93 + 122 + 129 + 129 + 129 + 172 + 172 + 172 + 135 + 166 + 136 + 166 + 171 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 165 + 135 + 130 + 165 + 135 + 130 + 165 + 136 + 129 + 123 + 92 + 130 + 128 + 87 + 128 + 87 + 122 + 93 + 86 + 86 + 128 + 87 + 129 + 86 + 122 + 129 + 86 + 122 + 86 + 87 + 128 + 86 + 80 + 86 + 85 + 44 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 86 + 87 + 128 + 87 + 92 + 93 + 129 + 93 + 129 + 136 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 209 + 178 + 215 + 173 + 178 + 209 + 172 + 215 + 208 + 178 + 215 + 209 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 209 + 0 + 43 + 0 + 0 + 1 + 42 + 1 + 43 + 0 + 43 + 43 + 0 + 1 + 0 + 43 + 0 + 43 + 37 + 7 + 79 + 43 + 43 + 43 + 6 + 37 + 43 + 79 + 86 + 122 + 129 + 86 + 129 + 129 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 86 + 86 + 87 + 128 + 92 + 123 + 129 + 93 + 129 + 165 + 135 + 166 + 136 + 171 + 130 + 165 + 172 + 135 + 166 + 135 + 123 + 93 + 128 + 129 + 123 + 129 + 92 + 130 + 129 + 172 + 171 + 130 + 172 + 165 + 136 + 171 + 130 + 172 + 165 + 172 + 136 + 171 + 172 + 166 + 135 + 130 + 165 + 135 + 130 + 129 + 171 + 130 + 165 + 129 + 93 + 129 + 129 + 122 + 129 + 93 + 122 + 87 + 86 + 128 + 87 + 86 + 129 + 86 + 122 + 87 + 92 + 122 + 122 + 87 + 128 + 86 + 86 + 80 + 86 + 85 + 87 + 43 + 86 + 44 + 85 + 43 + 43 + 43 + 43 + 43 + 49 + 87 + 86 + 129 + 86 + 92 + 86 + 86 + 129 + 92 + 86 + 129 + 100 + 165 + 136 + 136 + 130 + 178 + 135 + 173 + 172 + 179 + 178 + 215 + 173 + 178 + 179 + 209 + 214 + 179 + 173 + 214 + 208 + 214 + 173 + 214 + 215 + 209 + 215 + 215 + 209 + 179 + 214 + 209 + 214 + 208 + 215 + 214 + 209 + 43 + 36 + 1 + 6 + 37 + 6 + 43 + 37 + 43 + 7 + 36 + 7 + 37 + 42 + 37 + 43 + 79 + 43 + 49 + 43 + 79 + 44 + 36 + 43 + 43 + 79 + 86 + 86 + 122 + 129 + 123 + 129 + 129 + 129 + 129 + 86 + 86 + 85 + 44 + 86 + 87 + 85 + 86 + 87 + 123 + 128 + 129 + 129 + 130 + 171 + 135 + 166 + 172 + 130 + 171 + 172 + 130 + 171 + 130 + 129 + 171 + 130 + 129 + 129 + 129 + 92 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 166 + 129 + 135 + 172 + 130 + 171 + 172 + 172 + 165 + 136 + 129 + 129 + 166 + 135 + 130 + 171 + 129 + 130 + 128 + 123 + 129 + 129 + 129 + 93 + 123 + 128 + 93 + 122 + 87 + 128 + 86 + 86 + 86 + 129 + 86 + 122 + 93 + 123 + 128 + 122 + 86 + 80 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 49 + 81 + 92 + 93 + 86 + 129 + 92 + 129 + 93 + 129 + 129 + 136 + 129 + 137 + 172 + 177 + 137 + 178 + 173 + 179 + 214 + 173 + 179 + 179 + 208 + 179 + 179 + 172 + 215 + 179 + 178 + 209 + 179 + 208 + 215 + 214 + 209 + 179 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 215 + 214 + 209 + 79 + 43 + 0 + 43 + 0 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 79 + 49 + 43 + 80 + 43 + 79 + 79 + 44 + 43 + 42 + 43 + 37 + 43 + 85 + 80 + 129 + 86 + 129 + 122 + 129 + 86 + 165 + 87 + 128 + 44 + 86 + 79 + 87 + 86 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 130 + 172 + 171 + 172 + 130 + 171 + 172 + 172 + 129 + 130 + 135 + 165 + 130 + 129 + 129 + 135 + 165 + 129 + 87 + 171 + 130 + 171 + 130 + 171 + 172 + 130 + 171 + 129 + 165 + 136 + 129 + 172 + 166 + 172 + 135 + 166 + 135 + 129 + 130 + 129 + 129 + 166 + 135 + 165 + 93 + 129 + 122 + 93 + 129 + 129 + 122 + 135 + 123 + 93 + 128 + 87 + 128 + 87 + 122 + 93 + 122 + 86 + 129 + 129 + 122 + 87 + 128 + 86 + 122 + 44 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 80 + 43 + 7 + 43 + 43 + 49 + 86 + 129 + 87 + 92 + 136 + 165 + 135 + 172 + 136 + 172 + 179 + 179 + 172 + 179 + 215 + 179 + 179 + 178 + 215 + 179 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 179 + 173 + 214 + 215 + 209 + 214 + 209 + 215 + 214 + 215 + 209 + 215 + 215 + 208 + 215 + 215 + 214 + 209 + 214 + 215 + 214 + 79 + 37 + 7 + 43 + 0 + 37 + 6 + 43 + 80 + 43 + 43 + 86 + 43 + 43 + 86 + 43 + 43 + 79 + 80 + 43 + 43 + 42 + 37 + 43 + 43 + 79 + 86 + 122 + 129 + 86 + 86 + 123 + 128 + 87 + 129 + 86 + 80 + 86 + 50 + 122 + 86 + 93 + 122 + 87 + 129 + 92 + 165 + 130 + 129 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 165 + 129 + 129 + 136 + 164 + 130 + 129 + 172 + 135 + 130 + 165 + 129 + 136 + 165 + 172 + 136 + 171 + 166 + 136 + 165 + 136 + 165 + 129 + 130 + 171 + 136 + 172 + 165 + 130 + 129 + 135 + 129 + 130 + 129 + 171 + 129 + 129 + 129 + 122 + 93 + 122 + 129 + 93 + 128 + 129 + 129 + 93 + 123 + 128 + 87 + 129 + 86 + 129 + 122 + 129 + 129 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 79 + 86 + 86 + 86 + 50 + 86 + 43 + 43 + 43 + 44 + 43 + 85 + 86 + 93 + 86 + 93 + 129 + 172 + 135 + 173 + 178 + 173 + 215 + 178 + 179 + 215 + 179 + 214 + 179 + 215 + 178 + 179 + 179 + 208 + 179 + 179 + 209 + 178 + 179 + 209 + 178 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 179 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 208 + 215 + 79 + 43 + 43 + 0 + 1 + 42 + 43 + 43 + 43 + 80 + 43 + 86 + 43 + 43 + 79 + 43 + 79 + 50 + 79 + 44 + 43 + 43 + 42 + 79 + 43 + 80 + 85 + 87 + 86 + 122 + 128 + 87 + 123 + 128 + 129 + 87 + 86 + 86 + 86 + 87 + 122 + 93 + 87 + 123 + 86 + 129 + 129 + 129 + 136 + 165 + 172 + 172 + 171 + 172 + 172 + 135 + 172 + 166 + 135 + 129 + 166 + 135 + 166 + 171 + 136 + 166 + 171 + 135 + 166 + 135 + 172 + 172 + 165 + 136 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 123 + 135 + 129 + 129 + 130 + 171 + 87 + 128 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 129 + 129 + 123 + 92 + 129 + 123 + 128 + 123 + 93 + 122 + 86 + 129 + 86 + 122 + 86 + 86 + 80 + 49 + 122 + 86 + 50 + 86 + 44 + 43 + 79 + 50 + 43 + 44 + 43 + 86 + 93 + 86 + 129 + 135 + 130 + 178 + 172 + 173 + 179 + 214 + 179 + 215 + 179 + 209 + 179 + 215 + 179 + 178 + 209 + 179 + 179 + 208 + 179 + 178 + 209 + 179 + 214 + 173 + 215 + 214 + 215 + 215 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 215 + 208 + 214 + 215 + 215 + 215 + 208 + 215 + 79 + 43 + 43 + 43 + 0 + 1 + 42 + 43 + 44 + 43 + 50 + 79 + 86 + 36 + 43 + 79 + 44 + 85 + 44 + 85 + 79 + 44 + 79 + 85 + 43 + 43 + 80 + 86 + 86 + 122 + 129 + 87 + 128 + 123 + 129 + 87 + 92 + 86 + 123 + 93 + 129 + 165 + 130 + 86 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 166 + 172 + 171 + 136 + 165 + 136 + 165 + 172 + 173 + 171 + 172 + 136 + 166 + 171 + 136 + 172 + 171 + 166 + 172 + 129 + 172 + 129 + 129 + 129 + 166 + 136 + 165 + 135 + 130 + 129 + 129 + 165 + 129 + 129 + 130 + 135 + 123 + 92 + 129 + 86 + 129 + 87 + 128 + 129 + 87 + 128 + 129 + 129 + 129 + 123 + 129 + 93 + 129 + 122 + 86 + 122 + 86 + 129 + 86 + 86 + 86 + 116 + 85 + 86 + 86 + 86 + 50 + 80 + 86 + 43 + 50 + 43 + 43 + 43 + 44 + 85 + 87 + 129 + 129 + 136 + 136 + 208 + 172 + 179 + 179 + 214 + 215 + 179 + 215 + 215 + 179 + 215 + 172 + 215 + 179 + 214 + 173 + 215 + 172 + 215 + 214 + 173 + 215 + 208 + 179 + 215 + 215 + 215 + 209 + 214 + 215 + 215 + 215 + 208 + 215 + 215 + 208 + 215 + 214 + 215 + 209 + 214 + 215 + 79 + 43 + 43 + 43 + 1 + 43 + 36 + 7 + 43 + 80 + 49 + 79 + 44 + 49 + 79 + 44 + 79 + 86 + 79 + 50 + 79 + 79 + 43 + 50 + 79 + 43 + 80 + 85 + 123 + 92 + 123 + 122 + 129 + 86 + 129 + 129 + 123 + 93 + 122 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 171 + 166 + 136 + 171 + 172 + 136 + 166 + 172 + 172 + 178 + 166 + 172 + 171 + 130 + 129 + 172 + 171 + 172 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 172 + 171 + 136 + 166 + 135 + 165 + 135 + 130 + 129 + 165 + 136 + 129 + 129 + 122 + 136 + 129 + 129 + 129 + 123 + 129 + 128 + 87 + 129 + 86 + 87 + 128 + 86 + 86 + 129 + 92 + 166 + 129 + 93 + 122 + 92 + 123 + 92 + 123 + 86 + 122 + 86 + 122 + 86 + 86 + 86 + 123 + 86 + 86 + 85 + 50 + 80 + 86 + 43 + 50 + 37 + 43 + 7 + 42 + 44 + 49 + 93 + 129 + 129 + 130 + 171 + 142 + 209 + 179 + 214 + 179 + 209 + 215 + 215 + 179 + 215 + 179 + 215 + 178 + 209 + 179 + 214 + 208 + 179 + 214 + 209 + 179 + 214 + 215 + 208 + 215 + 215 + 215 + 215 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 215 + 214 + 215 + 208 + 215 + 214 + 209 + 86 + 79 + 86 + 43 + 0 + 7 + 36 + 43 + 43 + 43 + 43 + 44 + 79 + 43 + 43 + 85 + 44 + 79 + 86 + 79 + 50 + 79 + 44 + 43 + 79 + 49 + 80 + 122 + 92 + 123 + 129 + 128 + 123 + 86 + 123 + 92 + 87 + 129 + 129 + 129 + 129 + 130 + 165 + 129 + 172 + 130 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 172 + 136 + 166 + 214 + 173 + 214 + 172 + 172 + 172 + 135 + 173 + 172 + 172 + 165 + 135 + 166 + 136 + 165 + 136 + 129 + 129 + 172 + 129 + 129 + 92 + 165 + 129 + 93 + 129 + 123 + 129 + 129 + 86 + 93 + 122 + 93 + 122 + 86 + 92 + 123 + 93 + 122 + 129 + 93 + 129 + 122 + 87 + 128 + 123 + 128 + 87 + 86 + 86 + 85 + 122 + 86 + 87 + 86 + 86 + 80 + 85 + 50 + 80 + 85 + 43 + 7 + 37 + 7 + 43 + 43 + 50 + 122 + 93 + 129 + 136 + 171 + 173 + 172 + 179 + 215 + 215 + 173 + 215 + 214 + 179 + 215 + 215 + 172 + 215 + 215 + 215 + 208 + 179 + 208 + 215 + 179 + 208 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 178 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 215 + 79 + 86 + 43 + 79 + 43 + 1 + 43 + 0 + 43 + 43 + 7 + 43 + 79 + 43 + 43 + 79 + 44 + 85 + 80 + 85 + 44 + 79 + 86 + 79 + 43 + 80 + 85 + 87 + 128 + 129 + 123 + 129 + 122 + 93 + 122 + 86 + 129 + 123 + 130 + 129 + 129 + 130 + 135 + 166 + 135 + 166 + 172 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 166 + 136 + 172 + 172 + 171 + 166 + 172 + 135 + 172 + 171 + 173 + 208 + 179 + 172 + 208 + 172 + 172 + 136 + 172 + 172 + 171 + 166 + 136 + 166 + 135 + 129 + 166 + 135 + 129 + 130 + 128 + 129 + 129 + 130 + 129 + 123 + 128 + 93 + 128 + 86 + 87 + 128 + 87 + 122 + 93 + 86 + 122 + 93 + 123 + 128 + 93 + 123 + 92 + 123 + 129 + 122 + 93 + 86 + 116 + 85 + 87 + 122 + 86 + 86 + 86 + 79 + 86 + 50 + 86 + 80 + 49 + 43 + 37 + 7 + 43 + 42 + 44 + 49 + 86 + 130 + 129 + 135 + 172 + 136 + 208 + 179 + 214 + 209 + 215 + 215 + 179 + 215 + 215 + 172 + 215 + 215 + 209 + 178 + 215 + 208 + 214 + 209 + 179 + 208 + 215 + 214 + 209 + 214 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 79 + 43 + 43 + 80 + 49 + 37 + 43 + 6 + 37 + 7 + 43 + 43 + 43 + 79 + 43 + 43 + 86 + 79 + 80 + 85 + 86 + 86 + 80 + 86 + 85 + 80 + 86 + 86 + 128 + 87 + 165 + 86 + 123 + 128 + 87 + 129 + 124 + 128 + 93 + 166 + 129 + 129 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 172 + 172 + 172 + 172 + 129 + 172 + 166 + 172 + 178 + 209 + 178 + 209 + 172 + 172 + 172 + 172 + 171 + 172 + 136 + 165 + 166 + 135 + 129 + 129 + 165 + 135 + 129 + 123 + 93 + 129 + 129 + 129 + 122 + 93 + 129 + 122 + 93 + 123 + 92 + 123 + 86 + 86 + 123 + 91 + 87 + 92 + 123 + 92 + 129 + 86 + 129 + 123 + 128 + 86 + 86 + 86 + 116 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 44 + 86 + 43 + 43 + 43 + 7 + 37 + 6 + 44 + 86 + 92 + 128 + 130 + 135 + 172 + 172 + 173 + 178 + 209 + 215 + 178 + 209 + 215 + 214 + 215 + 179 + 209 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 208 + 215 + 208 + 172 + 215 + 209 + 178 + 209 + 214 + 209 + 215 + 214 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 79 + 43 + 43 + 44 + 79 + 43 + 7 + 43 + 43 + 1 + 43 + 43 + 79 + 49 + 79 + 80 + 49 + 86 + 80 + 86 + 85 + 86 + 116 + 86 + 86 + 86 + 122 + 86 + 87 + 128 + 123 + 128 + 86 + 123 + 86 + 92 + 123 + 129 + 87 + 129 + 165 + 130 + 136 + 165 + 136 + 166 + 172 + 171 + 172 + 136 + 165 + 136 + 172 + 166 + 136 + 165 + 136 + 171 + 172 + 172 + 172 + 171 + 130 + 172 + 171 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 130 + 171 + 130 + 129 + 129 + 129 + 136 + 122 + 123 + 135 + 123 + 92 + 129 + 123 + 93 + 122 + 93 + 122 + 93 + 122 + 93 + 86 + 86 + 86 + 86 + 122 + 93 + 128 + 87 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 86 + 85 + 80 + 50 + 86 + 86 + 44 + 79 + 43 + 43 + 7 + 43 + 0 + 50 + 86 + 86 + 129 + 130 + 135 + 172 + 172 + 173 + 172 + 214 + 215 + 173 + 214 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 178 + 209 + 214 + 209 + 215 + 208 + 179 + 208 + 215 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 79 + 43 + 43 + 44 + 79 + 50 + 43 + 36 + 43 + 43 + 43 + 44 + 85 + 44 + 85 + 80 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 86 + 122 + 122 + 93 + 122 + 86 + 122 + 86 + 44 + 86 + 87 + 122 + 93 + 129 + 129 + 130 + 171 + 130 + 166 + 171 + 136 + 166 + 135 + 166 + 129 + 136 + 165 + 172 + 136 + 172 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 172 + 178 + 173 + 208 + 172 + 178 + 166 + 136 + 172 + 172 + 165 + 172 + 136 + 165 + 135 + 130 + 129 + 129 + 129 + 130 + 128 + 92 + 123 + 92 + 129 + 128 + 87 + 93 + 85 + 129 + 86 + 123 + 92 + 123 + 86 + 86 + 86 + 86 + 93 + 86 + 86 + 128 + 87 + 86 + 129 + 122 + 86 + 87 + 128 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 1 + 43 + 7 + 43 + 86 + 86 + 129 + 135 + 172 + 130 + 178 + 172 + 172 + 215 + 208 + 179 + 215 + 209 + 214 + 215 + 209 + 215 + 215 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 178 + 209 + 214 + 209 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 214 + 214 + 209 + 86 + 79 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 43 + 43 + 79 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 86 + 129 + 129 + 122 + 129 + 86 + 80 + 85 + 86 + 86 + 87 + 123 + 129 + 129 + 136 + 165 + 130 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 172 + 129 + 172 + 172 + 171 + 130 + 165 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 178 + 172 + 172 + 172 + 172 + 172 + 171 + 130 + 172 + 172 + 129 + 136 + 129 + 129 + 129 + 129 + 130 + 92 + 87 + 129 + 92 + 123 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 93 + 86 + 86 + 50 + 86 + 86 + 86 + 86 + 50 + 87 + 86 + 87 + 128 + 86 + 87 + 122 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 129 + 136 + 165 + 172 + 172 + 172 + 178 + 209 + 215 + 172 + 215 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 179 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 123 + 92 + 86 + 80 + 50 + 79 + 43 + 43 + 43 + 43 + 44 + 49 + 80 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 128 + 87 + 122 + 86 + 86 + 80 + 122 + 86 + 86 + 122 + 129 + 86 + 86 + 86 + 80 + 86 + 43 + 129 + 86 + 130 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 136 + 129 + 165 + 129 + 136 + 166 + 135 + 172 + 172 + 166 + 135 + 130 + 165 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 171 + 172 + 173 + 172 + 171 + 136 + 166 + 172 + 129 + 136 + 123 + 93 + 129 + 86 + 94 + 122 + 93 + 87 + 92 + 123 + 50 + 86 + 86 + 44 + 50 + 86 + 86 + 50 + 86 + 80 + 50 + 87 + 86 + 86 + 50 + 86 + 86 + 50 + 86 + 87 + 128 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 85 + 50 + 80 + 50 + 43 + 79 + 44 + 43 + 43 + 44 + 43 + 43 + 43 + 86 + 128 + 129 + 130 + 172 + 171 + 173 + 172 + 172 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 208 + 214 + 123 + 128 + 86 + 86 + 50 + 80 + 43 + 43 + 43 + 43 + 85 + 44 + 86 + 43 + 122 + 86 + 86 + 129 + 86 + 123 + 128 + 86 + 123 + 86 + 122 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 123 + 85 + 44 + 86 + 86 + 87 + 128 + 129 + 124 + 135 + 166 + 130 + 171 + 130 + 171 + 129 + 172 + 129 + 130 + 171 + 172 + 136 + 165 + 136 + 165 + 172 + 136 + 129 + 166 + 171 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 172 + 172 + 172 + 129 + 135 + 130 + 165 + 129 + 129 + 93 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 87 + 43 + 86 + 44 + 43 + 50 + 43 + 44 + 86 + 43 + 86 + 44 + 49 + 86 + 44 + 50 + 86 + 43 + 87 + 86 + 50 + 86 + 122 + 87 + 86 + 86 + 86 + 122 + 86 + 50 + 86 + 43 + 79 + 86 + 44 + 85 + 80 + 50 + 44 + 79 + 43 + 43 + 44 + 43 + 43 + 86 + 93 + 165 + 129 + 136 + 165 + 172 + 179 + 208 + 172 + 214 + 209 + 173 + 214 + 209 + 214 + 173 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 214 + 214 + 208 + 208 + 214 + 87 + 129 + 79 + 86 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 44 + 86 + 85 + 86 + 87 + 122 + 129 + 122 + 93 + 122 + 129 + 86 + 122 + 87 + 122 + 85 + 86 + 123 + 86 + 122 + 87 + 128 + 86 + 44 + 86 + 86 + 128 + 123 + 93 + 130 + 165 + 136 + 165 + 130 + 135 + 129 + 165 + 130 + 172 + 135 + 166 + 172 + 172 + 171 + 130 + 172 + 171 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 172 + 166 + 136 + 165 + 172 + 135 + 166 + 129 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 51 + 86 + 86 + 86 + 44 + 50 + 79 + 43 + 44 + 43 + 7 + 43 + 44 + 49 + 44 + 43 + 43 + 50 + 43 + 44 + 43 + 49 + 44 + 43 + 86 + 50 + 80 + 86 + 92 + 86 + 87 + 128 + 86 + 86 + 50 + 80 + 86 + 44 + 85 + 80 + 50 + 86 + 80 + 49 + 44 + 79 + 44 + 43 + 43 + 43 + 86 + 92 + 166 + 129 + 129 + 136 + 171 + 173 + 214 + 173 + 208 + 214 + 173 + 208 + 214 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 208 + 214 + 208 + 87 + 85 + 80 + 49 + 44 + 79 + 50 + 43 + 79 + 44 + 49 + 80 + 50 + 85 + 116 + 87 + 128 + 87 + 128 + 123 + 128 + 87 + 122 + 92 + 122 + 87 + 86 + 122 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 80 + 93 + 87 + 129 + 130 + 165 + 130 + 171 + 129 + 130 + 129 + 129 + 172 + 129 + 172 + 172 + 172 + 172 + 172 + 136 + 166 + 171 + 172 + 172 + 172 + 136 + 172 + 165 + 172 + 172 + 171 + 136 + 172 + 129 + 129 + 130 + 128 + 123 + 86 + 93 + 86 + 86 + 86 + 44 + 51 + 85 + 44 + 86 + 43 + 50 + 44 + 44 + 43 + 43 + 7 + 7 + 37 + 7 + 43 + 43 + 7 + 36 + 8 + 42 + 2 + 42 + 7 + 43 + 8 + 43 + 80 + 49 + 86 + 86 + 87 + 85 + 129 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 85 + 80 + 50 + 86 + 79 + 44 + 50 + 43 + 79 + 43 + 86 + 86 + 87 + 128 + 130 + 129 + 171 + 130 + 214 + 172 + 209 + 178 + 208 + 173 + 214 + 208 + 179 + 209 + 208 + 214 + 209 + 214 + 209 + 214 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 209 + 208 + 215 + 172 + 215 + 208 + 214 + 209 + 214 + 208 + 208 + 173 + 85 + 44 + 43 + 43 + 43 + 43 + 85 + 44 + 43 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 128 + 123 + 129 + 86 + 86 + 86 + 79 + 50 + 86 + 123 + 129 + 129 + 136 + 165 + 129 + 130 + 129 + 129 + 129 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 178 + 166 + 172 + 171 + 172 + 172 + 129 + 172 + 172 + 129 + 165 + 93 + 123 + 92 + 86 + 80 + 50 + 86 + 86 + 44 + 50 + 80 + 49 + 50 + 44 + 43 + 44 + 49 + 80 + 43 + 8 + 42 + 43 + 7 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 43 + 44 + 85 + 44 + 122 + 86 + 93 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 86 + 50 + 44 + 80 + 85 + 86 + 44 + 79 + 44 + 49 + 80 + 86 + 86 + 129 + 92 + 130 + 129 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 173 + 214 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 215 + 209 + 214 + 173 + 214 + 209 + 215 + 208 + 215 + 172 + 215 + 208 + 179 + 209 + 214 + 208 + 178 + 209 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 85 + 80 + 86 + 122 + 129 + 86 + 86 + 129 + 122 + 129 + 86 + 122 + 86 + 86 + 123 + 86 + 122 + 93 + 129 + 122 + 122 + 86 + 50 + 80 + 86 + 123 + 92 + 130 + 129 + 166 + 129 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 172 + 166 + 135 + 172 + 172 + 165 + 172 + 172 + 173 + 172 + 172 + 172 + 135 + 172 + 130 + 171 + 130 + 129 + 122 + 93 + 86 + 122 + 50 + 80 + 85 + 50 + 80 + 50 + 50 + 79 + 50 + 80 + 49 + 44 + 43 + 50 + 44 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 8 + 43 + 1 + 43 + 7 + 36 + 7 + 1 + 43 + 6 + 38 + 42 + 44 + 43 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 44 + 86 + 43 + 86 + 44 + 86 + 44 + 85 + 44 + 86 + 43 + 86 + 86 + 86 + 86 + 129 + 129 + 136 + 171 + 172 + 209 + 172 + 209 + 178 + 208 + 209 + 214 + 173 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 215 + 173 + 208 + 209 + 179 + 214 + 209 + 215 + 172 + 215 + 172 + 209 + 215 + 172 + 209 + 178 + 209 + 43 + 42 + 37 + 43 + 7 + 37 + 49 + 43 + 43 + 43 + 43 + 79 + 86 + 43 + 86 + 122 + 86 + 123 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 86 + 86 + 86 + 86 + 123 + 128 + 129 + 123 + 128 + 87 + 80 + 49 + 87 + 86 + 122 + 130 + 129 + 129 + 129 + 123 + 129 + 135 + 130 + 129 + 172 + 166 + 135 + 129 + 130 + 165 + 135 + 166 + 172 + 172 + 178 + 166 + 172 + 136 + 171 + 172 + 166 + 129 + 129 + 86 + 93 + 86 + 79 + 87 + 85 + 50 + 80 + 50 + 85 + 45 + 86 + 86 + 50 + 80 + 49 + 44 + 43 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 80 + 7 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 43 + 7 + 7 + 43 + 79 + 43 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 80 + 50 + 80 + 85 + 44 + 50 + 80 + 86 + 86 + 43 + 80 + 49 + 86 + 86 + 86 + 123 + 129 + 136 + 172 + 172 + 208 + 172 + 215 + 208 + 208 + 179 + 209 + 214 + 209 + 214 + 179 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 178 + 215 + 173 + 214 + 215 + 209 + 179 + 208 + 179 + 208 + 179 + 208 + 173 + 215 + 172 + 173 + 42 + 37 + 43 + 43 + 7 + 37 + 49 + 79 + 43 + 43 + 44 + 49 + 80 + 49 + 80 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 123 + 86 + 85 + 86 + 86 + 86 + 116 + 93 + 128 + 129 + 123 + 122 + 86 + 86 + 50 + 80 + 86 + 129 + 130 + 129 + 129 + 129 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 171 + 129 + 130 + 128 + 130 + 171 + 136 + 166 + 178 + 172 + 166 + 136 + 171 + 130 + 129 + 128 + 87 + 86 + 86 + 50 + 80 + 85 + 86 + 86 + 44 + 86 + 86 + 50 + 86 + 86 + 50 + 80 + 50 + 43 + 44 + 50 + 43 + 44 + 50 + 43 + 44 + 43 + 43 + 50 + 37 + 43 + 43 + 43 + 7 + 43 + 1 + 43 + 0 + 7 + 43 + 1 + 42 + 1 + 43 + 43 + 50 + 80 + 49 + 86 + 87 + 86 + 86 + 86 + 49 + 80 + 44 + 86 + 43 + 86 + 80 + 50 + 86 + 43 + 44 + 122 + 91 + 87 + 129 + 129 + 172 + 172 + 208 + 179 + 208 + 215 + 173 + 214 + 209 + 214 + 173 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 208 + 214 + 208 + 215 + 208 + 215 + 215 + 173 + 214 + 215 + 172 + 215 + 179 + 208 + 215 + 173 + 178 + 209 + 173 + 214 + 173 + 209 + 178 + 37 + 7 + 79 + 43 + 43 + 43 + 86 + 43 + 80 + 43 + 49 + 43 + 43 + 86 + 80 + 85 + 86 + 123 + 128 + 86 + 123 + 86 + 86 + 86 + 85 + 80 + 86 + 79 + 86 + 122 + 93 + 123 + 128 + 86 + 86 + 80 + 86 + 86 + 86 + 123 + 130 + 129 + 129 + 130 + 129 + 129 + 129 + 135 + 166 + 135 + 166 + 129 + 129 + 129 + 130 + 135 + 166 + 171 + 172 + 172 + 135 + 166 + 171 + 130 + 122 + 93 + 122 + 87 + 50 + 85 + 80 + 49 + 86 + 123 + 85 + 86 + 50 + 87 + 86 + 86 + 86 + 50 + 86 + 50 + 44 + 43 + 80 + 50 + 43 + 50 + 44 + 43 + 50 + 43 + 43 + 44 + 43 + 43 + 44 + 6 + 38 + 6 + 44 + 6 + 37 + 7 + 1 + 6 + 37 + 43 + 1 + 49 + 43 + 79 + 80 + 50 + 86 + 86 + 86 + 86 + 79 + 50 + 80 + 50 + 79 + 86 + 44 + 86 + 43 + 86 + 86 + 86 + 129 + 129 + 130 + 171 + 215 + 172 + 215 + 173 + 214 + 209 + 214 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 173 + 214 + 215 + 179 + 208 + 215 + 179 + 172 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 214 + 173 + 43 + 43 + 79 + 44 + 85 + 44 + 86 + 85 + 44 + 79 + 43 + 43 + 44 + 85 + 79 + 86 + 86 + 122 + 87 + 86 + 128 + 86 + 122 + 80 + 49 + 80 + 79 + 86 + 86 + 86 + 122 + 129 + 86 + 86 + 80 + 86 + 44 + 86 + 122 + 86 + 93 + 123 + 129 + 129 + 171 + 130 + 129 + 172 + 129 + 172 + 129 + 129 + 130 + 171 + 129 + 172 + 130 + 172 + 171 + 166 + 172 + 136 + 129 + 129 + 86 + 86 + 128 + 86 + 50 + 80 + 49 + 80 + 86 + 93 + 122 + 93 + 86 + 87 + 86 + 86 + 86 + 86 + 51 + 79 + 50 + 44 + 49 + 44 + 79 + 50 + 44 + 50 + 43 + 44 + 43 + 50 + 43 + 44 + 42 + 2 + 43 + 7 + 43 + 1 + 42 + 1 + 6 + 1 + 43 + 0 + 43 + 7 + 37 + 49 + 44 + 86 + 86 + 86 + 50 + 80 + 86 + 44 + 49 + 80 + 87 + 79 + 44 + 85 + 50 + 80 + 86 + 93 + 122 + 129 + 172 + 136 + 208 + 172 + 215 + 208 + 215 + 172 + 215 + 209 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 209 + 214 + 208 + 179 + 215 + 215 + 215 + 214 + 173 + 215 + 172 + 215 + 173 + 214 + 173 + 173 + 215 + 172 + 209 + 178 + 44 + 122 + 128 + 87 + 86 + 122 + 86 + 86 + 43 + 43 + 43 + 37 + 79 + 43 + 49 + 80 + 86 + 85 + 123 + 86 + 122 + 85 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 86 + 123 + 92 + 80 + 86 + 86 + 87 + 86 + 129 + 129 + 87 + 122 + 93 + 122 + 129 + 130 + 135 + 165 + 136 + 165 + 130 + 165 + 136 + 172 + 166 + 172 + 135 + 130 + 165 + 93 + 129 + 128 + 87 + 79 + 50 + 79 + 86 + 50 + 80 + 85 + 50 + 86 + 123 + 86 + 93 + 122 + 86 + 87 + 50 + 86 + 87 + 49 + 44 + 86 + 44 + 85 + 8 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 44 + 42 + 8 + 37 + 43 + 43 + 7 + 7 + 1 + 42 + 1 + 0 + 0 + 43 + 0 + 43 + 43 + 43 + 44 + 50 + 79 + 86 + 86 + 44 + 79 + 49 + 44 + 80 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 172 + 178 + 209 + 214 + 209 + 214 + 209 + 215 + 215 + 208 + 214 + 209 + 178 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 215 + 209 + 215 + 215 + 209 + 214 + 179 + 209 + 214 + 172 + 179 + 209 + 172 + 178 + 172 + 172 + 173 + 128 + 86 + 123 + 129 + 128 + 87 + 86 + 85 + 80 + 43 + 79 + 7 + 79 + 43 + 80 + 85 + 86 + 80 + 86 + 86 + 86 + 85 + 80 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 122 + 87 + 86 + 122 + 86 + 50 + 80 + 86 + 129 + 123 + 93 + 128 + 124 + 129 + 129 + 129 + 129 + 172 + 129 + 130 + 171 + 129 + 130 + 172 + 172 + 171 + 172 + 166 + 135 + 165 + 87 + 92 + 86 + 87 + 86 + 79 + 43 + 50 + 80 + 86 + 86 + 86 + 86 + 92 + 87 + 128 + 87 + 86 + 86 + 87 + 50 + 86 + 44 + 86 + 49 + 44 + 44 + 85 + 44 + 43 + 50 + 44 + 43 + 50 + 43 + 37 + 49 + 44 + 1 + 43 + 43 + 44 + 7 + 43 + 8 + 42 + 7 + 37 + 1 + 6 + 1 + 43 + 0 + 7 + 37 + 7 + 43 + 49 + 80 + 50 + 80 + 86 + 44 + 43 + 86 + 44 + 79 + 50 + 43 + 86 + 86 + 129 + 128 + 130 + 207 + 173 + 214 + 209 + 214 + 215 + 209 + 214 + 209 + 214 + 209 + 179 + 208 + 173 + 214 + 209 + 214 + 209 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 215 + 173 + 215 + 215 + 208 + 215 + 209 + 178 + 173 + 214 + 172 + 173 + 172 + 214 + 172 + 173 + 92 + 165 + 123 + 129 + 129 + 86 + 86 + 86 + 79 + 79 + 43 + 43 + 37 + 43 + 49 + 86 + 80 + 86 + 122 + 85 + 86 + 80 + 86 + 122 + 86 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 128 + 86 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 135 + 166 + 129 + 172 + 130 + 171 + 166 + 178 + 166 + 172 + 129 + 136 + 86 + 79 + 50 + 80 + 86 + 50 + 86 + 86 + 86 + 86 + 86 + 92 + 86 + 122 + 93 + 122 + 86 + 50 + 93 + 86 + 86 + 86 + 45 + 86 + 50 + 79 + 50 + 80 + 14 + 79 + 50 + 43 + 44 + 49 + 43 + 44 + 43 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 43 + 43 + 1 + 0 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 42 + 2 + 43 + 85 + 44 + 50 + 80 + 79 + 50 + 80 + 49 + 80 + 44 + 43 + 86 + 86 + 123 + 129 + 172 + 172 + 208 + 172 + 215 + 208 + 215 + 215 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 215 + 209 + 215 + 208 + 214 + 173 + 214 + 179 + 172 + 208 + 173 + 172 + 178 + 159 + 129 + 129 + 122 + 93 + 122 + 80 + 49 + 79 + 43 + 43 + 37 + 43 + 43 + 85 + 80 + 85 + 80 + 86 + 86 + 86 + 86 + 122 + 86 + 86 + 116 + 85 + 86 + 80 + 49 + 86 + 80 + 122 + 86 + 86 + 86 + 87 + 86 + 86 + 129 + 130 + 129 + 129 + 124 + 129 + 129 + 172 + 129 + 130 + 166 + 171 + 137 + 166 + 172 + 172 + 173 + 171 + 130 + 129 + 129 + 86 + 43 + 79 + 50 + 86 + 86 + 122 + 93 + 122 + 87 + 128 + 87 + 86 + 129 + 86 + 85 + 87 + 86 + 86 + 87 + 92 + 50 + 86 + 44 + 86 + 50 + 80 + 50 + 79 + 50 + 43 + 86 + 44 + 43 + 44 + 43 + 49 + 8 + 43 + 43 + 43 + 44 + 7 + 43 + 44 + 1 + 6 + 43 + 1 + 7 + 0 + 43 + 1 + 7 + 36 + 7 + 1 + 43 + 43 + 43 + 86 + 44 + 86 + 43 + 80 + 50 + 43 + 43 + 43 + 87 + 85 + 129 + 129 + 172 + 172 + 172 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 215 + 208 + 173 + 214 + 173 + 215 + 208 + 209 + 214 + 209 + 214 + 208 + 173 + 214 + 209 + 214 + 209 + 214 + 208 + 209 + 179 + 214 + 209 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 178 + 208 + 123 + 128 + 123 + 92 + 86 + 80 + 79 + 6 + 37 + 43 + 43 + 36 + 43 + 43 + 80 + 85 + 86 + 80 + 86 + 85 + 86 + 86 + 122 + 87 + 122 + 86 + 79 + 86 + 80 + 85 + 44 + 85 + 80 + 86 + 128 + 44 + 87 + 86 + 86 + 123 + 128 + 130 + 129 + 129 + 93 + 165 + 130 + 129 + 172 + 129 + 166 + 172 + 136 + 172 + 165 + 172 + 172 + 129 + 129 + 86 + 86 + 50 + 85 + 44 + 86 + 86 + 129 + 92 + 123 + 129 + 129 + 129 + 92 + 123 + 86 + 87 + 86 + 50 + 87 + 92 + 86 + 87 + 86 + 50 + 86 + 44 + 85 + 44 + 86 + 50 + 44 + 85 + 44 + 50 + 43 + 43 + 43 + 44 + 49 + 43 + 44 + 43 + 7 + 43 + 43 + 43 + 1 + 7 + 1 + 42 + 1 + 7 + 43 + 1 + 6 + 1 + 37 + 7 + 43 + 44 + 79 + 50 + 43 + 86 + 43 + 44 + 43 + 79 + 44 + 86 + 92 + 123 + 129 + 172 + 172 + 208 + 215 + 208 + 209 + 214 + 215 + 209 + 214 + 209 + 178 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 209 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 215 + 214 + 209 + 214 + 209 + 178 + 208 + 173 + 214 + 172 + 173 + 208 + 86 + 122 + 86 + 85 + 44 + 79 + 43 + 43 + 0 + 43 + 37 + 42 + 43 + 79 + 44 + 85 + 80 + 86 + 86 + 79 + 87 + 86 + 122 + 92 + 122 + 86 + 80 + 86 + 85 + 80 + 49 + 80 + 86 + 86 + 86 + 86 + 86 + 86 + 122 + 87 + 87 + 129 + 165 + 130 + 129 + 129 + 129 + 136 + 166 + 129 + 172 + 172 + 172 + 166 + 136 + 166 + 171 + 93 + 123 + 50 + 122 + 43 + 86 + 86 + 50 + 86 + 123 + 129 + 135 + 166 + 135 + 129 + 123 + 93 + 85 + 123 + 50 + 122 + 92 + 87 + 86 + 87 + 50 + 86 + 86 + 86 + 50 + 80 + 50 + 50 + 80 + 50 + 43 + 50 + 44 + 43 + 44 + 43 + 49 + 44 + 43 + 43 + 44 + 43 + 43 + 7 + 43 + 1 + 7 + 42 + 1 + 43 + 1 + 7 + 36 + 7 + 1 + 6 + 37 + 43 + 44 + 43 + 86 + 43 + 44 + 43 + 79 + 43 + 50 + 86 + 123 + 128 + 130 + 135 + 202 + 178 + 209 + 214 + 208 + 215 + 209 + 214 + 173 + 214 + 209 + 214 + 209 + 173 + 214 + 208 + 215 + 208 + 214 + 209 + 208 + 215 + 208 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 179 + 208 + 173 + 208 + 172 + 214 + 44 + 86 + 79 + 43 + 43 + 79 + 36 + 43 + 1 + 42 + 43 + 79 + 43 + 80 + 43 + 85 + 80 + 86 + 43 + 86 + 86 + 122 + 80 + 128 + 86 + 123 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 86 + 80 + 86 + 86 + 86 + 122 + 87 + 129 + 129 + 130 + 129 + 93 + 165 + 130 + 129 + 129 + 130 + 165 + 136 + 173 + 165 + 172 + 136 + 129 + 123 + 86 + 85 + 44 + 49 + 80 + 86 + 86 + 122 + 93 + 165 + 136 + 166 + 135 + 129 + 129 + 87 + 128 + 87 + 86 + 93 + 86 + 86 + 87 + 92 + 81 + 86 + 50 + 86 + 86 + 50 + 87 + 43 + 86 + 44 + 50 + 86 + 43 + 44 + 49 + 80 + 50 + 43 + 44 + 43 + 43 + 49 + 8 + 37 + 43 + 6 + 43 + 43 + 1 + 7 + 43 + 0 + 43 + 1 + 7 + 36 + 1 + 43 + 7 + 79 + 44 + 86 + 43 + 44 + 44 + 79 + 50 + 86 + 86 + 129 + 129 + 165 + 136 + 202 + 172 + 214 + 209 + 214 + 209 + 208 + 215 + 208 + 215 + 173 + 214 + 208 + 179 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 208 + 209 + 178 + 209 + 214 + 209 + 214 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 172 + 208 + 208 + 215 + 172 + 79 + 50 + 43 + 79 + 43 + 43 + 79 + 43 + 43 + 80 + 43 + 85 + 80 + 49 + 79 + 44 + 85 + 80 + 86 + 79 + 86 + 123 + 86 + 128 + 86 + 86 + 122 + 86 + 123 + 86 + 86 + 79 + 86 + 43 + 87 + 86 + 86 + 80 + 92 + 123 + 129 + 130 + 171 + 130 + 129 + 129 + 129 + 166 + 130 + 171 + 130 + 172 + 129 + 172 + 129 + 130 + 165 + 92 + 86 + 80 + 50 + 80 + 86 + 85 + 87 + 92 + 123 + 129 + 135 + 130 + 165 + 93 + 122 + 129 + 87 + 128 + 86 + 93 + 87 + 86 + 93 + 86 + 86 + 86 + 86 + 44 + 92 + 44 + 87 + 85 + 50 + 44 + 86 + 44 + 85 + 44 + 86 + 44 + 49 + 44 + 43 + 8 + 43 + 42 + 8 + 43 + 37 + 43 + 7 + 43 + 7 + 37 + 7 + 6 + 1 + 43 + 1 + 43 + 0 + 43 + 7 + 43 + 79 + 44 + 43 + 43 + 43 + 80 + 50 + 86 + 86 + 86 + 86 + 172 + 165 + 172 + 173 + 214 + 209 + 214 + 209 + 208 + 179 + 208 + 209 + 214 + 209 + 179 + 208 + 214 + 209 + 208 + 215 + 172 + 215 + 209 + 208 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 173 + 214 + 208 + 86 + 86 + 80 + 43 + 85 + 80 + 85 + 80 + 86 + 43 + 86 + 86 + 79 + 86 + 43 + 79 + 44 + 85 + 86 + 86 + 122 + 86 + 87 + 122 + 86 + 86 + 122 + 86 + 129 + 86 + 86 + 80 + 85 + 44 + 85 + 87 + 80 + 86 + 86 + 129 + 130 + 129 + 171 + 130 + 165 + 130 + 130 + 171 + 136 + 166 + 135 + 167 + 172 + 136 + 165 + 129 + 129 + 85 + 87 + 49 + 122 + 86 + 86 + 86 + 87 + 85 + 87 + 128 + 130 + 135 + 129 + 123 + 129 + 92 + 123 + 86 + 129 + 87 + 86 + 93 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 50 + 86 + 87 + 50 + 86 + 87 + 86 + 43 + 50 + 44 + 86 + 43 + 44 + 43 + 7 + 43 + 8 + 42 + 38 + 13 + 43 + 38 + 7 + 43 + 6 + 37 + 7 + 37 + 6 + 7 + 37 + 7 + 36 + 43 + 1 + 43 + 80 + 49 + 38 + 49 + 43 + 44 + 86 + 86 + 86 + 129 + 165 + 172 + 209 + 178 + 208 + 215 + 208 + 215 + 209 + 214 + 172 + 209 + 215 + 172 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 214 + 209 + 172 + 208 + 129 + 122 + 86 + 123 + 92 + 86 + 122 + 80 + 86 + 85 + 80 + 49 + 80 + 79 + 43 + 85 + 44 + 79 + 86 + 86 + 122 + 86 + 123 + 92 + 122 + 86 + 87 + 122 + 86 + 122 + 86 + 43 + 86 + 79 + 86 + 80 + 50 + 80 + 92 + 124 + 135 + 130 + 165 + 130 + 172 + 129 + 166 + 136 + 166 + 172 + 172 + 165 + 172 + 137 + 165 + 129 + 87 + 86 + 50 + 86 + 85 + 123 + 92 + 92 + 123 + 122 + 93 + 86 + 129 + 123 + 135 + 86 + 129 + 86 + 129 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 86 + 129 + 87 + 86 + 93 + 87 + 128 + 87 + 92 + 87 + 86 + 86 + 51 + 79 + 50 + 80 + 49 + 43 + 8 + 43 + 37 + 7 + 43 + 7 + 43 + 43 + 43 + 37 + 7 + 43 + 1 + 43 + 7 + 43 + 1 + 42 + 1 + 7 + 36 + 43 + 37 + 8 + 79 + 43 + 43 + 43 + 44 + 87 + 91 + 129 + 129 + 166 + 214 + 208 + 173 + 214 + 208 + 209 + 214 + 209 + 209 + 178 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 173 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 209 + 208 + 215 + 208 + 209 + 214 + 208 + 208 + 209 + 172 + 208 + 129 + 129 + 128 + 123 + 123 + 92 + 122 + 86 + 86 + 79 + 80 + 49 + 79 + 44 + 43 + 79 + 43 + 86 + 86 + 122 + 86 + 86 + 123 + 128 + 86 + 86 + 122 + 86 + 87 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 44 + 85 + 87 + 129 + 129 + 130 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 130 + 172 + 172 + 166 + 135 + 130 + 122 + 86 + 86 + 50 + 86 + 122 + 93 + 123 + 128 + 130 + 129 + 128 + 86 + 93 + 122 + 87 + 128 + 87 + 129 + 86 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 87 + 129 + 129 + 86 + 94 + 129 + 129 + 93 + 123 + 93 + 122 + 93 + 80 + 50 + 50 + 80 + 43 + 44 + 7 + 43 + 7 + 43 + 43 + 7 + 37 + 44 + 7 + 43 + 7 + 36 + 8 + 42 + 1 + 43 + 43 + 7 + 1 + 37 + 6 + 37 + 7 + 43 + 43 + 37 + 43 + 43 + 44 + 86 + 92 + 123 + 171 + 136 + 208 + 173 + 214 + 209 + 209 + 214 + 208 + 215 + 208 + 215 + 172 + 215 + 208 + 215 + 172 + 214 + 209 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 215 + 208 + 209 + 214 + 209 + 208 + 209 + 214 + 208 + 209 + 208 + 208 + 214 + 123 + 129 + 129 + 86 + 122 + 86 + 80 + 49 + 43 + 80 + 49 + 79 + 80 + 43 + 43 + 43 + 79 + 43 + 86 + 122 + 86 + 123 + 92 + 123 + 128 + 86 + 123 + 86 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 86 + 86 + 50 + 86 + 123 + 129 + 129 + 129 + 130 + 172 + 166 + 136 + 172 + 166 + 172 + 171 + 167 + 136 + 165 + 136 + 122 + 86 + 44 + 86 + 86 + 86 + 93 + 122 + 130 + 135 + 129 + 123 + 93 + 86 + 87 + 86 + 86 + 92 + 87 + 93 + 122 + 93 + 122 + 130 + 129 + 136 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 129 + 130 + 122 + 93 + 86 + 129 + 86 + 87 + 86 + 44 + 49 + 80 + 43 + 44 + 7 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 7 + 37 + 7 + 42 + 1 + 44 + 43 + 0 + 0 + 7 + 36 + 1 + 43 + 43 + 7 + 37 + 43 + 87 + 86 + 86 + 93 + 129 + 172 + 208 + 172 + 215 + 215 + 208 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 215 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 215 + 208 + 209 + 214 + 208 + 209 + 208 + 215 + 208 + 208 + 209 + 208 + 172 + 208 + 178 + 208 + 166 + 208 + 93 + 122 + 129 + 86 + 80 + 79 + 43 + 79 + 43 + 79 + 49 + 44 + 79 + 43 + 43 + 43 + 79 + 44 + 85 + 122 + 86 + 123 + 86 + 129 + 122 + 92 + 122 + 80 + 86 + 86 + 79 + 50 + 79 + 86 + 80 + 50 + 80 + 86 + 86 + 128 + 130 + 129 + 130 + 123 + 135 + 166 + 129 + 172 + 131 + 172 + 172 + 172 + 172 + 130 + 123 + 92 + 86 + 86 + 80 + 86 + 92 + 123 + 86 + 129 + 129 + 93 + 123 + 93 + 86 + 86 + 86 + 86 + 51 + 86 + 129 + 86 + 129 + 129 + 130 + 129 + 172 + 130 + 165 + 129 + 129 + 130 + 92 + 123 + 93 + 122 + 92 + 124 + 93 + 87 + 129 + 122 + 87 + 50 + 85 + 44 + 43 + 44 + 43 + 7 + 44 + 7 + 37 + 42 + 8 + 42 + 1 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 0 + 1 + 42 + 1 + 37 + 43 + 7 + 43 + 43 + 80 + 50 + 86 + 128 + 130 + 171 + 172 + 173 + 214 + 209 + 215 + 208 + 214 + 209 + 214 + 215 + 208 + 215 + 208 + 215 + 214 + 209 + 214 + 208 + 215 + 208 + 214 + 209 + 214 + 214 + 208 + 214 + 209 + 214 + 209 + 214 + 209 + 208 + 208 + 215 + 208 + 208 + 209 + 172 + 178 + 208 + 172 + 172 + 207 + 166 + 172 + 129 + 129 + 123 + 86 + 49 + 79 + 43 + 43 + 79 + 43 + 44 + 79 + 43 + 79 + 43 + 43 + 86 + 43 + 86 + 122 + 86 + 86 + 123 + 122 + 86 + 86 + 122 + 86 + 86 + 79 + 50 + 79 + 86 + 79 + 50 + 86 + 80 + 86 + 86 + 87 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 166 + 136 + 165 + 172 + 172 + 136 + 123 + 128 + 87 + 86 + 86 + 80 + 86 + 87 + 122 + 93 + 123 + 129 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 86 + 86 + 87 + 92 + 130 + 129 + 166 + 172 + 136 + 166 + 172 + 123 + 92 + 123 + 86 + 44 + 86 + 44 + 85 + 86 + 86 + 123 + 86 + 87 + 128 + 87 + 86 + 44 + 43 + 49 + 44 + 43 + 7 + 43 + 38 + 7 + 42 + 7 + 37 + 7 + 43 + 7 + 37 + 7 + 43 + 43 + 1 + 36 + 6 + 1 + 37 + 7 + 36 + 43 + 37 + 49 + 80 + 50 + 86 + 92 + 130 + 135 + 209 + 172 + 214 + 209 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 214 + 209 + 214 + 208 + 215 + 208 + 215 + 208 + 215 + 214 + 208 + 214 + 208 + 215 + 214 + 208 + 215 + 208 + 208 + 208 + 173 + 178 + 208 + 208 + 172 + 208 + 171 + 172 + 165 + 172 + 171 + 172 + 171 + 165 + 172 + 129 + 122 + 86 + 86 + 80 + 85 + 44 + 79 + 49 + 79 + 44 + 79 + 43 + 79 + 44 + 85 + 86 + 86 + 86 + 122 + 86 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 79 + 86 + 86 + 79 + 44 + 86 + 86 + 80 + 49 + 123 + 93 + 165 + 93 + 129 + 123 + 129 + 129 + 130 + 171 + 130 + 172 + 166 + 136 + 87 + 86 + 86 + 86 + 86 + 87 + 86 + 86 + 122 + 87 + 86 + 129 + 87 + 92 + 86 + 86 + 44 + 86 + 86 + 87 + 50 + 86 + 129 + 130 + 171 + 172 + 173 + 172 + 129 + 129 + 80 + 49 + 37 + 7 + 37 + 0 + 43 + 1 + 43 + 37 + 7 + 79 + 50 + 123 + 92 + 87 + 43 + 86 + 43 + 8 + 43 + 43 + 43 + 44 + 44 + 6 + 43 + 43 + 1 + 43 + 7 + 43 + 1 + 43 + 43 + 1 + 7 + 36 + 7 + 0 + 37 + 0 + 7 + 43 + 43 + 80 + 50 + 86 + 93 + 129 + 166 + 171 + 173 + 214 + 209 + 172 + 214 + 208 + 215 + 208 + 208 + 178 + 208 + 214 + 208 + 208 + 215 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 214 + 208 + 214 + 172 + 214 + 209 + 207 + 172 + 172 + 207 + 166 + 171 + 208 + 172 + 171 + 129 + 171 + 171 + 165 + 171 + 171 + 171 + 165 + 172 + 129 + 128 + 123 + 129 + 86 + 122 + 86 + 80 + 85 + 79 + 44 + 79 + 49 + 44 + 79 + 86 + 79 + 86 + 86 + 122 + 86 + 86 + 80 + 86 + 85 + 86 + 86 + 123 + 86 + 85 + 80 + 86 + 43 + 86 + 80 + 50 + 86 + 80 + 129 + 129 + 87 + 129 + 165 + 129 + 130 + 129 + 136 + 166 + 135 + 166 + 129 + 86 + 87 + 86 + 86 + 80 + 86 + 92 + 80 + 86 + 87 + 92 + 123 + 86 + 86 + 51 + 86 + 86 + 86 + 87 + 50 + 86 + 86 + 129 + 172 + 166 + 173 + 135 + 129 + 86 + 44 + 43 + 38 + 6 + 37 + 0 + 0 + 1 + 42 + 1 + 0 + 0 + 37 + 7 + 85 + 45 + 86 + 86 + 86 + 50 + 43 + 43 + 44 + 50 + 43 + 44 + 42 + 7 + 44 + 37 + 7 + 43 + 7 + 37 + 43 + 7 + 7 + 37 + 0 + 37 + 6 + 0 + 1 + 37 + 43 + 50 + 43 + 44 + 86 + 92 + 129 + 165 + 136 + 172 + 214 + 173 + 208 + 214 + 208 + 173 + 214 + 208 + 214 + 208 + 208 + 178 + 209 + 214 + 208 + 208 + 208 + 172 + 208 + 172 + 208 + 171 + 171 + 208 + 171 + 172 + 171 + 207 + 135 + 165 + 171 + 171 + 171 + 165 + 171 + 171 + 165 + 134 + 172 + 128 + 172 + 134 + 166 + 171 + 166 + 135 + 165 + 130 + 128 + 123 + 93 + 122 + 86 + 79 + 44 + 79 + 49 + 43 + 79 + 44 + 85 + 80 + 86 + 122 + 86 + 86 + 129 + 86 + 122 + 86 + 122 + 93 + 123 + 128 + 86 + 80 + 86 + 43 + 50 + 80 + 86 + 80 + 50 + 122 + 129 + 130 + 129 + 130 + 129 + 135 + 130 + 165 + 130 + 165 + 129 + 93 + 123 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 123 + 92 + 86 + 86 + 81 + 86 + 50 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 136 + 165 + 173 + 172 + 93 + 80 + 0 + 43 + 0 + 1 + 43 + 37 + 7 + 36 + 7 + 36 + 1 + 0 + 1 + 36 + 6 + 1 + 43 + 44 + 86 + 86 + 87 + 49 + 44 + 44 + 49 + 44 + 43 + 43 + 44 + 43 + 7 + 43 + 1 + 43 + 7 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 42 + 1 + 0 + 44 + 43 + 43 + 49 + 86 + 129 + 129 + 130 + 171 + 173 + 172 + 208 + 172 + 214 + 173 + 208 + 178 + 209 + 172 + 208 + 178 + 209 + 172 + 214 + 172 + 202 + 171 + 172 + 207 + 172 + 171 + 171 + 171 + 171 + 172 + 164 + 171 + 165 + 165 + 134 + 171 + 165 + 171 + 165 + 171 + 128 + 171 + 128 + 171 + 170 + 129 + 171 + 135 + 165 + 129 + 166 + 135 + 159 + 129 + 129 + 129 + 122 + 86 + 86 + 43 + 79 + 43 + 86 + 43 + 80 + 85 + 86 + 86 + 123 + 86 + 122 + 92 + 122 + 87 + 122 + 129 + 86 + 129 + 122 + 86 + 86 + 79 + 44 + 43 + 86 + 44 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 87 + 86 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 87 + 123 + 86 + 86 + 50 + 80 + 50 + 43 + 87 + 86 + 93 + 87 + 128 + 93 + 166 + 172 + 172 + 130 + 43 + 1 + 42 + 1 + 6 + 37 + 80 + 7 + 43 + 37 + 7 + 37 + 43 + 43 + 0 + 1 + 42 + 1 + 0 + 43 + 43 + 44 + 86 + 87 + 50 + 49 + 80 + 44 + 49 + 44 + 43 + 43 + 7 + 43 + 37 + 44 + 7 + 43 + 50 + 37 + 43 + 7 + 37 + 43 + 7 + 37 + 43 + 44 + 43 + 44 + 85 + 87 + 129 + 93 + 172 + 130 + 171 + 172 + 208 + 172 + 172 + 171 + 171 + 172 + 201 + 172 + 171 + 171 + 171 + 166 + 135 + 208 + 172 + 165 + 166 + 170 + 129 + 170 + 165 + 129 + 170 + 165 + 128 + 171 + 129 + 164 + 165 + 134 + 165 + 128 + 165 + 134 + 165 + 134 + 165 + 129 + 134 + 165 + 134 + 171 + 122 + 129 + 129 + 129 + 123 + 129 + 165 + 86 + 122 + 86 + 50 + 43 + 79 + 80 + 85 + 43 + 80 + 86 + 86 + 122 + 86 + 129 + 86 + 122 + 86 + 129 + 86 + 122 + 123 + 128 + 86 + 86 + 86 + 80 + 43 + 86 + 44 + 86 + 86 + 129 + 122 + 93 + 166 + 93 + 129 + 123 + 129 + 129 + 129 + 130 + 129 + 129 + 86 + 87 + 80 + 86 + 92 + 87 + 122 + 129 + 87 + 129 + 86 + 87 + 122 + 50 + 86 + 44 + 86 + 50 + 86 + 129 + 87 + 129 + 136 + 129 + 166 + 129 + 43 + 0 + 1 + 43 + 37 + 43 + 50 + 86 + 80 + 85 + 44 + 87 + 122 + 92 + 81 + 49 + 38 + 43 + 0 + 0 + 1 + 42 + 44 + 43 + 87 + 85 + 51 + 80 + 50 + 79 + 50 + 43 + 44 + 7 + 44 + 7 + 43 + 43 + 50 + 80 + 7 + 37 + 7 + 36 + 43 + 1 + 42 + 44 + 43 + 37 + 7 + 85 + 86 + 93 + 129 + 129 + 130 + 171 + 166 + 172 + 171 + 166 + 136 + 172 + 165 + 136 + 172 + 172 + 171 + 165 + 136 + 165 + 171 + 165 + 171 + 165 + 166 + 134 + 165 + 128 + 165 + 170 + 129 + 164 + 135 + 171 + 128 + 171 + 164 + 129 + 170 + 135 + 164 + 135 + 165 + 134 + 165 + 134 + 165 + 134 + 171 + 80 + 86 + 128 + 123 + 128 + 87 + 122 + 86 + 86 + 43 + 79 + 44 + 85 + 80 + 49 + 79 + 44 + 122 + 86 + 122 + 93 + 122 + 122 + 93 + 122 + 87 + 128 + 123 + 86 + 128 + 86 + 123 + 79 + 50 + 44 + 79 + 86 + 86 + 86 + 81 + 92 + 86 + 129 + 88 + 128 + 123 + 129 + 93 + 123 + 165 + 129 + 93 + 87 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 128 + 87 + 86 + 86 + 87 + 86 + 80 + 86 + 50 + 87 + 92 + 87 + 165 + 136 + 137 + 165 + 92 + 38 + 6 + 0 + 37 + 43 + 43 + 86 + 87 + 128 + 87 + 129 + 129 + 130 + 123 + 129 + 87 + 128 + 86 + 86 + 1 + 43 + 0 + 0 + 1 + 43 + 50 + 86 + 86 + 50 + 81 + 50 + 86 + 44 + 49 + 43 + 44 + 43 + 43 + 44 + 50 + 79 + 7 + 43 + 43 + 37 + 7 + 43 + 0 + 80 + 7 + 36 + 43 + 50 + 85 + 87 + 92 + 129 + 130 + 129 + 171 + 166 + 165 + 172 + 135 + 166 + 170 + 136 + 166 + 171 + 136 + 171 + 165 + 136 + 171 + 202 + 171 + 172 + 165 + 134 + 166 + 164 + 171 + 171 + 165 + 171 + 165 + 135 + 171 + 171 + 165 + 171 + 171 + 165 + 171 + 171 + 165 + 170 + 135 + 165 + 171 + 171 + 135 + 80 + 86 + 86 + 122 + 87 + 128 + 79 + 50 + 43 + 79 + 43 + 79 + 43 + 80 + 49 + 79 + 44 + 86 + 122 + 86 + 129 + 122 + 87 + 128 + 123 + 86 + 86 + 128 + 123 + 86 + 86 + 86 + 79 + 86 + 79 + 43 + 50 + 80 + 86 + 87 + 128 + 123 + 93 + 129 + 129 + 123 + 129 + 93 + 130 + 165 + 129 + 87 + 86 + 122 + 50 + 86 + 80 + 86 + 86 + 87 + 128 + 87 + 80 + 50 + 79 + 50 + 86 + 87 + 86 + 86 + 93 + 129 + 130 + 172 + 172 + 129 + 44 + 7 + 36 + 7 + 80 + 43 + 129 + 123 + 136 + 129 + 130 + 122 + 129 + 87 + 128 + 87 + 86 + 129 + 129 + 123 + 43 + 7 + 0 + 1 + 36 + 7 + 43 + 86 + 45 + 86 + 86 + 86 + 50 + 86 + 44 + 49 + 80 + 50 + 43 + 8 + 79 + 49 + 44 + 7 + 37 + 43 + 43 + 0 + 43 + 44 + 37 + 7 + 43 + 85 + 51 + 86 + 129 + 129 + 172 + 129 + 165 + 172 + 130 + 172 + 171 + 172 + 172 + 135 + 172 + 171 + 172 + 171 + 166 + 178 + 172 + 207 + 172 + 208 + 172 + 207 + 172 + 208 + 171 + 172 + 207 + 172 + 207 + 172 + 172 + 207 + 172 + 207 + 172 + 171 + 208 + 135 + 165 + 172 + 172 + 171 + 172 + 165 + 171 + 79 + 86 + 86 + 86 + 122 + 86 + 43 + 43 + 37 + 42 + 37 + 43 + 49 + 79 + 43 + 37 + 79 + 86 + 86 + 129 + 122 + 87 + 128 + 87 + 122 + 128 + 86 + 123 + 86 + 86 + 86 + 86 + 79 + 86 + 80 + 50 + 43 + 86 + 86 + 123 + 123 + 93 + 129 + 166 + 129 + 93 + 129 + 129 + 129 + 166 + 93 + 122 + 87 + 86 + 86 + 86 + 87 + 86 + 86 + 86 + 87 + 86 + 80 + 43 + 50 + 79 + 50 + 86 + 87 + 93 + 129 + 166 + 136 + 130 + 136 + 43 + 37 + 1 + 43 + 79 + 92 + 87 + 123 + 129 + 93 + 123 + 86 + 128 + 87 + 86 + 122 + 93 + 86 + 87 + 122 + 51 + 79 + 0 + 7 + 0 + 36 + 1 + 7 + 80 + 49 + 87 + 86 + 50 + 80 + 86 + 50 + 86 + 44 + 43 + 50 + 43 + 80 + 49 + 43 + 44 + 43 + 37 + 7 + 43 + 43 + 44 + 36 + 44 + 43 + 50 + 86 + 93 + 129 + 165 + 136 + 129 + 172 + 207 + 173 + 208 + 172 + 179 + 208 + 179 + 171 + 178 + 172 + 172 + 173 + 178 + 172 + 208 + 209 + 208 + 215 + 208 + 171 + 209 + 207 + 214 + 172 + 171 + 208 + 172 + 207 + 172 + 208 + 171 + 208 + 171 + 172 + 208 + 172 + 171 + 172 + 171 + 172 + 166 + 172 + 85 + 86 + 86 + 122 + 80 + 50 + 79 + 36 + 43 + 7 + 79 + 43 + 80 + 79 + 43 + 43 + 43 + 79 + 86 + 128 + 87 + 122 + 129 + 86 + 122 + 87 + 122 + 92 + 122 + 86 + 87 + 85 + 116 + 86 + 43 + 43 + 86 + 44 + 86 + 123 + 92 + 123 + 129 + 94 + 129 + 129 + 129 + 129 + 129 + 130 + 129 + 87 + 92 + 123 + 86 + 87 + 86 + 93 + 87 + 86 + 86 + 44 + 80 + 50 + 43 + 43 + 87 + 86 + 87 + 92 + 130 + 135 + 130 + 135 + 123 + 7 + 0 + 37 + 43 + 87 + 129 + 123 + 129 + 93 + 123 + 87 + 80 + 50 + 86 + 80 + 43 + 86 + 87 + 80 + 50 + 79 + 44 + 0 + 7 + 36 + 0 + 1 + 6 + 80 + 44 + 86 + 86 + 43 + 87 + 86 + 86 + 50 + 86 + 44 + 80 + 49 + 80 + 50 + 43 + 44 + 79 + 7 + 37 + 43 + 86 + 7 + 37 + 79 + 7 + 50 + 86 + 166 + 99 + 166 + 136 + 172 + 172 + 178 + 208 + 173 + 214 + 208 + 214 + 173 + 214 + 208 + 178 + 173 + 207 + 173 + 208 + 172 + 208 + 214 + 208 + 172 + 208 + 172 + 208 + 171 + 208 + 172 + 178 + 208 + 172 + 171 + 173 + 207 + 171 + 173 + 171 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 165 + 93 + 122 + 86 + 86 + 79 + 50 + 79 + 37 + 42 + 43 + 44 + 79 + 86 + 43 + 43 + 36 + 43 + 79 + 86 + 122 + 93 + 122 + 123 + 92 + 122 + 87 + 122 + 92 + 123 + 86 + 79 + 86 + 86 + 86 + 43 + 80 + 50 + 79 + 86 + 87 + 86 + 86 + 122 + 93 + 123 + 92 + 87 + 129 + 93 + 129 + 130 + 86 + 86 + 86 + 87 + 86 + 87 + 92 + 87 + 86 + 86 + 50 + 80 + 43 + 50 + 44 + 86 + 87 + 128 + 93 + 130 + 165 + 136 + 129 + 50 + 37 + 0 + 7 + 79 + 44 + 130 + 123 + 129 + 86 + 86 + 86 + 44 + 43 + 44 + 79 + 44 + 44 + 43 + 86 + 80 + 44 + 43 + 0 + 1 + 36 + 7 + 0 + 1 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 79 + 50 + 86 + 44 + 86 + 79 + 50 + 80 + 7 + 43 + 80 + 43 + 43 + 43 + 43 + 37 + 87 + 135 + 130 + 135 + 166 + 172 + 136 + 172 + 208 + 179 + 172 + 208 + 214 + 173 + 214 + 208 + 173 + 214 + 172 + 208 + 172 + 209 + 208 + 178 + 172 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 172 + 172 + 136 + 172 + 172 + 135 + 172 + 136 + 172 + 172 + 136 + 171 + 123 + 86 + 86 + 86 + 86 + 43 + 43 + 36 + 43 + 43 + 79 + 80 + 49 + 80 + 42 + 37 + 43 + 43 + 86 + 122 + 93 + 122 + 129 + 122 + 87 + 86 + 128 + 123 + 86 + 86 + 122 + 86 + 79 + 86 + 44 + 43 + 86 + 86 + 86 + 81 + 86 + 86 + 86 + 87 + 92 + 87 + 86 + 86 + 93 + 123 + 86 + 50 + 87 + 49 + 87 + 86 + 87 + 93 + 86 + 86 + 87 + 50 + 86 + 86 + 50 + 87 + 86 + 123 + 93 + 135 + 166 + 136 + 172 + 87 + 43 + 0 + 7 + 0 + 37 + 44 + 122 + 94 + 122 + 88 + 80 + 43 + 43 + 1 + 43 + 1 + 43 + 43 + 43 + 44 + 80 + 7 + 37 + 0 + 43 + 0 + 1 + 0 + 36 + 7 + 37 + 50 + 79 + 87 + 85 + 44 + 86 + 86 + 86 + 86 + 80 + 87 + 86 + 86 + 50 + 80 + 86 + 43 + 44 + 86 + 43 + 43 + 37 + 43 + 43 + 93 + 129 + 130 + 129 + 136 + 166 + 135 + 173 + 172 + 136 + 208 + 215 + 208 + 179 + 208 + 215 + 208 + 178 + 208 + 173 + 208 + 172 + 209 + 178 + 208 + 208 + 173 + 172 + 207 + 173 + 208 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 172 + 135 + 172 + 172 + 130 + 172 + 129 + 129 + 122 + 79 + 86 + 43 + 43 + 37 + 43 + 43 + 79 + 43 + 86 + 43 + 42 + 37 + 37 + 43 + 86 + 86 + 128 + 123 + 128 + 86 + 123 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 80 + 49 + 80 + 43 + 86 + 86 + 123 + 92 + 87 + 86 + 86 + 87 + 122 + 93 + 86 + 87 + 93 + 129 + 86 + 50 + 81 + 50 + 86 + 92 + 87 + 122 + 93 + 50 + 122 + 50 + 87 + 86 + 87 + 128 + 93 + 88 + 171 + 131 + 172 + 135 + 130 + 87 + 6 + 37 + 0 + 7 + 0 + 37 + 86 + 86 + 81 + 86 + 43 + 37 + 7 + 36 + 8 + 36 + 43 + 1 + 43 + 44 + 37 + 43 + 43 + 0 + 37 + 0 + 1 + 6 + 0 + 1 + 36 + 44 + 50 + 80 + 79 + 50 + 86 + 80 + 86 + 86 + 86 + 87 + 86 + 87 + 86 + 86 + 44 + 86 + 86 + 80 + 43 + 43 + 43 + 7 + 80 + 92 + 123 + 86 + 93 + 93 + 130 + 172 + 130 + 172 + 208 + 179 + 173 + 214 + 209 + 214 + 173 + 208 + 214 + 173 + 208 + 172 + 172 + 208 + 179 + 208 + 173 + 172 + 208 + 173 + 172 + 202 + 172 + 173 + 172 + 178 + 172 + 172 + 136 + 171 + 173 + 135 + 173 + 136 + 171 + 166 + 136 + 172 + 136 + 172 + 171 + 129 + 87 + 128 + 80 + 86 + 86 + 43 + 79 + 43 + 79 + 43 + 43 + 79 + 1 + 43 + 0 + 43 + 37 + 85 + 86 + 122 + 123 + 86 + 129 + 86 + 122 + 93 + 122 + 86 + 122 + 86 + 86 + 79 + 50 + 80 + 79 + 51 + 128 + 87 + 129 + 123 + 86 + 87 + 92 + 124 + 92 + 87 + 129 + 86 + 93 + 87 + 86 + 86 + 87 + 86 + 86 + 87 + 93 + 86 + 86 + 51 + 86 + 86 + 86 + 129 + 94 + 129 + 129 + 136 + 130 + 171 + 130 + 129 + 87 + 0 + 1 + 42 + 1 + 37 + 7 + 80 + 43 + 44 + 43 + 43 + 1 + 42 + 1 + 37 + 6 + 38 + 42 + 1 + 37 + 43 + 1 + 43 + 1 + 36 + 6 + 1 + 0 + 0 + 0 + 37 + 7 + 43 + 43 + 80 + 50 + 80 + 85 + 87 + 80 + 50 + 122 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 43 + 80 + 43 + 44 + 86 + 87 + 92 + 87 + 129 + 129 + 130 + 130 + 172 + 178 + 173 + 173 + 214 + 209 + 178 + 209 + 172 + 215 + 209 + 214 + 172 + 209 + 172 + 173 + 214 + 172 + 209 + 172 + 172 + 173 + 208 + 173 + 166 + 178 + 136 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 136 + 171 + 136 + 166 + 135 + 166 + 136 + 136 + 172 + 129 + 122 + 86 + 122 + 87 + 49 + 79 + 86 + 43 + 80 + 43 + 43 + 42 + 79 + 1 + 1 + 36 + 43 + 79 + 86 + 86 + 86 + 123 + 128 + 86 + 86 + 123 + 122 + 93 + 122 + 86 + 86 + 79 + 86 + 43 + 80 + 86 + 93 + 123 + 129 + 86 + 86 + 87 + 122 + 93 + 87 + 93 + 122 + 93 + 86 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 50 + 86 + 87 + 86 + 93 + 129 + 130 + 136 + 165 + 136 + 130 + 135 + 123 + 50 + 1 + 43 + 1 + 36 + 7 + 43 + 44 + 37 + 43 + 43 + 1 + 37 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 36 + 1 + 7 + 37 + 36 + 7 + 0 + 1 + 36 + 0 + 1 + 0 + 6 + 37 + 44 + 43 + 86 + 44 + 86 + 86 + 86 + 80 + 92 + 44 + 86 + 86 + 44 + 86 + 122 + 87 + 50 + 43 + 79 + 44 + 50 + 128 + 45 + 86 + 92 + 123 + 129 + 136 + 136 + 166 + 179 + 208 + 179 + 209 + 179 + 208 + 215 + 172 + 215 + 209 + 178 + 173 + 208 + 173 + 208 + 173 + 179 + 208 + 173 + 172 + 172 + 166 + 172 + 173 + 178 + 172 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 172 + 172 + 136 + 130 + 171 + 136 + 171 + 130 + 172 + 165 + 128 + 129 + 129 + 86 + 122 + 44 + 85 + 79 + 44 + 79 + 43 + 43 + 43 + 42 + 1 + 37 + 42 + 80 + 49 + 122 + 87 + 86 + 122 + 86 + 122 + 86 + 86 + 122 + 87 + 86 + 85 + 80 + 49 + 80 + 86 + 87 + 128 + 87 + 129 + 129 + 87 + 128 + 87 + 123 + 93 + 128 + 87 + 50 + 86 + 50 + 80 + 50 + 86 + 86 + 87 + 86 + 93 + 122 + 87 + 86 + 92 + 87 + 86 + 129 + 129 + 136 + 130 + 135 + 166 + 130 + 135 + 87 + 7 + 37 + 6 + 1 + 36 + 7 + 37 + 7 + 37 + 43 + 0 + 37 + 1 + 42 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 43 + 0 + 37 + 7 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 37 + 7 + 43 + 44 + 79 + 49 + 80 + 50 + 86 + 80 + 87 + 86 + 85 + 81 + 92 + 86 + 80 + 50 + 86 + 80 + 86 + 129 + 86 + 44 + 86 + 51 + 86 + 129 + 129 + 130 + 172 + 173 + 178 + 173 + 172 + 208 + 179 + 173 + 209 + 178 + 209 + 173 + 214 + 173 + 173 + 214 + 173 + 208 + 173 + 172 + 172 + 179 + 208 + 172 + 172 + 172 + 179 + 136 + 172 + 208 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 171 + 172 + 136 + 172 + 136 + 166 + 135 + 166 + 122 + 93 + 122 + 86 + 79 + 86 + 43 + 79 + 44 + 43 + 42 + 37 + 43 + 36 + 7 + 37 + 79 + 85 + 80 + 92 + 86 + 122 + 86 + 87 + 86 + 122 + 86 + 86 + 80 + 85 + 80 + 49 + 80 + 86 + 129 + 123 + 129 + 129 + 93 + 123 + 86 + 129 + 86 + 87 + 86 + 92 + 87 + 86 + 50 + 80 + 50 + 86 + 50 + 86 + 123 + 50 + 87 + 86 + 92 + 87 + 86 + 129 + 93 + 130 + 129 + 136 + 172 + 166 + 136 + 93 + 86 + 43 + 1 + 43 + 0 + 0 + 1 + 43 + 1 + 36 + 7 + 37 + 0 + 43 + 0 + 1 + 36 + 1 + 0 + 0 + 43 + 1 + 36 + 7 + 1 + 36 + 7 + 37 + 0 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 43 + 7 + 79 + 44 + 86 + 86 + 87 + 85 + 80 + 87 + 43 + 86 + 87 + 86 + 85 + 80 + 86 + 87 + 129 + 129 + 43 + 80 + 50 + 86 + 93 + 129 + 129 + 172 + 172 + 173 + 172 + 179 + 173 + 172 + 173 + 209 + 178 + 173 + 209 + 179 + 172 + 209 + 179 + 172 + 173 + 215 + 172 + 172 + 173 + 172 + 173 + 178 + 173 + 172 + 178 + 172 + 172 + 173 + 135 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 136 + 172 + 166 + 136 + 171 + 130 + 165 + 86 + 128 + 86 + 80 + 85 + 80 + 43 + 43 + 43 + 43 + 79 + 42 + 1 + 37 + 6 + 37 + 79 + 49 + 80 + 86 + 86 + 123 + 85 + 86 + 80 + 122 + 86 + 86 + 86 + 86 + 79 + 80 + 86 + 92 + 124 + 129 + 129 + 129 + 123 + 93 + 86 + 124 + 92 + 86 + 50 + 87 + 86 + 50 + 80 + 50 + 43 + 86 + 44 + 92 + 86 + 87 + 86 + 51 + 87 + 128 + 87 + 129 + 129 + 130 + 135 + 173 + 166 + 136 + 130 + 129 + 50 + 37 + 6 + 1 + 36 + 1 + 42 + 1 + 37 + 6 + 37 + 1 + 42 + 1 + 0 + 1 + 36 + 7 + 0 + 37 + 0 + 43 + 1 + 36 + 1 + 43 + 1 + 0 + 43 + 0 + 43 + 1 + 36 + 0 + 1 + 0 + 43 + 1 + 43 + 79 + 50 + 80 + 86 + 86 + 86 + 86 + 44 + 86 + 86 + 86 + 86 + 44 + 86 + 129 + 123 + 93 + 79 + 50 + 86 + 87 + 86 + 172 + 130 + 172 + 173 + 172 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 209 + 173 + 179 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 178 + 209 + 172 + 172 + 173 + 172 + 136 + 178 + 173 + 172 + 135 + 172 + 166 + 136 + 172 + 135 + 172 + 172 + 130 + 172 + 135 + 172 + 136 + 172 + 128 + 87 + 122 + 86 + 85 + 80 + 86 + 43 + 86 + 43 + 43 + 36 + 43 + 37 + 42 + 1 + 43 + 37 + 42 + 43 + 80 + 49 + 122 + 80 + 86 + 86 + 85 + 80 + 86 + 86 + 86 + 80 + 85 + 86 + 86 + 86 + 129 + 129 + 123 + 130 + 86 + 87 + 128 + 86 + 123 + 86 + 51 + 86 + 50 + 79 + 50 + 44 + 50 + 79 + 86 + 51 + 86 + 86 + 92 + 87 + 129 + 93 + 123 + 129 + 130 + 135 + 136 + 166 + 136 + 166 + 93 + 86 + 49 + 37 + 7 + 0 + 43 + 38 + 43 + 7 + 36 + 1 + 43 + 0 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 0 + 1 + 36 + 7 + 37 + 0 + 1 + 42 + 1 + 1 + 42 + 1 + 37 + 0 + 0 + 7 + 36 + 1 + 36 + 7 + 43 + 44 + 86 + 86 + 86 + 80 + 86 + 87 + 86 + 86 + 86 + 80 + 86 + 86 + 130 + 122 + 50 + 86 + 86 + 86 + 87 + 93 + 166 + 136 + 172 + 172 + 173 + 178 + 173 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 173 + 208 + 179 + 173 + 173 + 172 + 178 + 173 + 172 + 137 + 208 + 173 + 142 + 172 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 135 + 172 + 136 + 172 + 136 + 165 + 136 + 172 + 172 + 172 + 86 + 86 + 79 + 86 + 86 + 79 + 86 + 44 + 79 + 43 + 43 + 43 + 42 + 37 + 43 + 0 + 43 + 37 + 42 + 43 + 43 + 80 + 79 + 86 + 86 + 86 + 79 + 86 + 86 + 80 + 85 + 86 + 86 + 80 + 86 + 123 + 93 + 129 + 123 + 86 + 87 + 86 + 86 + 92 + 123 + 87 + 92 + 81 + 49 + 50 + 44 + 80 + 50 + 86 + 93 + 86 + 86 + 87 + 93 + 129 + 123 + 94 + 129 + 135 + 130 + 172 + 130 + 171 + 136 + 123 + 93 + 44 + 43 + 0 + 7 + 43 + 44 + 43 + 43 + 37 + 43 + 1 + 0 + 37 + 6 + 0 + 1 + 0 + 37 + 0 + 7 + 36 + 0 + 1 + 0 + 37 + 0 + 6 + 1 + 0 + 37 + 7 + 36 + 1 + 0 + 0 + 1 + 42 + 1 + 36 + 1 + 43 + 43 + 86 + 44 + 86 + 86 + 86 + 87 + 86 + 86 + 80 + 50 + 122 + 123 + 92 + 44 + 86 + 86 + 86 + 87 + 86 + 130 + 135 + 130 + 171 + 137 + 208 + 173 + 178 + 173 + 173 + 173 + 173 + 173 + 172 + 179 + 173 + 172 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 172 + 173 + 136 + 179 + 172 + 171 + 172 + 136 + 166 + 136 + 172 + 171 + 136 + 172 + 130 + 172 + 136 + 171 + 172 + 136 + 172 + 172 + 80 + 49 + 80 + 85 + 44 + 86 + 79 + 50 + 79 + 1 + 42 + 43 + 37 + 42 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 86 + 43 + 86 + 80 + 86 + 85 + 86 + 44 + 86 + 85 + 80 + 86 + 86 + 86 + 86 + 87 + 128 + 87 + 85 + 44 + 86 + 86 + 86 + 123 + 87 + 92 + 50 + 86 + 44 + 86 + 43 + 87 + 86 + 93 + 86 + 93 + 123 + 92 + 129 + 130 + 129 + 130 + 135 + 130 + 130 + 172 + 136 + 166 + 92 + 86 + 80 + 7 + 0 + 43 + 1 + 86 + 44 + 37 + 7 + 36 + 1 + 0 + 6 + 1 + 0 + 36 + 1 + 0 + 1 + 42 + 0 + 1 + 0 + 1 + 36 + 7 + 0 + 0 + 37 + 1 + 43 + 43 + 0 + 0 + 1 + 36 + 7 + 38 + 6 + 1 + 36 + 43 + 50 + 80 + 86 + 50 + 87 + 122 + 50 + 80 + 85 + 87 + 129 + 87 + 86 + 43 + 86 + 86 + 44 + 86 + 130 + 135 + 165 + 129 + 130 + 172 + 172 + 172 + 179 + 173 + 172 + 173 + 173 + 208 + 173 + 173 + 172 + 173 + 179 + 173 + 173 + 178 + 173 + 172 + 173 + 172 + 179 + 130 + 178 + 167 + 178 + 166 + 178 + 130 + 171 + 136 + 172 + 172 + 135 + 172 + 135 + 166 + 136 + 171 + 136 + 172 + 172 + 135 + 80 + 85 + 44 + 79 + 50 + 79 + 50 + 79 + 43 + 43 + 43 + 43 + 37 + 6 + 37 + 0 + 43 + 0 + 1 + 43 + 43 + 43 + 79 + 50 + 79 + 50 + 80 + 85 + 50 + 80 + 86 + 44 + 85 + 86 + 44 + 86 + 86 + 86 + 85 + 80 + 50 + 79 + 50 + 87 + 86 + 129 + 86 + 87 + 50 + 80 + 49 + 44 + 86 + 86 + 93 + 86 + 86 + 94 + 123 + 129 + 135 + 130 + 129 + 94 + 165 + 136 + 166 + 135 + 166 + 93 + 80 + 50 + 36 + 1 + 7 + 44 + 80 + 43 + 7 + 1 + 36 + 7 + 0 + 0 + 1 + 0 + 36 + 1 + 6 + 1 + 36 + 1 + 36 + 7 + 0 + 1 + 0 + 36 + 1 + 6 + 37 + 50 + 80 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 1 + 42 + 44 + 49 + 80 + 43 + 86 + 86 + 87 + 49 + 80 + 93 + 122 + 129 + 86 + 43 + 50 + 80 + 43 + 122 + 136 + 87 + 86 + 171 + 130 + 129 + 136 + 166 + 178 + 172 + 209 + 173 + 173 + 208 + 173 + 173 + 173 + 215 + 173 + 208 + 173 + 179 + 173 + 172 + 173 + 172 + 173 + 178 + 172 + 166 + 136 + 172 + 172 + 136 + 172 + 136 + 172 + 135 + 166 + 172 + 135 + 166 + 135 + 172 + 135 + 172 + 129 + 172 + 135 + 86 + 79 + 86 + 44 + 86 + 79 + 50 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 36 + 6 + 1 + 37 + 6 + 37 + 7 + 43 + 85 + 44 + 79 + 50 + 86 + 43 + 86 + 44 + 85 + 43 + 43 + 44 + 49 + 80 + 43 + 43 + 79 + 86 + 87 + 86 + 86 + 92 + 122 + 87 + 93 + 50 + 86 + 44 + 86 + 44 + 86 + 50 + 86 + 87 + 92 + 123 + 93 + 129 + 87 + 130 + 129 + 135 + 130 + 172 + 129 + 130 + 129 + 86 + 86 + 1 + 37 + 7 + 37 + 79 + 7 + 43 + 8 + 37 + 0 + 0 + 7 + 36 + 0 + 1 + 0 + 0 + 1 + 36 + 6 + 1 + 0 + 37 + 0 + 0 + 7 + 37 + 0 + 43 + 44 + 86 + 86 + 44 + 85 + 44 + 86 + 80 + 50 + 86 + 43 + 80 + 86 + 43 + 43 + 43 + 50 + 86 + 79 + 50 + 86 + 129 + 123 + 86 + 43 + 86 + 50 + 79 + 50 + 165 + 43 + 86 + 130 + 128 + 87 + 129 + 129 + 165 + 172 + 172 + 173 + 215 + 209 + 173 + 173 + 209 + 178 + 209 + 173 + 209 + 179 + 173 + 172 + 179 + 172 + 173 + 172 + 173 + 172 + 172 + 137 + 171 + 136 + 172 + 136 + 172 + 172 + 135 + 172 + 130 + 135 + 172 + 165 + 136 + 172 + 129 + 171 + 171 + 136 + 86 + 80 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 0 + 43 + 1 + 42 + 1 + 6 + 37 + 0 + 43 + 7 + 37 + 43 + 43 + 49 + 80 + 49 + 80 + 49 + 80 + 50 + 79 + 43 + 43 + 7 + 43 + 37 + 43 + 49 + 86 + 87 + 122 + 92 + 123 + 86 + 93 + 122 + 87 + 50 + 86 + 86 + 50 + 80 + 50 + 87 + 86 + 92 + 87 + 87 + 129 + 93 + 122 + 94 + 129 + 136 + 130 + 171 + 130 + 129 + 129 + 86 + 44 + 0 + 43 + 43 + 37 + 7 + 36 + 8 + 37 + 6 + 1 + 43 + 1 + 6 + 1 + 36 + 1 + 0 + 6 + 37 + 0 + 1 + 0 + 37 + 6 + 1 + 43 + 43 + 44 + 80 + 86 + 86 + 87 + 128 + 87 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 43 + 85 + 87 + 129 + 86 + 86 + 86 + 44 + 43 + 86 + 129 + 86 + 86 + 86 + 129 + 86 + 86 + 86 + 87 + 171 + 130 + 172 + 173 + 172 + 209 + 173 + 172 + 173 + 173 + 173 + 208 + 173 + 215 + 172 + 173 + 179 + 172 + 173 + 172 + 172 + 172 + 137 + 171 + 172 + 136 + 171 + 136 + 172 + 135 + 166 + 136 + 171 + 135 + 130 + 171 + 136 + 164 + 136 + 171 + 129 + 172 + 86 + 86 + 122 + 50 + 79 + 44 + 43 + 43 + 43 + 43 + 6 + 37 + 7 + 0 + 36 + 1 + 7 + 42 + 37 + 7 + 43 + 36 + 43 + 44 + 49 + 80 + 43 + 50 + 79 + 49 + 80 + 43 + 43 + 43 + 7 + 79 + 50 + 122 + 129 + 129 + 130 + 129 + 129 + 86 + 129 + 87 + 92 + 50 + 81 + 49 + 86 + 87 + 86 + 86 + 93 + 122 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 172 + 129 + 130 + 136 + 129 + 80 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 43 + 37 + 7 + 1 + 43 + 43 + 0 + 1 + 0 + 1 + 36 + 6 + 1 + 0 + 0 + 37 + 7 + 37 + 44 + 86 + 85 + 87 + 86 + 86 + 123 + 129 + 86 + 130 + 128 + 124 + 129 + 129 + 129 + 128 + 123 + 93 + 86 + 86 + 122 + 43 + 43 + 80 + 91 + 93 + 86 + 80 + 85 + 44 + 86 + 93 + 122 + 86 + 86 + 93 + 80 + 43 + 85 + 44 + 86 + 129 + 129 + 172 + 129 + 172 + 167 + 172 + 179 + 172 + 173 + 208 + 173 + 173 + 172 + 209 + 179 + 172 + 173 + 142 + 172 + 173 + 172 + 172 + 136 + 172 + 171 + 136 + 172 + 135 + 171 + 130 + 171 + 135 + 135 + 129 + 171 + 129 + 136 + 165 + 136 + 165 + 135 + 165 + 86 + 123 + 85 + 50 + 80 + 49 + 44 + 43 + 43 + 43 + 0 + 43 + 37 + 6 + 0 + 1 + 43 + 0 + 43 + 37 + 6 + 37 + 7 + 49 + 80 + 43 + 86 + 43 + 50 + 79 + 44 + 43 + 85 + 44 + 79 + 86 + 92 + 130 + 171 + 129 + 130 + 171 + 129 + 129 + 87 + 128 + 87 + 50 + 86 + 86 + 86 + 87 + 86 + 93 + 87 + 129 + 130 + 93 + 129 + 129 + 129 + 93 + 130 + 130 + 171 + 130 + 129 + 129 + 87 + 79 + 1 + 43 + 37 + 7 + 0 + 37 + 43 + 44 + 42 + 1 + 43 + 44 + 43 + 0 + 43 + 1 + 0 + 1 + 36 + 7 + 36 + 1 + 0 + 43 + 44 + 86 + 80 + 86 + 86 + 129 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 171 + 129 + 129 + 165 + 129 + 87 + 86 + 165 + 93 + 85 + 80 + 129 + 86 + 86 + 86 + 43 + 79 + 86 + 129 + 129 + 86 + 92 + 86 + 80 + 49 + 80 + 50 + 122 + 129 + 129 + 123 + 93 + 129 + 129 + 172 + 209 + 173 + 214 + 172 + 173 + 173 + 208 + 173 + 179 + 172 + 179 + 172 + 208 + 179 + 172 + 136 + 172 + 172 + 136 + 171 + 136 + 165 + 136 + 171 + 135 + 172 + 135 + 171 + 129 + 135 + 130 + 171 + 130 + 135 + 165 + 136 + 129 + 129 + 86 + 86 + 79 + 50 + 79 + 44 + 43 + 43 + 43 + 0 + 43 + 7 + 0 + 37 + 42 + 7 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 50 + 80 + 86 + 43 + 86 + 43 + 50 + 80 + 49 + 44 + 86 + 129 + 129 + 165 + 136 + 129 + 172 + 129 + 129 + 129 + 129 + 86 + 87 + 50 + 86 + 50 + 79 + 87 + 93 + 86 + 130 + 93 + 122 + 93 + 129 + 129 + 94 + 129 + 129 + 135 + 166 + 129 + 94 + 122 + 50 + 37 + 43 + 0 + 43 + 1 + 0 + 42 + 1 + 43 + 37 + 7 + 43 + 80 + 1 + 43 + 0 + 37 + 7 + 36 + 0 + 1 + 0 + 0 + 43 + 43 + 80 + 86 + 93 + 86 + 123 + 129 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 129 + 123 + 171 + 166 + 86 + 122 + 129 + 129 + 129 + 159 + 92 + 123 + 49 + 44 + 85 + 86 + 87 + 128 + 87 + 122 + 92 + 44 + 85 + 44 + 86 + 122 + 135 + 123 + 86 + 50 + 86 + 122 + 130 + 172 + 208 + 179 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 135 + 173 + 172 + 178 + 136 + 208 + 172 + 136 + 172 + 135 + 171 + 136 + 171 + 129 + 135 + 172 + 135 + 171 + 99 + 172 + 129 + 171 + 130 + 165 + 136 + 129 + 165 + 129 + 87 + 122 + 50 + 85 + 86 + 44 + 43 + 79 + 43 + 7 + 43 + 43 + 0 + 43 + 37 + 6 + 1 + 43 + 0 + 43 + 43 + 43 + 43 + 44 + 85 + 86 + 44 + 86 + 43 + 86 + 44 + 85 + 86 + 86 + 87 + 129 + 171 + 130 + 172 + 171 + 130 + 129 + 129 + 129 + 93 + 122 + 93 + 87 + 50 + 80 + 86 + 86 + 93 + 129 + 86 + 129 + 87 + 93 + 129 + 87 + 129 + 129 + 136 + 130 + 129 + 129 + 88 + 128 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 1 + 43 + 80 + 7 + 36 + 44 + 86 + 43 + 80 + 43 + 43 + 44 + 43 + 36 + 1 + 6 + 0 + 37 + 50 + 86 + 86 + 123 + 129 + 123 + 171 + 129 + 164 + 129 + 130 + 165 + 129 + 165 + 129 + 165 + 86 + 122 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 92 + 43 + 86 + 87 + 128 + 129 + 123 + 92 + 86 + 44 + 43 + 86 + 129 + 129 + 86 + 86 + 44 + 85 + 86 + 87 + 129 + 165 + 136 + 172 + 129 + 130 + 166 + 135 + 166 + 135 + 166 + 172 + 136 + 178 + 172 + 172 + 172 + 172 + 142 + 172 + 130 + 172 + 171 + 136 + 135 + 136 + 165 + 136 + 171 + 136 + 130 + 135 + 166 + 135 + 165 + 136 + 165 + 130 + 171 + 130 + 86 + 123 + 86 + 49 + 86 + 80 + 49 + 44 + 43 + 43 + 43 + 36 + 7 + 43 + 37 + 6 + 37 + 7 + 36 + 43 + 7 + 43 + 79 + 44 + 43 + 86 + 49 + 87 + 79 + 50 + 86 + 80 + 86 + 92 + 129 + 166 + 135 + 172 + 172 + 165 + 136 + 129 + 129 + 129 + 123 + 93 + 128 + 87 + 86 + 87 + 50 + 93 + 128 + 88 + 129 + 86 + 129 + 87 + 92 + 130 + 129 + 129 + 129 + 129 + 130 + 93 + 128 + 81 + 7 + 43 + 36 + 7 + 43 + 1 + 43 + 43 + 37 + 85 + 43 + 80 + 86 + 86 + 129 + 86 + 80 + 86 + 86 + 79 + 7 + 37 + 0 + 1 + 43 + 86 + 43 + 87 + 86 + 158 + 129 + 129 + 165 + 129 + 165 + 129 + 208 + 171 + 171 + 166 + 171 + 123 + 129 + 122 + 86 + 129 + 165 + 129 + 123 + 165 + 129 + 128 + 86 + 86 + 129 + 123 + 92 + 80 + 43 + 85 + 50 + 123 + 128 + 87 + 92 + 79 + 44 + 85 + 92 + 87 + 165 + 93 + 122 + 93 + 129 + 129 + 129 + 166 + 135 + 166 + 136 + 165 + 172 + 136 + 172 + 177 + 136 + 172 + 172 + 172 + 136 + 171 + 172 + 136 + 165 + 136 + 136 + 166 + 135 + 130 + 172 + 135 + 130 + 165 + 136 + 129 + 172 + 129 + 166 + 135 + 166 + 92 + 123 + 86 + 86 + 86 + 50 + 80 + 49 + 79 + 43 + 43 + 1 + 43 + 42 + 1 + 37 + 7 + 42 + 1 + 43 + 43 + 43 + 43 + 80 + 49 + 43 + 80 + 86 + 86 + 86 + 50 + 86 + 122 + 135 + 129 + 172 + 171 + 172 + 172 + 130 + 172 + 129 + 129 + 129 + 130 + 93 + 122 + 93 + 87 + 92 + 123 + 93 + 86 + 129 + 93 + 129 + 123 + 94 + 129 + 129 + 129 + 130 + 135 + 130 + 93 + 129 + 123 + 80 + 43 + 6 + 43 + 37 + 43 + 43 + 80 + 49 + 80 + 86 + 128 + 123 + 129 + 129 + 122 + 129 + 122 + 87 + 122 + 50 + 43 + 0 + 0 + 37 + 43 + 44 + 92 + 123 + 122 + 129 + 129 + 165 + 171 + 171 + 172 + 208 + 215 + 208 + 208 + 214 + 208 + 171 + 166 + 129 + 123 + 128 + 165 + 123 + 122 + 129 + 165 + 129 + 129 + 86 + 49 + 80 + 86 + 50 + 80 + 86 + 128 + 86 + 86 + 44 + 86 + 86 + 122 + 93 + 129 + 122 + 93 + 86 + 86 + 87 + 86 + 129 + 129 + 172 + 129 + 172 + 172 + 129 + 172 + 136 + 177 + 172 + 172 + 135 + 172 + 172 + 172 + 136 + 172 + 136 + 166 + 136 + 165 + 136 + 130 + 171 + 130 + 130 + 135 + 130 + 165 + 130 + 166 + 135 + 129 + 88 + 165 + 129 + 92 + 123 + 86 + 86 + 86 + 86 + 43 + 50 + 79 + 43 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 43 + 43 + 50 + 80 + 85 + 86 + 86 + 87 + 129 + 129 + 172 + 171 + 172 + 172 + 171 + 130 + 172 + 171 + 130 + 129 + 86 + 128 + 87 + 93 + 122 + 93 + 87 + 93 + 129 + 130 + 87 + 129 + 129 + 93 + 129 + 130 + 136 + 129 + 129 + 93 + 129 + 87 + 86 + 85 + 44 + 44 + 43 + 80 + 86 + 86 + 86 + 86 + 129 + 123 + 165 + 129 + 129 + 129 + 165 + 86 + 123 + 128 + 87 + 122 + 7 + 43 + 0 + 0 + 44 + 79 + 93 + 129 + 165 + 136 + 201 + 172 + 214 + 209 + 214 + 208 + 215 + 215 + 214 + 209 + 207 + 172 + 208 + 208 + 171 + 165 + 130 + 122 + 122 + 129 + 129 + 129 + 129 + 87 + 86 + 85 + 80 + 87 + 128 + 93 + 80 + 85 + 50 + 80 + 92 + 166 + 92 + 86 + 87 + 86 + 85 + 86 + 122 + 50 + 122 + 93 + 129 + 165 + 130 + 171 + 136 + 165 + 136 + 171 + 136 + 172 + 135 + 172 + 178 + 136 + 172 + 171 + 136 + 173 + 129 + 172 + 131 + 129 + 131 + 130 + 172 + 130 + 130 + 130 + 130 + 129 + 129 + 129 + 129 + 87 + 122 + 129 + 129 + 86 + 86 + 86 + 86 + 80 + 86 + 49 + 80 + 7 + 36 + 43 + 1 + 6 + 37 + 7 + 36 + 43 + 43 + 43 + 44 + 43 + 86 + 43 + 49 + 44 + 79 + 50 + 86 + 122 + 130 + 129 + 171 + 130 + 172 + 172 + 172 + 171 + 130 + 172 + 165 + 129 + 130 + 128 + 93 + 87 + 86 + 93 + 123 + 129 + 129 + 93 + 123 + 128 + 93 + 130 + 123 + 93 + 129 + 129 + 136 + 129 + 129 + 87 + 122 + 44 + 85 + 44 + 122 + 86 + 93 + 122 + 130 + 129 + 123 + 128 + 129 + 164 + 130 + 171 + 129 + 165 + 129 + 123 + 128 + 129 + 123 + 43 + 7 + 36 + 1 + 7 + 37 + 85 + 123 + 135 + 166 + 214 + 208 + 209 + 172 + 214 + 209 + 214 + 215 + 208 + 215 + 214 + 208 + 209 + 171 + 208 + 172 + 165 + 129 + 122 + 123 + 86 + 122 + 93 + 123 + 128 + 86 + 123 + 86 + 85 + 44 + 86 + 129 + 129 + 129 + 87 + 86 + 85 + 86 + 80 + 86 + 86 + 86 + 86 + 92 + 123 + 93 + 128 + 129 + 130 + 129 + 135 + 166 + 135 + 171 + 136 + 171 + 129 + 172 + 136 + 172 + 171 + 136 + 172 + 137 + 130 + 173 + 129 + 167 + 136 + 130 + 130 + 130 + 165 + 129 + 130 + 129 + 123 + 123 + 86 + 86 + 86 + 123 + 128 + 87 + 128 + 86 + 86 + 50 + 79 + 50 + 79 + 43 + 7 + 36 + 7 + 37 + 1 + 42 + 1 + 43 + 36 + 43 + 7 + 43 + 79 + 44 + 85 + 44 + 86 + 86 + 86 + 93 + 129 + 129 + 166 + 171 + 130 + 172 + 135 + 172 + 166 + 136 + 165 + 136 + 129 + 129 + 123 + 128 + 129 + 87 + 129 + 87 + 129 + 129 + 129 + 123 + 135 + 123 + 135 + 130 + 129 + 129 + 129 + 129 + 123 + 86 + 44 + 85 + 43 + 122 + 129 + 130 + 165 + 129 + 129 + 129 + 129 + 159 + 92 + 130 + 165 + 165 + 129 + 172 + 165 + 130 + 128 + 129 + 86 + 79 + 7 + 37 + 0 + 37 + 6 + 1 + 43 + 86 + 123 + 170 + 172 + 172 + 214 + 209 + 208 + 214 + 209 + 171 + 215 + 202 + 135 + 207 + 172 + 166 + 171 + 172 + 164 + 129 + 129 + 129 + 129 + 122 + 93 + 122 + 86 + 80 + 122 + 92 + 129 + 130 + 122 + 92 + 80 + 50 + 85 + 80 + 50 + 86 + 122 + 92 + 129 + 123 + 92 + 86 + 86 + 43 + 87 + 128 + 129 + 171 + 130 + 136 + 129 + 136 + 172 + 136 + 136 + 172 + 136 + 173 + 130 + 135 + 173 + 130 + 130 + 136 + 167 + 135 + 130 + 130 + 130 + 87 + 129 + 123 + 123 + 86 + 122 + 86 + 116 + 50 + 123 + 86 + 122 + 93 + 86 + 80 + 49 + 86 + 44 + 85 + 37 + 7 + 36 + 7 + 37 + 7 + 36 + 1 + 43 + 6 + 37 + 43 + 43 + 44 + 49 + 80 + 79 + 50 + 86 + 86 + 128 + 129 + 130 + 171 + 136 + 165 + 136 + 166 + 171 + 136 + 171 + 130 + 172 + 129 + 129 + 123 + 129 + 93 + 123 + 129 + 93 + 123 + 129 + 129 + 123 + 135 + 130 + 130 + 165 + 129 + 130 + 129 + 129 + 123 + 92 + 80 + 86 + 86 + 86 + 165 + 172 + 129 + 165 + 130 + 165 + 135 + 123 + 171 + 166 + 172 + 129 + 165 + 129 + 172 + 166 + 135 + 129 + 122 + 43 + 1 + 0 + 7 + 36 + 1 + 6 + 37 + 6 + 80 + 86 + 172 + 208 + 172 + 214 + 209 + 214 + 173 + 165 + 129 + 129 + 128 + 129 + 165 + 130 + 129 + 171 + 172 + 171 + 172 + 207 + 130 + 129 + 122 + 128 + 87 + 129 + 164 + 129 + 129 + 87 + 85 + 86 + 80 + 50 + 122 + 93 + 86 + 128 + 87 + 122 + 92 + 86 + 80 + 50 + 79 + 50 + 80 + 92 + 129 + 130 + 129 + 135 + 93 + 130 + 136 + 130 + 136 + 136 + 130 + 136 + 172 + 135 + 131 + 172 + 130 + 129 + 136 + 130 + 129 + 87 + 130 + 87 + 87 + 128 + 123 + 80 + 122 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 44 + 85 + 44 + 85 + 44 + 43 + 42 + 1 + 37 + 7 + 36 + 7 + 37 + 42 + 1 + 43 + 43 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 129 + 129 + 172 + 129 + 172 + 165 + 136 + 172 + 171 + 130 + 172 + 172 + 171 + 129 + 130 + 129 + 129 + 129 + 123 + 92 + 129 + 87 + 122 + 130 + 129 + 129 + 135 + 166 + 129 + 130 + 129 + 129 + 129 + 87 + 86 + 86 + 80 + 128 + 165 + 130 + 171 + 166 + 171 + 166 + 136 + 172 + 165 + 129 + 172 + 166 + 171 + 172 + 165 + 172 + 172 + 165 + 136 + 86 + 37 + 6 + 0 + 37 + 6 + 1 + 36 + 7 + 0 + 37 + 43 + 122 + 129 + 172 + 172 + 208 + 215 + 214 + 166 + 129 + 129 + 86 + 129 + 123 + 85 + 165 + 129 + 172 + 171 + 172 + 207 + 172 + 129 + 166 + 129 + 172 + 165 + 129 + 86 + 86 + 86 + 86 + 122 + 87 + 129 + 128 + 87 + 85 + 86 + 86 + 86 + 80 + 49 + 86 + 86 + 44 + 86 + 86 + 86 + 87 + 128 + 129 + 129 + 93 + 130 + 172 + 129 + 136 + 136 + 172 + 136 + 166 + 136 + 130 + 135 + 124 + 94 + 129 + 123 + 93 + 87 + 86 + 86 + 80 + 87 + 122 + 86 + 116 + 86 + 123 + 122 + 92 + 87 + 122 + 86 + 86 + 86 + 44 + 86 + 43 + 49 + 37 + 43 + 1 + 42 + 1 + 43 + 0 + 43 + 1 + 42 + 43 + 37 + 43 + 43 + 44 + 49 + 79 + 50 + 123 + 92 + 129 + 165 + 136 + 165 + 136 + 166 + 171 + 136 + 172 + 172 + 166 + 171 + 172 + 171 + 130 + 129 + 129 + 123 + 129 + 87 + 129 + 122 + 93 + 123 + 129 + 129 + 129 + 130 + 129 + 130 + 129 + 165 + 93 + 130 + 122 + 50 + 86 + 159 + 171 + 130 + 171 + 166 + 178 + 208 + 172 + 166 + 172 + 165 + 135 + 166 + 214 + 172 + 208 + 172 + 173 + 208 + 135 + 79 + 37 + 6 + 1 + 0 + 37 + 0 + 7 + 36 + 1 + 0 + 43 + 43 + 79 + 129 + 166 + 214 + 215 + 209 + 215 + 171 + 165 + 129 + 134 + 129 + 80 + 122 + 92 + 166 + 128 + 172 + 172 + 172 + 172 + 208 + 165 + 129 + 86 + 129 + 129 + 122 + 129 + 123 + 92 + 87 + 122 + 92 + 80 + 50 + 79 + 86 + 86 + 50 + 80 + 86 + 50 + 79 + 86 + 86 + 86 + 129 + 86 + 129 + 87 + 93 + 136 + 130 + 172 + 172 + 136 + 136 + 172 + 130 + 135 + 130 + 123 + 93 + 123 + 87 + 92 + 87 + 80 + 86 + 86 + 86 + 86 + 116 + 87 + 123 + 122 + 129 + 122 + 129 + 129 + 123 + 86 + 86 + 86 + 86 + 50 + 79 + 43 + 43 + 7 + 37 + 7 + 36 + 43 + 1 + 36 + 7 + 37 + 43 + 43 + 43 + 43 + 44 + 85 + 44 + 86 + 129 + 122 + 136 + 129 + 172 + 129 + 171 + 166 + 135 + 172 + 165 + 179 + 172 + 172 + 136 + 165 + 136 + 130 + 129 + 159 + 93 + 86 + 129 + 123 + 93 + 123 + 129 + 93 + 129 + 123 + 129 + 129 + 124 + 129 + 122 + 93 + 86 + 86 + 165 + 129 + 166 + 171 + 172 + 172 + 172 + 208 + 172 + 130 + 208 + 171 + 209 + 178 + 209 + 214 + 215 + 215 + 208 + 172 + 129 + 43 + 36 + 1 + 7 + 36 + 6 + 1 + 0 + 37 + 0 + 6 + 1 + 36 + 43 + 43 + 123 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 172 + 171 + 129 + 165 + 129 + 92 + 123 + 171 + 128 + 166 + 129 + 172 + 129 + 123 + 129 + 164 + 129 + 93 + 123 + 128 + 87 + 86 + 80 + 86 + 86 + 85 + 50 + 80 + 43 + 49 + 80 + 43 + 86 + 43 + 86 + 50 + 86 + 86 + 129 + 129 + 136 + 165 + 136 + 135 + 130 + 172 + 130 + 136 + 129 + 130 + 129 + 86 + 87 + 86 + 86 + 50 + 87 + 80 + 86 + 86 + 50 + 116 + 86 + 123 + 123 + 128 + 123 + 123 + 128 + 129 + 123 + 129 + 122 + 92 + 86 + 86 + 50 + 79 + 43 + 43 + 43 + 1 + 43 + 0 + 37 + 7 + 36 + 7 + 37 + 43 + 7 + 43 + 43 + 79 + 50 + 80 + 92 + 129 + 129 + 165 + 136 + 165 + 136 + 166 + 135 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 130 + 93 + 128 + 87 + 128 + 87 + 129 + 123 + 93 + 129 + 123 + 128 + 123 + 93 + 86 + 87 + 122 + 50 + 129 + 165 + 172 + 166 + 172 + 172 + 172 + 172 + 172 + 171 + 166 + 208 + 215 + 215 + 214 + 215 + 209 + 215 + 215 + 209 + 172 + 128 + 37 + 43 + 7 + 36 + 1 + 0 + 6 + 1 + 36 + 1 + 0 + 43 + 1 + 36 + 43 + 43 + 129 + 208 + 214 + 215 + 215 + 208 + 172 + 208 + 215 + 171 + 173 + 171 + 165 + 87 + 129 + 129 + 165 + 129 + 171 + 166 + 129 + 171 + 123 + 86 + 123 + 92 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 43 + 44 + 79 + 50 + 79 + 86 + 50 + 86 + 86 + 86 + 86 + 123 + 129 + 129 + 136 + 165 + 130 + 129 + 130 + 129 + 136 + 123 + 92 + 129 + 86 + 86 + 81 + 49 + 86 + 44 + 86 + 86 + 87 + 80 + 86 + 86 + 123 + 128 + 123 + 159 + 128 + 123 + 129 + 129 + 165 + 87 + 128 + 87 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 43 + 36 + 7 + 37 + 0 + 43 + 1 + 43 + 43 + 37 + 43 + 49 + 79 + 44 + 86 + 129 + 129 + 129 + 165 + 136 + 165 + 136 + 165 + 136 + 172 + 166 + 171 + 172 + 172 + 136 + 165 + 136 + 166 + 129 + 130 + 129 + 129 + 129 + 129 + 123 + 93 + 129 + 129 + 123 + 93 + 122 + 93 + 122 + 94 + 122 + 92 + 123 + 86 + 130 + 165 + 172 + 172 + 172 + 172 + 208 + 172 + 208 + 166 + 172 + 215 + 214 + 215 + 215 + 215 + 208 + 215 + 208 + 172 + 172 + 86 + 37 + 6 + 37 + 6 + 37 + 6 + 37 + 43 + 43 + 43 + 79 + 7 + 36 + 43 + 37 + 6 + 80 + 165 + 208 + 178 + 209 + 129 + 135 + 172 + 165 + 214 + 208 + 214 + 214 + 208 + 171 + 136 + 165 + 172 + 166 + 172 + 165 + 129 + 128 + 87 + 129 + 122 + 129 + 93 + 129 + 123 + 92 + 128 + 123 + 93 + 128 + 87 + 92 + 128 + 87 + 85 + 87 + 86 + 85 + 86 + 86 + 123 + 92 + 129 + 87 + 129 + 93 + 123 + 92 + 123 + 93 + 86 + 93 + 123 + 85 + 44 + 86 + 80 + 49 + 80 + 79 + 86 + 86 + 87 + 122 + 129 + 122 + 123 + 129 + 159 + 86 + 129 + 165 + 129 + 129 + 128 + 87 + 86 + 86 + 79 + 50 + 79 + 7 + 37 + 43 + 43 + 0 + 7 + 36 + 1 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 86 + 86 + 123 + 135 + 129 + 130 + 165 + 135 + 166 + 135 + 166 + 136 + 171 + 130 + 172 + 129 + 172 + 129 + 166 + 129 + 129 + 129 + 130 + 129 + 129 + 130 + 129 + 165 + 129 + 130 + 129 + 93 + 129 + 165 + 130 + 86 + 123 + 92 + 123 + 93 + 165 + 130 + 178 + 208 + 172 + 208 + 166 + 172 + 172 + 214 + 209 + 215 + 215 + 215 + 208 + 215 + 215 + 209 + 214 + 172 + 86 + 43 + 36 + 7 + 37 + 43 + 6 + 80 + 43 + 86 + 79 + 50 + 86 + 79 + 80 + 85 + 43 + 37 + 42 + 87 + 165 + 178 + 209 + 86 + 86 + 164 + 93 + 165 + 215 + 215 + 215 + 215 + 214 + 172 + 209 + 214 + 172 + 208 + 165 + 136 + 171 + 165 + 130 + 164 + 129 + 130 + 129 + 135 + 129 + 159 + 93 + 128 + 87 + 122 + 86 + 86 + 50 + 37 + 42 + 43 + 44 + 85 + 86 + 86 + 92 + 124 + 128 + 87 + 86 + 86 + 93 + 123 + 92 + 124 + 128 + 87 + 86 + 85 + 86 + 80 + 86 + 44 + 85 + 80 + 86 + 87 + 122 + 129 + 122 + 159 + 92 + 123 + 122 + 81 + 171 + 129 + 129 + 123 + 92 + 86 + 80 + 50 + 44 + 85 + 43 + 43 + 37 + 6 + 37 + 7 + 0 + 43 + 37 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 92 + 122 + 130 + 135 + 165 + 135 + 166 + 135 + 166 + 135 + 165 + 136 + 166 + 135 + 130 + 165 + 136 + 165 + 136 + 165 + 129 + 130 + 129 + 136 + 165 + 130 + 129 + 129 + 129 + 130 + 129 + 166 + 129 + 166 + 136 + 129 + 166 + 135 + 166 + 172 + 172 + 208 + 172 + 208 + 173 + 171 + 172 + 172 + 215 + 209 + 215 + 215 + 214 + 209 + 215 + 209 + 214 + 172 + 166 + 85 + 1 + 0 + 43 + 43 + 43 + 86 + 80 + 49 + 87 + 86 + 85 + 80 + 50 + 85 + 80 + 86 + 36 + 43 + 43 + 165 + 172 + 215 + 122 + 86 + 129 + 86 + 86 + 209 + 178 + 208 + 208 + 178 + 209 + 214 + 208 + 173 + 172 + 172 + 171 + 130 + 165 + 128 + 87 + 86 + 128 + 123 + 129 + 93 + 129 + 85 + 87 + 86 + 86 + 49 + 80 + 43 + 43 + 43 + 43 + 79 + 50 + 86 + 123 + 92 + 123 + 86 + 93 + 86 + 123 + 86 + 123 + 129 + 129 + 93 + 123 + 129 + 86 + 86 + 86 + 122 + 79 + 86 + 80 + 86 + 129 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 80 + 165 + 129 + 93 + 128 + 86 + 86 + 86 + 80 + 50 + 85 + 44 + 43 + 43 + 37 + 0 + 7 + 36 + 7 + 37 + 7 + 37 + 43 + 43 + 43 + 43 + 79 + 87 + 92 + 129 + 129 + 129 + 166 + 135 + 129 + 129 + 130 + 129 + 129 + 123 + 129 + 129 + 135 + 165 + 136 + 166 + 129 + 130 + 171 + 130 + 165 + 136 + 129 + 123 + 129 + 129 + 87 + 129 + 129 + 129 + 166 + 135 + 130 + 129 + 166 + 129 + 172 + 172 + 215 + 172 + 208 + 172 + 172 + 208 + 172 + 215 + 215 + 208 + 208 + 172 + 172 + 215 + 215 + 208 + 172 + 129 + 79 + 0 + 43 + 43 + 43 + 86 + 87 + 86 + 86 + 86 + 122 + 93 + 122 + 86 + 86 + 80 + 43 + 85 + 44 + 79 + 129 + 135 + 209 + 171 + 165 + 128 + 86 + 128 + 123 + 129 + 208 + 215 + 214 + 172 + 166 + 172 + 172 + 208 + 136 + 165 + 129 + 165 + 129 + 129 + 86 + 123 + 129 + 129 + 129 + 129 + 86 + 93 + 122 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 44 + 86 + 86 + 86 + 85 + 87 + 86 + 86 + 123 + 86 + 129 + 87 + 129 + 165 + 129 + 172 + 129 + 123 + 128 + 123 + 86 + 128 + 86 + 87 + 116 + 92 + 123 + 128 + 123 + 123 + 122 + 86 + 122 + 86 + 123 + 86 + 129 + 122 + 93 + 86 + 86 + 85 + 80 + 50 + 43 + 43 + 43 + 37 + 6 + 37 + 7 + 36 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 85 + 44 + 86 + 129 + 128 + 87 + 129 + 129 + 129 + 86 + 86 + 92 + 86 + 87 + 86 + 129 + 128 + 130 + 129 + 129 + 172 + 129 + 130 + 166 + 135 + 130 + 129 + 165 + 93 + 129 + 123 + 129 + 129 + 172 + 130 + 129 + 129 + 129 + 166 + 172 + 172 + 172 + 208 + 172 + 165 + 136 + 208 + 215 + 208 + 179 + 208 + 208 + 172 + 130 + 214 + 208 + 215 + 209 + 171 + 87 + 85 + 1 + 43 + 43 + 86 + 86 + 122 + 86 + 93 + 128 + 87 + 128 + 86 + 86 + 86 + 86 + 122 + 80 + 86 + 49 + 80 + 172 + 172 + 172 + 172 + 166 + 129 + 164 + 135 + 122 + 129 + 135 + 171 + 166 + 129 + 165 + 172 + 166 + 135 + 166 + 171 + 129 + 123 + 86 + 129 + 128 + 130 + 128 + 123 + 129 + 129 + 129 + 86 + 86 + 87 + 85 + 79 + 50 + 43 + 43 + 80 + 86 + 86 + 86 + 86 + 79 + 86 + 123 + 92 + 123 + 129 + 129 + 130 + 129 + 172 + 172 + 165 + 165 + 129 + 123 + 129 + 122 + 129 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 123 + 86 + 122 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 86 + 87 + 79 + 50 + 86 + 43 + 80 + 43 + 6 + 1 + 43 + 0 + 1 + 43 + 43 + 7 + 43 + 37 + 43 + 43 + 49 + 80 + 44 + 86 + 43 + 86 + 86 + 86 + 51 + 79 + 50 + 86 + 86 + 87 + 129 + 129 + 129 + 129 + 93 + 129 + 130 + 165 + 129 + 130 + 166 + 135 + 130 + 123 + 129 + 129 + 128 + 87 + 130 + 171 + 129 + 130 + 129 + 171 + 130 + 208 + 172 + 215 + 172 + 209 + 172 + 214 + 208 + 172 + 214 + 173 + 208 + 130 + 214 + 209 + 215 + 215 + 214 + 166 + 86 + 85 + 44 + 79 + 50 + 79 + 129 + 87 + 135 + 123 + 128 + 123 + 129 + 93 + 86 + 79 + 87 + 86 + 86 + 86 + 79 + 86 + 129 + 172 + 130 + 207 + 172 + 214 + 208 + 172 + 129 + 166 + 171 + 166 + 165 + 135 + 202 + 172 + 129 + 129 + 122 + 87 + 86 + 129 + 128 + 123 + 128 + 135 + 166 + 129 + 129 + 129 + 166 + 129 + 129 + 92 + 122 + 86 + 123 + 86 + 86 + 86 + 122 + 86 + 86 + 86 + 80 + 50 + 86 + 86 + 122 + 87 + 129 + 166 + 172 + 172 + 166 + 136 + 172 + 165 + 165 + 136 + 165 + 129 + 122 + 123 + 93 + 158 + 123 + 129 + 122 + 122 + 116 + 87 + 122 + 85 + 87 + 122 + 86 + 86 + 86 + 86 + 44 + 85 + 44 + 86 + 85 + 44 + 86 + 7 + 37 + 6 + 1 + 43 + 43 + 1 + 43 + 44 + 43 + 43 + 7 + 36 + 43 + 1 + 43 + 43 + 43 + 43 + 43 + 50 + 43 + 44 + 85 + 50 + 123 + 93 + 129 + 130 + 93 + 129 + 123 + 129 + 129 + 136 + 159 + 129 + 94 + 165 + 129 + 129 + 129 + 130 + 93 + 165 + 93 + 165 + 130 + 171 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 208 + 215 + 209 + 172 + 171 + 166 + 178 + 208 + 172 + 209 + 214 + 215 + 209 + 172 + 86 + 85 + 80 + 49 + 80 + 86 + 123 + 135 + 129 + 165 + 93 + 130 + 128 + 123 + 87 + 85 + 86 + 87 + 86 + 86 + 86 + 44 + 128 + 130 + 166 + 214 + 208 + 179 + 208 + 209 + 171 + 208 + 179 + 208 + 214 + 172 + 166 + 172 + 165 + 129 + 172 + 129 + 123 + 92 + 122 + 123 + 129 + 92 + 159 + 129 + 86 + 122 + 93 + 165 + 129 + 123 + 128 + 129 + 86 + 123 + 86 + 128 + 93 + 123 + 122 + 43 + 43 + 86 + 44 + 123 + 93 + 129 + 129 + 166 + 135 + 166 + 172 + 172 + 165 + 136 + 165 + 129 + 165 + 130 + 122 + 93 + 122 + 159 + 123 + 165 + 122 + 122 + 87 + 122 + 122 + 80 + 86 + 49 + 80 + 50 + 79 + 87 + 85 + 50 + 86 + 44 + 79 + 50 + 43 + 43 + 44 + 43 + 43 + 50 + 43 + 80 + 7 + 43 + 43 + 1 + 37 + 0 + 43 + 1 + 36 + 7 + 43 + 43 + 44 + 43 + 43 + 43 + 50 + 86 + 87 + 129 + 86 + 129 + 93 + 123 + 129 + 129 + 130 + 129 + 166 + 129 + 129 + 136 + 129 + 129 + 166 + 135 + 166 + 135 + 166 + 129 + 171 + 136 + 166 + 172 + 172 + 172 + 208 + 136 + 208 + 173 + 214 + 215 + 166 + 128 + 166 + 172 + 214 + 173 + 172 + 208 + 214 + 179 + 202 + 86 + 85 + 43 + 44 + 79 + 50 + 123 + 93 + 172 + 165 + 136 + 129 + 166 + 87 + 128 + 87 + 86 + 122 + 87 + 86 + 86 + 86 + 87 + 171 + 172 + 208 + 179 + 209 + 214 + 208 + 173 + 208 + 215 + 215 + 208 + 179 + 207 + 130 + 165 + 128 + 123 + 129 + 129 + 172 + 129 + 165 + 123 + 128 + 87 + 122 + 92 + 122 + 80 + 86 + 86 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 128 + 116 + 50 + 43 + 43 + 80 + 86 + 129 + 93 + 165 + 130 + 130 + 172 + 172 + 166 + 173 + 165 + 136 + 165 + 129 + 123 + 93 + 122 + 123 + 165 + 123 + 158 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 79 + 43 + 44 + 79 + 43 + 86 + 50 + 80 + 49 + 80 + 43 + 14 + 37 + 6 + 43 + 1 + 44 + 49 + 80 + 50 + 44 + 79 + 50 + 37 + 6 + 37 + 7 + 37 + 6 + 37 + 44 + 49 + 80 + 43 + 50 + 44 + 93 + 86 + 87 + 129 + 86 + 87 + 92 + 123 + 129 + 136 + 165 + 130 + 171 + 130 + 166 + 135 + 130 + 129 + 165 + 136 + 129 + 172 + 171 + 130 + 171 + 130 + 172 + 172 + 172 + 208 + 171 + 173 + 208 + 208 + 172 + 171 + 130 + 172 + 208 + 172 + 172 + 165 + 129 + 172 + 215 + 172 + 165 + 79 + 50 + 43 + 80 + 86 + 92 + 124 + 171 + 130 + 172 + 129 + 166 + 129 + 93 + 129 + 86 + 87 + 122 + 87 + 86 + 87 + 129 + 172 + 208 + 214 + 173 + 208 + 178 + 209 + 215 + 215 + 209 + 214 + 208 + 215 + 215 + 166 + 129 + 129 + 129 + 164 + 166 + 135 + 166 + 171 + 166 + 129 + 129 + 129 + 122 + 122 + 93 + 86 + 122 + 129 + 129 + 123 + 128 + 123 + 135 + 123 + 86 + 122 + 86 + 43 + 43 + 86 + 80 + 86 + 92 + 123 + 92 + 166 + 129 + 172 + 172 + 165 + 172 + 166 + 130 + 129 + 165 + 129 + 122 + 87 + 123 + 122 + 165 + 123 + 122 + 129 + 123 + 122 + 87 + 122 + 86 + 86 + 43 + 43 + 80 + 49 + 43 + 44 + 43 + 85 + 44 + 79 + 50 + 44 + 43 + 7 + 43 + 0 + 43 + 8 + 43 + 37 + 42 + 7 + 37 + 43 + 50 + 79 + 44 + 86 + 86 + 93 + 86 + 86 + 86 + 50 + 87 + 86 + 129 + 123 + 93 + 87 + 93 + 123 + 130 + 171 + 130 + 172 + 171 + 130 + 166 + 135 + 130 + 165 + 130 + 135 + 129 + 166 + 135 + 165 + 130 + 135 + 172 + 166 + 171 + 173 + 208 + 178 + 208 + 173 + 172 + 165 + 171 + 173 + 172 + 208 + 129 + 129 + 123 + 128 + 172 + 215 + 208 + 172 + 122 + 87 + 85 + 86 + 87 + 86 + 129 + 130 + 166 + 135 + 166 + 130 + 171 + 130 + 123 + 86 + 93 + 129 + 122 + 87 + 86 + 129 + 130 + 172 + 172 + 208 + 172 + 215 + 172 + 215 + 215 + 215 + 172 + 215 + 208 + 172 + 165 + 93 + 129 + 166 + 171 + 208 + 130 + 165 + 172 + 171 + 166 + 171 + 135 + 159 + 129 + 129 + 129 + 128 + 123 + 129 + 165 + 129 + 93 + 158 + 87 + 128 + 80 + 85 + 44 + 79 + 50 + 80 + 92 + 87 + 122 + 129 + 130 + 129 + 172 + 167 + 135 + 166 + 173 + 165 + 129 + 165 + 94 + 122 + 87 + 86 + 123 + 122 + 123 + 128 + 123 + 122 + 87 + 122 + 129 + 86 + 86 + 80 + 49 + 80 + 43 + 50 + 43 + 43 + 37 + 6 + 43 + 7 + 43 + 1 + 43 + 44 + 50 + 85 + 44 + 43 + 7 + 43 + 1 + 36 + 7 + 37 + 7 + 36 + 43 + 44 + 44 + 85 + 87 + 86 + 86 + 87 + 92 + 129 + 87 + 92 + 123 + 93 + 86 + 86 + 123 + 130 + 135 + 166 + 129 + 129 + 130 + 129 + 172 + 129 + 165 + 136 + 165 + 136 + 165 + 130 + 135 + 165 + 136 + 172 + 209 + 214 + 209 + 178 + 209 + 171 + 166 + 172 + 208 + 179 + 165 + 86 + 86 + 165 + 165 + 172 + 215 + 209 + 135 + 129 + 122 + 44 + 86 + 86 + 123 + 86 + 130 + 129 + 173 + 129 + 172 + 129 + 166 + 129 + 87 + 86 + 130 + 165 + 93 + 86 + 86 + 129 + 129 + 130 + 165 + 179 + 215 + 172 + 209 + 178 + 215 + 208 + 172 + 179 + 201 + 130 + 135 + 165 + 172 + 172 + 172 + 208 + 173 + 165 + 172 + 172 + 165 + 136 + 165 + 165 + 129 + 129 + 128 + 123 + 86 + 129 + 129 + 164 + 129 + 129 + 122 + 86 + 43 + 80 + 43 + 44 + 86 + 86 + 122 + 87 + 129 + 123 + 136 + 166 + 172 + 166 + 172 + 166 + 136 + 165 + 129 + 123 + 122 + 93 + 116 + 87 + 123 + 86 + 123 + 87 + 93 + 87 + 87 + 86 + 129 + 86 + 86 + 122 + 50 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 37 + 6 + 8 + 43 + 43 + 44 + 43 + 7 + 43 + 43 + 44 + 37 + 43 + 44 + 85 + 44 + 86 + 122 + 93 + 123 + 93 + 129 + 87 + 129 + 129 + 93 + 130 + 129 + 86 + 93 + 123 + 93 + 165 + 130 + 172 + 135 + 130 + 129 + 123 + 86 + 171 + 130 + 129 + 171 + 130 + 171 + 130 + 135 + 166 + 172 + 214 + 209 + 215 + 172 + 209 + 172 + 172 + 208 + 214 + 215 + 172 + 172 + 123 + 43 + 165 + 178 + 209 + 208 + 215 + 129 + 166 + 86 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 171 + 166 + 136 + 165 + 136 + 166 + 93 + 122 + 129 + 130 + 129 + 129 + 129 + 129 + 87 + 86 + 129 + 171 + 172 + 165 + 179 + 172 + 172 + 172 + 172 + 129 + 165 + 130 + 171 + 208 + 172 + 166 + 172 + 172 + 172 + 171 + 165 + 130 + 171 + 129 + 166 + 166 + 135 + 129 + 123 + 165 + 93 + 165 + 129 + 165 + 129 + 129 + 122 + 50 + 79 + 44 + 43 + 85 + 44 + 86 + 80 + 93 + 86 + 129 + 129 + 166 + 135 + 166 + 165 + 172 + 131 + 171 + 165 + 123 + 93 + 122 + 87 + 122 + 87 + 123 + 80 + 92 + 80 + 50 + 87 + 122 + 129 + 93 + 122 + 87 + 86 + 85 + 43 + 43 + 43 + 43 + 43 + 43 + 8 + 36 + 7 + 1 + 43 + 43 + 7 + 1 + 42 + 1 + 43 + 1 + 42 + 1 + 37 + 7 + 43 + 79 + 86 + 87 + 92 + 130 + 129 + 87 + 129 + 136 + 129 + 129 + 130 + 129 + 86 + 86 + 86 + 86 + 87 + 86 + 123 + 86 + 129 + 123 + 93 + 129 + 123 + 135 + 166 + 136 + 165 + 136 + 165 + 136 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 173 + 208 + 214 + 215 + 173 + 208 + 135 + 123 + 165 + 136 + 208 + 172 + 208 + 173 + 171 + 129 + 86 + 80 + 86 + 86 + 129 + 129 + 124 + 129 + 135 + 172 + 167 + 172 + 129 + 172 + 129 + 87 + 165 + 136 + 166 + 172 + 172 + 129 + 86 + 49 + 80 + 50 + 87 + 171 + 129 + 136 + 172 + 171 + 172 + 172 + 166 + 172 + 207 + 172 + 173 + 208 + 172 + 214 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 166 + 129 + 172 + 123 + 128 + 123 + 129 + 128 + 130 + 129 + 164 + 87 + 122 + 80 + 43 + 49 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 93 + 166 + 129 + 166 + 135 + 166 + 129 + 172 + 123 + 129 + 129 + 122 + 80 + 87 + 50 + 80 + 87 + 80 + 51 + 86 + 51 + 86 + 122 + 87 + 128 + 87 + 86 + 85 + 44 + 43 + 43 + 43 + 43 + 43 + 43 + 43 + 7 + 43 + 44 + 43 + 7 + 37 + 43 + 7 + 37 + 0 + 43 + 0 + 43 + 1 + 43 + 80 + 86 + 93 + 123 + 136 + 129 + 129 + 129 + 93 + 130 + 129 + 130 + 93 + 87 + 85 + 80 + 50 + 86 + 86 + 87 + 86 + 87 + 86 + 129 + 129 + 129 + 129 + 172 + 173 + 172 + 171 + 172 + 130 + 171 + 129 + 172 + 166 + 172 + 172 + 208 + 215 + 215 + 215 + 215 + 208 + 166 + 128 + 129 + 172 + 208 + 209 + 178 + 172 + 166 + 172 + 165 + 86 + 79 + 87 + 92 + 123 + 129 + 129 + 129 + 130 + 172 + 172 + 172 + 165 + 172 + 130 + 92 + 123 + 136 + 173 + 172 + 166 + 129 + 50 + 43 + 44 + 86 + 92 + 166 + 136 + 172 + 215 + 179 + 208 + 172 + 215 + 208 + 173 + 214 + 172 + 209 + 214 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 165 + 136 + 172 + 166 + 165 + 86 + 122 + 93 + 128 + 166 + 129 + 122 + 129 + 86 + 79 + 43 + 44 + 85 + 80 + 86 + 86 + 87 + 86 + 129 + 130 + 129 + 165 + 136 + 166 + 165 + 136 + 159 + 135 + 159 + 93 + 122 + 80 + 50 + 80 + 51 + 79 + 51 + 44 + 51 + 44 + 86 + 79 + 86 + 86 + 86 + 86 + 86 + 43 + 43 + 43 + 43 + 80 + 43 + 50 + 7 + 43 + 43 + 80 + 50 + 44 + 43 + 43 + 7 + 37 + 43 + 43 + 44 + 43 + 86 + 86 + 86 + 129 + 130 + 172 + 129 + 136 + 172 + 130 + 136 + 165 + 130 + 135 + 130 + 93 + 122 + 87 + 86 + 86 + 80 + 50 + 80 + 123 + 92 + 166 + 172 + 136 + 171 + 172 + 166 + 171 + 129 + 136 + 129 + 129 + 123 + 136 + 165 + 172 + 214 + 209 + 214 + 215 + 173 + 214 + 209 + 129 + 129 + 165 + 172 + 172 + 215 + 208 + 165 + 136 + 172 + 166 + 128 + 80 + 87 + 129 + 129 + 129 + 130 + 130 + 171 + 166 + 178 + 166 + 173 + 130 + 171 + 129 + 87 + 166 + 135 + 130 + 165 + 93 + 43 + 43 + 43 + 44 + 92 + 136 + 172 + 172 + 215 + 215 + 215 + 178 + 215 + 209 + 214 + 209 + 215 + 214 + 173 + 214 + 209 + 208 + 172 + 129 + 172 + 165 + 130 + 171 + 165 + 130 + 129 + 128 + 123 + 129 + 122 + 129 + 86 + 122 + 93 + 79 + 86 + 80 + 49 + 86 + 80 + 86 + 86 + 86 + 93 + 123 + 129 + 130 + 165 + 136 + 165 + 130 + 129 + 165 + 129 + 130 + 122 + 86 + 80 + 86 + 44 + 80 + 51 + 50 + 81 + 14 + 51 + 79 + 44 + 43 + 86 + 79 + 86 + 50 + 79 + 44 + 49 + 43 + 43 + 44 + 85 + 44 + 43 + 86 + 86 + 87 + 86 + 50 + 86 + 44 + 43 + 86 + 44 + 123 + 129 + 93 + 165 + 130 + 171 + 172 + 173 + 172 + 172 + 130 + 172 + 135 + 172 + 130 + 129 + 130 + 129 + 129 + 86 + 129 + 86 + 44 + 86 + 122 + 136 + 166 + 172 + 129 + 135 + 130 + 129 + 123 + 128 + 93 + 129 + 123 + 128 + 130 + 129 + 171 + 173 + 208 + 215 + 172 + 208 + 172 + 172 + 208 + 179 + 208 + 129 + 172 + 166 + 171 + 209 + 171 + 166 + 172 + 172 + 129 + 43 + 129 + 129 + 130 + 172 + 165 + 172 + 129 + 173 + 172 + 172 + 172 + 172 + 173 + 165 + 136 + 123 + 129 + 93 + 129 + 123 + 86 + 49 + 50 + 43 + 86 + 136 + 172 + 173 + 178 + 215 + 215 + 215 + 215 + 209 + 214 + 209 + 215 + 214 + 209 + 215 + 208 + 178 + 208 + 129 + 129 + 165 + 166 + 136 + 164 + 129 + 129 + 129 + 123 + 128 + 123 + 86 + 122 + 92 + 86 + 80 + 86 + 79 + 87 + 86 + 50 + 86 + 80 + 92 + 123 + 86 + 129 + 130 + 129 + 165 + 131 + 171 + 130 + 123 + 129 + 123 + 93 + 116 + 86 + 86 + 45 + 52 + 49 + 81 + 51 + 50 + 45 + 43 + 50 + 86 + 86 + 80 + 85 + 44 + 49 + 43 + 37 + 43 + 85 + 44 + 43 + 43 + 44 + 86 + 87 + 92 + 123 + 92 + 123 + 93 + 122 + 93 + 123 + 136 + 165 + 172 + 172 + 173 + 172 + 173 + 172 + 172 + 209 + 172 + 172 + 137 + 171 + 130 + 130 + 135 + 165 + 136 + 129 + 129 + 166 + 135 + 166 + 172 + 136 + 165 + 129 + 136 + 123 + 92 + 122 + 86 + 130 + 171 + 136 + 165 + 129 + 136 + 129 + 165 + 130 + 214 + 215 + 172 + 172 + 173 + 172 + 208 + 179 + 208 + 172 + 165 + 136 + 166 + 171 + 130 + 129 + 129 + 165 + 129 + 130 + 129 + 172 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 179 + 172 + 208 + 173 + 209 + 172 + 171 + 87 + 128 + 130 + 122 + 129 + 86 + 1 + 43 + 129 + 129 + 172 + 178 + 209 + 178 + 209 + 215 + 215 + 209 + 215 + 214 + 209 + 215 + 179 + 208 + 208 + 215 + 172 + 172 + 165 + 165 + 136 + 165 + 172 + 172 + 123 + 128 + 123 + 128 + 87 + 122 + 92 + 123 + 79 + 50 + 79 + 79 + 50 + 80 + 50 + 80 + 86 + 86 + 86 + 87 + 129 + 129 + 129 + 130 + 130 + 130 + 129 + 94 + 123 + 129 + 88 + 86 + 87 + 51 + 81 + 50 + 9 + 50 + 51 + 45 + 50 + 43 + 43 + 37 + 7 + 43 + 80 + 86 + 49 + 80 + 43 + 44 + 85 + 44 + 86 + 44 + 86 + 86 + 129 + 129 + 129 + 130 + 129 + 136 + 166 + 129 + 172 + 172 + 173 + 209 + 172 + 179 + 173 + 208 + 173 + 178 + 173 + 172 + 172 + 167 + 136 + 165 + 129 + 130 + 172 + 215 + 172 + 172 + 172 + 129 + 172 + 129 + 129 + 87 + 129 + 122 + 129 + 130 + 129 + 135 + 129 + 166 + 136 + 165 + 129 + 129 + 93 + 129 + 165 + 172 + 136 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 135 + 123 + 129 + 87 + 86 + 86 + 129 + 87 + 129 + 129 + 171 + 166 + 179 + 172 + 165 + 136 + 129 + 172 + 172 + 209 + 214 + 172 + 172 + 172 + 172 + 166 + 128 + 123 + 172 + 129 + 171 + 87 + 43 + 36 + 43 + 87 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 208 + 178 + 209 + 172 + 172 + 208 + 215 + 172 + 215 + 172 + 208 + 172 + 215 + 172 + 166 + 172 + 171 + 166 + 128 + 129 + 129 + 123 + 122 + 86 + 86 + 79 + 86 + 43 + 43 + 86 + 80 + 49 + 80 + 86 + 87 + 86 + 129 + 87 + 129 + 130 + 129 + 93 + 130 + 93 + 129 + 88 + 86 + 87 + 87 + 87 + 51 + 51 + 45 + 50 + 15 + 45 + 50 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 43 + 43 + 1 + 80 + 49 + 81 + 86 + 86 + 92 + 123 + 130 + 171 + 131 + 172 + 172 + 172 + 171 + 173 + 209 + 173 + 214 + 173 + 215 + 209 + 178 + 209 + 173 + 178 + 209 + 172 + 173 + 171 + 166 + 136 + 165 + 130 + 136 + 129 + 166 + 135 + 166 + 129 + 135 + 129 + 130 + 129 + 165 + 93 + 129 + 166 + 178 + 172 + 172 + 172 + 165 + 136 + 122 + 93 + 129 + 86 + 129 + 129 + 130 + 165 + 135 + 172 + 172 + 166 + 172 + 171 + 130 + 135 + 130 + 123 + 122 + 86 + 50 + 80 + 44 + 43 + 86 + 123 + 135 + 172 + 172 + 172 + 129 + 165 + 136 + 166 + 172 + 178 + 172 + 172 + 165 + 166 + 129 + 165 + 93 + 165 + 172 + 172 + 171 + 129 + 80 + 43 + 43 + 43 + 43 + 43 + 80 + 85 + 43 + 80 + 43 + 85 + 80 + 43 + 123 + 128 + 129 + 130 + 165 + 165 + 172 + 172 + 172 + 208 + 173 + 172 + 171 + 172 + 166 + 171 + 165 + 129 + 86 + 123 + 85 + 50 + 79 + 80 + 85 + 44 + 121 + 50 + 80 + 50 + 79 + 87 + 92 + 123 + 129 + 123 + 129 + 93 + 93 + 94 + 123 + 87 + 93 + 87 + 88 + 51 + 80 + 51 + 50 + 45 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 0 + 43 + 43 + 80 + 43 + 50 + 79 + 43 + 43 + 43 + 50 + 123 + 93 + 166 + 129 + 215 + 172 + 209 + 179 + 209 + 215 + 179 + 214 + 209 + 179 + 209 + 214 + 179 + 209 + 172 + 173 + 172 + 178 + 166 + 172 + 129 + 129 + 130 + 129 + 129 + 129 + 166 + 135 + 172 + 172 + 166 + 171 + 136 + 172 + 172 + 172 + 166 + 178 + 172 + 172 + 173 + 172 + 171 + 172 + 172 + 135 + 165 + 171 + 129 + 87 + 87 + 128 + 130 + 171 + 129 + 129 + 130 + 129 + 129 + 129 + 129 + 86 + 86 + 44 + 79 + 8 + 79 + 86 + 87 + 135 + 165 + 172 + 172 + 130 + 135 + 166 + 129 + 129 + 129 + 130 + 129 + 128 + 165 + 129 + 129 + 123 + 86 + 92 + 202 + 215 + 172 + 208 + 129 + 165 + 86 + 86 + 86 + 79 + 86 + 86 + 86 + 79 + 86 + 80 + 85 + 86 + 86 + 80 + 85 + 86 + 80 + 129 + 129 + 165 + 172 + 171 + 173 + 172 + 207 + 172 + 166 + 172 + 171 + 129 + 123 + 86 + 79 + 86 + 43 + 86 + 122 + 86 + 86 + 86 + 80 + 86 + 44 + 86 + 87 + 86 + 122 + 88 + 92 + 87 + 93 + 87 + 86 + 87 + 51 + 87 + 45 + 87 + 51 + 51 + 45 + 50 + 51 + 45 + 50 + 51 + 45 + 7 + 42 + 37 + 7 + 36 + 1 + 43 + 43 + 44 + 43 + 43 + 80 + 86 + 86 + 129 + 136 + 209 + 173 + 172 + 215 + 215 + 173 + 215 + 215 + 209 + 179 + 215 + 209 + 172 + 179 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 130 + 129 + 86 + 93 + 122 + 130 + 129 + 166 + 172 + 178 + 172 + 172 + 172 + 165 + 172 + 172 + 172 + 172 + 136 + 171 + 166 + 136 + 165 + 135 + 166 + 135 + 166 + 136 + 172 + 128 + 123 + 92 + 87 + 122 + 93 + 122 + 93 + 129 + 129 + 122 + 93 + 123 + 86 + 87 + 128 + 86 + 44 + 86 + 86 + 130 + 171 + 172 + 173 + 171 + 123 + 93 + 165 + 93 + 123 + 128 + 87 + 128 + 129 + 123 + 129 + 129 + 122 + 86 + 86 + 129 + 208 + 173 + 172 + 208 + 178 + 166 + 171 + 123 + 171 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 165 + 166 + 135 + 123 + 128 + 123 + 129 + 165 + 135 + 166 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 129 + 86 + 86 + 86 + 80 + 122 + 86 + 86 + 129 + 86 + 86 + 80 + 50 + 80 + 50 + 79 + 87 + 86 + 129 + 123 + 93 + 86 + 51 + 87 + 44 + 51 + 87 + 44 + 86 + 51 + 45 + 50 + 9 + 51 + 50 + 45 + 51 + 50 + 43 + 43 + 1 + 43 + 0 + 43 + 37 + 7 + 37 + 6 + 37 + 43 + 50 + 86 + 129 + 166 + 172 + 179 + 208 + 173 + 215 + 215 + 209 + 215 + 215 + 215 + 179 + 209 + 214 + 173 + 173 + 208 + 172 + 136 + 166 + 172 + 130 + 129 + 129 + 86 + 80 + 86 + 92 + 123 + 136 + 172 + 208 + 179 + 209 + 178 + 172 + 208 + 173 + 172 + 172 + 135 + 172 + 172 + 165 + 136 + 165 + 136 + 166 + 172 + 172 + 135 + 166 + 135 + 130 + 164 + 93 + 122 + 86 + 93 + 129 + 129 + 130 + 129 + 166 + 172 + 129 + 129 + 86 + 37 + 50 + 122 + 172 + 179 + 172 + 214 + 130 + 86 + 123 + 92 + 123 + 86 + 93 + 128 + 123 + 129 + 129 + 129 + 165 + 129 + 80 + 85 + 86 + 129 + 208 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 173 + 207 + 172 + 172 + 165 + 172 + 172 + 172 + 166 + 171 + 166 + 135 + 129 + 130 + 158 + 129 + 130 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 172 + 123 + 128 + 86 + 123 + 86 + 122 + 128 + 87 + 129 + 86 + 86 + 122 + 50 + 80 + 86 + 43 + 87 + 128 + 129 + 87 + 93 + 123 + 50 + 80 + 44 + 49 + 51 + 81 + 50 + 15 + 81 + 51 + 14 + 45 + 51 + 50 + 45 + 51 + 43 + 43 + 43 + 43 + 43 + 37 + 7 + 36 + 7 + 37 + 6 + 37 + 86 + 87 + 165 + 137 + 208 + 179 + 209 + 215 + 215 + 172 + 215 + 215 + 209 + 179 + 209 + 179 + 172 + 209 + 172 + 173 + 172 + 172 + 165 + 136 + 172 + 130 + 122 + 50 + 80 + 49 + 80 + 86 + 87 + 171 + 172 + 173 + 178 + 209 + 178 + 209 + 172 + 172 + 171 + 130 + 172 + 214 + 173 + 214 + 172 + 173 + 172 + 178 + 209 + 172 + 178 + 172 + 173 + 172 + 171 + 129 + 166 + 171 + 173 + 178 + 172 + 209 + 179 + 208 + 172 + 130 + 86 + 44 + 43 + 129 + 172 + 172 + 215 + 215 + 86 + 80 + 93 + 122 + 92 + 86 + 86 + 122 + 93 + 123 + 128 + 129 + 165 + 87 + 129 + 122 + 43 + 86 + 129 + 165 + 172 + 172 + 165 + 172 + 208 + 173 + 208 + 178 + 208 + 172 + 208 + 172 + 171 + 166 + 172 + 129 + 172 + 165 + 166 + 171 + 172 + 130 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 135 + 165 + 129 + 123 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 129 + 123 + 86 + 86 + 50 + 80 + 86 + 86 + 129 + 123 + 130 + 86 + 44 + 43 + 44 + 50 + 45 + 51 + 87 + 52 + 45 + 50 + 51 + 45 + 51 + 44 + 51 + 14 + 45 + 43 + 86 + 43 + 43 + 37 + 43 + 7 + 37 + 0 + 43 + 7 + 79 + 44 + 129 + 129 + 172 + 209 + 179 + 209 + 215 + 214 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 173 + 172 + 173 + 166 + 171 + 172 + 172 + 131 + 171 + 166 + 93 + 80 + 86 + 43 + 86 + 86 + 123 + 172 + 172 + 178 + 173 + 208 + 179 + 172 + 172 + 166 + 135 + 172 + 215 + 172 + 172 + 208 + 179 + 208 + 172 + 179 + 172 + 208 + 179 + 172 + 208 + 172 + 172 + 173 + 178 + 208 + 215 + 179 + 209 + 215 + 215 + 165 + 130 + 129 + 86 + 7 + 44 + 129 + 208 + 215 + 179 + 172 + 86 + 86 + 87 + 128 + 123 + 93 + 86 + 122 + 128 + 86 + 123 + 129 + 165 + 129 + 129 + 122 + 86 + 43 + 86 + 122 + 129 + 129 + 166 + 135 + 166 + 208 + 178 + 209 + 172 + 215 + 208 + 173 + 208 + 172 + 214 + 172 + 209 + 172 + 214 + 166 + 136 + 207 + 166 + 179 + 208 + 172 + 172 + 165 + 172 + 129 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 172 + 165 + 129 + 123 + 86 + 86 + 44 + 86 + 79 + 93 + 129 + 129 + 124 + 86 + 43 + 44 + 43 + 1 + 44 + 86 + 50 + 45 + 51 + 51 + 51 + 51 + 44 + 51 + 15 + 44 + 51 + 45 + 49 + 80 + 49 + 80 + 43 + 1 + 43 + 43 + 43 + 37 + 7 + 44 + 86 + 123 + 171 + 173 + 173 + 215 + 215 + 208 + 179 + 215 + 209 + 215 + 179 + 209 + 215 + 172 + 172 + 166 + 172 + 135 + 172 + 173 + 165 + 136 + 130 + 165 + 92 + 87 + 122 + 93 + 123 + 129 + 87 + 135 + 165 + 172 + 172 + 173 + 172 + 172 + 135 + 166 + 172 + 172 + 172 + 172 + 178 + 172 + 172 + 173 + 208 + 178 + 173 + 208 + 179 + 214 + 173 + 214 + 172 + 172 + 172 + 172 + 215 + 209 + 215 + 215 + 173 + 215 + 165 + 87 + 86 + 86 + 123 + 172 + 178 + 215 + 209 + 86 + 86 + 92 + 123 + 128 + 130 + 129 + 86 + 128 + 87 + 128 + 87 + 122 + 129 + 165 + 129 + 172 + 86 + 86 + 80 + 128 + 123 + 129 + 171 + 130 + 165 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 209 + 214 + 172 + 208 + 166 + 178 + 172 + 172 + 208 + 172 + 172 + 165 + 172 + 172 + 166 + 207 + 172 + 130 + 171 + 172 + 166 + 171 + 172 + 165 + 172 + 165 + 93 + 86 + 79 + 43 + 44 + 123 + 129 + 130 + 171 + 87 + 86 + 37 + 43 + 44 + 43 + 44 + 51 + 44 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 8 + 51 + 50 + 80 + 50 + 80 + 49 + 44 + 79 + 37 + 7 + 43 + 37 + 43 + 50 + 86 + 123 + 172 + 172 + 215 + 173 + 215 + 215 + 173 + 215 + 215 + 172 + 215 + 173 + 215 + 173 + 172 + 172 + 166 + 173 + 172 + 129 + 130 + 129 + 129 + 166 + 129 + 130 + 129 + 129 + 87 + 86 + 85 + 87 + 129 + 172 + 166 + 178 + 129 + 166 + 135 + 172 + 172 + 171 + 130 + 172 + 172 + 172 + 172 + 172 + 172 + 214 + 172 + 215 + 173 + 214 + 173 + 214 + 172 + 172 + 173 + 214 + 215 + 209 + 215 + 179 + 209 + 129 + 129 + 44 + 86 + 172 + 172 + 215 + 173 + 214 + 130 + 86 + 86 + 129 + 129 + 129 + 129 + 87 + 128 + 80 + 86 + 128 + 87 + 128 + 129 + 130 + 158 + 136 + 122 + 86 + 86 + 129 + 123 + 129 + 129 + 165 + 129 + 171 + 130 + 171 + 166 + 208 + 172 + 172 + 208 + 179 + 215 + 209 + 214 + 172 + 166 + 172 + 208 + 171 + 173 + 214 + 172 + 208 + 172 + 172 + 172 + 166 + 172 + 172 + 165 + 179 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 44 + 43 + 80 + 86 + 92 + 130 + 167 + 171 + 129 + 44 + 79 + 37 + 43 + 44 + 50 + 87 + 44 + 15 + 51 + 51 + 52 + 51 + 51 + 51 + 51 + 44 + 51 + 51 + 43 + 80 + 49 + 80 + 49 + 43 + 44 + 37 + 43 + 43 + 43 + 80 + 92 + 130 + 172 + 172 + 209 + 215 + 179 + 215 + 209 + 179 + 215 + 208 + 179 + 209 + 172 + 172 + 172 + 172 + 172 + 165 + 173 + 136 + 172 + 130 + 165 + 136 + 129 + 123 + 92 + 124 + 86 + 50 + 79 + 93 + 129 + 164 + 172 + 136 + 172 + 172 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 208 + 173 + 214 + 172 + 209 + 179 + 215 + 214 + 179 + 208 + 173 + 171 + 87 + 86 + 86 + 123 + 129 + 129 + 166 + 172 + 172 + 172 + 93 + 85 + 123 + 129 + 129 + 129 + 86 + 129 + 86 + 86 + 122 + 86 + 92 + 123 + 129 + 129 + 122 + 129 + 129 + 86 + 123 + 128 + 129 + 129 + 123 + 129 + 129 + 171 + 130 + 165 + 129 + 129 + 165 + 172 + 172 + 209 + 172 + 208 + 172 + 172 + 178 + 202 + 172 + 172 + 172 + 208 + 172 + 208 + 214 + 209 + 172 + 172 + 171 + 166 + 172 + 208 + 172 + 208 + 172 + 136 + 165 + 129 + 123 + 85 + 44 + 85 + 81 + 129 + 172 + 130 + 129 + 171 + 80 + 80 + 7 + 43 + 43 + 81 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 80 + 49 + 44 + 80 + 43 + 44 + 43 + 43 + 44 + 85 + 87 + 172 + 172 + 173 + 215 + 179 + 209 + 215 + 179 + 209 + 215 + 179 + 209 + 179 + 172 + 173 + 171 + 167 + 135 + 130 + 172 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 87 + 129 + 123 + 86 + 86 + 93 + 123 + 129 + 135 + 172 + 129 + 172 + 209 + 172 + 172 + 171 + 136 + 172 + 166 + 172 + 172 + 178 + 166 + 172 + 172 + 178 + 172 + 209 + 214 + 173 + 215 + 215 + 215 + 214 + 130 + 122 + 86 + 123 + 128 + 129 + 166 + 173 + 171 + 130 + 136 + 165 + 172 + 123 + 92 + 86 + 130 + 128 + 123 + 129 + 92 + 87 + 86 + 128 + 86 + 86 + 80 + 128 + 87 + 165 + 92 + 123 + 129 + 129 + 129 + 129 + 129 + 123 + 165 + 129 + 165 + 135 + 165 + 130 + 165 + 129 + 128 + 166 + 172 + 208 + 208 + 178 + 209 + 208 + 172 + 208 + 130 + 207 + 172 + 209 + 172 + 208 + 171 + 209 + 214 + 173 + 172 + 201 + 172 + 208 + 172 + 172 + 172 + 202 + 129 + 128 + 80 + 86 + 43 + 86 + 122 + 130 + 172 + 172 + 129 + 165 + 86 + 1 + 43 + 37 + 86 + 8 + 86 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 51 + 86 + 87 + 86 + 50 + 86 + 43 + 43 + 44 + 43 + 8 + 49 + 87 + 129 + 166 + 178 + 173 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 215 + 173 + 215 + 137 + 208 + 136 + 167 + 135 + 130 + 130 + 135 + 130 + 93 + 94 + 129 + 93 + 87 + 87 + 130 + 86 + 86 + 86 + 87 + 128 + 129 + 130 + 171 + 136 + 172 + 173 + 165 + 136 + 165 + 130 + 135 + 172 + 166 + 171 + 172 + 171 + 172 + 172 + 172 + 209 + 178 + 209 + 214 + 209 + 135 + 123 + 122 + 129 + 86 + 172 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 123 + 129 + 129 + 122 + 93 + 123 + 129 + 135 + 87 + 128 + 123 + 86 + 50 + 79 + 93 + 122 + 86 + 86 + 129 + 129 + 129 + 87 + 129 + 129 + 165 + 171 + 166 + 136 + 171 + 166 + 165 + 171 + 166 + 135 + 165 + 130 + 165 + 208 + 172 + 209 + 214 + 172 + 202 + 172 + 208 + 165 + 129 + 129 + 165 + 208 + 172 + 171 + 166 + 165 + 172 + 172 + 165 + 208 + 172 + 172 + 172 + 208 + 172 + 208 + 129 + 122 + 44 + 79 + 86 + 86 + 123 + 135 + 172 + 166 + 165 + 136 + 43 + 37 + 42 + 43 + 44 + 80 + 50 + 52 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 43 + 44 + 79 + 44 + 49 + 44 + 50 + 80 + 50 + 86 + 86 + 129 + 136 + 166 + 179 + 209 + 179 + 179 + 209 + 178 + 215 + 173 + 215 + 172 + 215 + 173 + 179 + 172 + 166 + 136 + 136 + 166 + 129 + 136 + 94 + 130 + 130 + 136 + 93 + 87 + 87 + 86 + 87 + 87 + 86 + 86 + 86 + 86 + 129 + 93 + 165 + 172 + 172 + 129 + 129 + 166 + 135 + 172 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 208 + 178 + 209 + 172 + 165 + 129 + 123 + 92 + 123 + 171 + 166 + 172 + 172 + 171 + 172 + 166 + 171 + 166 + 129 + 123 + 128 + 93 + 165 + 129 + 135 + 129 + 165 + 93 + 122 + 86 + 87 + 49 + 80 + 86 + 92 + 86 + 92 + 123 + 86 + 172 + 129 + 129 + 129 + 129 + 166 + 171 + 172 + 172 + 172 + 166 + 171 + 172 + 165 + 129 + 165 + 166 + 172 + 207 + 172 + 209 + 215 + 215 + 208 + 165 + 172 + 128 + 159 + 129 + 172 + 208 + 172 + 202 + 172 + 171 + 166 + 171 + 166 + 172 + 208 + 171 + 166 + 172 + 165 + 123 + 122 + 43 + 79 + 86 + 129 + 129 + 165 + 172 + 166 + 129 + 165 + 43 + 43 + 43 + 43 + 44 + 87 + 44 + 51 + 87 + 51 + 51 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 45 + 85 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 43 + 43 + 50 + 87 + 135 + 173 + 172 + 173 + 215 + 172 + 179 + 215 + 173 + 179 + 173 + 214 + 173 + 179 + 172 + 172 + 136 + 166 + 135 + 130 + 172 + 94 + 135 + 131 + 136 + 93 + 129 + 87 + 93 + 86 + 88 + 128 + 87 + 86 + 86 + 79 + 50 + 86 + 123 + 128 + 93 + 130 + 165 + 135 + 166 + 172 + 135 + 172 + 172 + 172 + 173 + 214 + 173 + 172 + 171 + 130 + 122 + 86 + 86 + 165 + 166 + 172 + 171 + 130 + 171 + 172 + 208 + 172 + 173 + 172 + 172 + 165 + 171 + 130 + 165 + 136 + 172 + 172 + 165 + 136 + 122 + 87 + 128 + 86 + 86 + 44 + 86 + 86 + 86 + 128 + 87 + 92 + 165 + 93 + 129 + 164 + 130 + 165 + 172 + 172 + 166 + 172 + 171 + 130 + 171 + 166 + 129 + 128 + 165 + 166 + 172 + 208 + 129 + 208 + 208 + 172 + 208 + 172 + 166 + 171 + 166 + 171 + 209 + 208 + 208 + 172 + 214 + 166 + 208 + 172 + 202 + 135 + 165 + 166 + 128 + 165 + 87 + 79 + 43 + 79 + 92 + 123 + 165 + 130 + 171 + 129 + 166 + 129 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 50 + 51 + 87 + 51 + 51 + 15 + 51 + 51 + 51 + 51 + 51 + 45 + 86 + 43 + 43 + 50 + 43 + 44 + 86 + 43 + 44 + 50 + 86 + 87 + 129 + 136 + 172 + 172 + 173 + 179 + 173 + 208 + 179 + 173 + 178 + 209 + 179 + 172 + 172 + 172 + 130 + 136 + 130 + 171 + 130 + 136 + 130 + 100 + 129 + 94 + 130 + 92 + 88 + 86 + 87 + 129 + 123 + 92 + 86 + 86 + 87 + 122 + 93 + 129 + 165 + 130 + 135 + 172 + 166 + 172 + 172 + 214 + 172 + 179 + 209 + 178 + 171 + 166 + 86 + 122 + 87 + 171 + 172 + 208 + 208 + 172 + 172 + 172 + 208 + 172 + 171 + 166 + 172 + 171 + 166 + 136 + 208 + 172 + 171 + 172 + 209 + 172 + 136 + 165 + 92 + 86 + 87 + 86 + 86 + 80 + 86 + 49 + 80 + 86 + 93 + 122 + 93 + 122 + 93 + 129 + 123 + 171 + 166 + 172 + 171 + 208 + 136 + 166 + 171 + 165 + 129 + 166 + 165 + 172 + 208 + 172 + 208 + 208 + 165 + 136 + 208 + 208 + 172 + 165 + 166 + 171 + 166 + 172 + 208 + 171 + 202 + 172 + 172 + 165 + 129 + 165 + 208 + 129 + 165 + 123 + 86 + 79 + 79 + 86 + 86 + 129 + 165 + 129 + 166 + 135 + 165 + 123 + 43 + 43 + 43 + 43 + 80 + 50 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 51 + 51 + 51 + 51 + 50 + 43 + 44 + 43 + 43 + 49 + 44 + 43 + 44 + 43 + 43 + 86 + 93 + 129 + 166 + 178 + 172 + 173 + 172 + 215 + 173 + 178 + 173 + 179 + 208 + 173 + 172 + 136 + 172 + 130 + 130 + 135 + 130 + 136 + 136 + 130 + 94 + 129 + 94 + 86 + 87 + 86 + 88 + 92 + 123 + 129 + 93 + 86 + 79 + 50 + 122 + 93 + 123 + 135 + 165 + 172 + 135 + 208 + 173 + 178 + 215 + 208 + 172 + 172 + 130 + 171 + 172 + 130 + 171 + 166 + 214 + 209 + 215 + 172 + 172 + 172 + 208 + 172 + 208 + 172 + 172 + 166 + 172 + 208 + 178 + 209 + 215 + 172 + 178 + 208 + 172 + 123 + 93 + 86 + 86 + 122 + 43 + 86 + 50 + 79 + 43 + 50 + 122 + 86 + 129 + 93 + 122 + 50 + 80 + 128 + 129 + 166 + 172 + 208 + 172 + 165 + 136 + 171 + 166 + 165 + 165 + 165 + 136 + 165 + 172 + 208 + 209 + 207 + 166 + 214 + 166 + 172 + 165 + 166 + 171 + 172 + 208 + 202 + 172 + 171 + 166 + 165 + 122 + 123 + 129 + 165 + 123 + 122 + 85 + 43 + 80 + 122 + 86 + 129 + 129 + 129 + 165 + 166 + 171 + 86 + 43 + 43 + 79 + 44 + 43 + 87 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 45 + 49 + 43 + 44 + 43 + 50 + 43 + 44 + 43 + 50 + 43 + 80 + 50 + 86 + 93 + 87 + 172 + 136 + 172 + 136 + 172 + 173 + 172 + 173 + 208 + 179 + 166 + 136 + 172 + 172 + 172 + 136 + 172 + 130 + 135 + 172 + 94 + 136 + 94 + 123 + 94 + 86 + 87 + 86 + 87 + 129 + 129 + 129 + 87 + 128 + 92 + 86 + 86 + 86 + 87 + 165 + 136 + 172 + 172 + 215 + 215 + 173 + 178 + 172 + 172 + 209 + 172 + 214 + 208 + 173 + 214 + 208 + 172 + 208 + 172 + 172 + 215 + 172 + 172 + 166 + 172 + 214 + 208 + 215 + 215 + 208 + 179 + 209 + 214 + 209 + 172 + 135 + 86 + 86 + 93 + 80 + 86 + 86 + 49 + 123 + 49 + 43 + 122 + 93 + 86 + 79 + 93 + 123 + 86 + 86 + 92 + 166 + 128 + 173 + 171 + 166 + 172 + 165 + 172 + 165 + 129 + 165 + 172 + 208 + 166 + 172 + 165 + 208 + 172 + 208 + 208 + 172 + 208 + 166 + 171 + 166 + 207 + 172 + 166 + 171 + 166 + 122 + 129 + 165 + 129 + 123 + 122 + 116 + 49 + 79 + 79 + 80 + 92 + 123 + 129 + 129 + 122 + 172 + 172 + 129 + 79 + 80 + 49 + 43 + 80 + 50 + 87 + 86 + 50 + 52 + 51 + 51 + 51 + 51 + 51 + 87 + 51 + 51 + 51 + 51 + 43 + 43 + 44 + 43 + 43 + 80 + 50 + 43 + 43 + 44 + 86 + 50 + 86 + 129 + 130 + 135 + 167 + 136 + 172 + 136 + 172 + 173 + 172 + 179 + 172 + 172 + 172 + 137 + 166 + 136 + 171 + 130 + 137 + 130 + 172 + 101 + 130 + 99 + 123 + 93 + 87 + 51 + 86 + 122 + 129 + 130 + 129 + 171 + 130 + 129 + 129 + 86 + 86 + 128 + 129 + 130 + 172 + 208 + 179 + 209 + 214 + 215 + 172 + 215 + 209 + 178 + 172 + 172 + 166 + 172 + 208 + 214 + 173 + 208 + 172 + 214 + 173 + 208 + 172 + 201 + 172 + 215 + 173 + 214 + 215 + 208 + 179 + 209 + 214 + 173 + 135 + 122 + 86 + 86 + 50 + 86 + 122 + 44 + 86 + 86 + 86 + 43 + 86 + 87 + 122 + 93 + 122 + 50 + 43 + 122 + 129 + 123 + 171 + 172 + 172 + 172 + 165 + 172 + 129 + 159 + 171 + 165 + 166 + 171 + 172 + 209 + 207 + 130 + 165 + 171 + 166 + 172 + 207 + 209 + 208 + 172 + 165 + 165 + 166 + 171 + 129 + 165 + 129 + 159 + 122 + 87 + 86 + 79 + 79 + 79 + 43 + 123 + 128 + 87 + 122 + 129 + 171 + 129 + 123 + 43 + 79 + 43 + 86 + 44 + 86 + 86 + 87 + 51 + 56 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 51 + 51 + 52 + 36 + 43 + 7 + 43 + 43 + 44 + 79 + 50 + 44 + 50 + 86 + 87 + 86 + 129 + 136 + 130 + 136 + 171 + 167 + 172 + 178 + 173 + 172 + 179 + 173 + 173 + 172 + 172 + 172 + 172 + 130 + 171 + 136 + 173 + 136 + 136 + 130 + 136 + 87 + 130 + 86 + 50 + 86 + 87 + 86 + 129 + 166 + 135 + 172 + 172 + 129 + 129 + 129 + 128 + 129 + 129 + 173 + 178 + 209 + 214 + 173 + 215 + 215 + 215 + 179 + 208 + 214 + 172 + 209 + 172 + 208 + 172 + 172 + 172 + 172 + 215 + 172 + 165 + 172 + 172 + 208 + 173 + 214 + 215 + 208 + 215 + 209 + 178 + 215 + 172 + 166 + 93 + 122 + 86 + 86 + 86 + 50 + 85 + 129 + 86 + 44 + 86 + 86 + 85 + 86 + 129 + 129 + 86 + 43 + 79 + 86 + 129 + 166 + 172 + 172 + 172 + 165 + 172 + 122 + 129 + 166 + 165 + 129 + 171 + 202 + 214 + 166 + 172 + 208 + 165 + 172 + 165 + 172 + 208 + 165 + 172 + 166 + 171 + 165 + 129 + 208 + 123 + 129 + 165 + 122 + 86 + 116 + 86 + 43 + 86 + 122 + 86 + 123 + 128 + 130 + 129 + 165 + 129 + 122 + 50 + 79 + 44 + 85 + 44 + 122 + 93 + 51 + 51 + 93 + 51 + 51 + 87 + 50 + 51 + 51 + 86 + 51 + 51 + 86 + 7 + 36 + 7 + 37 + 7 + 43 + 44 + 85 + 44 + 43 + 87 + 50 + 128 + 124 + 135 + 130 + 136 + 129 + 172 + 136 + 173 + 215 + 172 + 179 + 172 + 172 + 173 + 172 + 172 + 173 + 172 + 172 + 179 + 173 + 142 + 173 + 136 + 130 + 129 + 94 + 86 + 51 + 86 + 80 + 86 + 129 + 172 + 172 + 172 + 179 + 166 + 171 + 130 + 129 + 129 + 171 + 172 + 172 + 172 + 209 + 178 + 215 + 209 + 178 + 215 + 209 + 178 + 208 + 173 + 208 + 178 + 166 + 208 + 172 + 214 + 209 + 172 + 172 + 165 + 172 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 172 + 215 + 172 + 129 + 129 + 86 + 87 + 86 + 91 + 123 + 43 + 129 + 86 + 43 + 80 + 86 + 50 + 122 + 92 + 123 + 93 + 86 + 79 + 86 + 80 + 135 + 208 + 171 + 166 + 172 + 129 + 165 + 129 + 123 + 165 + 165 + 129 + 171 + 166 + 172 + 208 + 165 + 172 + 166 + 207 + 130 + 171 + 202 + 171 + 129 + 165 + 165 + 130 + 171 + 159 + 129 + 123 + 164 + 86 + 87 + 116 + 86 + 122 + 86 + 122 + 93 + 122 + 165 + 136 + 165 + 129 + 122 + 44 + 85 + 80 + 85 + 87 + 86 + 93 + 87 + 51 + 86 + 57 + 51 + 87 + 51 + 51 + 86 + 87 + 51 + 87 + 51 + 43 + 7 + 36 + 7 + 43 + 37 + 7 + 50 + 44 + 43 + 86 + 50 + 86 + 123 + 93 + 166 + 135 + 130 + 136 + 172 + 215 + 172 + 215 + 173 + 179 + 172 + 172 + 179 + 172 + 172 + 179 + 215 + 215 + 215 + 179 + 131 + 100 + 165 + 100 + 131 + 86 + 86 + 44 + 86 + 44 + 128 + 130 + 171 + 130 + 172 + 136 + 165 + 130 + 171 + 129 + 172 + 172 + 172 + 172 + 208 + 179 + 215 + 172 + 215 + 172 + 215 + 208 + 179 + 208 + 172 + 166 + 172 + 214 + 209 + 178 + 208 + 172 + 166 + 172 + 171 + 173 + 208 + 215 + 208 + 215 + 208 + 179 + 172 + 215 + 171 + 129 + 87 + 85 + 86 + 87 + 129 + 129 + 86 + 80 + 86 + 43 + 43 + 50 + 86 + 123 + 128 + 93 + 129 + 86 + 79 + 43 + 43 + 129 + 166 + 171 + 166 + 172 + 165 + 129 + 165 + 129 + 159 + 129 + 165 + 129 + 165 + 165 + 135 + 202 + 172 + 165 + 172 + 165 + 172 + 208 + 165 + 123 + 129 + 165 + 165 + 130 + 171 + 123 + 128 + 86 + 123 + 122 + 122 + 87 + 165 + 123 + 92 + 123 + 129 + 164 + 130 + 129 + 128 + 87 + 85 + 80 + 86 + 87 + 122 + 87 + 50 + 128 + 51 + 87 + 57 + 87 + 51 + 93 + 87 + 51 + 87 + 93 + 87 + 93 + 43 + 1 + 43 + 43 + 1 + 43 + 43 + 43 + 44 + 43 + 14 + 80 + 86 + 93 + 93 + 130 + 130 + 130 + 171 + 172 + 179 + 173 + 215 + 173 + 178 + 173 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 129 + 130 + 172 + 129 + 129 + 87 + 43 + 44 + 86 + 86 + 129 + 136 + 172 + 166 + 214 + 172 + 215 + 172 + 179 + 215 + 208 + 173 + 214 + 209 + 215 + 215 + 208 + 214 + 173 + 214 + 209 + 172 + 172 + 214 + 166 + 172 + 214 + 172 + 209 + 172 + 172 + 165 + 172 + 166 + 171 + 215 + 172 + 215 + 209 + 215 + 208 + 178 + 209 + 135 + 123 + 86 + 86 + 93 + 122 + 129 + 129 + 93 + 80 + 49 + 43 + 79 + 50 + 80 + 86 + 129 + 171 + 129 + 86 + 43 + 43 + 79 + 44 + 171 + 166 + 171 + 166 + 171 + 166 + 129 + 129 + 122 + 130 + 165 + 165 + 166 + 171 + 129 + 166 + 171 + 165 + 165 + 130 + 207 + 172 + 202 + 135 + 166 + 122 + 129 + 166 + 165 + 128 + 87 + 122 + 122 + 87 + 128 + 123 + 165 + 129 + 129 + 129 + 129 + 129 + 129 + 165 + 86 + 44 + 86 + 86 + 86 + 123 + 86 + 86 + 87 + 57 + 87 + 93 + 87 + 93 + 93 + 87 + 93 + 87 + 130 + 86 + 94 + 93 + 79 + 43 + 43 + 7 + 37 + 43 + 7 + 43 + 44 + 43 + 50 + 86 + 44 + 129 + 87 + 130 + 135 + 167 + 172 + 173 + 178 + 215 + 172 + 215 + 179 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 86 + 122 + 130 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 166 + 172 + 172 + 178 + 172 + 215 + 208 + 172 + 215 + 214 + 209 + 178 + 208 + 215 + 209 + 215 + 172 + 215 + 172 + 208 + 172 + 209 + 171 + 172 + 172 + 209 + 172 + 208 + 214 + 166 + 172 + 172 + 172 + 172 + 172 + 208 + 215 + 208 + 215 + 215 + 172 + 172 + 129 + 129 + 86 + 86 + 87 + 128 + 129 + 129 + 87 + 128 + 80 + 43 + 79 + 86 + 85 + 87 + 129 + 172 + 159 + 128 + 50 + 79 + 37 + 43 + 128 + 129 + 166 + 172 + 135 + 166 + 135 + 159 + 93 + 122 + 129 + 166 + 135 + 166 + 172 + 171 + 166 + 165 + 172 + 129 + 166 + 135 + 166 + 171 + 129 + 160 + 129 + 129 + 129 + 165 + 129 + 86 + 122 + 93 + 122 + 129 + 129 + 123 + 128 + 87 + 129 + 129 + 171 + 123 + 92 + 80 + 86 + 86 + 86 + 93 + 86 + 87 + 86 + 86 + 93 + 87 + 129 + 93 + 130 + 129 + 129 + 93 + 129 + 129 + 93 + 130 + 79 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 8 + 43 + 50 + 86 + 87 + 93 + 123 + 136 + 130 + 172 + 172 + 173 + 179 + 179 + 214 + 209 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 7 + 43 + 87 + 165 + 172 + 172 + 86 + 43 + 49 + 87 + 122 + 136 + 165 + 178 + 173 + 172 + 208 + 179 + 208 + 215 + 208 + 215 + 208 + 215 + 179 + 209 + 215 + 214 + 208 + 209 + 178 + 172 + 166 + 172 + 208 + 178 + 209 + 172 + 172 + 172 + 208 + 172 + 166 + 171 + 172 + 209 + 214 + 215 + 209 + 214 + 172 + 172 + 129 + 87 + 85 + 87 + 128 + 130 + 129 + 135 + 166 + 122 + 86 + 86 + 79 + 86 + 43 + 122 + 129 + 172 + 129 + 172 + 80 + 42 + 37 + 43 + 43 + 129 + 165 + 172 + 165 + 129 + 172 + 166 + 128 + 129 + 166 + 165 + 171 + 130 + 129 + 208 + 136 + 166 + 171 + 166 + 129 + 129 + 165 + 130 + 128 + 123 + 129 + 171 + 129 + 165 + 87 + 79 + 128 + 87 + 129 + 122 + 129 + 129 + 123 + 93 + 171 + 129 + 130 + 128 + 86 + 80 + 86 + 86 + 93 + 86 + 86 + 87 + 92 + 123 + 129 + 130 + 129 + 136 + 130 + 130 + 135 + 130 + 130 + 136 + 129 + 129 + 44 + 85 + 80 + 50 + 43 + 43 + 44 + 36 + 44 + 50 + 50 + 50 + 87 + 129 + 130 + 131 + 171 + 137 + 171 + 173 + 172 + 215 + 179 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 93 + 43 + 79 + 50 + 123 + 178 + 172 + 129 + 86 + 80 + 43 + 86 + 129 + 136 + 208 + 172 + 172 + 179 + 208 + 179 + 208 + 208 + 179 + 209 + 214 + 214 + 209 + 178 + 208 + 173 + 208 + 214 + 166 + 172 + 172 + 208 + 179 + 208 + 208 + 172 + 172 + 172 + 172 + 208 + 130 + 171 + 209 + 208 + 179 + 208 + 215 + 172 + 172 + 172 + 86 + 86 + 80 + 135 + 129 + 166 + 171 + 136 + 122 + 86 + 86 + 79 + 43 + 86 + 86 + 123 + 171 + 166 + 172 + 85 + 37 + 43 + 0 + 80 + 129 + 129 + 129 + 171 + 130 + 129 + 164 + 130 + 123 + 128 + 172 + 172 + 166 + 129 + 165 + 129 + 172 + 129 + 166 + 171 + 130 + 171 + 130 + 165 + 128 + 123 + 129 + 129 + 129 + 80 + 86 + 128 + 86 + 165 + 129 + 129 + 129 + 165 + 129 + 171 + 129 + 87 + 86 + 49 + 80 + 86 + 93 + 87 + 122 + 93 + 86 + 87 + 129 + 129 + 136 + 129 + 136 + 129 + 130 + 172 + 129 + 130 + 136 + 129 + 129 + 86 + 44 + 86 + 86 + 44 + 79 + 44 + 49 + 8 + 43 + 49 + 86 + 94 + 129 + 130 + 129 + 172 + 172 + 130 + 171 + 136 + 178 + 209 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 86 + 43 + 43 + 43 + 86 + 166 + 178 + 136 + 129 + 86 + 43 + 79 + 86 + 93 + 165 + 130 + 178 + 172 + 209 + 171 + 208 + 173 + 208 + 178 + 209 + 208 + 179 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 208 + 209 + 178 + 209 + 172 + 171 + 172 + 166 + 172 + 172 + 129 + 165 + 172 + 215 + 209 + 214 + 173 + 214 + 173 + 165 + 93 + 79 + 50 + 129 + 166 + 172 + 172 + 171 + 87 + 86 + 122 + 43 + 79 + 86 + 86 + 129 + 165 + 172 + 166 + 92 + 80 + 42 + 37 + 43 + 86 + 129 + 165 + 123 + 129 + 128 + 87 + 171 + 208 + 129 + 123 + 172 + 172 + 129 + 165 + 93 + 165 + 172 + 166 + 171 + 166 + 135 + 166 + 172 + 165 + 123 + 92 + 123 + 128 + 123 + 86 + 129 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 135 + 129 + 86 + 86 + 86 + 87 + 122 + 93 + 129 + 86 + 87 + 92 + 130 + 129 + 130 + 135 + 130 + 130 + 129 + 166 + 135 + 129 + 130 + 129 + 130 + 129 + 86 + 87 + 92 + 80 + 49 + 80 + 43 + 44 + 49 + 44 + 50 + 87 + 92 + 125 + 99 + 129 + 166 + 136 + 130 + 135 + 130 + 171 + 142 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 43 + 43 + 43 + 43 + 50 + 122 + 172 + 178 + 172 + 130 + 85 + 80 + 49 + 44 + 86 + 129 + 172 + 165 + 136 + 172 + 165 + 172 + 209 + 178 + 208 + 208 + 215 + 172 + 208 + 179 + 171 + 202 + 172 + 172 + 215 + 209 + 172 + 208 + 178 + 208 + 172 + 166 + 129 + 165 + 93 + 171 + 209 + 172 + 214 + 209 + 215 + 172 + 172 + 165 + 92 + 44 + 85 + 130 + 135 + 165 + 136 + 166 + 128 + 87 + 122 + 86 + 79 + 49 + 87 + 165 + 129 + 171 + 165 + 129 + 86 + 79 + 1 + 43 + 43 + 122 + 129 + 86 + 86 + 123 + 128 + 123 + 135 + 166 + 171 + 130 + 165 + 171 + 123 + 135 + 166 + 171 + 130 + 165 + 172 + 129 + 172 + 166 + 170 + 123 + 129 + 86 + 122 + 86 + 86 + 129 + 123 + 128 + 129 + 166 + 129 + 171 + 130 + 135 + 123 + 85 + 51 + 86 + 122 + 129 + 87 + 129 + 129 + 86 + 93 + 93 + 129 + 129 + 130 + 129 + 172 + 129 + 93 + 130 + 172 + 93 + 130 + 129 + 136 + 122 + 129 + 86 + 123 + 49 + 80 + 50 + 43 + 44 + 50 + 44 + 86 + 50 + 93 + 123 + 129 + 129 + 129 + 129 + 93 + 136 + 165 + 136 + 172 + 172 + 172 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 43 + 43 + 43 + 87 + 172 + 172 + 178 + 172 + 166 + 86 + 43 + 0 + 80 + 92 + 166 + 135 + 129 + 172 + 166 + 214 + 172 + 172 + 209 + 215 + 172 + 208 + 172 + 172 + 209 + 172 + 172 + 208 + 178 + 208 + 173 + 171 + 173 + 208 + 171 + 166 + 172 + 129 + 129 + 165 + 172 + 166 + 214 + 172 + 173 + 214 + 172 + 129 + 44 + 85 + 87 + 129 + 172 + 171 + 129 + 129 + 123 + 128 + 87 + 85 + 86 + 79 + 87 + 165 + 86 + 172 + 129 + 129 + 122 + 122 + 7 + 37 + 42 + 80 + 86 + 86 + 122 + 86 + 122 + 129 + 129 + 172 + 165 + 166 + 171 + 130 + 129 + 165 + 129 + 165 + 129 + 129 + 172 + 172 + 202 + 135 + 172 + 123 + 128 + 123 + 92 + 129 + 165 + 129 + 165 + 129 + 166 + 171 + 178 + 166 + 135 + 123 + 86 + 86 + 50 + 122 + 92 + 123 + 93 + 128 + 87 + 128 + 87 + 129 + 130 + 93 + 136 + 165 + 136 + 130 + 129 + 172 + 130 + 136 + 135 + 166 + 136 + 86 + 129 + 123 + 86 + 86 + 86 + 43 + 50 + 43 + 44 + 49 + 44 + 51 + 86 + 86 + 87 + 92 + 129 + 93 + 86 + 134 + 93 + 129 + 136 + 171 + 130 + 141 + 171 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 129 + 43 + 44 + 85 + 43 + 43 + 86 + 129 + 173 + 208 + 171 + 136 + 123 + 85 + 50 + 44 + 86 + 128 + 130 + 129 + 166 + 172 + 208 + 171 + 172 + 172 + 209 + 172 + 208 + 179 + 208 + 172 + 208 + 165 + 178 + 173 + 208 + 172 + 172 + 202 + 172 + 171 + 172 + 130 + 165 + 129 + 129 + 165 + 172 + 136 + 201 + 173 + 171 + 136 + 123 + 49 + 86 + 86 + 166 + 172 + 135 + 123 + 129 + 87 + 128 + 122 + 44 + 86 + 79 + 86 + 122 + 92 + 129 + 166 + 128 + 129 + 123 + 43 + 42 + 37 + 86 + 43 + 86 + 79 + 43 + 85 + 123 + 123 + 128 + 130 + 171 + 129 + 129 + 165 + 130 + 171 + 166 + 129 + 129 + 129 + 165 + 172 + 166 + 171 + 129 + 130 + 128 + 165 + 123 + 129 + 129 + 129 + 165 + 130 + 172 + 171 + 172 + 129 + 86 + 123 + 86 + 91 + 87 + 129 + 129 + 92 + 87 + 86 + 93 + 87 + 128 + 129 + 130 + 129 + 172 + 130 + 136 + 172 + 129 + 173 + 135 + 172 + 166 + 136 + 128 + 87 + 129 + 86 + 86 + 86 + 44 + 44 + 49 + 44 + 44 + 50 + 49 + 80 + 50 + 87 + 85 + 93 + 86 + 91 + 87 + 92 + 128 + 129 + 135 + 129 + 134 + 135 + 134 + 171 + 178 + 215 + 215 + 215 + 215 + 129 + 43 + 86 + 44 + 85 + 44 + 43 + 92 + 166 + 172 + 172 + 172 + 129 + 92 + 86 + 80 + 49 + 86 + 129 + 129 + 165 + 172 + 166 + 172 + 135 + 166 + 172 + 171 + 208 + 172 + 209 + 172 + 172 + 171 + 166 + 172 + 214 + 173 + 208 + 172 + 165 + 172 + 172 + 166 + 129 + 129 + 129 + 165 + 129 + 129 + 165 + 172 + 129 + 129 + 86 + 43 + 92 + 123 + 129 + 171 + 130 + 122 + 86 + 86 + 86 + 122 + 86 + 86 + 43 + 86 + 122 + 86 + 129 + 165 + 172 + 123 + 129 + 85 + 43 + 1 + 79 + 43 + 79 + 86 + 43 + 80 + 128 + 129 + 129 + 129 + 129 + 165 + 129 + 166 + 129 + 172 + 165 + 165 + 129 + 130 + 171 + 129 + 166 + 172 + 165 + 171 + 129 + 166 + 172 + 129 + 165 + 129 + 129 + 165 + 172 + 172 + 129 + 129 + 86 + 87 + 129 + 128 + 87 + 129 + 129 + 86 + 129 + 44 + 86 + 86 + 87 + 93 + 171 + 130 + 136 + 172 + 172 + 137 + 172 + 172 + 130 + 173 + 171 + 136 + 129 + 129 + 86 + 123 + 86 + 50 + 86 + 44 + 50 + 43 + 44 + 50 + 49 + 79 + 50 + 49 + 80 + 86 + 50 + 86 + 91 + 86 + 92 + 91 + 92 + 91 + 128 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 129 + 49 + 80 + 50 + 85 + 44 + 79 + 86 + 129 + 172 + 172 + 172 + 129 + 129 + 86 + 50 + 79 + 86 + 93 + 123 + 128 + 166 + 172 + 172 + 129 + 165 + 129 + 136 + 165 + 208 + 172 + 166 + 136 + 171 + 209 + 172 + 208 + 172 + 208 + 172 + 165 + 172 + 166 + 171 + 130 + 129 + 128 + 166 + 129 + 122 + 129 + 136 + 122 + 129 + 86 + 7 + 86 + 123 + 128 + 172 + 130 + 85 + 50 + 79 + 86 + 79 + 44 + 122 + 86 + 86 + 86 + 85 + 80 + 172 + 172 + 165 + 129 + 86 + 79 + 37 + 43 + 42 + 43 + 80 + 85 + 87 + 122 + 129 + 129 + 165 + 129 + 172 + 129 + 172 + 129 + 165 + 136 + 172 + 166 + 171 + 208 + 172 + 166 + 135 + 172 + 166 + 165 + 135 + 166 + 208 + 129 + 171 + 130 + 165 + 172 + 172 + 129 + 86 + 86 + 123 + 92 + 130 + 129 + 129 + 129 + 129 + 86 + 44 + 49 + 86 + 87 + 129 + 130 + 172 + 136 + 173 + 173 + 172 + 178 + 172 + 173 + 172 + 173 + 173 + 165 + 93 + 122 + 87 + 86 + 86 + 86 + 50 + 80 + 7 + 50 + 44 + 50 + 80 + 49 + 50 + 85 + 50 + 86 + 91 + 49 + 92 + 86 + 92 + 91 + 128 + 91 + 97 + 128 + 140 + 177 + 215 + 214 + 215 + 215 + 172 + 79 + 86 + 50 + 86 + 86 + 44 + 85 + 123 + 136 + 172 + 171 + 166 + 129 + 92 + 87 + 86 + 86 + 122 + 93 + 165 + 172 + 172 + 165 + 130 + 128 + 166 + 171 + 166 + 136 + 171 + 166 + 171 + 166 + 178 + 209 + 129 + 172 + 172 + 172 + 208 + 165 + 172 + 136 + 165 + 129 + 165 + 128 + 123 + 86 + 129 + 128 + 87 + 86 + 86 + 43 + 86 + 129 + 130 + 129 + 171 + 87 + 86 + 86 + 79 + 86 + 36 + 86 + 86 + 86 + 122 + 86 + 80 + 171 + 172 + 129 + 129 + 123 + 86 + 43 + 86 + 43 + 43 + 79 + 79 + 87 + 122 + 86 + 129 + 128 + 166 + 172 + 165 + 135 + 166 + 129 + 171 + 208 + 166 + 172 + 172 + 171 + 172 + 166 + 172 + 172 + 172 + 165 + 129 + 172 + 129 + 165 + 172 + 171 + 130 + 129 + 122 + 92 + 123 + 86 + 129 + 129 + 129 + 136 + 129 + 129 + 86 + 92 + 87 + 87 + 129 + 129 + 172 + 136 + 172 + 173 + 172 + 173 + 178 + 173 + 173 + 178 + 173 + 172 + 129 + 129 + 123 + 86 + 87 + 86 + 86 + 86 + 44 + 49 + 8 + 43 + 50 + 86 + 86 + 49 + 86 + 86 + 56 + 85 + 92 + 85 + 55 + 86 + 91 + 127 + 98 + 134 + 97 + 171 + 177 + 214 + 215 + 215 + 215 + 172 + 86 + 86 + 50 + 79 + 87 + 85 + 86 + 87 + 129 + 172 + 172 + 172 + 171 + 87 + 129 + 92 + 87 + 128 + 123 + 172 + 171 + 172 + 165 + 129 + 130 + 165 + 172 + 172 + 172 + 201 + 172 + 136 + 165 + 172 + 208 + 166 + 172 + 135 + 166 + 214 + 166 + 172 + 165 + 129 + 129 + 171 + 87 + 85 + 80 + 93 + 122 + 86 + 86 + 86 + 43 + 129 + 129 + 165 + 130 + 135 + 123 + 86 + 122 + 86 + 86 + 79 + 86 + 86 + 122 + 86 + 129 + 80 + 129 + 135 + 165 + 129 + 165 + 87 + 86 + 85 + 80 + 43 + 86 + 79 + 86 + 86 + 129 + 122 + 129 + 129 + 166 + 171 + 130 + 171 + 166 + 171 + 172 + 166 + 129 + 172 + 207 + 172 + 166 + 172 + 208 + 172 + 171 + 172 + 172 + 165 + 166 + 171 + 130 + 129 + 122 + 93 + 86 + 129 + 86 + 129 + 129 + 135 + 130 + 171 + 129 + 130 + 93 + 130 + 130 + 129 + 172 + 172 + 137 + 172 + 172 + 173 + 215 + 173 + 208 + 179 + 173 + 208 + 179 + 129 + 123 + 92 + 87 + 122 + 86 + 86 + 44 + 49 + 44 + 7 + 44 + 50 + 92 + 50 + 85 + 50 + 85 + 55 + 85 + 92 + 49 + 85 + 55 + 92 + 127 + 98 + 133 + 141 + 140 + 178 + 214 + 215 + 214 + 215 + 172 + 129 + 86 + 86 + 86 + 86 + 86 + 50 + 86 + 122 + 136 + 172 + 172 + 165 + 130 + 129 + 128 + 87 + 128 + 129 + 172 + 165 + 130 + 171 + 172 + 166 + 165 + 172 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 172 + 172 + 165 + 136 + 165 + 172 + 130 + 165 + 135 + 123 + 50 + 79 + 86 + 50 + 80 + 85 + 86 + 86 + 123 + 128 + 129 + 129 + 165 + 129 + 86 + 129 + 122 + 129 + 80 + 86 + 85 + 86 + 86 + 123 + 129 + 79 + 87 + 170 + 129 + 166 + 129 + 165 + 129 + 86 + 122 + 86 + 86 + 86 + 79 + 129 + 122 + 93 + 129 + 159 + 135 + 166 + 172 + 165 + 129 + 172 + 208 + 172 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 122 + 172 + 172 + 208 + 129 + 123 + 86 + 92 + 87 + 129 + 93 + 165 + 129 + 136 + 172 + 172 + 172 + 137 + 172 + 136 + 166 + 136 + 173 + 136 + 173 + 178 + 173 + 179 + 215 + 173 + 215 + 173 + 173 + 214 + 173 + 129 + 129 + 123 + 122 + 86 + 51 + 85 + 44 + 44 + 43 + 7 + 50 + 49 + 86 + 92 + 50 + 85 + 50 + 85 + 56 + 85 + 49 + 92 + 49 + 91 + 134 + 134 + 140 + 140 + 135 + 177 + 214 + 215 + 215 + 215 + 215 + 172 + 86 + 129 + 86 + 86 + 50 + 86 + 79 + 87 + 129 + 171 + 172 + 129 + 129 + 172 + 129 + 129 + 129 + 129 + 130 + 165 + 135 + 166 + 172 + 165 + 129 + 172 + 166 + 172 + 172 + 207 + 166 + 135 + 208 + 166 + 172 + 172 + 165 + 136 + 165 + 172 + 129 + 129 + 129 + 123 + 92 + 80 + 43 + 49 + 44 + 79 + 86 + 86 + 129 + 122 + 172 + 123 + 128 + 172 + 129 + 86 + 123 + 122 + 92 + 80 + 86 + 43 + 79 + 86 + 122 + 93 + 79 + 86 + 129 + 159 + 135 + 166 + 129 + 128 + 129 + 123 + 85 + 87 + 122 + 85 + 87 + 122 + 86 + 129 + 165 + 129 + 172 + 172 + 165 + 129 + 208 + 172 + 172 + 172 + 172 + 208 + 166 + 171 + 172 + 208 + 172 + 166 + 171 + 166 + 172 + 172 + 129 + 165 + 87 + 128 + 129 + 94 + 129 + 165 + 137 + 172 + 179 + 214 + 173 + 179 + 173 + 215 + 179 + 173 + 173 + 143 + 172 + 173 + 209 + 179 + 173 + 215 + 173 + 215 + 173 + 179 + 172 + 209 + 93 + 129 + 122 + 123 + 86 + 50 + 80 + 49 + 7 + 43 + 8 + 44 + 49 + 86 + 92 + 49 + 86 + 49 + 50 + 49 + 85 + 49 + 55 + 85 + 129 + 134 + 135 + 141 + 141 + 177 + 177 + 214 + 215 + 215 + 215 + 215 + 215 + 129 + 86 + 92 + 86 + 86 + 86 + 44 + 122 + 86 + 93 + 172 + 172 + 172 + 129 + 166 + 129 + 135 + 129 + 129 + 165 + 130 + 165 + 172 + 129 + 172 + 165 + 172 + 171 + 172 + 166 + 171 + 166 + 172 + 171 + 172 + 166 + 129 + 165 + 136 + 172 + 123 + 129 + 129 + 92 + 86 + 86 + 80 + 49 + 43 + 44 + 122 + 129 + 129 + 129 + 164 + 130 + 86 + 129 + 122 + 86 + 123 + 86 + 122 + 86 + 43 + 43 + 43 + 86 + 165 + 86 + 79 + 86 + 86 + 123 + 92 + 165 + 129 + 165 + 129 + 129 + 80 + 86 + 122 + 86 + 86 + 122 + 93 + 165 + 171 + 166 + 172 + 129 + 171 + 166 + 172 + 172 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 172 + 173 + 208 + 214 + 173 + 172 + 171 + 123 + 129 + 122 + 93 + 129 + 130 + 135 + 173 + 215 + 173 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 173 + 179 + 173 + 179 + 209 + 179 + 215 + 173 + 173 + 215 + 173 + 173 + 179 + 86 + 123 + 86 + 122 + 86 + 50 + 86 + 43 + 7 + 37 + 8 + 49 + 87 + 50 + 92 + 86 + 50 + 50 + 85 + 49 + 49 + 85 + 56 + 128 + 128 + 136 + 135 + 177 + 141 + 178 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 93 + 123 + 128 + 87 + 86 + 86 + 85 + 86 + 87 + 172 + 172 + 172 + 171 + 130 + 165 + 93 + 129 + 165 + 129 + 129 + 172 + 165 + 136 + 202 + 171 + 172 + 166 + 135 + 172 + 166 + 171 + 166 + 129 + 172 + 172 + 165 + 165 + 130 + 171 + 130 + 128 + 130 + 128 + 87 + 86 + 86 + 49 + 80 + 86 + 129 + 129 + 123 + 128 + 165 + 130 + 86 + 122 + 86 + 85 + 123 + 86 + 86 + 86 + 86 + 79 + 37 + 86 + 128 + 123 + 49 + 79 + 86 + 123 + 86 + 93 + 165 + 122 + 129 + 129 + 86 + 79 + 87 + 122 + 92 + 165 + 123 + 172 + 129 + 172 + 172 + 165 + 172 + 166 + 171 + 172 + 208 + 173 + 214 + 172 + 208 + 172 + 173 + 208 + 214 + 215 + 166 + 172 + 171 + 129 + 129 + 123 + 129 + 122 + 93 + 136 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 179 + 173 + 215 + 179 + 173 + 179 + 209 + 179 + 172 + 173 + 86 + 86 + 79 + 51 + 122 + 87 + 49 + 44 + 43 + 0 + 8 + 50 + 85 + 87 + 49 + 87 + 49 + 50 + 91 + 49 + 49 + 85 + 92 + 129 + 136 + 135 + 177 + 136 + 178 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 171 + 129 + 87 + 129 + 86 + 86 + 86 + 86 + 129 + 130 + 172 + 172 + 171 + 130 + 128 + 93 + 165 + 165 + 136 + 165 + 129 + 172 + 207 + 173 + 171 + 166 + 135 + 172 + 166 + 172 + 165 + 129 + 171 + 130 + 172 + 165 + 129 + 166 + 135 + 130 + 128 + 86 + 93 + 86 + 86 + 80 + 49 + 123 + 129 + 129 + 165 + 135 + 166 + 122 + 93 + 122 + 43 + 86 + 86 + 122 + 129 + 79 + 86 + 87 + 42 + 43 + 80 + 86 + 86 + 79 + 86 + 165 + 86 + 129 + 166 + 92 + 122 + 123 + 86 + 85 + 87 + 122 + 129 + 129 + 165 + 136 + 165 + 172 + 172 + 208 + 172 + 172 + 172 + 165 + 172 + 215 + 172 + 208 + 165 + 172 + 130 + 171 + 172 + 166 + 135 + 130 + 129 + 129 + 123 + 128 + 129 + 130 + 171 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 173 + 179 + 215 + 173 + 215 + 173 + 179 + 173 + 172 + 179 + 173 + 79 + 43 + 44 + 79 + 93 + 122 + 50 + 80 + 7 + 43 + 7 + 50 + 51 + 86 + 87 + 50 + 85 + 92 + 50 + 86 + 92 + 49 + 129 + 134 + 136 + 136 + 172 + 141 + 142 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 92 + 123 + 86 + 128 + 87 + 129 + 129 + 215 + 165 + 136 + 122 + 93 + 165 + 172 + 166 + 171 + 129 + 166 + 135 + 172 + 166 + 171 + 208 + 130 + 165 + 172 + 165 + 129 + 166 + 171 + 136 + 164 + 129 + 166 + 135 + 130 + 122 + 92 + 86 + 86 + 86 + 44 + 86 + 122 + 136 + 165 + 129 + 207 + 130 + 165 + 92 + 123 + 43 + 79 + 86 + 86 + 165 + 50 + 122 + 86 + 79 + 43 + 86 + 86 + 43 + 79 + 86 + 166 + 129 + 129 + 129 + 165 + 122 + 93 + 79 + 86 + 165 + 129 + 129 + 129 + 129 + 166 + 129 + 172 + 208 + 172 + 172 + 208 + 172 + 172 + 166 + 172 + 172 + 172 + 165 + 135 + 129 + 165 + 130 + 93 + 165 + 129 + 129 + 87 + 129 + 129 + 129 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 179 + 173 + 179 + 173 + 173 + 179 + 173 + 43 + 42 + 38 + 49 + 122 + 87 + 86 + 86 + 50 + 2 + 49 + 43 + 50 + 86 + 93 + 50 + 86 + 50 + 92 + 86 + 92 + 86 + 129 + 135 + 130 + 177 + 136 + 135 + 142 + 141 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 92 + 129 + 123 + 92 + 87 + 128 + 129 + 172 + 172 + 172 + 129 + 172 + 166 + 171 + 172 + 166 + 129 + 165 + 136 + 165 + 172 + 172 + 172 + 165 + 172 + 129 + 172 + 129 + 165 + 130 + 165 + 135 + 165 + 129 + 123 + 93 + 86 + 79 + 86 + 86 + 43 + 86 + 86 + 87 + 129 + 165 + 129 + 172 + 171 + 166 + 86 + 122 + 43 + 43 + 86 + 122 + 129 + 80 + 49 + 86 + 80 + 43 + 79 + 86 + 79 + 43 + 79 + 166 + 135 + 123 + 171 + 129 + 123 + 129 + 86 + 129 + 165 + 129 + 129 + 129 + 165 + 129 + 165 + 172 + 166 + 178 + 202 + 172 + 171 + 172 + 172 + 172 + 202 + 171 + 130 + 165 + 129 + 93 + 128 + 87 + 128 + 93 + 122 + 93 + 129 + 129 + 129 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 215 + 173 + 179 + 179 + 173 + 179 + 173 + 179 + 173 + 137 + 173 + 42 + 37 + 43 + 49 + 80 + 93 + 86 + 86 + 44 + 50 + 43 + 7 + 87 + 86 + 51 + 86 + 50 + 87 + 92 + 86 + 93 + 92 + 92 + 130 + 171 + 136 + 135 + 141 + 136 + 177 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 129 + 129 + 129 + 86 + 129 + 86 + 93 + 129 + 165 + 172 + 171 + 173 + 171 + 172 + 129 + 166 + 171 + 166 + 135 + 166 + 172 + 172 + 172 + 201 + 172 + 166 + 171 + 129 + 129 + 129 + 166 + 165 + 93 + 129 + 128 + 123 + 93 + 79 + 50 + 43 + 86 + 44 + 85 + 129 + 123 + 129 + 129 + 171 + 166 + 128 + 122 + 87 + 85 + 43 + 43 + 122 + 123 + 49 + 37 + 79 + 49 + 44 + 79 + 43 + 86 + 79 + 44 + 128 + 129 + 123 + 135 + 123 + 122 + 129 + 129 + 128 + 130 + 165 + 129 + 129 + 165 + 129 + 129 + 172 + 208 + 172 + 172 + 172 + 172 + 166 + 171 + 166 + 172 + 165 + 135 + 123 + 130 + 128 + 129 + 87 + 92 + 129 + 86 + 129 + 93 + 172 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 215 + 137 + 179 + 173 + 173 + 136 + 179 + 173 + 137 + 137 + 79 + 7 + 37 + 79 + 50 + 86 + 86 + 87 + 44 + 49 + 44 + 7 + 50 + 86 + 93 + 86 + 50 + 86 + 87 + 55 + 87 + 128 + 100 + 129 + 172 + 135 + 177 + 135 + 135 + 142 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 128 + 129 + 123 + 93 + 122 + 93 + 165 + 136 + 165 + 172 + 136 + 165 + 129 + 165 + 130 + 171 + 166 + 172 + 172 + 171 + 208 + 172 + 166 + 135 + 166 + 171 + 130 + 122 + 172 + 165 + 129 + 129 + 129 + 129 + 129 + 80 + 50 + 85 + 44 + 79 + 50 + 129 + 129 + 166 + 128 + 129 + 129 + 129 + 80 + 122 + 86 + 43 + 43 + 86 + 122 + 43 + 43 + 1 + 79 + 43 + 79 + 43 + 86 + 79 + 44 + 86 + 122 + 128 + 129 + 86 + 123 + 129 + 165 + 129 + 129 + 129 + 123 + 92 + 165 + 123 + 171 + 172 + 166 + 172 + 171 + 172 + 208 + 130 + 171 + 166 + 135 + 166 + 129 + 129 + 129 + 92 + 123 + 92 + 130 + 129 + 93 + 135 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 173 + 215 + 179 + 173 + 173 + 179 + 137 + 172 + 173 + 137 + 136 + 137 + 136 + 137 + 79 + 36 + 7 + 43 + 79 + 44 + 92 + 81 + 49 + 44 + 50 + 44 + 86 + 87 + 51 + 86 + 50 + 92 + 87 + 56 + 122 + 93 + 134 + 136 + 171 + 136 + 177 + 135 + 99 + 178 + 177 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 135 + 166 + 129 + 93 + 129 + 122 + 129 + 129 + 129 + 129 + 136 + 172 + 166 + 171 + 172 + 165 + 130 + 171 + 166 + 172 + 172 + 208 + 172 + 172 + 172 + 172 + 165 + 172 + 129 + 165 + 136 + 165 + 129 + 166 + 92 + 129 + 123 + 92 + 85 + 80 + 50 + 86 + 79 + 87 + 129 + 170 + 123 + 129 + 129 + 129 + 122 + 80 + 49 + 79 + 44 + 85 + 79 + 43 + 43 + 37 + 42 + 44 + 43 + 42 + 80 + 79 + 50 + 79 + 86 + 80 + 86 + 122 + 93 + 165 + 135 + 123 + 165 + 86 + 122 + 129 + 129 + 129 + 166 + 171 + 172 + 165 + 172 + 172 + 172 + 130 + 171 + 166 + 129 + 171 + 123 + 129 + 129 + 86 + 93 + 86 + 165 + 135 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 215 + 173 + 173 + 179 + 172 + 173 + 143 + 130 + 173 + 136 + 137 + 136 + 130 + 100 + 79 + 43 + 1 + 43 + 80 + 49 + 87 + 86 + 44 + 50 + 43 + 50 + 51 + 86 + 87 + 50 + 86 + 87 + 56 + 122 + 93 + 93 + 129 + 172 + 135 + 172 + 135 + 141 + 135 + 135 + 178 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 166 + 129 + 93 + 128 + 123 + 93 + 122 + 93 + 165 + 172 + 172 + 172 + 208 + 172 + 129 + 172 + 171 + 172 + 208 + 173 + 208 + 172 + 208 + 136 + 165 + 172 + 129 + 172 + 165 + 172 + 129 + 171 + 87 + 128 + 130 + 122 + 86 + 50 + 86 + 86 + 43 + 129 + 86 + 165 + 87 + 207 + 136 + 122 + 86 + 86 + 79 + 44 + 79 + 49 + 79 + 43 + 43 + 37 + 43 + 79 + 43 + 1 + 85 + 43 + 86 + 80 + 43 + 79 + 86 + 86 + 129 + 165 + 129 + 129 + 123 + 92 + 123 + 128 + 129 + 165 + 166 + 172 + 172 + 165 + 172 + 129 + 172 + 172 + 166 + 171 + 129 + 129 + 129 + 129 + 123 + 86 + 92 + 136 + 129 + 179 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 173 + 173 + 179 + 173 + 137 + 178 + 131 + 137 + 136 + 136 + 94 + 136 + 130 + 100 + 80 + 49 + 38 + 42 + 44 + 43 + 87 + 49 + 80 + 44 + 14 + 80 + 50 + 94 + 87 + 86 + 93 + 87 + 86 + 51 + 87 + 135 + 129 + 172 + 172 + 172 + 135 + 130 + 134 + 172 + 214 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 164 + 129 + 123 + 92 + 123 + 128 + 88 + 129 + 165 + 172 + 209 + 172 + 171 + 166 + 172 + 172 + 208 + 173 + 208 + 172 + 172 + 172 + 171 + 166 + 135 + 173 + 208 + 172 + 171 + 130 + 129 + 172 + 129 + 129 + 129 + 92 + 86 + 86 + 44 + 86 + 86 + 129 + 122 + 130 + 129 + 172 + 129 + 86 + 43 + 86 + 79 + 7 + 37 + 43 + 43 + 36 + 7 + 43 + 79 + 43 + 1 + 42 + 43 + 43 + 37 + 43 + 43 + 86 + 123 + 129 + 129 + 129 + 165 + 92 + 123 + 86 + 122 + 130 + 129 + 165 + 208 + 136 + 208 + 129 + 129 + 172 + 166 + 129 + 135 + 123 + 129 + 92 + 123 + 86 + 129 + 130 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 209 + 179 + 173 + 179 + 173 + 137 + 178 + 137 + 173 + 130 + 136 + 136 + 130 + 101 + 136 + 130 + 94 + 86 + 85 + 1 + 43 + 43 + 86 + 86 + 44 + 44 + 43 + 51 + 44 + 93 + 88 + 123 + 93 + 93 + 88 + 87 + 87 + 87 + 94 + 135 + 166 + 172 + 172 + 172 + 165 + 136 + 171 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 129 + 129 + 122 + 93 + 123 + 129 + 124 + 129 + 171 + 166 + 173 + 208 + 171 + 173 + 208 + 172 + 166 + 171 + 172 + 166 + 178 + 173 + 165 + 172 + 214 + 172 + 172 + 166 + 171 + 136 + 165 + 130 + 135 + 123 + 129 + 86 + 128 + 44 + 86 + 92 + 122 + 130 + 171 + 129 + 172 + 123 + 86 + 49 + 80 + 43 + 43 + 43 + 0 + 44 + 43 + 36 + 44 + 85 + 43 + 1 + 36 + 43 + 43 + 43 + 44 + 43 + 43 + 129 + 129 + 129 + 166 + 129 + 165 + 129 + 87 + 122 + 123 + 129 + 171 + 167 + 172 + 172 + 166 + 129 + 136 + 165 + 129 + 129 + 123 + 128 + 93 + 123 + 171 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 137 + 173 + 173 + 143 + 137 + 173 + 136 + 131 + 137 + 136 + 94 + 137 + 136 + 94 + 94 + 128 + 80 + 7 + 43 + 80 + 86 + 50 + 44 + 7 + 44 + 44 + 87 + 87 + 94 + 129 + 124 + 94 + 87 + 88 + 92 + 124 + 130 + 136 + 131 + 172 + 166 + 172 + 172 + 166 + 171 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 130 + 129 + 123 + 129 + 87 + 129 + 123 + 129 + 166 + 172 + 172 + 209 + 172 + 165 + 173 + 165 + 173 + 172 + 173 + 214 + 172 + 172 + 172 + 172 + 172 + 166 + 171 + 172 + 136 + 165 + 172 + 135 + 130 + 122 + 92 + 87 + 85 + 123 + 92 + 87 + 171 + 130 + 171 + 130 + 165 + 93 + 43 + 79 + 44 + 43 + 42 + 1 + 43 + 79 + 7 + 80 + 44 + 43 + 0 + 43 + 44 + 79 + 7 + 43 + 43 + 43 + 123 + 123 + 129 + 130 + 135 + 123 + 123 + 92 + 159 + 129 + 123 + 136 + 165 + 165 + 172 + 172 + 166 + 135 + 166 + 135 + 129 + 123 + 129 + 129 + 172 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 173 + 137 + 173 + 137 + 173 + 136 + 136 + 131 + 136 + 137 + 94 + 136 + 130 + 94 + 99 + 129 + 80 + 7 + 43 + 79 + 51 + 79 + 50 + 8 + 44 + 87 + 87 + 87 + 130 + 95 + 130 + 88 + 129 + 88 + 130 + 88 + 130 + 130 + 131 + 173 + 172 + 131 + 172 + 166 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 123 + 93 + 123 + 129 + 87 + 165 + 173 + 136 + 208 + 209 + 173 + 208 + 173 + 214 + 173 + 208 + 172 + 172 + 172 + 172 + 172 + 172 + 135 + 172 + 172 + 166 + 171 + 172 + 172 + 129 + 135 + 122 + 87 + 79 + 93 + 122 + 129 + 136 + 166 + 135 + 129 + 166 + 92 + 43 + 44 + 79 + 50 + 36 + 7 + 37 + 43 + 43 + 44 + 85 + 38 + 6 + 43 + 87 + 80 + 43 + 36 + 7 + 37 + 86 + 129 + 123 + 135 + 130 + 122 + 123 + 86 + 129 + 123 + 136 + 165 + 130 + 164 + 166 + 136 + 171 + 130 + 165 + 136 + 165 + 136 + 171 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 173 + 179 + 137 + 173 + 137 + 173 + 137 + 136 + 131 + 136 + 130 + 100 + 136 + 131 + 94 + 94 + 100 + 122 + 43 + 43 + 37 + 43 + 44 + 43 + 44 + 50 + 80 + 51 + 88 + 129 + 94 + 124 + 94 + 124 + 94 + 124 + 95 + 124 + 130 + 131 + 136 + 167 + 131 + 173 + 166 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 130 + 124 + 129 + 129 + 124 + 129 + 129 + 172 + 172 + 209 + 214 + 209 + 172 + 173 + 172 + 171 + 172 + 166 + 172 + 178 + 172 + 172 + 166 + 171 + 172 + 172 + 172 + 178 + 166 + 135 + 130 + 122 + 86 + 43 + 93 + 128 + 123 + 172 + 135 + 166 + 135 + 129 + 86 + 50 + 79 + 86 + 50 + 79 + 1 + 43 + 37 + 43 + 43 + 43 + 44 + 43 + 1 + 85 + 86 + 1 + 43 + 44 + 37 + 49 + 87 + 129 + 166 + 135 + 130 + 122 + 87 + 86 + 122 + 172 + 165 + 130 + 135 + 166 + 172 + 172 + 171 + 172 + 208 + 178 + 209 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 173 + 179 + 137 + 173 + 137 + 137 + 130 + 137 + 94 + 137 + 94 + 136 + 95 + 94 + 130 + 94 + 50 + 43 + 43 + 36 + 43 + 37 + 14 + 80 + 50 + 87 + 87 + 88 + 88 + 94 + 124 + 94 + 124 + 88 + 94 + 124 + 94 + 131 + 124 + 131 + 131 + 173 + 167 + 131 + 173 + 173 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 165 + 87 + 136 + 130 + 165 + 87 + 129 + 172 + 166 + 136 + 166 + 172 + 136 + 165 + 129 + 172 + 171 + 173 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 172 + 179 + 166 + 171 + 93 + 80 + 6 + 86 + 129 + 129 + 166 + 135 + 166 + 129 + 129 + 86 + 49 + 80 + 86 + 86 + 43 + 44 + 36 + 7 + 43 + 37 + 43 + 43 + 44 + 43 + 86 + 44 + 79 + 43 + 43 + 43 + 44 + 86 + 135 + 166 + 165 + 130 + 129 + 87 + 86 + 92 + 123 + 172 + 167 + 172 + 215 + 215 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 173 + 179 + 137 + 179 + 137 + 137 + 137 + 173 + 137 + 131 + 100 + 131 + 100 + 131 + 94 + 94 + 100 + 130 + 94 + 44 + 79 + 43 + 43 + 43 + 1 + 50 + 80 + 44 + 87 + 87 + 87 + 94 + 88 + 130 + 88 + 88 + 88 + 94 + 88 + 124 + 94 + 124 + 130 + 131 + 131 + 167 + 131 + 167 + 136 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 129 + 130 + 129 + 93 + 129 + 130 + 129 + 166 + 135 + 130 + 129 + 172 + 129 + 130 + 135 + 172 + 172 + 166 + 172 + 172 + 178 + 172 + 172 + 172 + 172 + 172 + 172 + 173 + 171 + 129 + 79 + 43 + 50 + 86 + 129 + 129 + 166 + 135 + 123 + 86 + 86 + 43 + 86 + 86 + 86 + 43 + 86 + 37 + 7 + 37 + 43 + 44 + 49 + 44 + 37 + 86 + 86 + 44 + 79 + 43 + 44 + 50 + 122 + 129 + 137 + 172 + 129 + 122 + 87 + 50 + 122 + 130 + 172 + 172 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 137 + 179 + 173 + 137 + 143 + 137 + 137 + 131 + 137 + 137 + 95 + 136 + 94 + 94 + 130 + 95 + 94 + 93 + 58 + 80 + 85 + 44 + 43 + 43 + 37 + 43 + 50 + 44 + 86 + 51 + 88 + 93 + 124 + 94 + 88 + 123 + 87 + 94 + 87 + 88 + 88 + 94 + 124 + 94 + 125 + 130 + 131 + 130 + 131 + 172 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 130 + 123 + 129 + 129 + 130 + 129 + 130 + 135 + 129 + 166 + 93 + 129 + 166 + 129 + 129 + 172 + 172 + 136 + 172 + 172 + 172 + 172 + 172 + 166 + 172 + 172 + 172 + 171 + 129 + 86 + 43 + 43 + 86 + 129 + 129 + 129 + 172 + 122 + 43 + 43 + 50 + 86 + 86 + 86 + 43 + 44 + 43 + 37 + 43 + 43 + 43 + 50 + 79 + 1 + 43 + 86 + 86 + 80 + 49 + 44 + 79 + 93 + 129 + 123 + 130 + 129 + 86 + 86 + 87 + 172 + 172 + 173 + 178 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 143 + 173 + 179 + 137 + 137 + 137 + 137 + 137 + 137 + 137 + 95 + 136 + 95 + 94 + 130 + 95 + 130 + 94 + 93 + 94 + 52 + 86 + 122 + 43 + 44 + 43 + 43 + 43 + 44 + 8 + 86 + 87 + 88 + 87 + 93 + 88 + 93 + 88 + 88 + 87 + 87 + 87 + 129 + 88 + 88 + 124 + 94 + 94 + 124 + 88 + 130 + 131 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 166 + 136 + 130 + 129 + 93 + 129 + 123 + 93 + 130 + 129 + 93 + 129 + 129 + 130 + 171 + 166 + 136 + 171 + 130 + 172 + 172 + 171 + 172 + 172 + 172 + 172 + 129 + 172 + 130 + 128 + 44 + 86 + 86 + 128 + 87 + 172 + 129 + 87 + 43 + 43 + 49 + 80 + 85 + 44 + 43 + 86 + 43 + 43 + 44 + 43 + 43 + 79 + 44 + 6 + 37 + 86 + 123 + 50 + 44 + 86 + 86 + 86 + 123 + 93 + 129 + 122 + 93 + 129 + 130 + 173 + 178 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 215 + 179 + 137 + 179 + 137 + 173 + 143 + 131 + 137 + 101 + 137 + 131 + 100 + 131 + 94 + 94 + 130 + 94 + 94 + 88 + 95 + 87 + 95 + 86 + 87 + 85 + 44 + 43 + 37 + 50 + 43 + 44 + 51 + 87 + 87 + 87 + 87 + 94 + 87 + 94 + 87 + 87 + 130 + 87 + 93 + 88 + 87 + 94 + 124 + 88 + 94 + 130 + 88 + 166 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 215 + 179 + 173 + 136 + 171 + 130 + 86 + 130 + 93 + 129 + 129 + 129 + 129 + 130 + 129 + 135 + 166 + 172 + 129 + 172 + 136 + 171 + 130 + 172 + 172 + 130 + 171 + 130 + 171 + 172 + 93 + 122 + 86 + 129 + 86 + 129 + 129 + 129 + 93 + 79 + 43 + 43 + 50 + 43 + 79 + 44 + 49 + 44 + 79 + 44 + 43 + 44 + 43 + 44 + 42 + 44 + 86 + 86 + 50 + 80 + 129 + 86 + 86 + 123 + 129 + 130 + 136 + 136 + 172 + 173 + 214 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 173 + 143 + 137 + 173 + 101 + 131 + 137 + 95 + 136 + 94 + 95 + 130 + 94 + 94 + 94 + 89 + 93 + 52 + 93 + 88 + 58 + 122 + 86 + 86 + 43 + 43 + 44 + 43 + 44 + 43 + 51 + 86 + 87 + 87 + 51 + 93 + 86 + 93 + 87 + 94 + 129 + 87 + 129 + 94 + 87 + 88 + 94 + 94 + 87 + 130 + 94 + 137 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 215 + 179 + 179 + 215 + 215 + 179 + 215 + 173 + 136 + 129 + 128 + 130 + 93 + 129 + 129 + 93 + 129 + 129 + 129 + 129 + 172 + 129 + 136 + 166 + 171 + 136 + 166 + 135 + 166 + 136 + 165 + 136 + 165 + 129 + 93 + 122 + 129 + 130 + 129 + 171 + 129 + 93 + 43 + 43 + 43 + 86 + 44 + 49 + 43 + 80 + 43 + 50 + 80 + 43 + 44 + 43 + 43 + 43 + 44 + 86 + 86 + 80 + 50 + 128 + 87 + 123 + 172 + 135 + 166 + 136 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 137 + 179 + 137 + 137 + 137 + 137 + 131 + 101 + 130 + 94 + 101 + 130 + 94 + 94 + 94 + 89 + 94 + 87 + 95 + 88 + 93 + 52 + 123 + 86 + 50 + 43 + 44 + 43 + 37 + 43 + 50 + 45 + 86 + 93 + 86 + 50 + 87 + 93 + 93 + 87 + 135 + 94 + 87 + 93 + 93 + 94 + 94 + 94 + 93 + 94 + 130 + 130 + 131 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 137 + 178 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 179 + 172 + 172 + 166 + 129 + 129 + 93 + 123 + 92 + 129 + 129 + 130 + 129 + 165 + 135 + 130 + 129 + 172 + 129 + 129 + 166 + 129 + 172 + 129 + 129 + 123 + 92 + 122 + 129 + 130 + 129 + 172 + 129 + 92 + 80 + 43 + 43 + 49 + 87 + 86 + 43 + 50 + 79 + 43 + 86 + 50 + 80 + 43 + 43 + 43 + 44 + 86 + 86 + 44 + 86 + 92 + 130 + 172 + 167 + 172 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 173 + 143 + 173 + 137 + 137 + 179 + 131 + 101 + 137 + 94 + 130 + 95 + 94 + 100 + 88 + 94 + 57 + 124 + 93 + 52 + 93 + 87 + 87 + 51 + 122 + 51 + 44 + 85 + 7 + 37 + 7 + 44 + 85 + 51 + 122 + 87 + 56 + 50 + 87 + 93 + 51 + 135 + 93 + 94 + 129 + 94 + 93 + 94 + 93 + 129 + 100 + 94 + 130 + 137 + 130 + 167 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 173 + 179 + 137 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 129 + 130 + 129 + 135 + 123 + 129 + 129 + 129 + 130 + 129 + 171 + 172 + 172 + 130 + 129 + 129 + 172 + 172 + 172 + 129 + 129 + 123 + 86 + 87 + 128 + 136 + 130 + 129 + 129 + 50 + 43 + 86 + 50 + 123 + 86 + 43 + 43 + 50 + 44 + 50 + 43 + 44 + 50 + 79 + 7 + 80 + 86 + 86 + 87 + 129 + 173 + 209 + 215 + 215 + 178 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 143 + 173 + 137 + 173 + 137 + 101 + 137 + 131 + 100 + 95 + 130 + 94 + 94 + 94 + 93 + 52 + 94 + 93 + 88 + 93 + 87 + 51 + 87 + 93 + 87 + 87 + 86 + 44 + 49 + 44 + 43 + 43 + 43 + 44 + 50 + 86 + 87 + 86 + 93 + 50 + 87 + 93 + 92 + 93 + 94 + 93 + 129 + 100 + 129 + 93 + 94 + 94 + 130 + 100 + 136 + 131 + 172 + 131 + 209 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 172 + 143 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 172 + 173 + 136 + 136 + 129 + 130 + 129 + 130 + 136 + 179 + 173 + 215 + 172 + 131 + 171 + 172 + 173 + 179 + 166 + 129 + 129 + 86 + 93 + 86 + 130 + 171 + 130 + 129 + 51 + 85 + 44 + 80 + 50 + 86 + 43 + 44 + 49 + 44 + 86 + 50 + 43 + 79 + 50 + 43 + 44 + 123 + 135 + 166 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 173 + 143 + 173 + 137 + 137 + 131 + 101 + 94 + 130 + 94 + 94 + 94 + 93 + 52 + 93 + 51 + 87 + 51 + 51 + 51 + 93 + 87 + 86 + 51 + 87 + 86 + 51 + 86 + 43 + 80 + 49 + 44 + 7 + 44 + 44 + 86 + 86 + 129 + 86 + 93 + 87 + 93 + 92 + 87 + 93 + 129 + 100 + 94 + 129 + 93 + 57 + 87 + 93 + 93 + 94 + 130 + 136 + 130 + 131 + 136 + 131 + 172 + 179 + 173 + 215 + 179 + 173 + 137 + 136 + 166 + 143 + 173 + 143 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 172 + 137 + 172 + 179 + 215 + 173 + 179 + 215 + 179 + 173 + 173 + 178 + 172 + 173 + 129 + 136 + 130 + 136 + 129 + 123 + 93 + 130 + 129 + 86 + 50 + 43 + 86 + 44 + 86 + 86 + 49 + 50 + 43 + 86 + 50 + 43 + 44 + 86 + 50 + 165 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 137 + 137 + 130 + 137 + 94 + 94 + 94 + 94 + 93 + 94 + 88 + 94 + 57 + 87 + 51 + 87 + 57 + 51 + 51 + 87 + 86 + 86 + 57 + 87 + 87 + 87 + 86 + 50 + 86 + 43 + 44 + 43 + 43 + 44 + 86 + 50 + 87 + 129 + 93 + 87 + 93 + 92 + 87 + 93 + 93 + 130 + 99 + 129 + 86 + 57 + 51 + 86 + 50 + 93 + 88 + 93 + 94 + 94 + 130 + 124 + 100 + 131 + 130 + 137 + 136 + 131 + 136 + 129 + 137 + 130 + 179 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 173 + 179 + 215 + 179 + 179 + 179 + 215 + 173 + 179 + 179 + 179 + 173 + 172 + 136 + 179 + 173 + 172 + 136 + 129 + 130 + 172 + 93 + 129 + 129 + 87 + 136 + 129 + 136 + 165 + 129 + 93 + 86 + 93 + 92 + 86 + 92 + 129 + 172 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 172 + 101 + 130 + 94 + 94 + 88 + 94 + 94 + 94 + 129 + 100 + 87 + 57 + 93 + 87 + 51 + 57 + 87 + 51 + 93 + 86 + 87 + 87 + 93 + 86 + 93 + 86 + 80 + 50 + 43 + 44 + 49 + 44 + 43 + 86 + 50 + 122 + 93 + 87 + 129 + 93 + 86 + 93 + 129 + 94 + 129 + 93 + 93 + 86 + 51 + 50 + 44 + 51 + 50 + 87 + 87 + 94 + 87 + 94 + 88 + 94 + 93 + 130 + 94 + 93 + 130 + 93 + 94 + 131 + 136 + 137 + 172 + 143 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 209 + 179 + 179 + 179 + 179 + 173 + 179 + 179 + 173 + 178 + 172 + 136 + 173 + 166 + 215 + 178 + 173 + 215 + 179 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 208 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 173 + 137 + 136 + 130 + 94 + 136 + 130 + 130 + 137 + 136 + 130 + 100 + 130 + 94 + 93 + 93 + 94 + 88 + 93 + 56 + 87 + 87 + 93 + 86 + 93 + 93 + 130 + 86 + 57 + 79 + 44 + 43 + 44 + 44 + 49 + 80 + 56 + 123 + 86 + 86 + 93 + 87 + 86 + 93 + 93 + 129 + 94 + 129 + 93 + 123 + 56 + 44 + 7 + 43 + 2 + 50 + 44 + 50 + 51 + 87 + 57 + 88 + 87 + 94 + 51 + 88 + 93 + 94 + 87 + 94 + 129 + 94 + 137 + 173 + 179 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 179 + 215 + 179 + 179 + 179 + 215 + 179 + 179 + 215 + 179 + 215 + 179 + 179 + 179 + 215 + 215 + 215 + 179 + 215 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 137 + 173 + 137 + 136 + 137 + 173 + 172 + 173 + 143 + 173 + 137 + 171 + 100 + 130 + 93 + 129 + 93 + 94 + 87 + 93 + 93 + 92 + 130 + 93 + 129 + 93 + 122 + 8 + 43 + 43 + 49 + 44 + 44 + 86 + 92 + 86 + 87 + 87 + 128 + 87 + 50 + 93 + 87 + 129 + 92 + 130 + 129 + 87 + 93 + 43 + 8 + 43 + 6 + 44 + 44 + 51 + 50 + 87 + 58 + 87 + 51 + 94 + 87 + 52 + 93 + 88 + 58 + 129 + 94 + 94 + 137 + 136 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 179 + 179 + 215 + 179 + 215 + 179 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 173 + 173 + 179 + 173 + 179 + 179 + 173 + 179 + 179 + 173 + 172 + 137 + 135 + 130 + 129 + 100 + 130 + 129 + 93 + 129 + 129 + 100 + 129 + 93 + 129 + 94 + 79 + 50 + 43 + 44 + 49 + 80 + 86 + 93 + 86 + 87 + 86 + 93 + 86 + 86 + 50 + 87 + 86 + 129 + 129 + 130 + 86 + 93 + 86 + 0 + 7 + 8 + 43 + 45 + 50 + 51 + 51 + 88 + 51 + 93 + 51 + 88 + 50 + 94 + 94 + 87 + 94 + 94 + 95 + 136 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 215 + 179 + 179 + 173 + 178 + 137 + 172 + 129 + 136 + 136 + 130 + 136 + 129 + 136 + 129 + 136 + 135 + 130 + 129 + 49 + 80 + 44 + 85 + 44 + 86 + 87 + 50 + 86 + 87 + 92 + 86 + 80 + 50 + 50 + 80 + 87 + 92 + 129 + 93 + 123 + 93 + 44 + 43 + 0 + 43 + 8 + 44 + 50 + 51 + 51 + 87 + 51 + 51 + 51 + 87 + 57 + 88 + 51 + 94 + 94 + 88 + 136 + 94 + 136 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 215 + 179 + 215 + 179 + 179 + 173 + 178 + 173 + 172 + 137 + 172 + 136 + 172 + 136 + 135 + 130 + 136 + 172 + 136 + 136 + 128 + 136 + 44 + 86 + 86 + 50 + 86 + 44 + 86 + 87 + 50 + 86 + 50 + 80 + 50 + 43 + 43 + 86 + 86 + 86 + 94 + 122 + 92 + 86 + 44 + 37 + 7 + 1 + 43 + 50 + 44 + 51 + 51 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 101 + 130 + 137 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 215 + 179 + 179 + 215 + 173 + 179 + 173 + 179 + 172 + 173 + 136 + 172 + 136 + 172 + 173 + 136 + 136 + 172 + 135 + 130 + 135 + 136 + 130 + 135 + 93 + 129 + 87 + 92 + 86 + 44 + 86 + 43 + 50 + 44 + 49 + 44 + 43 + 43 + 43 + 43 + 44 + 86 + 51 + 86 + 86 + 87 + 86 + 44 + 7 + 1 + 42 + 8 + 44 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 51 + 94 + 51 + 94 + 87 + 94 + 95 + 136 + 137 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 215 + 179 + 209 + 179 + 179 + 209 + 179 + 173 + 173 + 172 + 143 + 172 + 130 + 137 + 171 + 136 + 137 + 172 + 136 + 130 + 136 + 171 + 136 + 136 + 130 + 136 + 129 + 99 + 129 + 94 + 93 + 86 + 86 + 43 + 44 + 43 + 7 + 43 + 43 + 7 + 43 + 37 + 7 + 7 + 42 + 44 + 80 + 50 + 86 + 50 + 79 + 44 + 7 + 7 + 37 + 7 + 44 + 51 + 51 + 50 + 16 + 45 + 51 + 93 + 51 + 88 + 57 + 87 + 94 + 52 + 129 + 100 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 179 + 172 + 173 + 179 + 172 + 173 + 173 + 172 + 173 + 136 + 172 + 137 + 136 + 136 + 130 + 136 + 136 + 137 + 165 + 137 + 100 + 166 + 100 + 136 + 129 + 94 + 135 + 93 + 93 + 93 + 87 + 49 + 86 + 44 + 43 + 7 + 42 + 1 + 7 + 43 + 7 + 43 + 1 + 43 + 6 + 1 + 43 + 44 + 85 + 44 + 50 + 43 + 44 + 7 + 37 + 7 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 52 + 57 + 87 + 51 + 94 + 87 + 58 + 94 + 94 + 130 + 94 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 136 + 136 + 172 + 173 + 173 + 136 + 167 + 136 + 136 + 136 + 165 + 136 + 130 + 136 + 94 + 137 + 135 + 130 + 101 + 136 + 130 + 136 + 93 + 93 + 130 + 93 + 99 + 87 + 129 + 57 + 86 + 50 + 43 + 44 + 43 + 7 + 0 + 43 + 1 + 7 + 43 + 7 + 0 + 43 + 7 + 37 + 7 + 43 + 43 + 44 + 43 + 14 + 43 + 43 + 7 + 44 + 44 + 8 + 86 + 9 + 51 + 51 + 51 + 51 + 87 + 57 + 87 + 52 + 93 + 88 + 94 + 94 + 94 + 94 + 137 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 136 + 136 + 130 + 136 + 130 + 171 + 101 + 166 + 129 + 100 + 130 + 130 + 136 + 94 + 135 + 130 + 100 + 130 + 130 + 135 + 94 + 94 + 129 + 93 + 93 + 93 + 86 + 57 + 93 + 87 + 93 + 92 + 80 + 49 + 43 + 7 + 1 + 43 + 6 + 1 + 43 + 7 + 43 + 43 + 43 + 2 + 42 + 43 + 7 + 44 + 43 + 43 + 44 + 50 + 44 + 43 + 44 + 8 + 51 + 50 + 51 + 45 + 51 + 51 + 51 + 51 + 52 + 87 + 57 + 87 + 58 + 88 + 93 + 88 + 136 + 173 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 178 + 94 + 130 + 136 + 137 + 130 + 130 + 130 + 136 + 94 + 129 + 94 + 130 + 130 + 100 + 130 + 94 + 130 + 93 + 94 + 94 + 93 + 94 + 93 + 92 + 87 + 57 + 93 + 87 + 56 + 124 + 93 + 92 + 86 + 44 + 6 + 1 + 43 + 1 + 7 + 43 + 43 + 43 + 50 + 43 + 1 + 43 + 43 + 7 + 43 + 43 + 44 + 86 + 44 + 49 + 8 + 43 + 44 + 51 + 50 + 45 + 51 + 51 + 51 + 51 + 51 + 51 + 52 + 87 + 52 + 93 + 53 + 88 + 88 + 93 + 131 + 173 + 215 + 179 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 94 + 136 + 130 + 136 + 130 + 136 + 94 + 130 + 130 + 100 + 130 + 93 + 130 + 94 + 130 + 94 + 93 + 130 + 93 + 94 + 93 + 87 + 93 + 94 + 92 + 87 + 93 + 51 + 87 + 129 + 93 + 86 + 92 + 49 + 43 + 7 + 43 + 1 + 43 + 43 + 50 + 49 + 86 + 50 + 80 + 44 + 7 + 43 + 43 + 50 + 86 + 45 + 50 + 43 + 44 + 44 + 50 + 51 + 44 + 51 + 51 + 8 + 44 + 15 + 44 + 9 + 50 + 51 + 52 + 87 + 51 + 46 + 87 + 52 + 95 + 131 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 136 + 95 + 136 + 131 + 136 + 130 + 137 + 94 + 130 + 100 + 130 + 129 + 94 + 94 + 130 + 94 + 93 + 94 + 123 + 94 + 93 + 93 + 51 + 93 + 87 + 51 + 93 + 50 + 130 + 92 + 129 + 86 + 51 + 86 + 7 + 43 + 1 + 43 + 43 + 49 + 87 + 92 + 86 + 45 + 49 + 37 + 43 + 43 + 51 + 86 + 86 + 50 + 44 + 50 + 43 + 44 + 15 + 44 + 50 + 51 + 8 + 45 + 8 + 14 + 44 + 51 + 45 + 51 + 51 + 52 + 88 + 52 + 125 + 94 + 130 + 167 + 173 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 143 + 130 + 137 + 130 + 101 + 130 + 94 + 130 + 94 + 136 + 94 + 124 + 94 + 93 + 130 + 94 + 93 + 94 + 124 + 93 + 88 + 57 + 87 + 87 + 57 + 87 + 51 + 87 + 50 + 129 + 93 + 129 + 92 + 123 + 49 + 50 + 44 + 43 + 43 + 50 + 86 + 86 + 123 + 92 + 50 + 44 + 43 + 43 + 44 + 86 + 93 + 87 + 50 + 80 + 50 + 43 + 50 + 9 + 51 + 50 + 45 + 50 + 9 + 7 + 8 + 8 + 45 + 50 + 52 + 88 + 52 + 125 + 94 + 89 + 131 + 131 + 173 + 173 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 137 + 137 + 94 + 137 + 94 + 130 + 94 + 101 + 88 + 94 + 94 + 94 + 130 + 87 + 94 + 87 + 94 + 87 + 94 + 51 + 87 + 94 + 51 + 86 + 51 + 51 + 51 + 80 + 15 + 129 + 129 + 93 + 129 + 93 + 86 + 86 + 44 + 43 + 50 + 49 + 86 + 129 + 87 + 129 + 86 + 50 + 43 + 44 + 44 + 86 + 129 + 86 + 87 + 50 + 50 + 44 + 44 + 51 + 50 + 45 + 14 + 45 + 8 + 8 + 7 + 51 + 44 + 52 + 52 + 88 + 89 + 94 + 125 + 131 + 131 + 131 + 131 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 173 + 100 + 130 + 95 + 94 + 94 + 94 + 94 + 87 + 94 + 93 + 88 + 57 + 88 + 88 + 93 + 51 + 88 + 93 + 51 + 87 + 50 + 87 + 51 + 45 + 51 + 50 + 51 + 44 + 129 + 135 + 93 + 123 + 92 + 87 + 55 + 80 + 50 + 44 + 86 + 92 + 87 + 129 + 93 + 87 + 86 + 49 + 80 + 50 + 87 + 129 + 93 + 86 + 45 + 50 + 44 + 44 + 50 + 51 + 44 + 15 + 45 + 8 + 7 + 50 + 9 + 51 + 88 + 88 + 95 + 89 + 95 + 125 + 95 + 131 + 125 + 167 + 179 + 209 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 215 + 179 + 143 + 131 + 94 + 95 + 136 + 52 + 93 + 94 + 88 + 57 + 88 + 87 + 94 + 51 + 88 + 87 + 52 + 87 + 51 + 51 + 88 + 45 + 50 + 51 + 50 + 44 + 51 + 8 + 51 diff --git a/graphics/presentations/KHK j6ulud/khkdemo.bas b/graphics/presentations/KHK j6ulud/khkdemo.bas new file mode 100755 index 0000000..7fe3b73 --- /dev/null +++ b/graphics/presentations/KHK j6ulud/khkdemo.bas @@ -0,0 +1,352 @@ +DECLARE SUB playsound (a$) +DECLARE SUB turnon () +DECLARE SUB ellips (x!, y!, s!, v!, t!) +DECLARE SUB prn (x!, y!, msg$, siz!, col1!) +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerdisp () +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + + +pi = 3.14128 + +turnon + +SCREEN 7, , , 1 + +timerinit +s = 50 +2 +s1 = SIN(timerCvalue(1) * 1.3) * .5 + 1.1 +s2 = COS(timerCvalue(1) * 1.3) * .5 + 1.1 + + +frm = frm + 1 +sv1 = 5 * s1 +sv2 = 2 +vp = SIN(timerCvalue(1) * 1.3) + +sh1 = 2 * s2 +sh2 = 1.4 +hp = SIN(timerCvalue(1)) * .7 + + +mo timerCvalue(2), timerCvalue(3), timerCvalue(4), timerCvalue(0), 0 + +ellips 100, timerCvalue(6), timerCvalue(7) + 4, 14, .5 +ellips 100, timerCvalue(6), timerCvalue(7) + 2, 10, .5 +ellips 100, timerCvalue(6), timerCvalue(7), 0, .5 +prn timerCvalue(5), 10, "KHK", 7, 250 + +prn timerCvalue(8), 130, "Infotehno-", 2, 0 +prn timerCvalue(8), 150, " loogia", 2, 0 + +timerprocess +LOCATE 1, 1 +'PRINT timerCtime(0) +IF timerCtime(0) > 26 THEN CHAIN "ray.bas" +PCOPY 0, 1 +LINE (0, 0)-(319, 199), 15, BF +GOTO 2 +SYSTEM + +SUB ellips (x, y, s, v, t) + +IF x > 0 THEN +IF y > 0 THEN + +CIRCLE (x, y), s, v, , , t +PAINT (x, y), v + +END IF +END IF + +END SUB + +SUB mo (x, y, an, s, w) +depth = depth + 1 +IF s < .2 THEN GOTO 1 + +IF depth / 2 = depth \ 2 THEN c = 1 ELSE c = 3 + +CIRCLE (x, y), s, c +PAINT (x, y), c + +IF w <> 1 THEN +x1 = SIN(an) * s * 2.5 + x +y1 = COS(an) * s * 2.5 + y +IF w = 3 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 3 +END IF + +IF w <> 2 THEN +x1 = SIN(an - pi / 2) * s * 2.5 + x +y1 = COS(an - pi / 2) * s * 2.5 + y +IF w = 4 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 4 +END IF + +IF w <> 3 THEN +x1 = SIN(an - pi) * s * 2.5 + x +y1 = COS(an - pi) * s * 2.5 + y +IF w = 1 THEN ns = s / sv2 ELSE ns = s / sv1 +mo x1, y1, an + vp, ns, 1 +END IF + +IF w <> 4 THEN +x1 = SIN(an - pi * 1.5) * s * 2.5 + x +y1 = COS(an - pi * 1.5) * s * 2.5 + y +IF w = 2 THEN ns = s / sh2 ELSE ns = s / sh1 +mo x1, y1, an + hp, ns, 2 +END IF + +1 +depth = depth - 1 +END SUB + +SUB playsound (a$) +SHELL "c:\progra~1\winamp\winamp.exe " + a$ +SCREEN 0 +SCREEN 7, , , 1 + +END SUB + +SUB prn (x, y, msg$, siz, col1) +IF x < 0 THEN GOTO prn1 +IF x > 319 THEN GOTO prn1 + +DIM bck(10000) + +GET (0, 0)-(100, 7), bck +LOCATE 1, 1 +PRINT msg$ + +col = col1 + +FOR x1 = 0 TO LEN(msg$) * 8 - 1 +FOR y1 = 0 TO 7 + IF POINT(x1, y1) > 0 THEN + rx = x1 * siz + x + ry = y1 * siz + y + IF col1 > 100 THEN col = RND * 4 + 10 + IF col1 > 200 THEN + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B + ELSE + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +' LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +NEXT y1 +NEXT x1 + + +PUT (0, 0), bck, PSET +prn1: +END SUB + +SUB timerAdd (element, time, value) + +FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 +NEXT a +timer3: + +timerTime(element, a) = time +timerValue(element, a) = value + +END SUB + +SUB timerdisp +LOCATE 1, 1 + +FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) +NEXT a + +END SUB + +SUB timerinit +timerLast = TIMER + +paus = 24 + +' stuff size +timerAdd 0, 0, 50 +timerAdd 0, 7, 10 +timerAdd 0, 20, 10 +timerAdd 0, 24, 0 +timerAdd 0, 1000, 0 + + +' stuff speed +timerAdd 1, 0, .1 +timerAdd 1, 1000, 1000 + +' stuff X & Y +timerAdd 2, 0, 160 +timerAdd 3, 0, 100 + +timerAdd 2, 5, 160 +timerAdd 3, 5, 100 + +timerAdd 2, 9, 280 +timerAdd 3, 9, 160 + +timerAdd 2, 10, 280 +timerAdd 3, 10, 160 + +timerAdd 2, 20, 40 +timerAdd 3, 20, 160 + +timerAdd 2, 1000, 40 +timerAdd 3, 1000, 160 + +' stuff rotations +timerAdd 4, 0, .1 +timerAdd 4, 10, .1 +timerAdd 4, 22, 18 +timerAdd 4, 2000, 10000 + +' KHK message X + +timerAdd 5, 0, -1 +timerAdd 5, 5, -1 +timerAdd 5, 9, 50 +timerAdd 5, 10, 30 +timerAdd 5, paus, 30 +timerAdd 5, paus + 2, 321 + +' Ellips Y & radius +timerAdd 6, 0, -1 +timerAdd 6, 4, -1 +timerAdd 6, 10, 30 +timerAdd 6, 1000, 50 + +timerAdd 7, 0, 1 +timerAdd 7, 6, 1 +timerAdd 7, 12, 130 + +timerAdd 7, paus, 130 +timerAdd 7, paus + 2, 1 + +' "Infotehnoloogia" message + +timerAdd 8, 0, 320 +timerAdd 8, 11, 320 +timerAdd 8, 20, 100 +timerAdd 8, paus, 100 +timerAdd 8, paus + 1, -1 + + +END SUB + +SUB timerprocess + +timerCurrent = TIMER +timerDiff = timerCurrent - timerLast +timerLast = timerCurrent + +FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim +NEXT a + +END SUB + +SUB turnon +a$ = INPUT$(1) +playsound "marine.mp3" + +SCREEN 7, , , 1 + +FOR x = 0 TO 160 STEP 15 + + LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 1, BF + LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 3, BF + LINE (160 - x, 90)-(160 + x, 110), 15, BF + + PCOPY 0, 1 + CLS + SOUND 0, .5 +NEXT x + +FOR y = 10 TO 100 STEP 15 + CLS + + LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 1, BF + LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, BF + LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, BF + + PCOPY 0, 1 + SOUND 0, .5 +NEXT y + +FOR a = 1 TO 25 + prn RND * 250, RND * 180, STR$(INT(RND * 2)), 3, 0 + PCOPY 0, 1 + SOUND 0, 1 +NEXT a + +DIM buf(1 TO 1000) +FOR b = 1 TO 30 +FOR a = 0 TO 195 + t = ABS(100 - a) + + IF RND * 50 < t THEN + GET (1, a)-(318, a + 1), buf + IF a > 100 THEN + PUT (0, a), buf, PSET + ELSE + PUT (2, a), buf, PSET + END IF + END IF +NEXT a +PCOPY 0, 1 +'SOUND 0, 1 +NEXT b + + +END SUB + diff --git a/graphics/presentations/KHK j6ulud/khkdemo2.bas b/graphics/presentations/KHK j6ulud/khkdemo2.bas new file mode 100755 index 0000000..acfc16a --- /dev/null +++ b/graphics/presentations/KHK j6ulud/khkdemo2.bas @@ -0,0 +1,294 @@ +DECLARE SUB playsound (a$) +DECLARE SUB start () +DECLARE SUB turnoff () +DECLARE SUB dispimg (a$) +DECLARE SUB turnon () +DECLARE SUB ellips (x!, y!, s!, v!, t!) +DECLARE SUB prn (x!, y!, msg$, siz!, col1!) +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerdisp () +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DECLARE SUB mo (x!, y!, an!, s!, w!) +DIM SHARED depth +DIM SHARED pi + +DIM SHARED sh1, sh2, sv1, sv2, hp, vp +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + + +pi = 3.14128 + +playsound "luule.mp3" +SCREEN 13 +start + +timerinit +2 + + +timerprocess +IF timerCtime(0) > 0 THEN + IF im1 = 0 THEN + dispimg "pikk.i01" + im1 = 1 + END IF +END IF + + + +IF timerCtime(0) > 1.5 THEN + IF im2 = 0 THEN + dispimg "pikk4.i01" + im2 = 1 + END IF +END IF + + +IF timerCtime(0) > 9 THEN + IF im3 = 0 THEN + dispimg "pikk3.i01" + im3 = 1 + END IF +END IF + +IF timerCtime(0) > 17 THEN + IF im4 = 0 THEN + dispimg "pikk2.i01" + im4 = 1 + END IF +END IF + +IF timerCtime(0) > 24 THEN + IF im5 = 0 THEN + dispimg "pikk1.i01" + im5 = 1 + END IF +END IF + +IF timerCtime(0) > 33 THEN + IF im6 = 0 THEN + dispimg "pikk5.i01" + im6 = 1 + END IF +END IF + +IF timerCtime(0) > 41 THEN + IF im7 = 0 THEN + dispimg "pikk.i01" + im7 = 1 + END IF +END IF + + +IF timerCtime(0) > 43 THEN + turnoff +END IF + +'LOCATE 1, 1 +'PRINT timerCtime(0) +GOTO 2 +SYSTEM + +SUB dispimg (a$) + + +OPEN a$ FOR INPUT AS #1 +INPUT #1, xs +INPUT #1, ys + +FOR y = 1 TO ys +FOR x = 1 TO xs +INPUT #1, a +PSET (x - 1, 200 - y), a +NEXT x +NEXT y + + +CLOSE #1 +END SUB + +SUB ellips (x, y, s, v, t) + +IF x > 0 THEN +IF y > 0 THEN + +CIRCLE (x, y), s, v, , , t +PAINT (x, y), v + +END IF +END IF + +END SUB + +SUB playsound (a$) + +SHELL "c:\progra~1\winamp\winamp.exe " + a$ +SCREEN 0 +SCREEN 7, , , 1 + +END SUB + +SUB prn (x, y, msg$, siz, col1) +IF x < 0 THEN GOTO prn1 +IF x > 319 THEN GOTO prn1 + +DIM bck(10000) + +GET (0, 0)-(100, 7), bck +LOCATE 1, 1 +PRINT msg$ + +col = col1 + +FOR x1 = 0 TO LEN(msg$) * 8 - 1 +FOR y1 = 0 TO 7 + IF POINT(x1, y1) > 0 THEN + rx = x1 * siz + x + ry = y1 * siz + y + IF col1 > 100 THEN col = RND * 4 + 10 + IF col1 > 200 THEN + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B + ELSE + LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +' LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF + END IF +NEXT y1 +NEXT x1 + + +PUT (0, 0), bck, PSET +prn1: +END SUB + +SUB start +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR B = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, B * 12 +NEXT B +NEXT g +NEXT r + +END SUB + +SUB timerAdd (element, time, value) + +FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 +NEXT a +timer3: + +timerTime(element, a) = time +timerValue(element, a) = value + +END SUB + +SUB timerdisp +LOCATE 1, 1 + +FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) +NEXT a + +END SUB + +SUB timerinit +timerLast = TIMER + +paus = 24 + +' stuff size +timerAdd 0, 0, 0 +timerAdd 0, 1000, 1000 + +END SUB + +SUB timerprocess + +timerCurrent = TIMER +timerDiff = timerCurrent - timerLast +timerLast = timerCurrent + +FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim +NEXT a + +END SUB + +SUB turnoff +x = 160 + +FOR y = 100 TO 1 STEP -1 + + LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 0, B + LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, B + LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, B + + SOUND 0, .1 +NEXT y + + + +FOR x = 160 TO 0 STEP -1 + + LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 0, B + LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 1, B + LINE (160 - x, 90)-(160 + x, 110), 15, B + SOUND 0, .05 +NEXT x + +playsound "silent.mp3" +SCREEN 10 +SCREEN 13 +CLS +1 +a$ = INPUT$(1) +GOTO 1 + + +END SUB + diff --git a/graphics/presentations/KHK j6ulud/ray.bas b/graphics/presentations/KHK j6ulud/ray.bas new file mode 100755 index 0000000..c452284 --- /dev/null +++ b/graphics/presentations/KHK j6ulud/ray.bas @@ -0,0 +1,318 @@ +DECLARE SUB dispimg () +DECLARE SUB updateland () +DECLARE SUB makeland () +DECLARE FUNCTION getcol! (r!, g!, b!) +DEFINT A-Y +DECLARE SUB traceline (x%, y%, xl) +DECLARE SUB dispframe () +DECLARE SUB tower (x%, y%) +DECLARE SUB square (x1%, y1%, x2%, y2%, c%, h%) +DECLARE SUB displand () +DECLARE SUB start () +DECLARE SUB setupal () + +DIM SHARED landh(0 TO 180, 0 TO 180) +DIM SHARED landc(0 TO 180, 0 TO 180) + +DIM SHARED zmyx, zmyy, zmyz +DIM SHARED myx, myy, myz +DIM SHARED zmyan, myan2 +DIM SHARED ste, stem, dist +DIM SHARED tim$, frm, frmrate +DIM SHARED pi +DIM SHARED white + +sky = getcol(100, 100, 255) +pi = 3.141592 + +frmrate = 10 ' Desired framerate. + ' Lower framerate, better quality + +start +makeland + +'displand +'a$ = INPUT$(1) +myan2 = 2 +OPEN "cat.i01" FOR INPUT AS #1 +INPUT #1, pictxw +INPUT #1, pictyw +INPUT #1, pictx +INPUT #1, picty + + +1 +x1 = RND * 160 +y1 = RND * 160 +x2 = x1 + RND * 10 + 1 +y2 = y1 + RND * 10 + 1 + +IF (frm > 50) AND (frm < 250) THEN square x1, y1, x2, y2, RND * 200, RND * 10 +IF (frm > 250) AND (picty < 177) THEN + + FOR ff = 1 TO 180 * 2 + INPUT #1, c + landc(pictx, picty) = c + landh(pictx, picty) = 0 + pictx = pictx + 1 + IF pictx >= pictxw THEN pictx = 0: picty = picty + 1 + IF picty >= pictyw THEN picty = 0 + NEXT ff +END IF + +IF frm = 430 THEN dispimg +LOCATE 1, 30 +'PRINT frm + +updateland +dispframe +GOTO 1 +CLOSE #1 + +SUB dispframe + +l = 0 +zst = -.0031 * ste +FOR z = .5 TO -.5 STEP zst +traceline SIN(zmyan + z) * dist + myx, COS(zmyan + z) * dist + myy, l +l = l + ste +NEXT z + +END SUB + +SUB dispimg + +CLOSE #1 + + +OPEN "cat.i01" FOR INPUT AS #1 +INPUT #1, pictxw +INPUT #1, pictyw + +FOR y = 0 TO pictyw - 1 +FOR x = 0 TO pictxw - 1 +INPUT #1, c +PSET (x + 50, 150 - y), c +NEXT x +NEXT y + +CLOSE #1 + + +FOR a = 1 TO 50 + SOUND 0, 1 +NEXT a +CHAIN "KHKDEMO2.BAS" + +END SUB + +SUB displand + + +FOR z = 0 TO 180 +zs = 1 +IF z > 120 THEN zs = .7 +IF z > 160 THEN zs = .6 +FOR zx = 0 TO 180 STEP zs +y1 = landh(zx, z) - 80 +zx1 = zx - 90 +z1 = 300 - z +zx2 = zx1 / z1 * 190 +zy2 = y1 / z1 * 190 + +LINE (zx2 + 160, 40 - zy2)-(zx2 + 160, 200), landc(zx, z) +NEXT zx +NEXT z + +LOCATE 1, 1 +PRINT "Press any key to continue..." + +END SUB + +DEFSNG A-Y +FUNCTION getcol (r, g, b) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 255 THEN r = 255 +IF g > 255 THEN g = 255 +IF b > 255 THEN b = 255 +getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43) +END FUNCTION + +DEFINT A-Y +SUB makeland + +square 0, 0, 180, 180, 15, 0 + +FOR y = 0 TO 180 +FOR x = 0 TO 180 +x1 = (x \ 10) MOD 2 +y1 = (y \ 10) MOD 2 +c = (x1 + y1) MOD 2 +IF c = 0 THEN + landc(x, y) = getcol(250, 250, 250) +ELSE + landc(x, y) = getcol(250, 50, 50) +END IF +NEXT x +NEXT y + +FOR y = 10 TO 90 +FOR x = 90 TO 170 +v = SQR((ABS(50 - y)) ^ 2 + (ABS(130 - x)) ^ 2) +h = SQR((60 - v) * (60 + v)) - 35 +IF h > 0 THEN landh(x, y) = h +NEXT x +NEXT y + +tower 20, 20 +tower 60, 20 +tower 40, 150 + + +FOR za = 0 TO 20 STEP .1 +x = SIN(za) * (1 + (za * 2)) + 100 +y = COS(za) * (1 + (za * 2)) + 100 +landc(x, y) = getcol(20, RND * 200, 20) +landc(x + 1, y) = getcol(20, RND * 200, 20) +landc(x, y + 1) = getcol(20, RND * 200, 20) +landc(x + 1, y + 1) = getcol(20, RND * 200, 20) +NEXT za + +END SUB + +SUB setupal +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r +END SUB + +SUB square (x1, y1, x2, y2, c, h) + +FOR y = y1 TO y2 +FOR x = x1 TO x2 +landh(x, y) = h +landc(x, y) = c +NEXT x +NEXT y + +END SUB + +SUB start +SCREEN 13 +'PRINT "please wait..." + +setupal + +zmyan = 4.14 +myan2 = 100 +ste = 1 +stem = ste - 1 +dist = 190 +tim$ = TIME$ +zmyx = 170 +zmyy = 170 +zmyz = 20 + +END SUB + +SUB tower (x, y) + +FOR a = 10 TO 0 STEP -1 +square x - a, y - a, x + a, y + a, getcol(100, 0, a * 20), 20 - a +NEXT a + +square x - 11, y - 11, x - 9, y - 9, getcol(255, 0, 0), 20 +square x + 9, y - 11, x + 11, y - 9, getcol(0, 255, 0), 20 +square x - 11, y + 9, x - 9, y + 11, getcol(0, 0, 255), 20 +square x + 9, y + 9, x + 11, y + 11, getcol(255, 255, 0), 20 + + +END SUB + +SUB traceline (x, y, xl) + +IF x < 0 THEN +zpr = myx / (myx - x) +x = 0 +y = myy - ((myy - y) * zpr) +END IF + +IF y < 0 THEN +zpr = myy / (myy - y) +y = 0 +x = myx - ((myx - x) * zpr) +END IF + +IF x > 180 THEN +zpr = (180 - myx) / (x - myx) +x = 180 +y = myy - ((myy - y) * zpr) +END IF + +IF y > 180 THEN +zpr = (180 - myy) / (y - myy) +y = 180 +x = myx - ((myx - x) * zpr) +END IF + +lp = SQR(ABS(myx - x) ^ 2 + ABS(myy - y) ^ 2) + +xp = x - myx +yp = y - myy + +yo = 200 + +FOR a = 1 TO lp + cx = xp * a / lp + myx + cy = yp * a / lp + myy + yn = myan2 - ((landh(cx, cy) - myz) * 300) / a + IF yn < yo THEN LINE (xl, yn)-(xl + stem, yo - 1), landc(cx, cy), BF: yo = yn +NEXT a +LINE (xl, yo - 1)-(xl + stem, 0), sky, BF + +END SUB + +SUB updateland + +frm = frm + 1 +ste = 4 +stem = ste - 1 + + +zmyan = frm / 15 + pi +'myan2 = myan2 + 5 +'zmyx = SIN(zmyan) * 3 + zmyx +'zmyy = COS(zmyan) * 3 + zmyy +'zmyzs = 2 + +zmyx = 90 - SIN(zmyan) * 91 +zmyy = 90 - COS(zmyan) * 91 + +IF zmyx > 170 THEN zmyx = 170 +IF zmyy > 170 THEN zmyy = 170 +IF zmyx < 10 THEN zmyx = 10 +IF zmyy < 10 THEN zmyy = 10 + +zmyz = SIN(zmyan / 2) * 4 + 4 +zmyz = SIN(zmyan / 2) * 50 + 50 +myan2 = -SIN(zmyan / 2) * 120 + 121 +myan2 = -(SIN(zmyan / 2) * 10 + 10) +IF zmyz < landh(myx, myy) + 10 THEN zmyz = landh(myx, myy) + 10: zmyzs = (zmyzs / 2) + .2 + +myz = zmyz +myy = zmyy +myx = zmyx + +END SUB + diff --git a/graphics/presentations/KHK j6ulud/run.bat b/graphics/presentations/KHK j6ulud/run.bat new file mode 100755 index 0000000..43fe403 --- /dev/null +++ b/graphics/presentations/KHK j6ulud/run.bat @@ -0,0 +1 @@ +qb /run khkdemo.bas \ No newline at end of file diff --git a/graphics/presentations/Stroboscope/athoms.bas b/graphics/presentations/Stroboscope/athoms.bas new file mode 100755 index 0000000..7c28b33 --- /dev/null +++ b/graphics/presentations/Stroboscope/athoms.bas @@ -0,0 +1,52 @@ +' Genetare animation +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +SCREEN 13 +DIM SHARED byt AS STRING * 1 + +s = 100 +f = 0 +n1 = 97 +n2 = 97 + +1 +f = f + 1 +tmx = 320 * s / 30 +tmy = 200 * s / 30 +x1 = 160 - (tmx / 2) +y1 = 100 - (tmy / 2) +CLS +FOR y = 0 TO 199 +FOR x = 0 TO 319 +x2 = x1 + (tmx * x / 320) +y2 = y1 + (tmy * y / 200) +c = SIN((x2 ^ 2 + y2 ^ 2) / 10) * 6 + 23 +IF c < 16 THEN c = 16 +IF c > 31 THEN c = 31 +PSET (x, y), c +NEXT x +NEXT y + +a$ = "mov" + CHR$(n2) + CHR$(n1) + ".frm" + +OPEN a$ FOR OUTPUT AS #1 + +FOR y = 0 TO 199 +FOR x = 0 TO 319 +c = POINT(x, y) +byt = CHR$(c) +PRINT #1, byt; +NEXT x +NEXT y + +CLOSE #1 + +n1 = n1 + 1 +IF n1 > 122 THEN n1 = 97: n2 = n2 + 1 + +s = s / 1.1 +IF s > 5 THEN GOTO 1 + diff --git a/graphics/presentations/Stroboscope/playmov.asm b/graphics/presentations/Stroboscope/playmov.asm new file mode 100755 index 0000000..80a1a4e --- /dev/null +++ b/graphics/presentations/Stroboscope/playmov.asm @@ -0,0 +1,97 @@ +; Play animation +; made by Svjatoslav Agejenko +; in 2002 +; H-Page: svjatoslav.eu +; E-Mail: svjatoslavagejenko@gmail.com + +[BITS 16] +[ORG 0x100] +[SECTION .text] + +l1: +; mov ah, 9 +; mov dx, file1 +; int 21h + +mov bx, 100 +mov ax,03e8h +mul bx +mov cx,dx +mov dx,ax +mov ah,86h +int 15h + +mov ah, 3dh +xor al, al +mov dx, file1 +int 21h +mov bx, ax +mov word [hand], ax +jc l3 + +mov ah, 3fh ;first +mov cx, 32000 +mov dx, fbuf +int 21h +jc l3 + +mov ax, 0A000h +mov es, ax +mov di, 0 +mov cx, 32000 +mov si, fbuf +rep movsb + +mov ah, 3fh ;Second +mov cx, 32000 +mov dx, fbuf +int 21h +jc l3 + +mov ax, 0A000h +mov es, ax +mov di, 32000 +mov cx, 32000 +mov si, fbuf +rep movsb + + +mov ah, 3eh +mov bx, word [hand] +int 21h + +inc byte[n2] +cmp byte[n2], 123 +jnz l2 +inc byte[n1] +mov byte[n2], 97 +l2: + +inc byte[fra] +cmp byte[fra], 33 +jl l1 +ret + +l3: +mov ah, 9 +mov dx, errmsg +int 21h +ret + +[SECTION .data] +fra db 1 +file1 db 'mov' +n1 db 'a' +n2 db 'a' +file1t db '.frm', 0,'$' +errmsg db 'error$' + +[SECTION .bss] +fbuf resb 33000 +hand resw 1 + + + + + + diff --git a/graphics/presentations/Stroboscope/playmov.com b/graphics/presentations/Stroboscope/playmov.com new file mode 100755 index 0000000..9dff92f Binary files /dev/null and b/graphics/presentations/Stroboscope/playmov.com differ diff --git a/graphics/presentations/Stroboscope/strobo.bas b/graphics/presentations/Stroboscope/strobo.bas new file mode 100755 index 0000000..b752e79 --- /dev/null +++ b/graphics/presentations/Stroboscope/strobo.bas @@ -0,0 +1,467 @@ +' Stroboscope presentation +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB pag4 () +DECLARE SUB getkey (a$) +DECLARE SUB mo () +DEFINT A-Z +DECLARE SUB dra () +DECLARE SUB get3d () +DECLARE SUB pag3 () +DECLARE SUB pag2 () +DECLARE SUB getfnt () +DECLARE SUB prn (x2%, y%, s%, c%, t$) +DECLARE SUB pag1 () + +DECLARE SUB start () + + +DIM SHARED font(0 TO 7, 0 TO 15, 0 TO 207) +DIM SHARED det(1 TO 100) +DIM SHARED px1(1 TO 1000) +DIM SHARED py1(1 TO 1000) +DIM SHARED px2(1 TO 1000) +DIM SHARED py2(1 TO 1000) +DIM SHARED opx1(1 TO 1000) +DIM SHARED opy1(1 TO 1000) +DIM SHARED opx2(1 TO 1000) +DIM SHARED opy2(1 TO 1000) +DIM SHARED linc(1 TO 1000) + +DIM SHARED myx, myy, myz +DIM SHARED myx1, myy1, myz1 +DIM SHARED myx2, myy2, myz2 +DIM SHARED tfra + +DIM SHARED nl + +start + +pag1 +pag2 +pag3 +pag4 +END + +DATA 0,0,5,-2 +DATA 0,0,5,2 +DATA 0, 0, 15, 0 + +DATA 15,-2,15,2 +DATA 25,-2,25,2 +DATA 15,-2,25,-2 +DATA 15,2,25,2 + +DATA 25,0,35,0 +DATA 35,-2,35,2 +DATA 35,-2,40,0 +DATA 35,2,40,0 +DATA 40,-2,40,2 + +DATA 40,0,80,0 +DATA 50,0,50,19 +DATA 48,19,52,19 +DATA 48,21,52,21 +DATA 50,21,50,35 + +DATA 0,35,125,35 +DATA 0,35,5,33 +DATA 0,35,5,37 + +DATA 70,0,70,15 +DATA 70,35,70,20 +DATA 69,16,71,19 +DATA 69,19,71,16 +DATA 67,10,73,10 +DATA 67,25,73,25 +DATA 67,10,67,25 +DATA 73,10,73,25 + +DATA 75,15,75,25 +DATA 75,20,90,20 +DATA 90,20,91,21 +DATA 91,21,90,22 +DATA 90,22,91,23 +DATA 91,23,90,24 +DATA 90,24,91,25 +DATA 91,25,90,26 +DATA 90,26,90,35 + +DATA 93,18,93,28 +DATA 92,18,92,28 + +DATA 95,20,94,21 +DATA 94,21,95,22 +DATA 95,22,94,23 +DATA 94,23,95,24 +DATA 95,24,94,25 +DATA 94,25,95,26 +DATA 95,26,95,35 + +DATA 95, 20, 115, 20 +DATA 115,20,115,15 +DATA 115,7,115,0 +DATA 125,35,125,26 +DATA 123,26,127,26 +DATA 123,24,127,24 +DATA 125,24,125,0 +DATA 125,0,110,0 +DATA 110,-2,110,2 +DATA 100,-2,100,2 +DATA 100,-2,110,-2 +DATA 100,2,110,2 + +DATA 100,0,90,0 +DATA 90,-2,90,2 +DATA 80,-2,80,2 +DATA 80,-2,90,-2 +DATA 80,2,90,2 + +DATA 113,5,117,5 +DATA 113,17,117,17 +DATA 113,5,113,17 +DATA 117,5,117,17 +DATA 115,11,125,11 + +DATA 105,-2,105,-5 +DATA 105,-5,113,-5 +DATA 113,-5,113,0 +DATA 105,-2,104,-4 +DATA 105,-2,106,-4 + +DATA 999,999,999,999 + +SUB dra + +FOR a = 1 TO nl +x1 = px1(a) - myx +y1 = py1(a) - myy +x2 = px2(a) - myx +y2 = py2(a) - myy + + +x1 = x1 * 30 / myz + 160 +y1 = y1 * 30 / myz + 100 +x2 = x2 * 30 / myz + 160 +y2 = y2 * 30 / myz + 100 +LINE (opx1(a), opy1(a))-(opx2(a), opy2(a)), 0 +LINE (x1, y1)-(x2, y2), linc(a) +opx1(a) = x1 +opy1(a) = y1 +opx2(a) = x2 +opy2(a) = y2 +NEXT a + +END SUB + +SUB get3d + +nl = 0 +5 +READ x1, y1, x2, y2 +IF x1 = 999 THEN GOTO 6 +nl = nl + 1 +px1(nl) = x1 +py1(nl) = y1 +px2(nl) = x2 +py2(nl) = y2 +linc(nl) = 11 +GOTO 5 +6 +'PRINT nl, "of lines loaded" +'a$ = INPUT$(1) +END SUB + +SUB getfnt + +FOR c = 0 TO 15 +OUT &H3C8, c +OUT &H3C9, 0 +OUT &H3C9, 0 +OUT &H3C9, 0 +NEXT c + +FOR a = 0 TO 207 +LOCATE 1, 1 +IF (a > 5) AND (a < 14) THEN GOTO 1 +PRINT CHR$(a) +1 +FOR y = 0 TO 15 +FOR x = 0 TO 7 +font(x, y, a) = POINT(x, y) +NEXT x +NEXT y +NEXT a +END SUB + +SUB getkey (a$) + +FOR a = 1 TO 50 +b$ = INKEY$ +NEXT a + +7 +a$ = INKEY$ +IF a$ = "" THEN GOTO 7 + +FOR a = 1 TO 50 +b$ = INKEY$ +NEXT a + +END SUB + +SUB mo + +myxv = myx2 - myx1 +myyv = myy2 - myy1 +myzv = myz2 - myz1 + +FOR a = 1 TO tfra +myx = myx1 + (myxv * a / tfra) +myy = myy1 + (myyv * a / tfra) +myz = myz1 + (myzv * a / tfra) +dra +SOUND 0, 1 +NEXT a +dra + + + +END SUB + +SUB pag1 + +SCREEN 13 + +a = 0 +FOR c = 16 TO 31 +OUT &H3C8, c +OUT &H3C9, a * 3 +OUT &H3C9, a * 4.5 +OUT &H3C9, a * 0 +a = a + 1 +NEXT c + + +SHELL "playmov.com" + +OUT &H3C8, 101 +OUT &H3C9, 63 +OUT &H3C9, 63 +OUT &H3C9, 0 + +OUT &H3C8, 102 +OUT &H3C9, 63 +OUT &H3C9, 10 +OUT &H3C9, 10 + +OUT &H3C8, 103 +OUT &H3C9, 60 +OUT &H3C9, 60 +OUT &H3C9, 0 + + +a = 0 +FOR c = 50 TO 65 +OUT &H3C8, c +OUT &H3C9, a * 4.5 +OUT &H3C9, a * 0 +OUT &H3C9, (15 - a) * 4.5 +a = a + 1 +NEXT c + +st$ = " Esitlus teemal:" + +FOR t = 0 TO 400 +IF t < 320 THEN +FOR y = 0 TO 199 +c = POINT(319 - t, y) +IF c < 100 THEN c = c + 34 +PSET (319 - t, y), c +NEXT y +x = 319 - t +IF x / 16 = x \ 16 THEN +s = x / 16 +IF s <= LEN(st$) THEN +a$ = RIGHT$(LEFT$(st$, s), 1) +prn x, 20, 2, 101, a$ +END IF +END IF +END IF + +IF (t < 360) AND (t > 39) THEN +FOR y = 0 TO 13 +c = POINT(359 - t, y) +IF c < 100 THEN c = c - 34 +PSET (359 - t, y), c +NEXT y +FOR y = 55 TO 199 +c = POINT(359 - t, y) +IF c < 100 THEN c = c - 34 +PSET (359 - t, y), c +NEXT y +END IF + + +SOUND 0, .2 +NEXT t + +prn 31, 101, 3, 102, "STROBOSKOOP" +prn 29, 99, 3, 102, "STROBOSKOOP" +prn 30, 100, 3, 103, "STROBOSKOOP" + + +FOR x = 0 TO 160 +FOR y = 100 TO 150 +c = POINT(x, y) +IF c = 102 THEN c = 103: GOTO 2 +IF c = 103 THEN c = 102: GOTO 2 +2 +PSET (x, y), c +NEXT y +SOUND 0, .1 +NEXT x + +FOR y = 199 TO 120 STEP -1 +FOR x = 0 TO 319 +c = POINT(x, y) +IF c = 102 THEN c = 103: GOTO 3 +IF c = 103 THEN c = 102: GOTO 3 +3 +PSET (x, y), c +NEXT x +SOUND 0, .1 +NEXT y + +prn 49, 179, 1, 0, "autor: Svjatoslav Agejenko" +prn 51, 181, 1, 0, "autor: Svjatoslav Agejenko" +prn 50, 180, 1, 15, "autor: Svjatoslav Agejenko" + +getkey a$ + +DIM buf(1 TO 30000) +FOR a = 1 TO 320 / 5 +GET (0, 0)-(314, 100), buf(1) +PUT (5, 0), buf(1), PSET +LINE (0, 0)-(4, 100), 0, BF + +GET (5, 101)-(319, 199), buf(1) +PUT (0, 101), buf(1), PSET +LINE (315, 101)-(319, 199), 0, BF +NEXT a + + +END SUB + +SUB pag2 +SCREEN 13 +SCREEN 12 + + +END SUB + +SUB pag3 + +myx1 = 20 +myy1 = 15 +myz1 = 100 +myx2 = 20 +myy2 = 15 +myz2 = 10 +tfra = 20 + +mo + +prn 147, 66, 1, 3, "100 D336B 180k 680k" +prn 180, 120, 1, 3, "50m 450V 1m" +prn 180, 400, 2, 14, "P�him�tteline skeem" + +getkey a$ + +LINE (0, 0)-(639, 390), 0, BF + +myx1 = 20 +myy1 = 15 +myz1 = 10 +myx2 = 80 +myy2 = 5 +myz2 = 4 +tfra = 20 +mo +getkey a$ + +myx1 = 80 +myy1 = 5 +myz1 = 4 +myx2 = 40 +myy2 = 5 +myz2 = 4 +tfra = 20 +mo +getkey a$ + +myx1 = 40 +myy1 = 5 +myz1 = 4 +myx2 = 20 +myy2 = 15 +myz2 = 10 +tfra = 10 +mo +prn 147, 66, 1, 3, "100 D336B 180k 680k" +prn 180, 120, 1, 3, "50m 450V 1m" +getkey a$ + + + + + +END SUB + +SUB pag4 +CLS +SCREEN 13 +prn 35, 100, 2, 14, " T�nan" +prn 35, 140, 2, 14, "t�helepanu eest!" + +DIM buf(1 TO 30000) + +GET (0, 100)-(319, 199), buf(1) +FOR y = 100 TO 50 STEP -1 +PUT (0, y), buf(1), PSET +SOUND 0, .5 +NEXT y + +getkey a$ +SYSTEM +END SUB + +SUB prn (x2, y, s, c, t$) +x = x2 + +FOR a = 1 TO LEN(t$) +b = ASC(RIGHT$(LEFT$(t$, a), 1)) +FOR y1 = 0 TO 15 +FOR x1 = 0 TO 7 +IF font(x1, y1, b) > 0 THEN +LINE (x1 * s + x, y1 * s + y)-(x1 * s + s - 1 + x, y1 * s + s - 1 + y), c, BF +END IF +NEXT x1 +NEXT y1 +x = x + (8 * s) +NEXT a +END SUB + +SUB start +SCREEN 12 +get3d +getfnt + +myx = 30 +myy = 15 +myz = 10 +END SUB + diff --git a/graphics/presentations/tour.bas b/graphics/presentations/tour.bas new file mode 100755 index 0000000..0b227d1 --- /dev/null +++ b/graphics/presentations/tour.bas @@ -0,0 +1,918 @@ +DECLARE SUB setink (a!) +DECLARE SUB inke (a$) +DECLARE SUB mkjuku (x!, y!, a!, c!) +DECLARE SUB pr (x!, y!, s!, c!, n!, a$) +DECLARE SUB wpr () +DECLARE SUB sc7 () +DECLARE SUB sc6 () +DECLARE SUB sc5 () +DECLARE SUB pal4 (c, r!, g!, b!) +DECLARE SUB sc4 () +DECLARE SUB inpur () +DECLARE SUB ef5 () +DECLARE SUB sc3 () +DECLARE SUB prin (x1!, y1!, s!, c, a$) +DECLARE SUB pal3 (r!, g!, b!) +DECLARE SUB mkfont () +DECLARE SUB pal2 (r!, g!, b!) +DECLARE SUB box1 (x1!, y1!, x2!, y2!, c!) +DECLARE SUB mkback () +DECLARE SUB sc2 () +DECLARE SUB resiz () +DECLARE SUB pri (x!, y!, a$, c!) +DECLARE SUB deca (xs!, ys!, fx!, fy!) +DECLARE SUB box (xs!, ys!) +DECLARE SUB ef4 () +DECLARE SUB ef3 () +DECLARE SUB ef2 () +DECLARE SUB ef1 () +DECLARE SUB start () +DECLARE SUB sc1 () +DECLARE SUB pal (x!) +DIM SHARED fontt(0 TO 7, 0 TO 7, 0 TO 255) +DIM SHARED tim +DIM SHARED tim2 +DIM SHARED jas(1 TO 500) +DIM SHARED pii +DIM SHARED tmr +DIM SHARED ink +DIM SHARED tim$ + +start + + +CLS +'GOTO 8 + +sc1 +ef1 +ef2 +ef3 + +ef4 +sc2 +sc4 +8 +sc5 +sc6 + +sc7 +sc3 +ef5 + +SYSTEM + +SUB box (xs, ys) +LINE (0, 186)-(0 + xs, 186 - ys), 15, B +LINE (1, 187)-(-1 + xs, 187 - ys), 25, B +LINE (2, 188)-(-2 + xs, 188 - ys), 15, B +PSET (0, 188), 0 +PSET (0 + xs, 188), 0 +PSET (0, 186 - ys), 0 +PSET (0 + xs, 186 - ys), 0 +END SUB + +DEFINT Z +SUB box1 (x1, y1, x2, y2, c) + +IF c = 1 THEN za = 51 ELSE za = 102 + + +FOR zy = y1 + 7 TO y2 + 7 +FOR zx = x1 + 7 TO x2 + 7 +zc = POINT(zx, zy) +IF zc < 51 THEN +IF zc > 25 THEN zc = 50 - zc +zc = zc / 2 +PSET (zx, zy), zc +END IF +NEXT zx +NEXT zy + +FOR zy = y1 TO y2 +FOR zx = x1 TO x2 +zc = POINT(zx, zy) +IF zc > 50 THEN zc = zc - 51 +PSET (zx, zy), zc + za +NEXT zx +NEXT zy + + +END SUB + +DEFSNG Z +SUB deca (xs, ys, fx, fy) +LINE (0, 185 - ys)-(xs, 185 - ys + fy), 0, BF +LINE (xs, 18 - ys)-(xs - fx, 188), 0, BF +xs = xs - fx +ys = ys - fy +box xs, ys +END SUB + +SUB ef1 + +pal 3 + +'LINE (51, 171)-(270, 190), 25, BF + +DIM buf1(1 TO 10000) +DIM buf2(1 TO 10000) +DIM buf3(1 TO 400) + +FOR a = 1 TO 320 +buf3(a) = 200 +NEXT a + + +b = 0 +c1 = 1 +setink 10 +1 +c1 = c1 + 1 +IF c1 > 50 THEN c1 = 1 +LINE (0, 40)-(0, 43), c1 +c2 = c1 +IF c2 > 25 THEN c2 = 50 - c2 +c2 = c2 - 5 +IF c2 < 0 THEN c2 = 0 +PSET (0, 39), c2 +PSET (0, 44), c2 +LINE (319, 76)-(319, 79), c1 +PSET (319, 75), c2 +PSET (319, 80), c2 + +GET (0, 39)-(318, 44), buf1(1) +PUT (1, 39), buf1(1), PSET + +GET (1, 75)-(319, 80), buf1(1) +PUT (0, 75), buf1(1), PSET + +b = b + 1 +buf3(271) = SIN(b / 50 + 1.57) * 30 + 160 +FOR x = 50 TO 270 +PSET (x, buf3(x) - 1), 0 +IF x > 50 THEN +PSET (x, buf3(x)), 15 +PSET (x, buf3(x) + 1), 20 +PSET (x, buf3(x) + 2), 25 +END IF +buf3(x) = buf3(x + 1) +NEXT x + + +a = 50 +FOR x = 65 + 18 TO 270 STEP 40 +a = a + 1 +IF buf3(x - 1) < 190 THEN +mkjuku x, buf3(x - 1) - 27, x, 0 +mkjuku x, buf3(x) - 27, x, a +END IF +NEXT x + +inke a$ +SOUND 0, .4 +IF a$ = "" THEN GOTO 1 + + +END SUB + +SUB ef2 + +FOR a = 1 TO 30 +e = 0 +c = (3.8 * (30 - a)) / 30 + +FOR f = 0 TO 50 +IF f < 25 THEN e = e + 4 ELSE e = e - c +OUT &H3C8, f +OUT &H3C9, e / 4 +OUT &H3C9, e / 1.9 +OUT &H3C9, e / 3 +NEXT f + +FOR b = 1 TO 3 +SOUND 0, .3 +NEXT b +NEXT a + + + +FOR a = 20 TO 0 STEP -1 +b = (a * 4) / 20 +e = 0 +FOR f = 0 TO 60 +IF f < 25 THEN e = e + b +OUT &H3C8, f +OUT &H3C9, e / 4 +OUT &H3C9, e / 1.9 +OUT &H3C9, e / 3 +NEXT f + +FOR b = 1 TO 2 +SOUND 0, .3 +NEXT b + +NEXT a + +END SUB + +SUB ef3 +SCREEN 7 +SCREEN 7, , , 1 + +OUT &H3C8, 1 +OUT &H3C9, 64 / 4 +OUT &H3C9, 64 / 1.9 +OUT &H3C9, 64 / 3 + +b = 2 +c = .01 +2 +x = x + 1 +y = y + 1 +c = c + .01 +b = b + c + +FOR a = 0 TO 160 STEP b +LINE (160 + a, 0)-(160 + a, 199), 1 +LINE (160 - a, 0)-(160 - a, 199), 1 +LINE (0, 100 + a)-(319, 100 + a), 1 +LINE (0, 100 - a)-(319, 100 - a), 1 +NEXT a + + +PCOPY 0, 1 +CLS +SOUND 0, .4 +IF b < 50 THEN GOTO 2 + +SCREEN 13 +pal 2 + +FOR a = 0 TO 160 STEP b +LINE (160 + a, 0)-(160 + a, 199), 25 +LINE (160 - a, 0)-(160 - a, 199), 25 +LINE (0, 100 + a)-(319, 100 + a), 25 +LINE (0, 100 - a)-(319, 100 - a), 25 +NEXT a + + +resiz +pal 3 + +pri 11, 8, "-* A U T O R I D *-", 55 +pri 10, 11, CHR$(254) + " Danel Makko", 55 +pri 10, 13, CHR$(254) + " Meelis Altma", 55 +pri 10, 15, CHR$(254) + " Svjatoslav Agejenko", 55 +'pri 10, 17, CHR$(254) + " Kenno Kink", 55 +pri 20, 19, "I-01 a. 2001", 55 + +inpur +CLS +END SUB + +SUB ef4 +pal 2 +xs = 317 +ys = 185 +box xs, ys +tey = 20 + +DIM buf4(1 TO 10000) + +b = 0 +setink 10 +COLOR 25 +4 +b = b + 1 + +SELECT CASE b +CASE 50 TO 200 +deca xs, ys, 1, 1 + +CASE 201 +'pal4 255, 63, 45, 0 +'prin 10, tey, 2, 255, "Infoallikas:" +tey = tey + 20 + +CASE 290 +pal4 254, 20, 20, 63 +prin 70, tey, 7, 254, "NETI" +tey = tey + 60 + +CASE 350 +pal4 254, 20, 20, 63 +prin 100, tey, 2, 254, "www.neti.ee" +tey = tey + 20 + +CASE 400 +pal4 254, 20, 20, 63 +prin 100, tey, 2, 254, CHR$(16) + "„ri\turism" +tey = tey + 10 + + +END SELECT + +FOR a = 2 TO (xs - 5) / 8 +LOCATE 23, a +PRINT CHR$(RND * 1 + 48) +NEXT a + +FOR x = 3 TO xs - 3 STEP 8 +GET (x, 183 - ys + 14)-(x + 7, 183), buf4(1) +PUT (x, 183 - ys + 6), buf4(1), PSET +NEXT x + + +inke a$ + +IF a$ <> "" THEN GOTO 3 +wpr +GOTO 4 + + + +3 +END SUB + +SUB ef5 +DIM buf(1 TO 5000) + +FOR a = 1 TO 1000 +x = RND * 298 + 1 +y = RND * 178 + 1 +GET (x, y)-(x + 19, y + 19), buf(1) +IF RND * 100 < 50 THEN x = x + 1 ELSE x = x - 1 +IF RND * 100 < 50 THEN y = y + 1 +PUT (x, y), buf(1), PSET +SOUND 0, .05 +NEXT a + +FOR a = 0 TO 100 +LINE (0, a)-(319, a), 0 +LINE (0, 200 - a)-(319, 200 - a), 0 +SOUND 0, .4 +NEXT a + + +END SUB + +SUB inke (a$) +IF tim$ <> TIME$ THEN +ink = ink - 1 +tim$ = TIME$ +END IF +IF (ink <= 0) AND (tmr = 1) THEN a$ = " " ELSE a$ = "" +IF INKEY$ <> "" THEN a$ = " " +END SUB + +SUB inpur +setink 10 +11 +inke a$ +IF a$ = "" THEN GOTO 11 +END SUB + +DEFINT A-Z +SUB mkback +CLS +lm1 = 0 +lm2 = 50 + +s = 2 ^ 7 + +7 +s = s \ 2 + +FOR y = 0 TO 199 STEP s +FOR x = 0 TO 319 STEP s + +c1 = POINT(x, y) +c2 = POINT(x + s, y) +c3 = POINT(x, y + s) +c4 = POINT(x + s, y + s) + +sp = s \ 2 + +c5 = (c1 + c2 + c3 + c4) / 4 + RND * s - sp +IF c5 > lm2 THEN c5 = lm2 +IF c5 < lm1 THEN c5 = lm1 + +c6 = (c2 + c4) / 2 + RND * s - sp +IF c6 > lm2 THEN c6 = lm2 +IF c6 < lm1 THEN c6 = lm1 + +c7 = (c3 + c4) / 2 + RND * s - sp +IF c7 > lm2 THEN c7 = lm2 +IF c7 < lm1 THEN c7 = lm1 + + +IF INT(RND * 30) = 2 THEN c5 = 50 +PSET (x + sp, y + sp), c5 +PSET (x + s, y + sp), c6 +PSET (x + sp, y + s), c7 + +NEXT x +NEXT y +IF s > 2 THEN GOTO 7 +END SUB + +DEFSNG A-Z +SUB mkfont +SCREEN 13 +FOR a = 0 TO 255 +LOCATE 1, 1 +IF a <> 7 THEN PRINT CHR$(a) + +FOR y = 0 TO 7 +FOR x = 0 TO 7 +fontt(x, y, a) = POINT(x, y) +NEXT x +NEXT y +NEXT a + + +END SUB + +SUB mkjuku (x, y, a, c) +jas(a) = jas(a) + .08 +IF jas(a) > 30000 THEN jas(a) = 0 +b = jas(a) +IF c = 0 THEN b = jas(a) - .08 +x1 = x + COS(b) * 10 +y1 = y + SIN(b) * 5 + 20 + +x2 = x + COS(b) * 5 + 2 +y2 = y + SIN(b) * 3 + 10 + +x3 = x + COS(b + 1) * 2 +y3 = y + SIN(b + 1) * 2 + 2 + + +LINE (x2, y2)-(x1, y1), c +LINE (x2, y2)-(x3, y3), c + + +x1 = x + COS(b + pii) * 10 +y1 = y + SIN(b + pii) * 5 + 20 + +x2 = x + COS(b + pii) * 5 + 2 +y2 = y + SIN(b + pii) * 3 + 10 + +LINE (x2, y2)-(x1, y1), c +LINE (x2, y2)-(x3, y3), c + +x4 = x + COS(b + 1.2) * 3 - 1 +y4 = y + SIN(b + 1.2) * 1 - 10 + +LINE (x4, y4)-(x3, y3), c + +x5 = x + COS(b + .5) * 13 - 3 +y5 = y + SIN(b + .5) * 2 + 1 + +x6 = x + COS(b + .5) * 15 - 1 +y6 = y + SIN(b + .5) * 3 + 4 + +LINE (x5, y5)-(x4, y4), c +LINE (x5, y5)-(x6, y6), c + +x5 = x + COS(b + pii) * 13 - 3 +y5 = y + SIN(b + pii) * 2 + 1 + +x6 = x + COS(b + pii) * 15 - 1 +y6 = y + SIN(b + pii) * 3 + 4 + +LINE (x5, y5)-(x4, y4), c +LINE (x5, y5)-(x6, y6), c + +x7 = x + COS(b + 1.2) * 2 +y7 = y + SIN(b + 1.2) * 1 - 14 + +LINE (x7, y7 + 2)-(x4, y4), c + +CIRCLE (x7, y7), 3, c + + + +END SUB + +SUB pal (x) +SELECT CASE x +CASE 1 +FOR f = 0 TO 25 +OUT &H3C8, f +OUT &H3C9, f * 4.1 +OUT &H3C9, f * 4.1 +OUT &H3C9, f * 4.1 +NEXT f + +CASE 2 +e = 0 +FOR f = 0 TO 50 +IF f < 25 THEN e = e + 4 ELSE e = e - 3.8 +OUT &H3C8, f +OUT &H3C9, e / 4 +OUT &H3C9, e / 1.9 +OUT &H3C9, e / 3 +NEXT f +CASE 3 + +FOR f = 51 TO 60 +OUT &H3C8, f +OUT &H3C9, SIN(f) * 30 + 30 +OUT &H3C9, SIN(f * 2) * 30 + 30 +OUT &H3C9, SIN(f * 3) * 30 + 30 +NEXT f + +CASE 4 +FOR f = 0 TO 25 +OUT &H3C8, f +OUT &H3C9, f * 2.5 +OUT &H3C9, f * 2.5 +OUT &H3C9, f * 1.5 +NEXT f +FOR f = 26 TO 50 +OUT &H3C8, f +OUT &H3C9, (50 - f) * 2.5 +OUT &H3C9, (50 - f) * 2.5 +OUT &H3C9, (50 - f) * 1.5 +NEXT f + +END SELECT + +END SUB + +SUB pal2 (r, g, b) +FOR f = 0 TO 25 +OUT &H3C8, f + 51 +OUT &H3C9, (f * 2.5 + r * 1) / 2 +OUT &H3C9, (f * 2.5 + g * 1) / 2 +OUT &H3C9, (f * 1.5 + b * 1) / 2 +NEXT f +FOR f = 26 TO 50 +OUT &H3C8, f + 51 +OUT &H3C9, ((50 - f) * 2.5 + r * 1) / 2 +OUT &H3C9, ((50 - f) * 2.5 + g * 1) / 2 +OUT &H3C9, ((50 - f) * 1.5 + b * 1) / 2 +NEXT f +END SUB + +SUB pal3 (r, g, b) +FOR f = 0 TO 25 +OUT &H3C8, f + 102 +OUT &H3C9, (f * 2.5 + r * 1) / 2 +OUT &H3C9, (f * 2.5 + g * 1) / 2 +OUT &H3C9, (f * 1.5 + b * 1) / 2 +NEXT f +FOR f = 26 TO 50 +OUT &H3C8, f + 102 +OUT &H3C9, ((50 - f) * 2.5 + r * 1) / 2 +OUT &H3C9, ((50 - f) * 2.5 + g * 1) / 2 +OUT &H3C9, ((50 - f) * 1.5 + b * 1) / 2 +NEXT f +END SUB + +SUB pal4 (c, r, g, b) +OUT &H3C8, c +OUT &H3C9, r +OUT &H3C9, g +OUT &H3C9, b +END SUB + +SUB pr (x, y, s, c, n, a$) +IF n > LEN(a$) THEN GOTO 10 +a$ = RIGHT$(LEFT$(a$, n), 1) +x1 = n * 8 * s + x +prin x1, y, s, c, a$ +10 +END SUB + +SUB pri (x, y, a$, c) +COLOR c +FOR a = 1 TO LEN(a$) +b$ = RIGHT$(LEFT$(a$, a), 1) +LOCATE y, x + a +PRINT b$ +SOUND 0, 1 +NEXT a + + +END SUB + +SUB prin (x1, y1, s, c1, a$) + +FOR a = 1 TO LEN(a$) +b = ASC(RIGHT$(LEFT$(a$, a), 1)) +c = (a - 1) * 8 * s + x1 +FOR y = 0 TO 7 +FOR x = 0 TO 7 +IF fontt(x, y, b) > 0 THEN +LINE (x * s + c, y * s + y1)-(x * s + s - 1 + c, y * s + s - 1 + y1), c1, BF +END IF +NEXT x +NEXT y + +NEXT a + +END SUB + +SUB resiz + + +FOR a = 1 TO 10 +CIRCLE (160, 100), a, a * 2 + 5 +NEXT a +PSET (160, 100), 0 + +DIM buff1(1 TO 10000) +DIM buff2(1 TO 10000) + +a = 10 +GET (160 - a, 90)-(160, 110), buff1(1) +GET (160, 90)-(160 + a, 110), buff2(1) +5 +PUT (159 - a, 90), buff1(1), PSET +PUT (150 + a, 90), buff2(1), PSET +a = a + 1 +SOUND 0, .2 +IF a < 140 THEN GOTO 5 + +a = 1 + +GET (20, 90)-(300, 100), buff1(1) +GET (20, 100)-(300, 110), buff2(1) +6 +PUT (20, 90 - a), buff1(1), PSET +PUT (20, 100 + a), buff2(1), PSET + +a = a + 1 +SOUND 0, .2 +IF a < 60 THEN GOTO 6 +END SUB + +SUB sc1 + +pal 2 +LOCATE 1, 1 +COLOR 1 +PRINT "TURISM" + +FOR x = 0 TO 80 +FOR y = 0 TO 16 +c = POINT(x, y) +IF c > 0 THEN c1 = 50 ELSE c1 = 0 +LINE (x * 5 + 35, y * 3 + 50)-(x * 5 + 4 + 35, y * 3 + 2 + 50), c1, BF +NEXT y +NEXT x + +LOCATE 1, 1 +PRINT " " + + +FOR y = 30 TO 80 +FOR x = 0 TO 319 +c = POINT(x, y) +c1 = (c1 * 1 + c) / 2 +PSET (x, y), c1 +NEXT x +NEXT y + +FOR x = 0 TO 319 +FOR y = 30 TO 80 +c = POINT(x, y) +c1 = (c1 * 1 + c) / 2 +PSET (x, y), c1 +NEXT y +NEXT x + +FOR y = 30 TO 80 +FOR x = 319 TO 0 STEP -1 +c = POINT(x, y) +c1 = (c1 * 1 + c) / 2 +PSET (x, y), c1 +NEXT x +NEXT y + +FOR x = 0 TO 319 +FOR y = 80 TO 30 STEP -1 +c = POINT(x, y) +c1 = (c1 * 1 + c) / 2 +PSET (x, y), c1 +NEXT y +NEXT x + + + + + + +END SUB + +SUB sc2 + +CLS +pal 4 +mkback + +pal2 40, 64, 63 +pal3 0, 0, 0 + +box1 30, 30, 290, 170, 1 + +prin 65, 50, 3, 0, "Eesm„rk:" + +prin 40, 100, 1, 0, CHR$(254) + " Uurida, interneti kaudu tu-" +prin 40, 108, 1, 0, " rismifirmade poolt pakutavaid" +prin 40, 116, 1, 0, " teenuseid." +prin 40, 130, 1, 0, CHR$(254) + " Saada hinne." + + +inpur + +END SUB + +SUB sc3 +mkback + +pal2 64, 64, 0 +box1 30, 30, 290, 150, 1 + +prin 57, 50, 3, 0, " T„nan" +prin 45, 74, 3, 0, "t„helepanu" +prin 45, 98, 3, 0, " eest" +inpur + +END SUB + +SUB sc4 + +pal 4 +mkback + + + +pal2 0, 0, 32 +box1 3, 3, 260, 50, 1 + +pal4 255, 50, 50, 0 +prin 10, 10, 2, 255, "Eesti Reisiinfo" +prin 50, 30, 1, 255, "www.reisiinfo.ee" + +pal3 10, 20, 0 +box1 20, 40, 290, 180, 2 + +pal4 254, 63, 45, 0 + + +b = 25 +prin 40, 60, 1, 254, CHR$(254) + " Eestisisesed reisid" +a = b +prin 40, 60 + a, 1, 254, CHR$(254) + " Reisiv“imaluste tutvustus" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " Otsingumootor" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " Valida sobiv tegevus" + + +inpur + + + + +END SUB + +SUB sc5 +pal 4 +mkback + +pal2 0, 0, 32 +box1 3, 3, 300, 50, 1 + +pal4 255, 50, 50, 0 +prin 10, 10, 2, 255, "Wristours" +prin 50, 30, 1, 255, "www.wristours.ee" + +pal3 20, 32, 63 +box1 20, 40, 290, 180, 2 + +pal4 254, 63, 45, 0 +b = 25 +prin 40, 60, 1, 254, CHR$(254) + " Reisid le maailma" +a = b +prin 40, 60 + a, 1, 254, CHR$(254) + " Väimalus tellida" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " Info viisade kohta" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " V“imalus liisinguks" + +inpur + + + +END SUB + +SUB sc6 +pal 4 +mkback + +pal2 0, 0, 32 +box1 3, 3, 300, 50, 1 + +pal4 255, 50, 50, 0 +prin 10, 10, 2, 255, "F R I S O N" +prin 50, 30, 1, 255, "www.frison.ee" + +pal3 30, 20, 10 +box1 20, 40, 290, 180, 2 + +pal4 254, 63, 45, 0 +b = 25 +prin 40, 60, 1, 254, CHR$(254) + " Aktiivne puhkus" +a = b +prin 40, 60 + a, 1, 254, CHR$(254) + " Reisipaiga valik" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " V“imalused registreerida" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " Tellimusreisid" + +inpur + + + + +END SUB + +SUB sc7 +pal 4 +mkback + +pal2 0, 0, 32 +box1 3, 3, 300, 50, 1 + +pal4 255, 50, 50, 0 +prin 10, 10, 2, 255, "Last Minute" +prin 50, 30, 1, 255, "www.lastminute.ee" + +pal3 20, 32, 63 +box1 20, 40, 290, 180, 2 + +pal4 254, 63, 45, 0 +b = 25 +prin 40, 60, 1, 254, CHR$(254) + " Reisid" +a = b +prin 40, 60 + a, 1, 254, CHR$(254) + " Valida sihtkoht" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " V“imalused tellida reis" +a = a + b +prin 40, 60 + a, 1, 254, CHR$(254) + " V“imalus reisikindlustuseks" + +inpur + + + + +END SUB + +SUB setink (a) +ink = a +tim$ = TIME$ +END SUB + +SUB start +SCREEN 13 +RANDOMIZE TIMER + +mkfont +tim = 0 +tim2 = 0 + + +FOR a = 1 TO 500 +jas(a) = RND * 10 +NEXT a + +pii = 3.14 +IF COMMAND$ = "t" OR COMMAND$ = "T" THEN +tmr = 1 +PRINT "timer is on" +SLEEP 1 +ELSE +tmr = 0 +END IF +END SUB + +SUB wpr +tim = tim + 1 +IF tim \ 10 = tim / 10 THEN +a = tim / 10 +SELECT CASE tim2 +CASE 0 +IF a = 10 THEN tim2 = 1: tim = 0: pal4 255, 63, 45, 0 +CASE 1 +pr 10, 10, 2, 255, a, "Infoallikas:" + + +END SELECT +END IF +END SUB + diff --git a/graphics/spirals/spiral2.bas b/graphics/spirals/spiral2.bas new file mode 100755 index 0000000..a98ad88 --- /dev/null +++ b/graphics/spirals/spiral2.bas @@ -0,0 +1,40 @@ +' spiral +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB linem (x1!, y1!, x2!, y2!, col!) +DIM SHARED linevx(1 TO 100) +DIM SHARED linevy(1 TO 100) +DIM SHARED z +DIM SHARED zz +SCREEN 12 +su = 200 +z = 0 +FOR a = 1 TO 30 STEP .1 +su = (30 - a) * 7 +x = SIN(a) * su + 200 +y = COS(a) * su + 200 +zz = a +linem x + (x / 2) + (a * 3), (y - (x / 3)) + (a * 3), x + 25, y + 25 - (a * 3), z +z = 15 +NEXT a + +a$ = INPUT$(1) +SYSTEM + +SUB linem (x1, y1, x2, y2, col) +x3 = (x2 - x1) / zz +y3 = (y2 - y1) / zz + +FOR a = 1 TO zz +IF linevx(a) > 0 THEN LINE (linevx(a), linevy(a))-(x1, y1), col +linevx(a) = x1 +linevy(a) = y1 +x1 = x1 + x3 +y1 = y1 + y3 +LINE (linevx(a), linevy(a))-(x1, y1), col +NEXT a +END SUB + diff --git a/graphics/spirals/spiral4.bas b/graphics/spirals/spiral4.bas new file mode 100755 index 0000000..184362b --- /dev/null +++ b/graphics/spirals/spiral4.bas @@ -0,0 +1,30 @@ +' spiral +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DIM SHARED torux(1 TO 10000) +DIM SHARED toruy(1 TO 10000) +DIM SHARED tor +SCREEN 12 +su = 200 +tor = 0 +FOR a = 1 TO 100 STEP .05 +tor = tor + 1 +su = 100 - a +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 300 +y = y + (SIN((a + 20) / 10) * a) +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +FOR a = 1 TO tor - 125 +LINE (torux(a), toruy(a))-(torux(a + 125), toruy(a + 125)), 15 +NEXT a + +a$ = INPUT$(1) +SYSTEM + diff --git a/graphics/spirals/spiral6.bas b/graphics/spirals/spiral6.bas new file mode 100755 index 0000000..4c588e2 --- /dev/null +++ b/graphics/spirals/spiral6.bas @@ -0,0 +1,50 @@ +' spiral +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DIM SHARED torux(1 TO 10000) +DIM SHARED toruy(1 TO 10000) +DIM SHARED sinus1(1 TO 10000) +DIM SHARED sinus2(1 TO 10000) +DIM SHARED tor +SCREEN 12 +su = 200 +tor = 0 +FOR a = 1 TO 150 STEP .05 +tor = tor + 1 +su = 150 - a +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 300 +y = y + (SIN((a + 20) / 10) * (a / 5 + 1)) +sinus1(tor) = SIN(a) +sinus2(tor) = SIN((a + 20) / 10) +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +FOR a = 1 TO tor - 127 +LINE (torux(a), toruy(a))-(torux(a + 126), toruy(a + 126)), 15 + +tee = 1 +IF sinus1(a) > .8 AND sinus2(a) < sinus2(a + 125) THEN tee = 0 +IF sinus1(a) < -.2 AND sinus2(a) - .4 > sinus2(a + 125) THEN tee = 0 +IF tee = 1 THEN LINE (torux(a), toruy(a))-(torux(a + 1), toruy(a + 1)), 15 + +tee = 0 +IF sinus1(a) > .8 AND sinus2(a) > sinus2(a + 125) THEN tee = 1 +IF sinus1(a) < -.2 AND sinus2(a) < sinus2(a + 125) THEN tee = 1 +IF tee = 1 THEN LINE (torux(a), toruy(a))-(torux(a + 127), toruy(a + 127)), 15 + +tee = 0 +IF sinus1(a) > .9 AND sinus2(a) > sinus2(a + 125) THEN tee = 1 +IF sinus1(a) < -.5 AND sinus2(a) < sinus2(a + 125) THEN tee = 1 +IF tee = 1 THEN LINE (torux(a), toruy(a))-(torux(a + 125), toruy(a + 125)), 15 + +NEXT a + +a$ = INPUT$(1) +SYSTEM + diff --git a/graphics/spirals/spiral7.bas b/graphics/spirals/spiral7.bas new file mode 100755 index 0000000..6a5c6c0 --- /dev/null +++ b/graphics/spirals/spiral7.bas @@ -0,0 +1,65 @@ +' Spiral +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DIM SHARED torux(1 TO 10000) +DIM SHARED toruy(1 TO 10000) +DIM SHARED tor +SCREEN 12 +su = 200 +tor = 0 +FOR a = 0 TO 97.35 STEP .15 +tor = tor + 1 +su = SIN(a / 31) * 100 +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 250 +y = y - (COS(a / 31) * 200) +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +FOR a = 97.35 TO 0 STEP -.15 +tor = tor + 1 +su = SIN(a / 31) * 50 +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 350 +y = y - (COS(a / 31) * 100) +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +FOR a = 0 TO 97.35 STEP .15 +tor = tor + 1 +su = SIN(a / 31) * 25 +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 300 +y = y - (COS(a / 31) * 50) +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +FOR a = 97.35 TO 0 STEP -.15 +tor = tor + 1 +su = SIN(a / 31) * 12.5 +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 325 +y = y - (COS(a / 31) * 25) +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +zzx = (tor - 42) / 4 +CLS +FOR a = 1 TO zzx * 4 +LINE (torux(a), toruy(a))-(torux(a + 42), toruy(a + 42)), 15 +LINE (torux(a), toruy(a))-(torux(a + 1), toruy(a + 1)), 15 +NEXT a +a$ = INPUT$(1) +SYSTEM + diff --git a/graphics/spirals/spiral8.bas b/graphics/spirals/spiral8.bas new file mode 100755 index 0000000..bc3c267 --- /dev/null +++ b/graphics/spirals/spiral8.bas @@ -0,0 +1,84 @@ +' Spiral +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + +DECLARE SUB fill (x1, y1, x2, y2, xx1, yy1, xx2, yy2) +DIM SHARED torux(1 TO 10000) +DIM SHARED toruy(1 TO 10000) +DIM SHARED sin1(1 TO 10000) +DIM SHARED cos1(1 TO 10000) +DIM SHARED tor +SCREEN 12 +su = 200 +tor = 0 +FOR a = 1 TO 97 STEP .15 +tor = tor + 1 +su = SIN(a / 31) * 100 +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 250 +y = y - (COS(a / 31) * 200) +sin1(tor) = a +cos1(tor) = a / 31 +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a +OPEN "texture.dat" FOR INPUT AS #1 +DIM SHARED text$(1 TO 1000) +a = 0 +1 +LINE INPUT #1, a$ +IF LEFT$(a$, 3) = "END" THEN GOTO 2 +a = a + 1 +text$(a) = a$ +GOTO 1 +2 +CLOSE #1 +CLS +a = 1 +FOR c = 1 TO 20 +FOR b = 1 TO LEN(text$(c)) +a$ = RIGHT$(LEFT$(text$(c), b), 1) +a = a + 1 +IF a > tor - 43 THEN GOTO 3 +tee = SIN(sin1(a + 32)) +tee = tee - COS(cos1(a)) + +IF tee <= 0 THEN +LINE (torux(a), toruy(a))-(torux(a + 1), toruy(a + 1)), 15 +LINE (torux(a), toruy(a))-(torux(a + 42), toruy(a + 42)), 15 +IF a$ = "M" THEN fill torux(a), toruy(a), torux(a + 1), toruy(a + 1), torux(a + 42), toruy(a + 42), torux(a + 43), toruy(a + 43) +END IF + +NEXT b +NEXT c +3 +a$ = INPUT$(1) +SYSTEM + +SUB fill (zx1, zy1, zx2, zy2, zxx1, zyy1, zxx2, zyy2) +x1 = zx1 +y1 = zy1 +x2 = zx2 +y2 = zy2 +xx1 = zxx1 +yy1 = zyy1 +xx2 = zxx2 +yy2 = zyy2 +j = 10 +x3 = (x2 - x1) / j +y3 = (y2 - y1) / j +xx3 = (xx2 - xx1) / j +yy3 = (yy2 - yy1) / j +FOR a = 1 TO j +x1 = x1 + x3 +y1 = y1 + y3 +xx1 = xx1 + xx3 +yy1 = yy1 + yy3 +LINE (x1, y1)-(xx1, yy1), 15 +NEXT a +END SUB + diff --git a/graphics/spirals/spiral9.bas b/graphics/spirals/spiral9.bas new file mode 100755 index 0000000..c5eec9f --- /dev/null +++ b/graphics/spirals/spiral9.bas @@ -0,0 +1,119 @@ +' Spiral +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB fill (x1, y1, x2, y2, xx1, yy1, xx2, yy2, hel) +DIM SHARED torux(1 TO 10000) +DIM SHARED toruy(1 TO 10000) +DIM SHARED sin1(1 TO 10000) +DIM SHARED cos1(1 TO 10000) +DIM SHARED tor + + + +SCREEN 12 +su = 200 +tor = 0 + +FOR a = 1 TO 97 STEP .15 'CALCULATE POINTS +tor = tor + 1 +su = SIN(a / 31) * 100 +x = SIN(a) * su * 3 + 320 +y = COS(a) * su + 250 +y = y - (COS(a / 31) * 200) +sin1(tor) = a +cos1(tor) = a / 31 +torux(tor) = x +toruy(tor) = y +PSET (x, y), 15 +NEXT a + +OPEN "texture1.dat" FOR INPUT AS #1 +DIM SHARED text$(1 TO 1000) + +a = 0 +1 +LINE INPUT #1, a$ +IF LEFT$(a$, 3) = "END" THEN GOTO 2 + +a = a + 1 +text$(a) = a$ +GOTO 1 +2 +CLOSE #1 + +CLS +a = 1 +FOR c = 1 TO 20 +FOR b = 1 TO LEN(text$(c)) +a$ = RIGHT$(LEFT$(text$(c), b), 1) + +a = a + 1 +IF a > tor - 43 THEN GOTO 3 +tee = SIN(sin1(a + 32)) +tee = tee - COS(cos1(a)) + +IF tee <= 0 THEN +LINE (torux(a), toruy(a))-(torux(a + 1), toruy(a + 1)), 15 +LINE (torux(a), toruy(a))-(torux(a + 42), toruy(a + 42)), 15 +hel = 10 +hel1 = COS(cos1(a) - 1) + .5 +hel2 = SIN(sin1(a) + 1) + 1 +IF hel2 > 1 AND hel1 > 1 THEN +hel3 = (hel2 - 1) * (hel1 - 1) * 8 +hel = hel / (hel3 + 1) +END IF + +IF a$ = "M" THEN hel = hel / 3 +fill torux(a), toruy(a), torux(a + 1), toruy(a + 1), torux(a + 42), toruy(a + 42), torux(a + 43), toruy(a + 43), hel +END IF + +NEXT b +NEXT c +3 +a$ = INPUT$(1) +SYSTEM + +SUB fill (zx1, zy1, zx2, zy2, zxx1, zyy1, zxx2, zyy2, hel) + +' x1,y1 ---------------- xx1,yy1 hel - brightness +' | | +' | | +' | | +' x2,y2 ---------------- xx2,yy2 +' +x1 = zx1 +y1 = zy1 +x2 = zx2 +y2 = zy2 +xx1 = zxx1 +yy1 = zyy1 +xx2 = zxx2 +yy2 = zyy2 + +j1 = x1 - x2 +j2 = y1 - y2 +j3 = SQR((j1 * j1) + (j2 * j2)) + +j4 = xx1 - xx2 +j5 = yy1 - yy2 +j6 = SQR((j4 * j4) + (j5 * j5)) + +j7 = (j3 + j6) / 2 +j = j7 / hel + +x3 = (x2 - x1) / j +y3 = (y2 - y1) / j +xx3 = (xx2 - xx1) / j +yy3 = (yy2 - yy1) / j +FOR a = 1 TO j +x1 = x1 + x3 +y1 = y1 + y3 +xx1 = xx1 + xx3 +yy1 = yy1 + yy3 +LINE (x1, y1)-(xx1, yy1), 15 +NEXT a +END SUB + diff --git a/graphics/spirals/texture.dat b/graphics/spirals/texture.dat new file mode 100755 index 0000000..646d9b0 --- /dev/null +++ b/graphics/spirals/texture.dat @@ -0,0 +1,54 @@ +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M. +.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M +END + diff --git a/graphics/spirals/texture1.dat b/graphics/spirals/texture1.dat new file mode 100755 index 0000000..3f591e5 --- /dev/null +++ b/graphics/spirals/texture1.dat @@ -0,0 +1,35 @@ +.......................................... +...........................MMM.M.M.MM..... +............................M..MMM.M...... +............................M..M.M.MM..... +...................................M...... +............................MM.....MM..... +............................M............. +............................MM.MM..MM..... +............................M..M.M.M.M.... +............................MM.M.M.MM..... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +.......................................... +END + diff --git a/graphics/strange2.bas b/graphics/strange2.bas new file mode 100755 index 0000000..35a4f9c --- /dev/null +++ b/graphics/strange2.bas @@ -0,0 +1,41 @@ +' Svjatoslav Agejenko 2000 + + +DECLARE SUB lu (x%, y%, l%, c2%) +DEFINT A-Z +SCREEN 12 + +FOR a = 0 TO 16 +OUT &H3C8, a +OUT &H3C9, a * 4 +OUT &H3C9, a * 4 +OUT &H3C9, a * 4 +NEXT + +FOR x = 0 TO 200 +y = SQR((200 - x) * x) / 2 +lu x + 200, y + 200, y * 2, t +LINE (x + 200, y + 202)-(x + 200, y + 250), t +IF x < 195 THEN +LINE (300 + ((x - 100) / 2), y / 2 + 328)-(x + 200, y + 252), t +END IF +LINE (300 + ((x - 100) / 2), y / 2 + 330)-(300 + ((x - 100) / 2), y / 2 + 370), t +NEXT x + +SUB lu (x, y, l, c2) + +c = 650 - y - x +1 +IF c > 30 THEN c = c - 30: GOTO 1 +c2 = c +IF c2 > 15 THEN c2 = 30 - c2 + +FOR y1 = y TO y - l STEP -1 +c1 = c +IF c1 > 15 THEN c1 = 30 - c1 +PSET (x, y1), c1 +c = c + 1 +IF c > 30 THEN c = c - 30 +NEXT y1 +END SUB + diff --git a/graphics/texture generation/map1.bas b/graphics/texture generation/map1.bas new file mode 100755 index 0000000..d276b55 --- /dev/null +++ b/graphics/texture generation/map1.bas @@ -0,0 +1,36 @@ +' surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DEFINT A-Z +SCREEN 13 +RANDOMIZE TIMER + +FOR a = 0 TO 255 +OUT &H3C8, a +OUT &H3C9, SIN(a / 21) * 30 + 30 +OUT &H3C9, SIN(a / 34) * 30 + 30 +OUT &H3C9, SIN(a / 10) * 30 + 30 +NEXT a + + + +FOR y = 1 TO 199 +FOR x = 1 TO 319 +c1 = POINT(x, y - 1) +c2 = POINT(x - 1, y) +c3 = POINT(x - 1, y - 1) +c4 = POINT(x - 2, y) +c = (c1 + c2 + c3 + c4) \ 4 + (RND * 5 - 2) +IF c < 0 THEN c = 0 +IF c > 63 THEN c = 63 +PSET (x, y), c +NEXT x +NEXT y + +a$ = INPUT$(1) + +SYSTEM + diff --git a/graphics/texture generation/map2.bas b/graphics/texture generation/map2.bas new file mode 100755 index 0000000..c38add6 --- /dev/null +++ b/graphics/texture generation/map2.bas @@ -0,0 +1,35 @@ +' Old paper surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DEFINT A-Z +SCREEN 13 +RANDOMIZE TIMER +FOR a = 0 TO 63 +OUT &H3C8, a +OUT &H3C9, a 'R +OUT &H3C9, a 'G +OUT &H3C9, a 'B +NEXT a + +z = 0 + +FOR y = 1 TO 190 +FOR x = 1 TO 310 +p = p + 1 +IF p > 10 THEN z = RND * c / 20: p = p - (RND * 20 + 10) +c1 = POINT(x, y - 1) +c = (c1 + c) \ 2 + ((RND * 2) - z) +IF c < 0 THEN c = 0 +IF c > 63 THEN c = 63 +PSET (x - 1, y), c + +NEXT x +PSET (0, y + 1), c +NEXT y +a$ = INPUT$(1) + +SYSTEM + diff --git a/graphics/texture generation/map3.bas b/graphics/texture generation/map3.bas new file mode 100755 index 0000000..8d346cb --- /dev/null +++ b/graphics/texture generation/map3.bas @@ -0,0 +1,86 @@ +' Cloud surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB box (x1%, y1%, s%) +DECLARE SUB setpal () +DECLARE SUB start () +DEFINT A-Z +start + +DIM SHARED lm +lm = 127 + + +s = 2 ^ 8 +1 +s = s \ 2 +x1 = (319 \ s) - 1 +y1 = (199 \ s) - 1 + +FOR y = 0 TO y1 +FOR x = 0 TO x1 +box x * s, y * s, s +NEXT x +NEXT y +IF s > 2 THEN GOTO 1 +a$ = INPUT$(1) +SYSTEM + +SUB box (x1, y1, s) +c1 = POINT(x1, y1) +c2 = POINT(x1 + s, y1) +c3 = POINT(x1, y1 + s) +c4 = POINT(x1 + s, y1 + s) + +sp = s \ 2 +k = s * 2 +kp = k / 2 + +cc2 = ((c1 + c2) / 2) + (RND * k) - kp +IF cc2 > lm THEN cc2 = lm +IF cc2 < 0 THEN cc2 = 0 + +cc3 = ((c1 + c3) / 2) + (RND * k) - kp +IF cc3 > lm THEN cc3 = lm +IF cc3 < 0 THEN cc3 = 0 + +cc4 = ((c2 + c4) / 2) + (RND * k) - kp +IF cc4 > lm THEN cc4 = lm +IF cc4 < 0 THEN cc4 = 0 + +cc5 = ((c3 + c4) / 2) + (RND * k) - kp +IF cc5 > lm THEN cc5 = lm +IF cc5 < 0 THEN cc5 = 0 + +cc1 = ((cc2 + cc3 + cc4 + cc5) / 4) + (RND * k) - kp +IF cc1 > lm THEN cc1 = lm +IF cc1 < 0 THEN cc1 = 0 + + + +PSET (x1 + sp, y1 + sp), cc1 +PSET (x1 + sp, y1), cc2 +PSET (x1, y1 + sp), cc3 +PSET (x1 + s, y1 + sp), cc4 +PSET (x1 + sp, y1 + s), cc5 + +END SUB + +SUB setpal +FOR a = 0 TO 255 +OUT &H3C8, a +OUT &H3C9, a / 4 +OUT &H3C9, a / 3 +OUT &H3C9, a / 2.3 +NEXT a +END SUB + +SUB start +SCREEN 13 +setpal +RANDOMIZE TIMER +END SUB + diff --git a/graphics/texture generation/oldpaper.bas b/graphics/texture generation/oldpaper.bas new file mode 100755 index 0000000..35beca9 --- /dev/null +++ b/graphics/texture generation/oldpaper.bas @@ -0,0 +1,51 @@ +' Old paper surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB paper (x1%, y1%, x2%, y2%) +DEFINT A-Z +SCREEN 12 +RANDOMIZE TIMER +FOR a = 0 TO 15 +OUT &H3C8, a +OUT &H3C9, a * 3 +OUT &H3C9, a * 3 +OUT &H3C9, a * 2 +NEXT a + +1 +x1 = RND * 600 + 20 +x2 = RND * 600 + 20 +y1 = RND * 400 + 40 +y2 = RND * 400 + 40 +IF x1 > x2 THEN SWAP x1, x2 +IF y1 > y2 THEN SWAP y1, y2 +paper x1, y1, x2, y2 +GOTO 1 + +a$ = INPUT$(1) + +SYSTEM + +SUB paper (x1, y1, x2, y2) +yl = y2 + 1 +z = 0 +LINE (x1, y1)-(x2, y1), 0 +LINE (x2, y1)-(x2, y2), 0 +FOR y = y1 + 1 TO y2 +c = 0 +FOR x = x1 TO x2 +p = p + 1 +IF p > 23 THEN z = RND * 1: p = 0 +c1 = POINT(x, y - 1) +c = (c1 + c) / 2 + (RND * (2 + (5 / y)) - (3 / (yl - y))) - z +IF c < 0 THEN c = 0 +IF c > 15 THEN c = 15 +PSET (x - 1, y), c +NEXT x +NEXT y + +END SUB + diff --git a/graphics/texture generation/test3.bas b/graphics/texture generation/test3.bas new file mode 100755 index 0000000..a08b47a --- /dev/null +++ b/graphics/texture generation/test3.bas @@ -0,0 +1,19 @@ +' Strange surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +SCREEN 13 + +FOR y = 1 TO 199 +FOR x = 1 TO 319 +c = SIN((x ^ 2 + y ^ 2) / 10) * 10 +IF c < 0 THEN c = 0 +IF c > 15 THEN c = 15 +PSET (x, y), c + 16 +NEXT x +NEXT y + + + diff --git a/graphics/texture generation/wood.bas b/graphics/texture generation/wood.bas new file mode 100755 index 0000000..4b19972 --- /dev/null +++ b/graphics/texture generation/wood.bas @@ -0,0 +1,49 @@ +' Wood surface +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB wood (x1%, y1%) +DECLARE SUB paper (x1%, y1%) +DEFINT A-Z +SCREEN 12 +RANDOMIZE TIMER +FOR a = 0 TO 15 +OUT &H3C8, a +OUT &H3C9, a * 4 +OUT &H3C9, a * 3 +OUT &H3C9, a * 0 +NEXT a + +1 +x1 = RND * 400 + 200 +y1 = RND * 100 + 200 +wood x1, y1 +GOTO 1 + +a$ = INPUT$(1) + +SYSTEM + +SUB wood (x1, y1) +yl = y1 + 1 +LINE (0, 0)-(x1, y1), 0, BF +LINE (5, 5)-(x1 - 5, y1 - 5), 8, BF +LINE (10, 10)-(x1 - 10, y1 - 10), 15, BF +pe = RND * 300 +FOR y = y1 - 1 TO 0 STEP -1 +FOR x = x1 - 1 TO 0 STEP -1 +p = p + 1 +IF p > x1 THEN z = RND * 13: p = SIN((y + pe) / 100) * x1 +c1 = POINT(x, y + 1) +c2 = POINT(x, y) +c = (c1 * 2 + c2 + c * 3 + z) / 7 + RND * 1 +IF c < 0 THEN c = 0 +IF c > 15 THEN c = 15 +PSET (x + 1, y), c +NEXT x +NEXT y + +END SUB + diff --git a/graphics/texture.bas b/graphics/texture.bas new file mode 100755 index 0000000..c6a48c2 --- /dev/null +++ b/graphics/texture.bas @@ -0,0 +1,170 @@ +' Texture mapping +' by Svjatoslav Agejenko +' 04.2003 + +DECLARE SUB demo3 () +DECLARE SUB demo2 () +DECLARE SUB demo1 () +DECLARE SUB hline (x1!, y!, x2!, tx1!, ty1!, tx2!, ty2!) +DECLARE SUB polygon (x1!, y1!, x2!, y2!, x3!, y3!, tx1!, ty1!, tx2!, ty2!, tx3!, ty3!) +DECLARE SUB pline (x1!, y1!, x2!, y2!, tx1!, ty1!, tx2!, ty2!) +DECLARE SUB start () +DIM SHARED img(0 TO 100, 0 TO 100) + +DIM SHARED bufx(0 TO 199) +DIM SHARED buftx(0 TO 199) +DIM SHARED bufty(0 TO 199) + +start +demo1 +demo2 +demo3 +SYSTEM + +SUB demo1 +polygon 10, 10, 300, 80, 100, 180, 1, 1, 99, 1, 30, 99 + +a$ = INPUT$(1) +3 +x1 = RND * 300 + 10 +x2 = RND * 300 + 10 +x3 = RND * 300 + 10 +y1 = RND * 180 + 10 +y2 = RND * 180 + 10 +y3 = RND * 180 + 10 +polygon x1, y1, x2, y2, x3, y3, 1, 1, 99, 1, 30, 99 +IF INKEY$ = "" THEN GOTO 3 +CLS +END SUB + +SUB demo2 + +n = 0 +4 +x1 = SIN(n) * 80 + 160 +y1 = COS(n) * 80 + 100 +x2 = SIN(n + 2) * 80 + 160 +y2 = COS(n + 2) * 80 + 100 +x3 = SIN(n + 4) * 90 + 160 +y3 = COS(n + 4) * 90 + 100 +polygon x1, y1, x2, y2, x3, y3, 1, 1, 99, 1, 30, 99 +n = n + .1 +IF INKEY$ = "" THEN GOTO 4 +CLS +END SUB + +SUB demo3 + +n = 0 +5 +x1 = SIN(n) * 40 + 50 +y1 = COS(n) * 40 + 50 +x2 = SIN(n + 2) * 40 + 50 +y2 = COS(n + 2) * 40 + 50 +x3 = SIN(n + 4) * 40 + 50 +y3 = COS(n + 4) * 40 + 50 +polygon 1, 50, 300, 1, 100, 180, x1, y1, x2, y2, x3, y3 +n = n + .1 +IF INKEY$ = "" THEN GOTO 5 +CLS + +END SUB + +SUB hline (x1, y, x2, tx1, ty1, tx2, ty2) + +IF INT(x2) = INT(x1) THEN GOTO 2 +IF x2 > x1 THEN + nx1 = INT(x1) + nx2 = INT(x2) + ntx1 = tx1 + nty1 = ty1 + ntx2 = tx2 + nty2 = ty2 +ELSE + nx1 = INT(x2) + nx2 = INT(x1) + ntx1 = tx2 + nty1 = ty2 + ntx2 = tx1 + nty2 = ty1 +END IF + +v = nx2 - nx1 +tvx = ntx2 - ntx1 +tvy = nty2 - nty1 + +FOR a = 0 TO v + rtx = tvx * a / v + ntx1 + rty = tvy * a / v + nty1 + PSET (a + nx1, y), img(rtx, rty) +NEXT a + +2 +END SUB + +SUB pline (x1, y1, x2, y2, tx1, ty1, tx2, ty2) +m = ABS(y2 - y1) +IF m = 0 THEN GOTO 1 + +vy = y2 - y1 +vx = x2 - x1 + +tvy = ty2 - ty1 +tvx = tx2 - tx1 + +FOR a = 0 TO m + rx = vx * a / m + x1 + ry = vy * a / m + y1 + trx = tvx * a / m + tx1 + try = tvy * a / m + ty1 +' PSET (rx, ry), 14 + IF bufx(ry) = -1 THEN + bufx(ry) = rx + buftx(ry) = trx + bufty(ry) = try + ELSE + hline bufx(ry), ry, rx, buftx(ry), bufty(ry), trx, try + END IF +NEXT a + +1 +END SUB + +SUB polygon (x1, y1, x2, y2, x3, y3, tx1, ty1, tx2, ty2, tx3, ty3) + +FOR a = 0 TO 199 + bufx(a) = -1 +NEXT a + +pline x1, y1, x2, y2, tx1, ty1, tx2, ty2 +pline x1, y1, x3, y3, tx1, ty1, tx3, ty3 +pline x3, y3, x2, y2, tx3, ty3, tx2, ty2 + +END SUB + +SUB start + +SCREEN 13 + +FOR a = 1 TO 100 + x = RND * 150 + y = RND * 150 + c = RND * 255 + CIRCLE (x, y), RND * 20 + 3, c + PAINT (x, y), c +NEXT a + +LOCATE 8, 8 +PRINT "Test!" +a$ = INPUT$(1) + +FOR y = 0 TO 100 + FOR x = 0 TO 100 + img(x, y) = POINT(x + 20, y + 20) + PSET (x + 20, y + 20), 0 + NEXT x +NEXT y +CLS + +END SUB + diff --git a/graphics/tree.bas b/graphics/tree.bas new file mode 100755 index 0000000..cf7547d --- /dev/null +++ b/graphics/tree.bas @@ -0,0 +1,99 @@ +' Tree +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB start () +DECLARE SUB show (d%) +DECLARE SUB setpal () +DECLARE SUB showpal () +DEFINT A-Y + + +DIM SHARED x(1 TO 500) +DIM SHARED y(1 TO 500) +DIM SHARED s(1 TO 500) + +DIM SHARED x4(1 TO 500) +DIM SHARED y4(1 TO 500) + +DIM SHARED z(1 TO 500) +DIM SHARED mitu + +start + +mitu = 1 + +x4(1) = -1 +y4(1) = -1 +x(1) = 420 +y(1) = 340 +s(1) = 70 * 100 +z(1) = 1 + +FOR tr = 1 TO 6 +FOR b = 1 TO 50 +FOR a = 1 TO mitu +show a +NEXT a +NEXT b + +FOR a = 1 TO mitu +x(mitu + a) = x(a) +y(mitu + a) = y(a) +s(mitu + a) = s(a) +z(mitu + a) = z(a) +x4(mitu + a) = RND * 4 - 2 +y4(mitu + a) = RND * 4 - 2 +NEXT a +mitu = mitu * 2 + +NEXT tr +a$ = INPUT$(1) +SYSTEM + +SUB setpal +FOR a = 0 TO 16 +' OUT &H3C7, a + OUT &H3C8, a + OUT &H3C9, a * 4 + OUT &H3C9, a * 4 + OUT &H3C9, a * 4 +NEXT +END SUB + +SUB show (d) + +x1 = x(d) +y1 = y(d) +s1 = s(d) +z1 = z(d) + + +c = SIN(z1) * 7 + 9 +CIRCLE (x1, y1), s1 / 100, c +PAINT (x1, y1), c +x(d) = x(d) + (SIN(z1) * 1000) / (s1 + 15) +y(d) = y(d) + (COS(z1) * 1000) / (s1 + 15) + +s(d) = s(d) / 1.01 +IF x4(d) >= 0 THEN z(d) = z(d) + .1 ELSE z(d) = z(d) - .1 +x(d) = x(d) + x4(d) +y(d) = y(d) + y4(d) +END SUB + +SUB showpal +FOR a = 1 TO 16 +LINE (a * 10, 1)-(a * 10 + 10, 100), a, BF +NEXT a +END SUB + +SUB start + +SCREEN 12 +setpal +REM showpal +RANDOMIZE TIMER +END SUB + diff --git a/math/05graaf.bas b/math/05graaf.bas new file mode 100755 index 0000000..feadce6 --- /dev/null +++ b/math/05graaf.bas @@ -0,0 +1,60 @@ +' 2D graph +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB init () +DECLARE SUB pp (x1, y1, x2, y2, c!) +DIM SHARED mul + +mul = 100 +init + +ox = -320 / mul +oy = 0 + +FOR x = -320 / mul TO 320 / mul STEP 1 / mul + +y = 1 - (COS(x * 2)) + (SIN(x * 2)) ' < 639 THEN GOTO 1 +IF y2 > 479 THEN GOTO 1 +IF x3 < 0 THEN GOTO 1 +IF y3 < 0 THEN GOTO 1 +IF x3 > 639 THEN GOTO 1 +IF y3 > 479 THEN GOTO 1 +LINE (x2, y2)-(x3, y3), 14 +1 +END SUB + diff --git a/math/3D graph/3dgraph.bas b/math/3D graph/3dgraph.bas new file mode 100755 index 0000000..b867eeb --- /dev/null +++ b/math/3D graph/3dgraph.bas @@ -0,0 +1,395 @@ +' 3D formula explorer +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +' use: +' cursor keys - move around +' - - fly up +' + - fly down +' ESC - exit program + +' Type your formula to sub module "valem". +' X & Y are surface coordinates. Z must be formula +' result, indicating height. "tm" variable counts +' frames. Use it in your formula to make graph moving in time. + + +DECLARE SUB valem (x!, y!, z!) +DECLARE SUB graaf () +DECLARE SUB mkgr3 (x1!, y1!, z1!) +DECLARE SUB mkgr2 (x1!, y1!, z1!) +DECLARE SUB mkgr (x1!, y1!, z1!) +DECLARE SUB ruut2 (x!, y!, z!, s!) +DECLARE SUB ruut (x!, y!, z!, s!) +DECLARE SUB kuus (x, y, z, s) +DECLARE SUB porand () +DECLARE SUB addp (x, y, z) +DECLARE SUB start () +DECLARE SUB addsq (x1%, y1%, z1%) +DECLARE SUB getcor () +DECLARE SUB mulcor () +DECLARE SUB nait3d () +DECLARE SUB calcsin () +DIM SHARED xn(4000), yn(4000), zn(4000) +DIM SHARED x(4000), y(4000), z(4000) + +DIM SHARED xo(4000), yo(4000), zo(4000) +DIM SHARED point1(4000), point2(4000) +DIM SHARED col(4000) +DIM SHARED nump, numl +DIM SHARED tmnump, tmnuml, tm +DIM SHARED myx, myy, myz, mye, myk + +myx = 520 +myy = -250 +myz = -1000 +tm = 0 + +ON ERROR GOTO 3 +start + +nait3d + +3 +PRINT "Kuskil programmis l�ks mingi arv �le lubatud piiride!!!" +RESUME + +SUB getcor +c = 12 + +mkgr -500, 0, 0 +mkgr2 0, 0, 500 +mkgr3 0, -500, 0 + +xn(nump + 1) = 0 +yn(nump + 1) = -500 +zn(nump + 1) = 0 + +xn(nump + 2) = 0 +yn(nump + 2) = 500 +zn(nump + 2) = 0 + +xn(nump + 3) = -500 +yn(nump + 3) = 0 +zn(nump + 3) = 0 + +xn(nump + 4) = 500 +yn(nump + 4) = 0 +zn(nump + 4) = 0 + +xn(nump + 5) = 0 +yn(nump + 5) = 0 +zn(nump + 5) = -500 + +xn(nump + 6) = 0 +yn(nump + 6) = 0 +zn(nump + 6) = 500 + +point1(numl + 1) = nump + 1 +point2(numl + 1) = nump + 2 +col(numl + 1) = c + +point1(numl + 2) = nump + 3 +point2(numl + 2) = nump + 4 +col(numl + 2) = c + +point1(numl + 3) = nump + 5 +point2(numl + 3) = nump + 6 +col(numl + 3) = c + +nump = nump + 6 +numl = numl + 3 +tmnump = nump +tmnuml = numl +END SUB + +SUB graaf + +c = 14 + +d = 0 +e = 0 +FOR x = -500 TO 500 STEP 50 +FOR z = -500 TO 500 STEP 50 + +d = d + 1 +xn(nump + d) = x +valem x / 50, z / 50, y +yn(nump + d) = y * 50 +zn(nump + d) = z +IF z > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 1 +col(numl + e) = c +END IF + +IF x > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 21 +col(numl + e) = c +END IF + +NEXT z +NEXT x +nump = nump + d +numl = numl + e + +END SUB + +SUB mkgr (x1, y1, z1) +c = 3 + +d = 0 +e = 0 +FOR z = -500 TO 500 STEP 100 +FOR y = -500 TO 500 STEP 100 + +d = d + 1 +xn(nump + d) = x1 +yn(nump + d) = y1 + y +zn(nump + d) = z1 + z +IF y > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 1 +col(numl + e) = c +END IF + +IF z > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 11 +col(numl + e) = c +END IF + +NEXT y +NEXT z +nump = nump + d +numl = numl + e + +END SUB + +SUB mkgr2 (x1, y1, z1) + +c = 3 + +d = 0 +e = 0 +FOR x = -500 TO 500 STEP 100 +FOR y = -500 TO 500 STEP 100 + +d = d + 1 +xn(nump + d) = x1 + x +yn(nump + d) = y1 + y +zn(nump + d) = z1 +IF y > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 1 +col(numl + e) = c +END IF + +IF x > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 11 +col(numl + e) = c +END IF + +NEXT y +NEXT x +nump = nump + d +numl = numl + e + + +END SUB + +SUB mkgr3 (x1, y1, z1) + +c = 3 + +d = 0 +e = 0 +FOR x = -500 TO 500 STEP 100 +FOR z = -500 TO 500 STEP 100 + +d = d + 1 +xn(nump + d) = x1 + x +yn(nump + d) = y1 + y +zn(nump + d) = z +IF z > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 1 +col(numl + e) = c +END IF + +IF x > -500 THEN +e = e + 1 +point1(numl + e) = nump + d +point2(numl + e) = nump + d - 11 +col(numl + e) = c +END IF + +NEXT z +NEXT x +nump = nump + d +numl = numl + e + + + +END SUB + +SUB nait3d + +1 +nump = tmnump +numl = tmnuml +tm = tm + 1 +graaf + + +myx = myx + SIN(deg1) * mye +myz = myz + COS(deg1) * mye + +myx = myx + COS(deg1) * myk +myz = myz - SIN(deg1) * myk + +myy = myy + myyp + +deg1 = deg1 + d1 +Deg2 = Deg2 + d2 + +C1 = COS(deg1): S1 = SIN(deg1) +C2 = COS(Deg2): S2 = SIN(Deg2) + +FOR a = 1 TO nump + +xo = xn(a) - myx +yo = -yn(a) - myy +zo = zn(a) - myz + +x1 = (xo * C1 - zo * S1) +z1 = (xo * S1 + zo * C1) + +y1 = (yo * C2 - z1 * S2) +z2 = (yo * S2 + z1 * C2) + + +xo(a) = x(a) +yo(a) = y(a) +IF z2 < 20 THEN +x(a) = -1 +ELSE +x(a) = 320 + (x1 / z2 * 500) +y(a) = 240 + (y1 / z2 * 500) +END IF +NEXT + + +FOR a = 1 TO numl +p1 = point1(a) +p2 = point2(a) +IF xo(p1) = -1 OR xo(p2) = -1 THEN ELSE LINE (xo(p1), yo(p1))-(xo(p2), yo(p2)), 0 + +IF x(p1) = -1 OR x(p2) = -1 THEN ELSE LINE (x(p1), y(p1))-(x(p2), y(p2)), col(a) +NEXT + + +K$ = INKEY$ +IF K$ <> "" THEN + +SELECT CASE K$ + +CASE CHR$(0) + "P" +mye = mye - 3 + +CASE CHR$(0) + "H" +mye = mye + 3 + +CASE CHR$(0) + "M" +myk = myk + 3 + +CASE CHR$(0) + "K" +myk = myk - 3 + +CASE "+" +myyp = myyp + 5 + +CASE "-" +myyp = myyp - 5 + +CASE "6" +d1 = d1 + .01 + +CASE "4" +d1 = d1 - .01 + +CASE "8" +d2 = d2 - .01 + +CASE "2" +d2 = d2 + .01 + + +CASE " " +d1 = d1 / 2 +d2 = d2 / 2 +d3 = d3 / 2 +mye = mye / 2 +myk = myk / 2 +myyp = myyp / 2 +CASE "q" +SYSTEM + +CASE CHR$(27) +SYSTEM + +END SELECT +END IF + +GOTO 1 +END SUB + +SUB start +SCREEN 12 +CLS + +FOR a = 1 TO 4000 +col(a) = 15 +NEXT a + +nump = 0 +numl = 0 + + +getcor + +END SUB + +SUB valem (x, y, z) +z = 0 +v = SQR(x * x + y * y) ' v = distance from center, some formulas needs it. + +z = z + SIN(x + y) * SIN(tm / 10) ' diagonal lines +z = z + (SQR((15 + v) * (15 - v)) - 10) ' top of the ball + ' here I mixed 2 formulas. + +'z = z + RND * 1 ' noise +'z = z + SIN((y + tm) / 2) ' forward moving wave +'z = z + SIN(v / 2) * 2 ' circular waves +'z = z - SQR(v * 6) ' sharp + +'z = z + SIN(y / 1.5) / 1.5 + COS(x / 1.5) / 1.5' custom 1 +'z = z + SIN(y / 1.5) * COS(x / 1.5) / 1.5 ' custom 2 +'z = z + INT(SIN(1.5 * x * SIN(tm / 10))) * 3 ' custom 3 +'z = z - INT(v / 5) * 3 + 3 ' custom 4 +'z = z + 3 * ((-INT((x - .3) / 20) * INT((23 + x - ABS(y * 1.2)) / 15)) + -INT(-y / 20) * -INT(-x / 20) * INT(-((x - 2) * (x - 2) + (y * 1.2 - 4) * (y * 1.2 - 4)) / 2000 + 1.01) + -INT(y / 20) * -INT(-x / 20) * INT(-((x - 2) * (x - 2) + (y * 1.2 + 4) * (y * 1.2 + 4)) / 2000 + 1.01)) ' heart + + +END SUB + diff --git a/math/3D graph/index.html b/math/3D graph/index.html new file mode 100755 index 0000000..f77d412 --- /dev/null +++ b/math/3D graph/index.html @@ -0,0 +1,16 @@ + +3D graph + + + +

3D graph

+
+
+
+Explore 3D graphs. Just specify any function, +and 3D grapth will be generated. You can freely +fly around. Example functions provided. + +
+ + \ No newline at end of file diff --git a/math/3D graph/sshot.png b/math/3D graph/sshot.png new file mode 100755 index 0000000..a25dbb6 Binary files /dev/null and b/math/3D graph/sshot.png differ diff --git a/math/biorythm/bio.bas b/math/biorythm/bio.bas new file mode 100755 index 0000000..f04eefc --- /dev/null +++ b/math/biorythm/bio.bas @@ -0,0 +1,398 @@ +' Biorythm calculator +' made by Svjatoslav Agejenko +' in 2003.12 +' email: svjatoslavagejenko@gmail.com + +DECLARE FUNCTION gety& (zx2!, re&) +DECLARE SUB getdata (zt!, y1&, y2&, y3&) +DECLARE SUB dispgraph (sday&, dday&) +DECLARE FUNCTION getday& (y&, m&, d&) +DECLARE FUNCTION mdays& (y&, m&) +DECLARE FUNCTION getcol& (r&, g&, b&) +DECLARE FUNCTION getcolor& (r&, g&, b&) +DECLARE FUNCTION geth& (x1&) +DECLARE FUNCTION absday! (y!, m!, d!) +DECLARE SUB listload () +DECLARE SUB listsave () +DECLARE SUB savelist () +DECLARE SUB quit () +DECLARE SUB getson (a$) +DECLARE SUB cmd (a$) +DECLARE SUB cmdline () +DECLARE SUB setupal () +DECLARE SUB loadfont () +DECLARE SUB start () + +DEFLNG A-Y + +DIM SHARED mitus, sona$(1 TO 50) +DIM SHARED pi + +DIM SHARED humnick$(1 TO 100) +DIM SHARED humby(1 TO 100) +DIM SHARED humbm(1 TO 100) +DIM SHARED humbd(1 TO 100) +DIM SHARED humamo +DIM SHARED modi + +DIM SHARED curry +DIM SHARED currm +DIM SHARED currd + +DIM SHARED colstd +DIM SHARED colusr + + +start + +cmdline + +SUB cmd (a$) +IF a$ = SPACE$(LEN(a$)) THEN GOTO 2 +getson a$ + +SELECT CASE sona$(1) +CASE "help" + PRINT "about - display banner" + PRINT "help - get help" + PRINT "bye - quit program" + PRINT "who - display list of known peoples" + PRINT "add name birtyear birthmonth birthday" + PRINT " - add new human to list" + PRINT "rm name - remove human from list" + PRINT "clear - clear humans list" + PRINT "today name - show biorythm for today" + PRINT "look name year month day" + PRINT " - show biorythm for given day" + + COLOR getcol(255, 0, 0) + PRINT "physical"; + COLOR getcol(0, 255, 0) + PRINT " emotional"; + COLOR getcol(0, 0, 255) + PRINT " intellectual" + COLOR getcol(255, 255, 0) + PRINT "o-sunday" + + +CASE "about" + PRINT "Biorythm calculator, by" + PRINT "Svjatoslav Agejenko: n0@hot.ee" + PRINT "2003.July.07" + PRINT "current date:"; curry; currm; currd + PRINT "type 'help' to get help" +CASE "bye" + quit +CASE "add" + IF humamo = 100 THEN PRINT "too mutch peoples in database": GOTO 2 + IF LEN(sona$(2)) > 12 THEN PRINT "Name too long. Use short nicknames.": GOTO 2 + FOR a = 1 TO humamo + IF humnick$(a) = sona$(2) THEN PRINT "such name already exists": GOTO 2 + NEXT a + humamo = humamo + 1 + humnick$(humamo) = sona$(2) + humby(humamo) = VAL(sona$(3)) + humbm(humamo) = VAL(sona$(4)) + humbd(humamo) = VAL(sona$(5)) + modi = 1 +CASE "who" + IF humamo = 0 THEN + PRINT "no humans in database" + ELSE + FOR a = 1 TO humamo + PRINT humnick$(a) + SPACE$(15 - LEN(humnick$(a))); + ztt = getday(curry, currm, currd) - getday(humby(a), humbm(a), humbd(a)) + getdata ztt, y1, y2, y3 + c = getcol((y1 + 100) * 1.25, (y2 + 100) * 1.25, (y3 + 100) * 1.25) + COLOR c + FOR b = 1 TO 5 + PRINT CHR$(219); + NEXT b + COLOR colstd + PRINT humby(a); humbm(a); humbd(a) + NEXT a + END IF +CASE "clear" + humamo = 0 + modi = 1 +CASE "rm" + FOR a = 1 TO humamo + IF sona$(2) = humnick$(a) THEN + humnick$(a) = humnick$(humamo) + humby(a) = humby(humamo) + humbm(a) = humbm(humamo) + humbd(a) = humbd(humamo) + humamo = humamo - 1 + GOTO 2 + END IF + NEXT a + PRINT "such human not found in list" +CASE "today" + FOR a = 1 TO humamo + IF sona$(2) = humnick$(a) THEN + dispgraph getday(humby(a), humbm(a), humbd(a)), getday(curry, currm, currd) + GOTO 2 + END IF + NEXT a + PRINT "such human not found in list" +CASE "look" + FOR a = 1 TO humamo + IF sona$(2) = humnick$(a) THEN + dispgraph getday(humby(a), humbm(a), humbd(a)), getday(VAL(sona$(3)), VAL(sona$(4)), VAL(sona$(5))) + GOTO 2 + END IF + NEXT a + PRINT "such human not found in list" +CASE ELSE + PRINT "unknown command> " + a$ +END SELECT +2 +END SUB + +SUB cmdline + +1 +COLOR colusr +LINE INPUT a$ +COLOR colstd + +cmd a$ +GOTO 1 +END SUB + +SUB dispgraph (sday, dday) +FOR a = 1 TO 6 + PRINT "" +NEXT a + +LINE (0, 145)-(319, 190), 1, BF +h = (145 + 190) / 2 + +LINE (0, h)-(319, h), getcol(0, 0, 80) + +FOR x = 3 TO 319 STEP 8 +NEXT x + +ttime = dday - sday + +clr1 = getcol(255, 0, 0) +clr2 = getcol(0, 255, 0) +clr3 = getcol(0, 0, 255) +w = getcol(255, 255, 255) + +FOR x = 1 TO 319 + zt = x / 8 + ttime - 10 + IF zt = INT(zt) THEN + IF zt + sday = dday THEN + LINE (x, 145)-(x, 190), getcol(200, 200, 0) + ELSE + LINE (x, 145)-(x, 190), getcol(100, 100, 100) + END IF + IF (zt + sday) MOD 7 = 6 THEN CIRCLE (x, 145), 2, getcol(255, 255, 0) + END IF + getdata zt, y1, y2, y3 + c = getcol((y1 + 100) * 1.25, (y2 + 100) * 1.25, (y3 + 100) * 1.25) + PSET (x, h + 1), c + PSET (x, h - 1), c + LINE (x, h - y1 / 5)-(x - 1, h - oy1 / 5), clr1 + LINE (x, h - y2 / 5)-(x - 1, h - oy2 / 5), clr2 + LINE (x, h - y3 / 5)-(x - 1, h - oy3 / 5), clr3 + PSET (x - 1, h), c + oy1 = y1 + oy2 = y2 + oy3 = y3 +NEXT x + +END SUB + +DEFLNG Z +FUNCTION getcol (r, g, b) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 255 THEN r = 255 +IF g > 255 THEN g = 255 +IF b > 255 THEN b = 255 +getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43) +END FUNCTION + +DEFSNG Z +SUB getdata (zt, y1, y2, y3) +y1 = gety(zt, 23) +y2 = gety(zt, 28) +y3 = gety(zt, 33) +END SUB + +DEFLNG Z +FUNCTION getday (y, m, d) +r = d +FOR a = 1600 TO y - 1 + r = r + 365 + IF a \ 4 = a / 4 THEN r = r + 1 +NEXT a + +FOR a = 1 TO m - 1 + r = r + mdays(y, a) +NEXT a + +getday = r +END FUNCTION + +SUB getson (a$) +mitus = 0 + +d = 1 +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +IF c$ = " " THEN +d = 1 +ELSE +IF d = 1 THEN +mitus = mitus + 1 +sona$(mitus) = "" +d = 0 +END IF +sona$(mitus) = sona$(mitus) + c$ +END IF +NEXT b + +END SUB + +DEFSNG Z +FUNCTION gety (zx2, re) +zx1 = zx2 +9 +IF zx1 > (re * 100) THEN zx1 = zx1 - (re * 100): GOTO 9 +8 +IF zx1 > (re * 10) THEN zx1 = zx1 - (re * 10): GOTO 8 +7 +IF zx1 >= re THEN zx1 = zx1 - re: GOTO 7 + +zx1 = zx1 * (100 / re) + +IF zx1 MOD 100 < 50 THEN s = 100 ELSE s = -100 +zx = zx1 * 2 MOD 100 +IF zx < 88 THEN + gety = SIN(zx / 52) * s +ELSE + gety = SIN(pi / 2 + (zx - 88) / 6.7) * s +END IF +END FUNCTION + +DEFLNG Z +SUB listload +OPEN "ppl.txt" FOR INPUT AS #1 +6 +IF EOF(1) <> 0 THEN GOTO 5 +LINE INPUT #1, a$ +a$ = "add " + a$ +cmd a$ +GOTO 6 +5 +CLOSE #1 +END SUB + +SUB listsave +OPEN "ppl.txt" FOR OUTPUT AS #1 + FOR a = 1 TO humamo + PRINT #1, humnick$(a); humby(a); humbm(a); humbd(a) + NEXT a +CLOSE #1 +PRINT "list updated" +END SUB + +FUNCTION mdays (y, m) + +SELECT CASE m +CASE 1 + r = 31 +CASE 2 + IF y / 4 = y \ 4 THEN r = 29 ELSE r = 28 +CASE 3 + r = 31 +CASE 4 + r = 30 +CASE 5 + r = 31 +CASE 6 + r = 30 +CASE 7 + r = 31 +CASE 8 + r = 31 +CASE 9 + r = 30 +CASE 10 + r = 31 +CASE 11 + r = 30 +CASE 12 + r = 31 +END SELECT + +mdays = r +END FUNCTION + +SUB quit + +IF modi <> 0 THEN +4 + PRINT "Known humans list is modified," + PRINT "save modifications ? (y/n)" + a$ = INPUT$(1) + IF a$ = "n" THEN GOTO 3 + IF a$ <> "y" THEN GOTO 4 + listsave +END IF + +3 +SYSTEM +END SUB + +SUB setupal +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r +END SUB + +DEFSNG Z +SUB start +a$ = DATE$ +currm = VAL(LEFT$(a$, 2)) +curry = VAL(RIGHT$(a$, 4)) +currd = VAL(RIGHT$(LEFT$(a$, 5), 2)) +colstd = getcol(100, 150, 255) +colusr = getcol(0, 255, 0) + + +pi = 3.1415 +humamo = 0 + +SCREEN 13 +VIEW PRINT 1 TO 25 +setupal +COLOR colstd + + +FOR a = 1 TO 30 + PRINT "" +NEXT a + +cmd "about" + +listload +modi = 0 + + + +END SUB + diff --git a/math/biorythm/index.html b/math/biorythm/index.html new file mode 100755 index 0000000..d9e3a7d --- /dev/null +++ b/math/biorythm/index.html @@ -0,0 +1,14 @@ + +biorythm calculator + + + +

biorythm calculator

+
+
Calculates human emotional, physical and intellectual +values for any day, based on birth date. +For those who believe in this. +
+
+ + \ No newline at end of file diff --git a/math/biorythm/ppl.txt b/math/biorythm/ppl.txt new file mode 100755 index 0000000..c9bb823 --- /dev/null +++ b/math/biorythm/ppl.txt @@ -0,0 +1,5 @@ +sven 1983 6 1 +monika 1952 2 2 +papa 1949 2 15 +Erik 1983 3 29 +evelin 1988 3 4 diff --git a/math/biorythm/sshot.png b/math/biorythm/sshot.png new file mode 100755 index 0000000..29fe9e2 Binary files /dev/null and b/math/biorythm/sshot.png differ diff --git a/math/determ.bas b/math/determ.bas new file mode 100755 index 0000000..3c5bfba --- /dev/null +++ b/math/determ.bas @@ -0,0 +1,379 @@ +' Determinant solver +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB mulr2 (a!, b!) +DECLARE SUB show2 () +DECLARE SUB mulr (a!, b!) +DECLARE SUB mkback () +DECLARE SUB sut (a!, b!, c!) +DECLARE SUB addz () +DECLARE SUB tee () +DECLARE SUB lihts () +DECLARE SUB findz () +DECLARE SUB addkord (a!, t!) +DECLARE SUB misjag () +DECLARE SUB teejag (a!) +DECLARE SUB subjag (b!) +DECLARE SUB show () +DECLARE SUB sisend () +DECLARE SUB start () + +DIM SHARED siz +DIM SHARED det(1 TO 100, 1 TO 100) +DIM SHARED det2(1 TO 100, 1 TO 100) +DIM SHARED jau(1 TO 1000) +DIM SHARED jam +DIM SHARED kord(1 TO 100) +DIM SHARED kordt(1 TO 100) +DIM SHARED kordj +DIM SHARED zerol +DIM SHARED zerom +DIM SHARED zerot +DIM SHARED oli + +start +tee + +SUB addkord (a, t) +kordj = kordj + 1 +kord(kordj) = a +kordt(kordj) = t +END SUB + +SUB addz +'DIM SHARED zerol +'DIM SHARED zerom +'DIM SHARED zerot + +IF zerot = 1 THEN +y = zerol +FOR x = 1 TO siz +a = det(x, y) +IF a <> 0 THEN +FOR x1 = x + 1 TO siz +b = det(x1, y) +IF b <> 0 THEN +sut a, b, c +mkback +IF a <> c THEN +mulr x, c / a +addkord c / a, 1 +END IF +IF b <> c THEN +mulr x1, c / b +addkord c / b, 2 +END IF +'show2 +FOR y1 = 1 TO siz +det(x1, y1) = det2(x1, y1) - det2(x, y1) +NEXT y1 +GOTO 7 +END IF +NEXT x1 +END IF +NEXT x + + + + +ELSE + +x = zerol +FOR y = 1 TO siz +a = det(x, y) +IF a <> 0 THEN +FOR y1 = y + 1 TO siz +b = det(x, y1) +IF b <> 0 THEN +sut a, b, c +mkback +IF a <> c THEN +mulr2 y, c / a +addkord c / a, 1 +END IF +IF b <> c THEN +mulr y1, c / b +addkord c / b, 2 +END IF +'show2 +FOR x1 = 1 TO siz +det(x1, y1) = det2(x1, y1) - det2(x1, y) +NEXT x1 +GOTO 7 +END IF +NEXT y1 +END IF +NEXT y + + + + +END IF + + + + + +7 +PRINT "null lisatud" +show +END SUB + +SUB findz +zerom = -1 + +'DIM SHARED zerol +'DIM SHARED zerom +'DIM SHARED zerot + +FOR y = 1 TO siz +z = 0 +FOR x = 1 TO siz +IF det(x, y) = 0 THEN z = z + 1 +NEXT x +IF z > zerom THEN +zerol = y +zerot = 1 +zerom = z +END IF +NEXT y + +FOR x = 1 TO siz +z = 0 +FOR y = 1 TO siz +IF det(x, y) = 0 THEN z = z + 1 +NEXT y +IF z > zerom THEN +zerol = x +zerot = 2 +zerom = z +END IF +NEXT x + +'PRINT "max nulle", zerom + +END SUB + +SUB lihts +IF zerot = 1 THEN +y = zerol +FOR x = 1 TO siz +IF ABS(det(x, y)) > 0 THEN x1 = x: GOTO 3 +NEXT x +3 +addkord det(x1, y), 1 +x4 = x1 +y4 = y +ELSE +x = zerol +FOR y = 1 TO siz +IF ABS(det(x, y)) > 0 THEN y1 = y: GOTO 4 +NEXT y +4 +addkord det(x, y1), 1 +x4 = x +y4 = y1 +END IF + +FOR y2 = 1 TO siz +FOR x2 = 1 TO siz +x3 = x2 +y3 = y2 +d = det(x3, y3) +IF x3 > x4 THEN x3 = x3 - 1 +IF y3 > y4 THEN y3 = y3 - 1 +det(x3, y3) = d +NEXT x2 +NEXT y2 + +siz = siz - 1 +PRINT "taandatult" +show + +END SUB + +SUB misjag +l = 0 +FOR y = 1 TO siz +teejag det(1, y) +FOR x = 2 TO siz +subjag det(x, y) +NEXT x + +IF jam > 0 THEN +s = -1 +FOR a = 1 TO jam +IF jau(a) > s THEN s = jau(a) +NEXT a +FOR x = 1 TO siz +det(x, y) = det(x, y) / s +NEXT x +addkord s, 1 +l = 1 +END IF +NEXT y + + + + +FOR x = 1 TO siz +teejag det(x, 1) +FOR y = 2 TO siz +subjag det(x, y) +NEXT y + +IF jam > 0 THEN +s = -1 +FOR a = 1 TO jam +IF jau(a) > s THEN s = jau(a) +NEXT a +FOR y = 1 TO siz +det(x, y) = det(x, y) / s +NEXT y +addkord s, 1 +l = 1 +END IF +NEXT x + + +IF l = 1 THEN +PRINT "lihtsustatult" +show +END IF + + +END SUB + +SUB mkback +FOR y = 1 TO siz +FOR x = 1 TO siz +det2(x, y) = det(x, y) +NEXT x +NEXT y +END SUB + +SUB mulr (a, b) +FOR y = 1 TO siz +det2(a, y) = det2(a, y) * b +NEXT y +END SUB + +SUB mulr2 (a, b) +FOR x = 1 TO siz +det2(x, a) = det2(x, a) * b +NEXT x +END SUB + +SUB show +FOR a = 1 TO kordj +IF kordt(a) = 1 THEN PRINT " *"; ELSE PRINT " /"; +PRINT STR$(kord(a)); +NEXT a +PRINT " " + +FOR y = 1 TO siz +FOR x = 1 TO siz +PRINT CHR$(9) + STR$(det(x, y)); +NEXT x +PRINT " " +PRINT " " +NEXT y +a$ = INPUT$(1) +END SUB + +SUB show2 +FOR y = 1 TO siz +FOR x = 1 TO siz +PRINT CHR$(9) + STR$(det2(x, y)); +NEXT x +PRINT " " +PRINT " " +NEXT y +a$ = INPUT$(1) + +END SUB + +SUB sisend +INPUT "sisesta determinandi suurus ", siz + +FOR y = 1 TO siz +FOR x = 1 TO siz +PRINT "rida" + STR$(y) + " veerg" + STR$(x) +INPUT det(x, y) +NEXT x +NEXT y + +PRINT "sisestatud determinant" +show +END SUB + +SUB start +WIDTH 80, 50 +kordj = 0 +END SUB + +SUB subjag (b) +IF oli = 1 THEN teejag b: GOTO 2 +IF jam = 0 THEN GOTO 2 +a = 1 +1 +c = jau(a) +IF b / c <> INT(b / c) THEN +jau(a) = jau(jam) +jam = jam - 1 +a = a - 1 +END IF +a = a + 1 +IF a <= jam THEN GOTO 1 +2 + +END SUB + +SUB sut (a, b, c) +c = a * b +END SUB + +SUB tee +sisend +5 +misjag + +IF siz = 2 THEN +a = det(1, 1) * det(2, 2) - det(1, 2) * det(2, 1) +PRINT "vahepealne vastus oli:" + STR$(a) +FOR b = 1 TO kordj +IF kordt(b) = 1 THEN a = a * kord(b): c$ = "*" ELSE a = a / kord(b): c$ = "/" +PRINT c$ + STR$(kord(b)) + " = " + STR$(a) + " "; +NEXT b +PRINT " " +PRINT "vastus on:" + STR$(a) +GOTO 6 +END IF + +findz +IF zerom = siz THEN PRINT "vastus on: 0": GOTO 6 +IF zerom = siz - 1 THEN +lihts +ELSE +addz +END IF +GOTO 5 +6 +END SUB + +SUB teejag (a) +oli = 0 +jam = 0 +IF a = 0 THEN oli = 1: GOTO 8 +FOR b = 2 TO ABS(a) +IF a / b = INT(a / b) THEN +jam = jam + 1 +jau(jam) = b +END IF +NEXT b +8 +END SUB + diff --git a/math/divides.bas b/math/divides.bas new file mode 100755 index 0000000..57310cb --- /dev/null +++ b/math/divides.bas @@ -0,0 +1,7 @@ +INPUT "number:", a + +FOR b = 1 TO a + IF a / b = a \ b THEN PRINT b, "is"; a / b +NEXT b +SYSTEM + diff --git a/math/gravi2.bas b/math/gravi2.bas new file mode 100755 index 0000000..8ccea16 --- /dev/null +++ b/math/gravi2.bas @@ -0,0 +1,35 @@ +' Gravitation simulation +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DEFDBL A-Z +SCREEN 12 + +x = -200 +y = 0 +xs = -1 +ys = 3 + + +1 +CIRCLE (320, 240), 100, 3 +CIRCLE (320, 240), 2, 3 +x = x + xs +y = y + ys + +v = SQR(x * x + y * y) +j = 1 / v * 20 +'j = .1 + +s = ABS(x) + ABS(y) +xs = xs + (j * (-x) / s) +ys = ys + (j * (-y) / s) + + +CIRCLE (x + 320, y + 240), 2, 14 +LINE (x + 320, y + 240)-(320, 240), 1 +SOUND 0, .1 +GOTO 1 + diff --git a/math/korrel.bas b/math/korrel.bas new file mode 100755 index 0000000..80777ff --- /dev/null +++ b/math/korrel.bas @@ -0,0 +1,66 @@ +DECLARE SUB init () +DIM SHARED tulud(1 TO 4) +DIM SHARED kulud(1 TO 4) + +CLS +init + +FOR a = 1 TO 4 + kogutulud = kogutulud + tulud(a) + kogukulud = kogukulud + kulud(a) +NEXT a + +kesktulu = kogutulud / 4 +keskkulu = kogukulud / 4 + + +PRINT "kogutulud:", kogutulud, kesktulu +PRINT "kogukulud:", kogukulud, keskkulu + + +FOR a = 1 TO 4 +tuludeKoguH2lve = tuludeKoguH2lve + ABS(tulud(a) - kesktulu) +kuludeKoguH2lve = kuludeKoguH2lve + ABS(kulud(a) - keskkulu) +NEXT a + +tuludeKeskH2lve = tuludeKoguH2lve / 4 +kuludeKeskH2lve = kuludeKoguH2lve / 4 + + +PRINT "Tulude koguh2lve:", tuludeKoguH2lve +PRINT "Kulude koguh2lve:", kuludeKoguH2lve + +PRINT "Tulude keskh2lve:", tuludeKeskH2lve +PRINT "Kulude keskh2lve:", kuludeKeskH2lve + +'-------------------------------------------------------------- + +FOR a = 1 TO 4 + b = b + (tulud(a) - ABS(kesktulu)) * (kulud(a) - ABS(keskkulu)) + c = c + (tulud(a) - ABS(kesktulu)) ^ 2 + d = d + (kulud(a) - ABS(keskkulu)) ^ 2 +NEXT a + +e = SQR(c * d) +f = b / e + + +PRINT f + +SUB init + +tulud(1) = 1 +kulud(1) = 10 + +tulud(2) = 2 +kulud(2) = 20 + +tulud(3) = 3 +kulud(3) = 30 + +tulud(4) = 4 +kulud(4) = 41 + + +END SUB + diff --git a/math/logar.bas b/math/logar.bas new file mode 100755 index 0000000..3bc211e --- /dev/null +++ b/math/logar.bas @@ -0,0 +1,11 @@ +DECLARE FUNCTION loga! (a!, b!) +CLS + +v = 10 ^ (2 * loga(10, 7) + loga(10, 2)) + +PRINT v + +FUNCTION loga (a, b) +loga = LOG(b) / LOG(a) +END FUNCTION + diff --git a/math/logic.bas b/math/logic.bas new file mode 100755 index 0000000..ab35157 --- /dev/null +++ b/math/logic.bas @@ -0,0 +1,585 @@ +' Logical equation solver +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +' Solves logical equations. +' AND OR XOR etc... + +DECLARE SUB rmslg (x1!, x3!, l!) +DECLARE SUB getp (a!, b!) +DECLARE SUB movm (x1!, n!) +DECLARE SUB lihts (x1, x2, l) +DECLARE SUB klea () +DECLARE SUB lendm (x1!, m!) +DECLARE SUB mov (x1!, n!) +DECLARE SUB lendp (x1!, m!) +DECLARE SUB teeslg (x1!, x2!, l!) +DECLARE SUB prepare () +DECLARE SUB tee (x1!, x2!) +DECLARE SUB lahend (x1, x2) +DECLARE SUB prn (x!, y!, c!, c1!, a$) +DECLARE SUB sist () +DECLARE SUB start () +DIM SHARED font(0 TO 7, 0 TO 7, 0 TO 122) +DIM SHARED tehe(0 TO 79) +DIM SHARED muut(1 TO 8, 1 TO 100) +DIM SHARED muun(1 TO 8) +DIM SHARED vast(1 TO 100) +DIM SHARED xloc(0 TO 79) +DIM SHARED xlah(0 TO 79, 0 TO 100) +DIM SHARED xlahn +DIM SHARED tehl +DIM SHARED nm +DIM SHARED prnp + +start + +13 +sist +prepare +GOTO 13 + +SUB getp (a, b) +SELECT CASE a +CASE 5 +b = 1 +CASE 3, 4 +b = 2 +CASE 2 +b = 3 +CASE 1 +b = 4 +CASE 40, 41 +b = 100 +END SELECT +END SUB + +SUB klea +FOR a = 1 TO 50 +a$ = INKEY$ +NEXT a +END SUB + +SUB lahend (x1, x2) + +DIM muu(65 TO 122) +FOR a = 65 TO 122 +muu(a) = 0 +NEXT a + +muu(116) = 1 +muu(118) = 1 + +nm = 0 +FOR a = x1 TO x2 +b = tehe(a) +IF ((b >= 65) AND (b <= 90)) OR ((b >= 97) AND (b <= 122)) THEN +IF muu(b) = 0 THEN +nm = nm + 1 +muun(nm) = b +muu(b) = 1 +END IF +END IF +NEXT a + +muun(nm + 1) = 116 +muun(nm + 2) = 118 + +f = 2 ^ nm +tehl = f +FOR a = 1 TO nm +d = 1 +e = 1 +f = f / 2 +FOR b = 1 TO 2 ^ nm +IF e > f THEN d = -d: e = 1 +IF d = 1 THEN c = ASC("t") ELSE c = ASC("v") +muut(a, b) = c +e = e + 1 +NEXT b +NEXT a + +FOR a = 1 TO tehl +muut(nm + 1, a) = 116 +muut(nm + 2, a) = 118 +NEXT a + +nm = nm + 2 + +DIM bck(0 TO 79) +FOR a = 0 TO 79 +bck(a) = tehe(a) +xloc(a) = a +NEXT a + +LOCATE 5, 1 +teeslg x1, x2, a + +'FOR b = x1 TO x2 + a +'prn b, 20, 14, 1, CHR$(tehe(b)) +'NEXT b + +tee x1, x2 + a + +FOR a = 0 TO 79 +tehe(a) = bck(a) +NEXT a + +FOR a = 1 TO tehl +prn x2 + 1, a, 14, 0, CHR$(vast(a)) +NEXT a + + +END SUB + +SUB lendm (x1, m) +IF tehe(x1) <> 41 THEN m = 1: GOTO 19 +c = x1 +d = 1 +20 +c = c - 1 +IF tehe(c) = 40 THEN d = d - 1 +IF tehe(c) = 41 THEN d = d + 1 +IF d > 0 THEN GOTO 20 +m = x1 - c +19 +END SUB + +SUB lendp (x1, m) +IF tehe(x1) <> 40 THEN m = 1: GOTO 17 +c = x1 +d = 1 +18 +c = c + 1 +IF tehe(c) = 40 THEN d = d + 1 +IF tehe(c) = 41 THEN d = d - 1 +IF d > 0 THEN GOTO 18 +m = c - x1 + 1 +17 +END SUB + +SUB lihts (x1, x2, l) +rmslg x1, x2, l1 +l = l1 +'BEEP +prnp = prnp + 1 +FOR a = x1 TO x2 - l +prn a, 0, 13, 1, CHR$(tehe(a)) +NEXT a +END SUB + +SUB mov (x1, n) +FOR a = 79 - n TO x1 STEP -1 +tehe(a + n) = tehe(a) +xloc(a + n) = xloc(a) +NEXT a +END SUB + +SUB movm (x1, n) +FOR a = x1 TO 79 - n +tehe(a) = tehe(a + n) +xloc(a) = xloc(a + n) +NEXT a +END SUB + +SUB prepare +CLS + +ln = 79 +FOR a = 0 TO 79 +5 +IF tehe(a) = 32 OR tehe(a) = 0 THEN +FOR b = a TO 78 +tehe(b) = tehe(b + 1) +NEXT b +ln = ln - 1 +IF ln <= a - 1 THEN GOTO 6 +GOTO 5 +END IF +NEXT a +6 + +CLS + +FOR a = 0 TO ln +prn a, 0, 13, 1, CHR$(tehe(a)) +NEXT a + +prn 0, 1, 7, 0, "Do you want to simplyfy it (unfinished so press N)" +a = 0 +23 +klea +a$ = INPUT$(1) +IF a$ = "n" OR a$ = "N" THEN GOTO 24 +IF a$ = "y" OR a$ = "Y" THEN ELSE GOTO 23 +a = 1 +24 +prn 0, 1, 7, 0, SPACE$(79) + +l = 0 +IF a = 1 THEN lihts 0, ln, l +lahend 0, ln - l + +a$ = INPUT$(1) + +END SUB + +SUB prn (x, y, c, c1, a$) +x1 = x * 8 +y1 = (y + prnp) * 8 + +FOR b = 1 TO LEN(a$) +LINE (x1, y1)-(x1 + 7, y1 + 7), c1, BF +d = ASC(RIGHT$(LEFT$(a$, b), 1)) +IF d > 122 THEN GOTO 22 +FOR y2 = 0 TO 7 +FOR x2 = 0 TO 7 +c2 = font(x2, y2, d) +IF c2 > 0 THEN PSET (x1 + x2, y1 + y2), c +NEXT x2 +NEXT y2 +22 +x1 = x1 + 8 +NEXT b + +END SUB + +SUB rmslg (x1, x3, l) +x2 = x3 +l2 = 0 + +'FOR a = x1 TO x2 +a = x1 +26 +IF tehe(a) = 40 THEN +IF a = x1 THEN p1 = 100 ELSE getp tehe(a - 1), p1 +c = a +d = 1 +p2 = 0 +25 +c = c + 1 +IF tehe(c) = 40 THEN d = d + 1 +IF tehe(c) = 41 THEN d = d - 1 +IF d = 1 THEN +IF (tehe(c) > 0) AND (tehe(c) <= 5) THEN +getp tehe(c), b +IF b > p2 THEN p2 = b +END IF +END IF +IF d > 0 THEN GOTO 25 +IF c + 1 > x2 THEN p3 = 100 ELSE getp tehe(c + 1), p3 + +IF (p1 > p2) AND (p3 >= p2) THEN +movm c, 1 +movm a, 1 +l2 = l2 + 2 +x2 = x2 - 2 +a = a - 1 +END IF +END IF +'NEXT a +a = a + 1 +IF a <= x2 THEN GOTO 26 +l = l2 +END SUB + +SUB sist +CLS +prn 0, 0, 3, 0, "enter equation (ESC to quit) keys: 1 - " + CHR$(1) + " 2 - " + CHR$(2) + " 3 - " + CHR$(3) + " 4 - " + CHR$(4) + " 5 - " + CHR$(5) +prn 0, 1, 3, 0, "example: a" + CHR$(1) + "b" + CHR$(2) + "(g" + CHR$(3) + "b)" + +FOR a = 0 TO 79 +tehe(a) = 0 +NEXT a + +x = 0 +1 +FOR a = 0 TO 79 +IF a = x THEN prn a, 2, 14, 1, CHR$(tehe(a)) ELSE prn a, 2, 3, 0, CHR$(tehe(a)) +NEXT a +2 +a$ = INKEY$ +IF a$ = "" THEN GOTO 2 + +IF a$ = CHR$(27) THEN SYSTEM +IF a$ = CHR$(0) + "M" THEN x = x + 1 +IF a$ = CHR$(0) + "K" THEN x = x - 1 +IF x < 0 THEN x = 0 +IF x > 79 THEN x = 79 + +IF LEN(a$) = 1 THEN +SELECT CASE ASC(a$) +CASE 32, 40, 41, 65 TO 90, 97 TO 122 +3 +FOR a = 78 TO x STEP -1 +tehe(a + 1) = tehe(a) +NEXT a +tehe(x) = ASC(a$) +x = x + 1 +CASE 8 +IF x > 0 THEN +FOR a = x - 1 TO 78 +tehe(a) = tehe(a + 1) +NEXT a +x = x - 1 +END IF +CASE 49 TO 53 +a$ = CHR$(ASC(a$) - 48) +GOTO 3 +CASE 13 +GOTO 4 +END SELECT +END IF + +GOTO 1 +4 + + +END SUB + +SUB start +prnp = 0 + +SCREEN 7 + +FOR a = 0 TO 122 +LOCATE 1, 1 +SELECT CASE a +CASE 7 +CASE 1 +LINE (0, 0)-(7, 7), 0, BF +LINE (2, 1)-(0, 3), 15 +LINE (1, 4)-(2, 5), 15 +LINE (5, 1)-(7, 3), 15 +LINE (6, 4)-(5, 5), 15 +LINE (1, 2)-(5, 2), 15 +LINE (1, 4)-(5, 4), 15 + +CASE 2 +LINE (0, 0)-(7, 7), 0, BF +LINE (5, 1)-(7, 3), 15 +LINE (6, 4)-(5, 5), 15 +LINE (1, 2)-(5, 2), 15 +LINE (1, 4)-(5, 4), 15 + +CASE 3 +LINE (0, 0)-(7, 7), 0, BF +LINE (0, 0)-(3, 7), 15 +LINE (6, 0)-(3, 7), 15 + +CASE 4 +LINE (0, 0)-(7, 7), 0, BF +LINE (0, 7)-(3, 0), 15 +LINE (6, 7)-(3, 0), 15 + +CASE 5 +LINE (0, 0)-(7, 7), 0, BF +LINE (0, 0)-(4, 0), 15 +LINE (4, 1)-(4, 7), 15 + +CASE ELSE +PRINT CHR$(a) +END SELECT + +FOR y = 0 TO 7 +FOR x = 0 TO 7 +font(x, y, a) = POINT(x, y) +NEXT x +NEXT y +NEXT a + +SCREEN 12 + + +END SUB + +SUB tee (x1, x2) +DIM opr(1 TO 2, 1 TO tehl) +ng = 0 +ngx = 0 +oprm = 1 +oe = 0 +oex = 0 + + +FOR a = x1 TO x2 +b = tehe(a) +SELECT CASE b +CASE 40 +c = a +d = 1 +10 +c = c + 1 +IF tehe(c) = ASC("(") THEN d = d + 1 +IF tehe(c) = ASC(")") THEN d = d - 1 +IF d = 0 THEN GOTO 11 +GOTO 10 +11 +tee a + 1, c - 1 +a = c +FOR c = 1 TO tehl +opr(oprm, c) = vast(c) +NEXT c +GOTO 12 +CASE 5 +ng = 1 +ngx = a +CASE 1 TO 4 +oe = b +oex = a +CASE 65 TO 90, 97 TO 122 +FOR c = 1 TO nm +IF muun(c) = b THEN d = c: GOTO 8 +NEXT c +8 +FOR c = 1 TO tehl +opr(oprm, c) = muut(d, c) +prn xloc(a), c, 3, 0, CHR$(muut(d, c)) +NEXT c +12 +IF ng = 1 THEN GOSUB mkneg +IF oprm = 2 THEN +SELECT CASE oe +CASE 1 +FOR c = 1 TO tehl +d = opr(1, c) +e = opr(2, c) +IF d = e THEN f = ASC("t") ELSE f = ASC("v") +opr(1, c) = f +prn xloc(oex), c, 12, 0, CHR$(f) +NEXT c +CASE 2 +FOR c = 1 TO tehl +d = opr(1, c) +e = opr(2, c) +f = ASC("t") +IF (d = ASC("t")) AND (e = ASC("v")) THEN f = ASC("v") +opr(1, c) = f +prn xloc(oex), c, 12, 0, CHR$(f) +NEXT c +CASE 3 +FOR c = 1 TO tehl +d = opr(1, c) +e = opr(2, c) +f = ASC("t") +IF (d = ASC("v")) AND (e = ASC("v")) THEN f = ASC("v") +opr(1, c) = f +prn xloc(oex), c, 12, 0, CHR$(f) +NEXT c +CASE 4 +FOR c = 1 TO tehl +d = opr(1, c) +e = opr(2, c) +f = ASC("v") +IF (d = ASC("t")) AND (e = ASC("t")) THEN f = ASC("t") +opr(1, c) = f +prn xloc(oex), c, 12, 0, CHR$(f) +NEXT c +END SELECT +ELSE +oprm = oprm + 1 +END IF +END SELECT +NEXT a + +GOTO 9 +mkneg: +FOR c = 1 TO tehl +d = opr(oprm, c) +IF d = ASC("t") THEN d = ASC("v") ELSE d = ASC("t") +prn xloc(ngx), c, 4, 0, CHR$(d) +opr(oprm, c) = d +NEXT c +ng = 0 +RETURN +9 + +FOR c = 1 TO tehl +vast(c) = opr(1, c) +NEXT c +END SUB + +SUB teeslg (x1, x4, l) +x2 = x4 +h = 0 +FOR e = 1 TO 4 +g = 1 +'FOR a = x1 TO x2 +a = x1 +21 +b = tehe(a) +IF b = 40 THEN +c = a +d = 1 +14 +c = c + 1 +IF tehe(c) = 40 THEN d = d + 1 +IF tehe(c) = 41 THEN d = d - 1 +IF d = 0 THEN GOTO 15 +GOTO 14 +15 +IF e = 1 THEN teeslg a + 1, c - 1, l ELSE l = 0 +a = c + l +x2 = x2 + l +h = h + l +GOTO 16 +END IF + +IF (b = 5) AND (e = 1) AND (g > 1) THEN +mov a, 1 +tehe(a) = 40 +lendp a + 2, f +mov a + 2 + f, 1 +tehe(a + 2 + f) = 41 +h = h + 2 +x2 = x2 + 2 +a = a + 2 + f +GOTO 16 +END IF + +IF (b = 3 OR b = 4) AND (e = 2) AND (g > 2) THEN +lendm a - 1, f +mov a - f, 1 +tehe(a - f) = 40 +lendp a + 2, f +mov a + 2 + f, 1 +tehe(a + 2 + f) = 41 +h = h + 2 +x2 = x2 + 2 +a = a + 2 + f +GOTO 16 +END IF + +IF (b = 2) AND (e = 3) AND (g > 3) THEN +lendm a - 1, f +mov a - f, 1 +tehe(a - f) = 40 +lendp a + 2, f +mov a + 2 + f, 1 +tehe(a + 2 + f) = 41 +h = h + 2 +x2 = x2 + 2 +a = a + 2 + f +GOTO 16 +END IF + + +SELECT CASE b +CASE 5 +g = 1 +CASE 3, 4 +g = 2 +CASE 2 +g = 3 +CASE 1 +g = 4 +END SELECT +16 +a = a + 1 +IF a <= x2 THEN GOTO 21 +NEXT e +l = h +END SUB + diff --git a/math/loto/loos.txt b/math/loto/loos.txt new file mode 100755 index 0000000..fa3b26c --- /dev/null +++ b/math/loto/loos.txt @@ -0,0 +1,403 @@ + 95 11 13 18 33 40 43 + 96 3 9 11 41 42 45 + 97 3 12 16 23 27 42 + 98 2 25 32 33 40 42 + 99 3 5 9 16 23 47 + 100 5 17 26 31 34 45 + 101 2 22 39 45 46 48 + 102 7 9 10 32 33 47 + 103 6 9 15 25 32 33 + 104 7 10 19 23 33 42 + 105 2 4 9 16 17 44 + 106 9 23 25 35 40 44 + 107 7 16 17 24 39 41 + 108 4 8 14 22 35 43 + 109 9 27 31 37 42 48 + 110 7 14 21 22 34 47 + 111 1 4 19 30 32 36 + 112 1 12 13 15 20 47 + 113 21 22 31 36 44 48 + 114 8 12 20 21 38 41 + 115 3 19 24 26 39 44 + 116 1 14 22 23 37 39 + 117 2 13 27 28 41 43 + 118 3 10 15 22 35 41 + 119 5 9 18 24 32 43 + 120 1 3 5 19 25 31 + 121 24 25 30 39 42 48 + 122 6 13 24 33 36 40 + 123 7 14 24 30 45 46 + 124 7 18 24 33 41 48 + 125 2 9 11 12 30 34 + 126 4 5 7 37 39 46 + 127 21 26 29 36 42 47 + 128 1 7 23 31 43 46 + 129 6 27 32 42 46 47 + 130 12 14 26 32 35 37 + 131 6 8 23 28 34 48 + 132 15 16 21 25 30 46 + 133 11 16 18 22 26 30 + 134 12 16 23 28 38 39 + 135 2 5 9 19 29 32 + 136 6 8 20 21 30 38 + 137 3 10 13 23 27 35 + 138 1 3 5 32 36 44 + 139 3 22 25 27 31 46 + 140 4 19 23 35 38 43 + 141 18 21 24 26 44 46 + 142 3 8 17 28 32 38 + 143 2 4 11 17 24 32 + 144 3 9 15 19 41 43 + 145 12 17 25 29 32 36 + 146 3 4 7 11 18 42 + 147 2 12 21 24 26 39 + 148 34 39 40 41 44 48 + 149 4 5 21 39 42 46 + 150 2 8 15 21 25 45 + 151 10 23 30 31 45 47 + 152 9 15 28 39 41 46 + 153 12 16 25 27 43 46 + 154 10 33 36 37 41 48 + 155 6 13 14 20 45 47 + 156 2 14 16 36 41 44 + 157 22 29 33 39 40 46 + 158 3 25 26 27 28 41 + 159 1 3 7 20 21 27 + 160 5 6 11 27 41 46 + 161 4 9 12 16 31 34 + 162 10 11 14 15 39 44 + 163 12 13 22 28 37 44 + 164 5 21 24 27 29 45 + 165 14 21 23 24 25 26 + 166 5 8 16 21 33 35 + 167 13 18 19 20 36 42 + 168 1 10 31 40 41 44 + 169 7 21 24 26 28 38 + 170 2 8 12 21 29 46 + 171 18 25 26 29 31 40 + 172 4 5 30 32 35 44 + 173 2 18 33 39 43 45 + 174 17 21 26 29 38 47 + 175 9 13 18 36 45 48 + 176 16 19 30 34 41 44 + 177 11 12 16 30 40 44 + 178 2 11 21 22 44 47 + 179 7 8 17 18 28 39 + 180 13 17 26 30 32 38 + 181 16 23 34 36 37 44 + 182 4 12 13 16 21 46 + 183 17 28 37 44 45 46 + 184 2 6 19 25 27 42 + 185 4 10 11 13 32 38 + 186 13 20 22 26 30 31 + 187 8 28 30 35 41 48 + 188 5 7 18 25 34 47 + 189 2 10 31 32 44 45 + 190 5 11 12 14 30 44 + 191 15 27 38 41 42 44 + 192 2 6 9 11 18 22 + 193 2 5 10 18 20 33 + 194 9 17 20 23 24 31 + 195 6 8 9 25 33 34 + 196 3 31 33 40 42 48 + 197 2 12 17 22 29 47 + 198 3 6 12 16 37 41 + 199 2 11 22 29 33 34 + 200 5 10 15 16 42 45 + 201 13 28 31 33 35 36 + 202 2 3 14 15 36 37 + 203 2 5 18 19 32 43 + 204 4 16 22 37 40 47 + 205 6 18 24 28 39 43 + 206 6 11 14 20 25 46 + 207 2 12 18 27 33 36 + 208 1 3 22 24 25 27 + 209 17 20 24 33 42 47 + 210 3 7 21 24 41 46 + 211 4 8 16 20 25 31 + 212 4 15 27 35 41 43 + 213 3 7 25 30 39 42 + 214 16 24 32 33 42 47 + 215 12 15 24 28 41 42 + 216 9 11 21 32 39 41 + 217 11 13 14 23 38 45 + 218 1 19 22 28 30 47 + 219 4 25 31 35 36 38 + 220 9 10 25 33 43 46 + 221 7 8 30 34 37 44 + 222 4 7 8 9 13 19 + 223 3 34 39 40 41 43 + 224 17 19 21 32 36 38 + 225 4 8 13 21 39 41 + 226 3 6 18 21 29 42 + 227 12 13 18 22 30 32 + 228 6 35 41 42 43 45 + 229 9 11 27 32 40 41 + 230 21 27 35 36 42 46 + 231 21 27 31 39 41 46 + 232 9 10 15 24 28 45 + 233 2 11 18 35 40 48 + 234 5 21 31 33 34 44 + 235 5 10 13 33 36 42 + 236 2 6 11 21 23 31 + 237 3 7 11 12 29 35 + 238 8 20 22 24 41 43 + 239 4 9 23 26 31 32 + 240 5 22 36 42 44 47 + 241 1 2 12 21 37 41 + 242 2 5 23 24 25 26 + 243 5 19 21 31 32 33 + 244 17 18 22 25 28 47 + 245 7 9 31 39 41 48 + 246 3 7 14 23 31 41 + 247 1 6 11 18 29 33 + 248 6 18 25 29 30 39 + 249 8 33 40 41 43 46 + 250 3 16 24 26 35 36 + 251 17 18 22 25 30 42 + 252 1 14 17 20 22 31 + 253 15 27 32 40 41 46 + 254 9 17 29 37 39 40 + 255 10 11 14 27 31 32 + 256 7 32 35 41 45 46 + 257 3 6 21 24 32 47 + 258 1 14 17 35 36 47 + 259 9 20 26 32 34 48 + 260 13 20 21 36 40 42 + 261 19 28 29 34 36 45 + 262 2 12 23 34 38 47 + 263 27 35 40 41 42 45 + 264 7 11 23 38 42 45 + 265 5 8 13 17 32 44 + 266 3 8 13 15 25 38 + 267 2 7 9 17 25 27 + 268 6 33 34 38 43 48 + 269 7 14 39 40 44 45 + 270 16 19 20 30 33 36 + 271 4 11 12 21 24 38 + 272 6 20 26 35 40 46 + 273 5 19 20 31 32 37 + 274 4 8 10 25 27 48 + 275 2 21 26 32 33 40 + 276 3 6 20 31 34 42 + 277 13 22 29 34 38 43 + 278 3 20 24 35 38 47 + 279 7 23 27 30 35 46 + 280 11 13 21 43 44 45 + 281 3 18 22 27 41 47 + 282 2 5 18 20 31 41 + 283 1 11 13 17 28 29 + 284 4 16 22 41 42 44 + 285 4 10 12 21 29 43 + 286 5 14 20 24 37 44 + 287 5 8 13 25 39 40 + 288 19 21 22 26 32 34 + 289 7 8 26 31 38 39 + 290 1 12 19 22 24 28 + 291 2 13 31 37 41 44 + 292 2 12 27 36 40 44 + 293 5 7 18 19 33 34 + 294 4 17 21 41 42 48 + 295 19 25 27 28 42 45 + 296 5 7 10 24 38 43 + 297 19 21 26 27 41 44 + 298 1 14 24 33 38 42 + 299 4 29 38 41 45 47 + 300 6 16 17 21 26 34 + 301 8 19 22 34 38 47 + 302 3 11 16 21 23 25 + 303 1 16 23 28 34 43 + 304 9 27 29 31 37 38 + 305 2 16 21 30 36 47 + 306 10 32 36 37 38 47 + 307 9 17 22 32 44 46 + 308 10 14 17 28 36 40 + 309 17 29 31 39 45 47 + 310 9 21 27 31 39 41 + 311 5 26 30 35 45 46 + 312 7 16 18 28 39 42 + 313 14 18 28 34 37 43 + 314 1 12 28 30 40 44 + 315 1 4 6 11 26 27 + 316 1 11 12 14 21 24 + 317 7 14 35 40 41 42 + 318 1 18 25 26 42 47 + 319 7 8 12 14 16 48 + 320 3 25 27 30 36 45 + 321 2 3 16 20 35 42 + 322 15 19 22 30 35 44 + 323 1 6 17 18 27 40 + 324 1 2 7 23 30 32 + 325 4 8 14 19 41 47 + 326 18 19 23 41 47 48 + 327 5 31 37 38 41 45 + 328 3 5 11 38 40 45 + 329 7 10 29 33 37 42 + 330 14 20 24 38 45 46 + 331 3 5 15 28 38 40 + 332 7 15 29 30 35 48 + 333 7 28 34 37 39 44 + 334 11 26 32 35 36 39 + 335 5 6 15 20 39 47 + 336 7 9 17 25 28 34 + 337 12 16 19 20 39 43 + 338 6 9 16 19 44 48 + 339 1 14 21 28 31 40 + 340 9 12 16 17 20 34 + 341 3 5 7 8 12 41 + 342 22 23 42 44 45 48 + 343 1 7 23 24 33 40 + 344 7 9 25 34 37 47 + 345 21 25 30 37 39 42 + 346 11 24 36 38 42 44 + 347 1 2 8 9 29 43 + 348 6 21 25 36 41 42 + 349 1 8 10 11 16 44 + 350 4 10 24 25 35 37 + 351 7 13 20 21 30 33 + 352 10 14 19 24 31 33 + 353 8 12 25 34 41 47 + 354 16 27 32 40 44 48 + 355 2 5 11 20 32 35 + 356 4 10 13 17 23 46 + 357 1 11 13 14 23 29 + 358 7 9 15 16 45 46 + 359 6 11 27 30 36 39 + 360 3 4 5 17 31 47 + 361 7 17 29 39 46 47 + 362 8 24 27 30 34 42 + 363 4 13 21 22 34 40 + 364 2 7 24 34 42 48 + 365 5 6 11 13 29 46 + 366 6 17 18 24 29 37 + 367 3 17 26 36 45 48 + 368 23 37 38 39 42 46 + 369 4 6 20 27 28 30 + 370 2 19 21 28 34 44 + 371 1 20 26 36 38 44 + 372 2 3 4 10 20 47 + 373 2 3 22 37 46 48 + 374 3 5 24 43 44 47 + 375 1 4 6 18 40 48 + 376 10 17 22 26 38 48 + 377 25 36 37 38 43 47 + 378 7 8 9 27 32 35 + 379 2 3 10 17 18 39 + 380 2 6 22 26 37 48 + 381 6 9 14 16 25 28 + 382 14 17 18 21 28 40 + 383 2 16 25 31 32 35 + 384 2 11 31 35 40 44 + 385 7 13 14 16 23 44 + 386 6 8 19 30 39 42 + 387 6 15 17 41 42 45 + 388 10 19 22 34 37 41 + 389 12 22 29 33 36 40 + 390 1 8 26 27 28 36 + 391 9 27 29 32 36 37 + 392 3 18 24 35 37 44 + 393 1 13 21 33 34 35 + 394 23 28 30 39 43 45 + 395 7 22 26 32 38 40 + 396 13 31 37 42 47 48 + 397 5 7 8 10 18 27 + 398 11 20 22 27 41 43 + 399 14 19 27 33 36 38 + 400 3 20 25 26 34 42 + 401 6 22 23 25 37 43 + 402 3 5 7 23 37 40 + 403 14 26 34 38 39 46 + 404 4 6 11 19 25 32 + 405 19 27 29 35 37 40 + 406 2 23 28 38 41 42 + 407 10 11 20 29 37 48 + 408 10 29 32 33 43 48 + 409 21 23 27 30 34 42 + 410 8 31 35 43 47 48 + 411 1 9 21 41 42 46 + 412 3 9 34 42 45 48 + 413 1 5 9 10 23 35 + 414 2 15 37 43 44 46 + 415 11 15 24 31 36 43 + 416 4 9 22 32 39 44 + 417 5 18 35 37 39 45 + 418 11 16 24 31 32 44 + 419 11 16 23 27 34 36 + 420 1 17 19 29 32 35 + 421 1 3 20 27 42 45 + 422 13 14 23 30 41 44 + 423 13 14 15 28 34 38 + 424 11 17 21 23 29 40 + 425 3 12 24 43 45 48 + 426 1 7 8 27 36 48 + 427 6 8 28 30 35 46 + 428 3 7 8 13 15 25 + 429 3 11 12 18 23 45 + 430 26 27 30 31 35 36 + 431 8 21 26 28 35 46 + 432 8 10 14 20 31 45 + 433 4 6 8 27 37 42 + 434 3 8 11 20 31 42 + 435 1 7 9 10 26 40 + 436 2 8 18 28 36 39 + 437 4 10 24 29 41 48 + 438 8 11 28 33 36 43 + 439 3 17 27 33 44 45 + 440 12 22 30 35 36 45 + 441 3 7 11 17 20 43 + 442 6 30 38 39 44 48 + 443 3 4 27 36 42 45 + 444 1 12 19 23 37 43 + 445 7 9 21 22 29 47 + 446 2 6 8 33 41 42 + 447 13 21 23 25 27 37 + 448 3 4 24 26 31 33 + 449 17 27 37 39 41 46 + 450 2 9 10 21 27 39 + 451 3 4 11 28 38 41 + 452 1 4 10 11 31 37 + 453 12 16 17 24 26 35 + 454 4 7 19 20 22 48 + 455 2 10 14 23 39 48 + 456 4 29 35 36 39 44 + 457 7 17 22 25 27 45 + 458 12 18 23 28 35 36 + 459 1 12 15 38 42 44 + 460 5 6 13 16 25 27 + 461 4 5 7 14 17 18 + 462 3 12 18 39 40 41 + 463 2 7 8 13 19 21 + 464 17 30 31 34 38 43 + 465 8 19 22 24 45 46 + 466 7 11 16 21 27 42 + 467 2 8 17 25 32 41 + 468 5 10 22 25 32 41 + 469 5 10 11 19 36 45 + 470 3 37 42 43 45 46 + 471 1 20 22 25 36 40 + 472 4 16 26 27 36 39 + 473 4 6 11 22 36 48 + 474 2 3 21 33 37 43 + 475 2 11 31 32 33 35 + 476 3 5 15 20 32 43 + 477 3 11 23 30 38 48 + 478 4 23 25 29 35 42 + 479 18 31 32 34 40 45 + 480 5 7 11 13 19 45 + 481 3 17 19 26 31 41 + 482 11 13 18 25 29 47 + 483 2 12 18 19 24 27 + 484 3 14 26 33 35 40 + 485 1 9 11 28 42 46 + 486 2 8 14 15 28 32 + 487 17 40 41 44 45 47 + 488 9 36 40 44 46 48 + 489 19 20 27 30 41 43 + 490 8 15 23 30 37 40 + 491 15 27 28 35 39 42 + 492 14 23 27 30 41 45 + 493 1 14 15 37 40 48 + 494 9 22 28 31 39 46 + 495 8 24 28 30 31 48 + 496 5 15 20 24 29 31 + 497 13 14 30 33 38 40 diff --git a/math/loto/loto.bas b/math/loto/loto.bas new file mode 100755 index 0000000..3b219c9 --- /dev/null +++ b/math/loto/loto.bas @@ -0,0 +1,212 @@ +' Lottery analyzer +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB ennus () +DECLARE SUB menu () +DECLARE SUB gr1 () +DECLARE SUB gr2 () +DECLARE SUB getson (a$) +DECLARE SUB loaddata () +DECLARE SUB wai () +DECLARE SUB gr3 () +DEFINT A-Y + +DECLARE SUB start () +DIM SHARED mitus, sona$(1 TO 50) +DIM SHARED num(1 TO 500, 1 TO 7) +DIM SHARED mitun + +start +loaddata + +menu + +SUB ennus +DIM buf(1 TO 48) +PRINT "viimase 10 loosimise ajal:" + +FOR a = mitun - 10 TO mitun +FOR b = 2 TO 7 +buf(num(a, b)) = buf(num(a, b)) + 1 +NEXT b +NEXT a + +FOR b = 1 TO 6 +c = 0 +FOR a = 1 TO 48 +IF buf(a) > c THEN c = buf(a): d = a +NEXT a +PRINT d; " esines: "; c; " korda" +buf(d) = 0 +NEXT b + +PRINT "--------------------------------------" + +FOR a = 1 TO mitun +FOR b = 2 TO 7 +buf(num(a, b)) = a +NEXT b +NEXT a + +FOR b = 1 TO 6 +c = 30000 +FOR a = 1 TO 48 +IF buf(a) < c THEN c = buf(a): d = a +NEXT a +PRINT d; " esines viimati: "; mitun - c; " loosimist tagasi" +buf(d) = 30000 +NEXT b + + +END SUB + +SUB getson (a$) +mitus = 0 + +d = 1 +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +IF c$ = " " THEN +d = 1 +ELSE +IF d = 1 THEN +mitus = mitus + 1 +sona$(mitus) = "" +d = 0 +END IF +sona$(mitus) = sona$(mitus) + c$ +END IF +NEXT b + +END SUB + +SUB gr1 +CLS +LINE (0, 0)-(600, 0), 1 +LINE (0, 49)-(600, 49), 1 +LINE (0, 50)-(600, 50), 1 +LINE (0, 48 * 6 + 51)-(600, 48 * 6 + 51), 1 +FOR a = 1 TO mitun +c = 0 +FOR b = 2 TO 7 +c = c + num(a, b) +PSET (a, num(a, b)), 15 +NEXT b +LINE (a, c + 50)-(a, 24 * 6 + 50), 10 +NEXT a +wai +END SUB + +SUB gr2 +CLS +DIM buf(1 TO 20000) + +FOR x = 1 TO mitun - 1 +FOR a = 2 TO 7 +LINE (600, num(x, a))-(610, num(x + 1, a)), 3 +NEXT a +LINE (600, 1)-(600, 48), 1 +SOUND 0, 2 +GET (10, 1)-(610, 50), buf(1) +PUT (1, 1), buf(1), PSET +LINE (601, 1)-(610, 50), 0, BF +IF INKEY$ <> "" GOTO 5 +NEXT x +wai +5 +END SUB + +SUB gr3 +CLS +PAINT (1, 1), 3 +DIM buf(1 TO 48) +DIM buf2(1 TO 20000) +c = 0 + +FOR a = 1 TO mitun +FOR b = 1 TO 48 +buf(b) = 0 +NEXT b + +FOR b = 2 TO 7 +buf(num(a, b)) = 10 +NEXT b + +FOR b = 1 TO 48 +c = c + 1 +buf2(c) = buf(b) +NEXT b +NEXT a + +FOR e = 2 TO 400 +d = 0 +FOR x = 1 TO 639 +FOR y = 1 TO e +d = d + 1 +IF d > c THEN GOTO 4 +PSET (x, y), buf2(d) +NEXT y +NEXT x +4 +LINE (x + 1, 1)-(x + 1, e), 14 +LINE (x + 1, y)-(x + 4, y), 12 +IF INKEY$ <> "" THEN GOTO 6 +NEXT e +wai +6 +END SUB + +SUB loaddata +PRINT "�ks hetk ...." + +mitun = 0 +OPEN "loos.txt" FOR INPUT AS #1 +1 +IF EOF(1) <> 0 THEN GOTO 2 +LINE INPUT #1, a$ +getson a$ +mitun = mitun + 1 +FOR b = 1 TO 7 +num(mitun, b) = VAL(sona$(b)) +NEXT b +GOTO 1 +2 +CLOSE #1 + +CLS +END SUB + +SUB menu +3 +CLS +7 +LOCATE 1, 1 +PRINT " Viking loto statistika anal��s" +PRINT "1 - t�ppgraaf" +PRINT "2 - joongraaf" +PRINT "3 - sobitus" +PRINT "4 - statistika" +PRINT "5 - v�lja" +a$ = INPUT$(1) + +IF a$ = "1" THEN gr1 +IF a$ = "2" THEN gr2 +IF a$ = "3" THEN gr3 +IF a$ = "4" THEN ennus: GOTO 7 +IF a$ = "5" THEN SYSTEM +GOTO 3 + +END SUB + +SUB start +SCREEN 12 + +END SUB + +SUB wai +a$ = INPUT$(1) +END SUB + diff --git a/math/sin_cos.bas b/math/sin_cos.bas new file mode 100755 index 0000000..037b626 --- /dev/null +++ b/math/sin_cos.bas @@ -0,0 +1,72 @@ +' SIN & COS table +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +xs = 640 +ys = 480 +scr = 12 'Video mode +strs = 0 + +xs = xs / 11.3 +ys = ys / 11.7 + +IF strs = 0 THEN ELSE GOTO 1 + +SELECT CASE scr +CASE 12, 11 +strs = 16 + +CASE 9, 10 +strs = 14 + +CASE 1, 13, 2, 7, 8 +strs = 8 +END SELECT +1 + +SCREEN scr + +FOR b = 1 TO 10 +LINE (0, b * ys)-(xs * 10, b * ys), 8 +LINE (b * xs, 0)-(b * xs, ys * 10), 8 +LOCATE 10 * ys / strs + 2, b * xs / 8 + 1 +PRINT CHR$(b + 48) +NEXT b + +LOCATE 10 * ys / strs + 2, xs * 10 / 8 + 0 +PRINT 10 +LOCATE 1 * ys / strs + 1, xs * 10 / 8 + 3 +PRINT -1 +LOCATE 5 * ys / strs + 1, xs * 10 / 8 + 3 +PRINT 0 +LOCATE 10 * ys / strs, xs * 10 / 8 + 3 +PRINT 1 + +LINE (0, ys * 5 + 1)-(xs * 10, ys * 5 + 1), 14 +LINE (5 * xs + 1, 0)-(5 * xs + 1, 10 * ys), 14 + +FOR a = 0 TO 10 STEP .05 +x = a * xs +y = SIN(a) * ys * 5 + ys * 5 +IF a > 0 THEN LINE (x1, y1)-(x, y), 15 +x1 = x +y1 = y +NEXT a +LOCATE y / strs + 1, xs * 10 / 8 +PRINT "sin" + +FOR a = 0 TO 10 STEP .05 +x = a * xs +y = COS(a) * ys * 5 + ys * 5 +IF a > 0 THEN LINE (x1, y1)-(x, y), 12 +x1 = x +y1 = y +NEXT a +LOCATE y / strs + 1, xs * 10 / 8 +PRINT "cos" + +a$ = INPUT$(1) +SYSTEM + diff --git a/math/sinus.bas b/math/sinus.bas new file mode 100755 index 0000000..78b452e --- /dev/null +++ b/math/sinus.bas @@ -0,0 +1,27 @@ +' Sinus calculator +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + +' this program calculates sinus without using SIN function + + +SCREEN 12 + +LINE (0, 240)-(640, 240), 15 + +r = 0 +r1 = 1 +FOR x = 1 TO 639 +y = SIN(x / 100) * 100 + 240 ' using SIN +PSET (x, y), 15 + +r1 = r1 + ((0 - r) / 10000) +r = r + r1 ' without SIN +y = r +PSET (x, y + 241), 12 + +NEXT x + diff --git a/math/tuletis.bas b/math/tuletis.bas new file mode 100755 index 0000000..61c2cb2 --- /dev/null +++ b/math/tuletis.bas @@ -0,0 +1,68 @@ +DECLARE SUB init () +DECLARE SUB pp (x1, y1, x2, y2, c!) +DIM SHARED mul + +mul = 50 '<< scale +init + +ox = -320 / mul +oy = 0 + +FOR x = -320 / mul TO 320 / mul STEP 1 / mul + + +t = x ^ 3 - (3 * x) '<< Type your formula there + + +pp x, t, ox, tol, 10 +y = (t - tol) * mul +tol = t + +pp x, y, ox, oy, 14 +ox = x +oy = y +NEXT x + +SUB init +SCREEN 12 + +FOR x = -320 TO 320 +IF x / mul = x \ mul THEN LINE (x + 320, 0)-(x + 320, 479), 1 +NEXT x + +FOR y = -240 TO 240 +IF y / mul = y \ mul THEN LINE (0, y + 240)-(639, y + 240), 1 +NEXT y + +FOR x = -320 TO 320 +IF x / (mul * 5) = x \ (mul * 5) THEN LINE (x + 320, 0)-(x + 320, 479), 4 +NEXT x + +FOR y = -240 TO 240 +IF y / (mul * 5) = y \ (mul * 5) THEN LINE (0, y + 240)-(639, y + 240), 4 +NEXT y + + + +LINE (0, 240)-(639, 240), 3 +LINE (320, 0)-(320, 479), 3 +END SUB + +SUB pp (x, y, x1, y1, c) + +x2 = (x * mul) + 320 +y2 = 240 - (y * mul) +x3 = (x1 * mul) + 320 +y3 = 240 - (y1 * mul) +IF x2 < 0 THEN GOTO 1 +IF y2 < 0 THEN GOTO 1 +IF x2 > 639 THEN GOTO 1 +IF y2 > 479 THEN GOTO 1 +IF x3 < 0 THEN GOTO 1 +IF y3 < 0 THEN GOTO 1 +IF x3 > 639 THEN GOTO 1 +IF y3 > 479 THEN GOTO 1 +LINE (x2, y2)-(x3, y3), c +1 +END SUB + diff --git a/math/valem.bas b/math/valem.bas new file mode 100755 index 0000000..1a73618 --- /dev/null +++ b/math/valem.bas @@ -0,0 +1,47 @@ +DEFDBL A-Z +SCREEN 13 +pi = 3.141285 + +p1 = -1 +p2 = 4 +mi = 0 +dia = 1.5 +tli = 0 +bli = -1 + +siz = 100 / dia +FOR a = 0 TO 100 STEP 100 / dia + LINE (0, 100 + a)-(319, 100 + a), 2 + LINE (0, 100 - a)-(319, 100 - a), 2 +NEXT a + +LINE (0, 100)-(319, 100), 10 +ste = (p2 - p1) / 319 +o = 0 +FOR x = p1 TO p2 STEP ste / 20 + + y = x ^ 2 - 3 * x + +u = ABS(INT(x) - x) +IF u >= lu THEN su = 1 ELSE su = 0 +lu = u +rx = (x - p1) * (1 / ste) +IF lsu > su THEN tl = 1 +lsu = su +y = y - mi +IF y > tli THEN y = tli +IF y < bli THEN y = bli +s = s + ABS(y) +ry = -y * siz + 100 +IF ry > 199 THEN ry = 199 +IF ry < 0 THEN ry = 0 +o = o + 1 +IF o = 20 THEN + o = 0 + IF tl = 1 THEN LINE (rx, 0)-(rx, 199), 4: tl = 0 + LINE (rx, 100)-(rx, ry), 15 +END IF +NEXT x +LOCATE 1, 1 +PRINT s / (1 / ste) / 20 + diff --git a/modules/fileread.bas b/modules/fileread.bas new file mode 100755 index 0000000..2758b59 --- /dev/null +++ b/modules/fileread.bas @@ -0,0 +1,43 @@ +DECLARE SUB bytew (fi&, d&, addr&) +DECLARE SUB byter (fi&, addr&, d&) +DEFLNG A-Z +DIM SHARED byte AS STRING * 1 + +SUB byter (fi, addr, d) +SEEK #1, addr + 1 +GET fi, , byte +d = ASC(byte) +END SUB + +SUB bytew (fi, d, addr) +SEEK #1, addr + 1 +byte = CHR$(d) +PUT #1, , byte +END SUB + +SUB dwordr (fi, a, f) +byter fi, a, b +byter fi, a + 1, c +byter fi, a + 2, d +byter fi, a + 3, e +f = e * 16777216 +f = f + d * 65536 + c * 256 + b +END SUB + +SUB dwordw (fi, b, a) +c = b +d = c \ 16777216 +c = c - (d * 16777216) + +e = c \ 65536 +c = c - (e * 65536) + +f = c \ 256 +c = c - (f * 256) + +bytew fi, c, a +bytew fi, f, a + 1 +bytew fi, e, a + 2 +bytew fi, d, a + 3 +END SUB + diff --git a/modules/fnt8x8.bas b/modules/fnt8x8.bas new file mode 100755 index 0000000..1950910 --- /dev/null +++ b/modules/fnt8x8.bas @@ -0,0 +1,19 @@ +DECLARE SUB loadfont () +DIM SHARED font%(0 TO 255, 0 TO 7, 0 TO 7) + + +SUB loadfont +SCREEN 7 + +FOR a% = 0 TO 255 + LOCATE 1, 1 + PRINT CHR$(a%) + FOR y% = 0 TO 7 + FOR x% = 0 TO 7 + font%(a, x, y) = POINT(x%, y%) + NEXT x% + NEXT y% +NEXT a% + +END SUB + diff --git a/modules/lisfile.bas b/modules/lisfile.bas new file mode 100755 index 0000000..2c82e92 --- /dev/null +++ b/modules/lisfile.bas @@ -0,0 +1,40 @@ +DECLARE SUB listFiles () + +DIM SHARED fileList$(1 TO 5000) +DIM SHARED fileListAmo + +listFiles + + +SUB listFiles +SHELL "cmd /C dir>dir.$$$" + + +fileListAmo = 0 + +OPEN "dir.$$$" FOR INPUT AS #1 +1 + +IF EOF(1) <> 0 THEN GOTO 2 + +LINE INPUT #1, a$ + + +IF LEN(a$) < 40 THEN GOTO 1 + +f$ = RIGHT$(a$, LEN(a$) - 39) +IF LEFT$(f$, 1) = " " THEN GOTO 1 +IF LEFT$(f$, 1) = "." THEN GOTO 1 +IF LEFT$(f$, 7) = "DIR.$$$" THEN GOTO 1 + +fileListAmo = fileListAmo + 1 +fileList$(fileListAmo) = f$ + +GOTO 1 +2 +CLOSE #1 + + +KILL "dir.$$$" +END SUB + diff --git a/modules/qbExt/index.html b/modules/qbExt/index.html new file mode 100755 index 0000000..25a8c73 --- /dev/null +++ b/modules/qbExt/index.html @@ -0,0 +1,16 @@ + +QBasic mouse extension + + +

QBasic mouse extension

+
+
+ +This TSR written in x86 assembler, allows QBasic programs to use mouse, +by writing mouse movement and button press info to memory, +referenced by INT 79h. +Afterwards QBasic programs can read mouse cursor position +directly from RAM by using PEEK command. + + + \ No newline at end of file diff --git a/modules/qbExt/mousedrv.bas b/modules/qbExt/mousedrv.bas new file mode 100755 index 0000000..a44dfbe --- /dev/null +++ b/modules/qbExt/mousedrv.bas @@ -0,0 +1,126 @@ +' Mouse demo +' made by Svjatoslav Agejenko +' in 2004.01 +' Homepage: http://svjatoslav.eu + +DECLARE SUB mousedemo () +DECLARE SUB putword (addr!, dat!) +DECLARE FUNCTION getword! (addr!) +DECLARE FUNCTION getbyte! (addr!) +DECLARE SUB start () + +DIM SHARED extSEG, extADDR + +start + + +mousedemo + +FUNCTION getbyte (addr) +getbyte = PEEK(extADDR + addr) +END FUNCTION + +FUNCTION getword (addr) +a = PEEK(extADDR + addr) +b = PEEK(extADDR + addr + 1) + + +c$ = HEX$(a) +IF LEN(c$) = 1 THEN c$ = "0" + c$ +IF LEN(c$) = 0 THEN c$ = "00" + + +c = VAL("&H" + HEX$(b) + c$) + +getword = c +END FUNCTION + +SUB mousedemo + + + +cx = 150 +cy = 100 +maxmove = 50 +1 +frm = frm + 1 + + +LOCATE 1, 1 +PRINT cx, cy +PRINT frm + +CIRCLE (cx, cy), 10, 0 +xp = getword(2) +putword 2, 0 +yp = getword(4) +putword 4, 0 + +butt = getword(6) +putword 6, 0 + +IF butt <> 0 THEN +LOCATE 5 +PRINT butt +END IF + +IF xp < -maxmove THEN xp = -maxmove +IF xp > maxmove THEN xp = maxmove +cx = cx + xp + +IF yp < -maxmove THEN yp = -maxmove +IF yp > maxmove THEN yp = maxmove +cy = cy + yp + + +CIRCLE (cx, cy), 10, 10 + + + +SOUND 0, .05 +GOTO 1 + + +END SUB + +SUB putword (addr, dat) + +b$ = HEX$(dat) + +2 +IF LEN(b$) < 4 THEN b$ = "0" + b$: GOTO 2 + +n1 = VAL("&H" + LEFT$(b$, 2)) +n2 = VAL("&H" + RIGHT$(b$, 2)) + + +POKE (extADDR + addr), n2 +POKE (extADDR + addr + 1), n1 + +END SUB + +SUB start +SCREEN 13 + +DEF SEG = 0 ' read first from interrupt table + +extSEG = PEEK(&H79 * 4 + 3) * 256 +extSEG = extSEG + PEEK(&H79 * 4 + 2) + +PRINT "Segment is: " + HEX$(extSEG) + +extADDR = PEEK(&H79 * 4 + 1) * 256 +extADDR = extADDR + PEEK(&H79 * 4 + 0) + +PRINT "relative address is:"; extADDR + +DEF SEG = extSEG + +IF getword(0) <> 1983 THEN + PRINT "FATAL ERROR: you must load" + PRINT "QBasic extension TSR first!" + SYSTEM +END IF + +END SUB + diff --git a/modules/qbExt/qbext.asm b/modules/qbExt/qbext.asm new file mode 100755 index 0000000..57dd874 --- /dev/null +++ b/modules/qbExt/qbext.asm @@ -0,0 +1,84 @@ +; TSR hack that allows QBasic programs to use mouse. +; Made by Svjatoslav Agejenko +; in 2004.01 +; Homepage: http://svjatoslav.eu + + +org 100h + +myint = 79h ; interrupt to hook, becomes pointer to data table + + + mov dx, msg + mov ah, 9 + int 21h + + mov ax, 0 ; Saves old interrupt vector + mov es, ax + mov eax, [es:32] + mov [oldVector], eax + + cli + mov ax, cs ; Set new interrupt vector for IRQ 0 + shl eax, 16 + mov ax, custom + mov [es:32], eax + mov ax, dataTable ; Set interrupt vector for INT 79 (default) + mov [es:4 * myint], eax + sti + + mov ax, endPointer ; Calculate needed memory size, become TSR + add ax, 32 + mov dx, 0 + mov bx, 16 + div bx + mov dx, ax + mov ax, 3100h + int 21h + +custom: + pushf ; Execute default code in old int vector + call dword [cs:oldVector] + + cmp [cs:isRunning], 0 ; Check if custom routine is already active + jne EndOfRoutine + + mov [cs:isRunning], 1 ; Set active flag + pusha + push ds + push es + + cli + mov ax, 0bh ; Read Mouse Motion Counters + int 33h + add [CS:mouseHorisontal], cx + add [CS:mouseVertical], dx + mov ax, 3 ; read mouse buttons + int 33h + or [CS:mouseButtons], bx + inc byte [CS:updated] + sti + + pop es + pop ds + popa + mov [cs:isRunning], 0 ; Terminate active flag + EndOfRoutine: + iret + +oldVector dd 0 +isRunning db 0 + +dataTable: + dw 1983 ; check number, indicates that module is loaded + mouseHorisontal dw 0 + mouseVertical dw 0 + mouseButtons dw 0 + updated db 0 + + +endPointer: + +msg: +file 'readme.txt' + db '$' diff --git a/modules/qbExt/qbext.com b/modules/qbExt/qbext.com new file mode 100755 index 0000000..ae54fc4 Binary files /dev/null and b/modules/qbExt/qbext.com differ diff --git a/modules/sonad.bas b/modules/sonad.bas new file mode 100755 index 0000000..de46ce1 --- /dev/null +++ b/modules/sonad.bas @@ -0,0 +1,22 @@ +DIM SHARED mitus, sona$(1 TO 50) + +SUB getson (a$) +mitus = 0 + +d = 1 +FOR b = 1 TO LEN(a$) +c$ = RIGHT$(LEFT$(a$, b), 1) +IF c$ = " " THEN +d = 1 +ELSE +IF d = 1 THEN +mitus = mitus + 1 +sona$(mitus) = "" +d = 0 +END IF +sona$(mitus) = sona$(mitus) + c$ +END IF +NEXT b + +END SUB + diff --git a/modules/timer.bas b/modules/timer.bas new file mode 100755 index 0000000..19c4ff7 --- /dev/null +++ b/modules/timer.bas @@ -0,0 +1,95 @@ +DECLARE SUB timerAdd (element!, time!, value!) +DECLARE SUB timerinit () +DECLARE SUB timerprocess () +DIM SHARED timerTime(0 TO 50, 0 TO 100) +DIM SHARED timerValue(0 TO 50, 0 TO 100) + +DIM SHARED timerCplace(0 TO 50) +DIM SHARED timerCtime(0 TO 50) +DIM SHARED timerCvalue(0 TO 50) +DIM SHARED timerLast + + +timerinit +2 + + + +timerprocess +GOTO 2 + +SUB timerAdd (element, time, value) + +FOR a = 0 TO 100 + IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 +NEXT a +timer3: + +timerTime(element, a) = time +timerValue(element, a) = value + +END SUB + +SUB timerdisp +LOCATE 1, 1 + +FOR a = 0 TO 10 + PRINT timerCplace(a), timerCtime(a), timerCvalue(a) +NEXT a + +END SUB + +SUB timerinit +timerLast = TIMER + + +' stuff size +timerAdd 0, 0, 50 +timerAdd 0, 7, 10 + + +END SUB + +SUB timerprocess + +timerCurrent = TIMER +timerDiff = timerCurrent - timerLast +timerLast = timerCurrent + +FOR a = 0 TO 50 + ctim = timerCtime(a) + timerDiff + Cplace = timerCplace(a) +timer2: + IF timerTime(a, Cplace + 1) = -1 THEN + ctim = 0 + Cplace = 0 + END IF + IF timerTime(a, Cplace + 1) < ctim THEN + IF timerTime(a, Cplace + 1) = 0 THEN + timerCvalue(a) = timerValue(a, Cplace) + GOTO timer1: + END IF + Cplace = Cplace + 1 + GOTO timer2 + END IF + + v1 = timerValue(a, Cplace) + t1 = timerTime(a, Cplace) + v2 = timerValue(a, Cplace + 1) + t2 = timerTime(a, Cplace + 1) + + IF v1 = v2 THEN + timerCvalue(a) = v1 + ELSE + Tdiff1 = t2 - t1 + Tdiff2 = ctim - t1 + Vdiff = v2 - v1 + timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 + END IF +timer1: + timerCplace(a) = Cplace + timerCtime(a) = ctim +NEXT a + +END SUB + diff --git a/modules/tostr.bas b/modules/tostr.bas new file mode 100755 index 0000000..f384526 --- /dev/null +++ b/modules/tostr.bas @@ -0,0 +1,10 @@ +DECLARE FUNCTION toStr$ (a!) + +FUNCTION toStr$ (a) + +b$ = STR$(a) +IF LEFT$(b$, 1) = " " THEN b$ = RIGHT$(b$, LEN(b$) - 1) +toStr$ = b$ + +END FUNCTION + diff --git a/modules/upal.bas b/modules/upal.bas new file mode 100755 index 0000000..6ae6575 --- /dev/null +++ b/modules/upal.bas @@ -0,0 +1,29 @@ +DECLARE FUNCTION getcol! (r!, g!, b!) +DECLARE SUB setupal () + +FUNCTION getcol (r, g, b) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 255 THEN r = 255 +IF g > 255 THEN g = 255 +IF b > 255 THEN b = 255 +getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43) +END FUNCTION + +DEFINT A-Y +SUB setupal +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r +END SUB + diff --git a/networking/LPT communication driver/lptdrv.asm b/networking/LPT communication driver/lptdrv.asm new file mode 100755 index 0000000..599a545 --- /dev/null +++ b/networking/LPT communication driver/lptdrv.asm @@ -0,0 +1,281 @@ +; Svjatoslav Agejenko +; 2002.08 +; compile with FASM - Flat Assembler + +; TSR driver for LPT1 communication. +; Functions by INT 63h: + +; Deactivate +; AH = 0 + +; Activate +; AH = 1 + +; Get downloaded data +; AH = 2 +; ES:DI - pointer where to place downloaded data +; on return: +; AX = Number of bytes downloaded + +; copies downloaded data from driver input buffers to +; specified place. + +; Upload data +; AH = 3 +; DS:SI - pointer for data to be uploaded +; CX - amount of bytes to upload + +; After interrupt, data will be immediately +; moved to communication driver own output buffer, +; and sent when line becomes avaiable. + +myint = 63h ; interrupt to hook +upbuf = 5000 ; upload buffer size +downbuf = 5000 ; download buffer size +InPort = 37ah ; input port, for Parallel Printer Port Control Register +defspd = 3 ; Default communication speed +upbufp = last + downbuf + + +org 100h + +;============================ TSR initialization ==================== + +mov dx, InPort ; reset line +mov al, 0 +out dx, al + +mov ax, 0 ; Saves old interrupt vector +mov es, ax +mov eax, [es:32] +mov [d2], eax + +cli +mov ax, cs ; Set new interrupt vector for IRQ 0 +shl eax, 16 +mov ax, custom +mov [es:32], eax +mov ax, int63 ; Set new interrupt vector for INT 63 +mov [es:4 * myint], eax +sti + + +mov ax, last ; Calculate needed memory size, begin TSR +add ax, upbuf + downbuf + 1000 +mov dx, 0 +mov bx, 16 +div bx +mov dx, ax +mov ax, 3100h +int 21h +d2 dd 0 + +;============================ IRQ 0 handler ========================= + +custom: +pushf ; Execute default code in old int vector +call dword [cs:d2] + +;pusha ; Write 1 character, for debugging +;mov ax, 0e01h +;mov bx, 0 +;int 10h +;popa + +inc byte [cs:tmr] ; Update timer + +cmp [cs:progress], 0 ; Check if custom routine is already active +jne EndOfRoutine +cmp [cs:enabled], 0 ; Check if driver is enabled +je EndOfRoutine + +mov [cs:progress], 1 ; Set active flag +pusha +push ds +push es + +mov dx, InPort +in al, dx +shl al, 4 +cmp al, 128 +jb checkdone + +;============================ download data from LPT ================ + +mov ax, cs +mov es, ax +mov ds, ax +mov di, last +add di, [dbufsiz] +mov bh, 0 + +SkipHeader: +in al, dx +shl al, 6 +cmp al, 128 +jae SkipHeader +mov ah, 255 +mov cx, 0 + +SkipBit: +inc cx +cmp cx, 30 +je MkHeader +in al, dx +cmp al, ah +je SkipBit +in al, dx + +mov cx, 0 +mov ah, al +shr al, 3 +or al, 254 +sub al, 254 + +shl bl, 1 +add bl, al +inc bh +cmp bh, 8 +jb SkipBit + +mov al, bl +stosb +mov bh, 0 +mov bl, bh +jmp SkipBit + +MkHeader: +mov ax, di +sub ax, last +sub ax, [dbufsiz] +stosw +mov ax, di +sub ax, last +mov [dbufsiz], ax + +checkdone: +cmp word [cs:ubufsiz], 0 +je alldone + +; =========================== send data to LPT ====================== + +mov ax, cs +mov ds, ax +mov byte [tmr], 0 + +mov dx, InPort +mov al, 255 +out dx, al +mov si, upbufp +mov cx, [ubufsiz] + +sti +SendHeader: +cmp byte [tmr], 2 +jb SendHeader +cli + +SendByte: +cmp cx, 0 +je sent + +mov bl, 0 +lodsb + +SendBit: +push ax +push cx +shr al, 4 +or al, 247 +sub al, 247 +mov bh, bl +or bh, 254 +sub bh, 254 +shl bh, 1 +add al, bh + +mov ch, 0 +mov cl, [spd] +WaitForBit: +out dx, al +loop WaitForBit +pop cx +pop ax +inc bl +shl al, 1 +cmp bl, 8 +jb SendBit + +dec cx +jmp SendByte +sent: + +mov al, 0 +out dx, al +mov word [ubufsiz], 0 + + +alldone: +pop es +pop ds +popa +mov [cs:progress], 0 ; Terminate active flag +EndOfRoutine: +iret + +progress db 0 +enabled db 0 +dbufsiz dw 0 +ubufsiz dw 0 +tmr db 0 +spd db defspd + +;============================ INT 63h handler ======================= + +int63: +cmp ah, 0 +je set_unactive +cmp ah, 1 +je set_active +cmp ah, 2 +je get_data +cmp ah, 3 +je send_data +jmp EndOfRoutine + +set_active: +mov dx, InPort ; reset line +mov al, 0 +out dx, al +mov [cs:enabled], 1 +jmp EndOfRoutine + +set_unactive: +mov [cs:enabled], 0 +jmp EndOfRoutine + +get_data: +push ds +mov ax, cs +mov ds, ax +mov si, last +mov cx, [dbufsiz] +rep movsb +pop ds +mov ax, [cs:dbufsiz] +mov [cs:dbufsiz], 0 +jmp EndOfRoutine + +send_data: +push es +mov dx, cx +mov bx, cs +mov es, bx +mov di, upbufp +add di, [cs:ubufsiz] +rep movsb +add [cs:ubufsiz], dx +pop es +jmp EndOfRoutine + +last: diff --git a/networking/LPT communication driver/lptdrv.com b/networking/LPT communication driver/lptdrv.com new file mode 100755 index 0000000..8abfb4e Binary files /dev/null and b/networking/LPT communication driver/lptdrv.com differ diff --git a/networking/LPT communication driver/lptdrv.txt b/networking/LPT communication driver/lptdrv.txt new file mode 100755 index 0000000..56b5e7f --- /dev/null +++ b/networking/LPT communication driver/lptdrv.txt @@ -0,0 +1,23 @@ +LPT communications driver +made by Svjatoslav Agejenko +in 2002.08 +H-Page: svjatoslav.eu +E-Mail: svjatoslavagejenko@gmail.com + +LPTDRV is a memory resident driver for LPT network. +It hooks IRQ 0 and checks ca. 18 times per second LPT status. +If any activity found it reads and decodes recieved data, +and stores it into its 5000 bytes input buffer. It has also +5000 bytes output buffer for sending data. +Applications can communicate with this driver by INT 63h. +see LPTDRV.ASM for more details. + + +Parallel printer port pins 14, 17, 18 +must be connected on both computers directly, eg. one to one. + +pin 14 carries syncronisation signal. 0 1 0 1 0 1 ... +pin 17 is used for data input/output. +pin 18 is ground. + +Maximum transfer speed on my computer was ~ 12 Kb/s. diff --git a/networking/LPT communication driver/test.ASM b/networking/LPT communication driver/test.ASM new file mode 100755 index 0000000..e98e680 --- /dev/null +++ b/networking/LPT communication driver/test.ASM @@ -0,0 +1,100 @@ +; simple driver test + +org 100h + +mov ah, 1 ; activate driver +int 63h + +l1: +mov di, last +mov ah, 2 +int 63h +cmp ax, 0 +je l2 + +cmp byte [last], 0 +jne l3 +call send4kb +jmp l2 +l3: + +add ax, last +mov di, ax +mov byte [ds:di], 36 + +mov ah, 9 +mov dx, d1 +int 21h + + +l2: + +mov ah, 0bh +int 21h +cmp al, 0 +je l1 + + +mov ah, 0 +int 16h +cmp al, 27 +je quit +cmp al, 13 +je send +cmp al, 32 +je TestSpeed + +jmp l1 + +quit: +mov ah, 0 ; deactivate driver +int 63h +ret + +send: +mov cx, d1 - d2 +mov si, d2 +mov ah, 3 +int 63h +jmp l1 + +send4kb: +mov cx, 4096 +mov si, last +mov ah, 3 +int 63h +ret + +TestSpeed: +mov byte [last], 0 +mov cx, 0 + +l5: +push cx +call send4kb +l4: +mov di, last + 1 +mov ah, 2 +int 63h +cmp ax, 0 +je l4 +pop cx + +mov dx, d3 +mov ah, 9 +int 21h + +inc cx +cmp cx, 100 +jb l5 + +mov dx, d4 +mov ah, 9 +int 21h +jmp l1 + +d3 db '. $' +d4 db 13, 10, 'done', 13, 10, '$' +d2 db 'Quick brown fox jumped over the lazy dogs. 0123456789ABCDEF' +d1 db 13,10,'Data recieved:' +last: diff --git a/networking/LPT communication driver/test.COM b/networking/LPT communication driver/test.COM new file mode 100755 index 0000000..1a4847f Binary files /dev/null and b/networking/LPT communication driver/test.COM differ diff --git a/networking/comterm.bas b/networking/comterm.bas new file mode 100755 index 0000000..2bfedc5 --- /dev/null +++ b/networking/comterm.bas @@ -0,0 +1,25 @@ +' Simple COM port terminal +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +CLS + + +1 +b = INP(&H3FD) +IF b = 97 THEN + b = INP(&H3F8) + PRINT CHR$(b); + PRINT b; +END IF + +a$ = INKEY$ + +IF a$ <> "" THEN + PRINT a$; + OUT &H3F8, ASC(a$) +END IF +GOTO 1 + diff --git a/networking/digital data over analog audio channel/aver.bas b/networking/digital data over analog audio channel/aver.bas new file mode 100755 index 0000000..76aec75 --- /dev/null +++ b/networking/digital data over analog audio channel/aver.bas @@ -0,0 +1,73 @@ +' Noise reduction +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + + +DECLARE SUB start () +DEFINT A-Y +DIM SHARED avb(1 TO 100) +DIM SHARED byte AS STRING * 1 +DIM SHARED po, pod +DIM SHARED file1$, file2$ + +start + +INPUT "average factor:", po +INPUT "divide factor:", pod + +OPEN file2$ FOR BINARY AS #1 +OPEN file1$ FOR BINARY AS #2 + +SCREEN 12 +px = 0 +1 +GET #1, , byte +c = ASC(byte) +IF c > 127 THEN c = c - 255 + +FOR a = 1 TO po - 1 +avb(a) = avb(a + 1) +NEXT a +avb(po) = c + +b = 0 +FOR a = 1 TO po +b = b + avb(a) +NEXT a + +b = b / pod +'LINE (px + 1, 0)-(px + 1, 260), 14 +LINE (px, 0)-(px, 260), 0 +PSET (px, c + 130), 12 +PSET (px, b + 130), 14 +px = px + 1 +IF px > 639 THEN px = 1 +IF b < 0 THEN b = b + 255 +IF b > 255 THEN b = 255 +byte = CHR$(b) +PUT #2, , byte +'c$ = INPUT$(1) +IF EOF(1) = 0 THEN GOTO 1 + +CLOSE #2 +CLOSE #1 + +SUB start + +IF COMMAND$ = "" THEN END +b$ = COMMAND$ +file2$ = b$ +file1$ = "" +FOR a = 1 TO LEN(b$) +c$ = RIGHT$(LEFT$(b$, a), 1) +IF c$ = "." OR c$ = " " THEN GOTO 2 +file1$ = file1$ + c$ +NEXT a +2 +file1$ = file1$ + ".awe" + +END SUB + diff --git a/networking/digital data over analog audio channel/code.bat b/networking/digital data over analog audio channel/code.bat new file mode 100755 index 0000000..55a4066 --- /dev/null +++ b/networking/digital data over analog audio channel/code.bat @@ -0,0 +1 @@ +qb /run msg2xi /cmd test.txt \ No newline at end of file diff --git a/networking/digital data over analog audio channel/decode.bat b/networking/digital data over analog audio channel/decode.bat new file mode 100755 index 0000000..3668bbd --- /dev/null +++ b/networking/digital data over analog audio channel/decode.bat @@ -0,0 +1 @@ +qb /run xi2msg /cmd test.xi \ No newline at end of file diff --git a/networking/digital data over analog audio channel/index.html b/networking/digital data over analog audio channel/index.html new file mode 100755 index 0000000..c469ea4 --- /dev/null +++ b/networking/digital data over analog audio channel/index.html @@ -0,0 +1,17 @@ + +data in sound + + + +

data in sound

+
+
+
+Utility to encode/decode digital information into wave sound file. +You can later record it on the tape or send it acustically or +for example over telephone line. Decoding utility +is petty noise tolerant. + +
+ + \ No newline at end of file diff --git a/networking/digital data over analog audio channel/msg2xi.bas b/networking/digital data over analog audio channel/msg2xi.bas new file mode 100755 index 0000000..5316d07 --- /dev/null +++ b/networking/digital data over analog audio channel/msg2xi.bas @@ -0,0 +1,100 @@ +' Svjatoslav Agejenko year:2001 +' converts binary file into 8 bit wave sound file without header. + +DECLARE SUB start () +DECLARE SUB iadd () +DECLARE SUB oadd () +DECLARE SUB byt (a!) + +DIM SHARED iwa(1 TO 20) +DIM SHARED owa(1 TO 41) +DIM SHARED iwad$ +DIM SHARED owad$ +DIM SHARED file1$ +DIM SHARED file2$ +DIM SHARED bytee AS STRING * 1 + + +start + +OPEN file1$ FOR BINARY AS #1 +OPEN file2$ FOR BINARY AS #2 + +FOR a = 1 TO 50 +iadd +NEXT a +oadd + +2 +GET #2, , bytee +byt ASC(bytee) +IF EOF(2) = 0 THEN GOTO 2 + +CLOSE #2 +CLOSE #1 + +SYSTEM + +SUB byt (a) +'PRINT "====" +a = a + 1 +IF a > 128 THEN a = a - 128: iadd ELSE oadd +IF a > 64 THEN a = a - 64: iadd ELSE oadd +IF a > 32 THEN a = a - 32: iadd ELSE oadd +IF a > 16 THEN a = a - 16: iadd ELSE oadd +IF a > 8 THEN a = a - 8: iadd ELSE oadd +IF a > 4 THEN a = a - 4: iadd ELSE oadd +IF a > 2 THEN a = a - 2: iadd ELSE oadd +IF a > 1 THEN iadd ELSE oadd +'b$ = INPUT$(1) +END SUB + +SUB iadd +PUT #1, , iwad$ +END SUB + +SUB oadd +PUT #1, , owad$ +END SUB + +SUB start +IF COMMAND$ = "" THEN END + +pi = 3.141592654# + +b = 0 +FOR a = pi / 2 TO 2.5 * pi STEP (2 * pi / 20) +b = b + 1 +iwa(b) = SIN(a) * 100 +IF iwa(b) < 0 THEN iwa(b) = iwa(b) + 255 +NEXT a + +b = 0 +FOR a = pi / 2 TO 2.5 * pi STEP (2 * pi / 40) +b = b + 1 +owa(b) = SIN(a) * 100 +IF owa(b) < 0 THEN owa(b) = owa(b) + 255 +NEXT a + +FOR a = 1 TO 20 +iwad$ = iwad$ + CHR$(iwa(a)) +NEXT a + +FOR a = 1 TO 40 +owad$ = owad$ + CHR$(owa(a)) +NEXT a + + + +b$ = COMMAND$ +file2$ = b$ +file1$ = "" +FOR a = 1 TO LEN(b$) +c$ = RIGHT$(LEFT$(b$, a), 1) +IF c$ = "." OR c$ = " " THEN GOTO 1 +file1$ = file1$ + c$ +NEXT a +1 +file1$ = file1$ + ".xi" +END SUB + diff --git a/networking/digital data over analog audio channel/sshot.png b/networking/digital data over analog audio channel/sshot.png new file mode 100755 index 0000000..87a3a0a Binary files /dev/null and b/networking/digital data over analog audio channel/sshot.png differ diff --git a/networking/digital data over analog audio channel/test.msg b/networking/digital data over analog audio channel/test.msg new file mode 100755 index 0000000..7019c2b --- /dev/null +++ b/networking/digital data over analog audio channel/test.msg @@ -0,0 +1 @@ +This is a sample encoded message ! ... \ No newline at end of file diff --git a/networking/digital data over analog audio channel/test.txt b/networking/digital data over analog audio channel/test.txt new file mode 100755 index 0000000..7019c2b --- /dev/null +++ b/networking/digital data over analog audio channel/test.txt @@ -0,0 +1 @@ +This is a sample encoded message ! ... \ No newline at end of file diff --git a/networking/digital data over analog audio channel/test.xi b/networking/digital data over analog audio channel/test.xi new file mode 100755 index 0000000..d531fbd Binary files /dev/null and b/networking/digital data over analog audio channel/test.xi differ diff --git a/networking/digital data over analog audio channel/xi2msg.bas b/networking/digital data over analog audio channel/xi2msg.bas new file mode 100755 index 0000000..578b1bf --- /dev/null +++ b/networking/digital data over analog audio channel/xi2msg.bas @@ -0,0 +1,254 @@ +' Svjatoslav Agejenko year: 2001 +' decades binary data from 8 bit wave sound file. + +DEFINT A-Y +DECLARE SUB bysf (a$, d) +DECLARE SUB messa (a$) +DECLARE SUB pfo (f, t, it) +DECLARE SUB anal () +DECLARE SUB start () +DECLARE SUB iadd () +DECLARE SUB oadd () +DECLARE SUB byt (a) + +DIM SHARED file1$ +DIM SHARED file2$ +DIM SHARED buf(-100 TO 10000) +DIM SHARED bus AS STRING * 1000 +DIM SHARED bufi +DIM SHARED bg +DIM SHARED sm +DIM SHARED beg +DIM SHARED wai +DIM SHARED old2 +DIM SHARED stat(1 TO 10) +DIM SHARED statl +DIM SHARED aver +DIM SHARED byte AS STRING * 1 +DIM SHARED avv + +DIM SHARED li +DIM SHARED oc +DIM SHARED px + +start +messa "searching for beginning..." + +OPEN file1$ FOR BINARY AS #1 +OPEN file2$ FOR BINARY AS #2 +SEEK #2, 360 + +2 +GET #2, , bus +FOR a = 1 TO 1000 +b$ = RIGHT$(LEFT$(bus, a), 1) +bufi = bufi + 1 +c = ASC(b$) +IF c > 127 THEN c = c - 255 +buf(bufi) = c +NEXT a +IF (EOF(2) = 0) AND (bufi < 8000) THEN GOTO 2 +anal +IF EOF(2) = 0 THEN GOTO 2 + +CLOSE #2 +CLOSE #1 + +SYSTEM + +SUB anal +LINE (1, 170)-(200, 430), 0, BF +FOR a = 1 TO bufi - (avv - 1) + +LINE (100, 170)-(100, 430), 13 +LINE (old2 - a + 100, 170)-(old2 - a + 100, 430), 11 +LINE (0, 300)-(200, 300), 13 +FOR b = 0 TO 200 +PSET (b, buf(b + a - 101) + 300), 0 +PSET (b, buf(b + a - 100) + 300), 14 +NEXT b +LINE (old2 - a + 100, 170)-(old2 - a + 100, 430), 0 + +c = 0 +FOR b = a TO a + (avv - 1) +c = c + buf(b) +NEXT b +c = c / (avv / 2) +IF c > oc THEN +IF li = -1 THEN +li = 1 +pfo a + ((avv - 1) / 2 - 1), 1, oc +GOTO 3 +END IF +END IF +IF c < oc THEN +IF li = 1 THEN +li = -1 +pfo a + ((avv - 1) / 2 - 1), 2, oc +GOTO 3 +END IF +END IF +3 +oc = c +NEXT a + +FOR a = bufi - (avv - 2) TO bufi +buf(a - (bufi - (avv - 2)) + 1) = buf(a) +NEXT a +old2 = old2 - (bufi - (avv - 2)) + 1 +bufi = avv - 1 + +END SUB + +SUB bysf (a$, d) +'LINE (201, 170)-(639, 430), 1, B +IF d = 10 THEN px = 0: a$ = "": GOTO 5 + +px = px + 1 +IF px > 53 THEN +px = 1 +5 +DIM tempr(1 TO 32000) +GET (201, 186)-(639, 430), tempr(1) +PUT (201, 170), tempr(1), PSET +LINE (201, 414)-(639, 430), 0, BF +END IF + +LOCATE 26, 26 + px +PRINT a$ +byte = CHR$(d) +PUT #1, , byte + +END SUB + +SUB byt (a) + +'LINE (410, 0)-(639, 169), 1, B + +statl = statl + 1 +IF statl > 8 THEN +statl = 1 +b = 0 +IF stat(1) = 1 THEN b = b + 128 +IF stat(2) = 1 THEN b = b + 64 +IF stat(3) = 1 THEN b = b + 32 +IF stat(4) = 1 THEN b = b + 16 +IF stat(5) = 1 THEN b = b + 8 +IF stat(6) = 1 THEN b = b + 4 +IF stat(7) = 1 THEN b = b + 2 +IF stat(8) = 1 THEN b = b + 1 +LOCATE 10, 69 +PRINT b +LOCATE 10, 75 +PRINT HEX$(b) +LOCATE 10, 79 +c$ = CHR$(b) +IF b = 7 OR b = 8 OR b = 10 OR b = 12 OR b = 13 THEN c$ = " " +PRINT c$ +bysf c$, b + +DIM tempr(1 TO 10000) +GET (410, 16)-(639, 169), tempr(1) +PUT (410, 0), tempr(1), PSET +LINE (410, 153)-(639, 169), 0, BF +END IF +LOCATE 10, 50 + (statl * 2) +stat(statl) = a +PRINT a + + +'IF a > 128 THEN a = a - 128: iadd ELSE oadd +'IF a > 64 THEN a = a - 64: iadd ELSE oadd +'IF a > 32 THEN a = a - 32: iadd ELSE oadd +'IF a > 16 THEN a = a - 16: iadd ELSE oadd +'IF a > 8 THEN a = a - 8: iadd ELSE oadd +'IF a > 4 THEN a = a - 4: iadd ELSE oadd +'IF a > 2 THEN a = a - 2: iadd ELSE oadd +'IF a > 1 THEN iadd ELSE oadd +END SUB + +SUB messa (a$) +'LINE (0, 0)-(409, 169), 1, B +DIM tempr(1 TO 20000) +GET (0, 16)-(409, 169), tempr(1) +PUT (0, 0), tempr(1), PSET +LINE (0, 153)-(409, 169), 0, BF +LOCATE 10, 1 +PRINT a$ +END SUB + +SUB pfo (f, t, it) +IF t = 2 THEN +bg = it +IF wai > 0 THEN wai = wai - 1 + +IF (bg - sm > 6) AND (beg = 0) THEN beg = 1: wai = 10: messa "Beginning point found!" + +IF (wai = 0) AND (beg = 1) THEN +IF statl = 0 THEN messa "Beginning statistical analyze" +statl = statl + 1 +IF statl > 10 THEN +FOR a = 1 TO 10 +aver = aver + stat(a) +NEXT a +aver = aver * 1.5 / 10 +beg = 2 +statl = 1 +messa "Statistical analyze completed!" +END IF +stat(statl) = f - old2 +END IF + +IF beg = 2 THEN +IF f - old2 >= aver THEN +beg = 3 +statl = 0 +FOR a = 1 TO 8 +stat(a) = 0 +NEXT a +GOTO 4 +END IF +END IF + +IF beg = 3 THEN +IF f - old2 >= aver THEN +byt 0 +ELSE +byt 1 +END IF +END IF +4 + +old2 = f +ELSE +sm = it +END IF +END SUB + +SUB start +IF COMMAND$ = "" THEN END + +SCREEN 12 + +b$ = COMMAND$ +file2$ = b$ +file1$ = "" +FOR a = 1 TO LEN(b$) +c$ = RIGHT$(LEFT$(b$, a), 1) +IF c$ = "." OR c$ = " " THEN GOTO 1 +file1$ = file1$ + c$ +NEXT a +1 +file1$ = file1$ + ".msg" + +bufi = 0 +beg = 0 +statl = 0 +aver = 0 +px = 0 +avv = 7 + +li = 1 +oc = -9999 +END SUB + diff --git a/networking/file2com.bas b/networking/file2com.bas new file mode 100755 index 0000000..3074c37 --- /dev/null +++ b/networking/file2com.bas @@ -0,0 +1,21 @@ +' file -> COM +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DIM SHARED byte AS STRING * 1 +OPEN COMMAND$ FOR BINARY AS #1 + +1 +IF EOF(1) <> 0 THEN GOTO 2 +GET #1, , byte +OUT 1016, ASC(byte) + +FOR b = 1 TO 10 + SOUND 0, .05 +NEXT b +GOTO 1 +2 +CLOSE #1 + diff --git a/networking/lpt2com.bas b/networking/lpt2com.bas new file mode 100755 index 0000000..4cbe7c1 --- /dev/null +++ b/networking/lpt2com.bas @@ -0,0 +1,54 @@ +' RS232 signal emulator, send data from LPT to COM +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DEFINT A-Z +DECLARE SUB send (char$) +DIM SHARED prt +prt = &H378 ' LPT port + +PRINT "Svjatoslav Agejenko: n0@hot.ee" +PRINT "I used it to send characters from PC LPT port to" +PRINT "SUN Sparc Station COM port. So it simulates RS232 signals." +PRINT "Sends characters recieved from keyboard." +PRINT "uses wires: ground, pin 3" +PRINT "ESC to exit" + +1 +a$ = INPUT$(1) +IF a$ = CHR$(27) THEN SYSTEM +PRINT a$; +send a$ +GOTO 1 + +SUB send (char$) + +a = ASC(char$) + +DIM bit(0 TO 8) +bit(0) = 0 +bit(8) = 0 + +b = 64 +c = 7 +2 +IF a >= b THEN bit(c) = 1: a = a - b ELSE bit(c) = 0 +b = b / 2 +c = c - 1 +IF c <> 0 GOTO 2 + +FOR a = 0 TO 8 +IF bit(a) = 0 THEN b = 255 ELSE b = 0 +FOR c = 0 TO 9 ' NB!!! you pobably need to adjust this (9) value depending on +OUT prt, b ' your system and QBasic interpreter speed. Also depends + ' on bitrate 2400 or 9600 etc... Timing must be +NEXT c ' exact ! this setting works for my 486 DX2 40 MHz, QB 4.5 +NEXT a + +OUT prt, 0 + + +END SUB + diff --git a/networking/lptmorse.bas b/networking/lptmorse.bas new file mode 100755 index 0000000..14e037c --- /dev/null +++ b/networking/lptmorse.bas @@ -0,0 +1,127 @@ +' Svjatoslav Agejenko +' 2003.02 + +' Program to control radio transmitter over LPT port, +' and send data in morse like code. + + +DECLARE SUB sbit (a!) +DECLARE SUB msg (a$) +DECLARE SUB sb (a!) +DECLARE SUB quit () +DECLARE SUB tone (c!) +DECLARE SUB wai (a!) +DECLARE SUB echo () +DECLARE SUB lptsend () +DIM SHARED bit(0 TO 7) +DIM SHARED prt + +CLS +prt = &H378 +echo + +l = 0 +1 +IF lt$ <> TIME$ THEN +IF l > 60 THEN echo: l = 0 +l = l + 1 +lt$ = TIME$ +END IF + +a$ = INKEY$ +IF a$ <> "" THEN quit +GOTO 1 + +SUB echo + +bit(5) = 1 +lptsend +wai 5 + +msg "Hello!" +'msg "Hello, world!" + +wai 1 +bit(5) = 0 +lptsend + + + +END SUB + +SUB lptsend +'DIM SHARED bit(0 TO 7) + +b = 0 +FOR a = 0 TO 7 +b = b * 2 +IF bit(a) > 0 THEN b = b + 1 +NEXT a + +OUT prt, b + +END SUB + +SUB msg (a$) + +FOR a = 1 TO LEN(a$) +b$ = RIGHT$(LEFT$(a$, a), 1) +sb ASC(b$) +c$ = INKEY$ +IF c$ <> "" THEN quit +NEXT a + + +END SUB + +SUB quit +bit(5) = 0 +lptsend +END +END SUB + +SUB sb (a) +d = a +c = 128 + +FOR b = 0 TO 7 +IF d >= c THEN sbit 1: d = d - c: ELSE sbit 0 +c = c / 2 +NEXT b + +END SUB + +SUB sbit (a) +IF a = 1 THEN + tone 0 + tone 0 + tone 1 +ELSE + tone 0 + tone 1 + tone 1 +END IF +END SUB + +SUB tone (c) +'c = 1 +PRINT c; +FOR a = 1 TO 40 +bit(4) = c +lptsend +FOR b = 1 TO 500 +NEXT b +bit(4) = 0 +lptsend +FOR b = 1 TO 500 +NEXT b +NEXT a +END SUB + +SUB wai (a) +FOR b = 1 TO a * 10 +SOUND 0, .1 +NEXT b + +END SUB + diff --git a/networking/monitor.bas b/networking/monitor.bas new file mode 100755 index 0000000..9c1a779 --- /dev/null +++ b/networking/monitor.bas @@ -0,0 +1,6 @@ +prt2 = &H379 + +1 +PRINT INP(prt2); +GOTO 1 + diff --git a/networking/monitor2.bas b/networking/monitor2.bas new file mode 100755 index 0000000..28ff509 --- /dev/null +++ b/networking/monitor2.bas @@ -0,0 +1,21 @@ +SCREEN 12 + +prt2 = &H379 + +1 +FOR x = 0 TO 630 + c = INP(prt2) + IF c <> 127 THEN + y = y + 1 + ELSE + IF y > 0 THEN y = y - 1 + END IF + LINE (x + 6, 0)-(x + 6, 479), 12 + LINE (x, 0)-(x, 479), 0 + LINE (x, 0)-(x, y), 15 + +'FOR a = 1 TO 1000 +'NEXT a +NEXT x +GOTO 1 + diff --git a/networking/monitor3.bas b/networking/monitor3.bas new file mode 100755 index 0000000..0690799 --- /dev/null +++ b/networking/monitor3.bas @@ -0,0 +1,14 @@ +SCREEN 13 + +prt2 = &H379 + + +1 +IF INP(prt2) <> 127 THEN c = c + .1 ELSE c = c - .1 + +IF c < 16 THEN c = 16 +IF c > 31 THEN c = 31 + +LINE (100, 50)-(219, 150), c, BF +GOTO 1 + diff --git a/networking/morse/morse.bas b/networking/morse/morse.bas new file mode 100755 index 0000000..97d958a --- /dev/null +++ b/networking/morse/morse.bas @@ -0,0 +1,65 @@ +' Svjatoslav Agejenko 2003 + +DECLARE SUB say () +DECLARE SUB laus (a$) +DECLARE SUB char (a!) +DIM SHARED mors(0 TO 255, 0 TO 9) +DIM SHARED spd +spd = 1 +CLS + +OPEN "morse.txt" FOR INPUT AS #1 +2 +IF EOF(1) THEN GOTO 1 +LINE INPUT #1, a$ + +FOR b = 1 TO LEN(a$) +c = ASC(RIGHT$(LEFT$(a$, b), 1)) +IF b = 1 THEN m = c +IF b > 2 THEN +d = 0 +IF c = ASC(".") THEN d = 1 +IF c = ASC("-") THEN d = 2 +mors(m, b - 2) = d +END IF +NEXT b +GOTO 2 +1 +CLOSE + + +PRINT "Type '.bye' to quit" +3 +PRINT "" +INPUT "", a$ +IF a$ = ".bye" THEN SYSTEM +laus a$ +GOTO 3 + +SUB char (a) +PRINT CHR$(a); +FOR b = 0 TO 9 +IF mors(a, b) = 1 THEN +SOUND 1000, 1 * spd +SOUND 0, 1 * spd +END IF + +IF mors(a, b) = 2 THEN +SOUND 1000, 3 * spd +SOUND 0, 1 * spd +END IF +NEXT b + +FOR a = 0 TO 160 +SOUND 0, .1 +NEXT a +END SUB + +SUB laus (a$) + +FOR b = 1 TO LEN(a$) +c = ASC(RIGHT$(LEFT$(a$, b), 1)) +char c +NEXT b +END SUB + diff --git a/networking/morse/morse.txt b/networking/morse/morse.txt new file mode 100755 index 0000000..d695202 --- /dev/null +++ b/networking/morse/morse.txt @@ -0,0 +1,36 @@ +a .- +b -... +c -.-. +d -.. +e . +f ..-. +g --. +h .... +i .. +j .--- +k -.- +l .-.. +m -- +n -. +o --- +p .--. +q --.- +r .-. +s ... +t - +u ..- +v ...- +w .-- +x -..- +y -.-- +z --.. +0 ----- +1 .---- +2 ..--- +3 ...-- +4 ....- +5 ..... +6 -.... +7 --... +8 ---.. +9 ----. \ No newline at end of file diff --git a/networking/prt.bas b/networking/prt.bas new file mode 100755 index 0000000..981238b --- /dev/null +++ b/networking/prt.bas @@ -0,0 +1,55 @@ +' LPT current controller +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +' Control current on LPT port pins, +' use keys 1 - 8 to toggle on/off + +DECLARE SUB disp () +DECLARE SUB send () +DIM SHARED bit(1 TO 8) +DIM SHARED prt + +prt = &H378 +FOR a = 1 TO 8 +bit(a) = 0 +NEXT a +SCREEN 13 + +1 +disp +send +a$ = INPUT$(1) +IF VAL(a$) > 0 THEN +b = VAL(a$) +IF bit(b) = 0 THEN bit(b) = 1 ELSE bit(b) = 0 +END IF + +GOTO 1 + +SUB disp + +LOCATE 3, 1 +PRINT " 1 2 3 4 5 6 7 8" + +FOR a = 1 TO 8 +LINE (a * 16, 1)-(a * 16 + 8, 9), bit(a), BF +NEXT a + + + +END SUB + +SUB send + +b = 0 +FOR a = 1 TO 8 +b = b * 2 +b = b + bit(a) +NEXT a + +OUT prt, b +END SUB + diff --git a/networking/read.bas b/networking/read.bas new file mode 100755 index 0000000..c56d5dc --- /dev/null +++ b/networking/read.bas @@ -0,0 +1,38 @@ +' Monitor LPT pin state +' made by Svjatoslav Agejenko +' in 2002 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + +' Monitors LPT1 pins 14, 16, 17 and some others. + + +DECLARE SUB display () +DIM SHARED frm +SCREEN 13 + + +OUT &H37A, 0 + +1 +display + +GOTO 1 + +SUB display + +a = INP(&H37A) +b = 128 +LOCATE 5, 1 +PRINT a + +FOR c = 1 TO 8 +IF a >= b THEN a = a - b: d = 3 ELSE d = 1 +b = b / 2 +CIRCLE (c * 10, 10), 4, d +PAINT (c * 10, 10), d +NEXT c + +END SUB + diff --git a/networking/setspeed.bas b/networking/setspeed.bas new file mode 100755 index 0000000..1159bd6 --- /dev/null +++ b/networking/setspeed.bas @@ -0,0 +1,4 @@ +OPEN "com2:9600,n,8,1,rs,cd0,cs0,ds0,tb2048,rb2048 " FOR OUTPUT AS #1 + +CLOSE #1 + diff --git a/simulation/explosion/explode.bas b/simulation/explosion/explode.bas new file mode 100755 index 0000000..5d75b75 --- /dev/null +++ b/simulation/explosion/explode.bas @@ -0,0 +1,202 @@ +' Material simulation, simulates shockwaves propagation in gas. +' made by Svjatoslav Agejenko +' in 2003 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DECLARE SUB saveit () +DECLARE SUB playit () +DECLARE SUB frmget () +DECLARE SUB frmsav () +DECLARE SUB spot (x!, y!, p!) +DECLARE SUB lin (x1!, y1!, x2!, y2!) +DECLARE SUB disp () +DECLARE SUB start () +DIM SHARED wal +wal = 9980 + +DIM SHARED press(1 TO 100, 1 TO 100) +DIM SHARED spdx(1 TO 100, 1 TO 100) +DIM SHARED spdy(1 TO 100, 1 TO 100) +DIM SHARED spdxp(1 TO 100, 1 TO 100) +DIM SHARED spdyp(1 TO 100, 1 TO 100) +DIM SHARED nam$, frm +DIM SHARED linb AS STRING * 100 +frm = 0 + +SCREEN 13 +PAINT (1, 1), 1 + +OPEN "tst.an0" FOR BINARY AS #1 + + +start + +1 +'disp + +FOR y = 2 TO 99 +FOR x = 2 TO 99 +IF press(x, y) = wal THEN spdx(x - 1, y) = 0: spdy(x, y - 1) = 0: spdx(x, y) = 0: spdy(x, y) = 0: GOTO 3 +spdy(x, y) = spdy(x, y) - (press(x, y) / 500) ' gravitation + +IF press(x + 1, y) = wal THEN spdx(x, y) = 0: GOTO 2 +spdx(x, y) = (press(x + 1, y) - press(x, y)) / 20 + spdx(x, y) +2 +IF press(x, y + 1) = wal THEN spdy(x, y) = 0: GOTO 3 +spdy(x, y) = (press(x, y + 1) - press(x, y)) / 20 + spdy(x, y) +3 +NEXT x +NEXT y + + +4 +b = 0 +FOR y = 2 TO 99 +FOR x = 2 TO 99 +a = press(x, y) + spdx(x, y) + spdy(x, y) - spdx(x - 1, y) - spdy(x, y - 1) + +IF a = 0 OR ((a < 0) AND (a > -.0001)) THEN +IF spdx(x, y) < 0 THEN spdx(x, y) = 0 +IF spdy(x, y) < 0 THEN spdy(x, y) = 0 +IF spdx(x - 1, y) > 0 THEN spdx(x - 1, y) = 0 +IF spdy(x, y - 1) > 0 THEN spdy(x, y - 1) = 0 +END IF + +IF a < 0 THEN +IF spdx(x, y) < 0 THEN spdx(x, y) = spdx(x, y) / 1.5 +IF spdy(x, y) < 0 THEN spdy(x, y) = spdy(x, y) / 1.5 +IF spdx(x - 1, y) > 0 THEN spdx(x - 1, y) = spdx(x - 1, y) / 1.5 +IF spdy(x, y - 1) > 0 THEN spdy(x, y - 1) = spdy(x, y - 1) / 1.5 +b = 1 +LOCATE 20, 1 +PRINT a +END IF +NEXT x +NEXT y +IF b = 1 THEN GOTO 4 + +FOR y = 2 TO 99 +FOR x = 2 TO 99 +IF spdx(x, y) > 0 THEN spdxp(x - 1, y) = ((press(x, y) * spdx(x - 1, y)) + (spdx(x, y) * spdx(x, y))) / (press(x, y) + spdx(x, y)) - spdx(x - 1, y) +IF spdy(x, y) > 0 THEN spdyp(x, y - 1) = ((press(x, y) * spdy(x, y - 1)) + (spdy(x, y) * spdy(x, y))) / (press(x, y) + spdy(x, y)) - spdy(x, y - 1) +IF spdx(x - 1, y) < 0 THEN spdxp(x, y) = ((press(x, y) * spdx(x, y)) - (spdx(x - 1, y) * spdx(x - 1, y))) / (press(x, y) - spdx(x - 1, y)) - spdx(x, y) +IF spdy(x, y - 1) < 0 THEN spdyp(x, y) = ((press(x, y) * spdy(x, y)) - (spdy(x, y - 1) * spdy(x, y - 1))) / (press(x, y) - spdy(x, y - 1)) - spdy(x, y) +NEXT x +NEXT y + + +FOR y = 2 TO 99 +FOR x = 2 TO 99 +press(x + 1, y) = press(x + 1, y) - spdx(x, y) +press(x, y + 1) = press(x, y + 1) - spdy(x, y) +press(x, y) = press(x, y) + spdx(x, y) +press(x, y) = press(x, y) + spdy(x, y) +NEXT x +NEXT y + +FOR y = 2 TO 99 +FOR x = 2 TO 99 +spdx(x, y) = spdx(x, y) + spdxp(x, y) +spdxp(x, y) = 0 +spdy(x, y) = spdy(x, y) + spdyp(x, y) +spdyp(x, y) = 0 +NEXT x +NEXT y + + +FOR y = 1 TO 100 +FOR x = 1 TO 100 +PSET (x, y), press(x, y) + 16 +NEXT x +NEXT y + +saveit + + + + +GOTO 1 + +CLOSE #1 + +SUB disp +FOR y = 47 TO 53 +FOR x = 47 TO 53 +LOCATE y - 46, (x - 46) * 4 +PRINT press(x, y) +NEXT x +NEXT y + +a$ = INPUT$(1) + +END SUB + +SUB lin (x1, y1, x2, y2) + +m = ABS(x1 - x2) +m1 = ABS(y1 - y2) +IF m1 > m THEN m = m1 + +x3 = x2 - x1 +y3 = y2 - y1 + +FOR a = 0 TO m +x5 = x3 * a / m + x1 +y5 = y3 * a / m + y1 +press(x5, y5) = wal +NEXT a + + +END SUB + +SUB saveit +FOR y = 1 TO 100 +a$ = "" +FOR x = 1 TO 100 +a$ = a$ + CHR$(POINT(x, y)) +NEXT x +linb = a$ +PUT #1, , linb +NEXT y + + +END SUB + +SUB spot (x, y, p) +press(x, y) = p +press(x + 1, y) = p +press(x, y + 1) = p +press(x + 1, y + 1) = p +END SUB + +SUB start +frm = 0 + +FOR a = 1 TO 100 +FOR b = 1 TO 100 +press(a, b) = 3 +spdx(a, b) = 0 +spdy(a, b) = 0 +spdxp(a, b) = 0 +spdyp(a, b) = 0 +NEXT b +NEXT a + +FOR y = 30 TO 60 +FOR x = 10 TO 50 +spot x, y, 30 +NEXT x +NEXT y + +lin 2, 2, 2, 99 +lin 99, 2, 99, 99 +lin 2, 99, 99, 99 +lin 2, 2, 99, 2 + +FOR x = 5 TO 40 STEP 5 +lin x, 80, x + 50, 80 - x +NEXT x + +END SUB + diff --git a/simulation/explosion/index.html b/simulation/explosion/index.html new file mode 100755 index 0000000..e0410d6 --- /dev/null +++ b/simulation/explosion/index.html @@ -0,0 +1,17 @@ + +explode + + + +

explode

+
+
+
Simulates air flow. +Air tries to spread equally around space, +while having is inertial farces, mass and gravitation. +Simulation animates shock waves propagation on +flat space after explosion. + +
+ + \ No newline at end of file diff --git a/simulation/explosion/sshot.png b/simulation/explosion/sshot.png new file mode 100755 index 0000000..80089b6 Binary files /dev/null and b/simulation/explosion/sshot.png differ diff --git a/simulation/interf.BAS b/simulation/interf.BAS new file mode 100755 index 0000000..353b491 --- /dev/null +++ b/simulation/interf.BAS @@ -0,0 +1,63 @@ +DECLARE SUB getfreq () +DECLARE SUB start () +DECLARE FUNCTION gety! (t!) +DIM SHARED freq(1 TO 100) +DIM SHARED phase(1 TO 100) + +start +1 +frm = frm + 1 +PSET (0, 0) +FOR x = 0 TO 639 + + oy1 = y1 + oy2 = y2 + oy3 = y3 + + y1 = gety(frm + x / 4) * 20 + 150 + y2 = gety(frm + x / 4 + (x / 50)) * 20 + 150 + y3 = y1 + y2 + + ' LINE (x + 1, 0)-(x + 1, 479), 12 + LINE (x, 0)-(x, 479), 0 + + LINE (x - 1, oy1)-(x, y1), 1 + LINE (x - 1, oy2)-(x, y2), 2 + LINE (x - 1, oy3)-(x, y3), 15 + +NEXT x +GOTO 1 + +SUB diplay +END SUB + +SUB getfreq + +FOR a = 1 TO 100 + freq(a) = RND / 2 + 1 +NEXT a + +FOR a = 1 TO 100 + phase(a) = RND * 100 +NEXT a + + +END SUB + +FUNCTION gety (t) + +y = 0 +FOR a = 1 TO 1 + y = y + SIN(t * freq(a) + phase(a)) +NEXT a + +gety = y + +END FUNCTION + +SUB start +SCREEN 12 +getfreq + +END SUB + diff --git a/simulation/interf2.BAS b/simulation/interf2.BAS new file mode 100755 index 0000000..99f78ed --- /dev/null +++ b/simulation/interf2.BAS @@ -0,0 +1,49 @@ +DIM SHARED freq(1 TO 100) +DIM SHARED phase(1 TO 100) + +SCREEN 12 + +PSET (0, 0) +FOR x = 0 TO 639 + + fs = (x - 320) / 5000 + 1 +' fs = (x - 320) / 50 + 1 + + y = 0 + FOR t = 1 TO 5000 STEP 5 + y1 = SIN(t) + y2 = SIN(t * fs) + y = y + ABS(y1 + y2) + NEXT t + + y = y / 5 + IF y > 470 THEN y = 470 + IF y < 0 THEN y = 0 + + LINE -(x, 479 - y), 15 + +NEXT x + +SUB getfreq + +FOR a = 1 TO 100 + freq(a) = RND / 7 + 1 +NEXT a + +FOR a = 1 TO 100 + phase(a) = RND * 100 +NEXT a + + +END SUB + +SUB gety (t) + +y = 0 +FOR a = 1 TO 100 + y = y + SIN(t * freq(a) + phase(a)) +NEXT a + + +END SUB + diff --git a/simulation/life/1 b/simulation/life/1 new file mode 100755 index 0000000..b411c92 --- /dev/null +++ b/simulation/life/1 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +........####...................................... +.......#....#..................................... +........####...................................... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +................................#######........... +...............................#.......#.......... +................................#######........... +.................................................. +.................................................. +.................................................. +.................................................. +........#####..................................... +.......#.....#.................................... +........#####..................................... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +................................######............ +...............................#......#........... +................................######............ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/10 b/simulation/life/10 new file mode 100755 index 0000000..08af0fb --- /dev/null +++ b/simulation/life/10 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +........................###....................... +.....................#.......#.................... +....................#.........#................... +........................###....................... +.......................#...#...................... +...................#..#.....#..#.................. +...................#..#.....#..#.................. +...................#..#.....#..#.................. +.......................#...#...................... +........................###....................... +....................#.........#................... +.....................#.......#.................... +........................###....................... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/11 b/simulation/life/11 new file mode 100755 index 0000000..5b8cf86 --- /dev/null +++ b/simulation/life/11 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +........................###....................... +.....................#...#...#.................... +....................##...#...##................... +......................#.###.#..................... +.......................#...#...................... +...................#..#.....#..#.................. +...................####.....####.................. +...................#..#.....#..#.................. +.......................#...#...................... +......................#.###.#..................... +....................##...#...##................... +.....................#...#...#.................... +........................###....................... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/2 b/simulation/life/2 new file mode 100755 index 0000000..b5ebe02 --- /dev/null +++ b/simulation/life/2 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +...............##................................. +...............#.................................. +.................#................................ +.............#####................................ +.............#.................................... +...........##...##................................ +.......##.#....##.#.##............................ +........#.#....##.#.#............................. +.......#..##....#.#..#............................ +........##..#.#....##............................. +..........#.#######............................... +..........#.......#............................... +...........#######................................ +.................................................. +.............###.................................. +............#..#.................................. +............##..................##................ +...............................#..#.##............ +...............................#.##.#.#........... +..............................##..#.#.#........... +.............................#..#.#...#.##........ +.............................##.#.#...#..#........ +................................#.#.#..##......... +................................#.#.##.#.......... +.................................##.#..#.......... +.....................................##........... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/3 b/simulation/life/3 new file mode 100755 index 0000000..f904a0b --- /dev/null +++ b/simulation/life/3 @@ -0,0 +1,50 @@ +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.##.. +.................................................. +.................................................. +.................................................. +.................................................. +.##.##.##.##.##.##.##.##.##.##.##.##.............. +.##.##.##.##.##.##.##.##.##.##.##.##.............. +...........................................###.... +.##.##.##.##.##.##.##.##.##.##.##.##.......#...... +.##.##.##.##.##.##.##.##.##.##.##.##........#..... +.................................................. +.................................................. diff --git a/simulation/life/4 b/simulation/life/4 new file mode 100755 index 0000000..da991a7 --- /dev/null +++ b/simulation/life/4 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +........................#......................... +.......................###........................ +.......................#.#........................ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/5 b/simulation/life/5 new file mode 100755 index 0000000..064f56e --- /dev/null +++ b/simulation/life/5 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +..............................#................... +.............................###.................. +...............................#.................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/6 b/simulation/life/6 new file mode 100755 index 0000000..fc66375 --- /dev/null +++ b/simulation/life/6 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +......###.....#...#...#...#...#...#...#...#....... +......#.#.....#...#...#...#...#...#...#...#....... +......###.....#...#...#...#...#...#...#...#....... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.............#..#..#..#..#..#..#..#..#............ +.............#..#..#..#..#..#..#..#..#............ +.............#..#..#..#..#..#..#..#..#............ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/7 b/simulation/life/7 new file mode 100755 index 0000000..e008167 --- /dev/null +++ b/simulation/life/7 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.......###........................................ +.........#........................................ +........#......................................... +.................................................. +........................................###....... +........................................#......... +.........................................#........ +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/8 b/simulation/life/8 new file mode 100755 index 0000000..bb71aee --- /dev/null +++ b/simulation/life/8 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +..................#.#.#.#.#.#..................... +.................#.#.#.#.#.#.#.................... +..................#.#.#.#.#.#..................... +.................#.#.#.#.#.#.#.................... +..................#.#.#.#.#.#..................... +.................#.#.#.#.#.#.#.................... +..................#.#.#.#.#.#..................... +.................#.#.#.#.#.#.#.................... +..................#.#.#.#.#.#..................... +.................#.#.#.#.#.#.#.................... +..................#.#.#.#.#.#..................... +.................#.#.#.#.#.#.#.................... +..................#.#.#.#.#.#..................... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/9 b/simulation/life/9 new file mode 100755 index 0000000..ded468e --- /dev/null +++ b/simulation/life/9 @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +....................................##............ +..................................##..#........... +............#####.................#..##........... +..........#.......#................##............. +.........#.........#.............................. +.............###.................................. +........#...#...#...#............................. +........#..#.....#..#............................. +........#..#.....#..#............................. +........#..#.....#..#............................. +........#...#...#...#............................. +.............###.................................. +.........#.........#.............................. +..........#.......#............................... +............#####................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +...................................#####.......... +.................................##.....##........ +................................#.........#....... +................................#...###...#....... +...............................#...#...#...#...... +...............................#..#.....#..#...... +...............................#..#.....#..#...... +........#......................#..#.....#..#...... +........##.##..................#...#...#...#...... +............#...................#...###...#....... +................................#.........#....... +.................................##.....##........ +...................................#####.......... +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/e b/simulation/life/e new file mode 100755 index 0000000..1ca8715 --- /dev/null +++ b/simulation/life/e @@ -0,0 +1,50 @@ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................####.............####............ +.....................#...........#................ +...................####.........#................. +.......................#...#...#.................. +........................#.#.#.#................... +.................#########...#########............ +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. +.................................................. diff --git a/simulation/life/index.html b/simulation/life/index.html new file mode 100755 index 0000000..ce986cd --- /dev/null +++ b/simulation/life/index.html @@ -0,0 +1,12 @@ + +life + + + +

life

+
Conway's game of life. Simple editor with copy and paste +functionality and simulator. + +
+ + \ No newline at end of file diff --git a/simulation/life/life.bas b/simulation/life/life.bas new file mode 100755 index 0000000..ec36a1c --- /dev/null +++ b/simulation/life/life.bas @@ -0,0 +1,392 @@ +' Life simulator/editor +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + +' in observing mode use keys: +' --------------------------- + +' x - run for 10000 cycles +' s - run for specified amount of cycles +' n - run for 1 cycle +' z - stop running +' c - clear all +' w - write state to file +' l - load state from file +' e - switch to edit mode +' q - quit + + +' in edit mode use keys: +' ---------------------- + +' cursor keys - move around +' 4 8 6 2 - move arund in large jumps +' s - switch to select mode +' v - paste from copy buffer +' SPACE - toggle cell on/off +' ESC - return to observing mode + + +' in select mode use keys: +' ------------------------ + +' cursor keys - select area +' 4 8 6 2 - select area in large jumps +' c - copy +' x - cut +' ESC - return to edit mode + + +DECLARE SUB load () +DECLARE SUB wri () +DECLARE SUB shbuf () +DEFINT A-Z + +DECLARE SUB sel (x, y) +DECLARE SUB cle () +DECLARE SUB ed () +DECLARE SUB disp () +DECLARE SUB cl () +DECLARE SUB proc () +DECLARE SUB start () +DIM SHARED buf1(1 TO 50, 1 TO 50) +DIM SHARED buf2(1 TO 50, 1 TO 50) +DIM SHARED mill +DIM SHARED frm +DIM SHARED ski +DIM SHARED buf3(0 TO 50, 0 TO 50) +DIM SHARED bufxs, bufys +start + +1 +proc +frm = frm + 1 + +2 +LOCATE 1, 27 +PRINT "frame:" + STR$(frm) + " " +LOCATE 2, 27 +PRINT "skip:" + STR$(ski) + " " + + +a$ = INKEY$ + +IF a$ = "s" THEN +LOCATE 5, 27 +INPUT "skip ", ski +cl +END IF + +IF a$ = "q" THEN +SYSTEM +END IF + +IF a$ = "n" THEN GOTO 1 + +IF a$ = "c" THEN cle + +IF a$ = "e" THEN ed + +IF a$ = "z" THEN ski = 0 + +IF a$ = "x" THEN ski = 10000 + +IF a$ = "w" THEN wri + +IF a$ = "l" THEN load + +IF ski > 0 THEN ski = ski - 1: GOTO 1 +GOTO 2 + +SUB cl +LOCATE 5, 27 +PRINT " " +END SUB + +SUB cle + +FOR y = 1 TO 50 +FOR x = 1 TO 50 +buf1(x, y) = 0 +buf2(x, y) = 0 +NEXT x +NEXT y + +mill = 0 +frm = 0 +ski = 0 + +disp +END SUB + +SUB disp + +FOR y = 1 TO 50 +FOR x = 1 TO 50 +IF mill = 0 THEN c = buf1(x, y) ELSE c = buf2(x, y) +IF c = 0 THEN c = 1 ELSE c = 10 +LINE (x * 4, y * 4)-(x * 4 + 2, y * 4 + 2), c, BF +NEXT x +NEXT y + + +END SUB + +SUB ed +x = 25 +y = 25 +3 +IF x < 1 THEN x = 1 +IF y < 1 THEN y = 1 +IF x > 50 THEN x = 50 +IF y > 49 THEN y = 49 + +IF mill = 0 THEN c = buf1(x, y) ELSE c = buf2(x, y) +IF c = 0 THEN c = 1 ELSE c = 10 +LINE (x * 4, y * 4)-(x * 4 + 2, y * 4 + 2), c, BF + +LINE (x * 4 - 1, y * 4 - 1)-(x * 4 + 3, y * 4 + 3), 14, B +4 +a$ = INKEY$ +IF a$ = "" THEN GOTO 4 + +LINE (x * 4 - 1, y * 4 - 1)-(x * 4 + 3, y * 4 + 3), 0, B + +IF a$ = CHR$(0) + "M" THEN x = x + 1 +IF a$ = CHR$(0) + "K" THEN x = x - 1 +IF a$ = CHR$(0) + "P" THEN y = y + 1 +IF a$ = CHR$(0) + "H" THEN y = y - 1 +IF a$ = "6" THEN x = x + 8 +IF a$ = "4" THEN x = x - 8 +IF a$ = "2" THEN y = y + 8 +IF a$ = "8" THEN y = y - 8 + +IF a$ = CHR$(27) THEN GOTO 5 +IF a$ = "s" THEN sel x, y + +IF a$ = "v" THEN +FOR y1 = 0 TO bufys +FOR x1 = 0 TO bufxs +c = buf3(x1, y1) +x2 = x1 + x +y2 = y1 + y + +IF (x2 < 50) AND (y2 < 50) THEN +IF mill = 0 THEN buf1(x2, y2) = c ELSE buf2(x2, y2) = c +END IF + +NEXT x1 +NEXT y1 +disp +END IF + +IF a$ = " " THEN +IF mill = 0 THEN c = buf1(x, y) ELSE c = buf2(x, y) +IF c = 1 THEN c = 0 ELSE c = 1 +IF mill = 0 THEN buf1(x, y) = c ELSE buf2(x, y) = c +END IF + +GOTO 3 +5 + +END SUB + +SUB load + +cle +LOCATE 5, 27 +INPUT "file ", f$ +cl + +y = 1 +OPEN f$ FOR INPUT AS #1 +9 +IF EOF(1) <> 0 THEN GOTO 10 + +LINE INPUT #1, a$ + +FOR x = 1 TO LEN(a$) +B$ = RIGHT$(LEFT$(a$, x), 1) +IF B$ = "#" THEN c = 1 ELSE c = 0 +IF mill = 0 THEN buf1(x, y) = c ELSE buf2(x, y) = c +NEXT x +y = y + 1 + +GOTO 9 +10 +CLOSE #1 +disp + +END SUB + +SUB proc + +IF mill = 0 THEN +FOR y = 2 TO 48 +FOR x = 2 TO 49 +IF buf1(x - 1, y - 1) = 1 THEN c = 1 ELSE c = 0 +IF buf1(x, y - 1) = 1 THEN c = c + 1 +IF buf1(x + 1, y - 1) = 1 THEN c = c + 1 +IF buf1(x - 1, y) = 1 THEN c = c + 1 +IF buf1(x + 1, y) = 1 THEN c = c + 1 +IF buf1(x - 1, y + 1) = 1 THEN c = c + 1 +IF buf1(x, y + 1) = 1 THEN c = c + 1 +IF buf1(x + 1, y + 1) = 1 THEN c = c + 1 + +IF buf1(x, y) = 1 THEN +IF c = 2 OR c = 3 THEN buf2(x, y) = 1 ELSE buf2(x, y) = 0 +ELSE +IF c = 3 THEN buf2(x, y) = 1 ELSE buf2(x, y) = 0 +END IF + +NEXT x +NEXT y +mill = 1 +disp +ELSE + +FOR y = 2 TO 48 +FOR x = 2 TO 49 +IF buf2(x - 1, y - 1) = 1 THEN c = 1 ELSE c = 0 +IF buf2(x, y - 1) = 1 THEN c = c + 1 +IF buf2(x + 1, y - 1) = 1 THEN c = c + 1 +IF buf2(x - 1, y) = 1 THEN c = c + 1 +IF buf2(x + 1, y) = 1 THEN c = c + 1 +IF buf2(x - 1, y + 1) = 1 THEN c = c + 1 +IF buf2(x, y + 1) = 1 THEN c = c + 1 +IF buf2(x + 1, y + 1) = 1 THEN c = c + 1 + +IF buf2(x, y) = 1 THEN +IF c = 2 OR c = 3 THEN buf1(x, y) = 1 ELSE buf1(x, y) = 0 +ELSE +IF c = 3 THEN buf1(x, y) = 1 ELSE buf1(x, y) = 0 +END IF +NEXT x +NEXT y + +mill = 0 +disp +END IF + +END SUB + +SUB sel (x, y) +x1 = x * 4 - 1 +y1 = y * 4 - 1 +x2 = x + 2 +y2 = y + 2 + +6 +x3 = x2 * 4 + 3 +y3 = y2 * 4 + 3 + +LINE (x1, y1)-(x3, y3), 14, B +8 +a$ = INKEY$ +IF a$ = "" THEN GOTO 8 +LINE (x1, y1)-(x3, y3), 0, B + +IF a$ = CHR$(0) + "M" THEN x2 = x2 + 1 +IF a$ = CHR$(0) + "K" THEN x2 = x2 - 1 +IF a$ = CHR$(0) + "P" THEN y2 = y2 + 1 +IF a$ = CHR$(0) + "H" THEN y2 = y2 - 1 + +IF a$ = "6" THEN x2 = x2 + 8 +IF a$ = "4" THEN x2 = x2 - 8 +IF a$ = "2" THEN y2 = y2 + 8 +IF a$ = "8" THEN y2 = y2 - 8 + +IF a$ = CHR$(27) THEN GOTO 7 +IF a$ = "c" THEN +bufxs = x2 - x +bufys = y2 - y + +FOR y4 = y TO y2 +FOR x4 = x TO x2 +IF mill = 0 THEN c = buf1(x4, y4) ELSE c = buf2(x4, y4) +buf3(x4 - x, y4 - y) = c +NEXT x4 +NEXT y4 +shbuf +END IF + +IF a$ = "x" THEN +bufxs = x2 - x +bufys = y2 - y + +FOR y4 = y TO y2 +FOR x4 = x TO x2 +IF mill = 0 THEN c = buf1(x4, y4): buf1(x4, y4) = 0 ELSE c = buf2(x4, y4): buf2(x4, y4) = 0 +buf3(x4 - x, y4 - y) = c +NEXT x4 +NEXT y4 +shbuf +disp +END IF + + + +GOTO 6 +7 + +END SUB + +SUB shbuf + +'PRINT bufxs +'PRINT bufys + +x = bufxs +IF x > 15 THEN x = 15 +y = bufys +IF y > 15 THEN y = 15 + +LINE (204, 99)-(319, 199), 0, BF +LINE (204, 99)-(208 + 4 * bufxs, 103 + 4 * bufys), 14, B + +FOR y2 = 0 TO y +FOR x2 = 0 TO x +c = buf3(x2, y2) +IF c = 0 THEN c = 1 ELSE c = 10 +LINE (x2 * 4 + 205, y2 * 4 + 100)-(x2 * 4 + 2 + 205, y2 * 4 + 2 + 100), c, BF +NEXT x2 +NEXT y2 + + +END SUB + +SUB start +SCREEN 13 +RANDOMIZE TIMER + +bufxs = 0 +bufys = 0 + +cle + +END SUB + +SUB wri +LOCATE 5, 27 +INPUT "file ", f$ +cl + +OPEN f$ FOR OUTPUT AS #1 + +FOR y = 1 TO 50 +a$ = "" +FOR x = 1 TO 50 +IF mill = 0 THEN c = buf1(x, y) ELSE c = buf2(x, y) +IF c = 0 THEN a$ = a$ + "." ELSE a$ = a$ + "#" +NEXT x +PRINT #1, a$ +NEXT y + +CLOSE #1 + + +END SUB + diff --git a/simulation/life/sshot.png b/simulation/life/sshot.png new file mode 100755 index 0000000..f1ca1c7 Binary files /dev/null and b/simulation/life/sshot.png differ diff --git a/simulation/liquid.bas b/simulation/liquid.bas new file mode 100755 index 0000000..9b5bd93 --- /dev/null +++ b/simulation/liquid.bas @@ -0,0 +1,50 @@ +' Rounds up sharp edges +' made by Svjatoslav Agejenko +' in 2003.12 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +DEFINT A-Z +WIDTH 80, 50 +VIEW PRINT 1 TO 50 +RANDOMIZE TIMER +CLS +DIM SHARED buf1(1 TO 80, 1 TO 50) +DIM SHARED buf2(1 TO 80, 1 TO 50) + +FOR y = 1 TO 50 +FOR x = 1 TO 80 +buf1(x, y) = INT(RND * 2) +NEXT x +NEXT y + +1 +FOR y = 2 TO 49 +FOR x = 2 TO 79 +c = buf1(x - 1, y - 1) +c = c + buf1(x, y - 1) +c = c + buf1(x + 1, y - 1) +c = c + buf1(x - 1, y) +c = c + buf1(x + 1, y) +c = c + buf1(x - 1, y + 1) +c = c + buf1(x, y + 1) +c = c + buf1(x + 1, y + 1) +IF buf1(x, y) = 1 THEN +IF c > 3 THEN buf2(x, y) = 1 ELSE buf2(x, y) = 0 +ELSE +IF c > 4 THEN buf2(x, y) = 1 ELSE buf2(x, y) = 0 +END IF +NEXT x +NEXT y + +FOR y = 1 TO 50 +FOR x = 1 TO 80 +b = buf2(x, y) +buf1(x, y) = b +LOCATE y, x +IF b = 0 THEN PRINT "."; ELSE PRINT "#" +NEXT x +NEXT y +SOUND 0, 3 +GOTO 1 + diff --git a/sound/siren1.bas b/sound/siren1.bas new file mode 100755 index 0000000..79302eb --- /dev/null +++ b/sound/siren1.bas @@ -0,0 +1,16 @@ +SCREEN 1 +CLS +a = 40 +1 +SOUND a, .3 +SOUND 200, 1 +a = a + 100 +IF a > 1000 THEN GOTO 2 +GOTO 1 +2 +SOUND a, .3 +SOUND 500, .2 +a = a - 10 +IF a < 200 THEN GOTO 1 +GOTO 2 + diff --git a/sound/siren2.bas b/sound/siren2.bas new file mode 100755 index 0000000..08a00a8 --- /dev/null +++ b/sound/siren2.bas @@ -0,0 +1,12 @@ +DEFINT A-Z +1 +FOR a = 100 TO 1000 STEP 3 +SOUND a, .05 +SOUND 5000 - (a * 2), .1 +NEXT a +FOR a = 1000 TO 100 STEP -5 +SOUND a, .05 +SOUND a * 3 + 10, .05 +NEXT a +GOTO 1 + diff --git a/system/CMOS string/getenv.asm b/system/CMOS string/getenv.asm new file mode 100755 index 0000000..f94203d --- /dev/null +++ b/system/CMOS string/getenv.asm @@ -0,0 +1,55 @@ +; Svjatoslav Agejenko +; s@ttk17.edu.ee +; 2002.10.07 +; compile with FASM ( Flat ASseMbler ) by Tomasz Grysztar + +org 100h + +cmaddr = 53h + + + mov ah, 3ch ; create file + sub cx, cx + mov dx, name + int 21h + mov [hand], ax + + mov al, cmaddr + out 70h, al + in al, 71h + + mov di, eof + sub cx, cx + mov cl, al + mov dl, cmaddr + +l1: inc dl + mov al, dl + out 70h, al + in al, 71h + stosb + loop l1 + + mov cx, di ; write to file + sub cx, line + mov ah, 40h + mov bx, [hand] + mov dx, line + int 21h + + mov ah, 3eh ; close file + mov bx, [hand] + int 21h + + ret + +error: mov ah, 9 + mov dx, err + int 21h + ret + +name db 'setenv.bat', 0 +hand dw 0 +err db 'error occured$' +line db 'SET CMOSE=' +eof: diff --git a/system/CMOS string/getenv.com b/system/CMOS string/getenv.com new file mode 100755 index 0000000..8cc5102 Binary files /dev/null and b/system/CMOS string/getenv.com differ diff --git a/system/CMOS string/savecmos.bas b/system/CMOS string/savecmos.bas new file mode 100755 index 0000000..0d87a2c --- /dev/null +++ b/system/CMOS string/savecmos.bas @@ -0,0 +1,74 @@ +DECLARE SUB displayit () +DECLARE SUB newstring () +DECLARE SUB start () +DIM SHARED adr +DIM SHARED maxlen + +start + +2 +PRINT " " +displayit +PRINT " " +PRINT "1 - to enter new string" +PRINT "2 - to quit" +a$ = INPUT$(1) +SELECT CASE a$ +CASE "1" +newstring +CASE "2" +SYSTEM +CASE ELSE +PRINT "unrecognized command" +END SELECT + +GOTO 2 + +SUB displayit +PRINT "Current CMOS contains: "; +OUT &H70, adr +l = INP(&H71) + +IF l > maxlen THEN PRINT "": GOTO 1 +COLOR 0, 15 +FOR a = 1 TO l +OUT &H70, adr + a +PRINT CHR$(INP(&H71)); +NEXT a +COLOR 7, 0 +PRINT " " +1 + +END SUB + +SUB newstring +PRINT " max length |" + SPACE$(maxlen) + "|" +INPUT "Enter new string:", a$ +IF LEN(a$) > maxlen THEN PRINT "too long, max"; maxlen: GOTO 3 + +OUT &H70, adr +OUT &H71, LEN(a$) + +FOR b = 1 TO LEN(a$) +c = ASC(RIGHT$(LEFT$(a$, b), 1)) +OUT &H70, adr + b +OUT &H71, c +NEXT b + +3 +END SUB + +SUB start +adr = 83 +maxlen = 8 + +CLS +PRINT "Svjatoslav Agejenko" +PRINT "s@ttk17.edu.ee" +PRINT "2002.10.07" +PRINT " " +PRINT "Utility to store max"; maxlen; "character long string in CMOS memory." +PRINT "beginning CMOS address: 0x"; HEX$(adr) + +END SUB + diff --git a/tutorial/group1/00.bas b/tutorial/group1/00.bas new file mode 100755 index 0000000..2c00118 --- /dev/null +++ b/tutorial/group1/00.bas @@ -0,0 +1,6 @@ +' klahv F5 programmi k„ivitamiseks +' klavisha F5 dlja zapuska programmx +' press F5 to run program + +PRINT "Hello world!" + diff --git a/tutorial/group1/01.bas b/tutorial/group1/01.bas new file mode 100755 index 0000000..0665a5e --- /dev/null +++ b/tutorial/group1/01.bas @@ -0,0 +1,11 @@ +CLS + +a = 3 +PRINT a + +a = a * 2 +PRINT a + +a = a - 1 +PRINT a + diff --git a/tutorial/group1/02.bas b/tutorial/group1/02.bas new file mode 100755 index 0000000..3a355d5 --- /dev/null +++ b/tutorial/group1/02.bas @@ -0,0 +1,10 @@ +CLS + +a = 7 + +PRINT "A contains:"; a + +PRINT "Some calculations:"; (a + 2.1234) / 3 * 4 - 6 + + + diff --git a/tutorial/group1/03.bas b/tutorial/group1/03.bas new file mode 100755 index 0000000..ce81d2e --- /dev/null +++ b/tutorial/group1/03.bas @@ -0,0 +1,15 @@ +CLS ' this command clears the screen + +PRINT "Semicolon separator:" +PRINT 12; 314; 122; 1; 43 +PRINT 312; 4; 1; 3111; 3 +PRINT 3; 2344; 12231; 1; 12333 + +PRINT ' prints empty lines +PRINT + +PRINT "Comma separator:" +PRINT 12, 314, 122, 1, 43 +PRINT 312, 4, 1, 3111, 3 +PRINT 3, 2344, 12231, 1, 12333 + diff --git a/tutorial/group1/04.bas b/tutorial/group1/04.bas new file mode 100755 index 0000000..c65fd76 --- /dev/null +++ b/tutorial/group1/04.bas @@ -0,0 +1,5 @@ +INPUT "Please enter a number:", num + + +PRINT "You entered:"; num + diff --git a/tutorial/group1/05.bas b/tutorial/group1/05.bas new file mode 100755 index 0000000..89320b0 --- /dev/null +++ b/tutorial/group1/05.bas @@ -0,0 +1,14 @@ +PRINT "**** Quess a number game ****" + +1 +INPUT "enter a number:", n + +IF n = 5 THEN GOTO 2 +IF n < 5 THEN PRINT "try a bigger number" +IF n > 5 THEN PRINT "try a smaller number" + +GOTO 1 + +2 +PRINT "Correct!!!" + diff --git a/tutorial/group1/06.bas b/tutorial/group1/06.bas new file mode 100755 index 0000000..b0d2965 --- /dev/null +++ b/tutorial/group1/06.bas @@ -0,0 +1,9 @@ +CLS + +1 + +a = a + 1 +PRINT "current:"; a + +IF a < 10 THEN GOTO 1 + diff --git a/tutorial/group1/07.bas b/tutorial/group1/07.bas new file mode 100755 index 0000000..1fa3b1b --- /dev/null +++ b/tutorial/group1/07.bas @@ -0,0 +1,6 @@ +CLS + +FOR i = 1 TO 10 + PRINT "current:"; i +NEXT i + diff --git a/tutorial/group1/08.bas b/tutorial/group1/08.bas new file mode 100755 index 0000000..5f7a62c --- /dev/null +++ b/tutorial/group1/08.bas @@ -0,0 +1,7 @@ +CLS + +FOR i = 100 TO 1000 STEP 50 + PRINT "current:"; i + SOUND i, 1 ' makes sound +NEXT i + diff --git a/tutorial/group1/09.bas b/tutorial/group1/09.bas new file mode 100755 index 0000000..ca603a7 --- /dev/null +++ b/tutorial/group1/09.bas @@ -0,0 +1,10 @@ +CLS + +FOR i = 1 TO 20 + + n = RND * 1000 ' generate random numbers 0 -- 999.9(9) + PRINT "random number:"; n + SOUND n + 40, 1 + +NEXT i + diff --git a/tutorial/group1/10.bas b/tutorial/group1/10.bas new file mode 100755 index 0000000..4fec246 --- /dev/null +++ b/tutorial/group1/10.bas @@ -0,0 +1,13 @@ +WIDTH 80, 50 ' set small text fonts + + +FOR a = 0 TO 31 + + COLOR a ' set text color, each color is defined by it's number + ' colors from 16 to 31 are blinking. + + PRINT "This is text color nr."; a + +NEXT a + + diff --git a/tutorial/group1/11.bas b/tutorial/group1/11.bas new file mode 100755 index 0000000..2d77fe4 --- /dev/null +++ b/tutorial/group1/11.bas @@ -0,0 +1,16 @@ +CLS + +COLOR 14 +LOCATE 1, 50 ' set cursor location to specified +PRINT "Yellow text at 1, 50" + +COLOR 12 +LOCATE 6, 5 +PRINT "Pink text at 6, 5" + +COLOR 10 +LOCATE 20, 40 +PRINT "Green text at 20, 40" + + + diff --git a/tutorial/group1/12.bas b/tutorial/group1/12.bas new file mode 100755 index 0000000..2c164e9 --- /dev/null +++ b/tutorial/group1/12.bas @@ -0,0 +1,15 @@ +CLS + +FOR a = 1 TO 15 + COLOR a + PRINT "This is a test" +NEXT a + +PRINT + +FOR a = 1 TO 15 + COLOR a + PRINT "This is a test"; ' << semicolon at the end prevents cursor + ' from starting new line +NEXT a + diff --git a/tutorial/group1/13.bas b/tutorial/group1/13.bas new file mode 100755 index 0000000..92558a8 --- /dev/null +++ b/tutorial/group1/13.bas @@ -0,0 +1,6 @@ +CLS + + +PRINT 70 / 4 ' usual division +PRINT 70 \ 4 ' division and rounding + diff --git a/tutorial/group1/14.bas b/tutorial/group1/14.bas new file mode 100755 index 0000000..f42a3f1 --- /dev/null +++ b/tutorial/group1/14.bas @@ -0,0 +1,14 @@ +CLS + +FOR a = 1 TO 20 + + n1 = RND * 100 + + n2 = INT(n1) ' Rounds numbers towards a smaller value. + + n3 = n1 \ 1 ' Mathematically correct rounding. + + PRINT n1, n2, n3 + +NEXT a + diff --git a/tutorial/group1/15.bas b/tutorial/group1/15.bas new file mode 100755 index 0000000..25a0068 --- /dev/null +++ b/tutorial/group1/15.bas @@ -0,0 +1,14 @@ +CLS + + +FOR b = 1 TO 15 + + FOR a = 1 TO 60 + PRINT "#"; + NEXT a + PRINT + +NEXT b + + + diff --git a/tutorial/group1/16.bas b/tutorial/group1/16.bas new file mode 100755 index 0000000..b23ae87 --- /dev/null +++ b/tutorial/group1/16.bas @@ -0,0 +1,18 @@ +CLS + +FOR b = 1 TO 10 + FOR a = 1 TO b + PRINT "A"; + NEXT a + PRINT +NEXT b + +PRINT + +FOR b = 60 TO 0 STEP -8 + FOR a = 1 TO b + PRINT "B"; + NEXT a + PRINT +NEXT b + diff --git a/tutorial/group1/17.bas b/tutorial/group1/17.bas new file mode 100755 index 0000000..bb37291 --- /dev/null +++ b/tutorial/group1/17.bas @@ -0,0 +1,12 @@ +' press CTRL + PAUSE/BREAK to stop program. + +CLS +1 + +LOCATE 1, 1 +PRINT TIMER ' system timer +PRINT TIME$ ' current system time +PRINT DATE$ ' current system date + +GOTO 1 + diff --git a/tutorial/group1/18.bas b/tutorial/group1/18.bas new file mode 100755 index 0000000..afca895 --- /dev/null +++ b/tutorial/group1/18.bas @@ -0,0 +1,18 @@ +' Start this program several times, and notice that first group +' of numbers is always the same. + +CLS + +FOR b = 1 TO 10 + PRINT RND +NEXT b + +PRINT + +RANDOMIZE TIMER ' to get differend random numbers 'RANDOMIZE TIMER' + ' must be used. + +FOR b = 1 TO 10 + PRINT RND +NEXT b + diff --git a/tutorial/group1/19.bas b/tutorial/group1/19.bas new file mode 100755 index 0000000..6bc34f0 --- /dev/null +++ b/tutorial/group1/19.bas @@ -0,0 +1,14 @@ +CLS + +1 +x = RND * 79 + 1 +y = RND * 22 + 1 +c = RND * 15 + +COLOR c +LOCATE y, x + +PRINT "x" +SOUND x * 100 + 100, .1 +GOTO 1 + diff --git a/tutorial/group1/CVS/Entries b/tutorial/group1/CVS/Entries new file mode 100755 index 0000000..a1e751b --- /dev/null +++ b/tutorial/group1/CVS/Entries @@ -0,0 +1,20 @@ +/00.bas/1.1/Thu Apr 12 14:31:50 2007// +/01.bas/1.1/Thu Apr 12 14:31:50 2007// +/02.bas/1.1/Thu Apr 12 14:31:50 2007// +/03.bas/1.1/Thu Apr 12 14:31:50 2007// +/04.bas/1.1/Thu Apr 12 14:31:50 2007// +/05.bas/1.1/Thu Apr 12 14:31:50 2007// +/06.bas/1.1/Thu Apr 12 14:31:50 2007// +/07.bas/1.1/Thu Apr 12 14:31:50 2007// +/08.bas/1.1/Thu Apr 12 14:31:50 2007// +/09.bas/1.1/Thu Apr 12 14:31:50 2007// +/10.bas/1.1/Thu Apr 12 14:31:50 2007// +/11.bas/1.1/Thu Apr 12 14:31:50 2007// +/12.bas/1.1/Thu Apr 12 14:31:50 2007// +/13.bas/1.1/Thu Apr 12 14:31:50 2007// +/14.bas/1.1/Thu Apr 12 14:31:50 2007// +/15.bas/1.1/Thu Apr 12 14:31:50 2007// +/16.bas/1.1/Thu Apr 12 14:31:50 2007// +/17.bas/1.1/Thu Apr 12 14:31:50 2007// +/18.bas/1.1/Thu Apr 12 14:31:50 2007// +/19.bas/1.1/Thu Apr 12 14:31:50 2007// diff --git a/tutorial/group1/CVS/Repository b/tutorial/group1/CVS/Repository new file mode 100755 index 0000000..3e7369a --- /dev/null +++ b/tutorial/group1/CVS/Repository @@ -0,0 +1 @@ +QBasicPrograms/qbasicTutorial/group1 diff --git a/tutorial/group1/CVS/Root b/tutorial/group1/CVS/Root new file mode 100755 index 0000000..f564cc2 --- /dev/null +++ b/tutorial/group1/CVS/Root @@ -0,0 +1 @@ +:extssh:n0@svjatoslav.eu:/home/cvs/cvsroot diff --git a/tutorial/group1/CVS/Template b/tutorial/group1/CVS/Template new file mode 100755 index 0000000..e69de29 diff --git a/tutorial/group2/01.bas b/tutorial/group2/01.bas new file mode 100755 index 0000000..39b091d --- /dev/null +++ b/tutorial/group2/01.bas @@ -0,0 +1,20 @@ +CLS + +' incareasing frequancy; suurenev sagedus; uvelicevajusijesja xastota +SOUND 1000, 2 +SOUND 2000, 2 +SOUND 3000, 2 + +' incareasing length; suurenev kestvus; uvelicevajusijesja dlitelnost +SOUND 0, 10 +SOUND 1000, 1 + +SOUND 0, 10 +SOUND 1000, 2 + +SOUND 0, 10 +SOUND 1000, 4 + +SOUND 0, 10 +SOUND 1000, 8 + diff --git a/tutorial/group2/02.bas b/tutorial/group2/02.bas new file mode 100755 index 0000000..39b2c4e --- /dev/null +++ b/tutorial/group2/02.bas @@ -0,0 +1,14 @@ +1 +s = s + 1 ' speed +PRINT s; "x" + +FOR a = 100 TO 1000 STEP s + SOUND a, .1 +NEXT a + +FOR a = 1000 TO 100 STEP -s + SOUND a, .1 +NEXT a + +GOTO 1 + diff --git a/tutorial/group2/03.bas b/tutorial/group2/03.bas new file mode 100755 index 0000000..f5de99b --- /dev/null +++ b/tutorial/group2/03.bas @@ -0,0 +1,7 @@ +CLS + +INPUT "Hi, what is your name: ", a$ +COLOR 10 +PRINT "Hello " + a$ + " !" +PRINT a$ + " how are you?" + diff --git a/tutorial/group2/04.bas b/tutorial/group2/04.bas new file mode 100755 index 0000000..a428f1e --- /dev/null +++ b/tutorial/group2/04.bas @@ -0,0 +1,11 @@ +CLS + +a$ = "-two-" +PRINT a$ + +a$ = a$ + "three" +PRINT a$ + +a$ = "one" + a$ +PRINT a$ + diff --git a/tutorial/group2/05.bas b/tutorial/group2/05.bas new file mode 100755 index 0000000..e9623c6 --- /dev/null +++ b/tutorial/group2/05.bas @@ -0,0 +1,24 @@ +CLS + +INPUT "Horisontal size (2 to 79):", hs +INPUT "Vertical size (2 to 23):", vs + + +FOR i = 1 TO hs ' make top of the box + PRINT "#"; +NEXT i +PRINT + +FOR y = 1 TO vs - 2 ' make main box area + PRINT "#"; + FOR i = 1 TO hs - 2 + PRINT "."; + NEXT i + PRINT "#" +NEXT y + +FOR i = 1 TO hs ' make last line of the box + PRINT "#"; +NEXT i +PRINT + diff --git a/tutorial/group2/06.bas b/tutorial/group2/06.bas new file mode 100755 index 0000000..d7f192d --- /dev/null +++ b/tutorial/group2/06.bas @@ -0,0 +1,5 @@ +' several commans may be at the single line, when separated by colon. + +1 a = a + 1: PRINT a; "x 7 ="; a * 7: IF a < 10 THEN GOTO 1 + + diff --git a/tutorial/group2/07.bas b/tutorial/group2/07.bas new file mode 100755 index 0000000..4a56ab1 --- /dev/null +++ b/tutorial/group2/07.bas @@ -0,0 +1,10 @@ +INPUT "enter a number:", n + +IF n < 5 THEN PRINT "this number is smaller than 5" +IF n > 5 THEN PRINT "this number is greater than 5" +IF n = 5 THEN PRINT "this number is equal to 5" +IF n <= 5 THEN PRINT "this number is 5, or less" +IF n >= 5 THEN PRINT "this number is 5, or greater" +IF n <> 5 THEN PRINT "this number is not 5" + + diff --git a/tutorial/group2/08.bas b/tutorial/group2/08.bas new file mode 100755 index 0000000..7ec2867 --- /dev/null +++ b/tutorial/group2/08.bas @@ -0,0 +1,43 @@ +CLS + +1 +PRINT "enter password:"; +COLOR 0 ' set temprorarily text color to 0, to hide password + ' black (0) text is invisivle on black backround. +INPUT "", a$ +COLOR 7 ' restore to original text color + +IF a$ <> "jerry" THEN PRINT "wrong password!": GOTO 1 + + +CLS +LOCATE 1, 1 +COLOR 14 +PRINT " ========================================" +PRINT " Welcome to nuclear rocket control system" +PRINT " ========================================" +COLOR 10, 1 +PRINT "..............................................................." +PRINT ".....MMMMMM................MM...MMMMMMM.MMMMMM.MMM..MMMMMMM..MM" +PRINT "MMMMMMMMMMMMMMM...MM.M....MMMMM.MM.MMMMMMMMMMMMMMMMMMMMMMM.MM.." +PRINT ".MMMMMMMMMMM.M.....MMM...MM.....MMMMMMMMMMMMMMMMMMMMMM.M......." +PRINT "..MMMMMMMMMMMM..............MMMMMMMMMMMMMMMMMMMMMMMM..M ......." +PRINT "....MMMMMMMM...............MMMM..MMMMM.MMMMMMMMMMMMM.MM........" +PRINT ".....MMMMMMM.............MMMMMMMM..MMM..MMMMMM.MMMMM.M........." +PRINT "........MM...............MMMMMMMMMM.M.....MM...........M......." +PRINT "......MMMMMM................MMMMMMM....................M......." +PRINT ".....MMMMMMMM.................MMMMMM....................MMM...." +PRINT "......MMMMMMM.................MMMMM...................MMMMMM..." +PRINT "........MMMMMM..................MM....................MMMMMMM.." +PRINT "..........MMMMM ...........................................MM.." + +LOCATE 7, 34 ' display our location +COLOR 12 + 16 +PRINT "*" + +FOR a = 9 TO 23 ' play tune + SOUND 1.5 ^ a, 3 +NEXT a + +COLOR 7, 0 ' restore default color + diff --git a/tutorial/group2/09.bas b/tutorial/group2/09.bas new file mode 100755 index 0000000..c155bb9 --- /dev/null +++ b/tutorial/group2/09.bas @@ -0,0 +1,6 @@ +a$ = "software" + +PRINT a$ +PRINT LEFT$(a$, 4) ' get left piece +PRINT RIGHT$(a$, 4) ' get right piece + diff --git a/tutorial/group2/10.bas b/tutorial/group2/10.bas new file mode 100755 index 0000000..0cf930b --- /dev/null +++ b/tutorial/group2/10.bas @@ -0,0 +1,21 @@ +CLS + +INPUT "Enter some text:", t$ + +PRINT "You entered:" + t$ +PRINT "You entered:"; t$ +PRINT "You entered:", t$ + + +PRINT "It's length is"; LEN(t$); "letters." + +FOR i = 1 TO LEN(t$) ' get text from left + PRINT LEFT$(t$, i) +NEXT i + +PRINT + +FOR i = 1 TO LEN(t$) ' get text from right + PRINT RIGHT$(t$, i) +NEXT i + diff --git a/tutorial/group2/11.bas b/tutorial/group2/11.bas new file mode 100755 index 0000000..0831a84 --- /dev/null +++ b/tutorial/group2/11.bas @@ -0,0 +1,10 @@ +CLS + +INPUT "Enter some text:", t$ + +FOR i = 1 TO LEN(t$) + a$ = LEFT$(t$, i) + b$ = RIGHT$(a$, 1) + PRINT "letter:"; b$ +NEXT i + diff --git a/tutorial/group2/12.bas b/tutorial/group2/12.bas new file mode 100755 index 0000000..9e6ca8c --- /dev/null +++ b/tutorial/group2/12.bas @@ -0,0 +1,13 @@ +y = 10 +ys = 1 + +1 +CLS +y = y + ys +IF y > 20 THEN ys = -1 +IF y < 2 THEN ys = 1 +LOCATE y +PRINT "This is jumping text" +SOUND y * 200 + 100, 1 +GOTO 1 + diff --git a/tutorial/group2/13.bas b/tutorial/group2/13.bas new file mode 100755 index 0000000..38cf3c7 --- /dev/null +++ b/tutorial/group2/13.bas @@ -0,0 +1,27 @@ +CLS + +x = 12 ' ball X coordinate +y = 7 ' ball Y coordinate +xs = 1 ' speed on X direction +ys = 1 ' speed on Y direction + +1 +LOCATE y, x ' erase ball +PRINT " " + +x = x + xs ' calculate new ball coordinates +y = y + ys + +LOCATE y, x ' draw ball +PRINT "O" + + +IF x > 79 THEN xs = -1: SOUND 1000, 1 ' check for boundaries +IF x < 2 THEN xs = 1: SOUND 1000, 1 + +IF y > 22 THEN ys = -1: SOUND 1000, 1 +IF y < 2 THEN ys = 1: SOUND 1000, 1 + +SOUND 0, 1 ' wait +GOTO 1 + diff --git a/tutorial/group2/14.bas b/tutorial/group2/14.bas new file mode 100755 index 0000000..14f4695 --- /dev/null +++ b/tutorial/group2/14.bas @@ -0,0 +1,21 @@ +CLS +PRINT "press keys 0-9, for sound" +PRINT "press ESC to exit program" + +1 +a$ = INPUT$(1) + +IF a$ = "1" THEN SOUND 1000, 2 +IF a$ = "2" THEN SOUND 1100, 2 +IF a$ = "3" THEN SOUND 1200, 2 +IF a$ = "4" THEN SOUND 1300, 2 +IF a$ = "5" THEN SOUND 1400, 2 +IF a$ = "6" THEN SOUND 1500, 2 +IF a$ = "7" THEN SOUND 1600, 2 +IF a$ = "8" THEN SOUND 1700, 2 +IF a$ = "9" THEN SOUND 1800, 2 +IF a$ = "0" THEN SOUND 1900, 2 +IF a$ = CHR$(27) THEN SYSTEM ' 27 = ESCape key code + +GOTO 1 + diff --git a/tutorial/group2/15.bas b/tutorial/group2/15.bas new file mode 100755 index 0000000..f5121f6 --- /dev/null +++ b/tutorial/group2/15.bas @@ -0,0 +1,10 @@ +CLS + +FOR a = 32 TO 255 +PRINT " " + CHR$(a); +NEXT a + +PRINT " " +PRINT " " +PRINT "Hi there! " + CHR$(1) + diff --git a/tutorial/group2/16.bas b/tutorial/group2/16.bas new file mode 100755 index 0000000..59bce8a --- /dev/null +++ b/tutorial/group2/16.bas @@ -0,0 +1,19 @@ +CLS +PRINT "Press any key..." + +1 +a$ = INPUT$(1) + +PRINT "pressed key was: "; + +IF ASC(a$) > 32 THEN PRINT a$ + +IF a$ = CHR$(27) THEN PRINT "Escape" +IF a$ = CHR$(13) THEN PRINT "Enter" +IF a$ = CHR$(8) THEN PRINT "Backspace" +IF a$ = CHR$(9) THEN PRINT "Tabulator" +IF a$ = " " THEN PRINT "Space" + +PRINT "ASCII code is: "; ASC(a$) +GOTO 1 + diff --git a/tutorial/group2/17.bas b/tutorial/group2/17.bas new file mode 100755 index 0000000..ee9a18c --- /dev/null +++ b/tutorial/group2/17.bas @@ -0,0 +1,22 @@ +CLS +PRINT "Use keys 4, 8, 6, 2 for control, make sure the NumLock is on" +PRINT "ESC to exit" +PRINT " " +PRINT "Press any key to continue..." +a$ = INPUT$(1) + +COLOR 14 +x = 40 +y = 10 +1 +CLS +LOCATE y, x +PRINT CHR$(2) +a$ = INPUT$(1) +IF a$ = "4" THEN x = x - 1 +IF a$ = "6" THEN x = x + 1 +IF a$ = "8" THEN y = y - 1 +IF a$ = "2" THEN y = y + 1 +IF a$ = CHR$(27) THEN SYSTEM +GOTO 1 + diff --git a/tutorial/group2/18.bas b/tutorial/group2/18.bas new file mode 100755 index 0000000..391a349 --- /dev/null +++ b/tutorial/group2/18.bas @@ -0,0 +1,28 @@ +CLS +1 + +PRINT "******** Select action: ********" +PRINT " " +PRINT "1 - exit program" +PRINT "2 - make a sound" +PRINT "3 - draw box" + +INPUT "", a + +IF a = 1 THEN SYSTEM + +IF a = 2 THEN SOUND 2000, 2 + +IF a = 3 THEN + FOR c = 1 TO 15 + FOR b = 1 TO 50 + PRINT "#"; + NEXT b + PRINT " " + NEXT c +END IF + +IF a > 3 THEN PRINT "Number too large" +IF a < 1 THEN PRINT "Number too small" +GOTO 1 + diff --git a/tutorial/group2/CVS/Entries b/tutorial/group2/CVS/Entries new file mode 100755 index 0000000..bad3d2f --- /dev/null +++ b/tutorial/group2/CVS/Entries @@ -0,0 +1,18 @@ +/01.bas/1.1/Thu Apr 12 14:31:50 2007// +/02.bas/1.1/Thu Apr 12 14:31:50 2007// +/03.bas/1.1/Thu Apr 12 14:31:50 2007// +/04.bas/1.1/Thu Apr 12 14:31:50 2007// +/05.bas/1.1/Thu Apr 12 14:31:50 2007// +/06.bas/1.1/Thu Apr 12 14:31:50 2007// +/07.bas/1.1/Thu Apr 12 14:31:50 2007// +/08.bas/1.1/Thu Apr 12 14:31:50 2007// +/09.bas/1.1/Thu Apr 12 14:31:50 2007// +/10.bas/1.1/Thu Apr 12 14:31:50 2007// +/11.bas/1.1/Thu Apr 12 14:31:50 2007// +/12.bas/1.1/Thu Apr 12 14:31:50 2007// +/13.bas/1.1/Thu Apr 12 14:31:50 2007// +/14.bas/1.1/Thu Apr 12 14:31:50 2007// +/15.bas/1.1/Thu Apr 12 14:31:50 2007// +/16.bas/1.1/Thu Apr 12 14:31:50 2007// +/17.bas/1.1/Thu Apr 12 14:31:50 2007// +/18.bas/1.1/Thu Apr 12 14:31:50 2007// diff --git a/tutorial/group2/CVS/Repository b/tutorial/group2/CVS/Repository new file mode 100755 index 0000000..8908cb4 --- /dev/null +++ b/tutorial/group2/CVS/Repository @@ -0,0 +1 @@ +QBasicPrograms/qbasicTutorial/group2 diff --git a/tutorial/group2/CVS/Root b/tutorial/group2/CVS/Root new file mode 100755 index 0000000..f564cc2 --- /dev/null +++ b/tutorial/group2/CVS/Root @@ -0,0 +1 @@ +:extssh:n0@svjatoslav.eu:/home/cvs/cvsroot diff --git a/tutorial/group2/CVS/Template b/tutorial/group2/CVS/Template new file mode 100755 index 0000000..e69de29 diff --git a/tutorial/group3/00.bas b/tutorial/group3/00.bas new file mode 100755 index 0000000..91414f8 --- /dev/null +++ b/tutorial/group3/00.bas @@ -0,0 +1,7 @@ +SCREEN 13 ' set video mode 320 x 200 256 colors + +PRINT "Hello..." + +PSET (160, 100), 10 ' draws a point + ' x=160 y=100 color=10 + diff --git a/tutorial/group3/01.bas b/tutorial/group3/01.bas new file mode 100755 index 0000000..938bc41 --- /dev/null +++ b/tutorial/group3/01.bas @@ -0,0 +1,9 @@ +SCREEN 13 + +FOR y = 50 TO 150 + FOR x = 100 TO 200 + PSET (x, y), 10 + NEXT x + SOUND y, 1 +NEXT y + diff --git a/tutorial/group3/02.bas b/tutorial/group3/02.bas new file mode 100755 index 0000000..11df674 --- /dev/null +++ b/tutorial/group3/02.bas @@ -0,0 +1,25 @@ +DECLARE SUB box (x1!, y1!, x2!, y2!, c!) + +' Press F2 to see submodules +' Nazmi F2 xtob uvidet SUB moduli +' Vajuta F2 et n„ha SUB mooduleid + + +SCREEN 13 + +box 10, 10, 100, 100, 15 + +box 30, 80, 300, 120, 11 + +box 140, 20, 180, 180, 10 + +SUB box (x1, y1, x2, y2, c) + +FOR y = y1 TO y2 + FOR x = x1 TO x2 + PSET (x, y), c + NEXT x +NEXT y + +END SUB + diff --git a/tutorial/group3/03.bas b/tutorial/group3/03.bas new file mode 100755 index 0000000..8ddb8b2 --- /dev/null +++ b/tutorial/group3/03.bas @@ -0,0 +1,6 @@ +SCREEN 13 + +LINE (10, 10)-(200, 100), 14 + +CIRCLE (100, 100), 80, 10 + diff --git a/tutorial/group3/04.bas b/tutorial/group3/04.bas new file mode 100755 index 0000000..a806541 --- /dev/null +++ b/tutorial/group3/04.bas @@ -0,0 +1,8 @@ +SCREEN 13 + +LINE (10, 10)-(50, 50), 14 ' line + +LINE (100, 10)-(150, 50), 14, B ' box + +LINE (200, 10)-(250, 50), 14, BF ' filled box + diff --git a/tutorial/group3/05.bas b/tutorial/group3/05.bas new file mode 100755 index 0000000..3e87408 --- /dev/null +++ b/tutorial/group3/05.bas @@ -0,0 +1,6 @@ +SCREEN 13 + +FOR x = 0 TO 255 + LINE (x, 50)-(x, 100), x +NEXT x + diff --git a/tutorial/group3/06.bas b/tutorial/group3/06.bas new file mode 100755 index 0000000..5bb13d3 --- /dev/null +++ b/tutorial/group3/06.bas @@ -0,0 +1,12 @@ +SCREEN 13 + + +CIRCLE (160, 100), 80, 15 +LINE (100, 10)-(200, 180), 15 + +PRINT "press any key..." + +a$ = INPUT$(1) + +PAINT (180, 100), 15 + diff --git a/tutorial/group3/07.bas b/tutorial/group3/07.bas new file mode 100755 index 0000000..3c7ba6c --- /dev/null +++ b/tutorial/group3/07.bas @@ -0,0 +1,23 @@ +DECLARE SUB sihik (x!, y!) +SCREEN 13 + +' Press F2 to see submodules list +' Vajuta F2 at n„ha sub moodulite listi +' nazmi F2 xtobe uvidjet sub spisok sub modulei + + +sihik 100, 100 +sihik 200, 50 +sihik 180, 150 + +SUB sihik (x, y) + +CIRCLE (x, y), 10, 15 +CIRCLE (x, y), 20, 15 +CIRCLE (x, y), 30, 15 + +LINE (x, y - 50)-(x, y + 50), 15 +LINE (x - 50, y)-(x + 50, y), 15 + +END SUB + diff --git a/tutorial/group3/08.bas b/tutorial/group3/08.bas new file mode 100755 index 0000000..deff209 --- /dev/null +++ b/tutorial/group3/08.bas @@ -0,0 +1,13 @@ +SCREEN 13 + + +FOR x = 0 TO 319 + + y = SIN(x / 10) * 50 + 100 + PSET (x, y), 14 + + y = COS(x / 10) * 50 + 100 + PSET (x, y), 12 + +NEXT x + diff --git a/tutorial/group3/09.bas b/tutorial/group3/09.bas new file mode 100755 index 0000000..eaea7f8 --- /dev/null +++ b/tutorial/group3/09.bas @@ -0,0 +1,13 @@ +SCREEN 13 + +pi = 3.14 +mi = 7 ' amount of points on circular shape + +FOR a = 0 TO pi * 2 STEP pi * 2 / mi + + x = SIN(a) * 50 + 100 + y = COS(a) * 50 + 100 + PSET (x, y), 10 + +NEXT a + diff --git a/tutorial/group3/10.bas b/tutorial/group3/10.bas new file mode 100755 index 0000000..fc4f497 --- /dev/null +++ b/tutorial/group3/10.bas @@ -0,0 +1,21 @@ +SCREEN 13 + +FOR i = 0 TO 320 STEP 10 + LINE (0, i)-(319, i), 5 + LINE (i, 0)-(i, 199), 5 +NEXT i + +LINE (0, 100)-(319, 100), 10 + +PRINT "press a key..." +a$ = INPUT$(1) + +y = 100 +ys = -1 +FOR t = 0 TO 300 + PSET (t, y), 14 + ys = ys + .01 + y = y + ys + SOUND 300 - y, .1 +NEXT t + diff --git a/tutorial/group3/11.bas b/tutorial/group3/11.bas new file mode 100755 index 0000000..c4e4c5a --- /dev/null +++ b/tutorial/group3/11.bas @@ -0,0 +1,10 @@ +CLS + +a = -12.7 + +PRINT "normal: ", a +PRINT "rounded: ", INT(a) +PRINT "absolute: ", ABS(a) + +PRINT "reminder of 10 / 4 is: ", 10 MOD 4 + diff --git a/tutorial/group3/CVS/Entries b/tutorial/group3/CVS/Entries new file mode 100755 index 0000000..72a04c2 --- /dev/null +++ b/tutorial/group3/CVS/Entries @@ -0,0 +1,12 @@ +/00.bas/1.1/Thu Apr 12 14:31:50 2007// +/01.bas/1.1/Thu Apr 12 14:31:50 2007// +/02.bas/1.1/Thu Apr 12 14:31:50 2007// +/03.bas/1.1/Thu Apr 12 14:31:50 2007// +/04.bas/1.1/Thu Apr 12 14:31:50 2007// +/05.bas/1.1/Thu Apr 12 14:31:50 2007// +/06.bas/1.1/Thu Apr 12 14:31:50 2007// +/07.bas/1.1/Thu Apr 12 14:31:50 2007// +/08.bas/1.1/Thu Apr 12 14:31:50 2007// +/09.bas/1.1/Thu Apr 12 14:31:50 2007// +/10.bas/1.1/Thu Apr 12 14:31:50 2007// +/11.bas/1.1/Thu Apr 12 14:31:50 2007// diff --git a/tutorial/group3/CVS/Repository b/tutorial/group3/CVS/Repository new file mode 100755 index 0000000..d878769 --- /dev/null +++ b/tutorial/group3/CVS/Repository @@ -0,0 +1 @@ +QBasicPrograms/qbasicTutorial/group3 diff --git a/tutorial/group3/CVS/Root b/tutorial/group3/CVS/Root new file mode 100755 index 0000000..f564cc2 --- /dev/null +++ b/tutorial/group3/CVS/Root @@ -0,0 +1 @@ +:extssh:n0@svjatoslav.eu:/home/cvs/cvsroot diff --git a/tutorial/group3/CVS/Template b/tutorial/group3/CVS/Template new file mode 100755 index 0000000..e69de29 diff --git a/tutorial/index.html b/tutorial/index.html new file mode 100755 index 0000000..459b8ee --- /dev/null +++ b/tutorial/index.html @@ -0,0 +1,16 @@ + +QBasic tutorial + + + +

QBasic tutorial

+
+
+
QBasic tutorial. +Is a good for those who like to learn by example. +Package contains a lot of tiny self explainatory +examples quiding you from simplest operations like printing +to console, functions and array access to 2D and 3D graphics. +
Used those successfully as examples when teaching programming for beginners. + + \ No newline at end of file diff --git a/tutorial/qsort3.bas b/tutorial/qsort3.bas new file mode 100755 index 0000000..edc6407 --- /dev/null +++ b/tutorial/qsort3.bas @@ -0,0 +1,136 @@ +DECLARE SUB sort (x1!, x2!) +DECLARE SUB check () +DECLARE SUB di (r1!, r2!, c!) +DECLARE SUB disp () +DIM SHARED siz +siz = 15000 +DIM SHARED arr(1 TO siz) +DIM SHARED mark(1 TO siz) +DIM SHARED bck(1 TO siz) +DIM SHARED dbg +WIDTH 80, 50 + +dbg = 1 +CLS +FOR i = 1 TO 1000 +LOCATE 5, 40 +PRINT i +RANDOMIZE i +siz = 45 + +FOR a = 1 TO siz + arr(a) = INT(RND * 100) + bck(a) = arr(a) +NEXT a +11 + +sort 1, siz +disp + + +fail = 0 +FOR i2 = 1 TO siz - 1 + IF arr(i2) > arr(i2 + 1) THEN + PRINT "wrong!" + a$ = INPUT$(1) + fail = 1 + GOTO 10 + END IF +NEXT i2 +10 + +IF fail = 1 THEN + FOR i2 = 1 TO siz + arr(i2) = bck(i2) + NEXT i2 + dbg = 1 + GOTO 11 +END IF + +NEXT i + +SUB di (r1, r2, c) + +mark(r1) = c +mark(r2) = c +disp +mark(r1) = 0 +mark(r2) = 0 + + +END SUB + +SUB disp +FOR i = 1 TO siz + LOCATE i, 1 + COLOR 15, mark(i) + PRINT arr(i), " ", i +NEXT i + +IF dbg = 1 THEN a$ = INPUT$(1) +'SOUND 0, .05 +END SUB + +SUB sort (x1, x2) +min = 99999 +max = -99999 +FOR i = x1 TO x2 + IF arr(i) > max THEN max = arr(i) + IF arr(i) < min THEN min = arr(i) +NEXT i +sv = (max + min) / 2 +LOCATE 1, 50 +PRINT sv +'disp +di x1, x2, 4 +IF x1 >= x2 THEN GOTO 3 + +IF x1 + 1 = x2 THEN + IF arr(x1) > arr(x2) THEN SWAP arr(x1), arr(x2) + GOTO 3 +END IF + +xl1 = x1 +xl2 = x2 + + +1 +di xl1, xl2, 1 +IF arr(xl1) > sv THEN +2 + IF arr(xl2) < sv THEN + SWAP arr(xl1), arr(xl2) + xl1 = xl1 + 1 + xl2 = xl2 - 1 + ELSE + xl2 = xl2 - 1 + di xl1, xl2, 1 + IF xl1 = xl2 THEN GOTO 4 + GOTO 2 + END IF +ELSE + xl1 = xl1 + 1 +END IF + +IF xl1 < xl2 THEN GOTO 1 +'IF arr(xl1) < sv THEN xl1 = xl1 + 1 +'IF arr(xl1) < sv THEN xl1 = xl1 + 1 +4 +mark(xl1) = 14 +disp +mark(xl1) = 0 + +IF xl1 = x2 THEN + sort x1, xl1 - 1 +ELSE + IF arr(xl1) > sv THEN + sort x1, xl1 - 1 + sort xl1, x2 + ELSE + sort x1, xl1 + sort xl1 + 1, x2 + END IF +END IF +3 +END SUB + diff --git a/unsorted/contrast.bas b/unsorted/contrast.bas new file mode 100755 index 0000000..971e2ed --- /dev/null +++ b/unsorted/contrast.bas @@ -0,0 +1,7 @@ +SCREEN 13 + +FOR a = 16 TO 31 STEP .06 +x = x + 1 +LINE (x, 0)-(x, 150), a +NEXT a + diff --git a/unsorted/font.bas b/unsorted/font.bas new file mode 100755 index 0000000..0c005e5 --- /dev/null +++ b/unsorted/font.bas @@ -0,0 +1,61 @@ +' Svjatoslav Agejenko +' year: 2001 +' alien text + +DEFINT A-Z +DECLARE SUB prch (x, y, n, s) +DIM SHARED co(1 TO 4) +co(1) = 7 +co(2) = 7 +co(3) = 0 +co(4) = 0 + + +SCREEN 12 +RANDOMIZE TIMER + +PAINT (1, 1), 0 + +siz = 4 + +tmp = 0 +FOR y = 1 TO 480 - siz - 2 STEP siz + (siz \ 2) +tmp1 = 0 +FOR x = 1 TO 640 - siz - 2 STEP siz + (siz \ 2) +prch x, y, RND * 16, siz +tmp1 = tmp1 + 1 +IF tmp1 > 20 THEN tmp1 = 0: x = x + (siz) +NEXT x +tmp = tmp + 1 +IF tmp > 5 THEN tmp = 0: y = y + (siz) +NEXT y + +SUB prch (x, y, n, s) +sp = s \ 2 + +c = co(RND * 3 + 1) +LINE (x, y)-(x + s, y), c +LINE (x, y)-(x + sp, y + sp), c +LINE (x + s, y)-(x + sp, y + sp), c +PAINT (x + 2, y + 1), c + +c = co(RND * 3 + 1) +LINE (x, y)-(x, y + s), c +LINE (x, y)-(x + sp, y + sp), c +LINE (x, y + s)-(x + sp, y + sp), c +PAINT (x + 1, y + 2), c + +c = co(RND * 3 + 1) +LINE (x + s, y)-(x + s, y + s), c +LINE (x + s, y)-(x + sp, y + sp), c +LINE (x + s, y + s)-(x + sp, y + sp), c +PAINT (x + s - 1, y + 2), c + +c = co(RND * 3 + 1) +LINE (x, y + s)-(x + s, y + s), c +LINE (x, y + s)-(x + sp, y + sp), c +LINE (x + s, y + s)-(x + sp, y + sp), c +PAINT (x + 2, y + s - 1), c + +END SUB + diff --git a/unsorted/key.bas b/unsorted/key.bas new file mode 100755 index 0000000..e55f01b --- /dev/null +++ b/unsorted/key.bas @@ -0,0 +1,10 @@ +1 +a$ = INKEY$ +IF a$ = "" THEN GOTO 1 +PRINT a$ +PRINT ASC(LEFT$(a$, 1)) +PRINT ASC(RIGHT$(a$, 1)) + + +GOTO 1 + diff --git a/unsorted/lightpe2.bas b/unsorted/lightpe2.bas new file mode 100755 index 0000000..db871bf --- /dev/null +++ b/unsorted/lightpe2.bas @@ -0,0 +1,97 @@ +' Svjatoslav Agejenko 2003.03 +' light pen test + +DECLARE SUB miniscan (x1%, y1%, xn%, yn%) +DECLARE SUB getxy (x%, y%) +DECLARE SUB scan (x%, y%) +DECLARE SUB start () +DEFINT A-Z +DIM SHARED prt, prt2 +DIM SHARED wai, wai2 +DIM SHARED mins, minl +wai = 4000 +wai2 = 5000 +mins = 20 +minl = 8 + +DIM SHARED px(1 TO 500) +DIM SHARED py(1 TO 500) +DIM SHARED mitup + +mitup = 1 +start + +x = 160 +y = 100 +px(1) = x +py(1) = y + +1 +getxy x, y +REM CIRCLE (x, y), 30, 14 +IF (px(mitup) <> x) OR py(mitup) <> y THEN mitup = mitup + 1 +px(mitup) = x +py(mitup) = y + +FOR a = 1 TO mitup - 1 +LINE (px(a), py(a))-(px(a + 1), py(a + 1)), 15 +NEXT a +GOTO 1 + +SUB getxy (x, y) + +miniscan x + (mins / 4), y + (mins / 4), xn, yn +IF xn <> -1 THEN x = xn +IF yn <> -1 THEN y = yn + +LOCATE 1, 1 +PRINT SPACE$(40) +LOCATE 1, 1 +PRINT x, y +END SUB + +SUB miniscan (x1, y1, xn, yn) +cd = INP(prt2) + +xn = -1 +yn = -1 + +LINE (x1 - mins, y1 - mins)-(x1 + mins, y1 + mins), 0, BF + +FOR x = x1 - mins TO x1 + mins +LINE (x, y1 - mins)-(x, y1 + mins), 15 +LINE (x - minl, y1 - mins)-(x - minl, y1 + mins), 0 +FOR a = 0 TO wai2 +NEXT a +c = INP(prt2) +IF c <> cd THEN xn = x: GOTO 4 +NEXT x +4 +LINE (x1 - mins, y1 - mins)-(x1 + mins, y1 + mins), 0, BF + +FOR y = y1 - mins TO y1 + mins +LINE (x1 - mins, y)-(x1 + mins, y), 15 +LINE (x1 - mins, y - minl)-(x1 + mins, y - minl), 0 +FOR a = 0 TO wai2 +NEXT a +c = INP(prt2) +IF c <> cd THEN yn = y: GOTO 5 +NEXT y +5 +LINE (x1 - mins, y1 - mins)-(x1 + mins, y1 + mins), 0, BF +IF xn < -1 THEN xn = -1 +IF yn < -1 THEN yn = -1 + +END SUB + +SUB start +CLS +SCREEN 13 + +prt = &H378 +prt2 = &H379 + +OUT prt, 255 + +END SUB + diff --git a/unsorted/lightpen.bas b/unsorted/lightpen.bas new file mode 100755 index 0000000..8575f9f --- /dev/null +++ b/unsorted/lightpen.bas @@ -0,0 +1,23 @@ +' Svjatoslav Agejenko 2003.03 +' light pen test + + +DEFINT A-Z +CLS +SCREEN 13 + +prt = &H378 +prt2 = &H379 + +OUT prt, 255 + + +1 +a = INP(prt2) +IF a = 135 THEN + LINE (180, 0)-(200, 199), 1, BF +ELSE + LINE (180, 0)-(200, 199), 15, BF +END IF +GOTO 1 + diff --git a/unsorted/matem.bas b/unsorted/matem.bas new file mode 100755 index 0000000..e41efab --- /dev/null +++ b/unsorted/matem.bas @@ -0,0 +1,159 @@ +' Autor: Svjatoslav Agejenko +' aasta ~2000 + +' Matemaatika korrutus tabeli pohjal +' teadmiste testimis programm +' +' Vajuta F5 alustamiseks + +DECLARE SUB vastus () +DEFINT A-Y +DECLARE SUB tere () +DIM SHARED nimi$ +DIM SHARED kus + +tere +vastus + +DEFINT Z +SUB tere + +CLS +SCREEN 13 +LOCATE 2, 1 +PRINT " Matemaatika “petamis programm" +FOR y = 3 TO 20 +FOR x = 0 TO 320 + +IF POINT(x, y) > 0 THEN +c = y + 56 +ELSE + +c = 31 - y / 2 +END IF +PSET (x, y), c +NEXT x +NEXT y + +LOCATE 5, 1 +COLOR 7 +INPUT "Sisesta oma nimi ", nimi$ +LOCATE 5, 1 +COLOR 8 +PRINT "Sisesta oma nimi " + nimi$ + +LOCATE 6, 1 +COLOR 7 +PRINT "Tere " + nimi$ + "." + +8 +LOCATE 7, 1 +COLOR 8 +PRINT SPACE$(35) +COLOR 7 +LOCATE 7, 1 +INPUT "Mitu lesannet sa soovid ", kus +LOCATE 7, 1 +COLOR 8 +PRINT SPACE$(35) +LOCATE 7, 1 +COLOR 8 +PRINT "Mitu lesannet sa soovid " + STR$(kus) + +IF kus < 5 THEN +PRINT "Nii kergelt ei p„„se !" +GOTO 8 +END IF + +IF kus > 30 THEN +PRINT "Liiga palju !" +GOTO 8 +END IF + +PRINT "Nd ma ksin sinult m“ned matemaatika" +PRINT "alased ksimused.Vajuta suvaline klahv," +PRINT "kui oled valmis..." + +FOR a = 200 TO 230 + OUT &H3C8, a + OUT &H3C9, a - 200 + OUT &H3C9, 0 + OUT &H3C9, 0 +NEXT + +DIM varv(1 TO 32) + +c = 4 +d = 1 + +2 +FOR a = 0 TO 31 +LINE (a * 10, 170)-(a * 10 + 10, 190), 200 + varv(a + 1), BF +varv(a + 1) = varv(a + 1) - 1 +IF varv(a + 1) < 0 THEN varv(a + 1) = 0 +NEXT a + +c = c + d +IF c > 30 OR c < 3 THEN d = -d +varv(c) = 30 +SOUND 0, 1 +IF INKEY$ <> "" THEN GOTO 3 +GOTO 2 +3 +CLS +END SUB + +DEFSNG Z +SUB vastus +RANDOMIZE TIMER + +mitmes = 0 +vale = 0 +oige = 0 +PRINT "Palju on:" +4 +mitmes = mitmes + 1 +IF mitmes > kus THEN GOTO 6 +ar1 = RND * 9 +ar2 = RND * 9 +a$ = STR$(ar1) + " X" + STR$(ar2) +PRINT " " +PRINT a$ +5 +INPUT vas$ +IF LEFT$(vas$, 6) = "ei tea" THEN PRINT "Proovi ikka !": GOTO 5 +IF LEFT$(vas$, 6) = "jama" THEN PRINT "Usu mind,ei ole !": GOTO 5 + +IF vas$ = "0" THEN vas = 0: GOTO 10 +vas = VAL(vas$) +IF vas = 0 THEN vas = -1 +10 + +IF ar1 * ar2 = vas THEN +oige = oige + 1 +PRINT "“ige !!" +ELSE +PRINT "vale" +PRINT "“ige on ", ar1 * ar2 +vale = vale + 1 +END IF + +GOTO 4 + +6 +PRINT "-------------------------" +COLOR 2 +PRINT "valesid on :", vale + +z = oige / kus * 100 + +hinne = 1 + +IF z >= 25 THEN hinne = 2 +IF z >= 50 THEN hinne = 3 +IF z >= 70 THEN hinne = 4 +IF z >= 90 THEN hinne = 5 +COLOR 14 +PRINT "Sinu hinne on "; hinne +END SUB + diff --git a/unsorted/modes.bas b/unsorted/modes.bas new file mode 100755 index 0000000..70a2c58 --- /dev/null +++ b/unsorted/modes.bas @@ -0,0 +1,35 @@ +' Determine avaiable video modes +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + +' program to determine avaiable video modes +' it assumes that 1 is always avaiable + +DIM SHARED mo(1 TO 100) +ON ERROR GOTO 1 +b = 1 +a = 0 +2 +SCREEN a +'PRINT "mode", a +'a$ = INPUT$(1) +mo(b) = a +b = b + 1 +a = a + 1 +GOTO 2 + + +1 +a = a + 1 +IF a > 1000 THEN +SCREEN 1 +PRINT "Avaiable video modes on this machine is:" +FOR a = 1 TO b - 1 +PRINT mo(a) +NEXT a +END +END IF +RESUME + diff --git a/unsorted/pal.bas b/unsorted/pal.bas new file mode 100755 index 0000000..68b6386 --- /dev/null +++ b/unsorted/pal.bas @@ -0,0 +1,117 @@ +' Universal palette & mixing +' made by Svjatoslav Agejenko +' in 2001 +' H-Page: svjatoslav.eu +' E-Mail: svjatoslavagejenko@gmail.com + + + +DECLARE SUB getcol (a%, b%, c%, d%) +DEFINT A-Y +SCREEN 13 +CLS + +c = 0 +FOR r = 0 TO 5 +FOR g = 0 TO 5 +FOR b = 0 TO 5 +OUT &H3C8, c +c = c + 1 +OUT &H3C9, r * 12 +OUT &H3C9, g * 12 +OUT &H3C9, b * 12 +NEXT b +NEXT g +NEXT r + +'GOTO 1 + +FOR c = 0 TO 5 +FOR b = 0 TO 5 +FOR a = 0 TO 5 +LINE (a * 5 + c * 30, b * 5)-(a * 5 + 4 + c * 30, b * 5 + 4), c * 36 + b * 6 + a, BF +NEXT a +NEXT b +NEXT c + + +a$ = INPUT$(1) + +ex = -100 +ey = 0 +FOR z = 0 TO 75 STEP 15 +x1 = 50 - (z / 2) +y1 = 50 - (z * .866025) +x2 = 50 + z +y2 = 50 +x3 = x1 +y3 = 100 - y1 + +ex = ex + 100 +IF z = 45 THEN ex = ex - 300: ey = ey + 101 + +FOR x = 0 TO 100 +FOR y = 0 TO 100 +r = 7 - (SQR((x1 - x) ^ 2 + (y1 - y) ^ 2) / 15 + 1) +g = 7 - (SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 15 + 1) +b = 7 - (SQR((x3 - x) ^ 2 + (y3 - y) ^ 2) / 15 + 1) +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 5 THEN r = 5 +IF g > 5 THEN g = 5 +IF b > 5 THEN b = 5 +c = r * 36 + g * 6 + b +PSET (x + ex, y + ey), c +NEXT y +NEXT x +NEXT z + +a$ = INPUT$(1) +1 +ex = -100 +ey = 0 +FOR z = 0 TO 75 STEP 15 +x1 = 50 - (z / 2.5) +y1 = 50 - (z * .566025) +x2 = 50 + z / 1.5 +y2 = 50 +x3 = x1 +y3 = 100 - y1 + +ex = ex + 100 +IF z = 45 THEN ex = ex - 300: ey = ey + 101 + +r1 = 0 +g1 = 0 +b1 = 0 +FOR x = 0 TO 100 +FOR y = 0 TO 100 +r = 30 - (SQR((x1 - x) ^ 2 + (y1 - y) ^ 2) / 2 + 1) +g = 30 - (SQR((x2 - x) ^ 2 + (y2 - y) ^ 2) / 2 + 1) +b = 30 - (SQR((x3 - x) ^ 2 + (y3 - y) ^ 2) / 2 + 1) +r1 = r1 + r +g1 = g1 + g +b1 = b1 + b +r = r1 / 5 +g = g1 / 5 +b = b1 / 5 +r1 = r1 - (r * 5) +g1 = g1 - (g * 5) +b1 = b1 - (b * 5) + +IF r < 0 THEN r = 0 +IF g < 0 THEN g = 0 +IF b < 0 THEN b = 0 +IF r > 5 THEN r = 5 +IF g > 5 THEN g = 5 +IF b > 5 THEN b = 5 +c = r * 36 + g * 6 + b +PSET (x + ex, y + ey), c +NEXT y +NEXT x +NEXT z + +a$ = INPUT$(1) +SYSTEM + diff --git a/unsorted/passw.bas b/unsorted/passw.bas new file mode 100755 index 0000000..2ce1a96 --- /dev/null +++ b/unsorted/passw.bas @@ -0,0 +1,172 @@ +' Svjatoslav Agejenko svjatoslavagejenko@gmail.com year:2002 +' See or modify "passwd.dat" for password. +' Is useful when compiled into EXE, and put into AUTOEXEC.BAT + +DECLARE SUB check (a$) +DECLARE SUB start () +DECLARE SUB mkv (s%, C%) +DECLARE SUB box (x1%, y1%, x2%, y2%) + +DIM SHARED cha +DIM SHARED pwd$ + +start + +x = 25 +x2 = 10 +x3 = 0 +B$ = "" +1 +x = x + xs +IF x > 0 THEN xs = xs - .5 +IF x < 0 THEN xs = xs + .5 +xs = xs - (xs / 8) +IF x2 > 100 THEN x2 = 10 +LINE (x2, 10)-(x2, 60), 0 +PSET (x2, x + 35), 10 +IF x2 < 99 THEN LINE (x2 + 1, 10)-(x2 + 1, 60), 3 +x2 = x2 + 1 +x3 = x3 + 1 +IF x3 > 40 THEN x3 = 0: xs = xs - 5: SOUND 1000, 1 + +SOUND 0, .5 + +a$ = INKEY$ +IF a$ = CHR$(13) THEN +check B$ +B$ = "" +GOTO 2 +END IF +IF a$ <> "" THEN +IF a$ = CHR$(8) THEN +IF LEN(B$) > 0 THEN B$ = LEFT$(B$, LEN(B$) - 1): GOTO 2 +GOTO 2 +END IF +B$ = B$ + a$ +IF LEN(B$) > 10 THEN B$ = LEFT$(B$, 10) +2 +FOR a = 1 TO 10 +IF a <= LEN(B$) THEN C = 5 ELSE C = 1 +CIRCLE (a * 15 + 20, 150), 6, C +PAINT (a * 15 + 20, 150), C +NEXT a +END IF +GOTO 1 + +DEFINT A-Z +SUB box (x1, y1, x2, y2) +LINE (x1 + 1, y1 + 1)-(x2 - 1, y2 - 1), 0, BF +LINE (x1, y1)-(x2, y2), 10, B +LINE (x1, y1)-(x2, y1 - 9), 14, BF +LINE (x1, y1)-(x2, y1 - 9), 10, B + +LINE (x2 - 2, y1 - 2)-(x2 - 7, y1 - 7), 7, BF +LINE (x2 - 9, y1 - 2)-(x2 - 14, y1 - 7), 7, BF + +LINE (x2 - 2, y1 - 2)-(x2 - 7, y1 - 7), 0 +LINE (x2 - 2, y1 - 7)-(x2 - 7, y1 - 2), 0 + +LINE (x2 - 10, y1 - 3)-(x2 - 13, y1 - 3), 0 +END SUB + +DEFSNG A-Z +SUB check (a$) +cha = cha - 1 + +IF a$ = pwd$ THEN CLS : SCREEN 2: SYSTEM + +DIM buf(1 TO 3000) + +GET (79, 80)-(241, 141), buf(1) + +box 80, 90, 240, 140 +LOCATE 14, 14 +COLOR 12 +PRINT "Wrong passworD" +COLOR 5 + +LOCATE 16, 13 +PRINT STR$(cha) + " chanses left" + +FOR a = 1 TO 30 +SOUND 0, 1 +NEXT a + +IF cha = 0 THEN +DIM buf2(1000) +GET (79, 138)-(241, 140), buf2 +FOR a = 1 TO 40 +PUT (79, 138 + a), buf2, PSET +SOUND 0, .5 +NEXT a + +LOCATE 19, 14 +COLOR 12 +PRINT "SYSTEM HALTED" +LOCATE 21, 14 +PRINT "SUCESSFULLY!!" +3 +GOTO 3 +END IF + + +PUT (79, 80), buf(1), PSET + + +END SUB + +DEFINT A-Z +SUB mkv (s, C) +FOR x = 160 TO 319 STEP s +LINE (x, 0)-(x, 199), C +LINE (320 - x, 0)-(320 - x, 199), C +NEXT x + +FOR y = 100 TO 199 STEP s +LINE (0, y)-(319, y), C +LINE (0, 200 - y)-(319, 200 - y), C +NEXT y + +END SUB + +DEFSNG A-Z +SUB start + +OPEN "passw.dat" FOR INPUT AS #1 +LINE INPUT #1, pwd$ +CLOSE #1 + +SCREEN 13 + +cha = 3 + +s = 2 +FOR C = 16 TO 31 +s = s * 1.4 +mkv INT(s), INT(C) +NEXT C +mkv INT(s), 0 + + +box 70, 20, 270, 90 + +COLOR 5 +LOCATE 8, 10 +PRINT " stack dump:" +LOCATE 9, 10 +PRINT "010010010010010010010100" + +LOCATE 10, 10 +PRINT "Running rocket ground" +LOCATE 11, 10 +PRINT "control system..." + +box 9, 9, 101, 61 + +box 20, 130, 300, 190 + +LOCATE 18, 5 +PRINT "ENTER PASSWORD:" + +END SUB + diff --git a/unsorted/passw.dat b/unsorted/passw.dat new file mode 100755 index 0000000..6ea1900 --- /dev/null +++ b/unsorted/passw.dat @@ -0,0 +1 @@ +jerry \ No newline at end of file diff --git a/unsorted/tim.dat b/unsorted/tim.dat new file mode 100755 index 0000000..3403f49 --- /dev/null +++ b/unsorted/tim.dat @@ -0,0 +1,100 @@ + 8 30 0 3 + 1 1 1 1 1 0 0 + + +sisse.com + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 8 40 0 3 + 1 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 1 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 9 21 0 2 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 0 0 0 0 + 0 0 0 0 0 0 0 + + + + 9 1 0 3 + 1 1 0 1 1 0 1 + + + diff --git a/unsorted/timer.bas b/unsorted/timer.bas new file mode 100755 index 0000000..78399ef --- /dev/null +++ b/unsorted/timer.bas @@ -0,0 +1,852 @@ +DECLARE SUB bar () +DECLARE SUB help (a!) +DECLARE SUB alarm (a!) +DECLARE SUB gtw (y!, m!, t!, r!) +DECLARE SUB daysm (y!, m!, d!) +DECLARE SUB daysy (y!, d!) +DECLARE SUB chdat () +DECLARE SUB entcla () +DECLARE SUB entcl () +DECLARE SUB clrc (a!) +DECLARE SUB scroll () +DECLARE SUB ps (x!, y!, c!, s$) +DECLARE SUB vbox (x1!, y1!, x2!, y2!, c!) +DECLARE SUB quit () +DECLARE SUB start () +DECLARE SUB cns (a!, s$) +DECLARE SUB getkey (a$) +DECLARE SUB chkey (a$) +DECLARE SUB entquit () +DECLARE SUB ented () +DECLARE SUB ed (p!) +DECLARE SUB inpu (x!, y!, xl!, c!, a$) +DECLARE SUB box (x!, y!, xl!, yl!, a$) +DECLARE SUB sh () + +DIM SHARED celh(1 TO 20) +DIM SHARED celm(1 TO 20) +DIM SHARED cels(1 TO 20) + +DIM SHARED celm1$(1 TO 20) +DIM SHARED celm2$(1 TO 20) +DIM SHARED celc$(1 TO 20) + +DIM SHARED celt(1 TO 20)' 0 - empty 1 - onece 2 - every day 3 - specified days +DIM SHARED celw(1 TO 20, 1 TO 7) +DIM SHARED celx(1 TO 20) + +DIM SHARED virt(1 TO 80, 1 TO 25) +DIM SHARED tmr +DIM SHARED slp(1 TO 20) +DIM SHARED alq(1 TO 20) +DIM SHARED alarmo + +DIM SHARED alqm +DIM SHARED br$ + +start + +sh +1 +br$ = "Press F1 for help" +getkey a$ + +IF a$ = "q" THEN entquit +IF a$ = "e" THEN ented +IF a$ = "c" THEN entcl +IF a$ = "d" THEN entcla +IF a$ = CHR$(0) + CHR$(59) THEN help 1: getkey a$: sh +GOTO 1 + +SUB alarm (a) +alq(a) = 1 +alarmo = 1 +'DIM SHARED celm1$(1 TO 20) +'DIM SHARED celm2$(1 TO 20) +'DIM SHARED celc$(1 TO 20) + +IF celc$(a) <> "" THEN +SHELL celc$(a) +END IF + +IF celm1$(a) <> "" OR celm2$(a) <> "" THEN +OPEN "note.txt" FOR OUTPUT AS #1 +PRINT #1, celm1$(a) +PRINT #1, celm2$(a) +CLOSE #1 +SHELL "notepad note.txt" +END IF + + +FOR b = 100 TO 1000 STEP 20 +SOUND b, .1 +NEXT b +END SUB + +SUB bar +COLOR 0, 3 +LOCATE 22, 72 +PRINT CHR$(179) + TIME$ + +br$ = br$ + SPACE$(80) +br$ = LEFT$(br$, 70) +LOCATE 22, 1 +PRINT " " + br$ + +COLOR 7, 0 +END SUB + +SUB box (x, y, xl, yl, e$) +vbox x, y, xl, yl, 1 +' 201 205 187 +COLOR 11 + +a$ = "" +d$ = "" +FOR a = 1 TO xl - 2 +a$ = a$ + CHR$(205) +d$ = d$ + " " +NEXT a +b$ = CHR$(201) + a$ + CHR$(187) +c$ = CHR$(200) + a$ + CHR$(188) +d$ = CHR$(186) + d$ + CHR$(186) + +LOCATE y, x +PRINT b$ +LOCATE y + yl - 1, x +PRINT c$ + +FOR a = 1 TO yl - 2 +LOCATE y + a, x +PRINT d$ +NEXT a + +xt = INT(x + (xl / 2) - (LEN(e$) / 2) - 2) +LOCATE y, xt +PRINT "[ " +xt = xt + 2 + +COLOR 10 +LOCATE y, xt +PRINT e$ + +xt = xt + LEN(e$) + +COLOR 11 +LOCATE y, xt +PRINT " ]" + +COLOR 7, 0 +END SUB + +SUB chdat +a$ = DATE$ +qwy = VAL(RIGHT$(a$, 4)) +qwm = VAL(LEFT$(a$, 2)) +qwd = VAL(RIGHT$(LEFT$(a$, 5), 2)) +gtw qwy, qwm, qwd, w + +a$ = TIME$ +qes = VAL(RIGHT$(a$, 4)) +qeh = VAL(LEFT$(a$, 2)) +qem = VAL(RIGHT$(LEFT$(a$, 5), 2)) + +IF alqm <> qem THEN +alqm = qem + +FOR b = 1 TO 20 +alq(b) = 0 +NEXT b +END IF + + +'DIM SHARED celh(1 TO 20) +'DIM SHARED celm(1 TO 20) +'DIM SHARED cels(1 TO 20) + + +FOR a = 1 TO 20 +IF celt(a) = 0 THEN GOTO 19 +IF celt(a) = 3 THEN IF celw(a, w) = 0 THEN GOTO 19 +IF alq(a) = 1 THEN GOTO 19 +IF celh(a) <> qeh THEN GOTO 19 +IF celm(a) <> qem THEN GOTO 19 +alarm a +IF celt(a) = 1 THEN clrc a +19 +NEXT a +END SUB + +SUB chkey (a$) +a$ = INKEY$ + +IF a$ = "" THEN +IF tmr > 4 THEN scroll: tmr = 1 +SOUND 0, 1 +IF alarmo = 1 THEN SOUND 2000, 1 +tmr = tmr + 1 +chdat +bar +ELSE +IF alarmo = 1 THEN alarmo = 0: a$ = "" +END IF +END SUB + +SUB clrc (a) + +celh(a) = 0 +celm(a) = 0 +cels(a) = 0 +celt(a) = 0 + +celm1$(a) = "" +celm2$(a) = "" +celc$(a) = "" + +FOR b = 1 TO 7 +celw(a, b) = 0 +NEXT b + +END SUB + +SUB cns (a, s$) +s$ = STR$(a) +IF LEFT$(s$, 1) = " " THEN s$ = RIGHT$(s$, LEN(s$) - 1) +IF LEN(s$) = 1 THEN s$ = "0" + s$ +END SUB + +SUB daysm (y, m, d) +SELECT CASE m +CASE 1 +d = 31 + +CASE 2 +IF y / 4 = y \ 4 THEN d = 29 ELSE d = 28 + +CASE 3 +d = 31 + +CASE 4 +d = 30 + +CASE 5 +d = 31 + +CASE 6 +d = 30 + +CASE 7 +d = 31 + +CASE 8 +d = 31 + +CASE 9 +d = 30 + +CASE 10 +d = 31 + +CASE 11 +d = 30 + +CASE 12 +d = 31 +END SELECT + +END SUB + +SUB daysy (y, d) +d = 365 +IF y / 4 = y \ 4 THEN d = 366 +END SUB + +SUB ed (p) +br$ = "Press F1 for help, ESC to close window, CTRL + ENTER accept" +cns celh(p), s$ +tth$ = s$ +cns celm(p), s$ +ttm$ = s$ +cns cels(p), s$ +tts$ = s$ + +ms1$ = celm1$(p) +ms2$ = celm2$(p) +cm1$ = celc$(p) + +DIM wks(1 TO 7) +FOR a = 1 TO 7 +wks(a) = celw(p, a) +NEXT a +typ = celt(p) +IF typ = 0 THEN typ = 1 + +box 5, 5, 70, 11, "Edit entrie" +LOCATE 7, 7 +PRINT "Enter time (HH:MM:SS)" +LOCATE 8, 23 +PRINT ":" +LOCATE 8, 26 +PRINT ":" +inpu 21, 8, 2, 1, tth$ +inpu 24, 8, 2, 1, ttm$ +inpu 27, 8, 2, 1, tts$ + +LOCATE 10, 7 +PRINT "Enter message" +inpu 21, 10, 52, 1, ms1$ +inpu 21, 11, 52, 1, ms2$ + +LOCATE 13, 7 +PRINT "Enter command" +inpu 21, 13, 52, 1, cm1$ + +x = 1 +y = 1 +11 + +IF typ = 1 THEN COLOR 14, 4 ELSE COLOR 14, 0 +LOCATE 7, 32 +PRINT "O"; +COLOR 7 +PRINT "nce" + +IF typ = 2 THEN COLOR 14, 4 ELSE COLOR 14, 0 +LOCATE 7, 38 +PRINT "D"; +COLOR 7 +PRINT "aily" + +IF typ = 3 THEN COLOR 14, 4 ELSE COLOR 14, 0 +LOCATE 7, 45 +PRINT "S"; +COLOR 7 +PRINT "pecified weekdays" + +FOR a = 1 TO 7 +IF wks(a) = 1 THEN COLOR 10, 0 ELSE COLOR 8, 0 +LOCATE 8, 44 + (a * 2) +PRINT a +NEXT a + + +c = 0 + +IF y = 1 THEN +IF x = 1 THEN inpu 21, 8, 2, c, tth$ +IF x = 2 THEN inpu 24, 8, 2, c, ttm$ +IF x = 3 THEN inpu 27, 8, 2, c, tts$ +END IF + +IF y = 2 THEN inpu 21, 10, 52, c, ms1$ +IF y = 3 THEN inpu 21, 11, 52, c, ms2$ +IF y = 4 THEN inpu 21, 13, 52, c, cm1$ + +IF c = 100 THEN GOTO 13 +IF c = 102 THEN x = x + 1 +IF c = 103 THEN x = x - 1 +IF c = 104 THEN y = y - 1 +IF c = 105 THEN y = y + 1 +IF c = 106 THEN GOTO 12 + +tg = 0 +IF c = 107 THEN tg = 1 +IF c = 108 THEN tg = 2 +IF c = 109 THEN tg = 3 +IF c = 110 THEN tg = 4 +IF c = 111 THEN tg = 5 +IF c = 112 THEN tg = 6 +IF c = 113 THEN tg = 7 + +IF c = 114 THEN typ = 1 +IF c = 115 THEN typ = 2 +IF c = 116 THEN typ = 3 + +IF c = 117 THEN help 2 + +IF tg > 0 THEN +IF wks(tg) = 0 THEN wks(tg) = 1 ELSE wks(tg) = 0 +END IF + +IF c = 101 THEN +IF y = 1 THEN x = x + 1 ELSE y = y + 1 +END IF + + +IF y > 4 THEN y = 4 +IF y < 1 THEN y = 1 +IF x > 3 THEN x = 1: y = y + 1 +IF x < 1 THEN x = 1 + + +GOTO 11 +12 +celh(p) = VAL(tth$) +celm(p) = VAL(ttm$) +cels(p) = VAL(tts$) + +celm1$(p) = ms1$ +celm2$(p) = ms2$ +celc$(p) = cm1$ +celt(p) = typ + + +FOR a = 1 TO 7 +celw(p, a) = wks(a) +NEXT a +13 + +END SUB + +SUB entcl +a$ = "01" +box 20, 10, 40, 5, "Clear entrie" + +LOCATE 12, 23 +PRINT "Which cell do you need to clear?" + +15 +inpu 55, 12, 2, c, a$ +IF c = 100 THEN GOTO 16 +IF c = 101 THEN +clrc VAL(a$) +GOTO 16 +END IF +GOTO 15 + +16 +sh +END SUB + +SUB entcla + +box 15, 10, 50, 6, "Clearing" + +18 +LOCATE 12, 21 +PRINT "Are you sure you want to clear all cells?" +LOCATE 13, 36 +PRINT "[ Y / N ]" + + +getkey a$ +IF a$ = "y" OR a$ = "Y" THEN +FOR a = 1 TO 20 +clrc a +NEXT a +GOTO 17 +END IF +IF a$ = "n" OR a$ = "N" THEN GOTO 17 +box 15, 10, 50, 8, "Clearing" +LOCATE 15, 30 +COLOR 28 +PRINT "Use keys 'Y' or 'N'" +COLOR 7 +GOTO 18 + +17 +sh + + +END SUB + +SUB ented +br$ = "Enter cell number in range of 1 to 20" +a$ = "01" +box 20, 10, 40, 5, "Edit entrie" + +9 +LOCATE 12, 23 +PRINT "Which cell do you need to edit?" +'SUB inpu (x, y, xl, c, a$) + +6 +c = 0 +inpu 55, 12, 2, c, a$ +IF c = 100 THEN GOTO 7 +IF c = 101 THEN +b = VAL(a$) + +IF b = 0 THEN +IF a$ = " 0" OR a$ = "0 " OR a$ = "00" OR a$ = "-0" THEN GOTO 10 +box 20, 10, 40, 9, "Edit entrie" +COLOR 12, 0 +LOCATE 14, 23 +PRINT " Letters aren't allowed" +LOCATE 15, 23 +PRINT " enter number, or press ESC " +COLOR 7 +GOTO 9 +END IF + +IF b < 1 OR b > 20 THEN +10 +box 20, 10, 40, 9, "Edit entrie" +COLOR 12, 0 +LOCATE 14, 23 +PRINT " The entered number must be in" +LOCATE 15, 23 +PRINT " the range between 1 and 20" +LOCATE 16, 23 +PRINT "enter correct number, or press ESC" +COLOR 7 +GOTO 9 +END IF + +IF (b > 0) AND (b < 21) THEN sh: ed b: GOTO 7 + +END IF +GOTO 6 +7 + +sh +END SUB + +SUB entquit + +box 15, 10, 50, 6, "Quitting" + +5 +LOCATE 12, 21 +PRINT "Are you really sure you want to quit?" +LOCATE 13, 36 +PRINT "[ Y / N ]" + + +getkey a$ +IF a$ = "y" OR a$ = "Y" THEN quit +IF a$ = "n" OR a$ = "N" THEN GOTO 4 +box 15, 10, 50, 8, "Quitting" +LOCATE 15, 30 +COLOR 28 +PRINT "Use keys 'Y' or 'N'" +COLOR 7 +GOTO 5 + +4 +sh + +END SUB + +SUB getkey (a$) +3 +chkey a$ +IF a$ = "" THEN GOTO 3 + +END SUB + +SUB gtw (y, m, t, r) +d = 0 +FOR a = 1500 TO y - 1 +daysy a, b +d = d + b +NEXT a + +FOR a = 1 TO m - 1 +daysm y, a, b +d = d + b +NEXT a + +d = d + t + 2 +r = (d MOD 7) + 1 + +END SUB + +SUB help (a) +SELECT CASE a +CASE 1 +box 20, 3, 41, 17, "Help" + +LOCATE 5, 24 +PRINT "q - quit program" +LOCATE 6, 24 +PRINT "c - clear cell" +LOCATE 7, 24 +PRINT "d - clear all cells" +LOCATE 8, 24 +PRINT "e - edit cell" + +COLOR 14 +LOCATE 10, 24 +PRINT "This program allows you to" +LOCATE 11, 24 +PRINT "shedle messages and commands" +LOCATE 12, 24 +PRINT "to specified time: once, daily" +LOCATE 13, 24 +PRINT "and specified weekdays." + +LOCATE 15, 24 +PRINT " This program is property of" +LOCATE 16, 24 +PRINT "Vova German & Svjatoslav Agejenko" +LOCATE 17, 24 +PRINT " All rights reserved." +br$ = "Press any key to close this window" + +CASE 2 +box 3, 16, 76, 5, "Help: allowed keys" +LOCATE 17, 5 +PRINT "CTRL + F1..F7 - toggle weekdays CTRL + O/D/S - toggle modes" +LOCATE 18, 5 +PRINT "Arrow keys - to move around CTRL + ENTER - Accept" +LOCATE 19, 5 +PRINT "ESC - close window" +br$ = "You can continue editing ..." + + +END SELECT + + + +END SUB + +SUB inpu (x, y, xl, c, a$) + +x1 = 1 + +2 +a$ = a$ + SPACE$(100) +a$ = LEFT$(a$, xl) + +COLOR 11, 1 +LOCATE y, x +PRINT a$ + +IF c = 1 THEN GOTO 8 +COLOR 30, 2 +LOCATE y, x + x1 - 1 +PRINT RIGHT$(LEFT$(a$, x1), 1) + +getkey b$ + +IF b$ = CHR$(27) THEN c = 100: GOTO 8 +IF b$ = CHR$(13) THEN c = 101: GOTO 8 + +IF (ASC(b$) > 31) AND (ASC(b$) < 122) AND (LEN(b$) = 1) THEN +a$ = LEFT$(a$, x1 - 1) + b$ + (RIGHT$(a$, xl - x1 + 1)) +x1 = x1 + 1 +END IF + +IF b$ = CHR$(8) THEN +IF x1 > 1 THEN +a$ = LEFT$(a$, x1 - 2) + RIGHT$(a$, xl - x1 + 1) +x1 = x1 - 1 +END IF +END IF + +IF b$ = CHR$(0) + "M" THEN x1 = x1 + 1 +IF b$ = CHR$(0) + "K" THEN x1 = x1 - 1 +IF b$ = CHR$(0) + CHR$(94) THEN c = 107: GOTO 8 +IF b$ = CHR$(0) + CHR$(95) THEN c = 108: GOTO 8 +IF b$ = CHR$(0) + CHR$(96) THEN c = 109: GOTO 8 +IF b$ = CHR$(0) + CHR$(97) THEN c = 110: GOTO 8 +IF b$ = CHR$(0) + CHR$(98) THEN c = 111: GOTO 8 +IF b$ = CHR$(0) + CHR$(99) THEN c = 112: GOTO 8 +IF b$ = CHR$(0) + CHR$(100) THEN c = 113: GOTO 8 +IF b$ = CHR$(0) + CHR$(59) THEN c = 117: GOTO 8 + +IF b$ = CHR$(0) + "S" THEN a$ = LEFT$(a$, x1 - 1) + RIGHT$(a$, xl - x1) +IF x1 < 1 THEN x1 = 1: c = 103: GOTO 8 +IF x1 > xl THEN x1 = xl: c = 102: GOTO 8 +IF b$ = CHR$(0) + "H" THEN c = 104: GOTO 8 +IF b$ = CHR$(0) + "P" THEN c = 105: GOTO 8 + +IF b$ = CHR$(10) THEN c = 106: GOTO 8 +IF b$ = CHR$(15) THEN c = 114: GOTO 8 +IF b$ = CHR$(4) THEN c = 115: GOTO 8 +IF b$ = CHR$(19) THEN c = 116: GOTO 8 + + +GOTO 2 +8 + +a$ = a$ + SPACE$(100) +a$ = LEFT$(a$, xl) +COLOR 11, 1 +LOCATE y, x +PRINT a$ + +IF a$ = SPACE$(LEN(a$)) THEN +a$ = "" +ELSE +14 +IF RIGHT$(a$, 1) = " " THEN a$ = LEFT$(a$, LEN(a$) - 1): GOTO 14 +END IF + +COLOR 7, 0 +END SUB + +SUB ps (x, y, c, s$) +COLOR c +FOR a = 1 TO LEN(s$) +x1 = x + a - 1 +IF (x1 > 21) AND (x1 < 81) THEN +IF virt(x1, y) = 0 THEN +LOCATE y, x1 +PRINT RIGHT$(LEFT$(s$, a), 1) +END IF +END IF +NEXT a +END SUB + +SUB quit +'DIM SHARED celh(1 TO 20) +'DIM SHARED celm(1 TO 20) +'DIM SHARED cels(1 TO 20) + +'DIM SHARED celm1$(1 TO 20) +'DIM SHARED celm2$(1 TO 20) +'DIM SHARED celc$(1 TO 20) + +'DIM SHARED celt(1 TO 20)' 0 - empty 1 - onece 2 - every day 3 - specified days +'DIM SHARED celw(1 TO 20, 1 TO 7) + + +OPEN "tim.dat" FOR OUTPUT AS #1 +FOR a = 1 TO 20 +PRINT #1, celh(a); celm(a); cels(a); celt(a) +FOR b = 1 TO 6 +PRINT #1, celw(a, b); +NEXT b +PRINT #1, celw(a, 7) + +PRINT #1, celm1$(a) +PRINT #1, celm2$(a) +PRINT #1, celc$(a) +NEXT a +CLOSE #1 +SYSTEM +END SUB + +SUB scroll +'ps RND * 60 + 1, RND * 20 + 1, RND * 13 + 1, "asi" + +'DIM SHARED celm1$(1 TO 20) +'DIM SHARED celm2$(1 TO 20) +'DIM SHARED celc$(1 TO 20) +'DIM SHARED celx(1 TO 20) +COLOR 7, 0 + +FOR a = 1 TO 20 +le = LEN(celm1$(a) + celm2$(a) + celc$(a)) + 2 +IF le > 59 THEN + x = 22 - celx(a) + IF slp(a) > 0 THEN + slp(a) = slp(a) - 1 + ELSE + celx(a) = celx(a) + 1 + IF x + le < 83 THEN slp(a) = 10 + IF x + le < 82 THEN slp(a) = 10: celx(a) = 0 + END IF +ELSE + x = 22 +END IF + +ps x, a + 1, 10, celc$(a) + " " +x = x + LEN(celc$(a)) + 1 +ps x, a + 1, 14, celm1$(a) + " " +x = x + LEN(celm1$(a)) + 1 +ps x, a + 1, 14, celm2$(a) + " " + +NEXT a + +END SUB + +SUB sh +vbox 1, 1, 80, 25, 0 +CLS +LOCATE 1, 1 +COLOR 0, 3 +PRINT "Num| Time | When? | Command & Message " +COLOR 7, 0 + +FOR a = 1 TO 20 +COLOR 14 +IF a < 10 THEN LOCATE a + 1, 2 ELSE LOCATE a + 1, 1 +PRINT a + +COLOR 3 +LOCATE a + 1, 4 +PRINT "|" + + +LOCATE a + 1, 5 +COLOR 14 +IF celt(a) = 0 THEN +PRINT "-- -- --" +ELSE +COLOR 14 +cns celh(a), s$ +PRINT s$ +LOCATE a + 1, 8 +cns celm(a), s$ +PRINT s$ +LOCATE a + 1, 11 +cns cels(a), s$ +PRINT s$ +END IF +COLOR 30 +LOCATE a + 1, 7 +PRINT ":" +LOCATE a + 1, 10 +PRINT ":" + +COLOR 3 +LOCATE a + 1, 13 +PRINT "|" +LOCATE a + 1, 14 + +IF celt(a) = 1 THEN +COLOR 14 +PRINT " Once" +END IF + +IF celt(a) = 2 THEN +COLOR 14 +PRINT " Daily" +END IF + +IF celt(a) = 3 THEN +COLOR 10 +FOR b = 1 TO 7 +'DIM SHARED celw(1 TO 20, 1 TO 7) +LOCATE a + 1, 13 + b +IF celw(a, b) = 1 THEN PRINT RIGHT$(STR$(b), 1) +NEXT b +END IF + +COLOR 3 +LOCATE a + 1, 21 +PRINT "|" + +NEXT a + +END SUB + +SUB start + +OPEN "tim.dat" FOR INPUT AS #1 +FOR a = 1 TO 20 +INPUT #1, celh(a), celm(a), cels(a), celt(a) +FOR b = 1 TO 7 +INPUT #1, celw(a, b) +NEXT b + +LINE INPUT #1, celm1$(a) +LINE INPUT #1, celm2$(a) +LINE INPUT #1, celc$(a) +NEXT a +CLOSE #1 + +alarmo = 0 +END SUB + +SUB vbox (x1, y1, x2, y2, c) +FOR y = y1 TO y1 + y2 - 1 +FOR x = x1 TO x1 + x2 - 1 +virt(x, y) = c +NEXT x +NEXT y +END SUB + diff --git a/wsystem.bas b/wsystem.bas new file mode 100755 index 0000000..fedc340 --- /dev/null +++ b/wsystem.bas @@ -0,0 +1,206 @@ +' window engine, 2003 +' Svjatoslav Agejenko +' svjatoslavagejenko@gmail.com + +DECLARE SUB demo () +DECLARE FUNCTION getline$ (w%, l%) +DECLARE SUB loadfile (file$, d%) +DECLARE SUB sendline (w%, l%, newstring$) +DECLARE FUNCTION getflin% () +DECLARE SUB refresh () +DECLARE FUNCTION addpage% (x%, y%, xs%, ys%, title$) +DECLARE SUB box (x%, y%, xl%, yl%, e$) +DEFINT A-Z +DECLARE SUB shpage (a) +DECLARE SUB start () + +DIM SHARED stamo +stamo = 5000 +DIM SHARED st$(1 TO stamo) +DIM SHARED stpn + +DIM SHARED pag(1 TO 10, 1 TO 1000) +DIM SHARED pagx(1 TO 10), pagy(1 TO 10), pagxs(1 TO 10), pagys(1 TO 10) +DIM SHARED pagon(1 TO 10) +DIM SHARED pagtitle$(1 TO 10) + +DIM SHARED pagshx(1 TO 10) ' x & y shift +DIM SHARED pagshy(1 TO 10) + +DIM SHARED pageactive ' active page + +start + +demo + +FUNCTION addpage (x, y, xs, ys, title$) +FOR a = 1 TO 10 + IF pagon(a) = 0 THEN b = a: GOTO 1 +NEXT a +1 + +pagon(b) = 1 +pagx(b) = x +pagy(b) = y +pagxs(b) = xs +pagys(b) = ys +pagtitle$(b) = title$ + +addpage = b +END FUNCTION + +SUB clrwnd (w) +FOR a = 1 TO 1000 + IF pag(w, a) > 0 THEN st$(pag(w, a)) = "": pag(w, a) = 0 +NEXT a +END SUB + +SUB demo +w1 = addpage(1, 1, 30, 10, "window 1.") +w2 = addpage(1, 12, 80, 30, "second window") +w3 = addpage(31, 2, 30, 10, "last window") + +loadfile "wsystem.bas", w2 +loadfile "wsystem.bas", w1 +loadfile "wsystem.bas", w3 + +4 +pageactive = INT(RND * 3) + 1 +refresh + +FOR a = 1 TO 100 + pagshx(pageactive) = SIN(a / 10) * 10 + 10 + pagshy(pageactive) = a + shpage pageactive + SOUND 0, 1 + IF INKEY$ <> "" THEN SYSTEM +NEXT a + +GOTO 4 +END SUB + +FUNCTION getflin ' Get free line +2 +IF stpn > 1000 THEN stpn = 1 +IF st$(stpn) = "" THEN + getflin = stpn + stpn = stpn + 1 +ELSE + stpn = stpn + 1 + GOTO 2 +END IF +END FUNCTION + +FUNCTION getline$ (w, l) +IF pag(w, l) = 0 THEN + getline$ = "" +ELSE + getline$ = st$(pag(w, l)) +END IF +END FUNCTION + +SUB loadfile (file$, d) + +OPEN file$ FOR INPUT AS #1 +FOR a = 1 TO 1000 + IF EOF(1) <> 0 THEN GOTO 3 + LINE INPUT #1, a$ + sendline d, a, a$ +NEXT a +3 +CLOSE #1 + +FOR b = a TO 1000 + sendline d, b, "" +NEXT b +END SUB + +SUB refresh +CLS +FOR a = 1 TO 10 +IF pagon(a) > 0 THEN shpage (a) +NEXT a +END SUB + +SUB sendline (w, l, newstring$) ' window, lineNum, lineItself + ' send string into window memory +a$ = newstring$ + +IF a$ = SPACE$(LEN(a$)) THEN a$ = "" + +IF LEN(a$) > 0 THEN +5 + IF RIGHT$(a$, 1) = " " THEN + a$ = LEFT$(a$, LEN(a$) - 1) + GOTO 5 + END IF +END IF + +IF a$ = "" THEN + IF pag(w, l) > 0 THEN st$(pag(w, l)) = "": pag(w, l) = 0 +ELSE + IF pag(w, l) = 0 THEN pag(w, l) = getflin + st$(pag(w, l)) = a$ +END IF +END SUB + +SUB shpage (page) +IF page = pageactive THEN bg = 1 ELSE bg = 0 + +x = pagx(page) +y = pagy(page) +xl = pagxs(page) +yl = pagys(page) +e$ = pagtitle$(page) + +COLOR 11, bg + +a$ = "" +d$ = "" +FOR a = 1 TO xl - 2 +a$ = a$ + CHR$(205) +NEXT a +b$ = CHR$(201) + a$ + CHR$(187) +c$ = CHR$(200) + a$ + CHR$(188) + +LOCATE y, x +PRINT b$ +LOCATE y + yl - 1, x +PRINT c$ + +FOR a = 1 TO yl - 2 + LOCATE y + a, x + d$ = getline(page, a + pagshy(page)) + d$ = d$ + SPACE$(300) + d$ = RIGHT$(d$, LEN(d$) - pagshx(page)) + d$ = LEFT$(d$, xl - 2) + PRINT CHR$(186) + d$ + CHR$(186) +NEXT a + +xt = INT(x + (xl / 2) - (LEN(e$) / 2) - 2) +LOCATE y, xt +PRINT "[ " +xt = xt + 2 + +COLOR 10 +LOCATE y, xt +PRINT e$ + +xt = xt + LEN(e$) +COLOR 11 +LOCATE y, xt +PRINT " ]" +COLOR 7, 0 +END SUB + +SUB start +WIDTH 80, 50 +VIEW PRINT 1 TO 50 + +FOR a = 1 TO stamo +st$(a) = "" +NEXT a + +stpn = 1 +END SUB +