From 20f8e75937fe22a6c43a9457cd196d911bbfa468 Mon Sep 17 00:00:00 2001 From: King_DuckZ Date: Mon, 7 Nov 2016 22:02:46 +0100 Subject: [PATCH] Use boost spirit to load csv files. Allow loading of multiple csv files. Iterating on tiles now returns a list of tiles, in back-to-front order. Add a nicer tileset (although it's non-free and needs permission from its author, need to get in touch in due time). --- CMakeLists.txt | 1 + nonfree_map.tmx | 134 ++++++++++++++++++++++++++++++++++++ nonfree_map_ground.csv | 60 ++++++++++++++++ nonfree_map_transparent.csv | 60 ++++++++++++++++ nonfree_texture.png | Bin 0 -> 14977 bytes src/csvloader.cpp | 62 +++++++++++++++++ src/csvloader.hpp | 20 ++++++ src/ingamescene.cpp | 66 ++++++++---------- src/texture.cpp | 36 +++++++++- src/texture.hpp | 11 +++ src/tileindextype.hpp | 5 ++ src/tileiterator.hpp | 8 +-- src/worldgrid.cpp | 66 ++++++++++++++++-- src/worldgrid.hpp | 18 +++-- src/worldviewport.cpp | 2 +- src/worldviewport.hpp | 4 +- test_map.csv | 100 --------------------------- test_map.tmx | 110 ----------------------------- textures.png | Bin 30724 -> 0 bytes 19 files changed, 491 insertions(+), 272 deletions(-) create mode 100644 nonfree_map.tmx create mode 100644 nonfree_map_ground.csv create mode 100644 nonfree_map_transparent.csv create mode 100644 nonfree_texture.png create mode 100644 src/csvloader.cpp create mode 100644 src/csvloader.hpp create mode 100644 src/tileindextype.hpp delete mode 100644 test_map.csv delete mode 100644 test_map.tmx delete mode 100644 textures.png diff --git a/CMakeLists.txt b/CMakeLists.txt index a471fa6..e374de9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,7 @@ if (CURRY_RASPBERRY_PI) endif (CURRY_RASPBERRY_PI) add_executable(${PROJECT_NAME} + src/csvloader.cpp src/main.cpp src/sdlmain.cpp src/ingamescene.cpp diff --git a/nonfree_map.tmx b/nonfree_map.tmx new file mode 100644 index 0000000..3124404 --- /dev/null +++ b/nonfree_map.tmx @@ -0,0 +1,134 @@ + + + + + + + +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,28,29,30,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,14,25,25,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,33,34,35,36,1,1,1,1,1,32,49,50,51,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,14,25,16,1,1,14,10,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,37,38,39,40,1,1,1,1,1,52,53,54,55,1,1,1,1,1,1,1,1,1,1,1,32,49,50,51,1,1,1, +1,1,1,1,1,1,1,14,10,2,11,25,25,10,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,41,42,43,44,1,1,1,1,1,56,57,58,59,1,1,1,1,1,1,1,1,1,1,1,52,53,54,55,1,1,1, +1,1,1,1,1,1,1,27,2,2,2,2,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,45,46,47,48,1,1,1,1,1,60,61,62,63,1,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1,1,1, +1,1,1,1,1,1,14,10,2,2,2,2,2,2,2,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,28,29,30,31,1,1,1,1,1,1,1,1,1,1,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,1,1,60,61,62,63,1,1,1, +1,1,1,1,14,25,10,2,2,2,2,2,2,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,33,34,35,36,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,65,66,67,1,1,1, +1,1,1,1,27,2,2,2,2,2,2,2,2,2,2,2,2,8,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,37,38,39,40,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,27,2,2,2,2,2,2,2,2,2,2,2,2,26,1,1,1,1,1,28,29,30,31,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,41,42,43,44,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,14,10,2,2,2,2,2,2,2,2,2,2,2,2,11,16,1,1,1,1,33,34,35,36,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,45,46,47,48,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,27,2,2,2,2,2,2,2,2,2,2,8,9,2,2,11,16,1,1,1,37,38,39,40,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,15,24,9,2,2,2,2,2,2,2,8,17,15,9,2,2,11,16,1,1,41,42,43,44,1,1,1,1,1,1,1,32,49,50,51,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,15,24,24,24,9,2,2,8,17,1,1,15,9,2,2,11,16,1,45,46,47,48,1,1,1,1,1,1,1,52,53,54,55,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,15,24,24,17,1,1,1,1,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,1,60,61,62,63,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,28,29,30,31,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,33,34,35,36,1,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,37,38,39,40,1,1,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,32,49,50,51,1,1,1,1,1,1,1,1,1,1,1,1,32,49,50,51,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,41,42,43,44,1,1,1,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,52,53,54,55,1,1,1,1,1,1,1,1,1,1,1,1,52,53,54,55,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,45,46,47,48,1,1,1,1,15,9,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1,1,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,11,16,1,1,1,1,1,32,49,50,51,1,1,1,1,1,1,1,60,61,62,63,1,1,1,1,1,1,1,1,1,1,1,1,60,61,62,63,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,1,1,1,1,52,53,54,55,1,1,1,1,1,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,1,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,1,1,1,1,56,57,58,59,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,14,25,25,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,32,49,50,51,1,1,1,27,2,2,2,2,26,1,1,1,1,1,60,61,62,63,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,52,53,54,55,1,1,1,27,2,2,2,2,26,1,1,1,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1,1,1,27,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,11,16,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,60,61,62,63,1,1,1,27,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,65,66,67,1,1,1,27,2,2,2,2,26,1,68,69,69,69,69,69,69,69,69,69,69,70,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,32,49,50,51,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,71,72,72,72,72,72,72,72,72,72,72,73,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,52,53,54,55,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,71,72,72,72,72,72,72,72,72,72,72,73,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,71,72,72,72,72,72,72,72,72,72,72,73,1,1,1,1,1,1,1,1,1,1,1,14,10,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,60,61,62,63,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,71,72,72,72,72,72,72,72,72,72,72,73,1,1,1,1,1,1,1,1,1,1,14,10,2,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,64,65,66,67,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,74,75,75,75,75,75,75,75,75,75,75,76,1,1,1,1,1,1,1,1,1,14,10,2,2,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,14,25,25,25,25,25,25,25,25,10,2,2,2,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,68,69,69,69,69,70,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,11,25,25,25,25,25,25,25,25,25,25,25,25,25,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,28,29,30,31,1,1,1,1,1,74,75,75,72,72,73,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,17,33,34,35,36,1,1,1,1,4,7,7,5,71,72,73,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,17,1,37,38,39,40,1,1,1,1,6,3,3,20,71,72,73,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,17,1,1,41,42,43,44,1,1,1,1,23,22,22,21,71,72,73,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,8,24,24,24,24,24,24,24,24,24,24,24,24,24,17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,45,46,47,48,1,1,1,1,1,68,69,69,72,72,73,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,74,75,75,75,75,76,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,2,2,26,1,1,1,1,1,1,1,1,4,7,7,7,7,7,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,15,9,2,2,2,8,17,1,1,1,1,1,1,4,7,19,3,3,3,3,3,18,7,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,27,2,2,2,26,1,1,1,1,1,4,7,19,3,3,3,3,3,3,3,3,3,18,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,4,7,7,7,7,7,7,7,7,7,5,1,1,1,27,2,2,2,26,1,1,1,1,4,19,3,3,3,3,3,3,3,3,3,3,3,3,18,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,18,5,1,1,27,2,2,2,26,1,1,4,7,19,3,3,3,3,3,3,3,3,3,3,3,3,3,3,18,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,20,1,1,27,2,2,2,26,1,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,32,49,50,51,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,18,5,1,27,2,2,2,26,1,4,19,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,52,53,54,55,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,4,19,3,3,3,3,3,3,3,3,3,3,3,20,1,27,2,2,2,26,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,28,29,30,31,1,1,1,1,1,1,1,1,1,1,56,57,58,59,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,3,3,20,1,27,2,2,2,26,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,33,34,35,36,1,1,1,1,1,1,1,1,1,1,60,61,62,63,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,4,7,19,3,3,3,3,3,3,3,3,3,3,3,3,20,1,27,2,2,2,26,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,12,21,1,37,38,39,40,1,1,1,1,1,1,1,1,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,27,2,2,2,26,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,1,41,42,43,44,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,27,2,2,2,26,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,1,45,46,47,48,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,12,22,13,3,3,3,20,1,27,2,2,2,26,1,23,13,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,4,19,3,3,3,3,3,3,3,3,20,1,23,22,22,22,21,1,27,2,2,2,26,1,1,23,22,22,13,3,3,3,3,3,3,3,3,3,3,3,3,3,20,32,49,50,51,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,20,1,1,1,1,1,1,1,27,2,2,2,26,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,3,3,3,20,52,53,54,55,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,4,19,3,3,3,3,3,3,3,3,3,20,1,1,1,1,1,1,14,10,2,2,2,11,16,1,1,1,1,23,13,3,3,3,3,3,3,3,3,3,3,3,12,21,56,57,58,59,1,1,1,1,1,1,1,1,1,28,29,30,31,1,1,1,1,1,1,1,1,1,1,28,29,30, +1,1,1,1,1,1,6,3,3,3,3,3,3,3,3,3,3,20,1,1,1,1,1,1,15,24,24,24,24,24,17,4,7,7,7,7,19,3,3,3,3,3,3,3,3,3,3,12,21,1,60,61,62,63,1,1,1,1,1,1,1,1,1,33,34,35,36,1,1,1,1,1,1,1,1,1,1,33,34,35, +7,7,7,7,7,7,19,3,3,3,3,3,3,3,3,3,3,18,7,7,7,7,7,7,7,7,7,7,7,7,7,19,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,20,1,1,64,65,66,67,1,1,1,1,1,1,1,1,1,37,38,39,40,1,1,1,1,1,1,1,1,1,1,37,38,39, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,18,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,41,42,43,44,1,1,1,1,1,1,1,1,1,1,41,42,43, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,12,22,21,1,1,1,1,1,1,1,1,1,1,1,1,1,1,45,46,47,48,1,1,1,1,1,1,1,1,1,1,45,46,47 + + + + +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,78, +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,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,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,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,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,0,85,79,79,79,79,79,79,79,86,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,80,77,0,0,77,0,0,77,81,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,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,80,0,0,0,0,0,0,0,81,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,80,0,0,0,0,0,0,0,81,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,80,77,0,0,77,0,0,0,81,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,84,82,82,82,86,0,0,0,81,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,81,0,0,0,81,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,81,0,0,0,81,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,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,81,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,81,0,0,0,81,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,85,83,0,0,0,81,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,80,77,0,0,0,81,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,84,82,86,0,0,81,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,81,0,0,83,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,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,0,0,0,0,0,0,0,0,0,77,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,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,78,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,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,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,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,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,78,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,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,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,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,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,78,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,87,79,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,78,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,79,82,82,86,0,0,0,0,0,85,79,79,79,83,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,78,0,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,78,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,81,0,0,0,0,0,80,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,80,0,0,0,0,0,81,0,0,0,0,0,80,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,81,0,0,0,0,0,0,0,0,0,0,0,0,84,79,79,79,79,79,83,0,0,0,0,0,84,79,79,79,86,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, +79,79,79,79,82,83,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, +77,0,77,0,77,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,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,78,0,0,0 + + + diff --git a/nonfree_map_ground.csv b/nonfree_map_ground.csv new file mode 100644 index 0000000..7ed219c --- /dev/null +++ b/nonfree_map_ground.csv @@ -0,0 +1,60 @@ +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,27,28,29,30,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,13,24,24,15,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,32,33,34,35,0,0,0,0,0,31,48,49,50,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,13,24,15,0,0,13,9,1,1,25,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,36,37,38,39,0,0,0,0,0,51,52,53,54,0,0,0,0,0,0,0,0,0,0,0,31,48,49,50,0,0,0 +0,0,0,0,0,0,0,13,9,1,10,24,24,9,1,1,1,25,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,40,41,42,43,0,0,0,0,0,55,56,57,58,0,0,0,0,0,0,0,0,0,0,0,51,52,53,54,0,0,0 +0,0,0,0,0,0,0,26,1,1,1,1,1,1,1,1,1,25,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,44,45,46,47,0,0,0,0,0,59,60,61,62,0,0,0,0,0,0,0,0,0,0,0,55,56,57,58,0,0,0 +0,0,0,0,0,0,13,9,1,1,1,1,1,1,1,1,1,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0,0,63,64,65,66,0,0,0,0,0,0,0,0,0,0,0,59,60,61,62,0,0,0 +0,0,0,0,13,24,9,1,1,1,1,1,1,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,33,34,35,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,63,64,65,66,0,0,0 +0,0,0,0,26,1,1,1,1,1,1,1,1,1,1,1,1,7,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,37,38,39,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,26,1,1,1,1,1,1,1,1,1,1,1,1,25,0,0,0,0,0,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,41,42,43,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,13,9,1,1,1,1,1,1,1,1,1,1,1,1,10,15,0,0,0,0,32,33,34,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,46,47,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,26,1,1,1,1,1,1,1,1,1,1,7,8,1,1,10,15,0,0,0,36,37,38,39,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,14,23,8,1,1,1,1,1,1,1,7,16,14,8,1,1,10,15,0,0,40,41,42,43,0,0,0,0,0,0,0,31,48,49,50,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,14,23,23,23,8,1,1,7,16,0,0,14,8,1,1,10,15,0,44,45,46,47,0,0,0,0,0,0,0,51,52,53,54,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,14,23,23,16,0,0,0,0,14,8,1,1,10,15,0,0,0,0,0,0,0,0,0,0,0,55,56,57,58,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,14,8,1,1,10,15,0,0,0,0,0,0,0,0,0,0,59,60,61,62,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,27,28,29,30,14,8,1,1,10,15,0,0,0,0,0,0,0,0,0,63,64,65,66,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,32,33,34,35,0,14,8,1,1,10,15,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,36,37,38,39,0,0,14,8,1,1,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,48,49,50,0,0,0,0,0,0,0,0,0,0,0,0,31,48,49,50,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,40,41,42,43,0,0,0,14,8,1,1,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,53,54,0,0,0,0,0,0,0,0,0,0,0,0,51,52,53,54,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,44,45,46,47,0,0,0,0,14,8,1,1,10,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,57,58,0,0,0,0,0,0,0,0,0,0,0,0,55,56,57,58,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,26,1,1,1,10,15,0,0,0,0,0,31,48,49,50,0,0,0,0,0,0,0,59,60,61,62,0,0,0,0,0,0,0,0,0,0,0,0,59,60,61,62,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,26,1,1,1,1,25,0,0,0,0,0,51,52,53,54,0,0,0,0,0,0,0,63,64,65,66,0,0,0,0,0,0,0,0,0,0,0,0,63,64,65,66,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,26,1,1,1,1,25,0,0,0,0,0,55,56,57,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,24,15,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,31,48,49,50,0,0,0,26,1,1,1,1,25,0,0,0,0,0,59,60,61,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,1,1,10,15,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,51,52,53,54,0,0,0,26,1,1,1,1,25,0,0,0,0,0,63,64,65,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,1,1,1,10,15,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,55,56,57,58,0,0,0,26,1,1,1,1,25,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,26,1,1,1,1,10,15,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,59,60,61,62,0,0,0,26,1,1,1,1,25,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,26,1,1,1,1,1,25,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,63,64,65,66,0,0,0,26,1,1,1,1,25,0,67,68,68,68,68,68,68,68,68,68,68,69,0,0,0,0,0,0,0,0,0,0,0,0,26,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,31,48,49,50,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,26,1,1,1,1,25,0,70,71,71,71,71,71,71,71,71,71,71,72,0,0,0,0,0,0,0,0,0,0,0,0,26,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,53,54,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,26,1,1,1,1,25,0,70,71,71,71,71,71,71,71,71,71,71,72,0,0,0,0,0,0,0,0,0,0,0,0,26,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,55,56,57,58,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,26,1,1,1,1,25,0,70,71,71,71,71,71,71,71,71,71,71,72,0,0,0,0,0,0,0,0,0,0,0,13,9,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,59,60,61,62,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,26,1,1,1,1,25,0,70,71,71,71,71,71,71,71,71,71,71,72,0,0,0,0,0,0,0,0,0,0,13,9,1,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,63,64,65,66,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,26,1,1,1,1,25,0,73,74,74,74,74,74,74,74,74,74,74,75,0,0,0,0,0,0,0,0,0,13,9,1,1,1,1,1,1,1,25,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,26,1,1,1,1,25,0,0,0,0,0,0,0,0,0,0,0,0,0,13,24,24,24,24,24,24,24,24,9,1,1,1,1,1,1,1,1,25,0,0,0,0,0,0,0,0,0,67,68,68,68,68,69,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,26,1,1,1,1,10,24,24,24,24,24,24,24,24,24,24,24,24,24,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,25,27,28,29,30,0,0,0,0,0,73,74,74,71,71,72,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,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,16,32,33,34,35,0,0,0,0,3,6,6,4,70,71,72,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,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,16,0,36,37,38,39,0,0,0,0,5,2,2,19,70,71,72,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,26,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,23,23,23,23,23,23,23,23,23,23,23,23,23,23,16,0,0,40,41,42,43,0,0,0,0,22,21,21,20,70,71,72,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,26,1,1,1,1,1,7,23,23,23,23,23,23,23,23,23,23,23,23,23,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,46,47,0,0,0,0,0,67,68,68,71,71,72,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,26,1,1,1,1,1,25,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,73,74,74,74,74,75,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,26,1,1,1,1,1,25,0,0,0,0,0,0,0,0,3,6,6,6,6,6,4,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,14,8,1,1,1,7,16,0,0,0,0,0,0,3,6,18,2,2,2,2,2,17,6,4,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,26,1,1,1,25,0,0,0,0,0,3,6,18,2,2,2,2,2,2,2,2,2,17,4,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,3,6,6,6,6,6,6,6,6,6,4,0,0,0,26,1,1,1,25,0,0,0,0,3,18,2,2,2,2,2,2,2,2,2,2,2,2,17,4,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,5,2,2,2,2,2,2,2,2,2,17,4,0,0,26,1,1,1,25,0,0,3,6,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,4,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,5,2,2,2,2,2,2,2,2,2,2,19,0,0,26,1,1,1,25,0,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,48,49,50,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,5,2,2,2,2,2,2,2,2,2,2,17,4,0,26,1,1,1,25,0,3,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,53,54,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,3,18,2,2,2,2,2,2,2,2,2,2,2,19,0,26,1,1,1,25,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,27,28,29,30,0,0,0,0,0,0,0,0,0,0,55,56,57,58,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,5,2,2,2,2,2,2,2,2,2,2,2,2,19,0,26,1,1,1,25,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,32,33,34,35,0,0,0,0,0,0,0,0,0,0,59,60,61,62,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,3,6,18,2,2,2,2,2,2,2,2,2,2,2,2,19,0,26,1,1,1,25,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,20,0,36,37,38,39,0,0,0,0,0,0,0,0,0,0,63,64,65,66,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,26,1,1,1,25,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,0,40,41,42,43,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,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,26,1,1,1,25,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,0,44,45,46,47,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,5,2,2,2,2,2,2,2,2,11,21,12,2,2,2,19,0,26,1,1,1,25,0,22,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,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,3,18,2,2,2,2,2,2,2,2,19,0,22,21,21,21,20,0,26,1,1,1,25,0,0,22,21,21,12,2,2,2,2,2,2,2,2,2,2,2,2,2,19,31,48,49,50,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,5,2,2,2,2,2,2,2,2,2,19,0,0,0,0,0,0,0,26,1,1,1,25,0,0,0,0,0,5,2,2,2,2,2,2,2,2,2,2,2,2,2,19,51,52,53,54,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,3,18,2,2,2,2,2,2,2,2,2,19,0,0,0,0,0,0,13,9,1,1,1,10,15,0,0,0,0,22,12,2,2,2,2,2,2,2,2,2,2,2,11,20,55,56,57,58,0,0,0,0,0,0,0,0,0,27,28,29,30,0,0,0,0,0,0,0,0,0,0,27,28,29 +0,0,0,0,0,0,5,2,2,2,2,2,2,2,2,2,2,19,0,0,0,0,0,0,14,23,23,23,23,23,16,3,6,6,6,6,18,2,2,2,2,2,2,2,2,2,2,11,20,0,59,60,61,62,0,0,0,0,0,0,0,0,0,32,33,34,35,0,0,0,0,0,0,0,0,0,0,32,33,34 +6,6,6,6,6,6,18,2,2,2,2,2,2,2,2,2,2,17,6,6,6,6,6,6,6,6,6,6,6,6,6,18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,19,0,0,63,64,65,66,0,0,0,0,0,0,0,0,0,36,37,38,39,0,0,0,0,0,0,0,0,0,0,36,37,38 +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,41,42,43,0,0,0,0,0,0,0,0,0,0,40,41,42 +2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,21,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,46,47,0,0,0,0,0,0,0,0,0,0,44,45,46 diff --git a/nonfree_map_transparent.csv b/nonfree_map_transparent.csv new file mode 100644 index 0000000..6590899 --- /dev/null +++ b/nonfree_map_transparent.csv @@ -0,0 +1,60 @@ +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,84,78,78,78,78,78,78,78,85,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,79,76,-1,-1,76,-1,-1,76,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,79,76,-1,-1,76,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,83,81,81,81,85,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,84,82,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,79,76,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,83,81,85,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,82,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,76,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,86,78,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,78,78,81,81,85,-1,-1,-1,-1,-1,84,78,78,78,82,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,79,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,80,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,83,78,78,78,78,78,82,-1,-1,-1,-1,-1,83,78,78,78,85,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +78,78,78,78,81,82,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +76,-1,76,-1,76,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1,-1,-1,-1,-1,-1,-1 +-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,77,-1,-1,-1 diff --git a/nonfree_texture.png b/nonfree_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c868569313f6b41728e6404b93062c322b75cf GIT binary patch literal 14977 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace qi = boost::spirit::qi; + +namespace curry { + CSVJointData load_csv(const std::vector& parCsvPath) { + typedef boost::spirit::istream_iterator iter_type; + using boost::phoenix::ref; + + qi::int_parser idx; + //auto csv_parser = *((qi::int_ % ',') >> -qi::eol) >> qi::eoi; + CSVJointData out_csv; + std::size_t row_count = 0; + + for (auto& csv_path : parCsvPath) { + std::ifstream f_map(csv_path); + f_map.unsetf(std::ios::skipws); + + std::vector curr_data; + row_count = 0; + const bool parse_fail = qi::parse( + iter_type(f_map), + iter_type(), + idx % (',' | qi::eol[ref(row_count) += 1]) >> qi::eoi, + curr_data + ); + + if (parse_fail) { + std::ostringstream oss; + oss << "Error parsing csv \"" << csv_path << "\""; + throw std::runtime_error(oss.str()); + } + out_csv.tables.emplace_back(std::move(curr_data)); + } + + if (not out_csv.tables.empty()) { + out_csv.height = static_cast(row_count); + out_csv.width = static_cast(out_csv.tables.front().size() / row_count); + } + else { + out_csv.height = out_csv.width = 0; + } + return out_csv; + } +} //namespace curry diff --git a/src/csvloader.hpp b/src/csvloader.hpp new file mode 100644 index 0000000..e0f86ff --- /dev/null +++ b/src/csvloader.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include "tileindextype.hpp" +#include +#include +#include + +namespace curry { + struct CSVJointData { + CSVJointData() = default; + CSVJointData (CSVJointData&&) = default; + CSVJointData (const CSVJointData&) = delete; + + std::vector> tables; + uint16_t width; + uint16_t height; + }; + + CSVJointData load_csv(const std::vector& parCsvPath); +} //namespace curry diff --git a/src/ingamescene.cpp b/src/ingamescene.cpp index 14642b1..f98a90f 100644 --- a/src/ingamescene.cpp +++ b/src/ingamescene.cpp @@ -8,6 +8,7 @@ #include "worldviewport.hpp" #include "texture.hpp" #include "rect.hpp" +#include "csvloader.hpp" #include #include #include @@ -24,37 +25,11 @@ namespace curry { ActionRight, ActionDown }; - - std::vector load_csv_map (const char* parMapPath) { - std::ifstream f_map(parMapPath); - - std::vector line(1024 * 8); - std::vector out_vec; - while (f_map.getline(line.data(), line.size())) { - auto from = line.begin(); - const auto total_len = static_cast(std::find(line.begin(), line.end(), '\0') - line.begin()); - std::size_t chars_used = 0; - do { - auto to = std::find(from, line.end(), ','); - const auto len = (to == line.end() ? total_len - chars_used : std::distance(from, to)); - chars_used += len; - assert(len > 0); - assert(len < 6); - boost::string_ref num(line.data() + (from - line.begin()), len); - out_vec.push_back(boost::lexical_cast(num)); - if (chars_used < total_len) { - from = to + 1; - ++chars_used; - } - } while (chars_used != total_len); - } - return out_vec; - } } //unnamed namespace struct IngameScene::LocalData { - LocalData (const vec2us& parTileSize, const vec2us& parTileCount, cloonel::SDLMain* parSDLMain) : - world(parTileSize, parTileCount), + LocalData (const vec2us& parTileSize, cloonel::SDLMain* parSDLMain) : + world(parTileSize), viewport(&world, vec2f(parSDLMain->WidthHeight())), player(parTileSize) { @@ -68,7 +43,7 @@ namespace curry { IngameScene::IngameScene (cloonel::SDLMain* parSDLMain) : GameSceneBase(parSDLMain), - m_local_data(std::make_unique(vec2us(96), vec2us(100), parSDLMain)) + m_local_data(std::make_unique(vec2us(32), parSDLMain)) { using cloonel::Key; using cloonel::InputDevice_Keyboard; @@ -83,8 +58,17 @@ namespace curry { IngameScene::~IngameScene() noexcept = default; void IngameScene::on_prepare() { - m_local_data->worldtiles.load(RESOURCES_PATH "textures.png", *this->sdl_main()); - m_local_data->world.set_tiles(load_csv_map(RESOURCES_PATH "test_map.csv")); + m_local_data->worldtiles.load(RESOURCES_PATH "nonfree_texture.png", *this->sdl_main(), RGBA{255, 255, 255, 0}); + CSVJointData tiles = load_csv({ + RESOURCES_PATH "nonfree_map_ground.csv", + RESOURCES_PATH "nonfree_map_transparent.csv" + }); + + vec2us world_size(tiles.width, tiles.height); + m_local_data->world.set_layers(world_size, tiles.tables); +#if !defined(NDEBUG) + std::cout << "World size set to " << world_size << '\n'; +#endif } void IngameScene::on_update (float parDeltaT) { @@ -92,7 +76,7 @@ namespace curry { const float speed_per_sec = static_cast( std::max(world.tile_size().x(), world.tile_size().y()) - ) * 1.5f; + ) * 4.5f; auto& viewport = m_local_data->viewport; const float speed = parDeltaT * speed_per_sec; @@ -106,15 +90,19 @@ namespace curry { viewport.set_position(viewport.position() + vec2f(0, speed)); const auto tilesize(static_cast(world.tile_size())); + const auto tilecount(m_local_data->worldtiles.width_height() / world.tile_size()); for (auto tile : viewport) { - vec2f idx(static_cast(tile.index & 1), static_cast((tile.index >> 1) & 1)); - vec2f src_rect_xy = idx * tilesize; - vec2f pixel_pos = vector_cast(tile.pixel_pos); + for (uint16_t z = 0; z < m_local_data->world.layer_count(); ++z) { + if (tile.index[z] < 0) + continue; + vec2f idx(static_cast(tile.index[z] % tilecount.x()), static_cast(tile.index[z] / tilecount.x())); + vec2f src_rect_xy = idx * tilesize; + vec2f pixel_pos = vector_cast(tile.pixel_pos); - //std::cout << "Drawing src " << src_rect_xy << " dst " << tile.pixel_pos << '\n'; - Rect src_rect(src_rect_xy, src_rect_xy + tilesize); - Rect dst_rect(pixel_pos, pixel_pos + tilesize); - this->draw_clipped(m_local_data->worldtiles, src_rect, dst_rect); + Rect src_rect(src_rect_xy, src_rect_xy + tilesize); + Rect dst_rect(pixel_pos, pixel_pos + tilesize); + this->draw_clipped(m_local_data->worldtiles, src_rect, dst_rect); + } } } diff --git a/src/texture.cpp b/src/texture.cpp index b510e17..e213ded 100644 --- a/src/texture.cpp +++ b/src/texture.cpp @@ -1,8 +1,30 @@ #include "texture.hpp" #include "sdlmain.hpp" #include +#include namespace curry { + namespace { + using SDLTextureAuto = std::unique_ptr; + + SDLTextureAuto load_texture (const char* parPath, cloonel::SDLMain& parSDLMain, bool parWithKey, RGBA parKey) { + using SurfaceType = std::unique_ptr; + + SurfaceType surface(IMG_Load(parPath), &SDL_FreeSurface); + if (parWithKey) { + SDL_SetColorKey( + surface.get(), + SDL_TRUE, + SDL_MapRGB(surface->format, parKey.r, parKey.g, parKey.b) + ); + } + return SDLTextureAuto( + SDL_CreateTextureFromSurface(parSDLMain.GetRenderer(), surface.get()), + &SDL_DestroyTexture + ); + } + } //unnamed namespace + Texture::Texture() : m_texture(nullptr, &SDL_DestroyTexture) { @@ -21,13 +43,21 @@ namespace curry { } void Texture::load (const char* parPath, cloonel::SDLMain& parSDLMain) { - using SurfaceType = std::unique_ptr; + m_texture = load_texture(parPath, parSDLMain, false, RGBA()); + } - SurfaceType surface(IMG_Load(parPath), &SDL_FreeSurface); - m_texture.reset(SDL_CreateTextureFromSurface(parSDLMain.GetRenderer(), surface.get())); + void Texture::load (const char* parPath, cloonel::SDLMain& parSDLMain, RGBA parColorKey) { + m_texture = load_texture(parPath, parSDLMain, true, parColorKey); } void Texture::unload() noexcept { m_texture.reset(nullptr); } + + vec2us Texture::width_height() const { + int w, h; + assert(m_texture); + SDL_QueryTexture(m_texture.get(), nullptr, nullptr, &w, &h); + return vec2us(static_cast(w), static_cast(h)); + } } //namespace curry diff --git a/src/texture.hpp b/src/texture.hpp index 6b13f4c..5c5bb1b 100644 --- a/src/texture.hpp +++ b/src/texture.hpp @@ -1,6 +1,8 @@ #pragma once +#include "vector.hpp" #include +#include struct SDL_Texture; @@ -9,6 +11,13 @@ namespace cloonel { } //namespace cloonel namespace curry { + struct RGBA { + uint8_t r; + uint8_t g; + uint8_t b; + uint8_t a; + }; + class Texture { public: Texture(); @@ -16,8 +25,10 @@ namespace curry { ~Texture() noexcept; void load (const char* parPath, cloonel::SDLMain& parSDLMain); + void load (const char* parPath, cloonel::SDLMain& parSDLMain, RGBA parColorKey); void unload() noexcept; SDL_Texture* texture(); + vec2us width_height() const; private: std::unique_ptr m_texture; diff --git a/src/tileindextype.hpp b/src/tileindextype.hpp new file mode 100644 index 0000000..d849de9 --- /dev/null +++ b/src/tileindextype.hpp @@ -0,0 +1,5 @@ +#pragma once + +namespace curry { + using TileIndex = signed char; +} //namespace curry diff --git a/src/tileiterator.hpp b/src/tileiterator.hpp index 059b5bd..6f70911 100644 --- a/src/tileiterator.hpp +++ b/src/tileiterator.hpp @@ -1,20 +1,20 @@ #pragma once #include "vector.hpp" +#include "tileindextype.hpp" #include #include namespace curry { - typedef int Tile; class WorldViewport; struct ScreenTile { - Tile index; + const TileIndex* index; vec2i pixel_pos; }; - class TileIterator : public boost::iterator_facade { - typedef boost::iterator_facade base_class; + class TileIterator : public boost::iterator_facade { + typedef boost::iterator_facade base_class; friend class boost::iterator_core_access; public: TileIterator (WorldViewport* parViewport, bool parEnd); diff --git a/src/worldgrid.cpp b/src/worldgrid.cpp index 7a7e3a5..2db07d2 100644 --- a/src/worldgrid.cpp +++ b/src/worldgrid.cpp @@ -1,11 +1,13 @@ #include "worldgrid.hpp" #include #include +#include namespace curry { - WorldGrid::WorldGrid (vec2us parTileSize, vec2us parWorldSize) : + WorldGrid::WorldGrid (vec2us parTileSize) : m_tile_size(parTileSize), - m_world_size(parWorldSize) + m_world_size(0), + m_layer_count(0) { } @@ -13,13 +15,63 @@ namespace curry { return m_tile_size; } - WorldGrid::TileIndex WorldGrid::tile (const vec2us& parIndex) const { + const TileIndex* WorldGrid::tile (const vec2us& parIndex) const { const std::size_t index = parIndex.x() + parIndex.y() * m_world_size.x(); - assert(index < m_data.size()); - return m_data[index]; + assert(m_layer_count); + assert(not m_layers.empty()); + assert(index < tile_count()); + assert(index * m_layer_count + m_layer_count <= m_layers.size()); + return m_layers.data() + index * m_layer_count; } - void WorldGrid::set_tiles (std::vector&& parData) { - m_data.swap(parData); + void WorldGrid::add_layer (vec2us parWorldSize, const std::vector& parLayer) { + assert(parLayer.size() == tile_count()); + + std::vector new_vec; + new_vec.reserve((m_layer_count + 1) * tile_count()); + auto curr_tiles = m_layers.cbegin(); + for (auto tile : parLayer) { + std::copy_n(curr_tiles, m_layer_count, std::back_inserter(new_vec)); + std::advance(curr_tiles, m_layer_count); + new_vec.push_back(tile); + } + ++m_layer_count; + m_world_size = parWorldSize; + std::swap(m_layers, new_vec); + } + + void WorldGrid::set_layers (vec2us parWorldSize, const std::vector>& parLayers) { + if (parLayers.empty()) { + unload_layers(); + return; + } + + assert(not parLayers.empty()); + std::vector new_vec; + new_vec.reserve(parLayers.size() * parLayers.front().size()); + for (std::size_t z = 0; z < parLayers.front().size(); ++z) { + for (std::size_t t = 0; t < parLayers.size(); ++t) { + assert(parLayers[t].size() == parLayers.front().size()); + new_vec.push_back(parLayers[t][z]); + } + } + + m_layer_count = static_cast(parLayers.size()); + std::swap(m_layers, new_vec); + m_world_size = parWorldSize; + } + + uint16_t WorldGrid::layer_count() const { + return m_layer_count; + } + + std::size_t WorldGrid::tile_count() const { + assert((layer_count() and not m_layers.empty()) or (m_layers.size() % layer_count() == 0)); + return (layer_count() ? m_layers.size() / layer_count() : 0); + } + + void WorldGrid::unload_layers() { + m_layers.clear(); + m_layer_count = 0; } } //namespace curry diff --git a/src/worldgrid.hpp b/src/worldgrid.hpp index dfa04c2..e3553ee 100644 --- a/src/worldgrid.hpp +++ b/src/worldgrid.hpp @@ -1,22 +1,28 @@ #pragma once #include "vector.hpp" +#include "tileindextype.hpp" #include +#include namespace curry { class WorldGrid { public: - typedef int TileIndex; - - WorldGrid (vec2us parTileSize, vec2us parWorldSize); + explicit WorldGrid (vec2us parTileSize); const vec2us& tile_size() const; - TileIndex tile (const vec2us& parIndex) const; - void set_tiles (std::vector&& parData); + uint16_t layer_count() const; + const TileIndex* tile (const vec2us& parIndex) const; + void add_layer (vec2us parWorldSize, const std::vector& parLayer); + void set_layers (vec2us parWorldSize, const std::vector>& parLayers); + void unload_layers(); private: - std::vector m_data; + std::size_t tile_count() const; + + std::vector m_layers; vec2us m_tile_size; vec2us m_world_size; + uint16_t m_layer_count; }; } //namespace curry diff --git a/src/worldviewport.cpp b/src/worldviewport.cpp index 9b72e61..36e077c 100644 --- a/src/worldviewport.cpp +++ b/src/worldviewport.cpp @@ -49,7 +49,7 @@ namespace curry { m_position = parPos; //TODO: assert validity } - WorldViewport::TileIndex WorldViewport::tile (const vec2us& parIndex) const { + const TileIndex* WorldViewport::tile (const vec2us& parIndex) const { return world()->tile(parIndex + starting_index(*this)); } } //namespace curry diff --git a/src/worldviewport.hpp b/src/worldviewport.hpp index ab2e79a..46f25cd 100644 --- a/src/worldviewport.hpp +++ b/src/worldviewport.hpp @@ -1,6 +1,7 @@ #pragma once #include "vector.hpp" +#include "tileindextype.hpp" #include "tileiterator.hpp" namespace curry { @@ -9,13 +10,12 @@ namespace curry { class WorldViewport { public: typedef TileIterator iterator; - typedef int TileIndex; WorldViewport (WorldGrid* parWorld, vec2f parSize); const WorldGrid* world() const; const vec2f& position() const; const vec2f& size() const; - TileIndex tile (const vec2us& parIndex) const; + const TileIndex* tile (const vec2us& parIndex) const; void set_position (const vec2f& parPos); diff --git a/test_map.csv b/test_map.csv deleted file mode 100644 index 085f256..0000000 --- a/test_map.csv +++ /dev/null @@ -1,100 +0,0 @@ -0,0,2,2,0,2,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,2,2,0,2,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,2,2,0,2,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,2,2,0,2,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,2,2,2,2,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,2,2,2,2,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,2,2,2,2,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,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,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,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,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,2,2,2,2,2,0,0,0,0,0,2,2,1,1,1,1,2,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,2,2,2,2,2,0,0,0,0,2,1,1,1,1,1,2,2,2,2,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,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,2,2,2,0,2,0,0,0,0,0,0,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,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,0,2,2,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,3,3,3,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,2,2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,2,0,0,2,0,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,3,3,3,3,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,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,2,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,2,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,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,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,2,2,2,0,2,2,2,2,0,0,0,0,0,3,3,3,3,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,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,2,0,0,0,0,0,0,3,3,3,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,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,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,2,0,2,2,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,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,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,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,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,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,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,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,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,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,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,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,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 -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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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 -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,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,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,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,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,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,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,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,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,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 diff --git a/test_map.tmx b/test_map.tmx deleted file mode 100644 index cee1ae8..0000000 --- a/test_map.tmx +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -1,1,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,3,3,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,3,3,3,3,3,3,1,1,1,1,1,1,1,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,3,3,2,2,2,2,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,1,1,1,1,3,2,2,2,2,2,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,3,3,3,1,3,3,1,1,1,3,3,3,3,3,3,1,1,1,1,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,2,3,2,2,2,3,3,3,1,1,3,1,3,3,3,3,3,3,3,3,1,3,3,3,3,3,1,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,3,3,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,3,3,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,1,3,3,1,1,1,1,1,3,3,3,1,3,3,3,3,1,1,1,1,1,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,3,1,1,1,1,1,1,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 - - - diff --git a/textures.png b/textures.png deleted file mode 100644 index f936b9316b5d87e1faa4c18e0607d222edb0e1a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30724 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%0Dkjgmpl^NG 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