summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/gil/test/extension
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/gil/test/extension')
-rw-r--r--src/boost/libs/gil/test/extension/CMakeLists.txt22
-rw-r--r--src/boost/libs/gil/test/extension/Jamfile12
-rw-r--r--src/boost/libs/gil/test/extension/dynamic_image/CMakeLists.txt27
-rw-r--r--src/boost/libs/gil/test/extension/dynamic_image/Jamfile13
-rw-r--r--src/boost/libs/gil/test/extension/dynamic_image/subimage_view.cpp71
-rw-r--r--src/boost/libs/gil/test/extension/dynamic_image/test_fixture.hpp61
-rw-r--r--src/boost/libs/gil/test/extension/io/CMakeLists.txt104
-rw-r--r--src/boost/libs/gil/test/extension/io/Jamfile105
-rw-r--r--src/boost/libs/gil/test/extension/io/all_formats_test.cpp88
-rw-r--r--src/boost/libs/gil/test/extension/io/bmp_old_test.cpp99
-rw-r--r--src/boost/libs/gil/test/extension/io/bmp_read_test.cpp502
-rw-r--r--src/boost/libs/gil/test/extension/io/bmp_test.cpp351
-rw-r--r--src/boost/libs/gil/test/extension/io/bmp_write_test.cpp61
-rw-r--r--src/boost/libs/gil/test/extension/io/cmp_view.hpp41
-rw-r--r--src/boost/libs/gil/test/extension/io/color_space_write_test.hpp54
-rw-r--r--src/boost/libs/gil/test/extension/io/fabscript98
-rw-r--r--src/boost/libs/gil/test/extension/io/images/bmp/readme.txt5
-rw-r--r--src/boost/libs/gil/test/extension/io/images/bmp/test.bmpbin0 -> 1800054 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/jpeg/EddDawson/36dpi.jpgbin0 -> 5878 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/jpeg/test.jpgbin0 -> 19577 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/EddDawson/36dpi.pngbin0 -> 7406 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/readme.txt7
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn0g04.pngbin0 -> 429 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn2c16.pngbin0 -> 2041 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn3p08.pngbin0 -> 1499 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn2c16.pngbin0 -> 2041 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn3p08.pngbin0 -> 1499 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbrn2c08.pngbin0 -> 1633 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbwn0g16.pngbin0 -> 1313 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tm3n3p02.pngbin0 -> 116 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/PngSuite/tp1n3p08.pngbin0 -> 1483 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/grayalpha-with-tRNS-chunk.pngbin0 -> 1190 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/grayscale-with-tRNS-chunk.pngbin0 -> 11864 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/png/test.pngbin0 -> 52753 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/p1.pnm1203
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/p2.pnm3004
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/p3.pnm16388
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/p4.pnmbin0 -> 5016 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/p5.pnmbin0 -> 40024 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/p6.pnmbin0 -> 196623 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/readme.txt5
-rw-r--r--src/boost/libs/gil/test/extension/io/images/pnm/rgb.pnmbin0 -> 196623 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/raw/RAW_CANON_D30_SRGB.CRWbin0 -> 3120810 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/raw/readme.txt5
-rw-r--r--src/boost/libs/gil/test/extension/io/images/readme.md3
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed.tgabin0 -> 4185 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed_ul_origin.tgabin0 -> 4211 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed.tgabin0 -> 46146 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed_ul_origin.tgabin0 -> 46172 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed.tgabin0 -> 4894 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed_ul_origin.tgabin0 -> 4920 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed.tgabin0 -> 61522 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed_ul_origin.tgabin0 -> 61548 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/images/targa/fileformat_info/readme.txt5
-rw-r--r--src/boost/libs/gil/test/extension/io/images/tiff/graphicmagick/readme.txt7
-rw-r--r--src/boost/libs/gil/test/extension/io/images/tiff/libtiffpic/readme.txt7
-rw-r--r--src/boost/libs/gil/test/extension/io/images/tiff/test.tifbin0 -> 78434 bytes
-rw-r--r--src/boost/libs/gil/test/extension/io/jpeg_old_test.cpp100
-rw-r--r--src/boost/libs/gil/test/extension/io/jpeg_read_test.cpp127
-rw-r--r--src/boost/libs/gil/test/extension/io/jpeg_test.cpp337
-rw-r--r--src/boost/libs/gil/test/extension/io/jpeg_write_test.cpp97
-rw-r--r--src/boost/libs/gil/test/extension/io/make.cpp207
-rw-r--r--src/boost/libs/gil/test/extension/io/mandel_view.hpp96
-rw-r--r--src/boost/libs/gil/test/extension/io/paths.hpp66
-rw-r--r--src/boost/libs/gil/test/extension/io/png_file_format_test.cpp77
-rw-r--r--src/boost/libs/gil/test/extension/io/png_old_test.cpp100
-rw-r--r--src/boost/libs/gil/test/extension/io/png_read_test.cpp731
-rw-r--r--src/boost/libs/gil/test/extension/io/png_test.cpp351
-rw-r--r--src/boost/libs/gil/test/extension/io/png_write_test.cpp40
-rw-r--r--src/boost/libs/gil/test/extension/io/pnm_old_test.cpp106
-rw-r--r--src/boost/libs/gil/test/extension/io/pnm_read_test.cpp144
-rw-r--r--src/boost/libs/gil/test/extension/io/pnm_test.cpp329
-rw-r--r--src/boost/libs/gil/test/extension/io/pnm_write_test.cpp73
-rw-r--r--src/boost/libs/gil/test/extension/io/raw_test.cpp128
-rw-r--r--src/boost/libs/gil/test/extension/io/scanline_read_test.hpp61
-rw-r--r--src/boost/libs/gil/test/extension/io/subimage_test.hpp51
-rw-r--r--src/boost/libs/gil/test/extension/io/targa_old_test.cpp101
-rw-r--r--src/boost/libs/gil/test/extension/io/targa_read_test.cpp244
-rw-r--r--src/boost/libs/gil/test/extension/io/targa_test.cpp332
-rw-r--r--src/boost/libs/gil/test/extension/io/targa_write_test.cpp60
-rw-r--r--src/boost/libs/gil/test/extension/io/test.cpp9
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_file_format_test.cpp954
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_old_test.cpp91
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_subimage_test.cpp120
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_test.cpp364
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_float_test.cpp106
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_1-10.cpp40
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_11-20.cpp41
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_21-31_32-64.cpp58
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_1-10.cpp47
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_11-20.cpp47
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_21-31_32-64.cpp71
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_1-8.cpp22
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_8-16.cpp22
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_1-8.cpp22
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_8-16.cpp22
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_read_macros.hpp102
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_1-10.cpp39
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_11-20.cpp39
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_21-31_32_64.cpp57
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_1-10.cpp46
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_11-20.cpp46
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp71
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_1-10.cpp39
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_11-20.cpp39
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_21-31_32_64.cpp57
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_test.cpp84
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_tiled_write_macros.hpp165
-rw-r--r--src/boost/libs/gil/test/extension/io/tiff_write_test.cpp32
-rw-r--r--src/boost/libs/gil/test/extension/numeric/CMakeLists.txt37
-rw-r--r--src/boost/libs/gil/test/extension/numeric/Jamfile29
-rw-r--r--src/boost/libs/gil/test/extension/numeric/channel_numeric_operations.cpp305
-rw-r--r--src/boost/libs/gil/test/extension/numeric/convolve.cpp79
-rw-r--r--src/boost/libs/gil/test/extension/numeric/convolve_2d.cpp67
-rw-r--r--src/boost/libs/gil/test/extension/numeric/convolve_cols.cpp52
-rw-r--r--src/boost/libs/gil/test/extension/numeric/convolve_rows.cpp52
-rw-r--r--src/boost/libs/gil/test/extension/numeric/extend_boundary.cpp244
-rw-r--r--src/boost/libs/gil/test/extension/numeric/kernel.cpp307
-rw-r--r--src/boost/libs/gil/test/extension/numeric/kernel_1d_fixed_even_size_fail.cpp16
-rw-r--r--src/boost/libs/gil/test/extension/numeric/matrix3x2.cpp170
-rw-r--r--src/boost/libs/gil/test/extension/numeric/numeric.cpp177
-rw-r--r--src/boost/libs/gil/test/extension/numeric/pixel_numeric_operations.cpp278
-rw-r--r--src/boost/libs/gil/test/extension/numeric/test_fixture.hpp30
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/CMakeLists.txt49
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/Jamfile40
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/channel_type.cpp43
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/channel_view.cpp43
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/cmyka.cpp30
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/fabscript44
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/get_num_bits.cpp41
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/get_pixel_type.cpp41
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/gray_alpha.cpp43
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/gray_to_rgba.cpp26
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/hsl_hsv_test.cpp75
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/indexed_image_test.cpp150
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/is_bit_aligned.cpp24
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/is_homogeneous.cpp28
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/is_similar.cpp23
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/lab_test.cpp185
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/pixel_bit_size.cpp27
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/rgb_to_luminance.cpp33
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/subchroma_image.cpp107
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/test.cpp2
-rw-r--r--src/boost/libs/gil/test/extension/toolbox/xyz_test.cpp193
144 files changed, 32248 insertions, 0 deletions
diff --git a/src/boost/libs/gil/test/extension/CMakeLists.txt b/src/boost/libs/gil/test/extension/CMakeLists.txt
new file mode 100644
index 00000000..06a46302
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/CMakeLists.txt
@@ -0,0 +1,22 @@
+#
+# Copyright (c) 2019 Mateusz Loskot <mateusz at loskot dot net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+if(GIL_ENABLE_EXT_DYNAMIC_IMAGE)
+ add_subdirectory(dynamic_image)
+endif()
+
+if(GIL_ENABLE_EXT_NUMERIC)
+ add_subdirectory(numeric)
+endif()
+
+if(GIL_ENABLE_EXT_TOOLBOX)
+ add_subdirectory(toolbox)
+endif()
+
+if(GIL_ENABLE_EXT_IO)
+ add_subdirectory(io)
+endif()
diff --git a/src/boost/libs/gil/test/extension/Jamfile b/src/boost/libs/gil/test/extension/Jamfile
new file mode 100644
index 00000000..cf9ef408
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/Jamfile
@@ -0,0 +1,12 @@
+# Boost.GIL (Generic Image Library) - extensions tests
+#
+# Copyright (c) 2019 Mateusz Loskot <mateusz@loskot.net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or
+# copy at http://www.boost.org/LICENSE_1_0.txt)
+
+build-project dynamic_image ;
+build-project numeric ;
+build-project toolbox ;
+build-project io ;
diff --git a/src/boost/libs/gil/test/extension/dynamic_image/CMakeLists.txt b/src/boost/libs/gil/test/extension/dynamic_image/CMakeLists.txt
new file mode 100644
index 00000000..cf80e8f8
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/dynamic_image/CMakeLists.txt
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2019 Mateusz Loskot <mateusz at loskot dot net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+message(STATUS "Boost.GIL: Configuring tests in test/extension/dynamic_image")
+foreach(_name
+ subimage_view)
+ set(_test t_ext_dynamic_image_${_name})
+ set(_target test_ext_dynamic_image_${_name})
+
+ add_executable(${_target} "")
+ target_sources(${_target} PRIVATE ${_name}.cpp)
+ target_link_libraries(${_target}
+ PRIVATE
+ gil_compile_options
+ gil_include_directories
+ gil_dependencies)
+ target_compile_definitions(${_target} PRIVATE BOOST_GIL_USE_CONCEPT_CHECK)
+ add_test(NAME ${_test} COMMAND ${_target})
+
+ unset(_name)
+ unset(_target)
+ unset(_test)
+endforeach()
diff --git a/src/boost/libs/gil/test/extension/dynamic_image/Jamfile b/src/boost/libs/gil/test/extension/dynamic_image/Jamfile
new file mode 100644
index 00000000..7f1f177a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/dynamic_image/Jamfile
@@ -0,0 +1,13 @@
+# Boost.GIL (Generic Image Library) - dynamic_image tests
+#
+# Copyright (c) 2019 Mateusz Loskot <mateusz@loskot.net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or
+# copy at http://www.boost.org/LICENSE_1_0.txt)
+
+import testing ;
+
+alias headers : [ generate_self_contained_headers extension/dynamic_image ] ;
+
+run subimage_view.cpp /boost/test//boost_unit_test_framework : : : <link>shared:<define>BOOST_TEST_DYN_LINK=1 ;
diff --git a/src/boost/libs/gil/test/extension/dynamic_image/subimage_view.cpp b/src/boost/libs/gil/test/extension/dynamic_image/subimage_view.cpp
new file mode 100644
index 00000000..49bf5fa1
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/dynamic_image/subimage_view.cpp
@@ -0,0 +1,71 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/dynamic_image/dynamic_image_all.hpp>
+
+#define BOOST_TEST_MODULE test_ext_dynamic_image_subimage_view
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+#include "test_fixture.hpp"
+#include "core/image/test_fixture.hpp"
+
+namespace gil = boost::gil;
+namespace fixture = boost::gil::test::fixture;
+
+BOOST_AUTO_TEST_SUITE(dynamic_image_subimage_view)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(subimage_equals_image, Image, fixture::image_types)
+{
+ fixture::dynamic_image i0(fixture::create_image<Image>(4, 4, 128));
+ auto const v0 = gil::const_view(i0);
+ BOOST_TEST(v0.dimensions().x == 4);
+ BOOST_TEST(v0.dimensions().y == 4);
+
+ // request with 2 x point_t values
+ {
+ auto v1 = gil::subimage_view(gil::view(i0), {0, 0}, i0.dimensions());
+ BOOST_TEST(v0.dimensions() == v1.dimensions());
+ BOOST_TEST(gil::equal_pixels(v0, v1));
+ }
+ // request with 4 x dimension values
+ {
+ auto v1 = gil::subimage_view(gil::view(i0), 0, 0, i0.dimensions().x, i0.dimensions().y);
+ BOOST_TEST(v0.dimensions() == v1.dimensions());
+ BOOST_TEST(gil::equal_pixels(v0, v1));
+ }
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(subimage_equals_image_quadrants, Image, fixture::image_types)
+{
+ fixture::dynamic_image i0(fixture::create_image<Image>(4, 4, 0));
+ auto v0 = gil::view(i0);
+ // create test image and set values of pixels in:
+ // quadrant 1
+ auto const i1 = fixture::create_image<Image>(2, 2, 255);
+ gil::apply_operation(v0, fixture::fill_any_view<Image>({2, 3, 6, 7}, gil::const_view(i1)[0]));
+ // quadrant 2
+ auto const i2 = fixture::create_image<Image>(2, 2, 128);
+ gil::apply_operation(v0, fixture::fill_any_view<Image>({0, 1, 4, 5}, gil::const_view(i2)[0]));
+ // quadrant 3
+ auto const i3 = fixture::create_image<Image>(2, 2, 64);
+ gil::apply_operation(v0, fixture::fill_any_view<Image>({8, 9, 12, 13}, gil::const_view(i3)[0]));
+ // quadrant 4
+ auto const i4 = fixture::create_image<Image>(2, 2, 32);
+ gil::apply_operation(v0, fixture::fill_any_view<Image>({10, 11, 14, 15}, gil::const_view(i4)[0]));
+
+ auto v1 = gil::subimage_view(gil::view(i0), { 2, 0 }, i0.dimensions() / 2);
+ BOOST_TEST(gil::equal_pixels(v1, gil::const_view(i1)));
+ auto v2 = gil::subimage_view(gil::view(i0), { 0, 0 }, i0.dimensions() / 2);
+ BOOST_TEST(gil::equal_pixels(v2, gil::const_view(i2)));
+ auto v3 = gil::subimage_view(gil::view(i0), { 0, 2 }, i0.dimensions() / 2);
+ BOOST_TEST(gil::equal_pixels(v3, gil::const_view(i3)));
+ auto v4 = gil::subimage_view(gil::view(i0), { 2, 2 }, i0.dimensions() / 2);
+ BOOST_TEST(gil::equal_pixels(v4, gil::const_view(i4)));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/dynamic_image/test_fixture.hpp b/src/boost/libs/gil/test/extension/dynamic_image/test_fixture.hpp
new file mode 100644
index 00000000..00b1b38c
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/dynamic_image/test_fixture.hpp
@@ -0,0 +1,61 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/dynamic_image/any_image.hpp>
+#include <boost/mp11.hpp>
+
+#include <tuple>
+
+namespace boost { namespace gil {
+
+namespace test { namespace fixture {
+
+using dynamic_image = gil::any_image
+<
+ boost::mp11::mp_list
+ <
+ gil::gray8_image_t,
+ gil::gray16_image_t,
+ gil::gray32_image_t,
+ gil::bgr8_image_t,
+ gil::bgr16_image_t,
+ gil::bgr32_image_t,
+ gil::rgb8_image_t,
+ gil::rgb16_image_t,
+ gil::rgb32_image_t,
+ gil::rgba8_image_t,
+ gil::rgba16_image_t,
+ gil::rgba32_image_t
+ >
+>;
+
+template <typename Image>
+struct fill_any_view
+{
+ using result_type = void;
+ using pixel_t = typename Image::value_type;
+
+ fill_any_view(std::initializer_list<int> dst_view_indices, pixel_t pixel_value)
+ : dst_view_indices_(dst_view_indices), pixel_value_(pixel_value)
+ {}
+
+ template <typename View>
+ void operator()(View& /*dst_view*/) { /* sink any other views here */ }
+
+ void operator()(typename Image::view_t& dst_view)
+ {
+ // sink view of interest here
+ for (auto const& i : dst_view_indices_)
+ dst_view[i] = pixel_value_;
+ }
+
+ std::initializer_list<int> dst_view_indices_;
+ pixel_t pixel_value_;
+};
+
+}}}} // namespace boost::gil::test::fixture
diff --git a/src/boost/libs/gil/test/extension/io/CMakeLists.txt b/src/boost/libs/gil/test/extension/io/CMakeLists.txt
new file mode 100644
index 00000000..85ea2f16
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/CMakeLists.txt
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2017 Mateusz Loskot <mateusz at loskot dot net>
+# All rights reserved.
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+message(STATUS "Boost.GIL: Configuring tests in test/extension/io")
+
+set(_formats
+ bmp
+ jpeg
+ png
+ pnm
+ simple
+ targa
+ tiff)
+
+if(GIL_ENABLE_EXT_IO_RAW)
+ list(APPEND _formats raw)
+endif()
+
+foreach(_name ${_formats})
+ set(_test t_ext_io_${_name})
+ set(_target test_ext_io_${_name})
+
+ add_executable(${_target} "")
+ target_link_libraries(${_target}
+ PRIVATE
+ gil_compile_options
+ gil_include_directories
+ gil_dependencies)
+ target_compile_definitions(${_target}
+ PRIVATE
+ BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+ BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES)
+ add_test(NAME ${_test} COMMAND ${_target})
+
+ unset(_name)
+ unset(_target)
+ unset(_test)
+endforeach()
+
+unset(_formats)
+
+target_sources(test_ext_io_simple
+ PRIVATE
+ all_formats_test.cpp)
+
+target_sources(test_ext_io_bmp
+ PRIVATE
+ bmp_old_test.cpp bmp_read_test.cpp bmp_test.cpp bmp_write_test.cpp)
+
+target_sources(test_ext_io_jpeg
+ PRIVATE
+ jpeg_test.cpp jpeg_old_test.cpp jpeg_read_test.cpp jpeg_write_test.cpp)
+
+target_sources(test_ext_io_png
+ PRIVATE
+ png_test.cpp png_old_test.cpp png_file_format_test.cpp png_read_test.cpp)
+
+target_sources(test_ext_io_pnm
+ PRIVATE
+ pnm_test.cpp pnm_old_test.cpp pnm_read_test.cpp pnm_write_test.cpp)
+
+if(GIL_ENABLE_EXT_IO_RAW)
+ target_sources(test_ext_io_raw
+ PRIVATE
+ raw_test.cpp)
+endif()
+
+target_sources(test_ext_io_targa
+ PRIVATE
+ targa_test.cpp targa_old_test.cpp targa_read_test.cpp targa_write_test.cpp)
+
+target_sources(test_ext_io_tiff
+ PRIVATE
+ tiff_file_format_test.cpp
+ tiff_old_test.cpp
+ tiff_subimage_test.cpp
+ tiff_test.cpp
+ tiff_tiled_float_test.cpp
+ tiff_tiled_minisblack_test_1-10.cpp
+ tiff_tiled_minisblack_test_11-20.cpp
+ tiff_tiled_minisblack_test_21-31_32-64.cpp
+ tiff_tiled_minisblack_write_test_1-10.cpp
+ tiff_tiled_minisblack_write_test_11-20.cpp
+ tiff_tiled_minisblack_write_test_21-31_32-64.cpp
+ tiff_tiled_palette_test_1-8.cpp
+ tiff_tiled_palette_test_8-16.cpp
+ tiff_tiled_palette_write_test_1-8.cpp
+ tiff_tiled_palette_write_test_8-16.cpp
+ tiff_tiled_rgb_contig_test_1-10.cpp
+ tiff_tiled_rgb_contig_test_11-20.cpp
+ tiff_tiled_rgb_contig_test_21-31_32_64.cpp
+ tiff_tiled_rgb_contig_write_test_1-10.cpp
+ tiff_tiled_rgb_contig_write_test_11-20.cpp
+ tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp
+ tiff_tiled_rgb_planar_test_1-10.cpp
+ tiff_tiled_rgb_planar_test_11-20.cpp
+ tiff_tiled_rgb_planar_test_21-31_32_64.cpp
+ tiff_tiled_test.cpp
+ tiff_write_test.cpp)
diff --git a/src/boost/libs/gil/test/extension/io/Jamfile b/src/boost/libs/gil/test/extension/io/Jamfile
new file mode 100644
index 00000000..89ceb800
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/Jamfile
@@ -0,0 +1,105 @@
+# Boost.GIL (Generic Image Library) - IO tests
+#
+# Copyright (c) 2012 Christian Henning
+# Copyright (c) 2017 Stefan Seefeld
+# Copyright (c) 2012-2018 Mateusz Loskot <mateusz@loskot.net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or
+# copy at http://www.boost.org/LICENSE_1_0.txt)
+
+import ac ;
+
+using libjpeg : : : : true ; # work around bug on master
+using zlib ;
+using libpng : : : : true ;
+using libtiff : : : : true ;
+
+lib raw : : <name>raw ;
+
+project
+ : requirements
+ <library>/boost/test//boost_unit_test_framework
+ <library>/boost/system//boost_system
+ <library>/boost/filesystem//boost_filesystem
+ <link>shared:<define>BOOST_TEST_DYN_LINK=1
+ ;
+
+alias headers : [ generate_self_contained_headers extension/io ] ;
+explicit headers ;
+
+# The `simple` in names of targets, somewhat misleading, means two things:
+# - minimal set of tests
+# - set of tests that require third-party libraries which are de-facto ubiquitous
+alias simple
+ : [ run all_formats_test.cpp
+ : # args
+ : # input files
+ : # requirements
+ <define>BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+ <define>BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ [ ac.check-library /libjpeg//libjpeg : <library>/libjpeg//libjpeg : <build>no ]
+ [ ac.check-library /zlib//zlib : <library>/zlib//zlib : <build>no ]
+ [ ac.check-library /libpng//libpng : <library>/libpng//libpng : <build>no ]
+ [ ac.check-library /libtiff//libtiff : <library>/libtiff//libtiff : <build>no ]
+ ]
+;
+
+alias full :
+ [ run bmp_test.cpp bmp_old_test.cpp bmp_read_test.cpp bmp_write_test.cpp ]
+ [ run jpeg_test.cpp jpeg_old_test.cpp jpeg_read_test.cpp jpeg_write_test.cpp
+ :
+ :
+ : [ ac.check-library /libjpeg//libjpeg : <library>/libjpeg//libjpeg : <build>no ] ]
+ #make.cpp
+ [ run png_test.cpp png_old_test.cpp png_file_format_test.cpp png_read_test.cpp
+ :
+ :
+ :
+ <define>BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+ [ ac.check-library /zlib//zlib : <library>/zlib//zlib : <build>no ]
+ [ ac.check-library /libpng//libpng : <library>/libpng//libpng : <build>no ]
+ ]
+ [ run pnm_test.cpp pnm_old_test.cpp pnm_read_test.cpp pnm_write_test.cpp ]
+ [ run raw_test.cpp
+ : # args
+ : # input files
+ : # requirements
+ <define>BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+ <library>raw
+ ]
+ [ run targa_test.cpp targa_old_test.cpp targa_read_test.cpp targa_write_test.cpp ]
+ [ run
+ tiff_test.cpp
+ tiff_old_test.cpp
+ tiff_file_format_test.cpp
+ tiff_subimage_test.cpp
+ tiff_tiled_float_test.cpp
+ tiff_tiled_minisblack_test_1-10.cpp
+ tiff_tiled_minisblack_test_11-20.cpp
+ tiff_tiled_minisblack_test_21-31_32-64.cpp
+ tiff_tiled_minisblack_write_test_1-10.cpp
+ tiff_tiled_minisblack_write_test_11-20.cpp
+ tiff_tiled_minisblack_write_test_21-31_32-64.cpp
+ tiff_tiled_palette_test_1-8.cpp
+ tiff_tiled_palette_test_8-16.cpp
+ tiff_tiled_palette_write_test_1-8.cpp
+ tiff_tiled_palette_write_test_8-16.cpp
+ tiff_tiled_rgb_contig_test_1-10.cpp
+ tiff_tiled_rgb_contig_test_11-20.cpp
+ tiff_tiled_rgb_contig_test_21-31_32_64.cpp
+ tiff_tiled_rgb_contig_write_test_1-10.cpp
+ tiff_tiled_rgb_contig_write_test_11-20.cpp
+ tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp
+ tiff_tiled_rgb_planar_test_1-10.cpp
+ tiff_tiled_rgb_planar_test_11-20.cpp
+ tiff_tiled_rgb_planar_test_21-31_32_64.cpp
+ tiff_tiled_test.cpp
+ tiff_write_test.cpp
+ :
+ :
+ : [ ac.check-library /libtiff//libtiff : <library>/libtiff//libtiff : <build>no ]
+ ]
+ ;
+
+explicit full ;
diff --git a/src/boost/libs/gil/test/extension/io/all_formats_test.cpp b/src/boost/libs/gil/test/extension/io/all_formats_test.cpp
new file mode 100644
index 00000000..34b11989
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/all_formats_test.cpp
@@ -0,0 +1,88 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE all_formats_test
+#include <boost/gil/extension/io/png.hpp>
+#include <boost/gil/extension/io/bmp.hpp>
+#include <boost/gil/extension/io/jpeg.hpp>
+#include <boost/gil/extension/io/pnm.hpp>
+#include <boost/gil/extension/io/targa.hpp>
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+
+// Test will include all format's headers and load and write some images.
+// This test is more of a compilation test.
+
+using namespace std;
+using namespace boost::gil;
+namespace fs = boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tests )
+
+BOOST_AUTO_TEST_CASE( non_bit_aligned_image_test )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+ {
+ rgb8_image_t img;
+ read_image( bmp_filename, img, bmp_tag() );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ fs::create_directories(fs::path(bmp_out));
+ write_view( bmp_out + "all_formats_test.bmp", view( img ), bmp_tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+
+ {
+ rgb8_image_t img;
+ read_image( jpeg_filename, img, jpeg_tag() );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ fs::create_directories(fs::path(jpeg_out));
+ write_view( jpeg_out + "all_formats_test.jpg", view( img ), jpeg_tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+
+ {
+ rgba8_image_t img;
+ read_image( png_filename, img, png_tag() );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ fs::create_directories(fs::path(png_out));
+ write_view( png_out + "all_formats_test.png", view( img ), png_tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+
+ {
+ rgb8_image_t img;
+ read_image( pnm_filename, img, pnm_tag() );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ fs::create_directories(fs::path(pnm_out));
+ write_view( pnm_out + "all_formats_test.pnm", view( img ), pnm_tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+
+ {
+ rgb8_image_t img;
+ read_image( targa_filename, img, targa_tag() );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ fs::create_directories(fs::path(targa_out));
+ write_view( targa_out + "all_formats_test.tga", view( img ), targa_tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+
+ {
+ rgba8_image_t img;
+ read_image( tiff_filename, img, tiff_tag() );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ fs::create_directories(fs::path(tiff_out));
+ write_view( tiff_out + "all_formats_test.tif", view( img ), tiff_tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/bmp_old_test.cpp b/src/boost/libs/gil/test/extension/io/bmp_old_test.cpp
new file mode 100644
index 00000000..bad59b61
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/bmp_old_test.cpp
@@ -0,0 +1,99 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE bmp_old_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/bmp/old.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( gil_io_bmp_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( old_read_dimensions_test )
+{
+ boost::gil::point_t dim = bmp_read_dimensions(bmp_filename);
+ BOOST_CHECK_EQUAL( dim.x, 1000 );
+ BOOST_CHECK_EQUAL( dim.y, 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_image_test )
+{
+ rgb8_image_t img;
+ bmp_read_image( bmp_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_image_test )
+{
+ rgb8_image_t img;
+ bmp_read_and_convert_image( bmp_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_view_test )
+{
+ rgb8_image_t img( 1000, 600 );
+ bmp_read_view( bmp_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_view_test )
+{
+ rgb8_image_t img( 1000, 600 );
+ bmp_read_and_convert_view( bmp_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_write_view_test )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ bmp_write_view( bmp_out + "old_write_view_test.bmp"
+ , create_mandel_view( 1000, 600
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( old_dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ bmp_read_image( bmp_filename.c_str()
+ , runtime_image
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ bmp_write_view( bmp_out + "old_dynamic_image_test.bmp"
+ , view( runtime_image )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/bmp_read_test.cpp b/src/boost/libs/gil/test/extension/io/bmp_read_test.cpp
new file mode 100644
index 00000000..aecc4aaa
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/bmp_read_test.cpp
@@ -0,0 +1,502 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE bmp_read_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/bmp.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = bmp_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_bmp_tests )
+
+#ifdef BOOST_GIL_IO_USE_BMP_TEST_SUITE_IMAGES
+
+template< typename Image >
+void write( Image& img
+ , const string& file_name
+ )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( bmp_out + file_name
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( read_header_test )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( bmp_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._offset , 54u );
+ BOOST_CHECK_EQUAL( backend._info._header_size , 40u );
+ BOOST_CHECK_EQUAL( backend._info._width , 1000 );
+ BOOST_CHECK_EQUAL( backend._info._height , 600 );
+ BOOST_CHECK_EQUAL( backend._info._bits_per_pixel , 24 );
+ BOOST_CHECK_EQUAL( backend._info._compression , 0u );
+ BOOST_CHECK_EQUAL( backend._info._image_size , 1800000u );
+ BOOST_CHECK_EQUAL( backend._info._horizontal_resolution, 0 );
+ BOOST_CHECK_EQUAL( backend._info._vertical_resolution , 0 );
+ BOOST_CHECK_EQUAL( backend._info._num_colors , 0u );
+ BOOST_CHECK_EQUAL( backend._info._num_important_colors , 0u );
+ BOOST_CHECK_EQUAL( backend._info._valid , true );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_reference_images_test )
+{
+ // comments are taken from http://entropymine.com/jason/bmpsuite/reference/reference.html
+
+ // g01bw.bmp - black and white palette (#000000,#FFFFFF)
+ {
+ rgba8_image_t img;
+ read_image( bmp_in + "g01bw.bmp", img, tag_t() );
+ }
+
+ // g01wb.bmp - white and black palette (#FFFFFF,#000000).
+ // Should look the same as g01bw, not inverted.
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g01wb.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g01wb.bmp" );
+ }
+
+ // g01bg.bmp - blue and green palette (#4040FF,#40FF40)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g01bg.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g01bg.bmp" );
+ }
+
+ // g01p1.bmp - 1-color (blue) palette (#4040FF)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g01p1.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g01p1.bmp" );
+ }
+
+ // g04.bmp - basic 4bpp (16 color) image
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g04.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g04.bmp" );
+ }
+
+ // g04rle.bmp - RLE compressed.
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g04rle.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g04rle.bmp" );
+ }
+
+ // g04p4.bmp - 4-color grayscale palette
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g04p4.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g04p4.bmp" );
+ }
+
+ // g08.bmp - basic 8bpp (256 color) image
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08.bmp" );
+ }
+
+ // g08p256.bmp - biClrUsed=256, biClrImportant=0 [=256]
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08p256.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08p256.bmp" );
+ }
+
+ // g08pi256.bmp - biClrUsed=256, biClrImportant=256
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08pi256.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08pi256.bmp" );
+ }
+
+ // g08pi64.bmp - biClrUsed=256, biClrImportant=64. It's barely possible that some
+ // sophisticated viewers may display this image in grayscale, if there are a
+ // limited number of colors available.
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08pi64.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08pi64.bmp" );
+ }
+
+ // g08rle.bmp - RLE compressed.
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g08rle.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08rle.bmp" );
+ }
+
+ // g08os2.bmp - OS/2-style bitmap. This is an obsolete variety of BMP
+ // that is still encountered sometimes. It has 3-byte palette
+ // entries (instead of 4), and 16-bit width/height fields (instead of 32).
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g08os2.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08os2.bmp" );
+ }
+
+ // g08res22.bmp - resolution 7874x7874 pixels/meter (200x200 dpi)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08res22.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08res22.bmp" );
+ }
+
+ // g08res11.bmp - resolution 3937x3937 pixels/meter (100x100 dpi)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08res11.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08res11.bmp" );
+ }
+
+ // g08res21.bmp resolution 7874x3937 pixels/meter (200x100 dpi).
+ // Some programs (e.g. Imaging for Windows) may display this image
+ // stretched vertically, which is the optimal thing to do if the
+ // program is primarily a viewer, rather than an editor.
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08res21.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08res21.bmp" );
+ }
+
+ // g08s0.bmp - bits size not given (set to 0). This is legal for uncompressed bitmaps.
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08s0.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08s0.bmp" );
+ }
+
+ // g08offs.bmp - bfOffBits in header not set to the usual value.
+ // There are 100 extra unused bytes between palette and bits.
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08offs.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08offs.bmp" );
+ }
+
+ // g08w126.bmp - size 126x63 (right and bottom slightly clipped)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08w126.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 126u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 63u );
+
+ write( img, "g08w126.bmp" );
+ }
+
+ // g08w125.bmp - size 125x62
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08w125.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 125u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 62u );
+
+ write( img, "g08w125.bmp" );
+ }
+
+ // g08w124.bmp - size 124x61
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08w124.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 124u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 61u );
+
+ write( img, "g08w124.bmp" );
+ }
+
+ // g08p64.bmp - 64-color grayscale palette
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g08p64.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g08p64.bmp" );
+ }
+
+ // g16def555.bmp - 15-bit color (1 bit wasted), biCompression=BI_RGB (no bitfields, defaults to 5-5-5)
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g16def555.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g16def555.bmp" );
+ }
+
+ // g16bf555.bmp - 15-bit color, biCompression=BI_BITFIELDS (bitfields indicate 5-5-5)
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g16bf555.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g16bf555.bmp" );
+ }
+
+ // g16bf565.bmp - 16-bit color, biCompression=BI_BITFIELDS (bitfields indicate 5-6-5)
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g16bf565.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g16bf565.bmp" );
+ }
+
+ // g24.bmp - 24-bit color (BGR)
+ {
+ rgb8_image_t img;
+
+ read_image( bmp_in + "g24.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g24.bmp" );
+ }
+
+ // g32def.bmp - 24-bit color (8 bits wasted), biCompression=BI_RGB (no bitfields, defaults to BGRx)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g32def.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g32def.bmp" );
+ }
+
+ // g32bf.bmp - 24-bit color (8 bits wasted), biCompression=BI_BITFIELDS (bitfields indicate BGRx)
+ {
+ rgba8_image_t img;
+
+ read_image( bmp_in + "g32bf.bmp", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 127u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 64u );
+
+ write( img, "g32bf.bmp" );
+ }
+}
+
+
+BOOST_AUTO_TEST_CASE( read_reference_images_image_iterator_test )
+{
+ // comments are taken from http://entropymine.com/jason/bmpsuite/reference/reference.html
+
+ // g01bw.bmp - black and white palette (#000000,#FFFFFF)
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g01bw.bmp" ).c_str() );
+
+ // g01wb.bmp - white and black palette (#FFFFFF,#000000).
+ // Should look the same as g01bw, not inverted.
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g01wb.bmp" ).c_str() );
+
+ // g01bg.bmp - blue and green palette (#4040FF,#40FF40)
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g01bg.bmp" ).c_str() );
+
+ // g01p1.bmp - 1-color (blue) palette (#4040FF)
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g01p1.bmp" ).c_str() );
+
+ // g04.bmp - basic 4bpp (16 color) image
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g04.bmp" ).c_str() );
+
+ // not supported
+ // g04rle.bmp - RLE compressed.
+ //test_scanline_reader< bgra8_image_t, bmp_tag >( string( bmp_in + "g01bg.bmp" ).c_str() );
+
+ // g04p4.bmp - 4-color grayscale palette
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g04p4.bmp" ).c_str() );
+
+ // g08.bmp - basic 8bpp (256 color) image
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08.bmp" ).c_str() );
+
+ // g08p256.bmp - biClrUsed=256, biClrImportant=0 [=256]
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08p256.bmp" ).c_str() );
+
+ // g08pi256.bmp - biClrUsed=256, biClrImportant=256
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08pi256.bmp" ).c_str() );
+
+ // g08pi64.bmp - biClrUsed=256, biClrImportant=64. It's barely possible that some
+ // sophisticated viewers may display this image in grayscale, if there are a
+ // limited number of colors available.
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08pi64.bmp" ).c_str() );
+
+ // not supported
+ // g08rle.bmp - RLE compressed.
+
+ // g08os2.bmp - OS/2-style bitmap. This is an obsolete variety of BMP
+ // that is still encountered sometimes. It has 3-byte palette
+ // entries (instead of 4), and 16-bit width/height fields (instead of 32).
+ test_scanline_reader< rgb8_image_t, bmp_tag >( string( bmp_in + "g08os2.bmp" ).c_str() );
+
+ // g08res22.bmp - resolution 7874x7874 pixels/meter (200x200 dpi)
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08res22.bmp" ).c_str() );
+
+ // g08res11.bmp - resolution 3937x3937 pixels/meter (100x100 dpi)
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08res11.bmp" ).c_str() );
+
+ // g08res21.bmp resolution 7874x3937 pixels/meter (200x100 dpi).
+ // Some programs (e.g. Imaging for Windows) may display this image
+ // stretched vertically, which is the optimal thing to do if the
+ // program is primarily a viewer, rather than an editor.
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08res21.bmp" ).c_str() );
+
+ // g08s0.bmp - bits size not given (set to 0). This is legal for uncompressed bitmaps.
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08s0.bmp" ).c_str() );
+
+ // g08offs.bmp - bfOffBits in header not set to the usual value.
+ // There are 100 extra unused bytes between palette and bits.
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08offs.bmp" ).c_str() );
+
+ // g08w126.bmp - size 126x63 (right and bottom slightly clipped)
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08w126.bmp" ).c_str() );
+
+ // g08w125.bmp - size 125x62
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08w125.bmp" ).c_str() );
+
+ // g08w124.bmp - size 124x61
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08w124.bmp" ).c_str() );
+
+ // g08p64.bmp - 64-color grayscale palette
+ test_scanline_reader< rgba8_image_t, bmp_tag >( string( bmp_in + "g08p64.bmp" ).c_str() );
+
+ // g16def555.bmp - 15-bit color (1 bit wasted), biCompression=BI_RGB (no bitfields, defaults to 5-5-5)
+ test_scanline_reader< rgb8_image_t, bmp_tag >( string( bmp_in + "g16def555.bmp" ).c_str() );
+
+ // g16bf555.bmp - 15-bit color, biCompression=BI_BITFIELDS (bitfields indicate 5-5-5)
+ test_scanline_reader< rgb8_image_t, bmp_tag >( string( bmp_in + "g16bf555.bmp" ).c_str() );
+
+ // g16bf565.bmp - 16-bit color, biCompression=BI_BITFIELDS (bitfields indicate 5-6-5)
+ test_scanline_reader< rgb8_image_t, bmp_tag >( string( bmp_in + "g16bf565.bmp" ).c_str() );
+
+ // g24.bmp - 24-bit color (BGR)
+ test_scanline_reader< bgr8_image_t, bmp_tag >( string( bmp_in + "g24.bmp" ).c_str() );
+
+ // g32def.bmp - 24-bit color (8 bits wasted), biCompression=BI_RGB (no bitfields, defaults to BGRx)
+ test_scanline_reader< bgra8_image_t, bmp_tag >( string( bmp_in + "g32def.bmp" ).c_str() );
+
+ // g32bf.bmp - 24-bit color (8 bits wasted), biCompression=BI_BITFIELDS (bitfields indicate BGRx)
+ test_scanline_reader< bgra8_image_t, bmp_tag >( string( bmp_in + "g32bf.bmp" ).c_str() );
+}
+
+BOOST_AUTO_TEST_CASE( partial_image_test )
+{
+ const std::string filename( bmp_in + "rgb.bmp" );
+
+ {
+ rgb8_image_t img;
+ read_image( filename
+ , img
+ , image_read_settings< bmp_tag >( point_t( 0, 0 ), point_t( 50, 50 ) )
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( bmp_out + "rgb_partial.bmp"
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_BMP_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/bmp_test.cpp b/src/boost/libs/gil/test/extension/io/bmp_test.cpp
new file mode 100644
index 00000000..eb00fee6
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/bmp_test.cpp
@@ -0,0 +1,351 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE bmp_test
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+#define BOOST_FILESYSTEM_VERSION 3
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/bmp.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+namespace fs = boost::filesystem;
+
+using tag_t = bmp_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_bmp_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_using_string )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( bmp_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000 );
+ BOOST_CHECK_EQUAL( backend._info._height, 600 );
+ }
+
+ {
+ ifstream in( bmp_filename.c_str(), ios::binary );
+
+ using backend_t = get_reader_backend<std::ifstream, tag_t>::type;
+
+ backend_t backend = read_image_info( in
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000 );
+ BOOST_CHECK_EQUAL( backend._info._height, 600 );
+ }
+
+ {
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+
+ using backend_t = get_reader_backend<FILE*, tag_t>::type;
+
+ backend_t backend = read_image_info( file
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000 );
+ BOOST_CHECK_EQUAL( backend._info._height, 600 );
+ }
+
+ {
+ fs::path my_path( bmp_filename );
+
+ using backend_t = get_reader_backend<fs::path, tag_t>::type;
+
+ backend_t backend = read_image_info( my_path
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000 );
+ BOOST_CHECK_EQUAL( backend._info._height, 600 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_image( bmp_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+
+ {
+ ifstream in( bmp_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+
+ {
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+
+ {
+ fs::path my_path( bmp_filename );
+
+ rgb8_image_t img;
+ read_image( my_path, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_and_convert_image( bmp_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+
+ {
+ ifstream in( bmp_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_and_convert_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+
+ {
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_and_convert_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ {
+ rgb8_image_t img( 1000, 600 );
+ read_view( bmp_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( bmp_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 1000, 600 );
+ read_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 1000, 600 );
+ read_view( file, view( img ), tag_t() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( bmp_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( bmp_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( file
+ , view( img )
+ , tag_t()
+ );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( write_view_test )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ {
+ string filename( bmp_out + "write_test_string.bmp" );
+
+ write_view( filename
+ , create_mandel_view( 1000, 600
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( bmp_out + "write_test_ofstream.bmp" );
+
+ ofstream out( filename.c_str(), ios::binary );
+
+ write_view( out
+ , create_mandel_view( 1000, 600
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( bmp_out + "write_test_file.bmp" );
+
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 1000, 600
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( bmp_out + "write_test_info.bmp" );
+
+ image_write_info< tag_t > info;
+
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 1000, 600
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , info
+ );
+ }
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test )
+{
+ // 1. Read an image.
+ ifstream in( bmp_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ // 2. Write image to in-memory buffer.
+ stringstream out_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( out_buffer, view( img ), tag_t() );
+
+ // 3. Copy in-memory buffer to another.
+ stringstream in_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ in_buffer << out_buffer.rdbuf();
+
+ // 4. Read in-memory buffer to gil image
+ rgb8_image_t dst;
+ read_image( in_buffer, dst, tag_t() );
+
+ // 5. Write out image.
+ string filename( bmp_out + "stream_test.bmp" );
+ ofstream out( filename.c_str(), ios_base::binary );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( out, view( dst ), tag_t() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test_2 )
+{
+ filebuf in_buf;
+ if( !in_buf.open( bmp_filename.c_str(), ios::in | ios::binary ) )
+ {
+ BOOST_CHECK( false );
+ }
+
+ istream in( &in_buf );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test )
+{
+ run_subimage_test< rgb8_image_t, tag_t >( bmp_filename
+ , point_t( 0, 0 )
+ , point_t( 1000, 1 )
+ );
+
+ run_subimage_test< rgb8_image_t, tag_t >( bmp_filename
+ , point_t( 39, 7 )
+ , point_t( 50, 50 )
+ );
+}
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ read_image( bmp_filename.c_str()
+ , runtime_image
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( bmp_out + "dynamic_image_test.bmp"
+ , view( runtime_image )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/bmp_write_test.cpp b/src/boost/libs/gil/test/extension/io/bmp_write_test.cpp
new file mode 100644
index 00000000..d6c04e1f
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/bmp_write_test.cpp
@@ -0,0 +1,61 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE bmp_write_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/io/typedefs.hpp>
+#include <boost/gil/extension/io/bmp.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "cmp_view.hpp"
+#include "color_space_write_test.hpp"
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = bmp_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_bmp_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_test )
+{
+
+ // test writing all supported image types
+ {
+ write_view( bmp_out + "rgb8_test.bmp"
+ , create_mandel_view( 200, 200
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ write_view( bmp_out + "rgba8_test.bmp"
+ , create_mandel_view( 200, 200
+ , rgba8_pixel_t( 0, 0, 255, 0 )
+ , rgba8_pixel_t( 0, 255, 0, 0 )
+ )
+ , tag_t()
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+BOOST_AUTO_TEST_CASE( rgb_color_space_write_test )
+{
+ color_space_write_test< bmp_tag >( bmp_out + "rgb_color_space_test.bmp"
+ , bmp_out + "bgr_color_space_test.bmp"
+ );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/cmp_view.hpp b/src/boost/libs/gil/test/extension/io/cmp_view.hpp
new file mode 100644
index 00000000..4be0848d
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/cmp_view.hpp
@@ -0,0 +1,41 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_IO_TEST_CMP_VIEW_HPP
+#define BOOST_GIL_IO_TEST_CMP_VIEW_HPP
+
+#include <boost/gil.hpp>
+
+template< typename View_1, typename View_2 >
+void cmp_view( const View_1& v1
+ , const View_2& v2
+ )
+{
+ if( v1.dimensions() != v2.dimensions() )
+ {
+ throw std::runtime_error( "Images are not equal." );
+ }
+
+ typename View_1::x_coord_t width = v1.width();
+ typename View_1::y_coord_t height = v1.height();
+
+ for( typename View_1::y_coord_t y = 0; y < height; ++y )
+ {
+ const typename View_1::x_iterator src_it = v1.row_begin( y );
+ const typename View_2::x_iterator dst_it = v2.row_begin( y );
+
+ for( typename View_1::x_coord_t x = 0; x < width; ++x )
+ {
+ if( *src_it != *dst_it )
+ {
+ throw std::runtime_error( "Images are not equal." );
+ }
+ }
+ }
+}
+
+#endif
diff --git a/src/boost/libs/gil/test/extension/io/color_space_write_test.hpp b/src/boost/libs/gil/test/extension/io/color_space_write_test.hpp
new file mode 100644
index 00000000..f26673e9
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/color_space_write_test.hpp
@@ -0,0 +1,54 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_IO_TEST_COLOR_SPACE_WRITE_TEST_HPP
+#define BOOST_GIL_IO_TEST_COLOR_SPACE_WRITE_TEST_HPP
+
+#include <boost/gil.hpp>
+
+#ifndef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+#include <boost/core/ignore_unused.hpp>
+#endif
+#include <string>
+
+#include "cmp_view.hpp"
+
+template< typename Tag >
+void color_space_write_test( const std::string& file_name_1
+ , const std::string& file_name_2
+ )
+{
+ using namespace boost::gil;
+
+ rgb8_image_t rgb( 320, 200 );
+ bgr8_image_t bgr( 320, 200 );
+
+ fill_pixels( view(rgb), rgb8_pixel_t( 0, 0, 255 ));
+ fill_pixels( view(bgr), bgr8_pixel_t(255, 0, 0 ));
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( file_name_1, view( rgb ), Tag() );
+ write_view( file_name_2, view( bgr ), Tag() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ rgb8_image_t rgb_1;
+ rgb8_image_t rgb_2;
+
+ read_image( file_name_1, rgb_1, Tag() );
+ read_image( file_name_2, rgb_2, Tag() );
+
+ cmp_view( view( rgb_1 ), view( rgb_2 ));
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifndef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ boost::ignore_unused(file_name_1);
+ boost::ignore_unused(file_name_2);
+#endif
+}
+
+#endif
diff --git a/src/boost/libs/gil/test/extension/io/fabscript b/src/boost/libs/gil/test/extension/io/fabscript
new file mode 100644
index 00000000..5370c972
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/fabscript
@@ -0,0 +1,98 @@
+# -*- python -*-
+#
+# Copyright (c) 2017 Stefan Seefeld
+# All rights reserved.
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+from faber import platform
+from faber.feature import set
+from faber.tools.compiler import define, libs, linkpath
+from faber.artefacts.binary import binary
+from faber.test import test, report, fail
+from os.path import join
+
+boost_suffix = options.get_with('boost-suffix')
+boost_suffix = '-' + boost_suffix if boost_suffix else ''
+boost_unit_test_framework = 'boost_unit_test_framework' + boost_suffix
+boost_filesystem = 'boost_filesystem' + boost_suffix
+boost_system = 'boost_system' + boost_suffix
+
+test_features = set(define('BOOST_TEST_DYN_LINK'),
+ libs(boost_unit_test_framework,
+ boost_system,
+ boost_filesystem))
+
+without_jpeg = options.get_without('jpeg')
+jpeg_features = test_features + set(libs('jpeg'))
+jpeg_prefix = options.get_with('jpeg-prefix')
+if jpeg_prefix:
+ jpeg_features += include(join(jpeg_prefix, 'include'))
+ jpeg_features += linkpath(join(jpeg_prefix, 'lib64'), join(jpeg_prefix, 'lib'))
+
+without_png = options.get_without('png')
+png = options.get_with('png') or 'png' # on some platforms the library uses another name
+png_features = test_features + set(libs(png))
+png_prefix = options.get_with('png-prefix')
+if png_prefix:
+ png_features += include(join(png_prefix, 'include'))
+ png_features += linkpath(join(png_prefix, 'lib64'), join(png_prefix, 'lib'))
+
+without_tiff = options.get_without('tiff')
+tiff_features = test_features + set(libs('tiff'))
+tiff_prefix = options.get_with('tiff-prefix')
+if tiff_prefix:
+ tiff_features += include(join(tiff_prefix, 'include'))
+ tiff_features += linkpath(join(tiff_prefix, 'lib64'), join(tiff_prefix, 'lib'))
+
+
+def gil_test(name, sources, features, condition=True):
+ return test(name, binary(name, sources, features=features, condition=condition))
+
+
+tests = [gil_test('all_formats_test', ['all_formats_test.cpp'], features=test_features | png_features | jpeg_features),
+ gil_test('bmp',
+ ['bmp_test.cpp', 'bmp_old_test.cpp', 'bmp_read_test.cpp', 'bmp_write_test.cpp'],
+ features=test_features),
+ gil_test('jpeg', ['jpeg_test.cpp', 'jpeg_old_test.cpp', 'jpeg_read_test.cpp', 'jpeg_write_test.cpp'],
+ features=jpeg_features,
+ condition=not without_jpeg),
+ gil_test('png', ['png_test.cpp', 'png_old_test.cpp', 'png_file_format_test.cpp', 'png_read_test.cpp'],
+ features=png_features,
+ condition=not without_png),
+ gil_test('pnm', ['pnm_test.cpp', 'pnm_old_test.cpp', 'pnm_read_test.cpp', 'pnm_write_test.cpp'],
+ features=test_features),
+ gil_test('targa', ['targa_test.cpp', 'targa_old_test.cpp', 'targa_read_test.cpp', 'targa_write_test.cpp'],
+ features=test_features),
+ gil_test('tiff', ['tiff_test.cpp',
+ 'tiff_old_test.cpp',
+ 'tiff_file_format_test.cpp',
+ 'tiff_tiled_float_test.cpp',
+ 'tiff_tiled_minisblack_test_1-10.cpp',
+ 'tiff_tiled_minisblack_test_11-20.cpp',
+ 'tiff_tiled_minisblack_test_21-31_32-64.cpp',
+ 'tiff_tiled_minisblack_write_test_1-10.cpp',
+ 'tiff_tiled_minisblack_write_test_11-20.cpp',
+ 'tiff_tiled_minisblack_write_test_21-31_32-64.cpp',
+ 'tiff_tiled_palette_test_1-8.cpp',
+ 'tiff_tiled_palette_test_8-16.cpp',
+ 'tiff_tiled_palette_write_test_1-8.cpp',
+ 'tiff_tiled_palette_write_test_8-16.cpp',
+ 'tiff_tiled_rgb_contig_test_1-10.cpp',
+ 'tiff_tiled_rgb_contig_test_11-20.cpp',
+ 'tiff_tiled_rgb_contig_test_21-31_32_64.cpp',
+ 'tiff_tiled_rgb_contig_write_test_1-10.cpp',
+ 'tiff_tiled_rgb_contig_write_test_11-20.cpp',
+ 'tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp',
+ 'tiff_tiled_rgb_planar_test_1-10.cpp',
+ 'tiff_tiled_rgb_planar_test_11-20.cpp',
+ 'tiff_tiled_rgb_planar_test_21-31_32_64.cpp',
+ 'tiff_tiled_test.cpp',
+ 'tiff_write_test.cpp'],
+ features=tiff_features,
+ condition=not without_tiff)
+]
+
+default = report('report', tests, fail_on_failures=True)
diff --git a/src/boost/libs/gil/test/extension/io/images/bmp/readme.txt b/src/boost/libs/gil/test/extension/io/images/bmp/readme.txt
new file mode 100644
index 00000000..2478f5dd
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/bmp/readme.txt
@@ -0,0 +1,5 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+Image were found at http://entropymine.com/jason/bmpsuite/ . \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/bmp/test.bmp b/src/boost/libs/gil/test/extension/io/images/bmp/test.bmp
new file mode 100644
index 00000000..24d396d5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/bmp/test.bmp
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/jpeg/EddDawson/36dpi.jpg b/src/boost/libs/gil/test/extension/io/images/jpeg/EddDawson/36dpi.jpg
new file mode 100644
index 00000000..793e3178
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/jpeg/EddDawson/36dpi.jpg
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/jpeg/test.jpg b/src/boost/libs/gil/test/extension/io/images/jpeg/test.jpg
new file mode 100644
index 00000000..d221c054
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/jpeg/test.jpg
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/EddDawson/36dpi.png b/src/boost/libs/gil/test/extension/io/images/png/EddDawson/36dpi.png
new file mode 100644
index 00000000..bea4eb6f
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/EddDawson/36dpi.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/readme.txt b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/readme.txt
new file mode 100644
index 00000000..46c5ccb7
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/readme.txt
@@ -0,0 +1,7 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+test images can be found at http://www.schaik.com/pngsuite/pngsuite.html
+
+if not available please send me an email at chhenning ** at ** gmail.com \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn0g04.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn0g04.png
new file mode 100644
index 00000000..39a7050d
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn0g04.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn2c16.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn2c16.png
new file mode 100644
index 00000000..dd3168e5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn2c16.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn3p08.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn3p08.png
new file mode 100644
index 00000000..0ede3574
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbbn3p08.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn2c16.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn2c16.png
new file mode 100644
index 00000000..85cec395
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn2c16.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn3p08.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn3p08.png
new file mode 100644
index 00000000..8cf2e6fb
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbgn3p08.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbrn2c08.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbrn2c08.png
new file mode 100644
index 00000000..5cca0d62
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbrn2c08.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbwn0g16.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbwn0g16.png
new file mode 100644
index 00000000..99bdeed2
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tbwn0g16.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tm3n3p02.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tm3n3p02.png
new file mode 100644
index 00000000..fb3ef1d0
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tm3n3p02.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tp1n3p08.png b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tp1n3p08.png
new file mode 100644
index 00000000..a6c9f35a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/PngSuite/tp1n3p08.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/grayalpha-with-tRNS-chunk.png b/src/boost/libs/gil/test/extension/io/images/png/grayalpha-with-tRNS-chunk.png
new file mode 100644
index 00000000..c914fb4b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/grayalpha-with-tRNS-chunk.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/grayscale-with-tRNS-chunk.png b/src/boost/libs/gil/test/extension/io/images/png/grayscale-with-tRNS-chunk.png
new file mode 100644
index 00000000..9fae9a15
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/grayscale-with-tRNS-chunk.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/png/test.png b/src/boost/libs/gil/test/extension/io/images/png/test.png
new file mode 100644
index 00000000..bd731ed8
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/png/test.png
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/p1.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/p1.pnm
new file mode 100644
index 00000000..087e56b5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/p1.pnm
@@ -0,0 +1,1203 @@
+P1
+# ASCII PBM file created by PBMA_WRITE.
+ 200 200
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 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 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 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 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
+ 1 1 1 1 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
+ 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
+ 1 1 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 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
+ 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 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 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 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 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 0 0 0 1 1 1 1 1 1 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 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
+ 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
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
+ 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+ 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 1 1 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
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 1 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 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 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 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 1 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 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 1 1 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 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 1 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 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 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 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 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 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 1 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 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 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 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 1 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 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 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 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 1 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 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 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 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 1 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 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 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 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+ 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 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+ 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 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+ 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 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+ 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 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 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 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 1 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 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 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 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 1 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 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 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 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 1 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 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 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 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 1 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 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 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 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 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 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 1 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 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 1 1 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 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 1 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 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 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 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 1 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 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 1 1 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
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+ 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
+ 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
+ 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
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 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 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0 0 0 0 0 0 1 1 1 1 1 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 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 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 0 0 0 1 1 1 1 1 1 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 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 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 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
+ 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 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1
+ 1 1 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 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
+ 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
+ 1 1 1 1 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 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 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 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 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 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 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+ 0 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/src/boost/libs/gil/test/extension/io/images/pnm/p2.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/p2.pnm
new file mode 100644
index 00000000..1673f516
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/p2.pnm
@@ -0,0 +1,3004 @@
+P2
+# ASCII PGM file created by PGMA_WRITE.
+ 200 200
+ 199
+ 0 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1 1 1 1 1 1 1 1 1 1 1
+ 1 1 1 1
+ 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 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 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 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 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
+ 0 1 0 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 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 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 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 3 3 3 3 3
+ 3 3 3 3
+ 0 0 1 0 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4 4 4 4 4 4 4 4 4 4 4
+ 4 4 4 4
+ 0 1 2 1 0 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5 5 5 5 5 5 5 5 5 5 5
+ 5 5 5 5
+ 0 0 0 2 1 0 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6 6 6 6 6 6 6 6 6 6 6
+ 6 6 6 6
+ 0 1 1 3 2 1 0 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7 7 7 7 7 7 7 7 7 7 7
+ 7 7 7 7
+ 0 0 2 0 3 2 1 0 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8 8 8 8 8 8 8 8 8 8 8
+ 8 8 8 8
+ 0 1 0 1 4 3 2 1 0 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+ 9 9 9 9
+ 0 0 1 2 0 4 3 2 1 0 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10 10 10 10 10 10 10 10 10 10 10
+ 10 10 10 10
+ 0 1 2 3 1 5 4 3 2 1 0 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ 11 11 11 11
+ 0 0 0 0 2 0 5 4 3 2 1 0 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ 12 12 12 12
+ 0 1 1 1 3 1 6 5 4 3 2 1 0 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ 13 13 13 13
+ 0 0 2 2 4 2 0 6 5 4 3 2 1 0
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ 14 14 14 14
+ 0 1 0 3 0 3 1 7 6 5 4 3 2 1
+ 0 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15 15 15 15 15 15 15 15 15 15 15
+ 15 15 15 15
+ 0 0 1 0 1 4 2 0 7 6 5 4 3 2
+ 1 0 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16 16 16 16 16 16 16 16 16 16 16
+ 16 16 16 16
+ 0 1 2 1 2 5 3 1 8 7 6 5 4 3
+ 2 1 0 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17 17 17 17 17 17 17 17 17 17 17
+ 17 17 17 17
+ 0 0 0 2 3 0 4 2 0 8 7 6 5 4
+ 3 2 1 0 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18 18 18 18 18 18 18 18 18 18 18
+ 18 18 18 18
+ 0 1 1 3 4 1 5 3 1 9 8 7 6 5
+ 4 3 2 1 0 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19 19 19 19 19 19 19 19 19 19 19
+ 19 19 19 19
+ 0 0 2 0 0 2 6 4 2 0 9 8 7 6
+ 5 4 3 2 1 0 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20 20 20 20 20 20 20 20 20 20 20
+ 20 20 20 20
+ 0 1 0 1 1 3 0 5 3 1 10 9 8 7
+ 6 5 4 3 2 1 0 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21 21 21 21 21 21 21 21 21 21 21
+ 21 21 21 21
+ 0 0 1 2 2 4 1 6 4 2 0 10 9 8
+ 7 6 5 4 3 2 1 0 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22 22 22 22 22 22 22 22 22 22 22
+ 22 22 22 22
+ 0 1 2 3 3 5 2 7 5 3 1 11 10 9
+ 8 7 6 5 4 3 2 1 0 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23 23 23 23 23 23 23 23 23 23 23
+ 23 23 23 23
+ 0 0 0 0 4 0 3 0 6 4 2 0 11 10
+ 9 8 7 6 5 4 3 2 1 0 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24 24 24 24 24 24 24 24 24 24 24
+ 24 24 24 24
+ 0 1 1 1 0 1 4 1 7 5 3 1 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25 25 25 25 25 25 25 25 25 25 25
+ 25 25 25 25
+ 0 0 2 2 1 2 5 2 8 6 4 2 0 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26 26 26 26 26 26 26 26 26 26 26
+ 26 26 26 26
+ 0 1 0 3 2 3 6 3 0 7 5 3 1 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27 27 27 27 27 27 27 27 27 27 27
+ 27 27 27 27
+ 0 0 1 0 3 4 0 4 1 8 6 4 2 0
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28 28 28 28 28 28 28 28 28 28 28
+ 28 28 28 28
+ 0 1 2 1 4 5 1 5 2 9 7 5 3 1
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29 29 29 29 29 29 29 29 29 29 29
+ 29 29 29 29
+ 0 0 0 2 0 0 2 6 3 0 8 6 4 2
+ 0 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30 30 30 30 30 30 30 30 30 30 30
+ 30 30 30 30
+ 0 1 1 3 1 1 3 7 4 1 9 7 5 3
+ 1 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31 31 31 31 31 31 31 31 31 31 31
+ 31 31 31 31
+ 0 0 2 0 2 2 4 0 5 2 10 8 6 4
+ 2 0 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32 32 32 32 32 32 32 32 32 32 32
+ 32 32 32 32
+ 0 1 0 1 3 3 5 1 6 3 0 9 7 5
+ 3 1 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33 33 33 33 33 33 33 33 33 33 33
+ 33 33 33 33
+ 0 0 1 2 4 4 6 2 7 4 1 10 8 6
+ 4 2 0 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34 34 34 34 34 34 34 34 34 34 34
+ 34 34 34 34
+ 0 1 2 3 0 5 0 3 8 5 2 11 9 7
+ 5 3 1 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35 35 35 35 35 35 35 35 35 35 35
+ 35 35 35 35
+ 0 0 0 0 1 0 1 4 0 6 3 0 10 8
+ 6 4 2 0 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36 36 36 36 36 36 36 36 36 36 36
+ 36 36 36 36
+ 0 1 1 1 2 1 2 5 1 7 4 1 11 9
+ 7 5 3 1 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37 37 37 37 37 37 37 37 37 37 37
+ 37 37 37 37
+ 0 0 2 2 3 2 3 6 2 8 5 2 12 10
+ 8 6 4 2 0 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38 38 38 38 38 38 38 38 38 38 38
+ 38 38 38 38
+ 0 1 0 3 4 3 4 7 3 9 6 3 0 11
+ 9 7 5 3 1 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39 39 39 39 39 39 39 39 39 39 39
+ 39 39 39 39
+ 0 0 1 0 0 4 5 0 4 0 7 4 1 12
+ 10 8 6 4 2 0 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40 40 40 40 40 40 40 40 40 40 40
+ 40 40 40 40
+ 0 1 2 1 1 5 6 1 5 1 8 5 2 13
+ 11 9 7 5 3 1 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41 41 41 41 41 41 41 41 41 41 41
+ 41 41 41 41
+ 0 0 0 2 2 0 0 2 6 2 9 6 3 0
+ 12 10 8 6 4 2 0 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42 42 42 42 42 42 42 42 42 42 42
+ 42 42 42 42
+ 0 1 1 3 3 1 1 3 7 3 10 7 4 1
+ 13 11 9 7 5 3 1 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43 43 43 43 43 43 43 43 43 43 43
+ 43 43 43 43
+ 0 0 2 0 4 2 2 4 8 4 0 8 5 2
+ 14 12 10 8 6 4 2 0 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+ 44 44 44 44
+ 0 1 0 1 0 3 3 5 0 5 1 9 6 3
+ 0 13 11 9 7 5 3 1 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45 45 45 45 45 45 45 45 45 45 45
+ 45 45 45 45
+ 0 0 1 2 1 4 4 6 1 6 2 10 7 4
+ 1 14 12 10 8 6 4 2 0 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46 46 46 46 46 46 46 46 46 46 46
+ 46 46 46 46
+ 0 1 2 3 2 5 5 7 2 7 3 11 8 5
+ 2 15 13 11 9 7 5 3 1 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47 47 47 47 47 47 47 47 47 47 47
+ 47 47 47 47
+ 0 0 0 0 3 0 6 0 3 8 4 0 9 6
+ 3 0 14 12 10 8 6 4 2 0 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+ 48 48 48 48
+ 0 1 1 1 4 1 0 1 4 9 5 1 10 7
+ 4 1 15 13 11 9 7 5 3 1 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49 49 49 49 49 49 49 49 49 49 49
+ 49 49 49 49
+ 0 0 2 2 0 2 1 2 5 0 6 2 11 8
+ 5 2 16 14 12 10 8 6 4 2 0 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50 50 50 50 50 50 50 50 50 50 50
+ 50 50 50 50
+ 0 1 0 3 1 3 2 3 6 1 7 3 12 9
+ 6 3 0 15 13 11 9 7 5 3 1 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51 51 51 51 51 51 51 51 51 51 51
+ 51 51 51 51
+ 0 0 1 0 2 4 3 4 7 2 8 4 0 10
+ 7 4 1 16 14 12 10 8 6 4 2 0 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52 52 52 52 52 52 52 52 52 52 52
+ 52 52 52 52
+ 0 1 2 1 3 5 4 5 8 3 9 5 1 11
+ 8 5 2 17 15 13 11 9 7 5 3 1 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53 53 53 53 53 53 53 53 53 53 53
+ 53 53 53 53
+ 0 0 0 2 4 0 5 6 0 4 10 6 2 12
+ 9 6 3 0 16 14 12 10 8 6 4 2 0 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54 54 54 54 54 54 54 54 54 54 54
+ 54 54 54 54
+ 0 1 1 3 0 1 6 7 1 5 0 7 3 13
+ 10 7 4 1 17 15 13 11 9 7 5 3 1 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+ 55 55 55 55
+ 0 0 2 0 1 2 0 0 2 6 1 8 4 0
+ 11 8 5 2 18 16 14 12 10 8 6 4 2 0
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56 56 56 56 56 56 56 56 56 56 56
+ 56 56 56 56
+ 0 1 0 1 2 3 1 1 3 7 2 9 5 1
+ 12 9 6 3 0 17 15 13 11 9 7 5 3 1
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57 57 57 57 57 57 57 57 57 57 57
+ 57 57 57 57
+ 0 0 1 2 3 4 2 2 4 8 3 10 6 2
+ 13 10 7 4 1 18 16 14 12 10 8 6 4 2
+ 0 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58 58 58 58 58 58 58 58 58 58 58
+ 58 58 58 58
+ 0 1 2 3 4 5 3 3 5 9 4 11 7 3
+ 14 11 8 5 2 19 17 15 13 11 9 7 5 3
+ 1 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59 59 59 59 59 59 59 59 59 59 59
+ 59 59 59 59
+ 0 0 0 0 0 0 4 4 6 0 5 0 8 4
+ 0 12 9 6 3 0 18 16 14 12 10 8 6 4
+ 2 0 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60 60 60 60 60 60 60 60 60 60 60
+ 60 60 60 60
+ 0 1 1 1 1 1 5 5 7 1 6 1 9 5
+ 1 13 10 7 4 1 19 17 15 13 11 9 7 5
+ 3 1 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61 61 61 61 61 61 61 61 61 61 61
+ 61 61 61 61
+ 0 0 2 2 2 2 6 6 8 2 7 2 10 6
+ 2 14 11 8 5 2 20 18 16 14 12 10 8 6
+ 4 2 0 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62 62 62 62 62 62 62 62 62 62 62
+ 62 62 62 62
+ 0 1 0 3 3 3 0 7 0 3 8 3 11 7
+ 3 15 12 9 6 3 0 19 17 15 13 11 9 7
+ 5 3 1 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63 63 63 63 63 63 63 63 63 63 63
+ 63 63 63 63
+ 0 0 1 0 4 4 1 0 1 4 9 4 12 8
+ 4 0 13 10 7 4 1 20 18 16 14 12 10 8
+ 6 4 2 0 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64 64 64 64 64 64 64 64 64 64 64
+ 64 64 64 64
+ 0 1 2 1 0 5 2 1 2 5 10 5 0 9
+ 5 1 14 11 8 5 2 21 19 17 15 13 11 9
+ 7 5 3 1 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65 65 65 65 65 65 65 65 65 65 65
+ 65 65 65 65
+ 0 0 0 2 1 0 3 2 3 6 0 6 1 10
+ 6 2 15 12 9 6 3 0 20 18 16 14 12 10
+ 8 6 4 2 0 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66 66 66 66 66 66 66 66 66 66 66
+ 66 66 66 66
+ 0 1 1 3 2 1 4 3 4 7 1 7 2 11
+ 7 3 16 13 10 7 4 1 21 19 17 15 13 11
+ 9 7 5 3 1 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67 67 67 67 67 67 67 67 67 67 67
+ 67 67 67 67
+ 0 0 2 0 3 2 5 4 5 8 2 8 3 12
+ 8 4 0 14 11 8 5 2 22 20 18 16 14 12
+ 10 8 6 4 2 0 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68 68 68 68 68 68 68 68 68 68 68
+ 68 68 68 68
+ 0 1 0 1 4 3 6 5 6 9 3 9 4 13
+ 9 5 1 15 12 9 6 3 0 21 19 17 15 13
+ 11 9 7 5 3 1 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69 69 69 69 69 69 69 69 69 69 69
+ 69 69 69 69
+ 0 0 1 2 0 4 0 6 7 0 4 10 5 0
+ 10 6 2 16 13 10 7 4 1 22 20 18 16 14
+ 12 10 8 6 4 2 0 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70 70 70 70 70 70 70 70 70 70 70
+ 70 70 70 70
+ 0 1 2 3 1 5 1 7 8 1 5 11 6 1
+ 11 7 3 17 14 11 8 5 2 23 21 19 17 15
+ 13 11 9 7 5 3 1 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71 71 71 71 71 71 71 71 71 71 71
+ 71 71 71 71
+ 0 0 0 0 2 0 2 0 0 2 6 0 7 2
+ 12 8 4 0 15 12 9 6 3 0 22 20 18 16
+ 14 12 10 8 6 4 2 0 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72 72 72 72 72 72 72 72 72 72 72
+ 72 72 72 72
+ 0 1 1 1 3 1 3 1 1 3 7 1 8 3
+ 13 9 5 1 16 13 10 7 4 1 23 21 19 17
+ 15 13 11 9 7 5 3 1 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73 73 73 73 73 73 73 73 73 73 73
+ 73 73 73 73
+ 0 0 2 2 4 2 4 2 2 4 8 2 9 4
+ 14 10 6 2 17 14 11 8 5 2 24 22 20 18
+ 16 14 12 10 8 6 4 2 0 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74 74 74 74 74 74 74 74 74 74 74
+ 74 74 74 74
+ 0 1 0 3 0 3 5 3 3 5 9 3 10 5
+ 0 11 7 3 18 15 12 9 6 3 0 23 21 19
+ 17 15 13 11 9 7 5 3 1 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75 75 75 75 75 75 75 75 75 75 75
+ 75 75 75 75
+ 0 0 1 0 1 4 6 4 4 6 10 4 11 6
+ 1 12 8 4 0 16 13 10 7 4 1 24 22 20
+ 18 16 14 12 10 8 6 4 2 0 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76 76 76 76 76 76 76 76 76 76 76
+ 76 76 76 76
+ 0 1 2 1 2 5 0 5 5 7 0 5 12 7
+ 2 13 9 5 1 17 14 11 8 5 2 25 23 21
+ 19 17 15 13 11 9 7 5 3 1 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77 77 77 77 77 77 77 77 77 77 77
+ 77 77 77 77
+ 0 0 0 2 3 0 1 6 6 8 1 6 0 8
+ 3 14 10 6 2 18 15 12 9 6 3 0 24 22
+ 20 18 16 14 12 10 8 6 4 2 0 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78 78 78 78 78 78 78 78 78 78 78
+ 78 78 78 78
+ 0 1 1 3 4 1 2 7 7 9 2 7 1 9
+ 4 15 11 7 3 19 16 13 10 7 4 1 25 23
+ 21 19 17 15 13 11 9 7 5 3 1 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79 79 79 79 79 79 79 79 79 79 79
+ 79 79 79 79
+ 0 0 2 0 0 2 3 0 8 0 3 8 2 10
+ 5 0 12 8 4 0 17 14 11 8 5 2 26 24
+ 22 20 18 16 14 12 10 8 6 4 2 0 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80 80 80 80 80 80 80 80 80 80 80
+ 80 80 80 80
+ 0 1 0 1 1 3 4 1 0 1 4 9 3 11
+ 6 1 13 9 5 1 18 15 12 9 6 3 0 25
+ 23 21 19 17 15 13 11 9 7 5 3 1 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81 81 81 81 81 81 81 81 81 81 81
+ 81 81 81 81
+ 0 0 1 2 2 4 5 2 1 2 5 10 4 12
+ 7 2 14 10 6 2 19 16 13 10 7 4 1 26
+ 24 22 20 18 16 14 12 10 8 6 4 2 0 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82 82 82 82 82 82 82 82 82 82 82
+ 82 82 82 82
+ 0 1 2 3 3 5 6 3 2 3 6 11 5 13
+ 8 3 15 11 7 3 20 17 14 11 8 5 2 27
+ 25 23 21 19 17 15 13 11 9 7 5 3 1 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83 83 83 83 83 83 83 83 83 83 83
+ 83 83 83 83
+ 0 0 0 0 4 0 0 4 3 4 7 0 6 0
+ 9 4 16 12 8 4 0 18 15 12 9 6 3 0
+ 26 24 22 20 18 16 14 12 10 8 6 4 2 0
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84 84 84 84 84 84 84 84 84 84 84
+ 84 84 84 84
+ 0 1 1 1 0 1 1 5 4 5 8 1 7 1
+ 10 5 0 13 9 5 1 19 16 13 10 7 4 1
+ 27 25 23 21 19 17 15 13 11 9 7 5 3 1
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85 85 85 85 85 85 85 85 85 85 85
+ 85 85 85 85
+ 0 0 2 2 1 2 2 6 5 6 9 2 8 2
+ 11 6 1 14 10 6 2 20 17 14 11 8 5 2
+ 28 26 24 22 20 18 16 14 12 10 8 6 4 2
+ 0 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86 86 86 86 86 86 86 86 86 86 86
+ 86 86 86 86
+ 0 1 0 3 2 3 3 7 6 7 10 3 9 3
+ 12 7 2 15 11 7 3 21 18 15 12 9 6 3
+ 0 27 25 23 21 19 17 15 13 11 9 7 5 3
+ 1 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87 87 87 87 87 87 87 87 87 87 87
+ 87 87 87 87
+ 0 0 1 0 3 4 4 0 7 8 0 4 10 4
+ 13 8 3 16 12 8 4 0 19 16 13 10 7 4
+ 1 28 26 24 22 20 18 16 14 12 10 8 6 4
+ 2 0 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88 88 88 88 88 88 88 88 88 88 88
+ 88 88 88 88
+ 0 1 2 1 4 5 5 1 8 9 1 5 11 5
+ 14 9 4 17 13 9 5 1 20 17 14 11 8 5
+ 2 29 27 25 23 21 19 17 15 13 11 9 7 5
+ 3 1 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89 89 89 89 89 89 89 89 89 89 89
+ 89 89 89 89
+ 0 0 0 2 0 0 6 2 0 0 2 6 12 6
+ 0 10 5 0 14 10 6 2 21 18 15 12 9 6
+ 3 0 28 26 24 22 20 18 16 14 12 10 8 6
+ 4 2 0 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90 90 90 90 90 90 90 90 90 90 90
+ 90 90 90 90
+ 0 1 1 3 1 1 0 3 1 1 3 7 0 7
+ 1 11 6 1 15 11 7 3 22 19 16 13 10 7
+ 4 1 29 27 25 23 21 19 17 15 13 11 9 7
+ 5 3 1 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91 91 91 91 91 91 91 91 91 91 91
+ 91 91 91 91
+ 0 0 2 0 2 2 1 4 2 2 4 8 1 8
+ 2 12 7 2 16 12 8 4 0 20 17 14 11 8
+ 5 2 30 28 26 24 22 20 18 16 14 12 10 8
+ 6 4 2 0 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92 92 92 92 92 92 92 92 92 92 92
+ 92 92 92 92
+ 0 1 0 1 3 3 2 5 3 3 5 9 2 9
+ 3 13 8 3 17 13 9 5 1 21 18 15 12 9
+ 6 3 0 29 27 25 23 21 19 17 15 13 11 9
+ 7 5 3 1 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93 93 93 93 93 93 93 93 93 93 93
+ 93 93 93 93
+ 0 0 1 2 4 4 3 6 4 4 6 10 3 10
+ 4 14 9 4 18 14 10 6 2 22 19 16 13 10
+ 7 4 1 30 28 26 24 22 20 18 16 14 12 10
+ 8 6 4 2 0 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94 94 94 94 94 94 94 94 94 94 94
+ 94 94 94 94
+ 0 1 2 3 0 5 4 7 5 5 7 11 4 11
+ 5 15 10 5 0 15 11 7 3 23 20 17 14 11
+ 8 5 2 31 29 27 25 23 21 19 17 15 13 11
+ 9 7 5 3 1 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95 95 95 95 95 95 95 95 95 95 95
+ 95 95 95 95
+ 0 0 0 0 1 0 5 0 6 6 8 0 5 12
+ 6 0 11 6 1 16 12 8 4 0 21 18 15 12
+ 9 6 3 0 30 28 26 24 22 20 18 16 14 12
+ 10 8 6 4 2 0 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96 96 96 96 96 96 96 96 96 96 96
+ 96 96 96 96
+ 0 1 1 1 2 1 6 1 7 7 9 1 6 13
+ 7 1 12 7 2 17 13 9 5 1 22 19 16 13
+ 10 7 4 1 31 29 27 25 23 21 19 17 15 13
+ 11 9 7 5 3 1 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97 97 97 97 97 97 97 97 97 97 97
+ 97 97 97 97
+ 0 0 2 2 3 2 0 2 8 8 10 2 7 0
+ 8 2 13 8 3 18 14 10 6 2 23 20 17 14
+ 11 8 5 2 32 30 28 26 24 22 20 18 16 14
+ 12 10 8 6 4 2 0 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98 98 98 98 98 98 98 98 98 98 98
+ 98 98 98 98
+ 0 1 0 3 4 3 1 3 0 9 0 3 8 1
+ 9 3 14 9 4 19 15 11 7 3 24 21 18 15
+ 12 9 6 3 0 31 29 27 25 23 21 19 17 15
+ 13 11 9 7 5 3 1 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99 99 99 99 99 99 99 99 99 99 99
+ 99 99 99 99
+ 0 0 1 0 0 4 2 4 1 0 1 4 9 2
+ 10 4 15 10 5 0 16 12 8 4 0 22 19 16
+ 13 10 7 4 1 32 30 28 26 24 22 20 18 16
+ 14 12 10 8 6 4 2 0 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100 100 100 100 100 100 100 100 100 100 100
+ 100 100 100 100
+ 0 1 2 1 1 5 3 5 2 1 2 5 10 3
+ 11 5 16 11 6 1 17 13 9 5 1 23 20 17
+ 14 11 8 5 2 33 31 29 27 25 23 21 19 17
+ 15 13 11 9 7 5 3 1 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101 101 101 101 101 101 101 101 101 101 101
+ 101 101 101 101
+ 0 0 0 2 2 0 4 6 3 2 3 6 11 4
+ 12 6 0 12 7 2 18 14 10 6 2 24 21 18
+ 15 12 9 6 3 0 32 30 28 26 24 22 20 18
+ 16 14 12 10 8 6 4 2 0 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102 102 102 102 102 102 102 102 102 102 102
+ 102 102 102 102
+ 0 1 1 3 3 1 5 7 4 3 4 7 12 5
+ 13 7 1 13 8 3 19 15 11 7 3 25 22 19
+ 16 13 10 7 4 1 33 31 29 27 25 23 21 19
+ 17 15 13 11 9 7 5 3 1 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 103 103 103 103 103 103 103 103 103
+ 103 103 103 103 103 103 103 103 103 103 103 103 103 103
+ 103 103 103 103 103 103 103 103 103 103 103 103 103 103
+ 103 103 103 103 103 103 103 103 103 103 103 103 103 103
+ 103 103 103 103 103 103 103 103 103 103 103 103 103 103
+ 103 103 103 103 103 103 103 103 103 103 103 103 103 103
+ 103 103 103 103 103 103 103 103 103 103 103 103 103 103
+ 103 103 103 103
+ 0 0 2 0 4 2 6 0 5 4 5 8 0 6
+ 14 8 2 14 9 4 20 16 12 8 4 0 23 20
+ 17 14 11 8 5 2 34 32 30 28 26 24 22 20
+ 18 16 14 12 10 8 6 4 2 0 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 104 104 104 104 104 104 104 104
+ 104 104 104 104 104 104 104 104 104 104 104 104 104 104
+ 104 104 104 104 104 104 104 104 104 104 104 104 104 104
+ 104 104 104 104 104 104 104 104 104 104 104 104 104 104
+ 104 104 104 104 104 104 104 104 104 104 104 104 104 104
+ 104 104 104 104 104 104 104 104 104 104 104 104 104 104
+ 104 104 104 104 104 104 104 104 104 104 104 104 104 104
+ 104 104 104 104
+ 0 1 0 1 0 3 0 1 6 5 6 9 1 7
+ 0 9 3 15 10 5 0 17 13 9 5 1 24 21
+ 18 15 12 9 6 3 0 33 31 29 27 25 23 21
+ 19 17 15 13 11 9 7 5 3 1 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 105 105 105 105 105 105 105
+ 105 105 105 105 105 105 105 105 105 105 105 105 105 105
+ 105 105 105 105 105 105 105 105 105 105 105 105 105 105
+ 105 105 105 105 105 105 105 105 105 105 105 105 105 105
+ 105 105 105 105 105 105 105 105 105 105 105 105 105 105
+ 105 105 105 105 105 105 105 105 105 105 105 105 105 105
+ 105 105 105 105 105 105 105 105 105 105 105 105 105 105
+ 105 105 105 105
+ 0 0 1 2 1 4 1 2 7 6 7 10 2 8
+ 1 10 4 16 11 6 1 18 14 10 6 2 25 22
+ 19 16 13 10 7 4 1 34 32 30 28 26 24 22
+ 20 18 16 14 12 10 8 6 4 2 0 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 106 106 106 106 106 106
+ 106 106 106 106 106 106 106 106 106 106 106 106 106 106
+ 106 106 106 106 106 106 106 106 106 106 106 106 106 106
+ 106 106 106 106 106 106 106 106 106 106 106 106 106 106
+ 106 106 106 106 106 106 106 106 106 106 106 106 106 106
+ 106 106 106 106 106 106 106 106 106 106 106 106 106 106
+ 106 106 106 106 106 106 106 106 106 106 106 106 106 106
+ 106 106 106 106
+ 0 1 2 3 2 5 2 3 8 7 8 11 3 9
+ 2 11 5 17 12 7 2 19 15 11 7 3 26 23
+ 20 17 14 11 8 5 2 35 33 31 29 27 25 23
+ 21 19 17 15 13 11 9 7 5 3 1 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 107 107 107 107 107
+ 107 107 107 107 107 107 107 107 107 107 107 107 107 107
+ 107 107 107 107 107 107 107 107 107 107 107 107 107 107
+ 107 107 107 107 107 107 107 107 107 107 107 107 107 107
+ 107 107 107 107 107 107 107 107 107 107 107 107 107 107
+ 107 107 107 107 107 107 107 107 107 107 107 107 107 107
+ 107 107 107 107 107 107 107 107 107 107 107 107 107 107
+ 107 107 107 107
+ 0 0 0 0 3 0 3 4 0 8 9 0 4 10
+ 3 12 6 0 13 8 3 20 16 12 8 4 0 24
+ 21 18 15 12 9 6 3 0 34 32 30 28 26 24
+ 22 20 18 16 14 12 10 8 6 4 2 0 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 108 108 108 108
+ 108 108 108 108 108 108 108 108 108 108 108 108 108 108
+ 108 108 108 108 108 108 108 108 108 108 108 108 108 108
+ 108 108 108 108 108 108 108 108 108 108 108 108 108 108
+ 108 108 108 108 108 108 108 108 108 108 108 108 108 108
+ 108 108 108 108 108 108 108 108 108 108 108 108 108 108
+ 108 108 108 108 108 108 108 108 108 108 108 108 108 108
+ 108 108 108 108
+ 0 1 1 1 4 1 4 5 1 9 10 1 5 11
+ 4 13 7 1 14 9 4 21 17 13 9 5 1 25
+ 22 19 16 13 10 7 4 1 35 33 31 29 27 25
+ 23 21 19 17 15 13 11 9 7 5 3 1 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 109 109 109
+ 109 109 109 109 109 109 109 109 109 109 109 109 109 109
+ 109 109 109 109 109 109 109 109 109 109 109 109 109 109
+ 109 109 109 109 109 109 109 109 109 109 109 109 109 109
+ 109 109 109 109 109 109 109 109 109 109 109 109 109 109
+ 109 109 109 109 109 109 109 109 109 109 109 109 109 109
+ 109 109 109 109 109 109 109 109 109 109 109 109 109 109
+ 109 109 109 109
+ 0 0 2 2 0 2 5 6 2 0 0 2 6 12
+ 5 14 8 2 15 10 5 0 18 14 10 6 2 26
+ 23 20 17 14 11 8 5 2 36 34 32 30 28 26
+ 24 22 20 18 16 14 12 10 8 6 4 2 0 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 110 110
+ 110 110 110 110 110 110 110 110 110 110 110 110 110 110
+ 110 110 110 110 110 110 110 110 110 110 110 110 110 110
+ 110 110 110 110 110 110 110 110 110 110 110 110 110 110
+ 110 110 110 110 110 110 110 110 110 110 110 110 110 110
+ 110 110 110 110 110 110 110 110 110 110 110 110 110 110
+ 110 110 110 110 110 110 110 110 110 110 110 110 110 110
+ 110 110 110 110
+ 0 1 0 3 1 3 6 7 3 1 1 3 7 13
+ 6 15 9 3 16 11 6 1 19 15 11 7 3 27
+ 24 21 18 15 12 9 6 3 0 35 33 31 29 27
+ 25 23 21 19 17 15 13 11 9 7 5 3 1 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 111
+ 111 111 111 111 111 111 111 111 111 111 111 111 111 111
+ 111 111 111 111 111 111 111 111 111 111 111 111 111 111
+ 111 111 111 111 111 111 111 111 111 111 111 111 111 111
+ 111 111 111 111 111 111 111 111 111 111 111 111 111 111
+ 111 111 111 111 111 111 111 111 111 111 111 111 111 111
+ 111 111 111 111 111 111 111 111 111 111 111 111 111 111
+ 111 111 111 111
+ 0 0 1 0 2 4 0 0 4 2 2 4 8 0
+ 7 0 10 4 17 12 7 2 20 16 12 8 4 0
+ 25 22 19 16 13 10 7 4 1 36 34 32 30 28
+ 26 24 22 20 18 16 14 12 10 8 6 4 2 0
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 112 112 112 112 112 112 112 112 112 112 112 112 112 112
+ 112 112 112 112 112 112 112 112 112 112 112 112 112 112
+ 112 112 112 112 112 112 112 112 112 112 112 112 112 112
+ 112 112 112 112 112 112 112 112 112 112 112 112 112 112
+ 112 112 112 112 112 112 112 112 112 112 112 112 112 112
+ 112 112 112 112 112 112 112 112 112 112 112 112 112 112
+ 112 112 112 112
+ 0 1 2 1 3 5 1 1 5 3 3 5 9 1
+ 8 1 11 5 18 13 8 3 21 17 13 9 5 1
+ 26 23 20 17 14 11 8 5 2 37 35 33 31 29
+ 27 25 23 21 19 17 15 13 11 9 7 5 3 1
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 113 113 113 113 113 113 113 113 113 113 113 113 113
+ 113 113 113 113 113 113 113 113 113 113 113 113 113 113
+ 113 113 113 113 113 113 113 113 113 113 113 113 113 113
+ 113 113 113 113 113 113 113 113 113 113 113 113 113 113
+ 113 113 113 113 113 113 113 113 113 113 113 113 113 113
+ 113 113 113 113 113 113 113 113 113 113 113 113 113 113
+ 113 113 113 113
+ 0 0 0 2 4 0 2 2 6 4 4 6 10 2
+ 9 2 12 6 0 14 9 4 22 18 14 10 6 2
+ 27 24 21 18 15 12 9 6 3 0 36 34 32 30
+ 28 26 24 22 20 18 16 14 12 10 8 6 4 2
+ 0 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 114 114 114 114 114 114 114 114 114 114 114 114
+ 114 114 114 114 114 114 114 114 114 114 114 114 114 114
+ 114 114 114 114 114 114 114 114 114 114 114 114 114 114
+ 114 114 114 114 114 114 114 114 114 114 114 114 114 114
+ 114 114 114 114 114 114 114 114 114 114 114 114 114 114
+ 114 114 114 114 114 114 114 114 114 114 114 114 114 114
+ 114 114 114 114
+ 0 1 1 3 0 1 3 3 7 5 5 7 11 3
+ 10 3 13 7 1 15 10 5 0 19 15 11 7 3
+ 28 25 22 19 16 13 10 7 4 1 37 35 33 31
+ 29 27 25 23 21 19 17 15 13 11 9 7 5 3
+ 1 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 115 115 115 115 115 115 115 115 115 115 115
+ 115 115 115 115 115 115 115 115 115 115 115 115 115 115
+ 115 115 115 115 115 115 115 115 115 115 115 115 115 115
+ 115 115 115 115 115 115 115 115 115 115 115 115 115 115
+ 115 115 115 115 115 115 115 115 115 115 115 115 115 115
+ 115 115 115 115 115 115 115 115 115 115 115 115 115 115
+ 115 115 115 115
+ 0 0 2 0 1 2 4 4 8 6 6 8 12 4
+ 11 4 14 8 2 16 11 6 1 20 16 12 8 4
+ 0 26 23 20 17 14 11 8 5 2 38 36 34 32
+ 30 28 26 24 22 20 18 16 14 12 10 8 6 4
+ 2 0 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 116 116 116 116 116 116 116 116 116 116
+ 116 116 116 116 116 116 116 116 116 116 116 116 116 116
+ 116 116 116 116 116 116 116 116 116 116 116 116 116 116
+ 116 116 116 116 116 116 116 116 116 116 116 116 116 116
+ 116 116 116 116 116 116 116 116 116 116 116 116 116 116
+ 116 116 116 116 116 116 116 116 116 116 116 116 116 116
+ 116 116 116 116
+ 0 1 0 1 2 3 5 5 0 7 7 9 0 5
+ 12 5 15 9 3 17 12 7 2 21 17 13 9 5
+ 1 27 24 21 18 15 12 9 6 3 0 37 35 33
+ 31 29 27 25 23 21 19 17 15 13 11 9 7 5
+ 3 1 58 57 56 55 54 53 52 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 117 117 117 117 117 117 117 117 117
+ 117 117 117 117 117 117 117 117 117 117 117 117 117 117
+ 117 117 117 117 117 117 117 117 117 117 117 117 117 117
+ 117 117 117 117 117 117 117 117 117 117 117 117 117 117
+ 117 117 117 117 117 117 117 117 117 117 117 117 117 117
+ 117 117 117 117 117 117 117 117 117 117 117 117 117 117
+ 117 117 117 117
+ 0 0 1 2 3 4 6 6 1 8 8 10 1 6
+ 13 6 16 10 4 18 13 8 3 22 18 14 10 6
+ 2 28 25 22 19 16 13 10 7 4 1 38 36 34
+ 32 30 28 26 24 22 20 18 16 14 12 10 8 6
+ 4 2 0 58 57 56 55 54 53 52 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 118 118 118 118 118 118 118 118
+ 118 118 118 118 118 118 118 118 118 118 118 118 118 118
+ 118 118 118 118 118 118 118 118 118 118 118 118 118 118
+ 118 118 118 118 118 118 118 118 118 118 118 118 118 118
+ 118 118 118 118 118 118 118 118 118 118 118 118 118 118
+ 118 118 118 118 118 118 118 118 118 118 118 118 118 118
+ 118 118 118 118
+ 0 1 2 3 4 5 0 7 2 9 9 11 2 7
+ 14 7 0 11 5 19 14 9 4 23 19 15 11 7
+ 3 29 26 23 20 17 14 11 8 5 2 39 37 35
+ 33 31 29 27 25 23 21 19 17 15 13 11 9 7
+ 5 3 1 59 58 57 56 55 54 53 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 119 119 119 119 119 119 119
+ 119 119 119 119 119 119 119 119 119 119 119 119 119 119
+ 119 119 119 119 119 119 119 119 119 119 119 119 119 119
+ 119 119 119 119 119 119 119 119 119 119 119 119 119 119
+ 119 119 119 119 119 119 119 119 119 119 119 119 119 119
+ 119 119 119 119 119 119 119 119 119 119 119 119 119 119
+ 119 119 119 119
+ 0 0 0 0 0 0 1 0 3 0 10 0 3 8
+ 0 8 1 12 6 0 15 10 5 0 20 16 12 8
+ 4 0 27 24 21 18 15 12 9 6 3 0 38 36
+ 34 32 30 28 26 24 22 20 18 16 14 12 10 8
+ 6 4 2 0 59 58 57 56 55 54 53 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 120 120 120 120 120 120
+ 120 120 120 120 120 120 120 120 120 120 120 120 120 120
+ 120 120 120 120 120 120 120 120 120 120 120 120 120 120
+ 120 120 120 120 120 120 120 120 120 120 120 120 120 120
+ 120 120 120 120 120 120 120 120 120 120 120 120 120 120
+ 120 120 120 120 120 120 120 120 120 120 120 120 120 120
+ 120 120 120 120
+ 0 1 1 1 1 1 2 1 4 1 0 1 4 9
+ 1 9 2 13 7 1 16 11 6 1 21 17 13 9
+ 5 1 28 25 22 19 16 13 10 7 4 1 39 37
+ 35 33 31 29 27 25 23 21 19 17 15 13 11 9
+ 7 5 3 1 60 59 58 57 56 55 54 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 121 121 121 121 121
+ 121 121 121 121 121 121 121 121 121 121 121 121 121 121
+ 121 121 121 121 121 121 121 121 121 121 121 121 121 121
+ 121 121 121 121 121 121 121 121 121 121 121 121 121 121
+ 121 121 121 121 121 121 121 121 121 121 121 121 121 121
+ 121 121 121 121 121 121 121 121 121 121 121 121 121 121
+ 121 121 121 121
+ 0 0 2 2 2 2 3 2 5 2 1 2 5 10
+ 2 10 3 14 8 2 17 12 7 2 22 18 14 10
+ 6 2 29 26 23 20 17 14 11 8 5 2 40 38
+ 36 34 32 30 28 26 24 22 20 18 16 14 12 10
+ 8 6 4 2 0 60 59 58 57 56 55 54 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 122 122 122 122
+ 122 122 122 122 122 122 122 122 122 122 122 122 122 122
+ 122 122 122 122 122 122 122 122 122 122 122 122 122 122
+ 122 122 122 122 122 122 122 122 122 122 122 122 122 122
+ 122 122 122 122 122 122 122 122 122 122 122 122 122 122
+ 122 122 122 122 122 122 122 122 122 122 122 122 122 122
+ 122 122 122 122
+ 0 1 0 3 3 3 4 3 6 3 2 3 6 11
+ 3 11 4 15 9 3 18 13 8 3 23 19 15 11
+ 7 3 30 27 24 21 18 15 12 9 6 3 0 39
+ 37 35 33 31 29 27 25 23 21 19 17 15 13 11
+ 9 7 5 3 1 61 60 59 58 57 56 55 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 123 123 123
+ 123 123 123 123 123 123 123 123 123 123 123 123 123 123
+ 123 123 123 123 123 123 123 123 123 123 123 123 123 123
+ 123 123 123 123 123 123 123 123 123 123 123 123 123 123
+ 123 123 123 123 123 123 123 123 123 123 123 123 123 123
+ 123 123 123 123 123 123 123 123 123 123 123 123 123 123
+ 123 123 123 123
+ 0 0 1 0 4 4 5 4 7 4 3 4 7 12
+ 4 12 5 16 10 4 19 14 9 4 24 20 16 12
+ 8 4 0 28 25 22 19 16 13 10 7 4 1 40
+ 38 36 34 32 30 28 26 24 22 20 18 16 14 12
+ 10 8 6 4 2 0 61 60 59 58 57 56 55 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 124 124
+ 124 124 124 124 124 124 124 124 124 124 124 124 124 124
+ 124 124 124 124 124 124 124 124 124 124 124 124 124 124
+ 124 124 124 124 124 124 124 124 124 124 124 124 124 124
+ 124 124 124 124 124 124 124 124 124 124 124 124 124 124
+ 124 124 124 124 124 124 124 124 124 124 124 124 124 124
+ 124 124 124 124
+ 0 1 2 1 0 5 6 5 8 5 4 5 8 13
+ 5 13 6 17 11 5 20 15 10 5 0 21 17 13
+ 9 5 1 29 26 23 20 17 14 11 8 5 2 41
+ 39 37 35 33 31 29 27 25 23 21 19 17 15 13
+ 11 9 7 5 3 1 62 61 60 59 58 57 56 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 125
+ 125 125 125 125 125 125 125 125 125 125 125 125 125 125
+ 125 125 125 125 125 125 125 125 125 125 125 125 125 125
+ 125 125 125 125 125 125 125 125 125 125 125 125 125 125
+ 125 125 125 125 125 125 125 125 125 125 125 125 125 125
+ 125 125 125 125 125 125 125 125 125 125 125 125 125 125
+ 125 125 125 125
+ 0 0 0 2 1 0 0 6 0 6 5 6 9 0
+ 6 14 7 0 12 6 0 16 11 6 1 22 18 14
+ 10 6 2 30 27 24 21 18 15 12 9 6 3 0
+ 40 38 36 34 32 30 28 26 24 22 20 18 16 14
+ 12 10 8 6 4 2 0 62 61 60 59 58 57 56
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 126 126 126 126 126 126 126 126 126 126 126 126 126 126
+ 126 126 126 126 126 126 126 126 126 126 126 126 126 126
+ 126 126 126 126 126 126 126 126 126 126 126 126 126 126
+ 126 126 126 126 126 126 126 126 126 126 126 126 126 126
+ 126 126 126 126 126 126 126 126 126 126 126 126 126 126
+ 126 126 126 126
+ 0 1 1 3 2 1 1 7 1 7 6 7 10 1
+ 7 15 8 1 13 7 1 17 12 7 2 23 19 15
+ 11 7 3 31 28 25 22 19 16 13 10 7 4 1
+ 41 39 37 35 33 31 29 27 25 23 21 19 17 15
+ 13 11 9 7 5 3 1 63 62 61 60 59 58 57
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 127 127 127 127 127 127 127 127 127 127 127 127 127
+ 127 127 127 127 127 127 127 127 127 127 127 127 127 127
+ 127 127 127 127 127 127 127 127 127 127 127 127 127 127
+ 127 127 127 127 127 127 127 127 127 127 127 127 127 127
+ 127 127 127 127 127 127 127 127 127 127 127 127 127 127
+ 127 127 127 127
+ 0 0 2 0 3 2 2 0 2 8 7 8 11 2
+ 8 0 9 2 14 8 2 18 13 8 3 24 20 16
+ 12 8 4 0 29 26 23 20 17 14 11 8 5 2
+ 42 40 38 36 34 32 30 28 26 24 22 20 18 16
+ 14 12 10 8 6 4 2 0 63 62 61 60 59 58
+ 57 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 128 128 128 128 128 128 128 128 128 128 128 128
+ 128 128 128 128 128 128 128 128 128 128 128 128 128 128
+ 128 128 128 128 128 128 128 128 128 128 128 128 128 128
+ 128 128 128 128 128 128 128 128 128 128 128 128 128 128
+ 128 128 128 128 128 128 128 128 128 128 128 128 128 128
+ 128 128 128 128
+ 0 1 0 1 4 3 3 1 3 9 8 9 12 3
+ 9 1 10 3 15 9 3 19 14 9 4 25 21 17
+ 13 9 5 1 30 27 24 21 18 15 12 9 6 3
+ 0 41 39 37 35 33 31 29 27 25 23 21 19 17
+ 15 13 11 9 7 5 3 1 64 63 62 61 60 59
+ 58 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 129 129 129 129 129 129 129 129 129 129 129
+ 129 129 129 129 129 129 129 129 129 129 129 129 129 129
+ 129 129 129 129 129 129 129 129 129 129 129 129 129 129
+ 129 129 129 129 129 129 129 129 129 129 129 129 129 129
+ 129 129 129 129 129 129 129 129 129 129 129 129 129 129
+ 129 129 129 129
+ 0 0 1 2 0 4 4 2 4 0 9 10 0 4
+ 10 2 11 4 16 10 4 20 15 10 5 0 22 18
+ 14 10 6 2 31 28 25 22 19 16 13 10 7 4
+ 1 42 40 38 36 34 32 30 28 26 24 22 20 18
+ 16 14 12 10 8 6 4 2 0 64 63 62 61 60
+ 59 58 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 130 130 130 130 130 130 130 130 130 130
+ 130 130 130 130 130 130 130 130 130 130 130 130 130 130
+ 130 130 130 130 130 130 130 130 130 130 130 130 130 130
+ 130 130 130 130 130 130 130 130 130 130 130 130 130 130
+ 130 130 130 130 130 130 130 130 130 130 130 130 130 130
+ 130 130 130 130
+ 0 1 2 3 1 5 5 3 5 1 10 11 1 5
+ 11 3 12 5 17 11 5 21 16 11 6 1 23 19
+ 15 11 7 3 32 29 26 23 20 17 14 11 8 5
+ 2 43 41 39 37 35 33 31 29 27 25 23 21 19
+ 17 15 13 11 9 7 5 3 1 65 64 63 62 61
+ 60 59 58 57 56 55 54 53 52 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 131 131 131 131 131 131 131 131 131
+ 131 131 131 131 131 131 131 131 131 131 131 131 131 131
+ 131 131 131 131 131 131 131 131 131 131 131 131 131 131
+ 131 131 131 131 131 131 131 131 131 131 131 131 131 131
+ 131 131 131 131 131 131 131 131 131 131 131 131 131 131
+ 131 131 131 131
+ 0 0 0 0 2 0 6 4 6 2 0 0 2 6
+ 12 4 13 6 18 12 6 0 17 12 7 2 24 20
+ 16 12 8 4 0 30 27 24 21 18 15 12 9 6
+ 3 0 42 40 38 36 34 32 30 28 26 24 22 20
+ 18 16 14 12 10 8 6 4 2 0 65 64 63 62
+ 61 60 59 58 57 56 55 54 53 52 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 132 132 132 132 132 132 132 132
+ 132 132 132 132 132 132 132 132 132 132 132 132 132 132
+ 132 132 132 132 132 132 132 132 132 132 132 132 132 132
+ 132 132 132 132 132 132 132 132 132 132 132 132 132 132
+ 132 132 132 132 132 132 132 132 132 132 132 132 132 132
+ 132 132 132 132
+ 0 1 1 1 3 1 0 5 7 3 1 1 3 7
+ 13 5 14 7 0 13 7 1 18 13 8 3 25 21
+ 17 13 9 5 1 31 28 25 22 19 16 13 10 7
+ 4 1 43 41 39 37 35 33 31 29 27 25 23 21
+ 19 17 15 13 11 9 7 5 3 1 66 65 64 63
+ 62 61 60 59 58 57 56 55 54 53 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 133 133 133 133 133 133 133
+ 133 133 133 133 133 133 133 133 133 133 133 133 133 133
+ 133 133 133 133 133 133 133 133 133 133 133 133 133 133
+ 133 133 133 133 133 133 133 133 133 133 133 133 133 133
+ 133 133 133 133 133 133 133 133 133 133 133 133 133 133
+ 133 133 133 133
+ 0 0 2 2 4 2 1 6 8 4 2 2 4 8
+ 14 6 15 8 1 14 8 2 19 14 9 4 26 22
+ 18 14 10 6 2 32 29 26 23 20 17 14 11 8
+ 5 2 44 42 40 38 36 34 32 30 28 26 24 22
+ 20 18 16 14 12 10 8 6 4 2 0 66 65 64
+ 63 62 61 60 59 58 57 56 55 54 53 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 134 134 134 134 134 134
+ 134 134 134 134 134 134 134 134 134 134 134 134 134 134
+ 134 134 134 134 134 134 134 134 134 134 134 134 134 134
+ 134 134 134 134 134 134 134 134 134 134 134 134 134 134
+ 134 134 134 134 134 134 134 134 134 134 134 134 134 134
+ 134 134 134 134
+ 0 1 0 3 0 3 2 7 0 5 3 3 5 9
+ 0 7 16 9 2 15 9 3 20 15 10 5 0 23
+ 19 15 11 7 3 33 30 27 24 21 18 15 12 9
+ 6 3 0 43 41 39 37 35 33 31 29 27 25 23
+ 21 19 17 15 13 11 9 7 5 3 1 67 66 65
+ 64 63 62 61 60 59 58 57 56 55 54 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 135 135 135 135 135
+ 135 135 135 135 135 135 135 135 135 135 135 135 135 135
+ 135 135 135 135 135 135 135 135 135 135 135 135 135 135
+ 135 135 135 135 135 135 135 135 135 135 135 135 135 135
+ 135 135 135 135 135 135 135 135 135 135 135 135 135 135
+ 135 135 135 135
+ 0 0 1 0 1 4 3 0 1 6 4 4 6 10
+ 1 8 0 10 3 16 10 4 21 16 11 6 1 24
+ 20 16 12 8 4 0 31 28 25 22 19 16 13 10
+ 7 4 1 44 42 40 38 36 34 32 30 28 26 24
+ 22 20 18 16 14 12 10 8 6 4 2 0 67 66
+ 65 64 63 62 61 60 59 58 57 56 55 54 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 136 136 136 136
+ 136 136 136 136 136 136 136 136 136 136 136 136 136 136
+ 136 136 136 136 136 136 136 136 136 136 136 136 136 136
+ 136 136 136 136 136 136 136 136 136 136 136 136 136 136
+ 136 136 136 136 136 136 136 136 136 136 136 136 136 136
+ 136 136 136 136
+ 0 1 2 1 2 5 4 1 2 7 5 5 7 11
+ 2 9 1 11 4 17 11 5 22 17 12 7 2 25
+ 21 17 13 9 5 1 32 29 26 23 20 17 14 11
+ 8 5 2 45 43 41 39 37 35 33 31 29 27 25
+ 23 21 19 17 15 13 11 9 7 5 3 1 68 67
+ 66 65 64 63 62 61 60 59 58 57 56 55 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 137 137 137
+ 137 137 137 137 137 137 137 137 137 137 137 137 137 137
+ 137 137 137 137 137 137 137 137 137 137 137 137 137 137
+ 137 137 137 137 137 137 137 137 137 137 137 137 137 137
+ 137 137 137 137 137 137 137 137 137 137 137 137 137 137
+ 137 137 137 137
+ 0 0 0 2 3 0 5 2 3 8 6 6 8 12
+ 3 10 2 12 5 18 12 6 0 18 13 8 3 26
+ 22 18 14 10 6 2 33 30 27 24 21 18 15 12
+ 9 6 3 0 44 42 40 38 36 34 32 30 28 26
+ 24 22 20 18 16 14 12 10 8 6 4 2 0 68
+ 67 66 65 64 63 62 61 60 59 58 57 56 55 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 138 138
+ 138 138 138 138 138 138 138 138 138 138 138 138 138 138
+ 138 138 138 138 138 138 138 138 138 138 138 138 138 138
+ 138 138 138 138 138 138 138 138 138 138 138 138 138 138
+ 138 138 138 138 138 138 138 138 138 138 138 138 138 138
+ 138 138 138 138
+ 0 1 1 3 4 1 6 3 4 9 7 7 9 13
+ 4 11 3 13 6 19 13 7 1 19 14 9 4 27
+ 23 19 15 11 7 3 34 31 28 25 22 19 16 13
+ 10 7 4 1 45 43 41 39 37 35 33 31 29 27
+ 25 23 21 19 17 15 13 11 9 7 5 3 1 69
+ 68 67 66 65 64 63 62 61 60 59 58 57 56 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 139
+ 139 139 139 139 139 139 139 139 139 139 139 139 139 139
+ 139 139 139 139 139 139 139 139 139 139 139 139 139 139
+ 139 139 139 139 139 139 139 139 139 139 139 139 139 139
+ 139 139 139 139 139 139 139 139 139 139 139 139 139 139
+ 139 139 139 139
+ 0 0 2 0 0 2 0 4 5 0 8 8 10 0
+ 5 12 4 14 7 0 14 8 2 20 15 10 5 0
+ 24 20 16 12 8 4 0 32 29 26 23 20 17 14
+ 11 8 5 2 46 44 42 40 38 36 34 32 30 28
+ 26 24 22 20 18 16 14 12 10 8 6 4 2 0
+ 69 68 67 66 65 64 63 62 61 60 59 58 57 56
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 140 140 140 140 140 140 140 140 140 140 140 140 140 140
+ 140 140 140 140 140 140 140 140 140 140 140 140 140 140
+ 140 140 140 140 140 140 140 140 140 140 140 140 140 140
+ 140 140 140 140 140 140 140 140 140 140 140 140 140 140
+ 140 140 140 140
+ 0 1 0 1 1 3 1 5 6 1 9 9 11 1
+ 6 13 5 15 8 1 15 9 3 21 16 11 6 1
+ 25 21 17 13 9 5 1 33 30 27 24 21 18 15
+ 12 9 6 3 0 45 43 41 39 37 35 33 31 29
+ 27 25 23 21 19 17 15 13 11 9 7 5 3 1
+ 70 69 68 67 66 65 64 63 62 61 60 59 58 57
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 141 141 141 141 141 141 141 141 141 141 141 141 141
+ 141 141 141 141 141 141 141 141 141 141 141 141 141 141
+ 141 141 141 141 141 141 141 141 141 141 141 141 141 141
+ 141 141 141 141 141 141 141 141 141 141 141 141 141 141
+ 141 141 141 141
+ 0 0 1 2 2 4 2 6 7 2 10 10 12 2
+ 7 14 6 16 9 2 16 10 4 22 17 12 7 2
+ 26 22 18 14 10 6 2 34 31 28 25 22 19 16
+ 13 10 7 4 1 46 44 42 40 38 36 34 32 30
+ 28 26 24 22 20 18 16 14 12 10 8 6 4 2
+ 0 70 69 68 67 66 65 64 63 62 61 60 59 58
+ 57 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 142 142 142 142 142 142 142 142 142 142 142 142
+ 142 142 142 142 142 142 142 142 142 142 142 142 142 142
+ 142 142 142 142 142 142 142 142 142 142 142 142 142 142
+ 142 142 142 142 142 142 142 142 142 142 142 142 142 142
+ 142 142 142 142
+ 0 1 2 3 3 5 3 7 8 3 0 11 0 3
+ 8 15 7 17 10 3 17 11 5 23 18 13 8 3
+ 27 23 19 15 11 7 3 35 32 29 26 23 20 17
+ 14 11 8 5 2 47 45 43 41 39 37 35 33 31
+ 29 27 25 23 21 19 17 15 13 11 9 7 5 3
+ 1 71 70 69 68 67 66 65 64 63 62 61 60 59
+ 58 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 143 143 143 143 143 143 143 143 143 143 143
+ 143 143 143 143 143 143 143 143 143 143 143 143 143 143
+ 143 143 143 143 143 143 143 143 143 143 143 143 143 143
+ 143 143 143 143 143 143 143 143 143 143 143 143 143 143
+ 143 143 143 143
+ 0 0 0 0 4 0 4 0 0 4 1 0 1 4
+ 9 0 8 0 11 4 18 12 6 0 19 14 9 4
+ 28 24 20 16 12 8 4 0 33 30 27 24 21 18
+ 15 12 9 6 3 0 46 44 42 40 38 36 34 32
+ 30 28 26 24 22 20 18 16 14 12 10 8 6 4
+ 2 0 71 70 69 68 67 66 65 64 63 62 61 60
+ 59 58 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 144 144 144 144 144 144 144 144 144 144
+ 144 144 144 144 144 144 144 144 144 144 144 144 144 144
+ 144 144 144 144 144 144 144 144 144 144 144 144 144 144
+ 144 144 144 144 144 144 144 144 144 144 144 144 144 144
+ 144 144 144 144
+ 0 1 1 1 0 1 5 1 1 5 2 1 2 5
+ 10 1 9 1 12 5 19 13 7 1 20 15 10 5
+ 0 25 21 17 13 9 5 1 34 31 28 25 22 19
+ 16 13 10 7 4 1 47 45 43 41 39 37 35 33
+ 31 29 27 25 23 21 19 17 15 13 11 9 7 5
+ 3 1 72 71 70 69 68 67 66 65 64 63 62 61
+ 60 59 58 57 56 55 54 53 52 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 145 145 145 145 145 145 145 145 145
+ 145 145 145 145 145 145 145 145 145 145 145 145 145 145
+ 145 145 145 145 145 145 145 145 145 145 145 145 145 145
+ 145 145 145 145 145 145 145 145 145 145 145 145 145 145
+ 145 145 145 145
+ 0 0 2 2 1 2 6 2 2 6 3 2 3 6
+ 11 2 10 2 13 6 20 14 8 2 21 16 11 6
+ 1 26 22 18 14 10 6 2 35 32 29 26 23 20
+ 17 14 11 8 5 2 48 46 44 42 40 38 36 34
+ 32 30 28 26 24 22 20 18 16 14 12 10 8 6
+ 4 2 0 72 71 70 69 68 67 66 65 64 63 62
+ 61 60 59 58 57 56 55 54 53 52 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 146 146 146 146 146 146 146 146
+ 146 146 146 146 146 146 146 146 146 146 146 146 146 146
+ 146 146 146 146 146 146 146 146 146 146 146 146 146 146
+ 146 146 146 146 146 146 146 146 146 146 146 146 146 146
+ 146 146 146 146
+ 0 1 0 3 2 3 0 3 3 7 4 3 4 7
+ 12 3 11 3 14 7 0 15 9 3 22 17 12 7
+ 2 27 23 19 15 11 7 3 36 33 30 27 24 21
+ 18 15 12 9 6 3 0 47 45 43 41 39 37 35
+ 33 31 29 27 25 23 21 19 17 15 13 11 9 7
+ 5 3 1 73 72 71 70 69 68 67 66 65 64 63
+ 62 61 60 59 58 57 56 55 54 53 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 147 147 147 147 147 147 147
+ 147 147 147 147 147 147 147 147 147 147 147 147 147 147
+ 147 147 147 147 147 147 147 147 147 147 147 147 147 147
+ 147 147 147 147 147 147 147 147 147 147 147 147 147 147
+ 147 147 147 147
+ 0 0 1 0 3 4 1 4 4 8 5 4 5 8
+ 13 4 12 4 15 8 1 16 10 4 23 18 13 8
+ 3 28 24 20 16 12 8 4 0 34 31 28 25 22
+ 19 16 13 10 7 4 1 48 46 44 42 40 38 36
+ 34 32 30 28 26 24 22 20 18 16 14 12 10 8
+ 6 4 2 0 73 72 71 70 69 68 67 66 65 64
+ 63 62 61 60 59 58 57 56 55 54 53 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 148 148 148 148 148 148
+ 148 148 148 148 148 148 148 148 148 148 148 148 148 148
+ 148 148 148 148 148 148 148 148 148 148 148 148 148 148
+ 148 148 148 148 148 148 148 148 148 148 148 148 148 148
+ 148 148 148 148
+ 0 1 2 1 4 5 2 5 5 9 6 5 6 9
+ 14 5 13 5 16 9 2 17 11 5 24 19 14 9
+ 4 29 25 21 17 13 9 5 1 35 32 29 26 23
+ 20 17 14 11 8 5 2 49 47 45 43 41 39 37
+ 35 33 31 29 27 25 23 21 19 17 15 13 11 9
+ 7 5 3 1 74 73 72 71 70 69 68 67 66 65
+ 64 63 62 61 60 59 58 57 56 55 54 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 149 149 149 149 149
+ 149 149 149 149 149 149 149 149 149 149 149 149 149 149
+ 149 149 149 149 149 149 149 149 149 149 149 149 149 149
+ 149 149 149 149 149 149 149 149 149 149 149 149 149 149
+ 149 149 149 149
+ 0 0 0 2 0 0 3 6 6 0 7 6 7 10
+ 0 6 14 6 17 10 3 18 12 6 0 20 15 10
+ 5 0 26 22 18 14 10 6 2 36 33 30 27 24
+ 21 18 15 12 9 6 3 0 48 46 44 42 40 38
+ 36 34 32 30 28 26 24 22 20 18 16 14 12 10
+ 8 6 4 2 0 74 73 72 71 70 69 68 67 66
+ 65 64 63 62 61 60 59 58 57 56 55 54 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 150 150 150 150
+ 150 150 150 150 150 150 150 150 150 150 150 150 150 150
+ 150 150 150 150 150 150 150 150 150 150 150 150 150 150
+ 150 150 150 150 150 150 150 150 150 150 150 150 150 150
+ 150 150 150 150
+ 0 1 1 3 1 1 4 7 7 1 8 7 8 11
+ 1 7 15 7 18 11 4 19 13 7 1 21 16 11
+ 6 1 27 23 19 15 11 7 3 37 34 31 28 25
+ 22 19 16 13 10 7 4 1 49 47 45 43 41 39
+ 37 35 33 31 29 27 25 23 21 19 17 15 13 11
+ 9 7 5 3 1 75 74 73 72 71 70 69 68 67
+ 66 65 64 63 62 61 60 59 58 57 56 55 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 151 151 151
+ 151 151 151 151 151 151 151 151 151 151 151 151 151 151
+ 151 151 151 151 151 151 151 151 151 151 151 151 151 151
+ 151 151 151 151 151 151 151 151 151 151 151 151 151 151
+ 151 151 151 151
+ 0 0 2 0 2 2 5 0 8 2 9 8 9 12
+ 2 8 16 8 0 12 5 20 14 8 2 22 17 12
+ 7 2 28 24 20 16 12 8 4 0 35 32 29 26
+ 23 20 17 14 11 8 5 2 50 48 46 44 42 40
+ 38 36 34 32 30 28 26 24 22 20 18 16 14 12
+ 10 8 6 4 2 0 75 74 73 72 71 70 69 68
+ 67 66 65 64 63 62 61 60 59 58 57 56 55 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 152 152
+ 152 152 152 152 152 152 152 152 152 152 152 152 152 152
+ 152 152 152 152 152 152 152 152 152 152 152 152 152 152
+ 152 152 152 152 152 152 152 152 152 152 152 152 152 152
+ 152 152 152 152
+ 0 1 0 1 3 3 6 1 0 3 10 9 10 13
+ 3 9 0 9 1 13 6 21 15 9 3 23 18 13
+ 8 3 29 25 21 17 13 9 5 1 36 33 30 27
+ 24 21 18 15 12 9 6 3 0 49 47 45 43 41
+ 39 37 35 33 31 29 27 25 23 21 19 17 15 13
+ 11 9 7 5 3 1 76 75 74 73 72 71 70 69
+ 68 67 66 65 64 63 62 61 60 59 58 57 56 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 153
+ 153 153 153 153 153 153 153 153 153 153 153 153 153 153
+ 153 153 153 153 153 153 153 153 153 153 153 153 153 153
+ 153 153 153 153 153 153 153 153 153 153 153 153 153 153
+ 153 153 153 153
+ 0 0 1 2 4 4 0 2 1 4 0 10 11 0
+ 4 10 1 10 2 14 7 0 16 10 4 24 19 14
+ 9 4 30 26 22 18 14 10 6 2 37 34 31 28
+ 25 22 19 16 13 10 7 4 1 50 48 46 44 42
+ 40 38 36 34 32 30 28 26 24 22 20 18 16 14
+ 12 10 8 6 4 2 0 76 75 74 73 72 71 70
+ 69 68 67 66 65 64 63 62 61 60 59 58 57 56
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 154 154 154 154 154 154 154 154 154 154 154 154 154 154
+ 154 154 154 154 154 154 154 154 154 154 154 154 154 154
+ 154 154 154 154 154 154 154 154 154 154 154 154 154 154
+ 154 154 154 154
+ 0 1 2 3 0 5 1 3 2 5 1 11 12 1
+ 5 11 2 11 3 15 8 1 17 11 5 25 20 15
+ 10 5 0 27 23 19 15 11 7 3 38 35 32 29
+ 26 23 20 17 14 11 8 5 2 51 49 47 45 43
+ 41 39 37 35 33 31 29 27 25 23 21 19 17 15
+ 13 11 9 7 5 3 1 77 76 75 74 73 72 71
+ 70 69 68 67 66 65 64 63 62 61 60 59 58 57
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 155 155 155 155 155 155 155 155 155 155 155 155 155
+ 155 155 155 155 155 155 155 155 155 155 155 155 155 155
+ 155 155 155 155 155 155 155 155 155 155 155 155 155 155
+ 155 155 155 155
+ 0 0 0 0 1 0 2 4 3 6 2 0 0 2
+ 6 12 3 12 4 16 9 2 18 12 6 0 21 16
+ 11 6 1 28 24 20 16 12 8 4 0 36 33 30
+ 27 24 21 18 15 12 9 6 3 0 50 48 46 44
+ 42 40 38 36 34 32 30 28 26 24 22 20 18 16
+ 14 12 10 8 6 4 2 0 77 76 75 74 73 72
+ 71 70 69 68 67 66 65 64 63 62 61 60 59 58
+ 57 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 156 156 156 156 156 156 156 156 156 156 156 156
+ 156 156 156 156 156 156 156 156 156 156 156 156 156 156
+ 156 156 156 156 156 156 156 156 156 156 156 156 156 156
+ 156 156 156 156
+ 0 1 1 1 2 1 3 5 4 7 3 1 1 3
+ 7 13 4 13 5 17 10 3 19 13 7 1 22 17
+ 12 7 2 29 25 21 17 13 9 5 1 37 34 31
+ 28 25 22 19 16 13 10 7 4 1 51 49 47 45
+ 43 41 39 37 35 33 31 29 27 25 23 21 19 17
+ 15 13 11 9 7 5 3 1 78 77 76 75 74 73
+ 72 71 70 69 68 67 66 65 64 63 62 61 60 59
+ 58 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 157 157 157 157 157 157 157 157 157 157 157
+ 157 157 157 157 157 157 157 157 157 157 157 157 157 157
+ 157 157 157 157 157 157 157 157 157 157 157 157 157 157
+ 157 157 157 157
+ 0 0 2 2 3 2 4 6 5 8 4 2 2 4
+ 8 14 5 14 6 18 11 4 20 14 8 2 23 18
+ 13 8 3 30 26 22 18 14 10 6 2 38 35 32
+ 29 26 23 20 17 14 11 8 5 2 52 50 48 46
+ 44 42 40 38 36 34 32 30 28 26 24 22 20 18
+ 16 14 12 10 8 6 4 2 0 78 77 76 75 74
+ 73 72 71 70 69 68 67 66 65 64 63 62 61 60
+ 59 58 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 158 158 158 158 158 158 158 158 158 158
+ 158 158 158 158 158 158 158 158 158 158 158 158 158 158
+ 158 158 158 158 158 158 158 158 158 158 158 158 158 158
+ 158 158 158 158
+ 0 1 0 3 4 3 5 7 6 9 5 3 3 5
+ 9 15 6 15 7 19 12 5 21 15 9 3 24 19
+ 14 9 4 31 27 23 19 15 11 7 3 39 36 33
+ 30 27 24 21 18 15 12 9 6 3 0 51 49 47
+ 45 43 41 39 37 35 33 31 29 27 25 23 21 19
+ 17 15 13 11 9 7 5 3 1 79 78 77 76 75
+ 74 73 72 71 70 69 68 67 66 65 64 63 62 61
+ 60 59 58 57 56 55 54 53 52 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 159 159 159 159 159 159 159 159 159
+ 159 159 159 159 159 159 159 159 159 159 159 159 159 159
+ 159 159 159 159 159 159 159 159 159 159 159 159 159 159
+ 159 159 159 159
+ 0 0 1 0 0 4 6 0 7 0 6 4 4 6
+ 10 0 7 16 8 0 13 6 22 16 10 4 25 20
+ 15 10 5 0 28 24 20 16 12 8 4 0 37 34
+ 31 28 25 22 19 16 13 10 7 4 1 52 50 48
+ 46 44 42 40 38 36 34 32 30 28 26 24 22 20
+ 18 16 14 12 10 8 6 4 2 0 79 78 77 76
+ 75 74 73 72 71 70 69 68 67 66 65 64 63 62
+ 61 60 59 58 57 56 55 54 53 52 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 160 160 160 160 160 160 160 160
+ 160 160 160 160 160 160 160 160 160 160 160 160 160 160
+ 160 160 160 160 160 160 160 160 160 160 160 160 160 160
+ 160 160 160 160
+ 0 1 2 1 1 5 0 1 8 1 7 5 5 7
+ 11 1 8 17 9 1 14 7 0 17 11 5 26 21
+ 16 11 6 1 29 25 21 17 13 9 5 1 38 35
+ 32 29 26 23 20 17 14 11 8 5 2 53 51 49
+ 47 45 43 41 39 37 35 33 31 29 27 25 23 21
+ 19 17 15 13 11 9 7 5 3 1 80 79 78 77
+ 76 75 74 73 72 71 70 69 68 67 66 65 64 63
+ 62 61 60 59 58 57 56 55 54 53 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 161 161 161 161 161 161 161
+ 161 161 161 161 161 161 161 161 161 161 161 161 161 161
+ 161 161 161 161 161 161 161 161 161 161 161 161 161 161
+ 161 161 161 161
+ 0 0 0 2 2 0 1 2 0 2 8 6 6 8
+ 12 2 9 0 10 2 15 8 1 18 12 6 0 22
+ 17 12 7 2 30 26 22 18 14 10 6 2 39 36
+ 33 30 27 24 21 18 15 12 9 6 3 0 52 50
+ 48 46 44 42 40 38 36 34 32 30 28 26 24 22
+ 20 18 16 14 12 10 8 6 4 2 0 80 79 78
+ 77 76 75 74 73 72 71 70 69 68 67 66 65 64
+ 63 62 61 60 59 58 57 56 55 54 53 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 162 162 162 162 162 162
+ 162 162 162 162 162 162 162 162 162 162 162 162 162 162
+ 162 162 162 162 162 162 162 162 162 162 162 162 162 162
+ 162 162 162 162
+ 0 1 1 3 3 1 2 3 1 3 9 7 7 9
+ 13 3 10 1 11 3 16 9 2 19 13 7 1 23
+ 18 13 8 3 31 27 23 19 15 11 7 3 40 37
+ 34 31 28 25 22 19 16 13 10 7 4 1 53 51
+ 49 47 45 43 41 39 37 35 33 31 29 27 25 23
+ 21 19 17 15 13 11 9 7 5 3 1 81 80 79
+ 78 77 76 75 74 73 72 71 70 69 68 67 66 65
+ 64 63 62 61 60 59 58 57 56 55 54 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 163 163 163 163 163
+ 163 163 163 163 163 163 163 163 163 163 163 163 163 163
+ 163 163 163 163 163 163 163 163 163 163 163 163 163 163
+ 163 163 163 163
+ 0 0 2 0 4 2 3 4 2 4 10 8 8 10
+ 14 4 11 2 12 4 17 10 3 20 14 8 2 24
+ 19 14 9 4 32 28 24 20 16 12 8 4 0 38
+ 35 32 29 26 23 20 17 14 11 8 5 2 54 52
+ 50 48 46 44 42 40 38 36 34 32 30 28 26 24
+ 22 20 18 16 14 12 10 8 6 4 2 0 81 80
+ 79 78 77 76 75 74 73 72 71 70 69 68 67 66
+ 65 64 63 62 61 60 59 58 57 56 55 54 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 164 164 164 164
+ 164 164 164 164 164 164 164 164 164 164 164 164 164 164
+ 164 164 164 164 164 164 164 164 164 164 164 164 164 164
+ 164 164 164 164
+ 0 1 0 1 0 3 4 5 3 5 0 9 9 11
+ 0 5 12 3 13 5 18 11 4 21 15 9 3 25
+ 20 15 10 5 0 29 25 21 17 13 9 5 1 39
+ 36 33 30 27 24 21 18 15 12 9 6 3 0 53
+ 51 49 47 45 43 41 39 37 35 33 31 29 27 25
+ 23 21 19 17 15 13 11 9 7 5 3 1 82 81
+ 80 79 78 77 76 75 74 73 72 71 70 69 68 67
+ 66 65 64 63 62 61 60 59 58 57 56 55 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 165 165 165
+ 165 165 165 165 165 165 165 165 165 165 165 165 165 165
+ 165 165 165 165 165 165 165 165 165 165 165 165 165 165
+ 165 165 165 165
+ 0 0 1 2 1 4 5 6 4 6 1 10 10 12
+ 1 6 13 4 14 6 19 12 5 22 16 10 4 26
+ 21 16 11 6 1 30 26 22 18 14 10 6 2 40
+ 37 34 31 28 25 22 19 16 13 10 7 4 1 54
+ 52 50 48 46 44 42 40 38 36 34 32 30 28 26
+ 24 22 20 18 16 14 12 10 8 6 4 2 0 82
+ 81 80 79 78 77 76 75 74 73 72 71 70 69 68
+ 67 66 65 64 63 62 61 60 59 58 57 56 55 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 166 166
+ 166 166 166 166 166 166 166 166 166 166 166 166 166 166
+ 166 166 166 166 166 166 166 166 166 166 166 166 166 166
+ 166 166 166 166
+ 0 1 2 3 2 5 6 7 5 7 2 11 11 13
+ 2 7 14 5 15 7 20 13 6 23 17 11 5 27
+ 22 17 12 7 2 31 27 23 19 15 11 7 3 41
+ 38 35 32 29 26 23 20 17 14 11 8 5 2 55
+ 53 51 49 47 45 43 41 39 37 35 33 31 29 27
+ 25 23 21 19 17 15 13 11 9 7 5 3 1 83
+ 82 81 80 79 78 77 76 75 74 73 72 71 70 69
+ 68 67 66 65 64 63 62 61 60 59 58 57 56 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 167
+ 167 167 167 167 167 167 167 167 167 167 167 167 167 167
+ 167 167 167 167 167 167 167 167 167 167 167 167 167 167
+ 167 167 167 167
+ 0 0 0 0 3 0 0 0 6 8 3 0 12 0
+ 3 8 15 6 16 8 0 14 7 0 18 12 6 0
+ 23 18 13 8 3 32 28 24 20 16 12 8 4 0
+ 39 36 33 30 27 24 21 18 15 12 9 6 3 0
+ 54 52 50 48 46 44 42 40 38 36 34 32 30 28
+ 26 24 22 20 18 16 14 12 10 8 6 4 2 0
+ 83 82 81 80 79 78 77 76 75 74 73 72 71 70
+ 69 68 67 66 65 64 63 62 61 60 59 58 57 56
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 168 168 168 168 168 168 168 168 168 168 168 168 168 168
+ 168 168 168 168 168 168 168 168 168 168 168 168 168 168
+ 168 168 168 168
+ 0 1 1 1 4 1 1 1 7 9 4 1 0 1
+ 4 9 16 7 17 9 1 15 8 1 19 13 7 1
+ 24 19 14 9 4 33 29 25 21 17 13 9 5 1
+ 40 37 34 31 28 25 22 19 16 13 10 7 4 1
+ 55 53 51 49 47 45 43 41 39 37 35 33 31 29
+ 27 25 23 21 19 17 15 13 11 9 7 5 3 1
+ 84 83 82 81 80 79 78 77 76 75 74 73 72 71
+ 70 69 68 67 66 65 64 63 62 61 60 59 58 57
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 169 169 169 169 169 169 169 169 169 169 169 169 169
+ 169 169 169 169 169 169 169 169 169 169 169 169 169 169
+ 169 169 169 169
+ 0 0 2 2 0 2 2 2 8 0 5 2 1 2
+ 5 10 0 8 18 10 2 16 9 2 20 14 8 2
+ 25 20 15 10 5 0 30 26 22 18 14 10 6 2
+ 41 38 35 32 29 26 23 20 17 14 11 8 5 2
+ 56 54 52 50 48 46 44 42 40 38 36 34 32 30
+ 28 26 24 22 20 18 16 14 12 10 8 6 4 2
+ 0 84 83 82 81 80 79 78 77 76 75 74 73 72
+ 71 70 69 68 67 66 65 64 63 62 61 60 59 58
+ 57 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 170 170 170 170 170 170 170 170 170 170 170 170
+ 170 170 170 170 170 170 170 170 170 170 170 170 170 170
+ 170 170 170 170
+ 0 1 0 3 1 3 3 3 0 1 6 3 2 3
+ 6 11 1 9 0 11 3 17 10 3 21 15 9 3
+ 26 21 16 11 6 1 31 27 23 19 15 11 7 3
+ 42 39 36 33 30 27 24 21 18 15 12 9 6 3
+ 0 55 53 51 49 47 45 43 41 39 37 35 33 31
+ 29 27 25 23 21 19 17 15 13 11 9 7 5 3
+ 1 85 84 83 82 81 80 79 78 77 76 75 74 73
+ 72 71 70 69 68 67 66 65 64 63 62 61 60 59
+ 58 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 171 171 171 171 171 171 171 171 171 171 171
+ 171 171 171 171 171 171 171 171 171 171 171 171 171 171
+ 171 171 171 171
+ 0 0 1 0 2 4 4 4 1 2 7 4 3 4
+ 7 12 2 10 1 12 4 18 11 4 22 16 10 4
+ 27 22 17 12 7 2 32 28 24 20 16 12 8 4
+ 0 40 37 34 31 28 25 22 19 16 13 10 7 4
+ 1 56 54 52 50 48 46 44 42 40 38 36 34 32
+ 30 28 26 24 22 20 18 16 14 12 10 8 6 4
+ 2 0 85 84 83 82 81 80 79 78 77 76 75 74
+ 73 72 71 70 69 68 67 66 65 64 63 62 61 60
+ 59 58 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 172 172 172 172 172 172 172 172 172 172
+ 172 172 172 172 172 172 172 172 172 172 172 172 172 172
+ 172 172 172 172
+ 0 1 2 1 3 5 5 5 2 3 8 5 4 5
+ 8 13 3 11 2 13 5 19 12 5 23 17 11 5
+ 28 23 18 13 8 3 33 29 25 21 17 13 9 5
+ 1 41 38 35 32 29 26 23 20 17 14 11 8 5
+ 2 57 55 53 51 49 47 45 43 41 39 37 35 33
+ 31 29 27 25 23 21 19 17 15 13 11 9 7 5
+ 3 1 86 85 84 83 82 81 80 79 78 77 76 75
+ 74 73 72 71 70 69 68 67 66 65 64 63 62 61
+ 60 59 58 57 56 55 54 53 52 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 173 173 173 173 173 173 173 173 173
+ 173 173 173 173 173 173 173 173 173 173 173 173 173 173
+ 173 173 173 173
+ 0 0 0 2 4 0 6 6 3 4 9 6 5 6
+ 9 14 4 12 3 14 6 20 13 6 24 18 12 6
+ 0 24 19 14 9 4 34 30 26 22 18 14 10 6
+ 2 42 39 36 33 30 27 24 21 18 15 12 9 6
+ 3 0 56 54 52 50 48 46 44 42 40 38 36 34
+ 32 30 28 26 24 22 20 18 16 14 12 10 8 6
+ 4 2 0 86 85 84 83 82 81 80 79 78 77 76
+ 75 74 73 72 71 70 69 68 67 66 65 64 63 62
+ 61 60 59 58 57 56 55 54 53 52 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 174 174 174 174 174 174 174 174
+ 174 174 174 174 174 174 174 174 174 174 174 174 174 174
+ 174 174 174 174
+ 0 1 1 3 0 1 0 7 4 5 10 7 6 7
+ 10 15 5 13 4 15 7 21 14 7 0 19 13 7
+ 1 25 20 15 10 5 0 31 27 23 19 15 11 7
+ 3 43 40 37 34 31 28 25 22 19 16 13 10 7
+ 4 1 57 55 53 51 49 47 45 43 41 39 37 35
+ 33 31 29 27 25 23 21 19 17 15 13 11 9 7
+ 5 3 1 87 86 85 84 83 82 81 80 79 78 77
+ 76 75 74 73 72 71 70 69 68 67 66 65 64 63
+ 62 61 60 59 58 57 56 55 54 53 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 175 175 175 175 175 175 175
+ 175 175 175 175 175 175 175 175 175 175 175 175 175 175
+ 175 175 175 175
+ 0 0 2 0 1 2 1 0 5 6 0 8 7 8
+ 11 0 6 14 5 16 8 0 15 8 1 20 14 8
+ 2 26 21 16 11 6 1 32 28 24 20 16 12 8
+ 4 0 41 38 35 32 29 26 23 20 17 14 11 8
+ 5 2 58 56 54 52 50 48 46 44 42 40 38 36
+ 34 32 30 28 26 24 22 20 18 16 14 12 10 8
+ 6 4 2 0 87 86 85 84 83 82 81 80 79 78
+ 77 76 75 74 73 72 71 70 69 68 67 66 65 64
+ 63 62 61 60 59 58 57 56 55 54 53 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 176 176 176 176 176 176
+ 176 176 176 176 176 176 176 176 176 176 176 176 176 176
+ 176 176 176 176
+ 0 1 0 1 2 3 2 1 6 7 1 9 8 9
+ 12 1 7 15 6 17 9 1 16 9 2 21 15 9
+ 3 27 22 17 12 7 2 33 29 25 21 17 13 9
+ 5 1 42 39 36 33 30 27 24 21 18 15 12 9
+ 6 3 0 57 55 53 51 49 47 45 43 41 39 37
+ 35 33 31 29 27 25 23 21 19 17 15 13 11 9
+ 7 5 3 1 88 87 86 85 84 83 82 81 80 79
+ 78 77 76 75 74 73 72 71 70 69 68 67 66 65
+ 64 63 62 61 60 59 58 57 56 55 54 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 177 177 177 177 177
+ 177 177 177 177 177 177 177 177 177 177 177 177 177 177
+ 177 177 177 177
+ 0 0 1 2 3 4 3 2 7 8 2 10 9 10
+ 13 2 8 16 7 18 10 2 17 10 3 22 16 10
+ 4 28 23 18 13 8 3 34 30 26 22 18 14 10
+ 6 2 43 40 37 34 31 28 25 22 19 16 13 10
+ 7 4 1 58 56 54 52 50 48 46 44 42 40 38
+ 36 34 32 30 28 26 24 22 20 18 16 14 12 10
+ 8 6 4 2 0 88 87 86 85 84 83 82 81 80
+ 79 78 77 76 75 74 73 72 71 70 69 68 67 66
+ 65 64 63 62 61 60 59 58 57 56 55 54 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 178 178 178 178
+ 178 178 178 178 178 178 178 178 178 178 178 178 178 178
+ 178 178 178 178
+ 0 1 2 3 4 5 4 3 8 9 3 11 10 11
+ 14 3 9 17 8 19 11 3 18 11 4 23 17 11
+ 5 29 24 19 14 9 4 35 31 27 23 19 15 11
+ 7 3 44 41 38 35 32 29 26 23 20 17 14 11
+ 8 5 2 59 57 55 53 51 49 47 45 43 41 39
+ 37 35 33 31 29 27 25 23 21 19 17 15 13 11
+ 9 7 5 3 1 89 88 87 86 85 84 83 82 81
+ 80 79 78 77 76 75 74 73 72 71 70 69 68 67
+ 66 65 64 63 62 61 60 59 58 57 56 55 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 179 179 179
+ 179 179 179 179 179 179 179 179 179 179 179 179 179 179
+ 179 179 179 179
+ 0 0 0 0 0 0 5 4 0 0 4 0 11 12
+ 0 4 10 0 9 0 12 4 19 12 5 24 18 12
+ 6 0 25 20 15 10 5 0 32 28 24 20 16 12
+ 8 4 0 42 39 36 33 30 27 24 21 18 15 12
+ 9 6 3 0 58 56 54 52 50 48 46 44 42 40
+ 38 36 34 32 30 28 26 24 22 20 18 16 14 12
+ 10 8 6 4 2 0 89 88 87 86 85 84 83 82
+ 81 80 79 78 77 76 75 74 73 72 71 70 69 68
+ 67 66 65 64 63 62 61 60 59 58 57 56 55 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 180 180
+ 180 180 180 180 180 180 180 180 180 180 180 180 180 180
+ 180 180 180 180
+ 0 1 1 1 1 1 6 5 1 1 5 1 12 13
+ 1 5 11 1 10 1 13 5 20 13 6 25 19 13
+ 7 1 26 21 16 11 6 1 33 29 25 21 17 13
+ 9 5 1 43 40 37 34 31 28 25 22 19 16 13
+ 10 7 4 1 59 57 55 53 51 49 47 45 43 41
+ 39 37 35 33 31 29 27 25 23 21 19 17 15 13
+ 11 9 7 5 3 1 90 89 88 87 86 85 84 83
+ 82 81 80 79 78 77 76 75 74 73 72 71 70 69
+ 68 67 66 65 64 63 62 61 60 59 58 57 56 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 181
+ 181 181 181 181 181 181 181 181 181 181 181 181 181 181
+ 181 181 181 181
+ 0 0 2 2 2 2 0 6 2 2 6 2 0 0
+ 2 6 12 2 11 2 14 6 21 14 7 0 20 14
+ 8 2 27 22 17 12 7 2 34 30 26 22 18 14
+ 10 6 2 44 41 38 35 32 29 26 23 20 17 14
+ 11 8 5 2 60 58 56 54 52 50 48 46 44 42
+ 40 38 36 34 32 30 28 26 24 22 20 18 16 14
+ 12 10 8 6 4 2 0 90 89 88 87 86 85 84
+ 83 82 81 80 79 78 77 76 75 74 73 72 71 70
+ 69 68 67 66 65 64 63 62 61 60 59 58 57 56
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 182 182 182 182 182 182 182 182 182 182 182 182 182 182
+ 182 182 182 182
+ 0 1 0 3 3 3 1 7 3 3 7 3 1 1
+ 3 7 13 3 12 3 15 7 22 15 8 1 21 15
+ 9 3 28 23 18 13 8 3 35 31 27 23 19 15
+ 11 7 3 45 42 39 36 33 30 27 24 21 18 15
+ 12 9 6 3 0 59 57 55 53 51 49 47 45 43
+ 41 39 37 35 33 31 29 27 25 23 21 19 17 15
+ 13 11 9 7 5 3 1 91 90 89 88 87 86 85
+ 84 83 82 81 80 79 78 77 76 75 74 73 72 71
+ 70 69 68 67 66 65 64 63 62 61 60 59 58 57
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 183 183 183 183 183 183 183 183 183 183 183 183 183
+ 183 183 183 183
+ 0 0 1 0 4 4 2 0 4 4 8 4 2 2
+ 4 8 14 4 13 4 16 8 0 16 9 2 22 16
+ 10 4 29 24 19 14 9 4 36 32 28 24 20 16
+ 12 8 4 0 43 40 37 34 31 28 25 22 19 16
+ 13 10 7 4 1 60 58 56 54 52 50 48 46 44
+ 42 40 38 36 34 32 30 28 26 24 22 20 18 16
+ 14 12 10 8 6 4 2 0 91 90 89 88 87 86
+ 85 84 83 82 81 80 79 78 77 76 75 74 73 72
+ 71 70 69 68 67 66 65 64 63 62 61 60 59 58
+ 57 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 184 184 184 184 184 184 184 184 184 184 184 184
+ 184 184 184 184
+ 0 1 2 1 0 5 3 1 5 5 9 5 3 3
+ 5 9 15 5 14 5 17 9 1 17 10 3 23 17
+ 11 5 30 25 20 15 10 5 0 33 29 25 21 17
+ 13 9 5 1 44 41 38 35 32 29 26 23 20 17
+ 14 11 8 5 2 61 59 57 55 53 51 49 47 45
+ 43 41 39 37 35 33 31 29 27 25 23 21 19 17
+ 15 13 11 9 7 5 3 1 92 91 90 89 88 87
+ 86 85 84 83 82 81 80 79 78 77 76 75 74 73
+ 72 71 70 69 68 67 66 65 64 63 62 61 60 59
+ 58 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 185 185 185 185 185 185 185 185 185 185 185
+ 185 185 185 185
+ 0 0 0 2 1 0 4 2 6 6 10 6 4 4
+ 6 10 16 6 15 6 18 10 2 18 11 4 24 18
+ 12 6 0 26 21 16 11 6 1 34 30 26 22 18
+ 14 10 6 2 45 42 39 36 33 30 27 24 21 18
+ 15 12 9 6 3 0 60 58 56 54 52 50 48 46
+ 44 42 40 38 36 34 32 30 28 26 24 22 20 18
+ 16 14 12 10 8 6 4 2 0 92 91 90 89 88
+ 87 86 85 84 83 82 81 80 79 78 77 76 75 74
+ 73 72 71 70 69 68 67 66 65 64 63 62 61 60
+ 59 58 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0 186 186 186 186 186 186 186 186 186 186
+ 186 186 186 186
+ 0 1 1 3 2 1 5 3 7 7 0 7 5 5
+ 7 11 0 7 16 7 19 11 3 19 12 5 25 19
+ 13 7 1 27 22 17 12 7 2 35 31 27 23 19
+ 15 11 7 3 46 43 40 37 34 31 28 25 22 19
+ 16 13 10 7 4 1 61 59 57 55 53 51 49 47
+ 45 43 41 39 37 35 33 31 29 27 25 23 21 19
+ 17 15 13 11 9 7 5 3 1 93 92 91 90 89
+ 88 87 86 85 84 83 82 81 80 79 78 77 76 75
+ 74 73 72 71 70 69 68 67 66 65 64 63 62 61
+ 60 59 58 57 56 55 54 53 52 51 50 49 48 47
+ 46 45 44 43 42 41 40 39 38 37 36 35 34 33
+ 32 31 30 29 28 27 26 25 24 23 22 21 20 19
+ 18 17 16 15 14 13 12 11 10 9 8 7 6 5
+ 4 3 2 1 0 187 187 187 187 187 187 187 187 187
+ 187 187 187 187
+ 0 0 2 0 3 2 6 4 8 8 1 8 6 6
+ 8 12 1 8 17 8 20 12 4 20 13 6 26 20
+ 14 8 2 28 23 18 13 8 3 36 32 28 24 20
+ 16 12 8 4 0 44 41 38 35 32 29 26 23 20
+ 17 14 11 8 5 2 62 60 58 56 54 52 50 48
+ 46 44 42 40 38 36 34 32 30 28 26 24 22 20
+ 18 16 14 12 10 8 6 4 2 0 93 92 91 90
+ 89 88 87 86 85 84 83 82 81 80 79 78 77 76
+ 75 74 73 72 71 70 69 68 67 66 65 64 63 62
+ 61 60 59 58 57 56 55 54 53 52 51 50 49 48
+ 47 46 45 44 43 42 41 40 39 38 37 36 35 34
+ 33 32 31 30 29 28 27 26 25 24 23 22 21 20
+ 19 18 17 16 15 14 13 12 11 10 9 8 7 6
+ 5 4 3 2 1 0 188 188 188 188 188 188 188 188
+ 188 188 188 188
+ 0 1 0 1 4 3 0 5 0 9 2 9 7 7
+ 9 13 2 9 18 9 0 13 5 21 14 7 0 21
+ 15 9 3 29 24 19 14 9 4 37 33 29 25 21
+ 17 13 9 5 1 45 42 39 36 33 30 27 24 21
+ 18 15 12 9 6 3 0 61 59 57 55 53 51 49
+ 47 45 43 41 39 37 35 33 31 29 27 25 23 21
+ 19 17 15 13 11 9 7 5 3 1 94 93 92 91
+ 90 89 88 87 86 85 84 83 82 81 80 79 78 77
+ 76 75 74 73 72 71 70 69 68 67 66 65 64 63
+ 62 61 60 59 58 57 56 55 54 53 52 51 50 49
+ 48 47 46 45 44 43 42 41 40 39 38 37 36 35
+ 34 33 32 31 30 29 28 27 26 25 24 23 22 21
+ 20 19 18 17 16 15 14 13 12 11 10 9 8 7
+ 6 5 4 3 2 1 0 189 189 189 189 189 189 189
+ 189 189 189 189
+ 0 0 1 2 0 4 1 6 1 0 3 10 8 8
+ 10 14 3 10 0 10 1 14 6 22 15 8 1 22
+ 16 10 4 30 25 20 15 10 5 0 34 30 26 22
+ 18 14 10 6 2 46 43 40 37 34 31 28 25 22
+ 19 16 13 10 7 4 1 62 60 58 56 54 52 50
+ 48 46 44 42 40 38 36 34 32 30 28 26 24 22
+ 20 18 16 14 12 10 8 6 4 2 0 94 93 92
+ 91 90 89 88 87 86 85 84 83 82 81 80 79 78
+ 77 76 75 74 73 72 71 70 69 68 67 66 65 64
+ 63 62 61 60 59 58 57 56 55 54 53 52 51 50
+ 49 48 47 46 45 44 43 42 41 40 39 38 37 36
+ 35 34 33 32 31 30 29 28 27 26 25 24 23 22
+ 21 20 19 18 17 16 15 14 13 12 11 10 9 8
+ 7 6 5 4 3 2 1 0 190 190 190 190 190 190
+ 190 190 190 190
+ 0 1 2 3 1 5 2 7 2 1 4 11 9 9
+ 11 15 4 11 1 11 2 15 7 23 16 9 2 23
+ 17 11 5 31 26 21 16 11 6 1 35 31 27 23
+ 19 15 11 7 3 47 44 41 38 35 32 29 26 23
+ 20 17 14 11 8 5 2 63 61 59 57 55 53 51
+ 49 47 45 43 41 39 37 35 33 31 29 27 25 23
+ 21 19 17 15 13 11 9 7 5 3 1 95 94 93
+ 92 91 90 89 88 87 86 85 84 83 82 81 80 79
+ 78 77 76 75 74 73 72 71 70 69 68 67 66 65
+ 64 63 62 61 60 59 58 57 56 55 54 53 52 51
+ 50 49 48 47 46 45 44 43 42 41 40 39 38 37
+ 36 35 34 33 32 31 30 29 28 27 26 25 24 23
+ 22 21 20 19 18 17 16 15 14 13 12 11 10 9
+ 8 7 6 5 4 3 2 1 0 191 191 191 191 191
+ 191 191 191 191
+ 0 0 0 0 2 0 3 0 3 2 5 0 10 10
+ 12 0 5 12 2 12 3 16 8 0 17 10 3 24
+ 18 12 6 0 27 22 17 12 7 2 36 32 28 24
+ 20 16 12 8 4 0 45 42 39 36 33 30 27 24
+ 21 18 15 12 9 6 3 0 62 60 58 56 54 52
+ 50 48 46 44 42 40 38 36 34 32 30 28 26 24
+ 22 20 18 16 14 12 10 8 6 4 2 0 95 94
+ 93 92 91 90 89 88 87 86 85 84 83 82 81 80
+ 79 78 77 76 75 74 73 72 71 70 69 68 67 66
+ 65 64 63 62 61 60 59 58 57 56 55 54 53 52
+ 51 50 49 48 47 46 45 44 43 42 41 40 39 38
+ 37 36 35 34 33 32 31 30 29 28 27 26 25 24
+ 23 22 21 20 19 18 17 16 15 14 13 12 11 10
+ 9 8 7 6 5 4 3 2 1 0 192 192 192 192
+ 192 192 192 192
+ 0 1 1 1 3 1 4 1 4 3 6 1 11 11
+ 13 1 6 13 3 13 4 17 9 1 18 11 4 25
+ 19 13 7 1 28 23 18 13 8 3 37 33 29 25
+ 21 17 13 9 5 1 46 43 40 37 34 31 28 25
+ 22 19 16 13 10 7 4 1 63 61 59 57 55 53
+ 51 49 47 45 43 41 39 37 35 33 31 29 27 25
+ 23 21 19 17 15 13 11 9 7 5 3 1 96 95
+ 94 93 92 91 90 89 88 87 86 85 84 83 82 81
+ 80 79 78 77 76 75 74 73 72 71 70 69 68 67
+ 66 65 64 63 62 61 60 59 58 57 56 55 54 53
+ 52 51 50 49 48 47 46 45 44 43 42 41 40 39
+ 38 37 36 35 34 33 32 31 30 29 28 27 26 25
+ 24 23 22 21 20 19 18 17 16 15 14 13 12 11
+ 10 9 8 7 6 5 4 3 2 1 0 193 193 193
+ 193 193 193 193
+ 0 0 2 2 4 2 5 2 5 4 7 2 12 12
+ 14 2 7 14 4 14 5 18 10 2 19 12 5 26
+ 20 14 8 2 29 24 19 14 9 4 38 34 30 26
+ 22 18 14 10 6 2 47 44 41 38 35 32 29 26
+ 23 20 17 14 11 8 5 2 64 62 60 58 56 54
+ 52 50 48 46 44 42 40 38 36 34 32 30 28 26
+ 24 22 20 18 16 14 12 10 8 6 4 2 0 96
+ 95 94 93 92 91 90 89 88 87 86 85 84 83 82
+ 81 80 79 78 77 76 75 74 73 72 71 70 69 68
+ 67 66 65 64 63 62 61 60 59 58 57 56 55 54
+ 53 52 51 50 49 48 47 46 45 44 43 42 41 40
+ 39 38 37 36 35 34 33 32 31 30 29 28 27 26
+ 25 24 23 22 21 20 19 18 17 16 15 14 13 12
+ 11 10 9 8 7 6 5 4 3 2 1 0 194 194
+ 194 194 194 194
+ 0 1 0 3 0 3 6 3 6 5 8 3 0 13
+ 0 3 8 15 5 15 6 19 11 3 20 13 6 27
+ 21 15 9 3 30 25 20 15 10 5 0 35 31 27
+ 23 19 15 11 7 3 48 45 42 39 36 33 30 27
+ 24 21 18 15 12 9 6 3 0 63 61 59 57 55
+ 53 51 49 47 45 43 41 39 37 35 33 31 29 27
+ 25 23 21 19 17 15 13 11 9 7 5 3 1 97
+ 96 95 94 93 92 91 90 89 88 87 86 85 84 83
+ 82 81 80 79 78 77 76 75 74 73 72 71 70 69
+ 68 67 66 65 64 63 62 61 60 59 58 57 56 55
+ 54 53 52 51 50 49 48 47 46 45 44 43 42 41
+ 40 39 38 37 36 35 34 33 32 31 30 29 28 27
+ 26 25 24 23 22 21 20 19 18 17 16 15 14 13
+ 12 11 10 9 8 7 6 5 4 3 2 1 0 195
+ 195 195 195 195
+ 0 0 1 0 1 4 0 4 7 6 9 4 1 0
+ 1 4 9 16 6 16 7 20 12 4 21 14 7 0
+ 22 16 10 4 31 26 21 16 11 6 1 36 32 28
+ 24 20 16 12 8 4 0 46 43 40 37 34 31 28
+ 25 22 19 16 13 10 7 4 1 64 62 60 58 56
+ 54 52 50 48 46 44 42 40 38 36 34 32 30 28
+ 26 24 22 20 18 16 14 12 10 8 6 4 2 0
+ 97 96 95 94 93 92 91 90 89 88 87 86 85 84
+ 83 82 81 80 79 78 77 76 75 74 73 72 71 70
+ 69 68 67 66 65 64 63 62 61 60 59 58 57 56
+ 55 54 53 52 51 50 49 48 47 46 45 44 43 42
+ 41 40 39 38 37 36 35 34 33 32 31 30 29 28
+ 27 26 25 24 23 22 21 20 19 18 17 16 15 14
+ 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+ 196 196 196 196
+ 0 1 2 1 2 5 1 5 8 7 10 5 2 1
+ 2 5 10 17 7 17 8 21 13 5 22 15 8 1
+ 23 17 11 5 32 27 22 17 12 7 2 37 33 29
+ 25 21 17 13 9 5 1 47 44 41 38 35 32 29
+ 26 23 20 17 14 11 8 5 2 65 63 61 59 57
+ 55 53 51 49 47 45 43 41 39 37 35 33 31 29
+ 27 25 23 21 19 17 15 13 11 9 7 5 3 1
+ 98 97 96 95 94 93 92 91 90 89 88 87 86 85
+ 84 83 82 81 80 79 78 77 76 75 74 73 72 71
+ 70 69 68 67 66 65 64 63 62 61 60 59 58 57
+ 56 55 54 53 52 51 50 49 48 47 46 45 44 43
+ 42 41 40 39 38 37 36 35 34 33 32 31 30 29
+ 28 27 26 25 24 23 22 21 20 19 18 17 16 15
+ 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+ 0 197 197 197
+ 0 0 0 2 3 0 2 6 0 8 0 6 3 2
+ 3 6 11 0 8 18 9 0 14 6 23 16 9 2
+ 24 18 12 6 0 28 23 18 13 8 3 38 34 30
+ 26 22 18 14 10 6 2 48 45 42 39 36 33 30
+ 27 24 21 18 15 12 9 6 3 0 64 62 60 58
+ 56 54 52 50 48 46 44 42 40 38 36 34 32 30
+ 28 26 24 22 20 18 16 14 12 10 8 6 4 2
+ 0 98 97 96 95 94 93 92 91 90 89 88 87 86
+ 85 84 83 82 81 80 79 78 77 76 75 74 73 72
+ 71 70 69 68 67 66 65 64 63 62 61 60 59 58
+ 57 56 55 54 53 52 51 50 49 48 47 46 45 44
+ 43 42 41 40 39 38 37 36 35 34 33 32 31 30
+ 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+ 15 14 13 12 11 10 9 8 7 6 5 4 3 2
+ 1 0 198 198
+ 0 1 1 3 4 1 3 7 1 9 1 7 4 3
+ 4 7 12 1 9 19 10 1 15 7 24 17 10 3
+ 25 19 13 7 1 29 24 19 14 9 4 39 35 31
+ 27 23 19 15 11 7 3 49 46 43 40 37 34 31
+ 28 25 22 19 16 13 10 7 4 1 65 63 61 59
+ 57 55 53 51 49 47 45 43 41 39 37 35 33 31
+ 29 27 25 23 21 19 17 15 13 11 9 7 5 3
+ 1 99 98 97 96 95 94 93 92 91 90 89 88 87
+ 86 85 84 83 82 81 80 79 78 77 76 75 74 73
+ 72 71 70 69 68 67 66 65 64 63 62 61 60 59
+ 58 57 56 55 54 53 52 51 50 49 48 47 46 45
+ 44 43 42 41 40 39 38 37 36 35 34 33 32 31
+ 30 29 28 27 26 25 24 23 22 21 20 19 18 17
+ 16 15 14 13 12 11 10 9 8 7 6 5 4 3
+ 2 1 0 199
+ 0 0 2 0 0 2 4 0 2 0 2 8 5 4
+ 5 8 13 2 10 0 11 2 16 8 0 18 11 4
+ 26 20 14 8 2 30 25 20 15 10 5 0 36 32
+ 28 24 20 16 12 8 4 0 47 44 41 38 35 32
+ 29 26 23 20 17 14 11 8 5 2 66 64 62 60
+ 58 56 54 52 50 48 46 44 42 40 38 36 34 32
+ 30 28 26 24 22 20 18 16 14 12 10 8 6 4
+ 2 0 99 98 97 96 95 94 93 92 91 90 89 88
+ 87 86 85 84 83 82 81 80 79 78 77 76 75 74
+ 73 72 71 70 69 68 67 66 65 64 63 62 61 60
+ 59 58 57 56 55 54 53 52 51 50 49 48 47 46
+ 45 44 43 42 41 40 39 38 37 36 35 34 33 32
+ 31 30 29 28 27 26 25 24 23 22 21 20 19 18
+ 17 16 15 14 13 12 11 10 9 8 7 6 5 4
+ 3 2 1 0
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/p3.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/p3.pnm
new file mode 100644
index 00000000..5c2320cd
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/p3.pnm
@@ -0,0 +1,16388 @@
+P3
+# snail.ppm
+256 256
+255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 246 234
+255 248 232 255 244 232 255 249 232 255 246 235
+251 244 228 252 244 233 253 245 233 255 249 239
+255 251 239 248 239 232 221 202 179 211 191 167
+220 206 157 254 246 225 255 250 243 254 243 241
+237 223 214 233 208 164 238 218 179 247 241 211
+255 250 236 253 249 238 255 250 245 248 242 233
+240 224 215 252 247 232 250 246 232 253 244 234
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 245 233 255 255 255 255 255 255
+255 248 236 255 252 244 253 243 234 240 229 220
+206 190 156 223 201 165 249 233 191 255 252 228
+255 253 244 251 245 235 236 221 189 230 212 162
+250 237 194 255 252 236 255 251 240 255 251 242
+255 250 244 255 244 241 227 210 195 237 217 171
+249 229 188 255 248 240 255 247 234 255 245 234
+249 243 229 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 252 244
+248 238 228 223 201 175 217 208 160 227 208 176
+255 247 214 255 251 241 255 247 238 255 245 233
+250 241 221 253 237 190 255 250 235 255 250 234
+255 250 242 255 249 242 255 248 239 245 225 216
+227 212 170 232 212 176 249 236 186 255 252 239
+255 251 238 255 248 232 255 246 232 255 247 234
+255 245 232 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 252 236 227 230 213 191 220 194 161
+228 208 173 253 237 204 250 245 216 234 219 201
+243 222 193 255 248 236 255 247 234 255 247 231
+255 247 231 255 246 237 255 247 233 255 245 239
+253 248 229 231 209 187 236 214 169 250 235 189
+255 252 230 255 252 236 255 249 241 255 248 233
+255 236 224 255 249 235 255 246 232 255 246 227
+255 246 234 255 246 229 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 253 243 236 228 226 237 218 205
+212 196 181 219 194 144 247 232 200 254 247 221
+236 224 203 230 209 177 239 215 168 246 238 204
+255 244 224 255 247 238 255 255 255 255 255 255
+255 255 255 255 255 246 255 245 233 255 245 235
+255 246 225 255 247 216 255 248 226 255 249 242
+255 244 238 255 246 236 255 246 236 255 246 231
+255 247 236 255 250 234 255 247 233 255 246 234
+255 248 235 255 246 234 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 249 236 255 253 243 255 246 238
+233 220 197 226 208 190 227 204 154 234 214 173
+242 229 199 245 241 222 231 219 196 220 200 166
+242 225 182 255 244 217 255 251 234 254 245 238
+253 239 232 255 255 255 156 152 178 87 63 0
+127 102 95 197 189 192 255 255 255 255 246 235
+255 247 234 255 245 234 255 247 235 255 246 232
+255 250 233 255 246 236 255 244 229 255 249 232
+255 244 236 255 246 225 255 248 235 255 246 232
+255 250 234 255 246 232 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 239 219 197 206 182 151
+225 204 156 248 224 192 249 238 220 252 239 233
+249 241 237 239 228 187 255 248 222 255 247 219
+255 251 241 252 246 233 249 242 229 252 238 230
+255 248 232 172 188 225 198 115 0 137 153 0
+94 72 0 65 63 0 255 239 247 255 248 236
+255 246 231 255 245 233 255 244 228 255 246 235
+255 246 232 255 246 231 255 247 232 255 246 232
+255 244 233 255 246 231 255 246 232 255 242 230
+255 246 230 255 246 232 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 245 236 224 241 220 201
+212 196 165 225 198 160 226 210 157 255 243 220
+255 245 236 249 238 226 244 224 181 245 235 209
+248 239 230 250 241 234 255 248 236 255 245 233
+252 245 231 253 245 233 248 244 225 255 243 235
+255 255 255 86 129 65 242 191 44 240 229 229
+249 195 0 174 165 0 149 112 105 255 255 255
+255 246 232 255 245 233 255 247 233 255 246 232
+255 247 233 255 245 234 255 245 236 255 247 232
+255 247 236 255 248 232 255 246 232 255 245 232
+255 247 234 255 247 234 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 247 233 255 255 255 255 251 240 253 241 226
+245 228 217 210 193 153 218 188 158 211 194 164
+238 228 186 255 245 232 251 243 229 236 218 182
+244 233 202 249 240 217 254 245 236 255 245 237
+246 243 229 249 241 227 253 245 230 251 244 231
+246 238 227 250 240 229 247 242 224 254 241 237
+255 255 255 65 0 0 58 0 0 204 199 0
+212 182 0 0 43 0 218 158 143 255 254 246
+255 247 229 255 245 231 255 245 228 255 246 236
+248 242 227 248 245 230 252 244 229 249 240 225
+255 244 233 255 245 229 255 247 232 255 245 232
+255 244 233 250 243 227 251 241 230 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 244 232
+255 250 239 255 253 238 255 243 234 217 194 167
+208 185 147 230 220 176 254 246 223 255 250 242
+238 230 215 230 213 177 243 228 190 255 251 229
+253 247 237 250 242 232 253 244 235 251 244 230
+251 241 229 247 237 227 252 244 231 250 242 231
+244 239 227 253 244 232 252 246 229 255 255 255
+37 66 93 168 65 0 197 194 0 54 0 0
+0 0 0 97 2 0 255 255 255 246 239 235
+253 246 230 255 246 233 253 244 231 249 241 229
+246 239 230 250 241 229 252 245 234 249 242 228
+251 241 234 248 244 229 255 247 234 255 245 234
+248 243 229 247 242 231 246 239 228 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 247 235 255 250 242 255 250 244
+242 228 212 229 205 171 208 179 152 237 220 175
+255 255 128 248 243 242 240 223 198 230 214 192
+240 227 179 252 242 232 251 245 236 255 247 232
+255 245 234 255 246 236 248 243 232 251 244 231
+250 240 230 246 238 228 250 244 227 252 246 231
+250 241 228 252 239 229 255 250 238 204 234 255
+129 22 0 233 191 0 181 134 0 0 0 0
+180 154 0 255 255 209 254 247 249 248 240 231
+248 242 230 255 244 231 252 245 231 250 241 232
+250 245 229 252 246 233 255 246 235 249 241 227
+248 240 230 249 240 226 255 247 233 255 246 232
+248 241 230 247 243 230 251 244 231 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 251 237 225 240 223 207 211 191 150
+216 190 163 228 216 166 255 248 240 249 238 235
+243 226 205 246 227 188 247 237 200 255 247 236
+252 248 238 249 240 229 249 241 228 255 249 237
+253 243 233 243 233 221 239 223 210 247 238 230
+243 237 224 244 236 224 254 247 230 253 243 231
+253 243 228 255 244 234 255 255 255 85 0 0
+249 198 0 178 158 0 25 0 0 255 239 131
+255 255 255 255 250 246 254 243 232 249 239 230
+246 239 228 255 247 232 252 245 230 247 239 228
+249 245 230 255 243 232 255 246 232 251 246 232
+250 240 232 252 245 229 255 247 234 255 246 232
+247 241 229 250 243 232 254 246 232 255 247 233
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 247 233
+255 255 255 255 255 255 255 255 255 255 255 255
+222 200 186 200 180 154 216 189 155 239 213 180
+255 252 244 255 244 237 241 220 189 237 219 172
+255 241 216 255 250 235 255 248 239 255 245 238
+250 243 229 249 243 235 246 239 233 240 225 197
+242 222 189 238 222 181 246 239 216 252 243 235
+248 238 228 248 240 229 252 243 228 251 244 230
+255 241 236 255 255 255 77 73 81 236 174 109
+162 129 0 53 24 0 224 190 105 255 255 255
+255 245 236 255 247 235 253 246 232 250 238 230
+249 246 230 255 244 233 252 245 232 253 241 231
+249 245 230 255 246 234 255 246 234 251 241 229
+249 240 231 254 247 233 255 247 233 255 245 236
+251 245 233 247 242 229 255 246 233 255 247 234
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 244 232 255 250 239
+255 253 238 255 243 234 212 194 160 199 182 153
+222 201 157 252 242 220 254 246 240 252 243 235
+240 221 190 242 226 188 248 232 215 255 246 239
+252 244 234 250 241 225 255 246 235 251 243 232
+244 237 231 239 220 183 243 235 205 251 241 218
+248 242 231 253 242 236 251 241 230 251 244 230
+248 240 226 247 241 229 250 241 226 254 240 230
+255 255 255 59 42 28 194 119 0 228 190 0
+0 0 0 162 82 0 255 255 255 255 245 232
+252 245 231 253 246 230 248 240 226 246 238 229
+248 245 226 255 243 232 251 243 231 244 235 225
+248 242 226 255 246 234 255 246 233 249 242 228
+248 239 230 248 243 227 255 247 233 255 246 232
+249 241 229 246 243 228 254 244 229 255 246 231
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 247 235 255 250 242 255 250 244 242 228 212
+229 205 171 202 180 150 236 217 174 245 231 211
+255 252 243 254 243 233 253 242 237 247 232 196
+246 236 221 254 243 234 252 244 235 251 240 231
+252 245 230 246 239 226 247 238 227 248 239 229
+251 244 229 253 242 226 253 242 233 250 242 229
+246 238 227 248 238 228 252 240 230 248 240 227
+247 236 227 249 238 225 253 239 233 255 255 255
+86 97 140 199 126 0 231 190 0 96 112 0
+186 140 15 255 255 255 255 242 235 249 242 231
+249 239 230 245 237 228 249 242 230 252 241 233
+255 246 233 254 242 231 254 243 232 236 228 216
+236 231 209 252 246 232 253 244 231 248 243 229
+249 238 234 250 241 229 255 246 233 253 244 233
+248 241 231 250 241 228 252 245 232 249 240 227
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+251 237 225 240 223 207 211 191 150 216 190 163
+228 216 166 255 253 237 249 238 235 252 242 233
+230 214 191 252 242 233 252 241 231 252 239 232
+252 241 230 251 242 230 252 240 231 248 237 228
+249 237 226 251 241 227 253 244 231 251 242 231
+251 242 230 250 240 229 253 244 228 250 241 228
+253 245 230 253 243 230 251 239 229 251 243 232
+252 245 228 253 241 231 255 255 255 137 161 194
+140 14 0 255 233 0 161 170 0 87 11 0
+255 255 255 255 248 241 255 245 230 255 248 232
+255 246 233 251 244 229 255 246 231 255 246 232
+255 247 232 255 246 233 252 244 231 255 246 232
+253 245 232 253 246 233 255 245 235 255 246 231
+255 244 233 253 248 230 252 243 229 254 243 229
+255 246 233 251 246 229 255 245 231 255 248 236
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 222 200 186
+200 180 154 216 189 155 239 213 180 255 252 244
+255 244 237 244 232 220 230 202 166 227 207 162
+253 233 216 254 242 233 249 240 228 253 241 232
+251 241 228 249 240 227 251 242 231 253 243 232
+249 230 193 255 246 233 255 245 231 255 246 231
+251 241 226 255 244 228 250 245 228 255 245 228
+255 243 228 255 244 228 251 242 229 252 244 230
+255 243 231 255 255 255 111 129 163 150 49 0
+226 208 0 172 152 0 41 0 0 255 255 255
+255 249 242 253 242 229 255 245 235 255 245 229
+255 245 233 255 247 233 255 247 232 255 245 234
+255 245 230 255 245 232 255 245 230 255 245 233
+255 247 232 255 245 234 255 247 232 255 247 231
+255 245 235 255 246 228 255 249 234 255 246 229
+255 247 233 255 247 231 255 245 231 255 245 231
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 244 234 255 249 233 255 248 239
+255 255 255 212 194 160 199 182 153 222 201 157
+252 242 220 254 246 240 252 243 235 240 221 190
+242 226 188 248 232 215 255 246 239 254 239 234
+247 242 228 253 243 234 255 247 238 250 240 230
+237 222 186 232 211 181 248 232 196 254 244 230
+255 240 233 255 244 226 254 245 229 255 239 231
+253 244 226 255 241 230 255 245 231 255 247 229
+254 241 230 254 242 227 255 244 230 254 239 228
+255 255 255 157 190 197 119 0 0 215 178 0
+248 241 0 0 0 0 230 208 135 255 255 255
+250 242 229 251 243 227 251 239 228 255 247 230
+255 243 233 253 245 229 255 247 230 255 247 234
+255 245 230 255 245 234 255 247 232 255 247 232
+255 245 232 255 247 234 241 227 217 255 249 231
+255 245 232 255 244 233 255 246 233 255 247 231
+255 244 231 255 247 229 255 245 232 253 243 227
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+254 242 230 255 249 243 253 242 230 238 219 200
+202 180 150 236 217 174 245 231 211 255 252 243
+254 243 233 253 242 237 247 232 196 246 236 221
+254 243 234 252 244 235 251 240 231 254 241 232
+253 244 234 242 228 218 231 214 183 236 222 183
+250 238 215 254 243 231 254 242 233 252 239 229
+255 243 228 251 242 228 255 243 231 252 242 231
+254 246 228 252 242 228 250 243 230 251 245 227
+255 245 229 255 243 234 255 243 231 255 254 245
+214 241 251 91 0 0 249 237 0 232 202 168
+44 22 0 243 215 155 255 255 244 255 239 234
+250 239 226 250 243 230 253 240 229 254 244 226
+255 244 232 255 243 229 255 245 233 255 245 234
+255 247 232 255 245 232 255 244 230 255 247 233
+255 245 230 255 247 232 255 247 237 255 247 227
+255 245 233 255 247 233 255 245 228 255 243 232
+255 246 232 253 245 230 253 243 227 255 245 232
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 228 204 187 171 151 121 205 186 127
+255 253 237 255 255 255 252 242 233 230 214 191
+252 242 233 252 241 231 252 239 232 252 241 230
+251 242 230 252 240 231 248 237 228 246 235 226
+241 229 203 241 231 200 254 240 219 252 242 234
+250 242 232 251 240 231 251 241 228 250 243 230
+252 240 230 252 242 226 255 245 227 255 242 231
+252 242 228 251 240 228 249 242 228 253 242 230
+253 245 230 254 239 229 255 255 255 156 192 192
+79 0 0 218 164 0 207 169 0 142 126 0
+142 76 0 255 255 255 250 240 230 246 239 227
+249 243 226 254 244 231 255 241 234 255 246 230
+253 244 232 255 246 230 255 245 233 255 245 232
+255 245 233 255 245 233 255 247 231 255 246 234
+255 246 236 255 247 232 255 245 233 255 243 226
+255 245 234 255 248 230 255 248 237 255 247 233
+252 242 232 255 245 234 255 247 233 255 247 232
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 212 193 174
+197 175 146 225 199 152 255 251 233 255 247 237
+244 232 220 230 202 166 227 207 162 253 233 216
+254 242 233 249 240 228 253 241 232 251 241 228
+249 240 227 251 242 231 253 243 232 247 235 212
+250 241 226 252 240 233 250 239 231 249 240 226
+253 238 228 252 239 228 253 243 228 252 241 228
+254 241 228 250 240 228 255 246 230 253 238 229
+250 239 228 253 241 228 252 243 228 249 242 224
+254 240 229 255 253 234 206 230 254 80 0 0
+219 188 0 255 231 0 163 168 0 32 0 0
+255 255 246 255 247 241 250 244 226 252 239 229
+252 244 227 255 245 230 255 244 229 255 246 230
+253 244 230 255 243 228 255 246 229 255 243 231
+255 246 229 255 246 233 255 248 237 255 236 227
+253 237 219 255 246 234 255 245 231 255 246 226
+255 246 238 250 233 224 254 242 212 254 237 206
+252 242 210 255 248 237 255 247 229 255 246 234
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 202 181 144 225 207 174
+250 235 211 252 243 245 234 221 199 228 208 170
+239 220 180 255 245 230 255 245 236 253 244 230
+253 242 232 252 242 233 253 241 233 252 238 230
+251 241 228 251 240 229 247 238 226 250 239 230
+250 238 228 252 242 231 253 243 231 252 245 232
+254 243 227 252 243 230 250 240 228 255 241 230
+251 243 228 251 238 228 250 244 229 253 245 231
+251 243 230 252 241 228 250 242 230 252 241 231
+255 251 244 255 255 255 67 0 0 223 188 0
+255 206 140 186 167 0 38 0 0 235 220 134
+255 255 255 253 242 232 249 245 228 251 241 230
+252 241 231 253 245 232 255 244 234 255 245 229
+255 246 234 255 245 231 255 245 233 255 246 235
+255 247 237 246 231 217 240 224 199 246 225 177
+255 249 233 255 247 238 255 245 233 255 246 229
+255 241 216 250 237 205 255 250 233 255 247 236
+254 242 236 240 230 194 255 244 232 255 247 235
+255 246 231 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 210 199 170
+197 175 132 223 199 172 255 247 227 251 246 244
+239 229 222 229 205 170 241 224 198 252 242 230
+252 248 238 253 242 230 253 243 231 255 244 234
+253 243 233 248 239 230 232 212 187 249 232 201
+251 241 230 252 242 232 251 238 227 253 240 230
+251 244 229 248 241 231 252 243 227 254 242 227
+251 243 230 252 238 228 252 243 228 251 243 228
+255 240 230 252 243 228 251 244 230 249 239 229
+250 240 228 246 239 229 251 241 230 255 255 246
+189 219 226 42 0 0 217 148 0 255 231 134
+251 212 0 70 77 0 249 212 148 255 255 255
+252 242 230 253 241 230 251 242 228 251 239 228
+253 245 229 249 239 228 255 246 232 255 247 231
+255 245 232 255 248 234 255 245 233 255 244 237
+245 237 201 255 239 200 255 249 231 255 254 245
+249 236 222 248 237 214 255 246 234 255 245 229
+255 246 232 255 248 236 251 237 216 255 244 226
+255 246 218 255 248 228 255 248 234 255 246 232
+255 247 234 255 244 231 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 211 189 168 207 182 144 241 221 197
+255 247 241 255 252 245 234 223 212 229 215 170
+241 224 185 251 243 233 253 244 234 249 241 230
+252 244 233 255 242 236 250 242 237 236 222 206
+229 203 165 236 216 177 255 242 230 255 244 234
+255 243 230 255 243 231 252 243 231 254 242 229
+252 241 229 254 239 229 255 241 232 251 243 228
+255 243 228 252 241 228 252 243 228 254 242 228
+253 245 230 252 242 226 254 243 228 251 236 228
+250 242 227 251 240 229 255 251 246 222 244 242
+87 0 0 209 158 0 227 189 0 250 215 0
+136 141 0 112 27 0 255 255 255 255 241 232
+253 242 229 251 241 228 251 245 228 251 239 228
+251 241 228 253 240 232 254 240 234 254 243 229
+245 234 220 243 224 196 255 248 234 255 246 235
+255 249 236 255 242 239 243 228 216 238 220 182
+254 243 209 255 249 230 255 248 235 255 245 228
+254 242 230 250 238 203 255 245 222 255 247 237
+255 248 237 255 246 234 255 248 233 255 246 230
+255 244 232 255 247 233 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+208 183 120 239 222 196 254 242 222 255 255 255
+234 221 208 218 199 176 225 204 173 254 245 234
+253 243 234 253 238 231 255 242 231 255 245 236
+242 236 225 229 211 187 221 204 167 237 222 185
+255 245 236 251 245 233 252 241 230 255 239 228
+255 245 228 251 241 229 252 242 229 252 235 228
+252 242 228 252 240 228 254 240 228 252 239 224
+253 242 231 252 239 226 251 241 229 253 243 229
+254 241 229 252 241 227 255 243 227 252 241 229
+253 240 230 255 252 234 245 255 255 62 0 0
+196 150 0 245 200 154 221 193 0 203 201 12
+26 0 0 255 255 237 255 249 240 252 241 230
+250 242 226 252 241 231 250 243 228 251 239 230
+253 245 231 253 240 235 235 220 189 239 224 183
+249 235 195 255 247 229 255 246 235 251 241 228
+251 235 217 246 233 179 253 240 204 255 250 242
+249 237 230 241 223 204 255 246 234 255 246 232
+255 244 235 255 246 236 254 249 237 245 232 198
+255 240 224 255 249 235 255 246 236 255 247 233
+255 245 233 255 249 230 255 249 235 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 245 230 255 255 255
+255 255 255 255 255 255 209 181 134 233 211 182
+255 248 233 255 249 244 254 244 237 217 194 157
+234 219 185 249 238 210 254 244 237 248 243 227
+249 240 226 254 243 237 241 231 216 217 198 177
+222 198 154 250 235 210 255 242 233 254 244 233
+253 241 228 252 240 229 254 240 229 253 240 227
+253 239 227 252 240 228 252 242 228 254 240 229
+252 242 226 252 240 227 252 240 227 252 242 227
+254 240 229 253 243 229 248 240 227 249 238 225
+250 239 226 247 239 224 255 241 228 253 241 228
+255 255 255 168 180 152 67 0 0 199 127 0
+232 216 0 224 189 0 238 230 0 39 0 0
+237 194 138 255 255 255 250 237 225 248 237 228
+246 237 225 252 242 230 250 245 232 245 235 228
+239 224 200 251 237 214 251 242 212 255 247 239
+253 244 239 252 243 231 252 237 213 249 237 205
+255 247 229 255 246 241 242 228 209 241 223 188
+247 231 194 255 245 221 255 247 236 255 246 232
+253 241 229 255 244 227 255 245 224 255 248 223
+250 236 222 251 239 221 248 231 195 255 252 240
+255 252 241 243 231 226 255 242 222 255 247 238
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 220 202 170
+198 177 132 234 208 179 255 250 235 255 251 244
+255 244 233 234 212 182 234 219 178 248 237 214
+254 241 237 250 240 230 252 241 230 253 242 236
+244 237 219 222 198 189 216 200 150 245 227 199
+255 246 238 253 243 234 251 243 230 253 240 228
+252 239 225 252 238 229 254 241 227 252 238 225
+251 241 225 252 239 229 252 240 229 252 241 227
+252 240 229 252 240 224 252 240 230 253 243 226
+249 235 226 251 236 224 246 238 227 247 238 227
+248 238 225 246 238 223 254 242 231 255 255 255
+198 223 214 90 0 0 218 157 0 203 147 0
+244 218 134 232 208 0 19 0 0 228 191 128
+255 255 236 253 241 229 252 245 227 250 241 227
+253 241 231 243 235 220 236 219 196 227 214 170
+255 244 218 255 246 234 255 242 237 237 225 206
+239 226 198 253 242 234 255 245 231 254 245 238
+249 238 221 238 215 168 251 239 207 255 248 235
+255 247 243 249 236 225 244 229 202 251 235 199
+255 244 222 255 248 234 255 247 234 255 247 231
+255 241 199 255 250 239 255 251 244 232 219 205
+233 207 169 255 233 196 255 253 241 244 227 220
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 253 243 235 254 248 237 255 246 237
+255 247 242 255 251 240 255 252 241 255 254 242
+255 254 246 255 255 237 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 245 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 229 218 192 207 174 150 226 204 161
+246 231 203 255 255 255 249 237 228 228 215 192
+221 198 153 255 243 222 255 246 234 250 242 231
+248 241 232 255 244 235 243 235 225 213 196 169
+217 193 150 233 211 189 255 249 239 254 243 232
+250 241 228 252 240 227 249 238 229 251 241 225
+251 239 230 253 241 229 252 237 229 252 241 229
+255 241 227 250 237 227 253 240 228 250 237 225
+251 241 228 253 240 230 253 239 228 250 237 222
+249 237 227 248 237 227 247 237 223 245 237 223
+249 240 228 248 242 232 255 255 241 223 242 220
+51 0 0 163 90 0 215 182 19 250 217 137
+217 178 0 142 130 0 147 66 0 255 255 255
+252 243 233 254 239 227 252 241 227 251 238 231
+245 236 226 232 220 180 248 239 213 255 245 237
+253 242 235 247 238 226 234 213 175 255 240 210
+255 246 231 252 242 237 234 221 210 248 239 227
+252 243 232 255 250 240 254 242 235 250 235 222
+246 231 186 250 239 206 255 244 238 244 232 201
+247 231 206 255 248 228 255 250 237 255 246 238
+250 235 232 237 221 204 232 215 172 254 245 212
+249 237 225 238 225 219 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 251 243 229
+251 239 227 251 243 231 255 251 242 255 250 245
+255 255 246 255 255 255 255 255 255 255 245 243
+251 227 237 247 217 203 255 229 216 255 223 197
+243 222 184 233 207 181 220 184 180 185 151 163
+176 152 161 144 103 95 85 49 39 77 1 0
+48 0 0 89 25 0 90 16 0 145 96 37
+171 148 107 213 174 152 255 247 221 255 255 255
+255 255 246 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+192 172 149 208 173 132 248 243 212 255 250 244
+255 248 241 231 214 186 225 196 148 242 221 193
+255 245 234 253 242 231 251 239 231 253 242 232
+239 229 217 219 206 186 213 190 139 248 237 206
+250 244 234 255 242 235 249 238 227 250 238 228
+251 241 229 252 241 227 252 241 227 253 241 226
+251 239 226 251 241 225 251 238 228 253 237 225
+252 241 227 251 240 229 251 236 223 253 238 227
+249 237 222 251 242 226 253 235 226 248 238 223
+247 235 225 248 235 223 247 238 224 246 233 224
+252 238 230 255 255 255 121 149 128 46 0 0
+223 129 0 192 179 0 251 213 217 239 209 67
+153 174 0 30 0 0 255 255 245 255 247 238
+252 239 225 254 243 232 245 236 221 249 239 227
+248 239 225 251 241 235 250 244 233 240 227 219
+248 237 202 250 239 221 255 246 243 243 237 226
+230 217 210 223 205 154 249 237 210 254 241 233
+245 237 227 250 234 217 241 232 186 255 248 232
+245 235 228 235 213 197 243 227 188 255 246 217
+255 247 240 255 243 235 230 217 196 235 214 184
+255 243 204 253 248 227 242 234 223 207 197 180
+219 194 163 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 241 231 255 246 238 255 251 247 255 255 255
+255 255 255 255 255 240 253 237 166 238 214 152
+225 168 111 210 172 16 217 128 0 224 176 0
+187 111 0 199 134 0 205 162 0 186 147 0
+227 166 0 194 147 0 236 197 0 237 198 0
+225 216 0 167 175 0 137 122 0 122 103 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 133 34 0
+176 154 125 255 255 227 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 209 185 161 209 179 131
+252 231 206 254 246 223 255 243 233 238 223 197
+229 210 163 243 218 193 255 245 235 255 245 230
+253 242 226 252 240 232 243 235 221 219 195 169
+215 190 154 233 216 179 253 241 232 250 239 234
+251 239 226 249 239 226 249 239 227 250 236 226
+245 238 226 249 236 224 249 237 226 250 238 225
+250 238 226 252 242 230 252 238 225 248 237 226
+253 239 225 249 237 229 251 238 225 251 238 226
+250 238 225 249 239 226 253 242 226 252 242 227
+251 239 227 248 237 226 246 240 222 255 241 236
+255 255 255 89 136 127 111 0 0 189 117 0
+218 168 0 222 173 54 224 196 55 218 181 0
+12 0 0 191 149 24 255 255 255 255 243 235
+254 244 235 225 206 176 246 225 202 254 241 231
+253 240 232 246 236 222 233 227 187 245 229 195
+255 248 237 252 242 236 228 215 205 226 206 159
+235 223 188 255 248 237 249 242 234 241 227 214
+245 228 190 255 248 240 244 231 217 219 198 158
+251 236 187 255 248 224 255 250 244 243 233 218
+224 209 177 250 235 190 255 249 225 255 252 244
+225 216 209 205 182 163 213 196 150 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 246 239 255 255 255
+255 255 255 252 243 187 235 216 148 197 169 110
+141 47 0 173 0 0 15 0 0 124 0 0
+31 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 22 0 0
+27 0 0 168 39 0 251 207 0 255 233 0
+255 255 0 193 178 0 118 90 0 0 0 0
+27 0 0 0 0 0 1 0 0 0 0 0
+1 0 0 0 0 0 152 130 19 255 249 231
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 243 228 255 249 237 255 255 255 255 255 255
+210 177 146 203 178 139 237 219 189 255 251 236
+255 245 237 254 243 231 254 242 228 251 239 209
+255 242 226 255 247 233 255 243 230 252 240 227
+255 245 233 222 218 197 212 182 147 236 223 184
+253 243 236 250 240 231 249 238 228 248 239 225
+246 237 223 248 237 227 248 237 223 248 239 227
+249 238 226 249 238 227 248 243 227 250 238 223
+249 236 227 247 238 226 250 238 226 254 242 226
+252 241 225 253 239 229 251 240 229 249 236 226
+252 238 226 250 240 226 250 236 225 247 237 223
+248 238 228 251 239 227 255 255 255 250 254 235
+57 86 56 131 0 0 197 121 0 202 176 0
+245 217 2 207 193 80 235 184 0 66 55 0
+161 100 0 255 255 255 255 247 243 225 211 183
+216 193 152 247 226 188 255 247 239 250 237 229
+242 228 202 252 239 209 255 246 228 252 240 239
+228 216 193 222 206 158 249 235 212 255 249 238
+255 245 243 237 224 209 243 224 182 255 244 218
+253 240 242 240 219 180 244 234 191 255 254 242
+244 239 231 237 213 198 255 252 239 255 245 218
+255 254 228 249 237 240 226 209 189 212 197 173
+230 213 163 250 244 215 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 253 247 243
+255 255 255 255 255 246 255 229 175 239 220 97
+133 48 0 40 0 0 49 0 0 31 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+131 0 0 249 202 0 255 246 0 255 247 0
+130 133 0 58 0 0 0 0 0 197 0 0
+94 0 0 127 0 0 38 0 0 0 0 0
+153 91 0 255 255 255 255 253 246 255 254 242
+255 254 245 255 255 255 255 255 255 255 255 255
+255 255 255 249 249 239 203 198 177 215 196 165
+231 223 196 247 244 227 251 245 253 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 241 255 252 243 255 255 244
+255 247 239 253 245 216 253 242 228 255 249 238
+250 241 231 249 241 228 246 238 225 250 240 227
+249 238 224 249 236 228 246 237 223 249 239 227
+246 239 227 244 235 225 244 235 223 247 235 224
+249 237 227 248 239 227 253 239 226 249 238 226
+253 240 228 253 238 229 253 240 227 252 238 226
+253 238 227 247 239 227 252 238 226 251 239 227
+255 246 238 255 255 255 198 228 198 0 0 0
+103 0 0 241 212 0 191 143 0 208 173 0
+203 173 156 231 201 104 144 122 0 0 0 0
+255 255 233 244 232 224 231 204 173 248 225 183
+255 248 231 255 243 239 238 223 189 235 217 185
+255 255 255 253 250 255 255 255 255 245 235 199
+244 235 204 255 246 235 250 243 242 233 222 194
+239 227 190 255 244 214 255 250 239 255 251 241
+243 233 184 255 245 241 251 238 233 231 216 189
+247 232 195 255 247 206 255 242 241 232 218 204
+214 198 189 214 191 151 227 225 176 245 236 206
+253 249 237 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+247 240 234 255 248 246 255 255 255 255 242 192
+217 196 134 81 8 0 0 0 0 0 0 0
+0 0 0 99 0 0 0 0 0 0 0 0
+2 14 0 0 0 0 160 33 0 146 101 0
+146 75 0 169 104 0 205 143 0 229 140 0
+225 160 0 235 150 0 232 154 0 231 130 0
+231 130 0 223 116 0 219 119 0 190 101 0
+193 85 0 150 29 0 40 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 221 172 0
+255 222 0 255 247 0 206 208 0 0 0 0
+16 0 0 41 0 0 147 0 0 83 4 0
+0 0 0 0 0 0 231 187 136 222 202 168
+185 159 153 169 144 122 116 95 0 132 111 60
+101 38 0 123 45 0 92 53 0 110 41 0
+95 2 0 113 75 0 137 108 0 97 53 0
+158 148 103 142 130 113 119 91 36 158 145 142
+169 159 119 214 189 168 198 197 180 161 155 147
+237 239 217 236 237 217 255 255 255 220 229 214
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 250 244 255 251 238 255 251 241
+255 249 237 253 242 232 249 241 230 251 239 228
+247 238 225 246 235 225 249 237 226 249 238 226
+250 238 224 252 237 228 254 241 228 250 239 227
+252 242 228 255 245 235 255 247 238 255 255 255
+214 221 196 113 130 111 10 0 0 118 0 0
+180 111 0 146 88 0 234 202 0 251 231 227
+204 161 0 187 152 0 127 164 0 191 148 9
+255 255 255 238 221 161 255 245 234 253 244 235
+233 218 197 242 221 184 255 249 235 255 255 255
+95 61 55 81 37 0 35 21 0 255 255 255
+254 244 239 232 219 208 233 210 183 245 237 213
+239 228 224 233 217 183 255 248 234 255 244 238
+238 227 217 239 219 185 241 229 197 255 253 231
+238 224 223 223 203 194 199 180 146 232 215 172
+237 225 172 255 250 234 255 247 239 251 242 236
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 251 244 233 255 255 255
+255 255 224 253 240 176 132 70 0 0 0 0
+0 0 0 34 0 0 0 0 0 16 0 0
+107 65 0 72 0 0 158 97 0 182 108 0
+233 177 0 227 145 0 240 186 0 245 189 0
+255 202 0 248 207 0 230 196 0 228 182 0
+239 213 0 246 216 0 236 217 0 237 205 0
+252 225 0 242 211 0 245 211 0 244 215 0
+240 206 0 249 218 0 255 213 0 253 203 0
+230 149 0 196 140 0 128 71 0 169 1 0
+242 215 0 236 191 0 249 204 0 234 225 0
+138 150 0 76 0 0 0 0 0 128 0 0
+62 0 0 155 24 0 0 0 0 0 0 0
+203 67 0 175 117 0 188 136 0 0 0 0
+205 169 0 107 17 0 94 20 0 114 16 0
+35 0 0 133 68 0 125 59 0 118 53 0
+93 0 0 92 25 0 158 75 0 99 45 0
+0 0 0 0 0 0 112 16 0 166 112 0
+42 0 0 0 0 0 95 23 0 90 6 0
+50 33 0 31 0 0 93 90 14 85 66 4
+142 138 112 193 187 169 214 226 208 182 193 171
+204 207 197 245 243 233 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 224 232 214 213 219 205 0 26 0
+81 0 0 74 0 0 177 69 0 138 2 0
+162 87 0 173 143 0 204 193 166 187 155 30
+255 236 15 38 0 0 0 0 0 255 255 255
+254 240 232 248 240 238 241 228 217 234 220 178
+245 233 200 255 248 245 209 221 239 64 19 0
+255 246 194 255 246 214 168 191 0 188 154 172
+253 251 238 237 219 178 229 221 202 230 206 163
+245 233 198 253 245 240 228 215 201 219 201 170
+244 233 197 247 239 236 238 219 213 202 192 165
+216 195 155 218 210 170 255 243 209 255 251 238
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 239 214 194 110
+23 0 0 0 0 0 0 0 0 63 0 0
+0 0 0 146 164 0 106 0 0 126 0 0
+219 144 0 237 187 0 245 191 0 244 205 0
+226 183 0 238 214 0 239 220 97 246 229 0
+238 212 0 222 189 0 249 231 0 239 229 0
+232 198 0 239 201 0 241 219 0 233 208 0
+248 206 0 247 227 0 236 205 0 242 217 0
+239 216 0 235 193 0 243 216 0 251 216 0
+238 211 0 245 203 0 255 223 0 216 187 0
+241 199 0 245 202 0 243 205 0 246 197 0
+249 215 0 230 242 0 0 0 0 0 0 0
+113 0 0 196 206 0 101 0 0 0 0 0
+45 0 0 239 141 0 101 38 0 178 25 0
+195 105 0 173 69 0 137 14 0 99 0 0
+139 12 0 107 0 0 113 0 0 76 0 0
+96 0 0 116 0 0 59 0 0 122 0 0
+154 0 0 61 0 0 88 0 0 0 0 0
+75 0 0 40 0 0 73 0 0 79 0 0
+21 0 0 41 0 0 44 0 0 130 34 0
+113 37 0 42 0 0 79 0 0 39 0 0
+72 24 0 35 0 0 0 0 0 62 0 0
+95 67 0 119 105 42 96 78 38 141 128 116
+121 112 85 88 68 0 111 103 89 76 65 0
+0 0 0 39 0 0 128 0 0 81 0 0
+148 0 0 165 90 0 184 114 0 186 139 0
+222 179 0 182 147 0 216 186 0 216 155 0
+176 97 0 0 0 0 216 177 116 255 255 255
+245 238 221 231 211 178 236 224 191 255 247 240
+255 255 255 185 199 236 127 62 0 255 248 136
+207 190 102 140 84 0 11 9 0 244 192 194
+242 232 217 234 217 185 249 234 199 242 234 228
+230 214 194 215 198 160 244 227 187 243 234 220
+227 214 204 203 179 133 204 188 157 245 229 186
+253 247 235 247 239 229 255 246 235 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 154 140 0 14 0 0 0 0 0
+0 0 0 79 0 0 37 35 0 135 0 0
+174 146 0 200 92 0 251 218 0 244 208 0
+233 211 0 235 215 137 251 233 187 249 237 130
+236 223 36 220 199 0 248 213 47 245 232 0
+247 228 33 239 223 26 249 228 0 245 227 41
+243 230 0 244 214 0 241 223 0 249 228 0
+249 221 0 251 228 0 242 224 0 244 218 0
+249 223 0 243 220 0 243 218 0 246 218 0
+241 215 0 243 210 0 238 205 0 238 207 0
+227 189 0 242 193 0 247 211 0 237 190 0
+238 194 0 255 203 0 248 234 0 114 139 0
+0 0 0 134 0 0 191 120 0 190 54 0
+0 0 0 0 0 0 238 183 0 130 102 0
+138 22 0 142 53 0 183 121 0 138 44 0
+188 149 0 162 43 0 101 0 0 192 149 0
+128 0 0 156 86 0 160 60 0 150 7 0
+182 155 0 160 64 0 132 0 0 174 35 0
+143 41 0 73 0 0 124 0 0 164 64 0
+179 101 0 116 41 0 166 59 0 137 55 0
+81 0 0 169 78 0 147 39 0 144 48 0
+112 0 0 128 0 0 204 106 0 31 0 0
+140 40 0 108 0 0 85 10 0 60 0 0
+30 0 0 20 0 0 121 0 0 76 0 0
+165 75 0 154 36 0 182 85 0 138 28 0
+218 171 0 189 130 0 201 138 0 190 151 0
+199 164 0 185 147 0 219 204 73 225 147 23
+59 13 0 131 43 0 255 255 255 250 241 229
+248 237 219 252 241 228 255 255 255 218 221 239
+127 103 130 175 126 0 201 201 184 134 101 0
+6 0 0 86 0 0 164 125 0 240 241 223
+244 235 209 255 248 242 225 214 198 228 203 173
+233 221 183 248 229 219 208 198 178 204 182 136
+220 212 175 243 237 207 251 244 228 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 247 244 216 131
+0 0 0 0 0 0 0 0 0 93 0 0
+47 0 0 146 0 0 205 129 0 243 198 0
+247 209 0 241 210 19 233 206 0 229 204 90
+243 226 139 239 219 100 247 224 139 251 238 110
+249 233 132 249 232 3 242 222 0 255 243 82
+254 239 44 255 248 124 255 244 0 255 255 56
+255 253 51 255 244 0 255 237 0 255 231 0
+255 214 0 236 202 0 255 219 0 255 227 0
+255 226 0 255 232 0 255 250 0 255 252 0
+255 246 0 255 241 0 255 243 0 239 206 0
+248 215 0 240 209 0 238 201 0 245 206 0
+240 196 0 237 199 0 241 196 0 255 223 0
+184 196 0 0 0 0 88 0 0 255 255 127
+134 41 0 153 97 0 0 0 0 239 193 0
+240 157 0 230 189 0 132 79 0 194 106 0
+205 128 0 217 193 0 105 0 0 224 172 0
+226 184 0 90 9 0 187 126 0 222 166 0
+203 134 0 187 146 0 144 52 0 190 159 0
+201 139 0 206 164 0 193 164 0 129 0 0
+213 153 0 204 152 0 189 137 0 164 70 0
+110 9 0 163 81 0 151 105 0 172 69 0
+174 95 0 147 59 0 136 37 0 91 0 0
+131 27 0 111 0 0 183 86 0 170 96 0
+166 39 0 165 38 0 190 111 0 190 98 0
+172 99 0 201 139 0 137 75 0 168 76 0
+206 158 0 178 104 0 181 157 0 220 161 0
+213 195 0 219 189 47 229 196 136 242 206 57
+57 0 0 217 211 206 255 255 255 255 253 246
+255 255 255 236 235 252 129 106 115 167 104 0
+222 223 74 95 10 0 56 0 0 178 145 12
+251 249 177 255 251 199 255 255 255 251 239 231
+216 204 181 212 192 163 241 226 196 232 220 209
+212 195 170 209 186 148 229 215 176 243 233 201
+247 241 228 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 246 236 208 67 0 0 0 0 0
+0 0 0 35 0 0 91 0 0 147 22 0
+255 179 0 244 207 0 234 206 0 236 209 0
+238 216 0 253 232 93 249 240 128 247 231 129
+252 238 157 250 242 156 253 241 164 253 234 136
+255 245 130 255 239 146 255 226 0 253 188 14
+218 197 0 176 139 0 125 110 0 71 0 0
+156 13 0 0 0 0 0 0 0 6 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 42 0 0 15 0 0 104 0 0
+114 0 0 171 67 0 185 48 0 227 143 0
+247 171 0 255 197 0 247 220 0 244 205 0
+247 208 0 244 209 0 235 192 0 230 191 0
+255 221 0 149 181 0 0 0 0 250 186 52
+255 238 227 218 176 31 55 50 0 160 137 0
+154 148 0 100 0 0 189 142 0 171 130 0
+131 37 0 160 119 0 196 149 0 97 0 0
+193 172 0 194 150 0 153 108 0 193 120 0
+170 101 0 200 137 0 187 133 0 171 101 0
+145 54 0 188 113 0 178 130 0 211 167 0
+82 0 0 149 79 0 149 79 0 166 87 0
+173 112 0 154 81 0 186 109 0 177 117 0
+196 133 0 186 141 0 103 0 0 222 172 0
+172 115 0 195 145 0 92 0 0 170 139 0
+197 127 0 165 139 0 130 20 0 179 99 0
+203 159 0 204 161 0 214 164 0 131 13 0
+231 183 0 197 147 0 255 251 255 173 116 0
+180 135 0 188 140 0 232 191 47 214 193 184
+124 91 0 139 46 0 152 142 154 140 119 130
+113 65 0 127 92 0 255 241 163 139 94 17
+36 0 0 176 148 0 255 255 255 246 237 246
+229 209 189 246 237 232 231 218 211 215 194 156
+244 227 201 243 231 215 206 188 166 213 198 158
+236 218 185 243 237 209 254 245 236 249 241 236
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+185 151 121 0 0 0 0 0 0 0 0 0
+94 0 0 215 132 0 253 206 0 247 216 0
+235 210 0 246 220 34 250 234 75 246 228 67
+241 219 37 246 224 130 252 242 163 254 244 156
+255 238 132 255 241 107 255 218 194 232 221 0
+147 76 0 139 67 0 169 139 0 0 0 0
+101 0 0 8 0 0 115 0 0 69 0 0
+0 0 0 169 80 0 0 0 0 29 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+24 0 0 70 0 0 182 0 0 221 126 0
+242 146 0 246 209 0 244 219 0 237 209 0
+235 190 0 255 219 0 220 241 0 71 0 0
+255 240 161 226 189 143 255 238 161 32 0 0
+76 0 0 222 153 0 228 157 0 199 161 0
+130 0 0 158 66 0 152 87 0 141 17 0
+224 159 0 227 185 0 137 104 0 161 73 0
+169 102 0 222 167 0 205 153 0 95 48 0
+254 203 0 149 87 0 160 64 0 207 162 0
+118 8 0 209 177 0 196 154 0 116 49 0
+213 159 0 174 127 0 167 65 0 178 110 0
+159 86 0 196 139 0 63 0 0 143 68 0
+151 67 0 86 0 0 123 10 0 197 127 0
+144 45 0 138 70 0 179 115 0 205 151 0
+192 142 0 192 140 0 194 126 0 150 58 0
+180 127 0 201 162 0 182 103 0 155 70 0
+189 127 0 148 68 0 214 189 0 139 53 0
+105 0 0 25 0 0 135 61 0 233 229 74
+254 234 210 165 125 6 98 68 0 46 0 0
+237 216 136 254 241 249 225 211 183 241 218 179
+230 224 197 212 184 147 235 219 176 245 237 235
+212 195 171 201 187 162 236 222 185 252 245 232
+252 242 235 249 244 233 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 29 0 0
+0 0 0 0 0 0 45 0 0 201 80 0
+249 195 0 241 204 0 243 217 53 244 217 0
+241 223 45 242 217 0 249 226 94 247 239 152
+251 246 147 255 248 208 255 237 114 255 226 109
+237 209 0 89 0 0 80 82 0 103 3 0
+60 103 0 0 0 0 111 0 0 180 205 0
+44 0 0 143 0 0 50 0 0 78 0 0
+30 0 0 0 0 0 177 26 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 37 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+48 0 0 181 0 0 210 0 0 226 133 0
+235 179 0 244 210 0 255 208 0 208 219 0
+90 0 0 255 229 181 243 208 174 169 131 0
+93 0 0 169 52 0 138 48 0 163 100 0
+209 174 0 195 132 0 198 164 0 204 158 0
+153 83 0 213 149 0 169 88 0 198 186 0
+154 98 0 184 123 0 138 92 0 219 180 0
+139 84 0 209 138 0 197 169 0 197 142 0
+200 149 0 177 109 0 188 154 0 214 150 0
+207 148 0 159 96 0 197 127 0 156 105 0
+207 113 0 161 129 0 209 181 0 146 102 0
+206 151 0 189 157 0 175 109 0 165 92 0
+197 157 0 146 39 0 167 112 0 157 82 0
+204 137 0 154 101 0 162 57 0 220 183 0
+200 176 112 136 109 0 244 202 222 174 174 0
+219 174 0 192 166 0 217 143 0 138 130 0
+160 97 0 111 70 0 138 67 0 117 13 0
+157 138 0 95 0 0 39 0 0 255 255 214
+240 229 215 235 217 181 240 233 219 214 190 169
+235 213 182 246 237 220 226 217 201 211 184 150
+232 226 183 249 238 216 255 243 239 247 241 228
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 0 0 0 0 0 0
+0 0 0 126 0 0 255 220 0 250 220 0
+241 231 68 240 216 0 242 222 30 248 223 23
+247 232 55 252 233 57 254 244 153 255 244 146
+255 241 0 191 157 0 146 65 0 82 0 0
+68 0 0 0 0 0 87 0 0 76 0 0
+173 24 0 118 118 0 111 0 0 97 0 0
+147 134 0 40 0 0 134 0 0 86 0 0
+145 1 0 100 0 0 33 0 0 135 41 0
+118 4 0 113 64 0 123 0 0 134 39 0
+140 74 0 91 0 0 73 0 0 93 0 0
+0 0 0 67 0 0 5 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 152 0 0
+213 0 0 239 176 0 244 203 0 255 212 0
+120 162 0 71 0 0 255 255 255 230 202 125
+255 210 61 0 0 0 198 160 0 156 99 0
+198 159 0 160 124 0 152 109 0 217 182 3
+235 206 145 227 183 0 191 159 0 255 225 255
+230 214 0 228 191 0 187 124 0 255 237 255
+216 183 0 211 191 0 159 68 0 232 207 174
+212 185 0 192 178 0 134 30 0 237 220 137
+217 176 0 162 121 0 147 97 0 186 101 0
+191 147 0 166 105 0 181 116 0 135 79 0
+140 80 0 167 90 0 144 92 0 176 128 0
+198 129 0 147 117 0 224 169 0 163 134 0
+133 40 0 204 137 0 161 140 0 197 139 0
+192 128 0 164 76 0 189 150 0 126 0 0
+203 160 0 103 0 0 212 185 0 144 110 0
+153 44 0 213 183 0 137 60 0 189 87 0
+89 0 0 164 54 0 22 0 0 255 255 246
+243 235 206 220 198 190 222 200 160 244 226 192
+222 206 201 210 187 147 225 211 158 254 243 233
+255 246 238 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 248 235 226 255 255 255
+196 186 159 14 0 0 0 0 0 54 0 0
+198 100 0 249 205 0 239 212 0 238 207 0
+251 230 71 247 231 35 248 231 67 252 237 62
+252 239 154 255 247 168 255 215 0 140 108 0
+27 0 0 150 0 0 0 0 0 28 0 0
+130 4 0 125 0 0 142 4 0 182 162 0
+102 0 0 117 0 0 125 131 0 154 61 0
+174 128 0 190 166 23 226 218 120 243 230 39
+248 232 54 255 240 81 255 255 62 255 249 10
+255 246 0 255 233 0 255 245 0 255 251 0
+255 236 0 253 236 0 255 219 0 249 214 0
+255 220 0 229 179 0 226 165 0 180 42 0
+156 0 0 145 0 0 82 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 220 0 0 238 96 0 246 221 0
+255 220 0 123 156 0 211 159 182 252 228 176
+246 208 141 158 134 0 117 46 0 142 81 0
+177 100 0 255 221 0 225 204 0 149 67 0
+244 228 219 220 178 0 175 172 0 100 0 0
+194 145 80 222 185 0 94 0 0 198 139 80
+219 184 0 183 156 0 158 85 0 125 35 0
+203 174 220 229 195 0 190 132 0 132 107 121
+214 177 0 225 182 0 208 192 0 154 63 0
+210 180 250 226 207 0 242 195 0 224 190 0
+209 140 0 255 255 255 223 185 0 232 186 0
+192 158 0 217 164 90 215 181 0 223 190 0
+213 170 0 203 141 0 186 99 0 139 90 0
+181 136 0 175 128 0 204 162 0 200 150 0
+161 127 0 180 112 0 173 116 0 122 0 0
+143 149 0 152 82 0 140 34 0 100 0 0
+65 0 0 166 61 0 0 0 0 255 255 245
+244 230 217 235 219 182 227 208 193 205 184 161
+230 210 157 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 252 240 227 255 255 255 204 206 181
+10 0 0 0 0 0 119 0 0 255 191 0
+246 223 0 236 222 0 236 215 0 230 199 0
+231 214 6 244 231 19 244 232 107 255 249 91
+255 210 0 209 165 0 0 0 0 148 38 0
+56 108 0 0 0 0 151 0 0 56 0 0
+108 0 0 86 0 0 131 10 0 137 48 0
+188 189 41 240 228 158 255 255 212 255 255 216
+255 254 221 255 248 197 252 240 204 253 244 164
+255 243 113 255 250 165 255 246 129 255 245 157
+255 248 59 255 252 73 255 244 1 255 243 0
+255 246 12 255 230 0 252 223 0 255 225 0
+249 228 0 255 231 0 248 227 0 255 240 0
+247 231 0 255 226 0 255 212 0 245 176 0
+238 152 0 178 79 0 124 0 0 15 0 0
+0 0 0 0 0 0 74 0 0 244 6 0
+251 226 0 255 236 0 32 41 0 255 255 255
+243 213 164 233 220 105 52 0 0 152 159 0
+175 142 0 138 99 0 208 166 0 186 138 0
+151 132 0 139 4 0 255 255 131 221 184 0
+249 221 0 170 78 0 255 255 230 254 229 0
+106 30 0 255 255 255 241 231 0 255 241 0
+126 97 0 208 154 202 255 240 0 232 201 0
+172 158 0 212 177 80 189 165 0 180 142 0
+201 154 0 178 129 0 197 177 0 192 161 0
+96 6 0 107 48 0 247 204 0 206 171 0
+144 74 0 172 103 78 187 149 154 181 122 0
+239 217 0 172 90 0 172 83 0 250 242 168
+203 166 0 225 174 0 176 109 0 151 78 0
+169 94 0 164 104 0 173 124 0 170 86 0
+122 3 0 125 24 0 170 72 0 136 56 0
+98 0 0 40 0 0 119 0 0 127 106 0
+255 245 255 209 191 166 219 204 163 248 236 208
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 240 227 255 255 255 226 221 193 10 0 0
+0 0 0 144 0 0 255 227 0 251 227 47
+249 236 83 243 231 66 249 230 81 246 228 0
+246 235 151 251 239 94 255 242 24 171 114 0
+0 0 0 0 0 0 44 0 0 0 0 0
+62 0 0 173 103 0 68 0 0 97 0 0
+169 124 0 223 203 121 246 229 153 255 255 224
+255 252 209 255 244 196 248 239 193 254 244 191
+255 249 207 255 250 200 255 255 230 255 255 174
+251 224 57 216 193 83 212 192 16 212 168 51
+160 132 0 182 104 0 169 123 0 175 123 0
+178 137 0 160 133 0 184 151 0 193 158 0
+215 177 0 245 191 0 249 210 0 255 230 0
+255 249 0 255 236 0 255 232 0 254 227 0
+250 225 0 255 229 0 241 206 0 246 148 0
+228 129 0 129 0 0 46 0 0 0 0 0
+255 152 0 251 207 0 210 210 0 174 118 141
+255 255 255 254 223 197 168 154 0 36 0 0
+144 0 0 81 0 0 205 163 0 255 251 202
+228 185 0 123 77 0 204 157 188 201 180 145
+191 165 0 168 152 0 117 22 0 142 66 0
+219 213 0 95 0 0 131 67 0 154 92 0
+133 116 0 143 43 0 123 104 0 187 146 0
+172 167 0 135 2 0 194 195 26 192 145 0
+235 216 0 102 0 0 177 166 154 207 211 0
+132 27 0 255 255 255 221 203 0 168 141 0
+164 65 0 227 222 0 206 151 0 230 193 0
+159 125 0 186 142 0 146 103 0 195 128 0
+222 190 0 197 157 0 181 105 72 214 211 101
+223 188 0 228 176 0 135 111 0 166 108 0
+142 78 0 138 0 0 171 139 0 132 52 0
+154 29 0 102 5 0 120 0 0 0 0 0
+188 149 57 255 250 228 251 246 237 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 156 137 97 0 0 0 0 0 0
+194 27 0 242 205 0 244 221 0 238 213 0
+245 218 0 243 226 5 247 229 29 245 229 2
+255 231 77 224 156 0 82 0 0 0 0 0
+167 118 0 0 0 0 8 0 0 206 80 0
+39 0 0 107 0 0 208 204 120 255 255 171
+255 252 208 254 250 220 253 241 196 244 236 200
+255 248 201 255 255 214 255 255 222 255 236 187
+220 192 160 183 198 100 82 0 0 126 66 0
+0 0 0 70 7 0 18 0 0 0 0 0
+110 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
+87 0 0 147 52 0 181 148 0 248 193 0
+255 230 0 255 242 0 249 210 0 235 208 0
+255 222 0 235 180 0 255 198 0 204 100 0
+193 54 0 226 127 0 255 250 0 55 73 0
+255 216 240 255 255 255 227 206 43 93 7 0
+218 146 0 144 118 0 94 0 0 154 116 0
+121 59 0 172 124 0 193 169 0 110 0 0
+90 0 0 172 91 0 52 0 0 132 9 0
+145 73 0 131 87 0 15 0 0 221 208 5
+152 64 0 99 61 0 151 36 0 139 73 0
+140 23 0 63 0 0 128 52 0 200 188 0
+156 105 0 29 0 0 159 58 0 144 53 0
+45 0 0 131 15 0 173 114 0 122 85 0
+102 0 0 194 180 26 171 107 0 180 180 0
+166 41 0 249 255 184 228 196 0 157 143 0
+226 190 0 248 213 0 228 202 0 134 102 0
+205 133 0 199 175 0 183 165 0 179 93 0
+227 220 0 187 192 0 117 0 0 126 77 0
+130 74 0 121 0 0 141 0 0 75 0 0
+0 0 0 255 255 255 251 242 232 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+181 177 140 16 0 0 0 0 0 137 0 0
+255 244 0 243 221 0 249 234 49 250 230 57
+245 228 86 242 226 0 253 234 89 255 227 0
+191 146 0 12 0 0 0 0 0 12 0 0
+53 0 0 98 0 0 102 3 0 141 69 0
+217 210 162 255 255 228 255 250 211 249 243 202
+250 241 192 252 243 208 255 248 209 255 255 230
+218 216 173 163 164 101 84 21 0 0 0 0
+0 0 0 116 0 0 46 81 0 0 0 0
+165 118 0 111 0 0 0 0 0 0 0 0
+2 0 0 22 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 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 156 86 0 228 181 0 255 229 0
+251 221 0 240 208 0 241 190 0 250 220 0
+237 207 0 246 194 0 220 180 0 238 228 0
+101 49 0 255 241 255 255 245 254 156 112 0
+130 0 0 13 0 0 121 0 0 217 183 0
+167 122 0 208 149 0 0 0 0 255 255 255
+171 136 0 186 110 0 0 0 0 223 221 184
+186 193 0 96 0 0 0 0 0 205 221 165
+125 29 0 71 0 0 193 185 168 146 121 0
+141 0 0 0 0 0 178 134 79 100 84 0
+129 0 0 0 0 0 234 233 220 116 6 0
+62 0 0 36 0 0 152 103 104 86 0 0
+169 80 0 0 0 0 255 255 206 105 0 0
+180 140 0 94 0 0 172 160 0 100 0 0
+84 0 0 161 135 86 214 153 0 66 0 0
+225 179 104 213 236 0 198 144 0 242 224 0
+185 140 0 208 204 0 154 99 0 248 229 140
+147 113 0 119 0 0 107 0 0 76 0 0
+7 0 0 193 186 154 255 255 244 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 231 246 194
+40 0 0 0 0 0 145 0 0 247 211 0
+242 221 0 239 215 0 243 213 0 248 228 35
+249 230 72 252 243 98 255 201 0 152 111 0
+0 0 0 141 0 0 77 37 0 16 0 0
+50 0 0 55 0 0 241 227 159 255 255 216
+255 251 203 254 239 184 248 237 192 255 243 202
+255 255 224 226 214 176 189 206 119 60 0 0
+40 0 0 119 14 0 75 0 0 170 0 0
+75 0 0 0 0 0 196 120 0 0 0 0
+90 0 0 0 0 0 97 0 0 0 0 0
+0 0 0 53 0 0 0 0 0 84 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 33 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+163 1 0 255 204 0 252 224 0 240 203 0
+250 205 0 255 204 0 144 122 0 255 229 0
+100 129 0 232 193 149 252 229 223 238 211 50
+0 0 0 130 0 0 126 42 0 128 34 0
+179 191 0 138 10 0 13 0 0 160 106 0
+10 0 0 63 0 0 120 0 0 100 0 0
+127 0 0 69 0 0 175 0 0 23 0 0
+166 110 0 125 0 0 40 0 0 100 0 0
+157 137 0 50 0 0 0 0 0 227 194 37
+133 0 0 0 0 0 143 21 0 144 99 0
+148 28 0 0 0 0 184 123 0 118 0 0
+160 0 0 0 0 0 155 76 0 143 12 0
+5 0 0 117 0 0 120 80 0 97 0 0
+195 223 140 114 32 0 200 163 0 70 0 0
+92 0 0 85 0 0 129 27 0 206 185 96
+214 158 0 110 60 0 247 213 0 226 195 0
+180 163 0 203 123 0 206 145 0 82 0 0
+115 0 0 68 7 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 212 211 120 5 0 0
+0 0 0 193 0 0 244 190 0 255 250 49
+249 230 0 250 229 39 252 232 79 248 231 0
+255 242 24 233 189 0 0 0 0 68 0 0
+97 0 0 25 0 0 134 83 0 81 0 0
+203 178 87 255 255 194 255 249 203 250 238 160
+251 238 181 255 247 197 255 254 194 215 220 170
+110 56 0 0 0 0 135 0 0 144 0 0
+64 0 0 146 0 0 15 47 0 37 0 0
+141 63 0 39 0 0 64 0 0 198 109 0
+132 0 0 150 137 0 109 90 0 220 183 0
+184 167 0 208 199 82 238 185 0 225 197 0
+237 174 0 233 204 0 200 139 0 209 139 0
+191 145 0 188 113 0 156 117 0 107 11 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 30 0 0 153 0 0 250 207 0
+250 209 0 241 202 0 250 205 0 245 201 0
+220 208 0 189 137 17 241 188 200 255 243 170
+93 0 0 123 61 0 0 0 0 139 0 0
+0 0 0 132 0 0 197 182 0 103 0 0
+120 12 0 215 197 104 168 114 0 186 66 0
+0 0 0 255 255 232 163 132 0 65 0 0
+181 157 60 151 129 0 177 97 0 39 0 0
+170 184 96 80 0 0 0 0 0 129 63 0
+115 28 0 87 0 0 98 0 0 16 0 0
+237 251 140 84 0 0 207 234 232 82 0 0
+155 0 0 0 0 0 144 106 4 120 41 0
+0 0 0 229 203 80 125 69 0 18 0 0
+101 0 0 166 178 0 127 5 0 25 0 0
+98 0 0 253 251 222 128 59 0 72 0 0
+142 120 0 121 0 0 66 0 0 195 145 0
+114 0 0 246 253 38 157 109 0 222 169 0
+130 0 0 0 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 0 0 0 0 0 0
+81 0 0 255 236 0 240 220 0 245 216 0
+242 212 0 250 228 25 247 233 116 255 236 0
+233 179 0 160 127 0 110 0 0 0 0 0
+19 0 0 25 0 0 73 3 0 255 247 186
+255 255 202 254 242 179 251 240 195 255 244 190
+255 255 217 204 215 134 0 0 0 96 0 0
+99 0 0 191 40 0 129 89 0 125 0 0
+111 0 0 49 0 0 161 124 0 85 0 0
+167 41 0 208 143 0 248 219 80 241 210 124
+255 245 130 255 250 177 255 255 185 255 251 149
+255 254 207 255 250 169 255 247 0 255 250 95
+255 244 0 255 227 0 255 239 0 255 243 0
+255 232 0 255 242 0 255 230 0 255 245 0
+255 237 0 255 216 0 232 207 0 140 115 0
+99 9 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 163 0 0
+254 196 0 246 191 0 241 202 0 239 201 0
+255 213 0 83 53 0 204 152 58 251 222 184
+175 147 0 118 16 0 64 28 0 173 0 0
+101 105 0 120 0 0 147 127 0 209 237 0
+52 0 0 147 40 0 41 0 0 85 0 0
+173 100 0 79 0 0 0 0 0 172 123 0
+91 0 0 102 0 0 0 0 0 193 189 0
+119 0 0 208 93 0 0 0 0 143 0 0
+170 177 0 177 91 0 0 0 0 99 0 0
+195 187 0 86 0 0 119 0 0 197 125 0
+173 127 0 97 0 0 170 55 0 188 79 0
+34 0 0 118 0 0 113 0 0 21 0 0
+70 0 0 152 54 0 57 0 0 118 0 0
+214 191 0 114 40 0 186 116 0 130 71 0
+107 51 0 92 3 0 124 56 0 125 62 0
+175 100 0 85 0 0 114 0 0 170 195 0
+87 0 0 0 0 0 255 255 244 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 143 130 0 0 0 0 0 0 0
+252 149 0 253 237 0 250 234 43 248 231 9
+250 233 83 249 229 0 255 255 20 146 92 0
+0 0 0 20 0 0 72 0 0 33 0 0
+118 0 0 214 197 56 255 255 196 255 247 161
+249 240 186 253 242 178 255 255 239 197 203 124
+82 8 0 98 0 0 148 104 0 124 0 0
+163 0 0 97 116 0 145 0 0 82 1 0
+111 0 0 179 165 84 216 193 149 255 255 181
+255 255 218 255 251 210 255 251 193 255 249 187
+255 247 187 255 252 155 255 253 187 255 255 150
+255 228 112 255 241 98 254 234 0 250 214 25
+226 194 0 234 205 0 221 172 0 215 174 0
+237 192 0 242 193 0 255 232 0 253 201 0
+255 244 0 255 242 0 255 249 0 255 237 0
+255 255 0 255 246 0 183 170 0 136 111 0
+0 0 0 0 0 0 0 0 0 0 0 0
+146 0 0 246 171 0 244 200 0 244 202 0
+255 218 0 109 139 0 211 170 46 220 161 137
+202 149 0 13 0 0 192 106 0 69 0 0
+126 0 0 104 44 0 209 125 0 56 0 0
+97 0 0 183 164 0 157 28 0 104 10 0
+188 164 0 218 153 0 0 0 0 178 159 89
+237 209 105 177 179 0 19 0 0 111 40 0
+207 155 0 106 14 0 44 0 0 113 0 0
+84 0 0 144 151 0 120 0 0 49 0 0
+78 0 0 114 0 0 77 0 0 136 138 70
+121 0 0 0 0 0 185 191 0 108 7 0
+0 0 0 155 0 0 255 255 198 0 0 0
+181 0 0 150 87 0 150 0 0 33 0 0
+173 132 61 0 0 0 129 0 0 204 200 0
+0 0 0 252 255 38 84 0 0 127 0 0
+143 33 0 103 0 0 205 116 0 34 0 0
+123 0 0 0 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 186 0 0 0 0 0 0 207 48 0
+238 203 0 249 228 18 245 218 0 247 230 60
+249 232 27 255 254 0 221 165 0 0 0 0
+100 0 0 0 0 0 25 0 0 0 0 0
+235 216 66 255 254 168 251 234 167 249 238 160
+255 248 198 253 255 204 112 66 0 66 8 0
+167 101 0 121 0 0 158 0 0 204 134 0
+59 0 0 135 1 0 93 34 0 217 213 136
+255 255 213 255 255 209 255 245 188 255 244 192
+255 246 192 255 252 202 255 255 193 249 250 180
+215 200 131 194 159 0 127 116 0 103 0 0
+106 75 0 0 0 0 32 0 0 0 0 0
+0 0 0 20 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+31 0 0 87 0 0 135 52 0 208 153 0
+226 137 0 255 237 0 255 241 0 255 255 0
+254 234 0 142 137 0 69 24 0 0 0 0
+0 0 0 26 0 0 255 224 0 245 204 0
+246 207 0 211 204 0 188 149 65 203 139 0
+222 116 0 2 0 0 40 0 0 229 163 0
+0 0 0 97 0 0 242 248 134 162 99 0
+0 0 0 179 134 70 192 188 0 103 23 0
+13 0 0 169 101 0 221 148 0 131 88 0
+58 0 0 166 129 0 220 156 0 115 11 0
+0 0 0 248 198 0 222 199 0 54 14 0
+194 167 0 173 85 0 114 59 0 98 0 0
+202 182 0 193 131 0 78 0 0 173 131 0
+173 98 0 110 0 0 196 170 0 166 90 0
+212 112 0 96 0 0 135 32 0 125 0 0
+159 82 0 155 68 0 28 0 0 19 0 0
+209 194 61 171 100 0 56 0 0 152 18 0
+92 0 0 114 0 0 0 0 0 165 16 0
+160 42 0 179 171 0 193 184 0 146 0 0
+72 0 0 0 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 251 241 188
+103 0 0 0 0 0 202 29 0 235 199 0
+249 230 0 244 226 19 244 228 85 247 232 51
+255 240 61 226 184 0 0 0 0 0 0 0
+0 0 0 70 0 0 47 0 0 252 212 51
+255 255 173 244 228 128 245 228 132 255 246 150
+176 192 116 94 0 0 145 138 0 179 57 0
+164 143 0 162 56 0 151 75 0 25 0 0
+158 71 0 246 247 185 255 255 223 255 251 198
+249 237 184 251 241 193 255 255 194 255 252 211
+225 222 135 168 195 75 80 0 0 129 0 0
+39 0 0 0 0 0 168 69 0 0 0 0
+44 0 0 98 12 0 0 0 0 140 12 0
+0 0 0 0 0 0 0 0 0 0 0 0
+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 151 39 0 187 135 0
+255 241 0 255 227 0 255 255 0 208 196 0
+0 0 0 0 0 0 184 53 0 253 218 0
+239 192 0 255 238 0 86 0 0 255 219 203
+184 169 0 116 16 0 87 0 0 97 0 0
+233 183 0 141 71 0 170 146 0 224 168 0
+0 0 0 210 178 0 208 132 0 251 181 0
+0 0 0 211 126 0 140 71 0 237 192 0
+10 0 0 149 95 0 128 27 0 163 96 0
+151 73 0 107 0 0 181 106 0 186 156 0
+85 0 0 176 135 0 130 60 0 52 0 0
+170 140 0 184 106 0 63 0 0 216 201 138
+139 61 0 87 0 0 139 90 0 108 0 0
+122 74 0 106 0 0 219 240 4 203 172 0
+101 5 0 186 158 0 185 65 0 61 0 0
+117 0 0 125 0 0 98 0 0 199 217 0
+170 121 0 134 0 0 196 172 0 141 0 0
+89 0 0 167 33 0 91 0 0 186 198 0
+75 0 0 7 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 105 113 0
+0 0 0 76 0 0 255 212 0 240 216 0
+236 217 0 241 225 56 245 229 123 255 249 36
+190 183 0 0 0 0 23 0 0 0 0 0
+29 0 0 37 0 0 255 255 182 251 242 155
+247 234 159 246 234 140 255 255 223 190 172 0
+55 26 0 36 0 0 87 0 0 139 0 0
+157 0 0 92 0 0 111 0 0 209 190 2
+255 255 228 252 246 174 248 235 184 255 244 188
+255 255 210 240 234 207 167 138 58 94 86 0
+82 0 0 159 21 0 124 0 0 74 0 0
+173 12 0 11 0 0 0 0 0 217 112 0
+0 0 0 5 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 71 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+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 0 0 232 117 0 250 183 0 255 221 0
+255 237 0 192 200 0 33 0 0 255 232 0
+238 194 0 255 235 0 0 0 0 211 128 0
+215 163 0 85 0 0 83 0 0 35 0 0
+134 99 0 0 0 0 153 73 0 185 105 0
+174 195 0 116 0 0 167 111 0 132 75 0
+224 178 0 168 112 0 198 139 0 177 135 0
+227 172 0 222 183 0 180 121 0 197 167 0
+233 179 4 155 134 0 205 152 0 210 166 0
+63 0 0 204 140 0 164 135 0 151 2 0
+186 129 0 201 141 0 105 44 0 244 237 183
+206 163 0 162 124 0 207 152 0 197 172 0
+193 126 0 173 151 0 107 2 0 211 179 0
+69 0 0 190 106 0 177 196 0 115 0 0
+172 123 0 182 170 0 160 86 0 136 33 0
+168 49 0 128 35 0 239 229 216 0 0 0
+186 71 0 172 175 0 98 0 0 74 60 0
+24 0 0 214 195 169 255 255 240 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 193 52 0 0
+0 0 0 231 88 0 255 239 0 247 230 46
+246 230 78 242 228 47 252 233 77 255 243 0
+3 0 0 31 0 0 0 0 0 65 0 0
+3 0 0 255 223 136 246 233 103 238 216 87
+242 224 118 255 248 140 155 144 0 0 0 0
+155 0 0 131 0 0 170 38 0 142 0 0
+89 0 0 212 175 64 255 255 215 255 251 175
+243 231 176 253 243 178 255 254 196 229 218 197
+114 59 0 125 100 0 96 0 0 172 0 0
+193 140 0 57 0 0 174 70 0 113 0 0
+0 0 0 79 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 81 0 0 94 0 0
+95 0 0 147 0 0 70 0 0 116 0 0
+50 0 0 85 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 90 0 0 227 140 0
+255 214 0 244 202 0 255 225 0 240 202 0
+239 192 0 255 226 0 97 143 0 99 0 0
+209 121 0 96 0 0 0 0 0 41 0 0
+95 0 0 49 0 0 234 192 0 166 151 0
+210 137 0 207 151 0 201 216 38 207 146 0
+182 143 0 231 186 80 172 138 0 176 148 0
+216 171 49 145 136 79 175 89 0 208 154 0
+149 97 0 176 124 0 192 136 0 126 92 0
+191 120 0 167 162 26 179 106 0 185 133 0
+162 77 0 206 134 0 175 123 0 221 199 242
+152 109 0 148 77 0 139 68 0 159 106 0
+178 116 0 162 107 0 141 99 0 135 89 0
+151 111 0 131 60 0 128 83 0 193 160 0
+177 102 0 89 0 0 170 107 0 194 137 0
+127 39 0 169 69 0 131 10 0 105 0 0
+85 0 0 105 13 0 106 0 0 123 29 0
+0 0 0 255 255 255 248 244 231 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 96 98 0 0 0 0
+0 0 0 255 227 0 249 226 0 244 217 0
+243 224 78 245 230 36 255 255 37 89 0 0
+3 0 0 0 0 0 90 0 0 58 0 0
+224 162 0 255 255 198 249 236 173 252 237 145
+255 255 240 60 62 0 21 0 0 116 0 0
+110 0 0 112 0 0 100 0 0 174 120 0
+242 232 154 255 255 171 253 239 175 250 239 148
+255 254 217 228 222 163 145 120 30 127 139 0
+101 0 0 67 0 0 153 4 0 93 0 0
+97 0 0 80 0 0 0 0 0 39 0 0
+23 0 0 132 69 0 210 168 0 217 179 0
+244 232 0 245 220 0 252 227 0 255 255 0
+255 245 0 255 245 0 255 247 0 249 236 0
+255 228 0 253 212 0 250 219 0 246 226 0
+200 146 0 192 182 0 73 11 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+224 33 0 229 177 0 235 197 0 243 192 0
+238 189 0 255 213 0 143 171 0 99 0 0
+178 49 0 93 0 0 0 0 0 70 0 0
+96 0 0 116 44 0 186 139 0 191 141 0
+229 180 0 209 185 0 77 0 0 203 152 0
+203 163 0 201 162 114 188 147 0 140 69 0
+210 148 0 204 159 0 155 112 0 200 150 0
+205 167 0 153 89 0 209 154 0 221 170 0
+189 142 0 201 148 0 223 184 0 186 144 0
+199 147 0 212 165 0 165 125 0 148 69 0
+220 160 0 173 119 0 174 124 0 124 56 0
+224 180 0 148 105 0 148 75 0 205 177 0
+131 66 0 127 66 0 91 0 0 210 165 0
+163 136 0 170 115 0 172 131 0 154 99 0
+176 137 0 94 0 0 96 0 0 183 142 0
+143 8 0 93 0 0 213 193 0 204 144 0
+0 0 0 255 255 255 247 240 228 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 236 234 255 255 208 0 0 0 0 0 0
+217 68 0 251 224 0 245 229 0 243 225 0
+246 232 104 255 236 0 191 164 0 35 0 0
+0 0 0 48 0 0 45 0 0 255 215 0
+251 223 88 235 218 1 238 215 84 255 239 33
+122 115 0 61 0 0 103 0 0 124 0 0
+96 0 0 77 0 0 187 132 0 255 255 201
+255 249 175 250 231 154 255 242 188 255 255 196
+163 141 0 0 0 0 85 0 0 153 13 0
+175 97 12 180 142 0 125 0 0 139 8 0
+28 0 0 134 42 0 182 174 14 223 213 46
+255 255 116 255 255 147 255 243 0 250 227 0
+248 221 0 246 218 0 241 222 0 241 196 0
+245 220 0 218 196 0 245 217 0 241 218 0
+238 200 0 229 196 0 246 218 0 227 183 0
+240 212 0 255 214 0 255 246 0 255 234 0
+247 235 0 218 179 0 108 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 161 0 0 251 200 0 222 175 0
+243 193 0 251 199 0 197 214 0 71 0 0
+157 3 0 73 0 0 56 0 0 70 0 0
+29 0 0 168 62 0 181 121 0 169 118 0
+110 23 0 154 83 0 219 190 0 57 0 0
+176 185 0 114 57 0 240 191 0 105 0 0
+130 68 0 199 144 0 123 31 0 194 160 0
+103 16 0 171 94 0 172 108 0 107 38 0
+213 214 0 143 54 0 116 15 0 166 85 0
+130 76 0 236 212 0 43 0 0 212 170 0
+172 115 0 165 145 0 110 0 0 198 153 0
+128 112 0 186 118 0 233 184 0 137 14 0
+212 217 0 85 0 0 112 0 0 58 0 0
+96 0 0 128 44 0 165 103 0 154 82 0
+159 113 0 141 0 0 200 211 0 113 0 0
+86 0 0 95 0 0 170 132 0 206 177 33
+200 191 0 185 164 190 255 255 246 248 238 225
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 251 241 201 197 0 0 0 0 155 0 0
+245 210 0 253 245 76 249 232 68 249 225 0
+255 240 94 228 210 0 1 0 0 14 0 0
+37 0 0 87 0 0 168 82 0 255 255 194
+250 235 147 250 230 102 255 252 162 202 198 0
+0 0 0 133 0 0 107 0 0 140 0 0
+76 0 0 211 171 0 255 243 138 248 230 117
+247 227 145 255 241 145 223 234 153 48 0 0
+75 0 0 120 83 0 119 0 0 184 0 0
+197 130 0 80 0 0 11 0 0 157 138 0
+238 212 107 255 255 125 255 245 121 255 240 142
+249 230 0 237 200 0 250 222 0 230 197 0
+246 217 0 231 193 0 248 229 0 231 205 0
+248 206 0 241 221 0 246 195 0 252 229 0
+224 186 0 239 214 0 233 197 0 216 189 0
+252 221 0 238 203 0 245 200 0 241 211 0
+255 222 0 246 211 0 255 222 0 255 249 0
+242 215 0 46 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 220 30 0 252 221 0
+242 206 0 250 198 0 237 224 0 0 0 0
+66 0 0 67 0 0 43 0 0 189 212 0
+104 0 0 44 0 0 40 0 0 171 124 0
+160 97 0 55 0 0 214 200 0 113 0 0
+217 166 0 19 0 0 2 0 0 0 0 0
+123 0 0 44 0 0 25 0 0 9 0 0
+102 0 0 117 0 0 38 0 0 160 9 0
+44 0 0 81 0 0 57 0 0 92 0 0
+14 0 0 137 0 0 40 0 0 29 0 0
+76 0 0 81 0 0 79 0 0 45 0 0
+77 0 0 29 0 0 128 37 0 61 0 0
+149 60 0 120 65 0 128 27 0 82 0 0
+76 0 0 125 26 0 132 32 0 188 146 0
+210 178 0 120 12 0 106 0 0 71 0 0
+86 0 0 160 31 0 189 128 0 162 129 0
+255 255 255 30 37 0 255 255 255 250 242 236
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 244 239
+255 254 187 67 0 0 0 0 0 253 153 0
+242 223 0 244 221 0 243 215 0 246 220 0
+255 255 0 0 0 0 46 0 0 80 0 0
+35 0 0 53 0 0 255 240 4 247 226 75
+245 224 121 255 242 49 179 163 0 0 0 0
+95 0 0 90 0 0 121 0 0 67 0 0
+255 241 67 255 248 172 250 238 158 251 233 131
+255 255 208 188 182 0 82 0 0 97 0 0
+98 26 0 201 1 0 197 77 0 119 0 0
+69 0 0 152 136 0 255 255 169 255 255 116
+255 240 107 248 224 113 248 235 50 237 212 62
+255 235 58 248 226 35 231 194 0 254 240 0
+235 195 0 221 193 0 255 220 0 238 209 0
+235 189 0 255 240 0 205 155 0 255 221 0
+219 187 0 253 228 0 217 173 0 215 199 0
+248 203 0 233 204 0 232 196 0 233 209 0
+237 185 0 229 192 0 215 172 0 249 223 0
+245 189 0 235 217 0 255 226 0 151 130 0
+0 0 0 0 0 0 0 0 0 255 120 0
+246 203 0 247 194 0 254 234 0 0 0 0
+24 0 0 170 12 0 17 0 0 76 0 0
+49 0 0 134 0 0 16 0 0 40 0 0
+137 0 0 79 6 0 103 0 0 55 0 0
+0 0 0 45 0 0 35 0 0 42 0 0
+31 0 0 28 0 0 19 0 0 32 0 0
+12 0 0 0 0 0 110 0 0 39 0 0
+104 0 0 4 0 0 136 2 0 167 114 0
+105 14 0 42 0 0 165 54 0 185 121 0
+79 0 0 173 85 0 120 0 0 174 55 0
+33 0 0 173 40 0 119 0 0 78 9 0
+123 0 0 75 0 0 30 0 0 3 0 0
+78 0 0 89 0 0 112 16 0 151 94 0
+220 163 0 212 200 0 109 2 0 47 0 0
+127 19 0 105 42 0 71 0 0 124 38 0
+213 171 0 251 235 56 117 69 78 255 247 255
+255 247 238 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 252 241 228 255 255 255
+187 164 0 0 0 0 90 0 0 255 232 0
+242 213 0 247 229 0 249 233 69 255 251 3
+177 171 0 41 0 0 34 0 0 77 0 0
+86 0 0 194 113 0 255 252 172 248 228 101
+255 235 147 255 255 72 0 0 0 3 0 0
+130 0 0 123 0 0 66 0 0 255 223 35
+243 236 90 240 221 67 250 216 94 233 242 104
+143 110 0 0 0 0 137 0 0 112 0 0
+212 65 0 155 0 0 75 0 0 111 68 0
+255 255 174 255 253 137 250 236 129 252 231 76
+251 235 59 234 215 0 251 215 0 249 240 94
+230 188 0 255 241 101 252 231 20 253 219 0
+255 247 168 255 250 0 255 211 12 248 237 0
+211 189 0 232 218 0 174 174 0 198 182 0
+207 198 0 224 194 0 180 159 0 229 234 0
+255 236 0 255 245 0 235 201 0 247 230 0
+242 193 0 222 197 0 211 169 0 239 202 0
+221 167 0 249 212 0 244 203 0 255 231 0
+207 137 0 206 181 0 0 0 0 35 0 0
+255 190 0 243 195 0 255 237 0 0 0 0
+98 0 0 120 0 0 0 0 0 85 0 0
+0 0 0 0 0 0 0 0 0 48 0 0
+0 0 0 2 0 0 0 0 0 114 0 0
+103 0 0 147 0 0 0 0 0 149 0 0
+179 103 0 139 57 0 100 69 0 178 66 0
+222 171 0 166 137 0 146 95 0 255 240 0
+246 216 0 139 110 0 134 103 0 255 225 0
+255 224 0 224 230 0 118 97 0 255 250 131
+255 255 205 43 20 0 252 252 77 247 228 59
+205 220 0 190 126 0 243 196 0 249 245 0
+29 0 0 218 183 0 200 145 0 0 0 0
+10 0 0 26 0 0 121 0 0 91 4 0
+217 173 0 253 222 26 193 217 0 21 0 0
+255 255 255 255 255 255 225 245 141 41 0 0
+82 0 0 210 162 0 170 191 0 65 12 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 245 237 255 255 229
+0 0 0 0 0 0 231 107 0 255 254 0
+249 235 50 246 222 0 242 210 0 255 245 0
+16 0 0 15 0 0 72 0 0 19 0 0
+214 104 0 246 227 0 235 208 44 240 208 0
+255 247 0 123 0 0 5 0 0 118 0 0
+160 0 0 105 0 0 226 175 0 255 255 200
+252 239 151 253 242 131 255 255 206 48 0 0
+0 0 0 98 0 0 145 0 0 173 0 0
+128 0 0 61 0 0 202 171 25 255 255 161
+254 242 159 247 231 116 250 234 114 231 200 0
+248 209 0 250 237 16 223 188 0 252 213 31
+255 255 106 253 217 5 209 192 17 129 93 0
+84 33 0 55 0 0 0 0 0 74 0 0
+49 0 0 47 0 0 42 0 0 74 0 0
+114 0 0 85 0 0 86 0 0 68 0 0
+73 0 0 83 0 0 108 61 0 144 125 0
+169 150 0 255 244 0 215 192 0 255 233 0
+225 185 0 240 209 0 249 210 0 228 190 0
+224 195 0 255 210 0 234 190 0 9 0 0
+238 167 0 250 204 0 255 223 0 0 8 0
+37 0 0 132 0 0 0 0 0 68 0 0
+0 0 0 0 0 0 146 0 0 0 0 0
+100 0 0 153 0 0 112 22 0 68 0 0
+210 139 0 203 123 0 165 139 0 93 0 0
+222 217 0 250 223 40 255 243 151 36 19 0
+185 152 0 234 218 220 0 0 0 135 76 0
+180 172 170 170 132 0 98 104 0 142 110 57
+148 129 126 159 113 0 41 0 0 100 49 0
+123 61 0 98 61 0 116 83 0 118 65 0
+120 87 0 84 30 0 98 48 0 151 107 0
+95 62 0 57 0 0 162 140 0 32 0 0
+0 0 0 0 0 0 32 0 0 74 0 0
+105 31 0 234 199 0 255 250 215 14 17 0
+255 255 255 250 243 236 255 244 255 247 253 229
+161 164 0 53 0 0 239 194 0 222 208 0
+235 217 185 0 0 0 253 250 255 255 255 255
+245 235 199 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 254 241 226 255 248 252 255 239 142
+0 0 0 0 0 0 255 226 0 240 218 0
+235 197 0 234 200 0 255 222 0 206 212 0
+12 0 0 4 0 0 72 0 0 75 0 0
+255 255 0 250 237 71 251 237 149 255 242 60
+222 217 0 12 0 0 100 0 0 111 0 0
+106 0 0 201 160 0 236 210 0 240 210 0
+245 216 73 255 255 174 0 0 0 71 0 0
+124 0 0 131 0 0 172 0 0 114 0 0
+86 0 0 255 255 167 255 248 141 249 238 98
+246 215 101 236 223 23 236 196 0 254 239 108
+226 203 0 255 255 223 233 225 9 169 164 0
+82 10 0 11 0 0 3 0 0 57 0 0
+152 14 0 114 0 0 146 0 0 157 0 0
+180 24 0 156 0 0 167 187 0 180 0 0
+202 140 0 184 69 0 155 57 0 187 1 0
+165 0 0 189 8 0 171 38 0 162 0 0
+128 0 0 6 0 0 91 23 0 157 136 0
+211 164 0 255 238 0 244 209 0 208 153 0
+240 213 0 235 177 0 206 155 0 255 230 0
+233 183 0 243 201 0 255 228 0 19 42 0
+70 0 0 0 0 0 9 0 0 161 101 0
+80 60 0 139 0 0 200 138 0 161 89 0
+0 0 0 183 82 0 204 134 0 172 145 0
+136 66 0 235 223 163 223 175 0 99 114 0
+118 72 13 110 83 0 133 103 29 142 124 20
+145 130 56 204 163 147 228 211 146 227 202 189
+154 133 85 214 188 161 228 204 168 206 183 135
+177 154 121 223 198 161 255 255 239 255 241 207
+253 245 233 255 251 248 255 241 208 245 230 186
+252 237 216 255 255 237 254 241 228 237 234 193
+255 240 224 255 255 232 253 246 247 255 255 199
+255 253 197 66 18 0 0 0 0 19 0 0
+106 0 0 193 160 0 224 174 27 201 216 154
+205 150 164 255 255 255 247 239 229 253 242 240
+255 255 255 165 183 52 63 0 0 0 0 0
+255 255 0 95 61 55 81 37 0 35 21 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 250 238 227 255 255 255 152 135 0
+0 0 0 117 0 0 255 255 0 235 203 0
+248 223 0 253 241 3 244 247 0 13 0 0
+61 0 0 75 0 0 43 0 0 187 73 0
+255 255 89 242 229 49 255 239 115 231 245 0
+49 0 0 17 0 0 93 0 0 125 0 0
+97 0 0 255 255 81 249 234 12 246 231 41
+246 234 34 70 14 0 59 0 0 149 0 0
+146 0 0 175 0 0 56 0 0 96 0 0
+255 255 175 250 236 112 241 222 38 248 229 0
+235 215 33 232 200 0 242 209 0 255 249 211
+252 248 159 83 54 0 25 0 0 90 0 0
+108 0 0 188 94 0 165 63 0 180 88 0
+222 195 38 218 206 0 255 244 102 245 236 29
+248 241 43 252 238 68 255 232 181 246 242 33
+255 239 184 255 248 133 255 252 155 245 238 74
+244 236 0 245 233 17 205 150 0 197 113 0
+188 80 0 181 0 0 143 0 0 121 0 0
+41 0 0 69 0 0 138 138 0 255 247 0
+237 191 0 238 193 0 217 175 0 232 196 0
+242 191 0 243 196 0 255 228 0 95 84 0
+13 0 0 19 0 0 0 0 0 160 0 0
+145 8 0 0 0 0 217 160 0 223 187 93
+142 110 0 104 15 0 191 170 29 168 144 152
+92 79 0 141 100 0 195 170 164 222 200 150
+221 199 179 252 246 225 204 195 184 244 217 209
+230 223 208 230 207 196 202 187 152 208 190 173
+245 230 213 211 205 184 225 197 192 219 210 172
+255 248 243 255 249 243 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 125 125 0 0 0 0
+122 0 0 93 30 0 185 142 0 255 255 255
+0 19 0 214 191 201 255 253 246 248 238 231
+251 240 231 255 255 255 202 219 135 0 0 0
+64 19 0 255 246 194 255 246 214 168 191 0
+188 154 172 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 250 241 229 255 255 223 0 0 0
+0 0 0 184 104 0 255 251 0 246 234 0
+244 227 11 255 252 10 62 40 0 113 0 0
+61 0 0 107 0 0 77 0 0 255 238 0
+233 209 0 228 202 0 255 233 40 80 22 0
+70 0 0 72 0 0 108 0 0 103 0 0
+255 245 0 244 229 0 241 226 28 255 255 119
+0 0 0 33 0 0 146 0 0 129 0 0
+195 0 0 1 0 0 189 131 0 255 255 128
+246 236 91 233 216 0 241 214 38 228 203 0
+251 217 28 255 240 204 236 238 182 66 0 0
+0 0 0 140 0 0 165 0 0 198 115 0
+216 162 0 244 205 36 255 242 135 249 230 101
+254 248 145 255 253 195 255 254 185 255 250 219
+255 255 235 255 255 255 248 236 216 251 252 222
+254 251 229 245 246 209 254 255 223 255 255 255
+255 255 216 255 255 209 255 251 104 255 239 23
+255 230 5 243 221 0 200 161 0 193 116 0
+155 0 0 119 0 0 84 0 0 0 0 0
+206 164 0 255 241 0 229 185 0 247 199 0
+240 189 0 245 207 0 255 237 0 0 0 0
+59 0 0 0 0 0 0 0 0 239 137 0
+226 176 0 118 97 0 47 0 0 127 120 0
+177 142 137 199 178 133 229 215 200 231 212 187
+240 225 212 226 207 209 235 206 195 209 201 166
+204 181 165 194 182 152 206 171 147 193 179 155
+228 203 174 211 188 174 216 194 155 242 220 193
+187 176 154 227 200 164 238 221 196 254 248 235
+250 238 230 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 212 231 104
+0 0 0 104 0 0 157 107 0 202 154 42
+234 242 214 0 0 0 255 255 255 246 238 227
+246 238 224 249 238 230 255 249 255 236 245 190
+255 248 136 207 190 102 140 84 0 11 9 0
+244 192 194 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+254 242 230 252 243 236 255 250 165 0 0 0
+69 0 0 255 227 0 234 207 0 242 214 0
+234 203 0 255 248 0 1 0 0 116 0 0
+38 0 0 77 0 0 126 0 0 255 255 0
+245 230 66 255 235 40 233 243 0 50 0 0
+52 0 0 66 0 0 110 0 0 153 24 0
+246 237 0 228 207 0 255 220 0 136 148 0
+33 0 0 110 0 0 140 0 0 174 0 0
+0 0 0 184 60 0 255 235 85 240 225 63
+237 215 41 235 204 0 237 209 0 246 223 38
+255 246 209 167 169 0 0 0 0 152 0 0
+147 0 0 221 186 0 224 181 0 245 227 62
+255 251 198 249 241 146 251 244 164 255 250 215
+247 255 200 235 229 199 193 161 118 185 146 72
+160 108 0 165 55 0 156 80 0 168 0 0
+137 87 0 140 0 0 159 34 0 173 72 0
+161 102 1 213 168 97 231 211 86 254 249 116
+255 249 142 255 255 182 253 239 93 255 244 100
+233 207 0 194 151 0 193 45 0 172 0 0
+0 0 0 62 0 0 252 206 0 249 211 0
+242 195 0 245 193 0 255 245 0 0 0 0
+0 0 0 0 0 0 0 0 0 79 0 0
+79 45 0 178 164 113 219 218 177 212 203 197
+216 199 160 242 215 206 229 215 179 221 197 173
+227 222 182 216 187 150 234 221 203 220 190 173
+201 186 166 231 215 191 229 225 199 205 183 154
+214 196 156 253 238 235 212 203 175 206 185 147
+241 230 206 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 0 0 0 61 0 0 198 154 0
+255 244 255 152 173 78 206 173 177 255 255 255
+246 237 227 248 239 226 246 240 228 255 248 245
+134 101 0 6 0 0 86 0 0 164 125 0
+240 241 223 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 246 231 255 244 229 224 202 41 0 0 0
+190 84 0 235 204 0 239 219 4 245 229 0
+255 240 36 183 195 0 31 0 0 49 0 0
+70 0 0 45 0 0 255 218 0 247 238 0
+248 232 81 255 255 50 124 73 0 56 0 0
+5 0 0 88 0 0 86 0 0 255 233 0
+246 236 0 252 230 0 243 255 0 9 0 0
+121 0 0 152 0 0 187 0 0 0 0 0
+148 35 0 255 255 33 238 221 75 238 219 5
+235 211 28 228 208 0 248 208 164 255 255 188
+0 0 0 60 0 0 162 0 0 224 215 46
+205 159 0 254 226 106 249 242 191 247 240 146
+253 245 198 253 249 220 230 228 192 192 186 118
+141 0 0 148 0 0 165 75 0 127 0 0
+167 13 0 165 0 0 165 46 0 158 92 0
+154 8 0 132 0 0 183 51 0 139 0 0
+165 30 0 164 0 0 149 0 0 138 0 0
+155 20 0 231 222 78 243 233 70 255 255 200
+255 243 168 255 234 143 252 224 0 205 161 0
+141 0 0 115 0 0 0 0 0 255 228 0
+255 217 0 253 198 0 232 224 0 0 0 0
+0 0 0 0 0 0 0 0 0 253 249 187
+238 234 203 240 211 188 221 201 160 241 223 211
+213 200 166 219 182 160 229 227 202 201 179 152
+233 204 193 198 179 138 233 207 190 215 205 168
+247 227 222 230 226 201 222 189 154 239 236 223
+235 227 215 207 187 163 233 218 184 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 0 0 0 114 10 0
+220 168 0 255 255 255 0 0 0 255 255 255
+250 240 229 245 234 226 249 242 229 249 237 230
+250 242 235 249 241 232 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 250 237 226
+255 244 237 255 245 206 117 115 0 0 0 0
+241 176 0 246 224 0 240 222 51 244 229 28
+255 255 3 0 0 0 45 0 0 13 0 0
+71 0 0 202 146 0 245 223 0 232 205 0
+239 207 13 255 240 0 8 0 0 66 0 0
+37 0 0 71 0 0 228 185 0 247 227 0
+243 224 0 254 255 0 61 0 0 0 0 0
+175 0 0 148 0 0 64 0 0 170 17 0
+255 241 0 253 237 100 235 217 0 241 212 0
+247 226 4 255 233 170 237 226 101 0 0 0
+157 0 0 209 219 167 189 91 0 248 226 106
+249 239 205 247 236 144 252 240 181 255 255 247
+209 224 169 115 0 0 164 64 0 128 0 0
+153 101 0 110 0 0 140 35 0 201 200 39
+204 185 116 239 232 164 240 226 153 255 244 203
+244 241 147 247 241 150 234 228 137 219 237 139
+228 202 156 188 173 0 187 112 0 181 21 0
+157 0 0 162 0 0 134 0 0 177 152 0
+255 246 70 255 249 152 255 249 220 255 240 176
+211 203 0 170 49 0 139 0 0 0 0 0
+197 155 0 255 237 0 202 203 0 0 0 0
+0 0 0 0 0 0 197 143 82 246 228 201
+223 205 191 225 201 170 249 231 210 207 187 158
+237 220 190 186 167 150 238 214 181 238 225 209
+239 225 192 218 201 164 234 210 198 244 240 220
+213 193 164 229 217 200 250 241 229 215 196 183
+209 193 148 248 236 227 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 241 255 158 0 0 0
+149 112 0 237 188 77 191 202 56 157 127 126
+255 255 255 252 243 231 248 240 228 248 241 228
+248 238 229 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 253 241 229
+255 243 238 255 250 168 29 0 0 0 0 0
+255 230 0 247 231 0 249 234 18 245 225 0
+255 255 0 0 0 0 62 0 0 66 0 0
+0 0 0 255 233 0 249 228 0 248 231 0
+255 230 0 173 181 0 75 0 0 39 0 0
+78 0 0 80 0 0 255 254 0 236 206 0
+255 224 0 88 98 0 0 0 0 171 0 0
+157 0 0 154 0 0 36 0 0 255 255 0
+248 229 125 245 219 0 253 237 112 246 231 0
+255 235 131 188 191 77 0 0 0 169 0 0
+162 0 0 227 162 0 255 251 168 250 240 148
+247 235 200 255 253 224 235 240 185 116 86 0
+153 0 0 180 148 0 149 0 0 171 101 0
+224 191 183 252 252 198 255 255 244 255 252 216
+255 254 214 255 251 209 255 253 210 255 252 217
+255 252 206 255 254 224 255 253 213 255 254 216
+255 255 220 255 255 233 255 255 246 248 255 175
+236 229 112 198 151 0 179 86 0 161 0 0
+143 0 0 184 170 0 255 234 136 255 248 130
+255 246 230 253 244 0 177 90 0 114 0 0
+0 0 0 252 184 0 40 89 0 0 0 0
+0 0 0 0 0 0 248 186 176 228 210 179
+215 199 169 235 217 205 187 172 128 246 217 214
+232 221 197 236 207 175 241 220 210 221 201 157
+244 225 195 248 240 226 228 210 176 233 214 187
+254 247 242 237 231 218 212 188 143 245 231 214
+255 246 232 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 191 219 110
+0 0 0 144 47 0 255 255 255 0 0 0
+246 216 227 255 252 242 248 241 229 248 238 231
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 254 241 229
+255 255 255 233 217 93 0 0 0 92 0 0
+255 255 0 247 229 0 239 205 0 250 219 0
+207 216 0 31 0 0 55 0 0 6 0 0
+78 0 0 255 255 0 249 232 0 252 233 0
+255 249 0 21 0 0 91 0 0 60 0 0
+49 0 0 247 165 0 255 248 0 255 228 0
+255 255 4 0 0 0 69 0 0 125 0 0
+179 0 0 20 0 0 254 167 0 254 244 109
+249 236 163 247 224 19 243 218 36 255 241 165
+215 220 173 0 0 0 137 0 0 127 0 0
+255 253 0 254 247 156 251 242 196 251 242 218
+255 255 255 140 143 0 104 0 0 166 29 0
+150 0 0 183 122 80 243 238 207 255 255 230
+255 250 220 255 248 203 255 250 223 255 254 211
+255 255 232 255 255 219 255 248 180 251 227 150
+250 217 121 248 211 111 254 214 139 250 223 109
+249 219 118 254 223 134 255 240 173 255 251 220
+255 255 222 255 255 255 244 236 122 240 231 29
+153 90 0 157 0 0 120 0 0 196 170 0
+255 255 190 255 251 208 252 239 0 191 121 0
+164 0 0 43 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 253 230 193 255 240 227
+207 187 161 234 207 182 238 231 202 212 185 158
+235 219 184 238 222 193 237 213 181 251 236 202
+245 222 204 244 220 179 255 245 226 252 242 229
+213 195 161 217 194 160 253 246 227 253 243 235
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+88 104 0 0 0 0 212 175 0 250 248 195
+0 0 0 255 255 255 250 245 226 249 242 228
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 250 239 228
+255 255 255 185 165 0 0 0 0 140 0 0
+255 242 0 236 206 0 242 224 0 255 246 122
+95 108 0 63 0 0 39 0 0 47 0 0
+146 0 0 255 239 0 234 206 0 250 214 0
+173 165 0 14 0 0 130 0 0 65 0 0
+56 0 0 255 217 0 236 203 0 255 222 0
+154 180 0 44 0 0 132 0 0 194 0 0
+59 0 0 118 0 0 255 255 0 238 220 0
+236 204 0 248 231 0 255 234 178 255 255 192
+0 0 0 128 0 0 155 90 0 251 226 60
+254 253 151 249 235 150 255 251 226 249 236 151
+148 101 0 176 119 0 134 37 0 130 2 0
+245 241 198 255 255 225 255 247 209 255 246 209
+255 249 226 255 255 222 245 218 176 203 174 50
+197 124 0 135 28 0 155 0 0 136 59 0
+188 27 0 133 0 0 178 61 0 182 0 0
+164 0 0 186 48 0 186 45 0 213 118 0
+202 129 0 255 234 168 255 245 170 255 252 243
+255 255 199 208 199 0 138 30 0 137 0 0
+182 131 0 252 238 139 255 255 195 245 215 0
+201 162 0 200 0 0 66 0 0 0 0 0
+0 0 0 189 69 0 247 235 221 229 203 181
+232 214 176 226 202 176 236 221 185 226 194 168
+242 223 197 240 222 180 246 223 217 240 226 195
+255 241 227 255 247 238 235 222 196 210 187 155
+246 237 213 255 244 233 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 136 150 0 2 0 0 255 255 208
+181 207 0 160 99 126 255 255 255 253 241 232
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 246 239 231
+255 249 241 173 159 0 0 0 0 208 121 0
+251 230 0 247 228 0 248 225 0 255 253 69
+1 0 0 66 0 0 49 0 0 23 0 0
+234 142 0 248 241 66 241 224 10 255 254 0
+45 0 0 65 0 0 114 0 0 35 0 0
+116 0 0 255 255 0 247 231 0 255 255 0
+0 0 0 99 0 0 132 0 0 130 0 0
+71 0 0 252 217 0 244 219 53 250 230 5
+246 230 72 254 230 36 255 255 255 32 0 0
+65 0 0 155 102 0 231 156 0 255 255 203
+251 236 148 253 242 166 255 255 177 118 0 0
+179 23 0 106 0 0 209 154 58 255 254 232
+255 251 210 253 240 209 255 249 214 255 253 229
+217 207 118 203 115 0 187 122 0 173 0 0
+160 0 0 206 70 0 144 0 0 181 118 0
+181 18 0 169 91 0 166 72 0 198 112 0
+168 62 0 166 0 0 179 51 0 174 0 0
+132 0 0 164 0 0 196 103 0 217 146 0
+255 231 180 253 245 193 255 255 170 192 177 0
+134 0 0 144 0 0 255 244 8 255 248 234
+255 236 0 162 118 0 140 0 0 68 0 0
+0 0 0 255 202 209 228 215 170 239 216 200
+212 185 157 223 208 183 243 222 205 240 220 187
+255 246 231 235 224 192 249 223 199 255 247 232
+244 236 217 210 182 151 227 203 161 255 246 234
+253 240 234 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 33 29 0 118 42 0
+255 203 229 32 58 0 255 245 255 250 245 235
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 246 235 223 246 237 228
+255 255 222 31 0 0 0 0 0 254 187 0
+248 228 0 246 226 0 250 219 0 187 192 0
+7 0 0 85 0 0 49 0 0 0 0 0
+255 225 0 252 243 69 251 231 36 255 250 0
+0 0 0 101 0 0 118 0 0 62 0 0
+204 103 0 246 226 0 240 201 0 232 223 0
+21 0 0 87 0 0 120 0 0 123 0 0
+208 146 0 237 221 0 239 208 60 247 222 29
+247 228 45 255 255 255 64 5 0 21 0 0
+132 0 0 205 139 0 255 243 93 250 238 134
+253 238 174 255 255 210 128 11 0 154 0 0
+151 0 0 212 191 91 255 255 234 255 246 210
+254 243 200 255 250 218 255 236 185 190 148 0
+165 0 0 167 4 0 151 0 0 166 80 0
+194 156 0 232 199 160 252 247 169 255 255 220
+255 255 216 255 255 203 255 255 230 255 255 215
+254 250 191 245 249 190 228 214 128 208 195 81
+187 154 0 127 59 0 160 0 0 151 0 0
+196 0 0 247 212 6 255 239 188 255 250 157
+183 187 0 162 0 0 146 7 0 255 255 141
+250 234 156 252 247 0 169 15 0 146 0 0
+0 0 0 255 255 235 221 193 155 219 193 172
+248 236 211 250 231 207 223 207 171 252 242 225
+234 211 182 254 236 208 249 240 229 229 217 186
+207 185 137 251 237 212 255 247 242 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 0 0 0
+188 147 0 240 219 141 98 35 0 255 255 255
+251 246 233 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 252 240 227 249 240 235
+255 255 203 0 0 0 10 0 0 255 192 0
+231 206 0 233 200 0 255 229 0 136 160 0
+55 0 0 10 0 0 49 0 0 61 0 0
+255 237 0 228 193 0 235 205 0 206 202 0
+23 0 0 97 0 0 108 0 0 70 0 0
+255 226 0 252 232 0 255 230 0 148 171 0
+0 0 0 152 0 0 156 0 0 0 0 0
+255 240 0 235 218 0 237 219 54 233 211 0
+235 206 0 241 255 255 16 0 0 147 0 0
+118 0 0 255 255 119 245 231 127 247 236 120
+255 238 209 173 137 0 160 76 0 157 0 0
+174 96 0 255 255 255 247 241 192 251 244 213
+255 255 236 191 138 0 140 103 0 157 0 0
+146 0 0 180 120 27 239 250 200 255 255 245
+255 255 223 252 247 207 250 240 177 252 240 172
+254 241 212 239 223 93 249 236 200 247 237 166
+255 242 189 255 244 204 254 247 180 255 248 219
+255 254 230 255 255 226 204 204 114 148 133 0
+138 0 0 188 0 0 226 91 0 254 229 137
+255 253 180 239 254 0 121 0 0 153 63 0
+250 227 17 255 255 219 219 230 0 207 83 0
+17 0 0 255 255 228 242 233 199 225 197 176
+239 224 193 253 242 224 238 222 198 237 220 186
+255 243 234 237 226 206 217 185 150 222 200 168
+251 237 231 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 150 178 0
+0 0 0 255 228 190 137 164 0 75 4 0
+255 255 255 249 242 231 250 241 228 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 251 242 240
+255 255 196 0 0 0 0 0 0 255 234 0
+240 213 0 245 225 0 255 255 0 32 0 0
+11 0 0 50 0 0 115 0 0 163 0 0
+255 255 12 247 229 0 255 239 0 123 117 0
+39 0 0 59 0 0 59 0 0 164 0 0
+244 231 0 234 203 0 255 243 0 0 0 0
+110 0 0 122 0 0 141 0 0 153 0 0
+237 244 0 234 196 0 241 213 84 248 232 40
+255 255 223 15 0 0 172 0 0 88 0 0
+250 197 0 250 247 161 241 228 130 255 255 189
+169 146 0 160 0 0 169 90 0 182 94 58
+255 255 228 251 245 210 244 234 196 253 228 183
+197 183 2 147 59 0 176 0 0 169 53 0
+249 234 192 255 255 236 244 237 174 244 228 173
+247 240 198 238 223 132 248 241 206 243 233 148
+248 239 220 246 232 139 243 222 156 242 231 190
+243 218 141 255 242 206 238 206 75 246 235 166
+248 225 144 255 248 199 255 251 221 255 255 191
+211 230 0 127 0 0 139 0 0 208 0 0
+255 233 0 255 254 195 206 247 0 157 0 0
+102 0 0 255 255 39 255 226 114 209 220 0
+182 0 0 102 48 0 243 250 238 239 217 193
+251 248 233 227 212 178 248 236 215 254 239 231
+212 201 179 205 179 137 251 236 213 255 253 240
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+126 158 0 88 0 0 255 238 100 100 121 0
+231 194 231 255 253 244 248 247 229 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 249 238 240
+255 250 138 0 0 0 30 0 0 255 255 0
+239 221 0 243 223 0 255 255 0 61 0 0
+27 0 0 104 0 0 8 0 0 216 80 0
+251 236 0 231 203 0 255 244 0 0 0 0
+144 0 0 10 0 0 22 0 0 212 164 0
+249 235 0 255 245 0 202 208 0 0 0 0
+128 0 0 160 0 0 87 0 0 239 171 0
+242 237 0 238 222 0 243 220 31 247 221 84
+234 241 189 16 0 0 154 0 0 154 0 0
+255 254 66 245 236 130 245 227 130 255 255 167
+139 1 0 170 75 0 130 15 0 255 255 255
+250 241 200 251 244 218 242 206 114 233 204 0
+141 0 0 176 0 0 169 107 0 255 255 255
+255 253 215 253 241 204 247 240 199 241 227 148
+253 233 184 246 233 165 245 231 192 251 241 198
+233 210 113 248 239 175 236 206 59 246 235 215
+247 221 151 253 235 215 241 216 83 245 226 144
+248 220 138 245 234 136 248 222 159 248 238 119
+255 237 156 229 247 49 151 147 0 136 0 0
+158 0 0 244 188 0 255 255 163 179 183 0
+159 0 0 197 111 0 255 249 99 255 247 50
+186 67 0 16 0 0 182 170 110 255 251 243
+219 197 170 247 236 222 243 232 215 194 171 136
+223 199 163 254 246 232 255 243 235 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 12 0 0 230 200 48 255 255 255
+54 31 0 255 255 255 255 250 239 248 239 229
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 245 247
+255 245 112 0 0 0 44 0 0 255 255 0
+241 227 0 239 213 0 255 238 0 0 0 0
+30 0 0 75 0 0 33 0 0 229 181 0
+253 233 45 248 228 31 255 255 0 0 0 0
+122 0 0 42 0 0 59 0 0 240 190 0
+240 217 0 255 216 0 117 133 0 0 0 0
+139 0 0 168 0 0 0 0 0 255 235 0
+229 199 0 234 210 0 249 228 29 255 255 255
+76 120 0 96 0 0 83 0 0 219 128 0
+250 251 112 243 230 109 255 246 161 117 96 0
+181 49 0 150 0 0 222 191 148 250 248 219
+245 238 206 254 239 227 222 181 0 121 0 0
+210 170 0 176 102 0 255 245 238 255 251 211
+251 236 171 244 228 154 246 233 182 252 242 207
+242 233 146 248 218 180 238 225 136 253 235 116
+221 215 79 255 235 162 250 229 4 242 215 68
+242 220 0 254 220 92 233 200 0 244 219 41
+242 204 94 236 222 68 249 234 142 241 223 99
+251 227 108 248 233 138 255 255 144 137 125 0
+169 0 0 165 0 0 250 229 127 255 255 127
+189 208 0 128 0 0 255 245 0 252 235 91
+198 214 0 138 0 0 59 0 0 255 255 239
+238 228 214 224 206 178 202 184 153 245 229 207
+253 246 234 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 67 0 0 190 147 5
+239 246 197 57 14 0 255 249 255 255 249 242
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 253 245 247
+251 234 97 0 0 0 0 0 0 255 255 0
+228 192 0 238 204 0 238 245 0 105 0 0
+39 0 0 29 0 0 75 0 0 255 219 31
+255 247 119 247 227 55 241 239 0 7 0 0
+116 0 0 64 0 0 1 0 0 255 240 0
+233 210 0 255 255 0 0 0 0 13 0 0
+136 0 0 114 0 0 38 0 0 255 255 0
+241 223 0 246 230 33 248 231 75 235 240 208
+0 0 0 186 0 0 128 0 0 255 245 0
+247 238 155 246 230 123 253 255 174 142 8 0
+173 62 0 154 0 0 255 255 210 247 238 208
+250 242 217 243 203 0 152 65 0 205 86 0
+118 5 0 255 255 255 244 241 191 249 228 156
+254 231 189 251 241 194 231 220 127 244 217 131
+255 241 173 227 214 0 212 180 82 182 141 0
+152 110 0 129 87 0 120 62 0 103 93 0
+149 107 0 139 96 0 182 142 0 244 206 4
+241 207 51 227 192 0 254 233 161 240 210 13
+252 242 161 232 199 0 255 232 133 255 255 177
+185 164 0 181 20 0 149 0 0 255 242 0
+255 255 85 147 27 0 154 53 0 255 238 69
+255 255 0 176 58 0 101 34 0 237 235 237
+207 185 164 209 188 142 253 241 223 255 245 234
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 19 0 0 80 24 0
+255 213 238 203 204 0 0 2 0 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 247 244
+227 234 128 0 0 0 73 0 0 255 238 0
+253 221 0 251 225 0 204 203 0 39 0 0
+22 0 0 50 0 0 88 0 0 255 224 64
+243 221 39 246 207 0 196 213 0 37 0 0
+88 0 0 67 0 0 32 0 0 255 255 0
+251 227 0 255 255 0 8 0 0 54 0 0
+154 0 0 30 0 0 143 9 0 255 240 0
+238 204 0 243 211 0 251 218 6 149 167 9
+0 0 0 131 0 0 215 129 0 253 249 44
+251 235 146 255 243 148 186 201 0 144 0 0
+180 0 0 203 151 19 255 255 216 254 239 167
+255 243 200 196 147 0 180 27 0 113 0 0
+255 255 227 255 246 187 248 233 185 255 242 222
+246 223 77 245 220 80 255 247 137 252 230 57
+152 127 0 125 79 0 152 129 59 212 186 165
+250 245 188 255 255 255 255 253 229 255 255 255
+252 244 221 229 216 133 163 159 121 109 65 0
+129 112 0 220 191 175 228 195 0 255 233 133
+248 232 44 248 220 136 251 233 148 244 210 4
+250 237 96 186 172 0 145 0 0 234 130 0
+255 228 1 217 231 0 130 0 0 204 172 0
+255 255 123 166 130 0 201 28 0 122 98 0
+255 237 238 255 248 228 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 55 0 0
+164 136 0 251 202 187 255 255 186 22 18 0
+255 255 255 255 246 236 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 246 247
+245 242 117 0 0 0 121 0 0 255 255 0
+233 197 0 241 199 0 194 204 0 63 0 0
+45 0 0 53 0 0 183 37 0 250 217 0
+250 226 3 242 206 0 148 153 0 54 0 0
+83 0 0 121 0 0 48 0 0 255 255 0
+241 206 0 255 233 0 0 0 0 103 0 0
+153 0 0 0 0 0 234 173 0 255 250 0
+247 233 1 247 231 0 255 255 204 0 0 0
+52 0 0 160 0 0 255 242 52 251 237 26
+253 233 138 255 253 62 29 11 0 202 0 0
+109 0 0 255 248 221 255 246 195 253 235 181
+251 226 0 166 0 0 166 71 0 208 151 63
+255 255 168 252 233 141 246 232 128 243 219 118
+251 234 100 255 244 109 189 191 85 92 28 0
+210 174 172 255 255 255 255 255 244 252 220 201
+228 180 140 208 125 0 230 172 105 223 144 87
+223 143 76 248 187 155 255 231 216 255 255 255
+255 250 209 125 128 0 119 81 0 239 217 201
+251 231 0 243 218 29 242 215 39 246 236 112
+249 217 68 255 255 74 149 0 0 162 0 0
+236 161 0 255 255 151 133 13 0 150 0 0
+255 255 40 242 241 0 164 0 0 64 0 0
+255 255 255 249 238 224 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 0 0 0
+167 131 0 255 227 181 255 255 255 187 201 0
+131 102 112 255 255 244 250 237 229 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 243 230 255 255 255
+229 233 137 0 0 0 96 0 0 255 251 0
+246 216 0 255 246 0 139 158 0 33 0 0
+100 0 0 32 0 0 221 70 0 246 219 0
+242 209 0 255 237 0 77 101 0 69 0 0
+94 0 0 13 0 0 173 122 0 255 249 0
+255 235 0 211 222 0 0 0 0 103 0 0
+148 0 0 0 0 0 255 197 0 245 221 0
+245 219 0 251 222 0 255 255 200 0 0 0
+140 0 0 141 0 0 255 255 120 249 236 81
+255 239 140 177 206 0 117 0 0 179 0 0
+160 77 0 255 255 231 253 242 177 253 224 30
+191 152 0 151 0 0 221 129 0 255 255 204
+244 230 105 249 229 126 251 233 148 247 226 77
+255 236 108 191 186 37 136 84 56 255 252 0
+255 255 200 212 159 36 208 104 0 212 167 0
+234 176 34 239 211 100 247 207 167 244 231 194
+246 215 173 244 217 97 233 162 0 223 124 0
+241 178 168 255 255 255 211 217 125 63 36 0
+220 182 99 248 221 47 238 210 35 246 225 25
+255 239 180 255 233 100 184 230 0 173 0 0
+187 0 0 255 255 113 194 214 0 67 0 0
+249 229 12 255 235 28 173 151 0 34 0 0
+255 255 255 246 236 223 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 83 120 0
+106 29 0 213 199 0 0 0 0 221 216 0
+83 71 31 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 248 243 233 246 232 210 216 189 169
+235 206 87 0 0 0 53 0 0 255 253 0
+245 216 0 255 223 0 86 97 0 71 0 0
+44 0 0 24 0 0 222 126 0 245 223 0
+246 211 0 255 227 0 0 19 0 130 0 0
+76 0 0 20 0 0 199 103 0 253 234 0
+250 212 0 188 199 0 0 0 0 151 0 0
+104 0 0 128 0 0 249 213 0 242 220 0
+242 217 0 250 220 0 228 233 129 17 0 0
+128 0 0 193 0 0 255 255 142 251 232 110
+255 255 155 81 100 0 167 0 0 165 0 0
+240 214 188 249 244 160 255 247 177 234 191 0
+186 77 0 155 0 0 255 251 145 245 230 107
+244 224 62 255 236 199 247 233 119 255 245 102
+81 96 0 141 73 14 255 255 0 227 198 0
+182 66 0 235 157 0 251 229 0 255 255 255
+253 253 173 255 252 202 255 255 217 255 244 225
+255 255 255 255 253 224 252 247 174 251 216 0
+239 185 0 229 140 0 255 206 205 255 255 236
+49 65 0 254 212 169 255 244 163 236 211 5
+243 208 0 247 220 67 255 255 154 107 0 0
+135 0 0 237 151 0 255 255 131 115 102 0
+193 97 0 255 255 122 203 217 0 102 0 0
+255 239 228 251 243 230 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 235 248 198
+27 0 0 155 111 0 167 153 0 0 0 0
+247 215 211 255 249 238 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+252 247 239 233 221 187 186 163 132 223 194 170
+255 254 143 0 0 0 94 0 0 255 250 0
+233 198 0 252 217 0 141 137 0 11 0 0
+58 0 0 73 0 0 241 159 0 238 209 0
+251 228 0 255 244 0 0 0 0 125 0 0
+52 0 0 18 0 0 206 149 0 237 210 0
+254 217 0 179 191 0 0 0 0 153 0 0
+88 0 0 120 0 0 254 243 0 242 222 0
+243 225 0 255 234 0 169 197 86 44 0 0
+115 0 0 228 131 0 254 252 120 244 225 85
+255 255 55 0 0 0 172 0 0 146 0 0
+255 253 135 245 225 109 255 245 80 185 125 0
+152 0 0 166 0 0 255 255 143 247 236 140
+244 232 95 247 227 103 255 239 134 190 209 96
+184 88 0 255 250 0 215 190 0 226 132 104
+242 218 0 253 235 73 253 242 68 245 226 0
+216 155 6 219 148 0 225 163 44 236 169 104
+217 143 14 225 161 52 242 186 121 255 244 255
+255 251 223 251 223 114 217 134 0 237 173 175
+255 255 172 4 10 0 238 194 150 253 230 24
+245 220 2 247 218 140 254 233 3 164 190 0
+145 0 0 195 0 0 255 255 150 189 208 0
+135 0 0 255 255 113 244 249 77 123 0 0
+210 201 180 255 251 240 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+180 203 99 110 62 0 46 16 0 203 169 117
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 245 236 220
+227 205 180 184 165 145 246 230 219 255 244 247
+255 247 124 0 0 0 113 0 0 254 233 0
+238 200 0 255 242 0 20 64 0 29 0 0
+57 0 0 34 0 0 227 144 0 236 209 0
+239 203 0 233 241 0 0 0 0 168 0 0
+95 0 0 37 0 0 216 128 0 248 235 0
+255 240 0 121 146 0 0 0 0 123 0 0
+124 0 0 178 44 0 250 232 0 235 219 0
+243 223 0 255 235 0 130 174 24 111 0 0
+122 0 0 218 120 0 244 228 16 242 225 87
+255 255 69 112 0 0 183 0 0 152 0 0
+255 255 153 247 237 108 255 233 0 148 0 0
+174 0 0 221 174 0 245 232 42 236 216 67
+249 231 161 248 231 137 255 255 164 51 0 0
+255 255 0 241 215 0 218 114 0 245 226 0
+252 241 60 251 241 137 205 148 0 211 129 0
+230 187 130 246 227 162 247 234 218 245 231 187
+251 238 204 237 207 115 227 192 0 233 155 0
+245 190 167 255 245 255 247 224 29 208 124 0
+255 194 212 246 252 19 20 0 0 255 255 176
+241 203 0 241 218 3 254 233 87 222 235 8
+100 0 0 159 0 0 255 254 95 255 255 0
+56 0 0 255 240 71 255 254 66 128 0 0
+153 135 76 255 254 246 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 240 255 255 240 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 245 234 204 192 170 144
+199 180 158 255 246 243 255 246 234 250 243 247
+255 243 105 0 0 0 58 0 0 255 250 0
+243 205 0 255 217 0 104 98 0 46 0 0
+34 0 0 56 0 0 242 174 0 243 214 0
+243 221 0 204 213 0 43 0 0 142 0 0
+38 0 0 56 0 0 193 149 0 251 234 0
+255 235 0 58 115 0 56 0 0 113 0 0
+39 0 0 163 95 0 246 237 0 242 215 0
+243 223 0 255 240 16 86 146 0 84 0 0
+121 0 0 247 209 17 245 243 155 245 228 144
+238 250 29 99 0 0 171 0 0 175 8 0
+255 255 77 245 223 14 223 226 0 171 0 0
+144 0 0 246 219 94 246 242 110 247 232 114
+239 229 170 255 236 144 161 181 71 208 139 0
+250 218 0 216 142 0 242 193 0 244 234 50
+241 222 0 207 105 0 237 208 170 240 218 185
+231 225 163 236 199 122 237 210 113 215 189 48
+236 198 135 225 177 97 252 225 206 232 205 63
+226 175 0 221 143 0 255 247 255 255 255 196
+207 92 0 255 239 255 196 204 5 208 137 144
+250 221 0 244 217 0 244 221 0 255 243 129
+165 207 0 128 0 0 226 151 0 255 255 83
+85 0 0 245 197 54 255 255 131 164 20 0
+119 83 3 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 253 243 240 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+247 240 221 230 215 192 198 166 112 246 230 234
+255 244 234 239 222 191 246 236 223 253 245 247
+255 255 170 0 0 0 0 0 0 255 252 0
+234 194 0 255 250 0 23 38 0 69 0 0
+60 0 0 23 0 0 255 182 0 234 210 0
+235 198 0 211 217 0 5 0 0 162 0 0
+118 0 0 1 0 0 212 161 0 247 221 0
+255 232 0 100 121 0 0 0 0 126 0 0
+4 0 0 209 119 0 247 225 0 240 216 0
+248 227 0 255 245 76 81 127 0 104 0 0
+109 0 0 255 240 91 250 238 86 253 233 95
+204 236 0 120 0 0 178 0 0 198 90 0
+253 249 45 244 225 0 206 198 0 172 0 0
+142 0 0 251 249 33 236 215 12 240 218 99
+250 236 176 255 246 185 10 0 0 255 246 0
+219 166 0 223 140 0 255 248 168 236 230 0
+191 103 0 233 204 160 250 236 204 246 234 187
+197 151 0 168 98 0 172 119 0 185 147 118
+152 116 0 201 143 0 170 101 0 235 165 11
+246 225 171 235 208 0 203 124 0 255 233 202
+236 212 25 225 98 0 255 255 255 0 0 0
+255 255 171 244 210 0 249 234 0 250 220 19
+231 252 92 113 0 0 196 59 0 255 255 92
+77 18 0 234 138 0 255 255 157 172 51 0
+112 53 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 248 238 235 248 239 222
+206 186 146 200 179 148 253 243 240 242 235 211
+223 206 169 239 238 226 253 242 232 255 255 255
+101 35 0 52 0 0 0 0 0 255 243 0
+243 214 0 255 242 0 65 18 0 72 0 0
+55 0 0 10 0 0 253 186 0 235 208 0
+244 220 0 205 219 0 6 0 0 150 0 0
+71 0 0 0 0 0 242 164 0 227 213 0
+255 225 0 45 112 0 93 0 0 127 0 0
+38 0 0 207 137 0 247 235 0 241 223 0
+239 223 0 255 252 0 16 81 0 121 0 0
+76 0 0 255 233 31 244 223 0 255 231 113
+164 205 0 128 0 0 179 0 0 217 160 0
+243 231 0 242 220 0 181 174 0 193 0 0
+98 0 0 255 255 118 236 224 39 237 224 128
+248 230 158 169 200 0 135 0 0 255 252 0
+208 98 0 232 187 0 253 248 0 190 96 0
+233 190 146 246 229 209 239 225 158 159 121 0
+206 168 203 255 255 246 255 255 255 255 252 245
+255 255 255 255 255 255 253 249 243 184 146 3
+162 86 0 255 246 246 220 179 0 191 89 0
+255 255 255 179 71 0 255 213 218 143 181 15
+236 177 141 244 218 4 239 207 0 238 206 0
+255 255 13 83 0 0 193 0 0 255 234 0
+113 114 0 212 117 0 255 255 154 143 70 0
+102 40 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 246 245 241 238 202 207 177 156
+227 211 181 255 243 245 241 233 204 235 215 182
+254 243 232 255 255 255 232 243 213 60 15 0
+251 155 0 0 0 0 30 0 0 255 240 0
+224 189 0 255 226 0 79 69 0 53 0 0
+36 0 0 54 0 0 252 176 0 244 225 0
+245 214 0 206 214 0 62 0 0 118 0 0
+73 0 0 5 0 0 237 179 0 250 235 0
+250 217 0 115 166 0 114 0 0 161 0 0
+49 0 0 207 154 0 248 225 0 239 210 0
+245 215 0 255 245 0 18 50 0 122 0 0
+81 0 0 255 255 139 244 230 0 252 223 51
+145 171 0 124 0 0 179 0 0 236 199 0
+247 242 112 250 234 0 184 148 0 183 0 0
+152 0 0 254 255 127 236 221 92 245 237 193
+255 246 164 75 81 0 239 178 0 249 227 0
+224 113 0 247 221 0 236 225 0 196 77 0
+242 219 145 241 228 178 138 84 0 238 198 188
+255 252 192 241 219 0 248 218 0 246 221 0
+251 230 0 254 235 137 255 252 226 255 255 255
+243 245 176 125 36 0 255 246 219 187 170 0
+240 180 151 220 191 0 218 98 0 255 255 255
+126 43 0 255 247 51 254 241 17 254 235 84
+255 255 160 79 0 0 157 0 0 255 213 47
+152 171 0 161 0 0 255 248 132 206 136 0
+89 54 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 249 234
+255 249 230 217 197 171 207 177 144 243 228 220
+255 251 232 239 219 181 243 221 195 255 247 239
+255 246 236 255 255 255 66 0 0 193 118 0
+223 145 0 106 110 0 0 0 0 255 233 0
+226 178 0 255 232 0 98 88 0 36 0 0
+0 0 0 29 0 0 250 159 0 242 213 0
+241 199 0 231 226 0 31 0 0 116 0 0
+33 0 0 0 0 0 190 68 0 249 228 0
+255 219 0 129 155 0 115 0 0 128 0 0
+46 0 0 190 140 0 246 215 0 240 205 0
+243 215 0 255 253 46 5 74 0 108 0 0
+102 0 0 254 229 0 245 218 0 255 243 109
+155 190 0 119 0 0 159 0 0 244 181 0
+253 245 79 255 244 37 159 110 0 179 0 0
+161 82 0 255 255 134 248 235 115 246 234 171
+255 255 171 0 0 0 252 172 0 234 222 0
+229 132 0 248 221 0 213 125 0 234 211 32
+246 214 148 196 184 0 242 187 116 255 246 0
+247 218 0 243 200 0 225 178 0 238 202 0
+233 182 0 237 201 0 247 219 0 252 243 172
+255 251 255 139 158 0 236 183 162 249 229 130
+234 129 0 232 234 53 204 58 0 255 255 255
+38 0 0 250 211 0 241 207 0 233 202 0
+255 247 56 116 0 0 178 0 0 255 223 76
+153 170 0 168 0 0 255 237 120 175 105 0
+133 62 19 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 244 237 255 246 232
+211 184 141 230 202 188 255 244 233 255 250 237
+215 195 152 246 222 209 255 247 233 255 241 228
+255 255 255 21 0 0 194 69 0 211 162 0
+192 108 0 151 155 0 0 0 0 227 172 0
+242 209 0 255 208 0 97 112 0 66 0 0
+0 0 0 27 0 0 251 159 0 235 208 0
+250 209 0 214 221 0 6 0 0 74 0 0
+52 0 0 10 0 0 169 41 0 251 234 0
+254 216 0 151 195 0 102 0 0 157 0 0
+38 0 0 156 77 0 255 249 0 248 224 0
+247 225 0 255 247 105 82 117 0 107 0 0
+94 0 0 255 241 0 249 236 0 255 244 80
+128 178 0 120 0 0 113 0 0 236 146 0
+250 234 8 251 227 0 170 109 0 183 0 0
+211 82 0 249 248 54 245 222 98 248 234 169
+255 255 186 40 0 0 251 205 0 219 177 0
+226 156 0 252 229 0 190 86 0 246 214 52
+251 225 115 123 62 0 255 246 94 248 232 0
+240 209 0 233 190 0 239 199 0 188 155 0
+192 136 0 229 187 0 226 177 0 252 226 0
+255 245 232 255 248 202 128 55 0 255 252 171
+183 106 0 246 227 102 177 79 0 255 255 255
+36 57 0 238 187 4 255 233 0 247 223 0
+255 241 0 113 59 0 135 0 0 255 209 138
+158 175 0 189 26 0 255 247 162 184 133 0
+91 53 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 243 231 255 248 238 235 222 192 205 181 145
+231 210 189 255 245 235 255 248 238 229 214 172
+252 237 228 255 246 233 255 248 234 255 253 242
+156 205 136 73 0 0 211 160 0 184 124 0
+210 151 0 205 147 0 0 0 0 211 158 0
+243 204 0 255 215 0 146 153 0 28 0 0
+24 0 0 0 0 0 239 122 0 238 203 0
+232 198 0 255 225 0 41 90 0 113 0 0
+18 0 0 60 0 0 91 0 0 255 255 0
+244 205 0 223 230 0 0 0 0 143 0 0
+56 0 0 92 0 0 249 224 0 242 214 0
+240 210 0 255 230 0 14 101 0 123 0 0
+79 0 0 255 219 0 251 238 75 255 240 65
+149 192 0 134 0 0 107 0 0 203 134 0
+254 242 26 255 234 62 134 139 0 186 0 0
+167 18 0 255 255 31 242 232 165 246 235 160
+255 255 201 0 0 0 255 203 0 223 180 0
+228 166 0 245 223 0 202 81 0 237 220 0
+254 223 133 130 75 0 255 229 0 247 216 0
+241 211 0 229 175 0 123 114 0 186 138 161
+176 174 173 78 74 0 219 173 9 239 194 0
+248 231 0 255 254 235 133 87 0 247 178 155
+212 176 0 255 224 161 203 142 0 255 214 195
+75 109 3 212 156 0 235 206 0 248 214 0
+255 234 0 124 127 0 105 0 0 234 185 110
+170 168 0 173 0 0 255 244 162 144 129 0
+118 74 41 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 247 242 238 225 192 202 176 142 242 223 213
+254 245 237 253 243 230 255 243 229 255 245 231
+255 246 230 255 243 229 255 255 246 184 214 140
+106 0 0 167 142 0 213 129 0 223 191 0
+176 113 0 255 247 0 62 0 0 190 125 0
+242 221 0 242 201 0 196 186 0 0 0 0
+27 0 0 6 0 0 210 76 0 244 202 0
+242 209 0 250 218 0 129 160 0 84 0 0
+68 0 0 47 0 0 102 0 0 255 243 0
+245 218 0 255 254 0 3 0 0 170 0 0
+105 0 0 0 0 0 255 223 0 244 218 0
+233 199 0 255 229 0 121 166 0 82 0 0
+79 0 0 255 228 0 241 218 25 249 219 7
+211 215 0 107 0 0 134 0 0 195 145 0
+248 237 0 255 230 17 182 169 0 178 0 0
+148 0 0 255 255 68 242 229 186 243 227 170
+255 255 192 42 0 0 244 201 0 214 165 0
+212 120 0 241 232 0 171 17 0 245 233 0
+247 221 31 169 83 0 255 231 0 249 230 0
+255 217 0 122 145 5 217 141 174 255 255 255
+255 233 226 255 255 255 21 1 0 255 221 0
+239 199 0 255 246 168 169 154 0 219 157 187
+229 204 0 241 195 57 212 152 0 255 206 173
+137 156 112 188 97 0 248 228 0 234 198 0
+255 213 0 126 168 0 133 0 0 238 199 9
+177 166 0 190 41 0 255 255 170 125 43 0
+173 143 144 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 253 241 227
+226 206 174 202 177 148 255 246 239 255 245 233
+250 242 226 253 240 229 252 240 230 253 241 233
+252 238 217 255 251 244 228 255 228 14 0 0
+205 80 0 147 95 0 227 183 0 154 87 0
+235 205 0 178 110 0 132 131 0 79 0 0
+255 242 0 229 183 0 209 222 0 3 0 0
+17 0 0 0 0 0 182 0 0 245 208 0
+241 214 0 234 194 0 202 210 0 0 0 0
+86 0 0 99 0 0 0 0 0 255 242 0
+244 204 0 250 243 0 33 0 0 146 0 0
+92 0 0 0 0 0 255 193 0 241 213 0
+224 190 0 246 199 0 180 211 38 107 0 0
+73 0 0 223 158 0 250 240 51 248 234 90
+236 231 0 97 0 0 128 0 0 173 30 0
+248 244 0 230 199 0 206 207 0 150 0 0
+157 0 0 247 249 0 243 227 172 241 234 170
+255 243 158 32 56 0 234 152 0 219 184 0
+226 150 0 233 208 0 200 104 0 255 251 102
+255 247 146 116 51 0 253 220 0 234 185 0
+255 248 74 75 64 0 254 212 190 255 254 243
+212 194 100 255 247 246 110 123 0 198 147 0
+246 205 0 249 224 0 162 118 0 198 123 35
+237 218 0 245 190 114 208 182 0 255 197 154
+126 158 108 201 122 15 255 239 0 253 227 0
+255 234 0 76 130 0 118 0 0 247 191 0
+190 139 0 194 64 0 255 255 176 95 0 0
+221 201 184 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 239 218 188 178 141
+207 175 152 246 240 237 251 240 227 253 239 225
+244 237 226 252 241 234 254 243 233 237 220 183
+246 237 223 255 255 255 30 0 0 227 153 0
+182 126 0 221 180 0 164 102 0 227 185 0
+142 83 0 191 170 0 204 167 0 0 0 0
+255 238 0 228 187 0 232 233 0 31 0 0
+98 0 0 0 0 0 99 0 0 248 203 0
+234 200 0 237 210 0 244 243 0 6 0 0
+79 0 0 0 0 0 22 0 0 255 199 0
+227 198 0 255 254 0 29 0 0 104 0 0
+89 0 0 0 0 0 173 93 0 233 202 0
+222 185 0 238 206 0 203 231 153 23 0 0
+119 0 0 207 146 0 239 224 0 236 211 0
+254 255 118 68 0 0 174 0 0 70 0 0
+254 254 0 237 216 0 220 224 0 145 0 0
+152 0 0 249 254 33 228 199 0 232 210 65
+251 224 140 92 138 47 172 55 0 235 207 0
+201 116 0 249 218 0 173 76 0 254 244 150
+255 255 255 84 46 0 225 165 0 228 182 0
+255 244 56 183 208 177 26 0 0 113 81 0
+182 115 141 255 233 0 98 113 0 201 123 0
+250 230 0 202 186 0 143 87 0 235 165 51
+232 197 0 234 183 0 221 158 0 255 226 213
+109 119 11 170 85 0 249 228 0 236 201 0
+255 236 0 55 112 0 134 0 0 253 190 0
+137 94 0 224 94 0 255 255 163 16 0 0
+249 242 221 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 246 234 209 195 169 133 238 219 206
+255 244 245 246 239 207 224 207 182 252 241 233
+250 241 232 245 235 207 234 215 188 243 238 228
+255 249 233 195 229 199 132 0 0 237 176 0
+141 104 0 224 157 0 107 65 0 208 168 0
+212 145 0 215 172 0 255 225 0 0 0 0
+255 233 0 224 188 0 255 248 0 0 0 0
+0 0 0 0 0 0 54 0 0 244 162 0
+243 215 0 228 199 0 255 221 0 15 0 0
+26 0 0 25 0 0 85 0 0 191 123 0
+245 216 0 254 219 0 115 136 0 27 0 0
+132 0 0 8 0 0 122 0 0 255 248 0
+226 200 0 232 199 0 255 244 118 52 0 0
+120 0 0 158 4 0 251 250 0 238 219 26
+253 234 0 8 0 0 173 0 0 48 0 0
+255 255 0 233 212 0 231 221 0 176 23 0
+141 0 0 216 183 0 235 220 25 233 213 83
+239 218 119 207 235 207 16 0 0 241 225 0
+196 65 0 238 193 0 183 158 0 250 209 136
+255 248 245 150 177 0 170 77 0 236 187 0
+234 213 0 255 249 255 237 245 200 207 202 197
+255 238 168 255 229 0 53 23 0 248 204 0
+250 222 0 225 221 0 0 0 0 242 212 0
+191 178 0 252 200 50 187 131 0 255 228 200
+54 108 0 223 141 107 246 224 0 249 222 0
+255 241 0 9 79 0 170 0 0 255 229 0
+147 34 0 238 165 0 255 255 173 40 0 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+223 202 162 201 176 143 244 223 208 255 250 237
+240 227 202 225 205 182 248 246 238 253 240 231
+240 233 212 240 225 203 248 240 232 254 246 238
+254 250 241 74 16 0 221 148 0 174 123 0
+223 159 0 151 144 0 243 204 0 160 124 0
+199 128 0 215 186 0 255 193 0 0 0 0
+239 199 0 237 197 0 255 221 0 23 0 0
+0 0 0 0 0 0 0 0 0 226 118 0
+243 218 0 221 184 0 255 236 0 0 10 0
+84 0 0 5 0 0 91 0 0 110 0 0
+247 242 0 237 197 0 208 223 0 0 0 0
+142 0 0 63 0 0 0 0 0 255 251 0
+227 193 0 222 185 0 255 243 0 0 0 0
+128 0 0 120 0 0 255 255 0 230 208 0
+248 220 4 119 156 0 143 0 0 84 0 0
+238 193 0 238 227 0 255 238 12 130 96 0
+149 0 0 181 69 0 244 246 75 233 209 52
+229 209 0 255 229 246 12 112 0 172 60 0
+227 201 0 197 89 0 228 232 0 215 89 0
+255 241 184 255 250 135 33 0 0 136 37 0
+233 196 0 246 224 0 251 230 172 255 244 185
+242 202 0 186 196 0 43 0 0 255 255 0
+219 191 0 208 161 0 72 0 0 255 234 0
+141 140 0 255 232 0 181 115 0 255 246 197
+19 0 0 231 188 172 239 210 0 237 205 0
+255 245 0 0 8 0 171 0 0 255 245 0
+100 0 0 250 216 91 237 255 144 42 0 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 217 198 164
+209 181 166 255 240 236 253 244 224 226 201 167
+241 218 206 246 244 234 253 241 232 241 229 192
+238 223 204 255 240 233 250 241 230 255 255 255
+46 17 0 185 86 0 165 101 0 220 158 0
+194 168 0 176 83 0 173 140 0 221 171 0
+147 136 0 169 86 0 216 161 0 122 136 0
+149 20 0 235 224 0 245 183 0 132 169 0
+14 0 0 0 0 0 0 0 0 189 0 0
+251 237 0 227 200 0 231 179 0 138 200 0
+82 0 0 18 0 0 83 0 0 22 0 0
+240 196 0 246 221 0 253 242 0 19 31 0
+163 0 0 0 0 0 0 0 0 255 201 0
+233 204 0 227 191 0 251 203 0 87 143 0
+66 0 0 71 0 0 255 216 0 231 214 0
+234 204 0 187 184 0 40 0 0 118 0 0
+168 122 0 252 233 0 222 196 0 212 208 0
+146 0 0 117 0 0 247 244 0 231 210 26
+221 196 0 242 216 191 226 238 209 0 0 0
+248 208 0 153 64 0 233 194 0 188 114 0
+213 107 0 248 238 196 239 241 193 155 172 0
+55 0 0 198 139 0 182 131 0 176 146 0
+118 72 0 65 0 0 252 241 0 230 194 0
+229 203 0 58 0 0 209 173 3 255 251 0
+106 58 0 255 255 12 92 0 0 255 255 221
+36 0 0 253 222 79 244 217 0 250 219 0
+255 255 79 0 0 0 216 0 0 251 255 0
+103 0 0 255 255 127 164 181 42 90 33 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 223 199 170 204 184 156
+255 251 245 242 227 211 229 204 159 255 239 234
+255 246 237 255 249 239 240 220 185 247 227 198
+255 247 234 250 239 230 255 249 236 247 255 255
+146 0 0 199 144 0 215 154 0 158 127 0
+198 123 0 170 158 0 231 175 0 223 188 0
+181 92 0 177 152 0 220 159 0 242 222 0
+0 0 0 255 232 0 237 200 0 255 253 0
+0 0 0 0 0 0 54 0 0 64 0 0
+255 217 0 230 193 0 239 209 0 218 222 0
+13 0 0 19 0 0 54 0 0 0 0 0
+180 61 0 243 221 0 238 186 0 153 193 0
+25 0 0 79 0 0 0 0 0 196 62 0
+238 213 0 229 203 0 243 203 0 197 212 65
+0 0 0 95 0 0 255 159 0 230 211 0
+188 142 0 254 233 0 89 82 0 75 0 0
+0 0 0 255 213 0 247 236 0 236 207 0
+157 142 0 59 0 0 249 214 0 247 224 43
+250 242 181 223 200 0 255 232 206 20 107 0
+180 44 0 223 199 0 212 103 0 205 167 0
+196 107 0 212 147 0 255 233 153 255 242 208
+208 216 157 163 153 99 143 117 50 136 94 0
+229 199 148 255 233 0 240 207 0 219 202 0
+96 39 0 34 0 0 255 255 69 253 237 0
+126 0 0 225 243 0 163 11 0 228 253 47
+106 0 0 244 237 0 234 206 0 233 197 0
+255 248 36 41 0 0 240 141 0 200 218 0
+168 0 0 255 255 189 144 127 0 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 210 186 151 255 242 245
+224 211 160 228 201 170 255 246 240 255 248 237
+253 243 229 234 205 161 252 239 232 255 246 232
+255 243 228 254 241 229 255 255 255 27 0 0
+201 102 0 150 35 0 240 212 0 176 91 0
+228 201 0 146 103 0 209 147 0 195 171 0
+221 168 0 227 204 0 126 64 0 230 177 0
+0 0 0 200 106 0 254 219 0 255 204 0
+100 132 0 0 0 0 3 0 0 0 0 0
+254 180 0 230 205 0 212 171 0 255 255 0
+30 0 0 13 0 0 46 0 0 82 0 0
+73 0 0 255 233 0 245 219 0 228 232 0
+0 0 0 162 0 0 0 0 0 43 0 0
+255 247 0 215 172 0 210 177 0 255 247 255
+0 62 0 90 0 0 149 0 0 231 221 0
+230 205 0 228 169 0 219 199 0 0 0 0
+61 0 0 78 0 0 252 243 0 236 212 70
+226 243 0 90 0 0 149 0 0 253 235 81
+233 204 0 245 218 60 218 196 0 255 255 186
+0 0 0 94 0 0 221 172 0 210 129 0
+185 158 0 179 96 0 180 92 0 227 156 0
+238 217 139 247 209 120 238 207 48 249 229 0
+228 200 0 231 181 0 171 179 0 122 0 0
+0 0 0 252 240 173 237 201 0 206 206 0
+209 119 0 167 163 0 153 69 0 222 221 0
+179 108 0 243 224 0 223 196 0 236 196 0
+251 254 97 65 0 0 248 154 0 145 123 0
+166 70 0 243 255 52 63 0 0 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+194 170 132 233 211 196 255 248 237 216 188 147
+243 221 202 255 244 234 255 248 237 238 223 181
+233 209 180 253 242 227 253 241 233 255 243 227
+255 244 229 255 242 238 247 255 205 107 0 0
+155 112 0 135 95 0 197 157 0 173 81 0
+199 167 0 227 182 0 197 138 0 181 125 0
+184 114 0 172 133 0 198 151 0 237 197 0
+179 169 0 0 0 0 253 231 0 251 205 0
+207 222 0 0 0 0 36 0 0 15 0 0
+239 146 0 225 200 0 234 208 0 237 188 0
+94 152 0 21 0 0 67 0 0 50 0 0
+0 0 0 255 246 0 225 198 0 255 243 0
+0 0 0 101 0 0 110 0 0 0 0 0
+255 229 0 239 219 0 242 223 0 233 203 173
+198 212 74 56 0 0 108 0 0 249 194 0
+199 179 0 220 191 0 253 241 0 105 0 0
+124 0 0 0 0 0 255 208 0 230 205 0
+243 197 0 153 185 0 134 0 0 166 49 0
+255 255 179 235 205 0 247 227 190 233 195 62
+251 246 171 0 50 0 70 0 0 218 128 0
+158 71 0 211 124 0 203 173 0 210 143 0
+210 151 0 203 184 0 199 135 0 184 152 0
+210 149 0 166 151 0 77 0 0 0 0 0
+171 111 52 255 232 51 255 231 0 79 72 0
+255 243 0 31 0 0 255 252 55 67 94 0
+255 205 0 238 211 0 243 217 0 252 209 0
+157 196 0 108 0 0 254 255 26 109 0 0
+255 221 0 202 168 0 5 0 0 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+237 218 204 253 242 231 215 194 148 245 222 214
+255 249 240 255 249 241 241 222 187 244 226 208
+255 245 241 255 250 235 252 240 227 255 243 226
+255 246 232 255 255 255 83 116 0 121 0 0
+251 181 0 173 155 0 202 145 0 142 118 0
+216 138 0 215 181 0 168 103 0 228 174 0
+167 164 0 235 159 0 136 132 0 202 145 0
+234 158 0 0 0 0 251 194 0 224 204 0
+255 230 0 0 0 0 0 0 0 28 0 0
+136 0 0 243 227 0 220 180 0 242 213 0
+217 221 0 23 0 0 46 0 0 36 0 0
+22 0 0 191 95 0 255 232 0 248 206 0
+194 216 0 0 0 0 91 0 0 0 0 0
+178 0 0 255 242 0 212 179 0 212 167 0
+255 255 255 0 0 0 113 0 0 164 0 0
+232 230 0 205 171 0 236 193 0 199 211 0
+116 0 0 44 0 0 47 0 0 255 253 0
+239 203 0 255 244 0 92 0 0 114 0 0
+217 166 0 255 253 126 234 205 29 243 234 177
+238 196 107 255 255 255 151 177 0 0 0 0
+95 0 0 131 38 0 154 51 0 163 104 0
+159 109 0 199 164 0 98 0 0 116 0 0
+25 0 0 12 0 0 27 0 0 255 240 233
+255 240 217 254 226 0 144 148 0 109 0 0
+251 255 0 107 0 0 255 255 31 33 0 0
+255 255 0 228 196 0 216 179 0 255 212 0
+21 64 0 200 0 0 207 230 0 97 0 0
+255 255 0 126 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 254 231 211 182 147 237 218 202 255 251 241
+254 244 231 237 223 187 245 216 202 255 251 239
+254 240 232 247 236 206 250 234 217 253 242 229
+255 255 255 171 190 115 84 0 0 175 137 0
+187 117 0 138 81 0 231 204 0 189 127 0
+169 150 0 174 94 0 156 74 0 223 201 0
+142 73 0 221 168 0 189 166 0 154 79 0
+196 118 0 193 170 0 140 0 0 225 208 0
+254 200 0 104 155 0 0 0 0 28 0 0
+72 0 0 251 190 0 242 214 0 217 186 0
+248 195 0 157 199 0 0 0 0 122 0 0
+0 0 0 11 0 0 253 227 0 223 183 0
+255 240 0 0 0 0 49 0 0 0 0 0
+0 0 0 221 136 0 241 211 0 218 192 0
+255 217 96 79 152 0 112 0 0 65 0 0
+188 136 0 237 220 0 168 150 0 247 203 0
+119 97 0 120 0 0 0 0 0 251 188 0
+239 214 0 222 194 0 216 220 0 85 0 0
+68 0 0 245 212 0 255 245 118 229 201 0
+239 232 154 226 210 51 247 224 167 227 229 97
+137 154 0 0 0 0 0 0 0 0 0 0
+28 0 0 0 0 0 0 0 0 0 0 0
+131 30 0 186 163 44 255 255 177 243 219 35
+234 201 0 238 229 0 82 0 0 255 233 0
+88 84 0 234 182 0 187 184 0 176 89 0
+247 222 0 225 196 0 240 197 0 238 231 0
+0 0 0 255 167 0 129 67 0 112 0 0
+255 255 0 0 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+211 184 131 247 235 232 253 242 236 255 247 235
+216 198 154 236 213 189 255 246 238 255 244 237
+236 222 191 241 220 198 250 241 232 254 241 230
+255 255 255 0 0 0 175 33 0 192 128 0
+209 169 0 172 143 0 110 27 0 244 215 0
+135 92 0 236 189 0 137 104 0 166 94 0
+212 186 0 144 65 0 192 111 0 192 115 0
+153 111 0 198 31 0 0 0 0 255 221 0
+227 186 0 255 242 0 0 0 0 0 0 0
+0 0 0 241 132 0 223 177 0 223 200 0
+227 192 0 255 222 0 0 0 0 25 0 0
+22 0 0 70 0 0 205 125 0 244 224 0
+244 195 0 187 224 0 0 0 0 117 0 0
+0 0 0 68 0 0 241 221 0 232 205 0
+224 206 0 251 219 205 0 0 0 118 0 0
+224 110 0 170 163 0 195 115 0 179 156 0
+247 242 0 157 67 0 94 0 0 0 0 0
+197 118 0 237 192 0 231 214 80 216 202 0
+79 0 0 77 0 0 197 119 0 255 246 84
+243 235 72 224 197 0 227 210 0 232 212 54
+255 222 151 255 242 63 226 230 181 230 214 132
+187 181 0 204 175 62 190 178 0 255 238 180
+255 255 167 250 216 75 242 227 44 234 202 0
+250 227 0 11 0 0 226 171 0 249 234 0
+0 0 0 255 253 0 0 0 0 255 229 0
+210 168 0 226 177 0 248 207 0 102 126 0
+59 0 0 255 248 0 0 0 0 236 201 0
+124 127 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+240 229 217 252 246 236 252 245 239 226 206 167
+241 226 212 251 245 240 251 242 233 236 221 185
+234 227 207 253 248 238 244 236 228 255 244 233
+238 255 251 108 0 0 102 17 0 234 200 0
+182 118 0 197 186 0 181 155 0 158 79 0
+154 93 0 182 143 0 186 144 0 176 76 0
+208 178 0 206 143 0 187 151 0 178 63 0
+164 69 0 210 140 0 140 93 0 158 84 0
+227 201 0 255 246 0 0 0 0 0 0 0
+0 0 0 132 0 0 235 184 0 220 203 0
+216 165 0 255 237 0 39 48 0 0 0 0
+62 0 0 73 0 0 15 0 0 241 194 0
+230 207 0 241 206 0 125 184 0 1 0 0
+108 0 0 0 0 0 255 206 0 219 194 0
+208 171 0 237 200 0 113 158 0 0 0 0
+136 0 0 214 141 0 189 180 0 189 108 0
+180 119 0 243 231 0 144 0 0 15 0 0
+0 0 0 211 140 0 221 181 0 227 211 0
+237 241 0 67 0 0 30 0 0 139 6 0
+255 238 0 246 238 0 229 208 38 227 192 0
+233 209 97 245 220 81 234 202 17 242 237 172
+247 213 103 241 216 162 252 243 186 235 210 107
+240 214 125 244 221 0 241 211 0 187 208 0
+74 0 0 185 86 0 255 255 0 0 0 0
+222 233 0 99 73 0 162 36 0 255 247 0
+204 166 0 221 167 0 255 224 0 0 0 0
+192 0 0 204 249 0 62 0 0 255 255 0
+0 0 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 249 241 246 235 221 220 203 170 248 229 218
+251 244 237 249 239 229 234 215 174 249 240 235
+249 238 230 253 244 228 247 238 228 255 255 255
+52 74 0 178 81 0 216 197 0 105 17 0
+243 201 0 158 121 0 232 189 0 211 176 0
+190 175 0 169 104 0 218 181 0 120 111 0
+151 45 0 186 150 0 131 0 0 184 128 0
+181 141 0 123 19 0 233 141 0 0 0 0
+228 132 0 241 201 0 203 193 0 0 0 0
+0 0 0 0 0 0 190 0 0 205 205 0
+230 203 0 218 170 0 234 246 0 0 0 0
+0 0 0 81 0 0 0 0 0 172 26 0
+251 238 0 230 207 0 255 249 0 0 0 0
+76 0 0 61 0 0 59 0 0 250 220 0
+218 192 0 208 167 0 255 239 238 63 90 0
+79 0 0 116 0 0 240 224 0 148 94 0
+237 202 0 213 181 0 255 248 0 46 0 0
+0 0 0 0 0 0 202 61 0 194 160 0
+236 226 0 219 232 148 191 140 0 96 0 0
+73 0 0 114 0 0 224 224 0 241 217 0
+227 223 40 243 214 70 228 198 0 248 234 171
+243 221 0 198 162 0 245 204 55 250 230 0
+219 217 0 204 190 0 103 14 0 154 0 0
+250 190 0 255 255 0 0 0 0 139 0 0
+178 145 0 81 0 0 250 220 0 233 211 0
+198 155 0 223 180 0 203 182 0 26 0 0
+253 153 0 0 0 0 239 159 0 210 187 0
+0 0 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+250 245 229 220 198 161 244 229 218 255 246 240
+233 224 195 223 202 161 252 241 238 246 238 226
+244 237 228 249 239 225 242 233 230 255 255 255
+98 15 0 120 0 0 226 207 0 179 147 0
+97 6 0 164 60 0 175 133 0 147 101 0
+177 134 0 140 85 0 95 44 0 197 124 0
+142 104 0 148 28 0 129 31 0 201 148 0
+137 0 0 161 62 0 190 122 0 242 194 0
+0 0 0 255 242 0 231 211 0 168 171 0
+0 0 0 44 0 0 0 0 0 242 173 0
+211 173 0 238 208 0 255 206 0 0 0 0
+0 0 0 79 0 0 58 0 0 0 0 0
+255 210 0 223 188 0 240 185 0 173 225 0
+0 0 0 112 0 0 0 0 0 184 86 0
+229 197 0 199 168 0 198 151 0 255 255 134
+0 0 0 148 0 0 68 0 0 220 202 0
+195 141 0 183 138 0 233 206 0 240 199 0
+165 124 0 0 0 0 0 0 0 84 0 0
+181 98 0 163 132 0 231 224 0 238 239 0
+194 178 0 118 34 0 65 0 0 121 0 0
+120 0 0 172 137 0 180 139 0 201 169 34
+206 165 0 165 125 0 150 111 0 109 40 0
+99 0 0 110 0 0 243 152 0 199 196 0
+222 163 0 0 0 0 154 81 0 174 161 0
+0 0 0 255 255 0 238 210 0 215 185 0
+227 179 0 244 213 0 0 0 0 184 37 0
+255 255 0 0 0 0 255 255 60 0 0 0
+233 201 185 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+222 203 167 251 238 232 255 248 239 239 229 204
+232 217 197 249 241 236 250 240 231 245 239 229
+247 237 226 245 238 225 251 243 233 205 215 208
+134 31 0 186 172 0 150 85 0 210 182 0
+215 172 0 153 143 0 195 122 0 146 90 0
+223 207 0 111 0 0 169 119 0 189 122 0
+189 103 0 68 0 0 186 69 0 154 73 0
+164 68 0 180 84 0 197 80 0 20 0 0
+60 50 0 118 0 0 215 188 0 255 248 0
+0 0 0 27 0 0 53 0 0 221 75 0
+246 220 0 186 166 0 228 196 0 249 250 0
+74 39 0 0 0 0 15 0 0 0 0 0
+73 0 0 252 248 0 228 179 0 255 205 0
+34 66 0 0 0 0 96 0 0 0 0 0
+220 103 0 208 175 0 222 186 0 246 213 0
+218 232 0 0 0 0 39 0 0 86 0 0
+191 217 0 192 127 0 158 105 0 218 175 0
+232 212 0 252 216 0 38 0 0 0 0 0
+0 0 0 155 17 0 122 7 0 255 213 0
+215 199 0 255 244 12 206 174 0 200 157 0
+182 102 0 157 89 0 104 0 0 132 4 0
+126 34 0 139 30 0 157 63 0 208 135 0
+229 210 0 246 226 0 220 200 0 109 0 0
+0 0 0 154 113 0 203 197 0 129 89 0
+191 101 0 240 221 0 227 187 0 213 165 0
+243 196 0 218 205 0 0 0 0 255 231 0
+24 38 0 217 127 0 82 126 0 0 0 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 239 227 255 248 239 244 231 206 234 220 195
+248 237 232 248 240 229 247 237 225 250 237 229
+245 237 226 250 240 227 255 249 255 88 117 0
+181 72 0 225 183 0 148 100 0 143 89 0
+182 97 0 141 101 0 195 183 0 159 120 0
+181 133 0 188 157 0 121 17 0 148 58 0
+152 29 0 179 55 0 183 119 0 202 98 0
+110 0 0 63 0 0 123 135 110 214 218 190
+255 228 221 17 76 0 238 179 0 228 187 0
+187 223 0 0 0 0 0 0 0 0 0 0
+231 167 0 235 195 0 217 191 0 236 181 0
+239 227 0 0 0 0 84 0 0 39 0 0
+0 0 0 228 116 0 229 214 0 226 192 0
+251 234 0 0 0 0 0 0 0 0 0 0
+0 0 0 255 204 0 244 215 0 215 175 0
+255 233 134 191 222 0 0 0 0 75 0 0
+119 0 0 183 141 0 156 114 0 192 159 0
+175 113 0 168 127 0 238 173 0 177 163 0
+42 0 0 0 0 0 0 0 0 0 0 0
+73 0 0 211 163 0 230 185 0 255 237 0
+255 245 0 255 231 0 230 214 0 229 208 0
+249 237 0 237 203 0 255 220 0 219 149 0
+159 121 0 98 0 0 0 0 0 78 0 0
+203 170 0 242 176 0 0 0 0 79 0 0
+255 255 0 214 170 0 236 197 0 213 169 0
+249 213 0 0 0 0 157 6 0 170 177 0
+0 0 0 255 255 0 0 0 0 250 208 187
+255 255 241 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 246 244 227 210 169 233 212 202 248 240 234
+244 238 226 248 239 227 247 237 227 246 238 228
+252 239 230 254 246 237 251 254 224 0 0 0
+187 125 0 134 61 0 249 224 0 168 92 0
+104 61 0 245 200 0 167 109 0 169 84 0
+212 190 0 144 0 0 207 167 0 146 68 0
+121 0 0 182 113 0 165 17 0 0 0 0
+204 226 224 203 214 193 251 234 211 191 179 154
+194 172 152 255 229 235 44 11 0 237 191 0
+255 211 0 24 67 0 0 0 0 0 0 0
+130 0 0 245 189 0 218 195 0 213 178 0
+255 211 0 98 150 0 0 0 0 53 0 0
+53 0 0 0 0 0 227 94 0 242 220 0
+203 166 0 255 210 0 0 0 0 9 0 0
+0 0 0 107 0 0 225 208 0 225 174 0
+218 174 0 255 230 125 248 255 53 0 0 0
+23 0 0 121 0 0 166 104 0 163 109 0
+190 189 0 194 128 0 226 185 0 143 103 0
+238 221 0 168 119 0 152 0 0 0 0 0
+28 0 0 0 0 0 0 0 0 23 0 0
+102 0 0 100 0 0 159 114 0 135 28 0
+120 111 0 21 0 0 7 0 0 0 0 0
+44 0 0 96 0 0 199 204 0 130 133 0
+246 202 0 0 0 0 201 175 0 253 236 0
+235 208 0 218 176 0 212 159 0 255 255 0
+0 0 0 50 0 0 255 255 0 0 0 0
+237 150 0 24 66 0 179 127 130 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+226 204 174 246 231 223 250 248 234 245 236 225
+248 238 227 246 238 229 249 236 227 250 243 229
+244 237 228 255 250 247 161 192 134 110 0 0
+238 222 0 163 27 0 158 136 0 215 168 0
+203 170 0 200 152 0 162 87 0 144 132 0
+81 0 0 206 176 0 116 0 0 192 108 0
+150 37 0 69 0 0 112 99 89 244 255 231
+210 181 150 224 205 172 186 156 144 204 192 154
+202 182 162 220 205 178 239 216 223 36 72 0
+211 150 0 255 233 0 94 90 0 0 0 0
+29 0 0 40 0 0 255 249 0 216 189 0
+209 169 0 255 247 0 0 0 0 0 0 0
+138 0 0 0 0 0 0 0 0 255 229 0
+193 142 0 234 193 0 184 158 0 0 0 0
+0 0 0 0 0 0 171 34 0 255 255 0
+232 197 0 221 182 0 236 176 0 255 255 38
+2 9 0 0 0 0 43 0 0 202 81 0
+201 118 0 151 134 0 182 212 0 156 41 0
+123 78 0 161 145 0 210 175 0 213 198 0
+209 182 0 149 14 0 60 48 0 130 0 0
+68 6 0 20 0 0 4 0 0 40 0 0
+76 0 0 147 132 0 78 0 0 202 172 0
+255 236 0 163 181 0 130 37 0 131 3 0
+0 0 0 216 171 0 255 229 0 234 213 0
+217 181 0 210 155 0 255 218 0 120 86 0
+0 0 0 235 124 0 11 0 0 187 89 0
+254 255 0 0 0 0 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+246 236 229 250 241 229 247 241 229 248 239 229
+248 241 229 251 242 227 244 236 225 245 238 225
+250 239 231 255 255 255 79 29 0 108 7 0
+163 54 0 106 132 0 172 128 0 164 85 0
+104 3 0 178 121 0 187 153 0 191 59 0
+116 74 0 203 95 0 128 23 0 70 0 0
+136 159 153 223 212 210 215 187 158 231 219 192
+191 162 140 205 173 148 222 218 198 222 194 159
+202 187 164 203 194 165 217 183 166 255 231 236
+71 86 0 237 142 0 255 255 0 54 0 0
+0 0 0 60 0 0 140 0 0 216 208 0
+224 185 0 216 176 0 252 245 0 54 80 0
+0 0 0 12 0 0 0 0 0 16 0 0
+255 255 0 213 195 0 255 212 0 139 136 0
+0 0 0 21 0 0 0 0 0 94 0 0
+255 229 0 229 200 0 233 197 0 234 191 0
+255 233 0 194 197 0 0 0 0 0 0 0
+60 0 0 192 0 0 93 0 0 197 108 0
+179 99 0 96 57 0 191 159 0 143 126 0
+144 124 0 175 123 0 168 151 0 199 184 0
+203 172 0 175 150 0 211 176 0 180 174 0
+207 188 0 203 178 0 144 124 0 197 208 0
+114 0 0 140 49 0 0 0 0 113 0 0
+228 166 0 255 225 0 206 180 0 211 166 0
+213 166 0 252 211 0 228 180 0 0 0 0
+255 211 0 180 168 0 0 0 0 255 255 0
+0 0 0 255 254 242 255 252 240 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+246 240 231 248 239 228 245 238 226 252 237 228
+250 241 228 250 239 228 253 240 233 249 238 229
+249 241 232 255 255 255 49 0 0 188 75 0
+172 147 0 180 124 0 222 172 0 135 122 0
+225 192 0 101 69 0 120 0 0 225 182 0
+87 0 0 69 0 0 151 174 148 201 215 200
+241 209 175 209 190 166 192 179 150 210 193 157
+205 199 175 217 189 151 231 223 219 218 184 163
+239 235 220 217 196 170 239 218 199 208 204 175
+255 249 255 8 53 0 189 81 0 219 222 0
+0 0 0 10 0 0 0 0 0 211 66 0
+237 234 0 210 154 0 213 185 0 255 239 0
+0 0 0 0 0 0 0 0 0 0 0 0
+159 34 0 237 214 0 199 145 0 240 227 0
+206 167 0 0 0 0 0 0 0 0 0 0
+76 0 0 255 226 0 233 207 0 211 167 0
+234 205 0 240 192 0 252 234 0 193 193 0
+0 0 0 0 0 0 0 0 0 94 0 0
+126 0 0 160 46 0 202 179 0 135 58 0
+149 160 0 186 119 0 129 105 0 116 22 0
+149 118 0 143 126 0 170 88 0 160 104 0
+132 74 0 170 142 0 199 151 0 135 15 0
+0 0 0 0 0 0 232 184 0 255 243 0
+243 232 0 204 167 0 228 189 0 183 151 0
+245 210 0 205 158 0 0 0 0 255 175 0
+112 82 0 0 0 0 255 236 0 0 0 0
+221 188 164 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 243 230 255 244 232 253 245 230 248 237 228
+245 242 229 245 238 224 245 236 227 246 237 225
+255 255 255 190 213 182 116 0 0 176 123 0
+102 0 0 202 202 0 140 48 0 155 111 0
+150 92 0 238 178 0 88 0 0 148 10 0
+25 0 0 199 213 220 255 221 201 217 214 196
+220 197 173 214 189 170 250 230 220 186 173 132
+222 187 176 224 226 199 218 185 170 192 168 139
+201 188 152 203 179 153 199 183 143 201 169 146
+239 226 202 255 240 251 126 162 125 210 123 0
+229 234 0 0 0 0 39 0 0 0 0 0
+141 0 0 245 255 0 201 171 0 218 177 0
+255 241 0 0 0 0 0 0 0 0 0 0
+0 0 0 26 0 0 255 255 0 189 125 0
+241 217 0 206 185 0 0 0 0 0 0 0
+0 0 0 56 0 0 226 111 0 255 251 0
+217 184 0 232 204 0 225 192 0 230 173 0
+255 247 0 204 194 0 83 57 0 0 5 0
+0 0 0 0 0 0 0 0 0 159 0 0
+143 0 0 108 0 0 118 0 0 194 148 0
+137 53 0 160 0 0 0 0 0 83 0 0
+0 0 0 0 0 0 0 0 0 105 42 0
+238 225 0 255 220 0 223 203 0 215 193 0
+212 147 0 202 172 0 189 121 0 255 235 0
+156 62 0 0 0 0 175 0 0 163 114 0
+0 0 0 255 9 0 0 0 0 224 176 167
+255 255 255 251 242 229 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 237 228 249 237 224 248 237 229 245 238 226
+248 238 228 245 238 229 249 236 225 245 237 227
+255 255 255 107 128 0 107 0 0 215 171 0
+156 164 0 120 0 0 194 122 0 216 150 0
+28 0 0 209 104 0 0 0 0 91 89 30
+255 255 255 181 167 142 231 210 183 194 177 160
+210 190 163 215 196 187 230 225 200 244 233 226
+228 221 204 209 192 153 218 186 178 229 222 190
+224 205 179 223 204 189 231 211 194 180 184 158
+233 203 182 195 178 154 243 202 194 119 158 117
+206 106 0 236 215 0 0 6 0 0 0 0
+0 0 0 198 58 0 227 229 0 185 133 0
+212 184 0 232 219 0 79 83 0 0 0 0
+0 0 0 0 0 0 59 0 0 255 251 0
+188 127 0 169 105 0 225 215 0 87 24 0
+0 0 0 0 0 0 0 0 0 168 0 0
+233 198 0 235 199 0 192 159 0 234 193 0
+238 201 0 214 182 0 242 201 0 255 231 0
+242 208 0 151 140 0 111 98 0 60 65 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 27 0 0 111 73 0 118 119 0
+174 152 0 208 191 0 255 248 0 229 205 0
+241 199 0 192 154 0 231 209 0 209 136 0
+169 156 0 240 185 0 198 166 0 144 43 0
+0 0 0 255 159 0 231 235 0 0 0 0
+255 75 0 88 15 0 127 107 104 255 255 255
+251 239 226 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 241 230 247 236 226 248 241 228 247 237 227
+243 238 228 249 239 230 252 242 229 254 242 229
+255 255 255 7 0 0 147 90 0 204 145 0
+190 131 0 170 136 0 54 0 0 211 107 0
+38 0 0 0 0 0 224 223 169 213 195 171
+216 192 165 224 210 189 215 199 171 232 216 202
+207 190 156 234 219 197 217 198 174 219 189 168
+210 196 167 221 192 186 216 216 178 197 181 152
+224 195 170 226 218 183 223 217 194 194 167 145
+196 193 168 243 208 190 203 193 171 255 215 215
+161 192 98 106 52 0 250 225 0 69 38 0
+0 0 0 0 0 0 222 123 0 240 208 0
+200 166 0 217 157 0 255 237 0 36 45 0
+0 0 0 0 0 0 0 0 0 29 0 0
+216 150 0 221 210 0 201 153 0 216 174 0
+134 133 0 0 0 0 0 0 0 0 0 0
+44 0 0 208 69 0 224 186 0 235 202 0
+208 191 0 215 169 0 194 161 0 238 184 0
+239 203 0 244 203 0 246 199 0 244 213 0
+255 250 0 248 227 0 255 253 0 255 225 0
+255 240 0 255 252 0 242 185 0 255 235 0
+241 194 0 202 152 0 213 173 0 213 178 0
+196 143 0 204 188 0 224 152 0 183 136 0
+255 244 0 191 126 0 0 0 0 0 0 0
+212 172 0 185 172 0 0 0 0 255 12 0
+0 0 0 109 91 27 255 255 255 255 245 230
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 241 228 252 241 227 250 243 230 250 241 226
+245 237 229 249 240 228 248 240 229 249 241 231
+255 255 255 89 0 0 222 152 0 143 74 0
+115 0 0 229 174 0 137 42 0 82 0 0
+96 123 80 255 252 211 204 184 157 218 211 192
+190 169 139 240 223 215 229 203 187 247 242 224
+223 196 180 229 231 210 240 227 222 239 231 208
+223 221 203 234 219 205 245 241 229 247 240 234
+221 218 190 254 246 242 209 192 163 223 209 197
+218 203 185 203 189 154 214 192 169 214 190 167
+228 224 198 254 232 232 76 101 0 205 161 0
+214 178 0 0 0 0 0 0 0 65 0 0
+242 192 0 236 205 0 207 177 0 230 168 0
+131 98 0 0 0 0 0 0 0 0 0 0
+0 0 0 130 0 0 183 166 0 240 186 0
+162 99 0 218 212 0 88 0 0 0 0 0
+0 0 0 0 0 0 86 0 0 219 129 0
+248 179 0 212 185 0 218 192 0 190 150 0
+217 177 0 175 134 0 214 177 0 205 140 0
+211 180 0 187 142 0 201 153 0 202 149 0
+206 157 0 226 165 0 197 151 0 234 202 0
+204 143 0 146 140 0 218 174 0 222 188 0
+193 130 0 240 203 0 218 163 0 186 168 0
+94 0 0 0 0 0 118 0 0 229 182 0
+168 74 0 0 0 0 207 0 0 0 0 0
+247 222 204 255 255 255 255 244 231 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+250 241 230 253 243 231 253 247 231 252 239 228
+248 238 226 246 238 228 246 236 226 250 240 235
+255 255 225 95 0 0 152 75 0 173 55 0
+197 132 0 116 0 0 12 0 0 220 227 217
+221 204 178 206 181 159 224 202 181 220 209 189
+192 183 151 248 235 230 201 178 141 250 234 232
+251 245 235 249 242 230 248 238 229 248 240 231
+251 239 231 248 243 232 249 239 227 248 236 228
+250 241 231 249 244 229 239 218 204 222 210 184
+198 170 152 236 216 191 192 178 159 217 190 163
+210 194 161 202 177 158 250 216 213 164 183 153
+134 87 0 220 154 0 0 0 0 0 0 0
+0 0 0 255 214 0 207 204 0 213 177 0
+250 214 0 208 198 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 166 133 0
+250 215 0 126 103 0 236 176 0 135 37 0
+49 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 172 24 0 161 94 0 248 159 0
+221 183 0 188 150 0 188 156 0 200 157 0
+148 105 0 178 148 0 216 176 0 168 138 0
+219 175 0 185 145 0 230 161 0 209 188 0
+212 151 0 225 223 0 208 165 0 255 184 0
+202 157 0 204 95 0 0 0 0 0 0 0
+0 0 0 231 68 0 227 213 0 0 0 0
+0 0 0 10 0 0 0 0 0 255 234 204
+255 255 255 255 244 230 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+250 243 235 250 239 226 250 241 229 255 244 232
+245 236 227 252 242 232 249 237 228 248 240 229
+255 255 255 53 0 0 139 23 0 145 0 0
+75 0 0 121 120 62 228 244 234 237 208 171
+231 219 213 225 218 201 242 216 196 254 249 240
+254 242 229 248 242 235 253 245 233 247 240 231
+248 240 229 251 237 227 248 239 225 249 238 227
+245 237 229 249 238 229 249 242 229 245 238 225
+246 238 226 249 239 227 248 242 233 229 228 211
+243 228 209 215 196 166 211 195 164 184 164 158
+213 195 167 234 219 214 202 185 144 233 212 202
+213 203 197 165 171 106 151 65 0 157 59 0
+0 0 0 0 0 0 171 11 0 255 247 0
+183 133 0 162 160 0 185 174 0 115 77 0
+0 0 0 0 0 0 0 0 0 0 0 0
+150 8 0 197 117 0 223 203 0 163 123 0
+134 121 0 255 168 0 25 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+71 0 0 135 18 0 154 75 0 230 150 0
+181 111 0 210 157 0 234 164 0 224 174 0
+242 162 0 225 169 0 255 197 0 237 207 0
+174 115 0 128 83 0 147 0 0 0 0 0
+0 0 0 0 0 0 7 0 0 182 140 0
+251 97 0 52 31 0 0 0 0 0 0 0
+0 0 0 93 52 0 255 226 229 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+251 243 229 248 239 229 247 239 231 247 239 227
+246 240 227 246 240 227 254 240 231 253 245 231
+255 251 250 164 196 160 65 90 0 152 163 142
+200 192 171 253 239 225 220 214 188 238 214 206
+253 252 237 242 234 215 244 235 225 250 241 232
+243 238 229 247 239 227 252 241 231 247 240 227
+250 240 228 247 241 229 248 237 228 248 242 228
+247 238 229 248 238 226 248 241 228 247 241 229
+247 241 227 246 238 230 248 240 228 240 231 204
+250 233 226 195 184 140 198 165 142 246 216 205
+195 196 162 209 176 157 210 187 164 227 218 191
+192 168 154 235 194 179 237 240 219 150 169 91
+149 113 0 48 0 0 0 0 0 76 0 0
+255 188 0 247 222 0 129 89 0 214 195 0
+247 160 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 55 0 0 213 134 0
+199 141 0 210 201 0 206 152 0 184 97 0
+186 76 0 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 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 11 0 0
+127 0 0 210 206 0 255 214 0 167 93 0
+0 0 0 0 0 0 0 0 0 0 0 0
+220 188 166 255 255 255 255 250 241 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+253 242 234 250 243 228 246 242 230 253 243 230
+250 243 233 250 243 231 253 243 230 253 247 232
+254 242 233 251 246 225 239 215 209 247 231 211
+237 222 214 255 248 245 255 247 237 250 246 237
+248 236 226 254 242 235 248 243 230 250 240 231
+248 238 228 250 242 231 251 243 230 252 244 233
+247 240 228 250 240 225 248 241 232 249 241 228
+245 236 224 249 237 229 248 241 228 249 241 227
+251 243 231 248 243 229 233 217 191 247 232 226
+241 235 212 224 198 177 238 230 210 208 188 159
+196 179 150 212 192 169 198 184 160 221 193 171
+203 185 166 223 192 159 194 172 161 255 228 230
+224 207 172 202 209 64 165 123 0 0 0 0
+0 0 0 85 0 0 238 201 0 198 182 0
+243 191 0 176 111 0 165 180 4 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+55 0 0 24 0 0 254 201 0 206 167 0
+214 167 0 92 26 0 246 185 0 180 132 0
+122 0 0 48 0 0 132 0 0 10 0 0
+29 0 0 79 0 0 0 0 0 12 0 0
+0 0 0 49 0 0 24 0 0 95 0 0
+122 0 0 165 162 0 255 215 0 255 234 0
+115 91 0 157 31 0 0 0 0 0 0 0
+0 0 0 0 0 0 209 164 160 255 255 232
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+250 242 229 250 242 230 252 244 230 252 242 230
+251 243 230 248 239 228 250 239 230 249 243 229
+252 239 232 251 246 233 255 248 241 253 244 235
+254 248 234 253 243 231 254 243 234 249 239 228
+250 242 230 246 241 229 251 243 229 252 240 233
+248 240 232 247 243 230 249 243 230 247 239 228
+250 240 227 248 241 230 248 239 229 248 239 228
+247 237 229 244 241 228 249 241 229 251 242 234
+244 234 212 224 204 168 255 249 250 241 231 211
+222 197 174 255 250 253 243 237 219 233 209 188
+227 223 200 200 174 143 198 172 150 218 187 160
+212 190 168 199 180 154 210 181 146 231 208 205
+207 171 137 223 202 203 221 202 183 232 214 162
+138 142 0 0 0 0 0 0 0 142 0 0
+194 157 0 255 188 0 220 193 0 234 197 0
+213 180 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+90 0 0 134 44 0 200 181 0 182 104 0
+159 36 0 198 186 0 220 213 0 178 155 0
+250 119 0 181 182 0 235 158 0 212 144 0
+233 195 0 247 225 0 214 181 0 207 186 0
+92 78 0 131 83 0 54 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 243 232 252 243 230 251 240 230 255 243 233
+253 241 231 251 242 231 248 240 230 251 241 234
+250 241 234 250 245 228 253 241 231 249 241 228
+246 235 227 252 244 234 250 243 231 247 243 231
+249 242 227 251 242 231 252 243 230 243 236 226
+249 240 230 250 243 232 251 243 230 250 241 231
+250 245 230 245 237 227 247 237 230 248 241 228
+248 240 227 251 244 232 251 243 236 230 219 179
+224 201 181 255 249 245 226 211 183 227 208 189
+255 254 241 220 202 172 239 210 192 234 228 200
+220 189 149 233 215 200 244 224 211 196 184 144
+208 184 166 248 233 211 207 199 171 204 174 152
+232 218 191 204 191 163 207 193 155 212 193 169
+253 209 210 219 216 136 212 204 89 71 67 0
+0 0 0 0 0 0 82 0 0 133 50 0
+255 199 0 251 197 0 210 172 0 198 182 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 1 0 0 0 0 0
+24 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+243 236 227 252 241 228 249 240 228 250 242 228
+250 241 226 246 239 226 252 238 228 247 240 229
+249 240 230 251 243 227 247 239 231 247 240 227
+252 241 229 250 240 232 250 239 230 250 241 229
+252 242 227 250 242 231 247 241 225 248 239 230
+245 241 229 249 240 231 249 236 227 244 239 229
+247 238 227 245 237 228 249 239 230 248 241 228
+248 241 231 247 240 228 247 243 227 239 226 217
+253 249 240 226 213 173 243 226 225 255 248 244
+221 208 158 246 229 221 227 213 185 223 198 169
+255 246 247 246 246 226 203 178 147 242 232 215
+226 210 184 200 180 158 204 181 152 205 189 175
+209 206 173 202 163 148 224 194 171 202 190 151
+200 176 154 236 217 188 255 250 255 255 255 239
+255 255 164 223 217 188 87 124 0 71 55 0
+0 0 0 0 0 0 110 0 0 112 62 0
+186 99 0 208 197 0 234 179 0 128 25 0
+164 51 0 3 0 0 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 0 0
+0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 145 112 27 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 239 228 242 235 224 247 241 228 249 240 229
+243 233 225 243 237 225 252 241 228 248 239 227
+251 238 231 251 244 229 246 240 229 249 243 228
+247 240 228 246 240 228 252 243 230 250 243 231
+250 243 227 251 243 231 249 242 228 243 237 227
+246 239 230 248 243 229 245 237 228 249 241 232
+251 241 230 245 242 230 247 239 228 249 240 229
+250 240 228 245 237 229 247 241 231 252 247 237
+221 213 176 251 237 222 250 245 235 248 241 230
+252 235 223 206 193 161 222 192 175 255 255 255
+224 214 193 206 181 129 253 236 228 246 241 228
+221 202 166 217 192 171 229 215 206 248 229 207
+191 177 157 212 190 158 218 204 186 212 191 156
+254 240 230 250 244 234 255 245 235 250 244 237
+253 245 242 255 246 245 255 255 255 255 255 255
+250 250 197 215 211 159 173 193 165 121 113 0
+88 29 0 59 0 0 0 0 0 0 0 0
+20 0 0 0 0 0 139 56 0 51 0 0
+63 0 0 0 0 0 74 10 0 0 0 0
+0 0 0 42 0 0 0 0 0 41 0 0
+0 0 0 158 121 70 180 177 129 196 180 120
+255 251 226 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+252 241 232 248 237 226 248 243 232 244 235 224
+250 242 229 249 241 228 252 241 230 241 237 227
+253 239 232 250 240 227 243 237 228 246 237 225
+252 241 228 251 240 231 252 243 230 248 239 229
+247 240 228 250 240 229 246 240 228 250 237 230
+243 237 227 246 237 228 244 234 222 247 238 228
+247 238 224 244 236 229 247 237 232 245 240 221
+238 217 198 248 242 235 247 242 236 218 201 167
+252 239 234 253 241 228 250 241 233 249 241 236
+217 196 158 243 224 222 255 255 255 219 215 163
+222 194 180 251 238 233 238 231 215 200 174 141
+225 200 174 254 250 251 223 201 166 224 201 181
+255 247 232 202 186 155 226 197 178 255 252 240
+250 243 231 246 239 229 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 227 255 248 200 255 255 211 255 255 240
+255 255 219 252 229 192 217 217 179 232 235 189
+215 229 205 255 242 209 222 234 216 217 213 187
+240 233 183 251 237 189 246 239 202 255 255 255
+255 255 246 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+245 238 227 249 241 227 252 240 232 248 237 224
+244 238 228 246 241 230 250 238 229 248 240 230
+244 237 227 249 241 228 244 238 230 248 239 224
+247 239 228 249 236 232 253 245 232 251 243 231
+246 239 225 246 238 230 249 243 227 248 239 232
+247 241 229 249 243 232 245 237 226 249 240 233
+247 238 227 249 242 234 248 241 226 231 212 184
+250 242 236 251 246 238 222 205 168 249 233 212
+235 226 192 250 233 224 253 245 235 247 242 224
+252 240 217 243 238 222 222 201 177 230 211 190
+255 248 243 224 219 197 200 175 145 249 233 222
+255 252 244 214 190 161 247 232 220 246 234 211
+194 170 144 246 232 213 255 249 238 255 248 237
+251 246 227 246 238 227 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 254 245 241 254 250 239 255 251 240
+255 249 240 255 249 243 255 251 240 255 250 239
+255 251 236 255 245 239 255 251 239 255 248 238
+255 247 241 255 250 242 255 249 239 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 242 229 251 242 231 246 240 229 252 238 228
+252 245 228 253 240 229 250 242 232 242 234 222
+247 240 232 248 240 226 251 244 233 253 240 228
+247 241 228 248 236 230 247 244 232 251 239 231
+249 243 227 252 242 232 247 239 228 248 237 227
+247 236 227 248 242 231 251 243 230 247 237 228
+253 245 239 232 221 179 220 204 180 255 242 240
+247 238 223 215 202 161 255 242 240 231 224 161
+245 216 195 248 246 227 240 213 192 255 247 246
+250 245 220 200 175 133 224 197 190 255 255 243
+205 191 159 206 178 150 255 247 243 249 244 226
+233 218 178 248 235 224 215 193 164 204 177 144
+252 231 232 254 253 237 255 247 229 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 240 231 251 242 229 249 239 231 247 241 228
+245 236 224 249 239 228 247 236 227 248 243 231
+248 238 230 247 242 231 251 241 230 250 240 228
+250 241 226 247 238 231 250 242 230 247 239 229
+252 246 228 248 238 229 249 246 228 252 240 231
+246 240 231 248 241 231 249 241 229 251 243 239
+224 213 179 242 229 218 252 243 242 253 247 234
+235 226 204 255 240 228 226 214 174 255 244 241
+253 249 220 232 203 177 255 251 246 253 244 219
+209 177 151 251 232 228 255 254 241 208 187 143
+243 219 203 255 250 242 244 235 202 255 244 236
+255 251 236 208 183 147 230 203 190 255 247 236
+255 250 237 253 244 231 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 244 230 250 238 226 250 244 231 251 240 230
+248 241 229 249 241 228 251 240 231 253 241 232
+251 240 230 249 244 227 247 240 232 252 241 228
+247 236 225 249 241 232 249 240 230 246 238 227
+247 239 226 252 244 232 247 239 225 251 240 231
+250 242 230 250 246 234 251 241 235 229 217 181
+242 225 207 254 246 242 253 246 232 255 250 237
+252 242 215 236 213 179 255 247 250 232 223 185
+230 203 170 255 253 245 250 241 226 234 218 182
+255 245 238 245 233 205 210 185 154 253 233 219
+255 255 242 244 229 203 248 229 219 242 231 202
+211 185 144 235 211 198 255 255 255 255 248 232
+255 245 231 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 242 232 251 241 227 248 240 228 246 237 226
+248 239 229 251 241 228 250 238 227 251 240 231
+249 240 231 248 244 227 247 238 227 254 241 232
+247 240 227 247 240 230 251 239 230 247 242 231
+252 241 227 251 243 235 249 246 229 254 243 237
+251 246 232 212 190 157 255 248 242 253 248 245
+230 211 181 248 226 204 246 227 206 231 206 179
+255 255 255 234 224 194 230 197 172 255 251 247
+239 219 185 255 245 234 254 246 232 236 229 199
+241 219 198 255 255 255 255 249 236 243 241 215
+255 248 238 233 218 183 199 173 144 255 249 243
+255 249 239 255 244 228 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+251 241 231 252 243 231 251 242 231 249 237 228
+248 237 224 247 237 227 251 240 227 248 244 230
+251 237 231 249 242 228 248 239 228 247 236 225
+249 245 232 253 241 234 253 244 232 248 239 229
+248 242 228 247 237 229 247 241 227 251 242 233
+252 242 233 244 240 227 225 207 175 235 218 202
+255 251 248 233 223 184 252 229 224 243 236 206
+237 207 183 255 248 241 239 229 187 243 213 208
+255 255 245 255 246 232 255 246 233 255 255 255
+246 233 200 226 204 173 255 240 232 255 249 235
+250 236 214 247 240 220 239 226 193 204 172 148
+236 212 202 255 255 244 255 246 234 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 239 227 250 243 228 246 241 229 248 240 229
+248 243 230 249 240 228 249 238 230 247 243 231
+251 238 230 248 240 229 248 240 232 249 240 227
+246 238 227 248 238 235 248 240 230 248 240 231
+248 240 226 252 242 232 250 243 236 239 228 195
+219 193 168 250 237 235 252 246 234 226 218 184
+245 226 219 226 214 180 222 194 177 255 255 255
+215 200 151 235 210 198 255 255 244 225 201 166
+241 228 215 255 249 236 241 232 207 240 219 193
+255 255 255 248 229 203 255 245 237 253 248 237
+208 185 145 205 172 148 255 240 235 255 250 237
+254 245 229 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+246 243 231 246 243 227 248 241 231 252 244 232
+248 237 225 247 242 228 247 238 227 248 238 227
+252 240 231 246 240 227 248 241 227 250 240 228
+248 240 228 249 241 231 249 241 231 249 242 231
+245 240 225 251 243 236 235 229 189 228 209 198
+250 247 241 255 250 238 228 211 177 239 224 207
+232 228 190 236 215 209 255 255 255 219 207 171
+233 208 205 252 245 239 221 191 162 255 250 243
+253 248 237 252 242 221 250 239 233 255 255 255
+228 218 169 240 223 211 242 239 234 198 183 145
+235 213 199 255 249 243 252 246 234 251 243 230
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+250 243 230 252 242 232 246 240 227 248 238 228
+247 240 230 251 244 231 252 240 231 246 240 231
+250 242 230 245 238 227 246 236 229 248 239 228
+249 241 229 245 236 224 245 235 226 249 241 231
+251 244 234 234 227 196 230 204 189 253 248 243
+255 248 241 222 201 159 254 233 232 225 213 180
+255 231 225 241 237 217 216 200 153 240 223 220
+244 237 215 225 199 156 249 238 239 249 243 224
+227 206 186 255 248 239 252 242 218 226 211 180
+246 226 220 228 220 197 206 180 144 236 216 206
+255 253 240 254 247 232 245 241 230 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 241 230 248 237 223 245 239 229 245 235 224
+252 241 230 250 241 231 248 238 229 244 240 226
+252 240 233 246 240 227 253 245 236 246 236 227
+247 241 228 244 236 228 244 238 229 252 248 239
+236 222 187 237 220 205 254 254 245 235 230 205
+217 193 162 254 242 231 225 211 172 239 219 209
+247 248 221 217 192 174 249 237 233 240 233 207
+223 203 168 255 245 242 249 246 229 222 205 162
+250 234 229 251 246 233 213 187 156 240 228 219
+227 218 180 198 168 141 240 216 207 255 255 240
+253 244 235 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 241 232 246 234 227 247 243 232 244 237 226
+251 240 227 252 244 232 247 238 227 250 242 231
+249 240 233 246 240 223 248 238 229 248 240 227
+250 244 229 248 239 233 251 246 239 228 215 178
+242 230 219 252 246 241 242 236 211 225 202 168
+255 242 236 228 217 178 254 239 237 244 238 229
+228 207 161 253 244 245 233 229 207 223 191 169
+255 249 249 247 240 215 227 202 183 255 255 255
+237 239 211 218 195 165 240 232 216 219 206 181
+215 184 156 253 247 243 255 247 236 251 244 232
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 239 228 251 244 231 252 241 230 248 240 231
+250 241 229 252 244 227 247 234 226 248 243 229
+250 240 231 249 241 228 248 241 231 252 240 231
+250 245 230 249 240 234 230 219 188 238 216 209
+253 248 237 246 233 220 228 207 187 248 244 222
+226 206 177 255 242 243 238 231 193 220 193 168
+255 254 246 234 221 186 235 214 185 255 255 255
+232 219 193 221 199 161 255 255 255 221 207 182
+232 207 170 249 240 230 205 182 137 214 187 165
+255 255 242 255 248 237 255 244 229 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+247 239 230 251 241 229 247 239 229 247 239 228
+252 243 231 252 244 230 247 234 223 248 241 230
+248 237 227 244 237 228 244 237 229 248 238 227
+248 240 232 232 219 193 242 228 213 255 255 255
+232 221 190 228 209 177 255 247 244 229 213 165
+253 238 236 242 232 201 251 226 213 255 255 255
+228 215 178 245 221 207 255 255 255 228 218 169
+237 210 205 255 255 244 222 207 172 246 229 213
+247 236 207 200 176 144 240 220 209 255 248 242
+255 248 231 255 243 230 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+247 243 230 249 242 228 249 243 231 251 243 231
+251 242 230 251 240 230 251 245 233 249 242 230
+247 236 231 250 245 227 249 240 234 251 243 231
+250 242 232 252 246 239 255 251 245 229 218 178
+239 218 203 255 248 238 255 250 230 255 245 238
+239 227 189 248 229 216 255 249 228 240 220 183
+244 218 195 255 254 243 227 206 173 236 212 181
+255 248 234 232 220 180 255 235 226 217 209 176
+198 171 114 244 227 215 255 255 243 255 245 233
+255 245 235 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+249 243 230 251 242 230 246 241 231 250 238 226
+253 246 232 252 243 234 248 237 230 251 240 228
+249 238 231 250 246 233 252 241 225 250 242 228
+255 246 233 255 248 234 227 215 187 246 222 208
+255 252 238 250 234 207 255 249 241 251 239 222
+250 236 218 255 253 246 228 206 155 245 227 226
+255 255 246 225 202 155 229 212 197 255 255 255
+235 225 191 255 236 230 218 207 163 223 190 172
+247 229 219 255 253 239 255 245 236 255 247 231
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+246 238 230 251 242 230 250 242 230 253 242 230
+253 244 231 249 242 231 250 240 228 251 243 232
+250 243 237 247 236 207 237 212 188 255 247 234
+255 253 243 222 202 164 238 216 198 255 251 241
+255 249 236 255 249 240 242 225 184 255 249 237
+255 251 242 234 212 178 255 244 241 255 251 237
+228 208 172 255 242 237 255 252 242 255 250 236
+254 242 226 224 207 177 219 190 164 255 252 246
+255 253 237 255 247 234 255 245 235 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+250 242 229 249 243 230 251 243 229 251 244 229
+251 241 231 250 243 231 251 241 232 253 244 238
+239 227 197 229 204 175 255 254 246 255 245 232
+255 245 230 254 236 234 255 251 240 255 248 235
+252 243 218 230 209 172 255 248 238 249 241 228
+236 212 187 255 254 243 255 245 227 224 208 165
+255 249 249 244 237 193 255 237 230 251 247 223
+208 183 139 222 196 175 255 253 247 255 248 234
+255 245 231 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+248 241 230 255 245 233 254 247 235 253 241 233
+250 245 234 251 243 232 250 241 236 222 207 169
+227 201 172 255 255 246 255 247 240 255 242 227
+255 246 231 255 246 238 255 251 240 245 236 216
+232 205 167 254 239 230 255 249 234 255 241 225
+255 250 238 245 237 210 217 188 163 252 235 222
+231 210 173 254 235 223 252 239 210 207 179 148
+236 211 198 255 251 240 255 250 234 255 247 235
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 252 243 228 251 241 229 250 243 230
+246 238 226 248 241 231 251 242 228 242 226 210
+255 251 245 255 251 233 242 221 189 255 247 235
+255 247 235 255 248 240 248 238 220 225 200 168
+255 252 246 255 248 231 255 247 234 255 247 237
+255 248 236 222 197 174 253 240 220 227 203 164
+255 249 246 238 228 200 199 182 140 243 221 211
+255 249 240 255 248 231 255 243 233 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 245 243 229 250 236 228
+250 242 231 252 245 231 255 245 234 255 250 237
+255 244 240 233 219 172 254 242 238 255 248 234
+255 253 245 229 208 168 228 203 171 255 251 251
+249 237 195 249 232 219 255 254 242 255 244 230
+255 247 236 249 242 211 231 201 186 255 255 255
+238 231 197 200 172 141 236 200 179 255 255 246
+254 245 230 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 251 242 230
+252 245 229 255 246 233 255 243 228 255 248 238
+238 226 193 253 237 228 255 250 242 255 251 242
+231 211 165 246 226 213 255 249 247 228 207 169
+255 237 232 255 251 240 227 207 172 255 255 255
+252 243 225 226 205 169 255 255 247 232 224 196
+207 178 134 247 232 217 255 248 245 255 249 234
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 246 235 255 247 236 255 245 232 255 246 234
+255 246 239 255 251 235 255 244 229 222 205 159
+244 220 213 247 237 228 225 200 150 244 224 222
+255 248 220 225 205 165 255 252 245 229 215 166
+220 192 165 255 255 255 212 189 156 201 178 149
+248 228 215 255 255 242 255 246 235 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 245 232 255 245 231 255 246 232 255 243 229
+255 246 234 255 249 236 237 216 184 248 231 214
+252 244 222 213 185 152 236 215 200 255 246 228
+234 212 180 255 246 247 226 216 180 235 213 191
+255 247 243 223 199 163 214 191 160 255 237 228
+255 254 239 255 245 233 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 243 232 255 246 234
+255 245 236 255 246 230 255 247 245 253 248 224
+210 179 128 255 243 244 255 248 237 223 205 176
+255 251 246 241 226 190 248 229 217 253 243 224
+205 196 158 222 188 167 255 255 255 255 248 238
+255 245 229 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 246 233 255 245 232
+255 243 230 255 252 240 241 226 193 213 180 153
+255 248 240 255 250 239 252 241 223 255 253 242
+224 205 168 253 228 220 254 246 226 206 176 134
+225 194 171 255 254 245 255 248 236 255 245 232
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 246 235 254 240 221 220 192 161 255 238 230
+254 246 233 255 248 242 255 250 237 218 190 151
+255 251 249 254 248 228 203 178 140 246 223 216
+255 255 246 255 247 234 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 243 234 249 243 223 254 249 237 255 249 237
+255 247 238 245 232 198 211 187 160 255 243 236
+246 238 215 211 189 148 226 200 177 255 250 243
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 249 242 226 253 242 235 255 243 234
+242 235 216 214 186 164 255 245 242 251 248 228
+201 174 137 237 217 205 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 248 241 230 253 244 235
+247 241 220 255 255 255 251 249 236 195 176 133
+240 214 201 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 252 243 229
+255 249 240 230 222 197 206 178 144 218 195 171
+255 255 244 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+234 226 212 200 174 136 225 203 188 255 255 255
+250 242 230 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 246 232 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
+255 255 255 255 255 255 255 255 255 255 255 255
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/p4.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/p4.pnm
new file mode 100644
index 00000000..468b839a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/p4.pnm
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/p5.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/p5.pnm
new file mode 100644
index 00000000..c07b78a8
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/p5.pnm
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/p6.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/p6.pnm
new file mode 100644
index 00000000..bf4a9471
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/p6.pnm
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/readme.txt b/src/boost/libs/gil/test/extension/io/images/pnm/readme.txt
new file mode 100644
index 00000000..7a9ab2cb
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/readme.txt
@@ -0,0 +1,5 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+Please send me an email to retrieve the test files at chhenning **at** gmail.com. \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/pnm/rgb.pnm b/src/boost/libs/gil/test/extension/io/images/pnm/rgb.pnm
new file mode 100644
index 00000000..9299261a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/pnm/rgb.pnm
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/raw/RAW_CANON_D30_SRGB.CRW b/src/boost/libs/gil/test/extension/io/images/raw/RAW_CANON_D30_SRGB.CRW
new file mode 100644
index 00000000..433d9c31
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/raw/RAW_CANON_D30_SRGB.CRW
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/raw/readme.txt b/src/boost/libs/gil/test/extension/io/images/raw/readme.txt
new file mode 100644
index 00000000..7436b549
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/raw/readme.txt
@@ -0,0 +1,5 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+Images are taken from http://www.rawsamples.ch/index_en.php \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/readme.md b/src/boost/libs/gil/test/extension/io/images/readme.md
new file mode 100644
index 00000000..cefddf5b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/readme.md
@@ -0,0 +1,3 @@
+For copyright reasons the complete is available here:
+
+https://github.com/chhenning/gil_io_images \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed.tga b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed.tga
new file mode 100644
index 00000000..e957723c
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed_ul_origin.tga b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed_ul_origin.tga
new file mode 100644
index 00000000..98988a75
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_compressed_ul_origin.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed.tga b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed.tga
new file mode 100644
index 00000000..410043fa
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed_ul_origin.tga b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed_ul_origin.tga
new file mode 100644
index 00000000..e5cab05c
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/24BPP_uncompressed_ul_origin.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed.tga b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed.tga
new file mode 100644
index 00000000..a5464554
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed_ul_origin.tga b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed_ul_origin.tga
new file mode 100644
index 00000000..1fa4c636
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_compressed_ul_origin.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed.tga b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed.tga
new file mode 100644
index 00000000..fb38dc48
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed_ul_origin.tga b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed_ul_origin.tga
new file mode 100644
index 00000000..65e80740
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/32BPP_uncompressed_ul_origin.tga
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/images/targa/fileformat_info/readme.txt b/src/boost/libs/gil/test/extension/io/images/targa/fileformat_info/readme.txt
new file mode 100644
index 00000000..b4ec88cb
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/targa/fileformat_info/readme.txt
@@ -0,0 +1,5 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+taken from http://www.fileformat.info/format/tga/sample/index.htm
diff --git a/src/boost/libs/gil/test/extension/io/images/tiff/graphicmagick/readme.txt b/src/boost/libs/gil/test/extension/io/images/tiff/graphicmagick/readme.txt
new file mode 100644
index 00000000..9d49c13c
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/tiff/graphicmagick/readme.txt
@@ -0,0 +1,7 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+files can be found at ftp://ftp.graphicsmagick.org/pub/tiff-samples/
+
+if not available please ask me at chhenning **at** gmail.com \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/tiff/libtiffpic/readme.txt b/src/boost/libs/gil/test/extension/io/images/tiff/libtiffpic/readme.txt
new file mode 100644
index 00000000..9bc367e6
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/tiff/libtiffpic/readme.txt
@@ -0,0 +1,7 @@
+# Copyright (C) 2013 Christian Henning
+# Distributed under the Boost Software License, Version 1.0.
+# See www.boost.org/LICENSE_1_0.txt
+
+taken from http://www.remotesensing.org/libtiff/images.html
+
+if not available please ask me at chhenning **at** gmail.com \ No newline at end of file
diff --git a/src/boost/libs/gil/test/extension/io/images/tiff/test.tif b/src/boost/libs/gil/test/extension/io/images/tiff/test.tif
new file mode 100644
index 00000000..78ae4d3e
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/images/tiff/test.tif
Binary files differ
diff --git a/src/boost/libs/gil/test/extension/io/jpeg_old_test.cpp b/src/boost/libs/gil/test/extension/io/jpeg_old_test.cpp
new file mode 100644
index 00000000..02f1d78d
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/jpeg_old_test.cpp
@@ -0,0 +1,100 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE jpeg_old_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/jpeg/old.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( gil_io_jpeg_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( old_read_dimensions_test )
+{
+ boost::gil::point_t dim = jpeg_read_dimensions(jpeg_filename);
+ BOOST_CHECK_EQUAL( dim.x, 1000 );
+ BOOST_CHECK_EQUAL( dim.y, 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_image_test )
+{
+ rgb8_image_t img;
+ jpeg_read_image( jpeg_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_image_test )
+{
+ rgb8_image_t img;
+ jpeg_read_and_convert_image( jpeg_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_view_test )
+{
+ rgb8_image_t img( 1000, 600 );
+ jpeg_read_view( jpeg_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_view_test )
+{
+ rgb8_image_t img( 1000, 600 );
+ jpeg_read_and_convert_view( jpeg_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_write_view_test )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ jpeg_write_view( jpeg_out + "old_write_test.jpg"
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( old_dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ jpeg_read_image( jpeg_filename.c_str()
+ , runtime_image
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ jpeg_write_view( jpeg_out + "old_dynamic_image_test.jpg"
+ , view( runtime_image )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/jpeg_read_test.cpp b/src/boost/libs/gil/test/extension/io/jpeg_read_test.cpp
new file mode 100644
index 00000000..1bd35139
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/jpeg_read_test.cpp
@@ -0,0 +1,127 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE jpeg_read_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/jpeg.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = jpeg_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_jpeg_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_header_test )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( jpeg_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height , 600u );
+
+ BOOST_CHECK_EQUAL( backend._info._num_components, 3 );
+ BOOST_CHECK_EQUAL( backend._info._color_space , JCS_YCbCr );
+
+ BOOST_CHECK_EQUAL( backend._info._data_precision, 8 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_pixel_density_test )
+{
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( jpeg_in + "EddDawson/36dpi.jpg"
+ , tag_t()
+ );
+
+ rgb8_image_t img;
+ read_image( jpeg_in + "EddDawson/36dpi.jpg", img, jpeg_tag() );
+
+ image_write_info< jpeg_tag > write_settings;
+ write_settings.set_pixel_dimensions( backend._info._width
+ , backend._info._height
+ , backend._info._pixel_width_mm
+ , backend._info._pixel_height_mm
+ );
+
+ stringstream in_memory( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( in_memory, view( img ), write_settings );
+
+ using backend2_t = get_reader_backend<stringstream, tag_t>::type;
+
+ backend2_t backend2 = read_image_info( in_memory
+ , tag_t()
+ );
+
+ // Because of rounding the two results differ slightly.
+ if( std::abs( backend._info._pixel_width_mm - backend2._info._pixel_width_mm ) > 10.0
+ || std::abs( backend._info._pixel_height_mm - backend2._info._pixel_height_mm ) > 10.0
+ )
+ {
+ BOOST_CHECK_EQUAL( 0, 1 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_reference_images_test )
+{
+ using image_t = rgb8_image_t;
+ image_t img;
+
+ read_image( jpeg_filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( jpeg_out + "rgb8_test.jpg"
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( dct_method_read_test )
+{
+ using image_t = rgb8_image_t;
+ image_t img;
+
+ image_read_settings< jpeg_tag > settings;
+ settings._dct_method = jpeg_dct_method::fast;
+
+ read_image( jpeg_filename
+ , img
+ , settings
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( jpeg_out + "fast_dct_read_test.jpg"
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( read_reference_images_image_iterator_test )
+{
+ test_scanline_reader< rgb8_image_t, jpeg_tag >( jpeg_filename.c_str() );
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/jpeg_test.cpp b/src/boost/libs/gil/test/extension/io/jpeg_test.cpp
new file mode 100644
index 00000000..d3b98dee
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/jpeg_test.cpp
@@ -0,0 +1,337 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE jpeg_test
+#define BOOST_FILESYSTEM_VERSION 3
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/jpeg.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace boost;
+using namespace gil;
+
+using tag_t = jpeg_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_jpeg_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_test )
+{
+
+ {
+ using backend_t = get_reader_backend
+ <
+ std::string const,
+ tag_t
+ >::type;
+
+ backend_t backend = read_image_info( jpeg_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ std::ifstream in( jpeg_filename.c_str(), ios::binary );
+
+ using backend_t = get_reader_backend<std::ifstream, tag_t>::type;
+
+ backend_t backend = read_image_info( in
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ FILE* file = fopen( jpeg_filename.c_str(), "rb" );
+
+ using backend_t = get_reader_backend<FILE*, tag_t>::type;
+
+ backend_t backend = boost::gil::read_image_info( file
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ using backend_t = get_reader_backend<boost::filesystem::path, tag_t>::type;
+
+ backend_t backend =
+ boost::gil::read_image_info(
+ boost::filesystem::path(jpeg_filename),
+ tag_t());
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_image( jpeg_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ std::ifstream in( jpeg_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ FILE* file = fopen( jpeg_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ rgb8_image_t img;
+
+ image_read_settings< jpeg_tag > settings( point_t( 0, 0 )
+ , point_t( 10, 10 )
+ , jpeg_dct_method::slow
+ );
+
+ read_image( jpeg_filename, img, settings );
+
+ BOOST_CHECK_EQUAL( img.width() , 10u );
+ BOOST_CHECK_EQUAL( img.height(), 10u );
+ }
+
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_and_convert_image( jpeg_filename, img, tag_t() );
+ }
+
+ {
+ std::ifstream in( jpeg_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_and_convert_image( in, img, tag_t() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ {
+ rgb8_image_t img( 1000, 600 );
+ read_view( jpeg_filename, view( img ), tag_t() );
+ }
+
+ {
+ std::ifstream in( jpeg_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 1000, 600 );
+ read_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( jpeg_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 1000, 600 );
+ read_view( file, view( img ), tag_t() );
+ }
+}
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( jpeg_filename, view( img ), tag_t() );
+ }
+
+ {
+ std::ifstream in( jpeg_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( jpeg_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( file
+ , view( img )
+ , tag_t()
+ );
+ }
+}
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_view_test )
+{
+ {
+ std::string filename( jpeg_out + "write_test_string.jpg" );
+
+ write_view( filename
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ std::string filename( jpeg_out + "write_test_ofstream.jpg" );
+ std::ofstream out( filename.c_str(), ios::binary );
+
+ write_view( out
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ std::string filename( jpeg_out + "write_test_file.jpg" );
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ std::string filename( jpeg_out + "write_test_info.jpg" );
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ image_write_info< jpeg_tag > info;
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , info
+ );
+ }
+}
+#endif //BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+BOOST_AUTO_TEST_CASE( stream_test )
+{
+ // 1. Read an image.
+ std::ifstream in( jpeg_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ // 2. Write image to in-memory buffer.
+ std::stringstream out_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( out_buffer, view( img ), tag_t() );
+
+ // 3. Copy in-memory buffer to another.
+ std::stringstream in_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ in_buffer << out_buffer.rdbuf();
+
+ // 4. Read in-memory buffer to gil image
+ rgb8_image_t dst;
+ read_image( in_buffer, dst, tag_t() );
+
+ // 5. Write out image.
+ std::string filename( jpeg_out + "stream_test.jpg" );
+ std::ofstream out( filename.c_str(), ios_base::binary );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( out, view( dst ), tag_t() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test_2 )
+{
+ std::filebuf in_buf;
+ if( !in_buf.open( jpeg_filename.c_str(), ios::in | ios::binary ) )
+ {
+ BOOST_CHECK( false );
+ }
+
+ std::istream in( &in_buf );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test )
+{
+ run_subimage_test< rgb8_image_t, tag_t >( jpeg_filename
+ , point_t( 0, 0 )
+ , point_t( 50, 50 )
+ );
+
+ run_subimage_test< rgb8_image_t, tag_t >( jpeg_filename
+ , point_t( 43, 24 )
+ , point_t( 50, 50 )
+ );
+}
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+
+ any_image< my_img_types > runtime_image;
+
+ read_image( jpeg_filename.c_str()
+ , runtime_image
+ , jpeg_tag()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( jpeg_out + "old_dynamic_image_test.jpg"
+ , view( runtime_image )
+ , jpeg_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/jpeg_write_test.cpp b/src/boost/libs/gil/test/extension/io/jpeg_write_test.cpp
new file mode 100644
index 00000000..64b612b5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/jpeg_write_test.cpp
@@ -0,0 +1,97 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE jpeg_write_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/jpeg.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "color_space_write_test.hpp"
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = jpeg_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_jpeg_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_test )
+{
+ // test writing all supported image types
+
+ {
+ write_view( jpeg_out + "gray8_test.jpg"
+ , create_mandel_view( 200, 200
+ , gray8_pixel_t( 0 )
+ , gray8_pixel_t( 255 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ write_view( jpeg_out + "rgb8_test.jpg"
+ , create_mandel_view( 200, 200
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ write_view( jpeg_out + "cmyk8_test.jpg"
+ , create_mandel_view( 200, 200
+ , cmyk8_pixel_t( 0, 0, 255, 127 )
+ , cmyk8_pixel_t( 0, 255, 0, 127 )
+ )
+ , tag_t()
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( dct_method_write_test )
+{
+ {
+ using image_t = rgb8_image_t;
+ image_t img;
+
+ read_image( jpeg_filename
+ , img
+ , tag_t()
+ );
+
+ image_write_info< jpeg_tag > info;
+ info._dct_method = jpeg_dct_method::fast;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( jpeg_out + "fast_dct_write_test.jpg"
+ , view( img )
+ , info
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( rgb_color_space_write_test )
+{
+ color_space_write_test< jpeg_tag >( jpeg_out + "rgb_color_space_test.jpg"
+ , jpeg_out + "bgr_color_space_test.jpg"
+ );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/make.cpp b/src/boost/libs/gil/test/extension/io/make.cpp
new file mode 100644
index 00000000..0240a873
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/make.cpp
@@ -0,0 +1,207 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+#define BOOST_FILESYSTEM_VERSION 3
+
+#include <boost/gil/extension/io/bmp.hpp>
+
+#include <boost/gil.hpp>
+#include <boost/gil/detail/mp11.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+#include <type_traits>
+
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+namespace fs = boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( make_reader_backend_test )
+{
+ {
+ static_assert(std::is_same<gil::detail::is_supported_path_spec<char*>::type, std::true_type>::value, "");
+
+ get_reader_backend< const char*, bmp_tag >::type backend_char = make_reader_backend( bmp_filename.c_str(), bmp_tag() );
+ get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, bmp_tag() );
+
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+ get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, bmp_tag() );
+
+ ifstream in( bmp_filename.c_str(), ios::binary );
+ get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, bmp_tag() );
+
+ fs::path my_path( bmp_filename );
+ get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), bmp_tag() );
+ get_reader_backend< fs::path , bmp_tag >::type backend_path = make_reader_backend( my_path , bmp_tag() );
+ }
+
+ {
+ get_reader_backend< const char*, bmp_tag >::type backend_char = make_reader_backend( bmp_filename.c_str(), image_read_settings<bmp_tag>() );
+ get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, image_read_settings<bmp_tag>() );
+
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+ get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, image_read_settings<bmp_tag>() );
+
+ ifstream in( bmp_filename.c_str(), ios::binary );
+ get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, image_read_settings<bmp_tag>() );
+
+ fs::path my_path( bmp_filename );
+ get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), image_read_settings<bmp_tag>() );
+ get_reader_backend< fs::path, bmp_tag >::type backend_path = make_reader_backend( my_path , image_read_settings<bmp_tag>() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( make_reader_test )
+{
+ {
+ get_reader_backend< const char*, bmp_tag >::type reader_char = make_reader( bmp_filename.c_str(), bmp_tag(), gil::detail::read_and_no_convert() );
+ get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, bmp_tag(), gil::detail::read_and_no_convert() );
+
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+ get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, bmp_tag(), gil::detail::read_and_no_convert() );
+
+ ifstream in( bmp_filename.c_str(), ios::binary );
+ get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, bmp_tag(), gil::detail::read_and_no_convert() );
+
+ fs::path my_path( bmp_filename );
+ get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), bmp_tag(), gil::detail::read_and_no_convert() );
+ get_reader_backend< fs::path , bmp_tag >::type reader_path = make_reader( my_path , bmp_tag(), gil::detail::read_and_no_convert() );
+ }
+
+ {
+ get_reader_backend< const char*, bmp_tag >::type reader_char = make_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
+ get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
+
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+ get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
+
+ ifstream in( bmp_filename.c_str(), ios::binary );
+ get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
+
+ fs::path my_path( bmp_filename );
+ get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
+ get_reader_backend< fs::path, bmp_tag >::type reader_path = make_reader( my_path , image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( make_dynamic_image_reader_test )
+{
+ {
+ get_dynamic_image_reader< const char*, bmp_tag >::type reader_char = make_dynamic_image_reader( bmp_filename.c_str(), bmp_tag() );
+ get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, bmp_tag() );
+
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+ get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, bmp_tag() );
+
+ ifstream in( bmp_filename.c_str(), ios::binary );
+ get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, bmp_tag() );
+
+ fs::path my_path( bmp_filename );
+ get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), bmp_tag() );
+ get_dynamic_image_reader< fs::path , bmp_tag >::type reader_path = make_dynamic_image_reader( my_path , bmp_tag() );
+ }
+
+ {
+ get_dynamic_image_reader< const char*, bmp_tag >::type reader_char = make_dynamic_image_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >() );
+ get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, image_read_settings< bmp_tag >() );
+
+ FILE* file = fopen( bmp_filename.c_str(), "rb" );
+ get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, image_read_settings< bmp_tag >() );
+
+ ifstream in( bmp_filename.c_str(), ios::binary );
+ get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, image_read_settings< bmp_tag >() );
+
+ fs::path my_path( bmp_filename );
+ get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), image_read_settings< bmp_tag >() );
+ get_dynamic_image_reader< fs::path , bmp_tag >::type reader_path = make_dynamic_image_reader( my_path , image_read_settings< bmp_tag >() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( make_writer_test )
+{
+ {
+ using writer_t = get_writer<char const*, bmp_tag>::type;
+
+ static_assert(std::is_same<gil::detail::is_writer<writer_t>::type, std::true_type>::value, "");
+ }
+
+ {
+ get_writer< const char*, bmp_tag >::type writer_char = make_writer(( bmp_out + "make_test.bmp" ).c_str(), bmp_tag() );
+ get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ), bmp_tag() );
+
+ FILE* file = fopen(( bmp_out + "make_test.bmp" ).c_str(), "wb" );
+ get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, bmp_tag() );
+
+ ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
+ get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, bmp_tag() );
+
+ fs::path my_path( ( bmp_out + "make_test.bmp" ).c_str() );
+ get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), bmp_tag() );
+ get_writer< fs::path , bmp_tag >::type writer_path = make_writer( my_path , bmp_tag() );
+ }
+
+ {
+ get_writer< const char*, bmp_tag >::type writer_char = make_writer(( bmp_out + "make_test.bmp" ).c_str(), image_write_info< bmp_tag >() );
+ get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ) , image_write_info< bmp_tag >() );
+
+ FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
+ get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, image_write_info< bmp_tag >() );
+
+ ofstream out( ( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
+ get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, image_write_info< bmp_tag >() );
+
+ fs::path my_path( bmp_out + "make_test.bmp" );
+ get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), image_write_info< bmp_tag >() );
+ get_writer< fs::path , bmp_tag >::type writer_path = make_writer( my_path , image_write_info< bmp_tag >() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( make_dynamic_image_writer_test )
+{
+ {
+ get_dynamic_image_writer< const char*, bmp_tag >::type writer_char = make_dynamic_image_writer( (bmp_out + string( "make_test.bmp")).c_str(), bmp_tag() );
+ get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out + "make_test.bmp", bmp_tag() );
+
+ FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
+ get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, bmp_tag() );
+
+ ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
+ get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, bmp_tag() );
+
+ fs::path my_path( bmp_out + "make_test.bmp" );
+ get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), bmp_tag() );
+ get_dynamic_image_writer< fs::path , bmp_tag >::type writer_path = make_dynamic_image_writer( my_path , bmp_tag() );
+ }
+
+ {
+ get_dynamic_image_writer< const char*, bmp_tag >::type writer_char = make_dynamic_image_writer( (bmp_out + string( "make_test.bmp")).c_str(), image_write_info< bmp_tag >() );
+ get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out + "make_test.bmp", image_write_info< bmp_tag >() );
+
+ FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
+ get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, image_write_info< bmp_tag >() );
+
+ ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
+ get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, image_write_info< bmp_tag >() );
+
+ fs::path my_path( bmp_out + "make_test.bmp" );
+ get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), image_write_info< bmp_tag >() );
+ get_dynamic_image_writer< fs::path , bmp_tag >::type writer_path = make_dynamic_image_writer( my_path , image_write_info< bmp_tag >() );
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/mandel_view.hpp b/src/boost/libs/gil/test/extension/io/mandel_view.hpp
new file mode 100644
index 00000000..4c7b8921
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/mandel_view.hpp
@@ -0,0 +1,96 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_IO_TEST_MANDEL_HPP
+#define BOOST_GIL_IO_TEST_MANDEL_HPP
+
+#include <boost/gil.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+// Models a Unary Function
+template <typename P> // Models PixelValueConcept
+struct mandelbrot_fn
+{
+ using point_t = boost::gil::point_t;
+ using const_t = mandelbrot_fn;
+ using value_type = P;
+ using reference = value_type;
+ using const_reference = value_type;
+ using argument_type = point_t;
+ using result_type = reference;
+ static constexpr bool is_mutable = false;
+
+ value_type _in_color,_out_color;
+ point_t _img_size;
+ static const int MAX_ITER=100; // max number of iterations
+
+ mandelbrot_fn() {}
+ mandelbrot_fn(const point_t& sz, const value_type& in_color, const value_type& out_color) : _in_color(in_color), _out_color(out_color), _img_size(sz) {}
+
+ std::ptrdiff_t width() { return _img_size.x; }
+ std::ptrdiff_t height() { return _img_size.y; }
+
+ result_type operator()(const point_t& p) const {
+ // normalize the coords to (-2..1, -1.5..1.5)
+ // (actually make y -1.0..2 so it is asymmetric, so we can verify some view factory methods)
+ double t=get_num_iter(point<double>(p.x/(double)_img_size.x*3-2, p.y/(double)_img_size.y*3-1.0f));//1.5f));
+ t=pow(t,0.2);
+
+ value_type ret;
+ for (int k=0; k<num_channels<P>::value; ++k)
+ ret[k]=(typename channel_type<P>::type)(_in_color[k]*t + _out_color[k]*(1-t));
+ return ret;
+ }
+
+private:
+ double get_num_iter(const point<double>& p) const {
+ point<double> Z(0,0);
+ for (int i=0; i<MAX_ITER; ++i) {
+ Z = point<double>(Z.x*Z.x - Z.y*Z.y + p.x, 2*Z.x*Z.y + p.y);
+ if (Z.x*Z.x + Z.y*Z.y > 4)
+ return i/(double)MAX_ITER;
+ }
+ return 0;
+ }
+};
+
+template< typename Pixel >
+struct mandel_view
+{
+ using deref_t = mandelbrot_fn<Pixel>;
+ using locator_t= virtual_2d_locator<deref_t, false>;
+ using my_virt_view_t = image_view<locator_t>;
+ using type = my_virt_view_t;
+};
+
+template< typename Pixel >
+typename mandel_view< Pixel >::type create_mandel_view( unsigned int width
+ , unsigned int height
+ , const Pixel& in
+ , const Pixel& out
+ )
+{
+ using view_t = typename mandel_view<Pixel>::type;
+ using deref_t = typename mandel_view<Pixel>::deref_t;
+ using locator_t = typename mandel_view<Pixel>::locator_t;
+
+ point_t dims( width, height );
+ return view_t( dims
+ , locator_t( point_t( 0, 0 )
+ , point_t( 1, 1 )
+ , deref_t( dims
+ , in
+ , out
+ )
+ )
+ );
+}
+
+#endif // BOOST_GIL_IO_TEST_MANDEL_HPP
diff --git a/src/boost/libs/gil/test/extension/io/paths.hpp b/src/boost/libs/gil/test/extension/io/paths.hpp
new file mode 100644
index 00000000..9dd336de
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/paths.hpp
@@ -0,0 +1,66 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_IO_TEST_PATHS_HPP
+#define BOOST_GIL_IO_TEST_PATHS_HPP
+
+// Disable warning: conversion to 'std::atomic<int>::__integral_type {aka int}' from 'long int' may alter its value
+#if defined(BOOST_CLANG)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wshorten-64-to-32"
+#endif
+
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+
+#define BOOST_FILESYSTEM_VERSION 3
+#include <boost/filesystem.hpp>
+
+#if defined(BOOST_CLANG)
+#pragma clang diagnostic pop
+#endif
+
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
+#pragma GCC diagnostic pop
+#endif
+
+// `base` holds the path to ../.., i.e. the directory containing `images`
+static const std::string base = (boost::filesystem::absolute(boost::filesystem::path(__FILE__)).parent_path().string()) + "/";
+
+static const std::string bmp_in = base + "images/bmp/";
+static const std::string bmp_out = base + "output/";
+
+static const std::string jpeg_in = base + "images/jpeg/";
+static const std::string jpeg_out = base + "output/";
+
+static const std::string png_base_in = base + "images/png/";
+static const std::string png_in = png_base_in + "PngSuite/";
+static const std::string png_out = base + "output/";
+
+static const std::string pnm_in = base + "images/pnm/";
+static const std::string pnm_out = base + "output/";
+
+static const std::string raw_in = base + "images/raw/";
+
+static const std::string targa_in = base + "images/targa/";
+static const std::string targa_out = base + "output/";
+
+static const std::string tiff_in = base + "images/tiff/";
+static const std::string tiff_out = base + "output/";
+static const std::string tiff_in_GM = tiff_in + "graphicmagick/";
+
+static const std::string bmp_filename ( bmp_in + "test.bmp" );
+static const std::string jpeg_filename ( jpeg_in + "test.jpg" );
+static const std::string png_filename ( png_base_in + "test.png" );
+static const std::string pnm_filename ( pnm_in + "rgb.pnm" );
+static const std::string raw_filename ( raw_in + "RAW_CANON_D30_SRGB.CRW" );
+static const std::string targa_filename( targa_in + "24BPP_compressed.tga" );
+static const std::string tiff_filename ( tiff_in + "test.tif" );
+
+#endif // BOOST_GIL_IO_TEST_PATHS_HPP
diff --git a/src/boost/libs/gil/test/extension/io/png_file_format_test.cpp b/src/boost/libs/gil/test/extension/io/png_file_format_test.cpp
new file mode 100644
index 00000000..dcc22bb6
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/png_file_format_test.cpp
@@ -0,0 +1,77 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE png_file_format_test_module
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+#define BOOST_GIL_IO_ENABLE_GRAY_ALPHA
+#define BOOST_FILESYSTEM_VERSION 3
+
+#include <boost/gil/extension/io/png.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost::gil;
+namespace fs = boost::filesystem;
+
+using tag_t = png_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_png_tests )
+
+#ifdef BOOST_GIL_IO_USE_PNG_TEST_SUITE_IMAGES
+
+// Test will loop through the "in" folder to read and convert
+// the png's to rgb8_image_t's. Which then will be written in
+// the "out" folder.
+//
+// The file name structure is as followed:
+//
+// g04i2c08.png
+// || |||+---- bit-depth
+// || ||+----- color-type (descriptive)
+// || |+------ color-type (numerical)
+// || +------- interlaced or non-interlaced
+// |+--------- parameter of test (in this case gamma-value)
+// +---------- test feature (in this case gamma)
+
+BOOST_AUTO_TEST_CASE( file_format_test )
+{
+ string in ( png_in + "PngSuite\\" );
+
+ fs::path in_path = fs::system_complete( fs::path( in ));
+
+ if ( fs::is_directory( in_path ) )
+ {
+ fs::directory_iterator end_iter;
+ for( fs::directory_iterator dir_itr( in_path )
+ ; dir_itr != end_iter
+ ; ++dir_itr
+ )
+ {
+ if ( fs::is_regular( dir_itr->status() )
+ && ( fs::extension( dir_itr->path() ) == ".PNG" ))
+ {
+ rgb8_image_t img;
+ string filename = in + dir_itr->path().leaf().string();
+ read_and_convert_image( filename, img, tag_t() );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( png_out + fs::basename( dir_itr->path() ) + ".png"
+ , view( img )
+ , png_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+ }
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_PNG_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/png_old_test.cpp b/src/boost/libs/gil/test/extension/io/png_old_test.cpp
new file mode 100644
index 00000000..aca9f7d2
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/png_old_test.cpp
@@ -0,0 +1,100 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE png_old_test_module
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/png/old.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( gil_io_png_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( old_read_dimensions_test )
+{
+ boost::gil::point_t dim = png_read_dimensions(png_filename);
+ BOOST_CHECK_EQUAL( dim.x, 1000 );
+ BOOST_CHECK_EQUAL( dim.y, 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_image_test )
+{
+ rgba8_image_t img;
+ png_read_image( png_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_image_test )
+{
+ rgb8_image_t img;
+ png_read_and_convert_image( png_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_view_test )
+{
+ rgba8_image_t img( 1000, 600 );
+ png_read_view( png_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_view_test )
+{
+ rgb8_image_t img( 1000, 600 );
+ png_read_and_convert_view( png_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_write_view_test )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ png_write_view( png_out + "old_write_view_test.png"
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( old_dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ png_read_image( png_filename.c_str()
+ , runtime_image
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ png_write_view( png_out + "old_dynamic_image_test.png"
+ , view( runtime_image )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/png_read_test.cpp b/src/boost/libs/gil/test/extension/io/png_read_test.cpp
new file mode 100644
index 00000000..211cb5d2
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/png_read_test.cpp
@@ -0,0 +1,731 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE png_read_test_module
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+#define BOOST_GIL_IO_ENABLE_GRAY_ALPHA
+#define BOOST_FILESYSTEM_VERSION 3
+
+#include <boost/gil/extension/io/png.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+#include <iostream>
+
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+#include "unit_test_utility.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+using namespace boost::gil::detail;
+namespace fs = boost::filesystem;
+
+using tag_t = png_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_png_tests )
+
+using gray_alpha8_pixel_t = pixel<uint8_t, gray_alpha_layout_t>;
+using gray_alpha8_image_t= image<gray_alpha8_pixel_t, false>;
+
+using gray_alpha16_pixel_t = pixel<uint16_t, gray_alpha_layout_t>;
+using gray_alpha16_image_t = image<gray_alpha16_pixel_t, false>;
+
+template< typename Image >
+void test_file( string filename )
+{
+ Image src, dst;
+
+ image_read_settings< png_tag > settings;
+ settings._read_file_gamma = true;
+ settings._read_transparency_data = true;
+
+
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( png_in + filename
+ , settings
+ );
+
+ read_image( png_in + filename
+ , src
+ , settings
+ );
+
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ image_write_info< png_tag > write_info;
+ write_info._file_gamma = backend._info._file_gamma;
+
+ write_view( png_out + filename
+ , view( src )
+ , write_info
+ );
+
+ read_image( png_out + filename
+ , dst
+ , settings
+ );
+
+
+ BOOST_CHECK( equal_pixels( const_view( src )
+ , const_view( dst )
+ )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+template< typename Image >
+void test_png_scanline_reader( string filename )
+{
+ test_scanline_reader<Image, png_tag>( string( png_in + filename ).c_str() );
+}
+
+BOOST_AUTO_TEST_CASE( read_header_test )
+{
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( png_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+
+ BOOST_CHECK_EQUAL( backend._info._num_channels, 4 );
+ BOOST_CHECK_EQUAL( backend._info._bit_depth , 8 );
+ BOOST_CHECK_EQUAL( backend._info._color_type , PNG_COLOR_TYPE_RGBA );
+
+ BOOST_CHECK_EQUAL( backend._info._interlace_method , PNG_INTERLACE_NONE );
+ BOOST_CHECK_EQUAL( backend._info._compression_method, PNG_COMPRESSION_TYPE_BASE );
+ BOOST_CHECK_EQUAL( backend._info._filter_method , PNG_FILTER_TYPE_BASE );
+
+
+ BOOST_CHECK_EQUAL( backend._info._file_gamma, 1 );
+}
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_pixel_per_meter )
+{
+ image_read_settings< png_tag > settings;
+ settings.set_read_members_true();
+
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( png_base_in + "EddDawson/36dpi.png"
+ , settings
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._pixels_per_meter, png_uint_32( 1417 ));
+}
+
+BOOST_AUTO_TEST_CASE(read_with_trns_chunk_color_type_0)
+{
+ // PNG 1.2: For color type 0 (grayscale), the tRNS chunk contains a single gray level value,
+ // stored in the format:
+ //
+ // Gray: 2 bytes, range 0 .. (2^bitdepth)-1
+ {
+ auto const png_path = png_in + "tbbn0g04.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 4);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 1u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_GRAY);
+
+ gray_alpha8_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == gray_alpha8c_pixel_t(255, 0));
+ BOOST_TEST(const_view(img)[78] == gray_alpha8c_pixel_t(221, 255));
+ BOOST_TEST(const_view(img)[79] == gray_alpha8c_pixel_t(204, 255));
+ BOOST_TEST(const_view(img)[975] == gray_alpha8c_pixel_t(238, 255));
+ BOOST_TEST(const_view(img)[976] == gray_alpha8c_pixel_t(221, 255));
+ BOOST_TEST(const_view(img).back() == gray_alpha8c_pixel_t(255, 0));
+ }
+ {
+ auto const png_path = png_in + "tbwn0g16.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 16);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 1u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_GRAY);
+
+ gray_alpha16_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == gray_alpha16c_pixel_t(65535, 0));
+ BOOST_TEST(const_view(img)[78] == gray_alpha16c_pixel_t(58339, 65535));
+ BOOST_TEST(const_view(img)[79] == gray_alpha16c_pixel_t(51657, 65535));
+ BOOST_TEST(const_view(img)[975] == gray_alpha16c_pixel_t(62965, 65535));
+ BOOST_TEST(const_view(img)[976] == gray_alpha16c_pixel_t(58339, 65535));
+ BOOST_TEST(const_view(img).back() == gray_alpha16c_pixel_t(65535, 0));
+ }
+}
+
+BOOST_AUTO_TEST_CASE(read_with_trns_chunk_color_type_2)
+{
+ // PNG 1.2: For color type 2 (truecolor), the tRNS chunk contains a single RGB color value,
+ // stored in the format:
+ //
+ // Red: 2 bytes, range 0 .. (2^bitdepth)-1
+ // Green: 2 bytes, range 0 .. (2^bitdepth)-1
+ // Blue: 2 bytes, range 0 .. (2^bitdepth)-1
+ {
+ auto const png_path = png_in + "tbbn2c16.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 16);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 3u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_RGB);
+
+ rgba16_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba16c_pixel_t(65535, 65535, 65535, 0));
+ BOOST_TEST(const_view(img)[78] == rgba16c_pixel_t(58339, 58339, 58339, 65535));
+ BOOST_TEST(const_view(img)[79] == rgba16c_pixel_t(51657, 51657, 51657, 65535));
+ BOOST_TEST(const_view(img)[975] == rgba16c_pixel_t(62965, 62965, 62965, 65535));
+ BOOST_TEST(const_view(img)[976] == rgba16c_pixel_t(58339, 58339, 58339, 65535));
+ BOOST_TEST(const_view(img).back() == rgba16c_pixel_t(65535, 65535, 65535, 0));
+ }
+ {
+ auto const png_path = png_in + "tbgn2c16.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 16);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 3u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_RGB);
+
+ rgba16_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba16c_pixel_t(65535, 65535, 65535, 0));
+ BOOST_TEST(const_view(img)[78] == rgba16c_pixel_t(58339, 58339, 58339, 65535));
+ BOOST_TEST(const_view(img)[79] == rgba16c_pixel_t(51657, 51657, 51657, 65535));
+ BOOST_TEST(const_view(img)[975] == rgba16c_pixel_t(62965, 62965, 62965, 65535));
+ BOOST_TEST(const_view(img)[976] == rgba16c_pixel_t(58339, 58339, 58339, 65535));
+ BOOST_TEST(const_view(img).back() == rgba16c_pixel_t(65535, 65535, 65535, 0));
+ }
+ {
+ auto const png_path = png_in + "tbrn2c08.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 8);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 3u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_RGB);
+
+ rgba8_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba8c_pixel_t(255, 255, 255, 0));
+ BOOST_TEST(const_view(img)[78] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img)[79] == rgba8c_pixel_t(201, 201, 201, 255));
+ BOOST_TEST(const_view(img)[975] == rgba8c_pixel_t(245, 245, 245, 255));
+ BOOST_TEST(const_view(img)[976] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img).back() == rgba8c_pixel_t(255, 255, 255, 0));
+ }
+}
+
+BOOST_AUTO_TEST_CASE(read_with_trns_chunk_color_type_3)
+{
+ // PNG 1.2: For color type 3 (indexed color), the tRNS chunk contains a series of one-byte
+ // alpha values, corresponding to entries in the PLTE chunk:
+ //
+ // Alpha for palette index 0: 1 byte
+ // Alpha for palette index 1: 1 byte
+ // ...etc...
+ {
+ auto const png_path = png_in + "tbbn3p08.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 8);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 1u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_PALETTE);
+
+ rgba8_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba8c_pixel_t(255, 255, 255, 0));
+ BOOST_TEST(const_view(img)[78] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img)[79] == rgba8c_pixel_t(201, 201, 201, 255));
+ BOOST_TEST(const_view(img)[975] == rgba8c_pixel_t(246, 246, 246, 255));
+ BOOST_TEST(const_view(img)[976] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img).back() == rgba8c_pixel_t(255, 255, 255, 0));
+ }
+ {
+ auto const png_path = png_in + "tbgn3p08.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 8);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 1u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_PALETTE);
+
+ rgba8_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba8c_pixel_t(255, 255, 255, 0));
+ BOOST_TEST(const_view(img)[78] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img)[79] == rgba8c_pixel_t(201, 201, 201, 255));
+ BOOST_TEST(const_view(img)[975] == rgba8c_pixel_t(246, 246, 246, 255));
+ BOOST_TEST(const_view(img)[976] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img).back() == rgba8c_pixel_t(255, 255, 255, 0));
+ }
+ {
+ auto const png_path = png_in + "tp1n3p08.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 8);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 1u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_PALETTE);
+
+ rgba8_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba8c_pixel_t(255, 255, 255, 0));
+ BOOST_TEST(const_view(img)[78] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img)[79] == rgba8c_pixel_t(201, 201, 201, 255));
+ BOOST_TEST(const_view(img)[975] == rgba8c_pixel_t(246, 246, 246, 255));
+ BOOST_TEST(const_view(img)[976] == rgba8c_pixel_t(227, 227, 227, 255));
+ BOOST_TEST(const_view(img).back() == rgba8c_pixel_t(255, 255, 255, 0));
+ }
+ {
+ auto const png_path = png_in + "tm3n3p02.png";
+ image_read_settings<png_tag> settings;
+ settings.set_read_members_true();
+ auto backend = read_image_info(png_path, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_CHECK_EQUAL(backend._info._bit_depth, 2);
+ BOOST_CHECK_EQUAL(backend._info._num_channels, 1u);
+ BOOST_CHECK_EQUAL(backend._info._color_type, PNG_COLOR_TYPE_PALETTE);
+
+ rgba8_image_t img;
+ read_image(png_path, img, settings);
+ BOOST_CHECK_EQUAL(backend._info._width, 32u);
+ BOOST_CHECK_EQUAL(backend._info._height, 32u);
+ BOOST_TEST(const_view(img).front() == rgba8c_pixel_t(0, 0, 255, 0));
+ BOOST_TEST(const_view(img)[16] == rgba8c_pixel_t(0, 0, 255, 85));
+ BOOST_TEST(const_view(img)[511] == rgba8c_pixel_t(0, 0, 255, 85));
+ BOOST_TEST(const_view(img)[1007] == rgba8c_pixel_t(0, 0, 255, 170));
+ BOOST_TEST(const_view(img).back() == rgba8c_pixel_t(0, 0, 255, 255));
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+#ifdef BOOST_GIL_IO_USE_PNG_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_CASE( BASIc_format_test )
+{
+ // Basic format test files (non-interlaced)
+
+ // BASN0g01 - black & white
+ test_file< gray1_image_t >( "BASN0G01.PNG" );
+ test_png_scanline_reader< gray1_image_t >( "BASN0G01.PNG" );
+
+ // BASN0g02 - 2 bit (4 level) grayscale
+ test_file< gray2_image_t >( "BASN0G02.PNG" );
+ test_png_scanline_reader< gray2_image_t >( "BASN0G02.PNG" );
+
+ // BASN0g04 - 4 bit (16 level) grayscale
+ test_file< gray4_image_t >( "BASN0G04.PNG" );
+ test_png_scanline_reader< gray4_image_t >( "BASN0G04.PNG" );
+
+ // BASN0g08 - 8 bit (256 level) grayscale
+ test_file< gray8_image_t >( "BASN0G08.PNG" );
+ test_png_scanline_reader< gray8_image_t >( "BASN0G08.PNG" );
+
+ // BASN0g16 - 16 bit (64k level) grayscale
+ test_file< gray16_image_t >( "BASN0G16.PNG" );
+ test_png_scanline_reader< gray16_image_t >( "BASN0G16.PNG" );
+
+ // BASN2c08 - 3x8 bits rgb color
+ test_file< rgb8_image_t >( "BASN2C08.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "BASN2C08.PNG" );
+
+ // BASN2c16 - 3x16 bits rgb color
+ test_file< rgb16_image_t >( "BASN2C16.PNG" );
+ test_png_scanline_reader< rgb16_image_t >( "BASN2C16.PNG" );
+
+ // BASN3p01 - 1 bit (2 color) paletted
+ test_file< rgb8_image_t >( "BASN3P01.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "BASN3P01.PNG" );
+
+ // BASN3p02 - 2 bit (4 color) paletted
+ test_file< rgb8_image_t >( "BASN3P02.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "BASN3P02.PNG" );
+
+ // BASN3p04 - 4 bit (16 color) paletted
+ test_file< rgb8_image_t >( "BASN3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "BASN3P04.PNG" );
+
+ // BASN3p08 - 8 bit (256 color) paletted
+ test_file< rgb8_image_t >( "BASN3P08.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "BASN3P08.PNG" );
+
+ // BASN4a08 - 8 bit grayscale + 8 bit alpha-channel
+ test_file< gray_alpha8_image_t >( "BASN4A08.PNG" );
+ test_png_scanline_reader< gray_alpha8_image_t >( "BASN4A08.PNG" );
+
+ // BASN4a16 - 16 bit grayscale + 16 bit alpha-channel
+ test_file< gray_alpha16_image_t >( "BASN4A16.PNG" );
+ test_png_scanline_reader< gray_alpha16_image_t >( "BASN4A16.PNG" );
+
+ // BASN6a08 - 3x8 bits rgb color + 8 bit alpha-channel
+ test_file< rgba8_image_t >( "BASN6A08.PNG" );
+ test_png_scanline_reader< rgba8_image_t >( "BASN6A08.PNG" );
+
+ // BASN6a16 - 3x16 bits rgb color + 16 bit alpha-channel
+ test_file< rgba16_image_t >( "BASN6A16.PNG" );
+ test_png_scanline_reader< rgba16_image_t >( "BASN6A16.PNG" );
+}
+
+BOOST_AUTO_TEST_CASE( BASIc_format_interlaced_test )
+{
+ // Basic format test files (Adam-7 interlaced)
+
+ // BASI0g01 - black & white
+ test_file< gray1_image_t >( "BASI0G01.PNG" );
+
+ // BASI0g02 - 2 bit (4 level) grayscale
+ test_file< gray2_image_t >( "BASI0G02.PNG" );
+
+ // BASI0g04 - 4 bit (16 level) grayscale
+ test_file< gray4_image_t >( "BASI0G04.PNG" );
+
+ // BASI0g08 - 8 bit (256 level) grayscale
+ test_file< gray8_image_t >( "BASI0G08.PNG" );
+
+ // BASI0g16 - 16 bit (64k level) grayscale
+ test_file< gray16_image_t >( "BASI0G16.PNG" );
+
+ // BASI2c08 - 3x8 bits rgb color
+ test_file< rgb8_image_t >( "BASI2C08.PNG" );
+
+ // BASI2c16 - 3x16 bits rgb color
+ test_file< rgb16_image_t >( "BASI2C16.PNG" );
+
+ // BASI3p01 - 1 bit (2 color) paletted
+ test_file< rgb8_image_t >( "BASI3P01.PNG" );
+
+ // BASI3p02 - 2 bit (4 color) paletted
+ test_file< rgb8_image_t >( "BASI3P02.PNG" );
+
+ // BASI3p04 - 4 bit (16 color) paletted
+ test_file< rgb8_image_t >( "BASI3P04.PNG" );
+
+ // BASI3p08 - 8 bit (256 color) paletted
+ test_file< rgb8_image_t >( "BASI3P08.PNG" );
+
+ // BASI4a08 - 8 bit grayscale + 8 bit alpha-channel
+ test_file< gray_alpha8_image_t >( "BASI4A08.PNG" );
+
+ // BASI4a16 - 16 bit grayscale + 16 bit alpha-channel
+ test_file< gray_alpha16_image_t >( "BASI4A16.PNG" );
+
+ // BASI6a08 - 3x8 bits rgb color + 8 bit alpha-channel
+ test_file< rgba8_image_t >( "BASI6A08.PNG" );
+
+ // BASI6a16 - 3x16 bits rgb color + 16 bit alpha-channel
+ test_file< rgba16_image_t >( "BASI6A16.PNG" );
+}
+
+BOOST_AUTO_TEST_CASE( odd_sizes_test )
+{
+ // S01I3P01 - 1x1 paletted file, interlaced
+ test_file< rgb8_image_t >( "S01I3P01.PNG" );
+
+ // S01N3P01 - 1x1 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S01N3P01.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S01N3P01.PNG" );
+
+ // S02I3P01 - 2x2 paletted file, interlaced
+ test_file< rgb8_image_t >( "S02I3P01.PNG" );
+
+ // S02N3P01 - 2x2 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S02N3P01.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S02N3P01.PNG" );
+
+ // S03I3P01 - 3x3 paletted file, interlaced
+ test_file< rgb8_image_t >( "S03I3P01.PNG" );
+
+ // S03N3P01 - 3x3 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S03N3P01.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S03N3P01.PNG" );
+
+ // S04I3P01 - 4x4 paletted file, interlaced
+ test_file< rgb8_image_t >( "S04I3P01.PNG" );
+
+ // S04N3P01 - 4x4 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S04N3P01.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S04N3P01.PNG" );
+
+ // S05I3P02 - 5x5 paletted file, interlaced
+ test_file< rgb8_image_t >( "S05I3P02.PNG" );
+
+ // S05N3P02 - 5x5 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S05N3P02.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S05N3P02.PNG" );
+
+ // S06I3P02 - 6x6 paletted file, interlaced
+ test_file< rgb8_image_t >( "S06I3P02.PNG" );
+
+ // S06N3P02 - 6x6 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S06N3P02.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S06N3P02.PNG" );
+
+ // S07I3P02 - 7x7 paletted file, interlaced
+ test_file< rgb8_image_t >( "S07I3P02.PNG" );
+
+ // S07N3P02 - 7x7 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S07N3P02.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S07N3P02.PNG" );
+
+ // S08I3P02 - 8x8 paletted file, interlaced
+ test_file< rgb8_image_t >( "S08I3P02.PNG" );
+
+ // S08N3P02 - 8x8 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S08N3P02.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S08N3P02.PNG" );
+
+ // S09I3P02 - 9x9 paletted file, interlaced
+ test_file< rgb8_image_t >( "S09I3P02.PNG" );
+
+ // S09N3P02 - 9x9 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S09N3P02.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S09N3P02.PNG" );
+
+ // S32I3P04 - 32x32 paletted file, interlaced
+ test_file< rgb8_image_t >( "S32I3P04.PNG" );
+
+ // S32N3P04 - 32x32 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S32N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S32N3P04.PNG" );
+
+ // S33I3P04 - 33x33 paletted file, interlaced
+ test_file< rgb8_image_t >( "S33I3P04.PNG" );
+
+ // S33N3P04 - 33x33 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S33N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S33N3P04.PNG" );
+
+ // S34I3P04 - 34x34 paletted file, interlaced
+ test_file< rgb8_image_t >( "S34I3P04.PNG" );
+
+ // S34N3P04 - 34x34 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S34N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S34N3P04.PNG" );
+
+ // S35I3P04 - 35x35 paletted file, interlaced
+ test_file< rgb8_image_t >( "S35I3P04.PNG" );
+
+ // S35N3P04 - 35x35 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S35N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S35N3P04.PNG" );
+
+ // S36I3P04 - 36x36 paletted file, interlaced
+ test_file< rgb8_image_t >( "S36I3P04.PNG" );
+
+ // S36N3P04 - 36x36 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S36N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S36N3P04.PNG" );
+
+ // S37I3P04 - 37x37 paletted file, interlaced
+ test_file< rgb8_image_t >( "S37I3P04.PNG" );
+
+ // S37N3P04 - 37x37 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S37N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S37N3P04.PNG" );
+
+ // S38I3P04 - 38x38 paletted file, interlaced
+ test_file< rgb8_image_t >( "S38I3P04.PNG" );
+
+ // S38N3P04 - 38x38 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S38N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S38N3P04.PNG" );
+
+ // S39I3P04 - 39x39 paletted file, interlaced
+ test_file< rgb8_image_t >( "S39I3P04.PNG" );
+
+ // S39N3P04 - 39x39 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S39N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S39N3P04.PNG" );
+
+ // S40I3P04 - 40x40 paletted file, interlaced
+ test_file< rgb8_image_t >( "S40I3P04.PNG" );
+
+ // S40N3P04 - 40x40 paletted file, no interlacing
+ test_file< rgb8_image_t >( "S40N3P04.PNG" );
+ test_png_scanline_reader< rgb8_image_t >( "S40N3P04.PNG" );
+}
+
+BOOST_AUTO_TEST_CASE( background_test )
+{
+ // BGAI4A08 - 8 bit grayscale, alpha, no background chunk, interlaced
+ test_file< gray_alpha8_image_t >( "BGAI4A08.PNG" );
+
+ // BGAI4A16 - 16 bit grayscale, alpha, no background chunk, interlaced
+ test_file< gray_alpha16_image_t >( "BGAI4A16.PNG" );
+
+ // BGAN6A08 - 3x8 bits rgb color, alpha, no background chunk
+ test_file< rgba8_image_t >( "BGAN6A08.PNG" );
+
+ // BGAN6A16 - 3x16 bits rgb color, alpha, no background chunk
+ test_file< rgba16_image_t >( "BGAN6A16.PNG" );
+
+ // BGBN4A08 - 8 bit grayscale, alpha, black background chunk
+ test_file< gray_alpha8_image_t >( "BGBN4A08.PNG" );
+
+ // BGGN4A16 - 16 bit grayscale, alpha, gray background chunk
+ test_file< gray_alpha16_image_t >( "BGGN4A16.PNG" );
+
+ // BGWN6A08 - 3x8 bits rgb color, alpha, white background chunk
+ test_file< rgba8_image_t >( "BGWN6A08.PNG" );
+
+ // BGYN6A16 - 3x16 bits rgb color, alpha, yellow background chunk
+ test_file< rgba16_image_t >( "BGYN6A16.PNG" );
+}
+
+BOOST_AUTO_TEST_CASE( transparency_test )
+{
+ // TBBN1G04 - transparent, black background chunk
+ // file missing
+ //test_file< gray_alpha8_image_t >( "TBBN1G04.PNG" );
+
+ // TBBN2C16 - transparent, blue background chunk
+ test_file< rgba16_image_t >( "TBBN2C16.PNG" );
+
+ // TBBN3P08 - transparent, black background chunk
+ test_file< rgba8_image_t >( "TBBN3P08.PNG" );
+
+ // TBGN2C16 - transparent, green background chunk
+ test_file< rgba16_image_t >( "TBGN2C16.PNG" );
+
+ // TBGN3P08 - transparent, light-gray background chunk
+ test_file< rgba8_image_t >( "TBGN3P08.PNG" );
+
+ // TBRN2C08 - transparent, red background chunk
+ test_file< rgba8_image_t >( "TBRN2C08.PNG" );
+
+ // TBWN1G16 - transparent, white background chunk
+ test_file< gray_alpha16_image_t >( "TBWN0G16.PNG" );
+
+ // TBWN3P08 - transparent, white background chunk
+ test_file< rgba8_image_t >( "TBWN3P08.PNG" );
+
+ // TBYN3P08 - transparent, yellow background chunk
+ test_file< rgba8_image_t >( "TBYN3P08.PNG" );
+
+ // TP0N1G08 - not transparent for reference (logo on gray)
+ test_file< gray8_image_t >( "TP0N0G08.PNG" );
+
+ // TP0N2C08 - not transparent for reference (logo on gray)
+ test_file< rgb8_image_t >( "TP0N2C08.PNG" );
+
+ // TP0N3P08 - not transparent for reference (logo on gray)
+ test_file< rgb8_image_t >( "TP0N3P08.PNG" );
+
+ // TP1N3P08 - transparent, but no background chunk
+ test_file< rgba8_image_t >( "TP1N3P08.PNG" );
+}
+
+BOOST_AUTO_TEST_CASE( gamma_test )
+{
+ // G03N0G16 - grayscale, file-gamma = 0.35
+ test_file< gray16_image_t >( "G03N0G16.PNG" );
+
+ // G03N2C08 - color, file-gamma = 0.35
+ test_file< rgb8_image_t >( "G03N2C08.PNG" );
+
+ // G03N3P04 - paletted, file-gamma = 0.35
+ test_file< rgb8_image_t >( "G03N3P04.PNG" );
+
+ // G04N0G16 - grayscale, file-gamma = 0.45
+ test_file< gray16_image_t >( "G04N0G16.PNG" );
+
+ // G04N2C08 - color, file-gamma = 0.45
+ test_file< rgb8_image_t >( "G04N2C08.PNG" );
+
+ // G04N3P04 - paletted, file-gamma = 0.45
+ test_file< rgb8_image_t >( "G04N3P04.PNG" );
+
+ // G05N0G16 - grayscale, file-gamma = 0.55
+ test_file< gray16_image_t >( "G05N0G16.PNG" );
+
+ // G05N2C08 - color, file-gamma = 0.55
+ test_file< rgb8_image_t >( "G05N2C08.PNG" );
+
+ // G05N3P04 - paletted, file-gamma = 0.55
+ test_file< rgb8_image_t >( "G05N3P04.PNG" );
+
+ // G07N0G16 - grayscale, file-gamma = 0.70
+ test_file< gray16_image_t >( "G07N0G16.PNG" );
+
+ // G07N2C08 - color, file-gamma = 0.70
+ test_file< rgb8_image_t >( "G07N2C08.PNG" );
+
+ // G07N3P04 - paletted, file-gamma = 0.70
+ test_file< rgb8_image_t >( "G07N3P04.PNG" );
+
+ // G10N0G16 - grayscale, file-gamma = 1.00
+ test_file< gray16_image_t >( "G10N0G16.PNG" );
+
+ // G10N2C08 - color, file-gamma = 1.00
+ test_file< rgb8_image_t >( "G10N2C08.PNG" );
+
+ // G10N3P04 - paletted, file-gamma = 1.00
+ test_file< rgb8_image_t >( "G10N3P04.PNG" );
+
+ // G25N0G16 - grayscale, file-gamma = 2.50
+ test_file< gray16_image_t >( "G25N0G16.PNG" );
+
+ // G25N2C08 - color, file-gamma = 2.50
+ test_file< rgb8_image_t >( "G25N2C08.PNG" );
+
+ // G25N3P04 - paletted, file-gamma = 2.50
+ test_file< rgb8_image_t >( "G25N3P04.PNG" );
+}
+
+#endif // BOOST_GIL_IO_USE_PNG_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/png_test.cpp b/src/boost/libs/gil/test/extension/io/png_test.cpp
new file mode 100644
index 00000000..287aa8ff
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/png_test.cpp
@@ -0,0 +1,351 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE png_test
+//#define BOOST_GIL_IO_PNG_FLOATING_POINT_SUPPORTED
+//#define BOOST_GIL_IO_PNG_FIXED_POINT_SUPPORTED
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/png.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+using tag_t = png_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_png_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_using_string )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( png_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ ifstream in( png_filename.c_str(), ios::binary );
+
+ using backend_t = get_reader_backend<ifstream, tag_t>::type;
+
+ backend_t backend = read_image_info( in
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ FILE* file = fopen( png_filename.c_str(), "rb" );
+
+ using backend_t = get_reader_backend<FILE*, tag_t>::type;
+
+ backend_t backend = read_image_info( file
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgba8_image_t img;
+ read_image( png_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ ifstream in( png_filename.c_str(), ios::binary );
+
+ rgba8_image_t img;
+ read_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ FILE* file = fopen( png_filename.c_str(), "rb" );
+
+ rgba8_image_t img;
+ read_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_and_convert_image( png_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ rgba8_image_t img;
+ read_and_convert_image( png_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ ifstream in( png_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_and_convert_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ FILE* file = fopen( png_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_and_convert_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ {
+ rgba8_image_t img( 1000, 600 );
+ read_view( png_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( png_filename.c_str(), ios::binary );
+
+ rgba8_image_t img( 1000, 600 );
+ read_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( png_filename.c_str(), "rb" );
+
+ rgba8_image_t img( 1000, 600 );
+ read_view( file, view( img ), tag_t() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( png_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( png_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( png_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 1000, 600 );
+
+ read_and_convert_view( file
+ , view( img )
+ , tag_t()
+ );
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_view_test )
+{
+ {
+ string filename( png_out + "write_test_string.png" );
+
+ write_view( filename
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( png_out + "write_test_string_bgr.png" );
+
+ write_view( filename
+ , create_mandel_view( 320, 240
+ , bgr8_pixel_t( 255, 0, 0 )
+ , bgr8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( png_out + "write_test_ofstream.png" );
+
+ ofstream out( filename.c_str(), ios::out | ios::binary );
+
+ write_view( out
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( png_out + "write_test_file.png" );
+
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( png_out + "write_test_info.png" );
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ image_write_info< png_tag > info;
+
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , info
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+BOOST_AUTO_TEST_CASE( stream_test )
+{
+ // 1. Read an image.
+ ifstream in( png_filename.c_str(), ios::binary );
+
+ rgba8_image_t img;
+ read_image( in, img, tag_t() );
+
+ // 2. Write image to in-memory buffer.
+ stringstream out_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( out_buffer, view( img ), tag_t() );
+
+ // 3. Copy in-memory buffer to another.
+ stringstream in_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ in_buffer << out_buffer.rdbuf();
+
+ // 4. Read in-memory buffer to gil image
+ rgba8_image_t dst;
+ read_image( in_buffer, dst, tag_t() );
+
+ // 5. Write out image.
+ string filename( png_out + "stream_test.png" );
+ ofstream out( filename.c_str(), ios_base::binary );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( out, view( dst ), tag_t() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test_2 )
+{
+ filebuf in_buf;
+ if( !in_buf.open( png_filename.c_str(), ios::in | ios::binary ) )
+ {
+ BOOST_CHECK( false );
+ }
+
+ istream in( &in_buf );
+
+ rgba8_image_t img;
+ read_image( in, img, tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test )
+{
+ run_subimage_test< rgba8_image_t, tag_t >( png_filename
+ , point_t( 0, 0 )
+ , point_t( 50, 50 )
+ );
+
+
+ run_subimage_test< rgba8_image_t, tag_t >( png_filename
+ , point_t( 135, 95 )
+ , point_t( 50, 50 )
+ );
+}
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ read_image( png_filename.c_str()
+ , runtime_image
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( png_out + "dynamic_image_test.png"
+ , view( runtime_image )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/png_write_test.cpp b/src/boost/libs/gil/test/extension/io/png_write_test.cpp
new file mode 100644
index 00000000..ad072ad7
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/png_write_test.cpp
@@ -0,0 +1,40 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE png_read_test_module
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+#define BOOST_GIL_IO_ENABLE_GRAY_ALPHA
+#define BOOST_FILESYSTEM_VERSION 3
+
+#include <boost/gil/extension/io/png.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+#include <iostream>
+
+#include "color_space_write_test.hpp"
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+using namespace boost::gil::detail;
+
+using tag_t = png_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_png_tests )
+
+BOOST_AUTO_TEST_CASE( rgb_color_space_write_test )
+{
+ color_space_write_test< tag_t >( png_out + "rgb_color_space_test.png"
+ , png_out + "bgr_color_space_test.png"
+ );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/pnm_old_test.cpp b/src/boost/libs/gil/test/extension/io/pnm_old_test.cpp
new file mode 100644
index 00000000..bca10951
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/pnm_old_test.cpp
@@ -0,0 +1,106 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE pnm_old_test_module
+#include <boost/test/unit_test.hpp>
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/pnm/old.hpp>
+
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( gil_io_pnm_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( old_read_dimensions_test )
+{
+ boost::gil::point_t dim = pnm_read_dimensions(pnm_filename);
+ BOOST_CHECK_EQUAL( dim.x, 256 );
+ BOOST_CHECK_EQUAL( dim.y, 256 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_image_test )
+{
+ {
+ rgb8_image_t img;
+ pnm_read_image( pnm_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 256 );
+ BOOST_CHECK_EQUAL( img.height(), 256 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ pnm_read_and_convert_image( pnm_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 256 );
+ BOOST_CHECK_EQUAL( img.height(), 256 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( old_read_view_test )
+{
+ {
+ rgb8_image_t img( 256, 256 );
+ pnm_read_view( pnm_filename, view( img ) );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 256, 256 );
+ pnm_read_and_convert_view( pnm_filename, view( img ) );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( old_write_view_test )
+{
+ {
+ string filename( pnm_out + "test5.pnm" );
+ gray8_image_t img( 256, 256);
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ pnm_write_view( filename, view( img ) );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+BOOST_AUTO_TEST_CASE( old_dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ gray1_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ pnm_read_image( pnm_filename.c_str()
+ , runtime_image
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ pnm_write_view( pnm_out + "old_dynamic_image_test.pnm"
+ , view( runtime_image )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/pnm_read_test.cpp b/src/boost/libs/gil/test/extension/io/pnm_read_test.cpp
new file mode 100644
index 00000000..2b66fead
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/pnm_read_test.cpp
@@ -0,0 +1,144 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE pnm_read_test_module
+
+#include <boost/gil/extension/io/pnm.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = pnm_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_pnm_tests )
+
+#ifdef BOOST_GIL_IO_USE_PNM_TEST_SUITE_IMAGES
+
+template< typename Image >
+void write( Image& img
+ , const string& file_name
+ )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( pnm_out + file_name
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+template< typename Image >
+void test_pnm_scanline_reader( string filename )
+{
+ test_scanline_reader<Image, pnm_tag>( string( pnm_in + filename ).c_str() );
+}
+
+BOOST_AUTO_TEST_CASE( read_header_test )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( pnm_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._type , pnm_image_type::color_asc_t::value );
+ BOOST_CHECK_EQUAL( backend._info._width , 256u );
+ BOOST_CHECK_EQUAL( backend._info._height , 256u );
+ BOOST_CHECK_EQUAL( backend._info._max_value, 255u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_reference_images_test )
+{
+ // p1.pnm
+ {
+ gray8_image_t img;
+
+ read_image( pnm_in + "p1.pnm", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 200u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 200u );
+
+ write( img, "p1.pnm" );
+
+ test_pnm_scanline_reader< gray8_image_t >( "p1.pnm" );
+ }
+
+ // p2.pnm
+ {
+ gray8_image_t img;
+
+ read_image( pnm_in + "p2.pnm", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 200u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 200u );
+
+ write( img, "p2.pnm" );
+
+ test_pnm_scanline_reader< gray8_image_t >( "p2.pnm" );
+ }
+
+ // p3.pnm
+ {
+ rgb8_image_t img;
+
+ read_image( pnm_in + "p3.pnm", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 256u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 256u );
+
+ write( img, "p3.pnm" );
+
+ test_pnm_scanline_reader< rgb8_image_t >( "p3.pnm" );
+ }
+
+ // p4.pnm
+ {
+ gray1_image_t img;
+
+ read_image( pnm_in + "p4.pnm", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 200u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 200u );
+
+ write( img, "p4.pnm" );
+
+ test_pnm_scanline_reader< gray1_image_t >( "p4.pnm" );
+ }
+
+ // p5.pnm
+ {
+ gray8_image_t img;
+
+ read_image( pnm_in + "p5.pnm", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 200u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 200u );
+
+ write( img, "p5.pnm" );
+
+ test_pnm_scanline_reader< gray8_image_t >( "p5.pnm" );
+ }
+
+ // p6.pnm
+ {
+ rgb8_image_t img;
+
+ read_image( pnm_in + "p6.pnm", img, tag_t() );
+ BOOST_CHECK_EQUAL( view( img ).width() , 256u );
+ BOOST_CHECK_EQUAL( view( img ).height(), 256u );
+
+ write( img, "p6.pnm" );
+
+ test_pnm_scanline_reader< rgb8_image_t >( "p6.pnm" );
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_PNM_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/pnm_test.cpp b/src/boost/libs/gil/test/extension/io/pnm_test.cpp
new file mode 100644
index 00000000..6346d7d5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/pnm_test.cpp
@@ -0,0 +1,329 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE pnm_test
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/pnm.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+using tag_t = pnm_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_pnm_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_using_string )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( pnm_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 256u );
+ BOOST_CHECK_EQUAL( backend._info._height, 256u );
+ }
+
+ {
+ ifstream in( pnm_filename.c_str(), ios::binary );
+
+ using backend_t = get_reader_backend<ifstream, tag_t>::type;
+
+ backend_t backend = read_image_info( in
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 256u );
+ BOOST_CHECK_EQUAL( backend._info._height, 256u );
+ }
+
+ {
+ FILE* file = fopen( pnm_filename.c_str(), "rb" );
+
+ using backend_t = get_reader_backend<FILE*, tag_t>::type;
+
+ backend_t backend = read_image_info( file
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 256u );
+ BOOST_CHECK_EQUAL( backend._info._height, 256u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_image( pnm_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 256u );
+ BOOST_CHECK_EQUAL( img.height(), 256u );
+ }
+
+ {
+ ifstream in( pnm_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 256u );
+ BOOST_CHECK_EQUAL( img.height(), 256u );
+ }
+
+ {
+ FILE* file = fopen( pnm_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 256u );
+ BOOST_CHECK_EQUAL( img.height(), 256u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_and_convert_image( pnm_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 256u );
+ BOOST_CHECK_EQUAL( img.height(), 256u );
+ }
+
+ {
+ ifstream in( pnm_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_and_convert_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 256u );
+ BOOST_CHECK_EQUAL( img.height(), 256u );
+ }
+
+ {
+ FILE* file = fopen( pnm_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_and_convert_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 256u );
+ BOOST_CHECK_EQUAL( img.height(), 256u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ {
+ rgb8_image_t img( 256, 256 );
+ read_view( pnm_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( pnm_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 256, 256 );
+ read_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( pnm_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 256, 256 );
+ read_view( file, view( img ), tag_t() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 256, 256 );
+ read_and_convert_view( pnm_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( pnm_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 256, 256 );
+ read_and_convert_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( pnm_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 256, 256 );
+
+ read_and_convert_view( file
+ , view( img )
+ , tag_t()
+ );
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+BOOST_AUTO_TEST_CASE( write_view_test )
+{
+ {
+ string filename( pnm_out + "write_test_string.pnm" );
+
+ write_view( filename
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( pnm_out + "write_test_ofstream.pnm" );
+
+ ofstream out( filename.c_str(), ios::out | ios::binary );
+
+ write_view( out
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( pnm_out + "write_test_file.pnm" );
+
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( pnm_out + "write_test_info.pnm" );
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ image_write_info< tag_t > info;
+
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , info
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( stream_test )
+{
+ // 1. Read an image.
+ ifstream in( pnm_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ // 2. Write image to in-memory buffer.
+ stringstream out_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( out_buffer, view( img ), tag_t() );
+
+ // 3. Copy in-memory buffer to another.
+ stringstream in_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ in_buffer << out_buffer.rdbuf();
+
+ // 4. Read in-memory buffer to gil image
+ rgb8_image_t dst;
+ read_image( in_buffer, dst, tag_t() );
+
+ // 5. Write out image.
+ string filename( pnm_out + "stream_test.pnm" );
+ ofstream out( filename.c_str(), ios_base::binary );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( out, view( dst ), tag_t() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test_2 )
+{
+ filebuf in_buf;
+ if( !in_buf.open( pnm_filename.c_str(), ios::in | ios::binary ) )
+ {
+ BOOST_CHECK( false );
+ }
+
+ istream in( &in_buf );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test )
+{
+ run_subimage_test< rgb8_image_t, tag_t >( pnm_filename
+ , point_t( 0, 0 )
+ , point_t( 50, 50 )
+ );
+
+ run_subimage_test< rgb8_image_t, tag_t >( pnm_filename
+ , point_t( 103, 103 )
+ , point_t( 50, 50 )
+ );
+}
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ gray1_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ read_image( pnm_filename.c_str()
+ , runtime_image
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( pnm_out + "dynamic_image_test.pnm"
+ , view( runtime_image )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/pnm_write_test.cpp b/src/boost/libs/gil/test/extension/io/pnm_write_test.cpp
new file mode 100644
index 00000000..7f09ff5a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/pnm_write_test.cpp
@@ -0,0 +1,73 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE pnm_write_test_module
+
+#include <boost/gil/extension/io/pnm.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "color_space_write_test.hpp"
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = pnm_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_pnm_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_test )
+{
+ mandel_view< rgb8_pixel_t >::type v = create_mandel_view( 200, 200
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ );
+
+ // test writing all supported image types
+ {
+ using gray1_image_t = bit_aligned_image1_type<1, gray_layout_t>::type;
+ gray1_image_t dst( 200, 200 );
+
+ copy_and_convert_pixels( v, view( dst ));
+
+ write_view( pnm_out + "p4_write_test.pnm"
+ , view( dst )
+ , pnm_tag()
+ );
+ }
+
+ {
+ gray8_image_t dst( 200, 200 );
+
+ copy_and_convert_pixels( v, view( dst ));
+
+ write_view( pnm_out + "p5_write_test.pnm"
+ , view( dst )
+ , pnm_tag()
+ );
+ }
+
+ {
+ write_view( pnm_out + "p6_write_test.pnm"
+ , v
+ , pnm_tag()
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+BOOST_AUTO_TEST_CASE( rgb_color_space_write_test )
+{
+ color_space_write_test< pnm_tag >( pnm_out + "rgb_color_space_test.pnm"
+ , pnm_out + "bgr_color_space_test.pnm"
+ );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/raw_test.cpp b/src/boost/libs/gil/test/extension/io/raw_test.cpp
new file mode 100644
index 00000000..286f10ea
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/raw_test.cpp
@@ -0,0 +1,128 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE raw_test
+#define BOOST_FILESYSTEM_VERSION 3
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/raw.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+namespace fs = boost::filesystem;
+
+using tag_t = raw_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_raw_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_using_string )
+{
+ {
+ /// raw_tag reader's can only constructed with char*, std::string, and LibRaw object
+
+ using backend_t = get_reader_backend<char const*, tag_t>::type;
+
+ backend_t b = make_reader_backend(raw_filename.c_str(),
+ image_read_settings<raw_tag>());
+
+ backend_t backend = read_image_info(raw_filename, tag_t());
+
+ BOOST_CHECK_EQUAL( backend._info._width , 2176 );
+ BOOST_CHECK_EQUAL( backend._info._height, 1448 );
+ }
+
+ {
+ fs::path my_path( raw_filename );
+
+ using backend_t = get_reader_backend<fs::path, tag_t>::type;
+
+ backend_t backend = read_image_info(my_path, tag_t());
+
+ BOOST_CHECK_EQUAL( backend._info._width , 2176 );
+ BOOST_CHECK_EQUAL( backend._info._height, 1448 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_image( raw_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 2176 );
+ BOOST_CHECK_EQUAL( img.height(), 1448 );
+ }
+
+ {
+ fs::path my_path( raw_filename );
+
+ rgb8_image_t img;
+ read_image( my_path, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 2176 );
+ BOOST_CHECK_EQUAL( img.height(), 1448 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ rgb8_image_t img;
+ read_and_convert_image( raw_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 2176 );
+ BOOST_CHECK_EQUAL( img.height(), 1448 );
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ rgb8_image_t img( 2176, 1448 );
+ read_view( raw_filename, view( img ), tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ rgb8_image_t img( 2176, 1448 );
+ read_and_convert_view( raw_filename, view( img ), tag_t() );
+}
+
+// BOOST_AUTO_TEST_CASE( subimage_test )
+// {
+// run_subimage_test<rgb8_image_t, tag_t>(raw_filename, point_t(0, 0), point_t(127, 1));
+// run_subimage_test<rgb8_image_t, tag_t>(raw_filename, point_t(39, 7), point_t(50, 50));
+// }
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ read_image(raw_filename.c_str(), runtime_image, tag_t());
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/scanline_read_test.hpp b/src/boost/libs/gil/test/extension/io/scanline_read_test.hpp
new file mode 100644
index 00000000..ae10c7f1
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/scanline_read_test.hpp
@@ -0,0 +1,61 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_IO_TEST_SCANLINE_READ_TEST_HPP
+#define BOOST_GIL_IO_TEST_SCANLINE_READ_TEST_HPP
+
+#include <boost/gil.hpp>
+
+#include "cmp_view.hpp"
+
+template< typename Image
+ , typename FormatTag
+ >
+void test_scanline_reader( const char* file_name )
+{
+ using namespace boost::gil;
+
+ // read image using scanline_read_iterator
+ using reader_t = scanline_reader
+ <
+ typename get_read_device<char const*, FormatTag>::type,
+ FormatTag
+ >;
+
+ reader_t reader = make_scanline_reader( file_name, FormatTag() );
+
+ Image dst( reader._info._width, reader._info._height );
+
+ using iterator_t = typename reader_t::iterator_t;
+
+ iterator_t it = reader.begin();
+ iterator_t end = reader.end();
+
+ for( int row = 0; it != end; ++it, ++row )
+ {
+ copy_pixels( interleaved_view( reader._info._width
+ , 1
+ , ( typename Image::view_t::x_iterator ) *it
+ , reader._scanline_length
+ )
+ , subimage_view( view( dst )
+ , 0
+ , row
+ , reader._info._width
+ , 1
+ )
+ );
+ }
+
+ //compare
+ Image img;
+ read_image( file_name, img, FormatTag() );
+
+ cmp_view( view( dst ), view( img ) );
+}
+
+#endif // BOOST_GIL_IO_TEST_SCANLINE_READ_TEST_HPP
diff --git a/src/boost/libs/gil/test/extension/io/subimage_test.hpp b/src/boost/libs/gil/test/extension/io/subimage_test.hpp
new file mode 100644
index 00000000..0fe8ed2a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/subimage_test.hpp
@@ -0,0 +1,51 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_IO_TEST_SUBIMAGE_TEST_HPP
+#define BOOST_GIL_IO_TEST_SUBIMAGE_TEST_HPP
+
+#include <boost/gil.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+template< typename Image
+ , typename Format
+ >
+void run_subimage_test( string filename
+ , const point_t& top_left
+ , const point_t& dimension
+ )
+{
+ Image original, subimage;
+
+ read_image( filename
+ , original
+ , Format()
+ );
+
+ image_read_settings< Format > settings( top_left
+ , dimension
+ );
+
+
+ read_image( filename
+ , subimage
+ , settings
+ );
+
+ BOOST_CHECK( equal_pixels( const_view( subimage )
+ , subimage_view( const_view( original )
+ , top_left
+ , dimension
+ )
+ )
+ );
+}
+
+#endif // BOOST_GIL_IO_TEST_SUBIMAGE_TEST_HPP
diff --git a/src/boost/libs/gil/test/extension/io/targa_old_test.cpp b/src/boost/libs/gil/test/extension/io/targa_old_test.cpp
new file mode 100644
index 00000000..444828c5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/targa_old_test.cpp
@@ -0,0 +1,101 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE targa_old_test_module
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/targa/old.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( gil_io_targa_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( old_read_dimensions_test )
+{
+ boost::gil::point_t dim = targa_read_dimensions(targa_filename);
+ BOOST_CHECK_EQUAL( dim.x, 124 );
+ BOOST_CHECK_EQUAL( dim.y, 124 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_image_test )
+{
+ rgb8_image_t img;
+ targa_read_image( targa_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_image_test )
+{
+ rgb8_image_t img;
+ targa_read_and_convert_image( targa_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_view_test )
+{
+ rgb8_image_t img( 124, 124 );
+ targa_read_view( targa_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_view_test )
+{
+ rgb8_image_t img( 124, 124 );
+ targa_read_and_convert_view( targa_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_write_view_test )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ targa_write_view( targa_out + "old_write_view_test.tga"
+ , create_mandel_view( 124, 124
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( old_dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ targa_read_image( targa_filename.c_str()
+ , runtime_image
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ targa_write_view( targa_out + "old_dynamic_image_test.tga"
+ , view( runtime_image )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/targa_read_test.cpp b/src/boost/libs/gil/test/extension/io/targa_read_test.cpp
new file mode 100644
index 00000000..c042db78
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/targa_read_test.cpp
@@ -0,0 +1,244 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE targa_read_test_module
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/targa.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = targa_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_targa_tests )
+
+#ifdef BOOST_GIL_IO_USE_TARGA_FILEFORMAT_TEST_SUITE_IMAGES
+
+template< typename Image >
+void test_targa_scanline_reader( string filename )
+{
+ test_scanline_reader<Image, targa_tag>( string( targa_in + filename ).c_str() );
+}
+
+template< typename Image >
+void write( Image& img
+ , const string& file_name
+ )
+{
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( targa_out + file_name
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( read_header_test )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( targa_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._header_size , 18 );
+ BOOST_CHECK_EQUAL( backend._info._offset , 18 );
+ BOOST_CHECK_EQUAL( backend._info._color_map_type , 0 );
+ BOOST_CHECK_EQUAL( backend._info._image_type , 10 );
+ BOOST_CHECK_EQUAL( backend._info._color_map_start , 0 );
+ BOOST_CHECK_EQUAL( backend._info._color_map_length, 0 );
+ BOOST_CHECK_EQUAL( backend._info._color_map_depth , 0 );
+ BOOST_CHECK_EQUAL( backend._info._x_origin , 0 );
+ BOOST_CHECK_EQUAL( backend._info._y_origin , 0 );
+ BOOST_CHECK_EQUAL( backend._info._width , 124 );
+ BOOST_CHECK_EQUAL( backend._info._height , 124 );
+ BOOST_CHECK_EQUAL( backend._info._bits_per_pixel , 24 );
+ BOOST_CHECK_EQUAL( backend._info._descriptor , 0 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_reference_images_test )
+{
+ // 24BPP_compressed.tga
+ {
+ rgb8_image_t img;
+ read_image( targa_in + "24BPP_compressed.tga", img, tag_t() );
+
+ typename rgb8_image_t::x_coord_t width = view( img ).width();
+ typename rgb8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgb8_pixel_t(248, 0, 248) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgb8_pixel_t(0, 0, 248) );
+ BOOST_CHECK( view( img )(0, height-1) == rgb8_pixel_t(248, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgb8_pixel_t(248, 0, 248) );
+
+ write( img, "24BPP_compressed_out.tga" );
+ }
+
+ // 24BPP_uncompressed.tga
+ {
+ rgb8_image_t img;
+ read_image( targa_in + "24BPP_uncompressed.tga", img, tag_t() );
+
+ typename rgb8_image_t::x_coord_t width = view( img ).width();
+ typename rgb8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgb8_pixel_t(248, 0, 248) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgb8_pixel_t(0, 0, 248) );
+ BOOST_CHECK( view( img )(0, height-1) == rgb8_pixel_t(248, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgb8_pixel_t(248, 0, 248) );
+
+ write( img, "24BPP_uncompressed_out.tga" );
+
+ test_targa_scanline_reader< bgr8_image_t >( "24BPP_uncompressed.tga" );
+ }
+
+ // 32BPP_compressed.tga
+ {
+ rgba8_image_t img;
+ read_image( targa_in + "32BPP_compressed.tga", img, tag_t() );
+
+ typename rgba8_image_t::x_coord_t width = view( img ).width();
+ typename rgba8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgba8_pixel_t(248, 0, 248, 255) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgba8_pixel_t(0, 0, 248, 255) );
+ BOOST_CHECK( view( img )(0, height-1) == rgba8_pixel_t(0, 0, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgba8_pixel_t(248, 0, 248, 255) );
+
+ write( img, "32BPP_compressed_out.tga" );
+ }
+
+ // 32BPP_uncompressed.tga
+ {
+ rgba8_image_t img;
+ read_image( targa_in + "32BPP_uncompressed.tga", img, tag_t() );
+
+ typename rgba8_image_t::x_coord_t width = view( img ).width();
+ typename rgba8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgba8_pixel_t(248, 0, 248, 255) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgba8_pixel_t(0, 0, 248, 255) );
+ BOOST_CHECK( view( img )(0, height-1) == rgba8_pixel_t(0, 0, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgba8_pixel_t(248, 0, 248, 255) );
+
+ write( img, "32BPP_uncompressed_out.tga" );
+
+ test_targa_scanline_reader< bgra8_image_t >( "32BPP_uncompressed.tga" );
+ }
+
+ // 24BPP_compressed_ul_origin.tga
+ {
+ rgb8_image_t img;
+ read_image( targa_in + "24BPP_compressed_ul_origin.tga", img, tag_t() );
+
+ typename rgb8_image_t::x_coord_t width = view( img ).width();
+ typename rgb8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgb8_pixel_t(248, 0, 248) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgb8_pixel_t(0, 0, 248) );
+ BOOST_CHECK( view( img )(0, height-1) == rgb8_pixel_t(248, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgb8_pixel_t(248, 0, 248) );
+
+ write( img, "24BPP_compressed_ul_origin_out.tga" );
+ }
+
+ // 24BPP_uncompressed_ul_origin.tga
+ {
+ rgb8_image_t img;
+ read_image( targa_in + "24BPP_uncompressed_ul_origin.tga", img, tag_t() );
+
+ typename rgb8_image_t::x_coord_t width = view( img ).width();
+ typename rgb8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgb8_pixel_t(248, 0, 248) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgb8_pixel_t(0, 0, 248) );
+ BOOST_CHECK( view( img )(0, height-1) == rgb8_pixel_t(248, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgb8_pixel_t(248, 0, 248) );
+
+ write( img, "24BPP_uncompressed_ul_origin_out.tga" );
+ }
+
+ // 32BPP_compressed_ul_origin.tga
+ {
+ rgba8_image_t img;
+ read_image( targa_in + "32BPP_compressed_ul_origin.tga", img, tag_t() );
+
+ typename rgba8_image_t::x_coord_t width = view( img ).width();
+ typename rgba8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgba8_pixel_t(248, 0, 248, 255) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgba8_pixel_t(0, 0, 248, 255) );
+ BOOST_CHECK( view( img )(0, height-1) == rgba8_pixel_t(0, 0, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgba8_pixel_t(248, 0, 248, 255) );
+
+ write( img, "32BPP_compressed_ul_origin_out.tga" );
+ }
+
+ // 32BPP_uncompressed_ul_origin.tga
+ {
+ rgba8_image_t img;
+ read_image( targa_in + "32BPP_uncompressed_ul_origin.tga", img, tag_t() );
+
+ typename rgba8_image_t::x_coord_t width = view( img ).width();
+ typename rgba8_image_t::y_coord_t height = view( img ).height();
+
+ BOOST_CHECK_EQUAL( width , 124 );
+ BOOST_CHECK_EQUAL( height, 124 );
+ BOOST_CHECK( view( img )(0, 0) == rgba8_pixel_t(248, 0, 248, 255) );
+ BOOST_CHECK( view( img )(width-1, 0) == rgba8_pixel_t(0, 0, 248, 255) );
+ BOOST_CHECK( view( img )(0, height-1) == rgba8_pixel_t(0, 0, 0, 0) );
+ BOOST_CHECK( view( img )(width-1, height-1) == rgba8_pixel_t(248, 0, 248, 255) );
+
+ write( img, "32BPP_uncompressed_ul_origin_out.tga" );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( partial_image_test )
+{
+ const std::string filename( targa_in + "24BPP_compressed.tga" );
+
+ {
+ rgb8_image_t img;
+ read_image( filename
+ , img
+ , image_read_settings< targa_tag >( point_t( 0, 0 ), point_t( 50, 50 ) )
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( targa_out + "targa_partial.tga"
+ , view( img )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_TARGA_FILEFORMAT_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/targa_test.cpp b/src/boost/libs/gil/test/extension/io/targa_test.cpp
new file mode 100644
index 00000000..29176f65
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/targa_test.cpp
@@ -0,0 +1,332 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE targa_test
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/targa.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+namespace fs = boost::filesystem;
+
+using tag_t = targa_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_targa_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_using_string )
+{
+
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( targa_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 124 );
+ BOOST_CHECK_EQUAL( backend._info._height, 124 );
+ }
+
+ {
+ ifstream in( targa_filename.c_str(), ios::binary );
+
+ using backend_t = get_reader_backend<ifstream, tag_t>::type;
+
+ backend_t backend = read_image_info( in
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 124 );
+ BOOST_CHECK_EQUAL( backend._info._height, 124 );
+ }
+
+ {
+ FILE* file = fopen( targa_filename.c_str(), "rb" );
+
+ using backend_t = get_reader_backend<FILE*, tag_t>::type;
+
+ backend_t backend = read_image_info( file
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 124 );
+ BOOST_CHECK_EQUAL( backend._info._height, 124 );
+ }
+
+ {
+ fs::path my_path( targa_filename );
+
+ using backend_t = get_reader_backend<fs::path, tag_t>::type;
+
+ backend_t backend = read_image_info( my_path
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 124 );
+ BOOST_CHECK_EQUAL( backend._info._height, 124 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_image( targa_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+ }
+
+ {
+ ifstream in( targa_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+ }
+
+ {
+ FILE* file = fopen( targa_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_and_convert_image( targa_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+ }
+
+ {
+ ifstream in( targa_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_and_convert_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+ }
+
+ {
+ FILE* file = fopen( targa_filename.c_str(), "rb" );
+
+ rgb8_image_t img;
+ read_and_convert_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 124 );
+ BOOST_CHECK_EQUAL( img.height(), 124 );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ {
+ rgb8_image_t img( 124, 124 );
+ read_view( targa_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( targa_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 124, 124 );
+ read_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( targa_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 124, 124 );
+ read_view( file, view( img ), tag_t() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 124, 124 );
+ read_and_convert_view( targa_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( targa_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 124, 124 );
+ read_and_convert_view( in, view( img ), tag_t() );
+ }
+
+ {
+ FILE* file = fopen( targa_filename.c_str(), "rb" );
+
+ rgb8_image_t img( 124, 124 );
+ read_and_convert_view( file
+ , view( img )
+ , tag_t()
+ );
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_view_test )
+{
+ {
+ string filename( targa_out + "write_test_ofstream.tga" );
+
+ ofstream out( filename.c_str(), ios::binary );
+
+ write_view( out
+ , create_mandel_view( 124, 124
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( targa_out + "write_test_file.tga" );
+
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 124, 124
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( targa_out + "write_test_info.tga" );
+
+ image_write_info< tag_t > info;
+
+ FILE* file = fopen( filename.c_str(), "wb" );
+
+ write_view( file
+ , create_mandel_view( 124, 124
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , info
+ );
+ }
+}
+#endif //BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+BOOST_AUTO_TEST_CASE( stream_test )
+{
+ // 1. Read an image.
+ ifstream in( targa_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+
+ // 2. Write image to in-memory buffer.
+ stringstream out_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( out_buffer, view( img ), tag_t() );
+
+ // 3. Copy in-memory buffer to another.
+ stringstream in_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ in_buffer << out_buffer.rdbuf();
+
+ // 4. Read in-memory buffer to gil image
+ rgb8_image_t dst;
+ read_image( in_buffer, dst, tag_t() );
+
+ // 5. Write out image.
+ string filename( targa_out + "stream_test.tga" );
+ ofstream out( filename.c_str(), ios_base::binary );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( out, view( dst ), tag_t() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test_2 )
+{
+ filebuf in_buf;
+ if( !in_buf.open( targa_filename.c_str(), ios::in | ios::binary ) )
+ {
+ BOOST_CHECK( false );
+ }
+
+ istream in( &in_buf );
+
+ rgb8_image_t img;
+ read_image( in, img, tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test )
+{
+ run_subimage_test< rgb8_image_t, tag_t >( targa_filename
+ , point_t( 0, 0 )
+ , point_t( 50, 50 )
+ );
+
+ // not working
+ //run_subimage_test< rgb8_image_t, tag_t >( targa_filename
+ // , point_t( 39, 7 )
+ // , point_t( 50, 50 )
+ // );
+}
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ rgba8_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ read_image( targa_filename.c_str()
+ , runtime_image
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( targa_out + "dynamic_image_test.tga"
+ , view( runtime_image )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/targa_write_test.cpp b/src/boost/libs/gil/test/extension/io/targa_write_test.cpp
new file mode 100644
index 00000000..e9c78c4a
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/targa_write_test.cpp
@@ -0,0 +1,60 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE targa_write_test_module
+
+#include <boost/gil.hpp>
+#include <boost/gil/io/typedefs.hpp>
+#include <boost/gil/extension/io/targa.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "color_space_write_test.hpp"
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = targa_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_targa_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_test )
+{
+ // test writing all supported image types
+ {
+ write_view( targa_out + "rgb8_test.tga"
+ , create_mandel_view( 200, 200
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ write_view( targa_out + "rgba8_test.tga"
+ , create_mandel_view( 200, 200
+ , rgba8_pixel_t( 0, 0, 255, 0 )
+ , rgba8_pixel_t( 0, 255, 0, 0 )
+ )
+ , tag_t()
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+BOOST_AUTO_TEST_CASE( rgb_color_space_write_test )
+{
+ color_space_write_test< tag_t >( targa_out + "rgb_color_space_test.tga"
+ , targa_out + "bgr_color_space_test.tga"
+ );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/test.cpp b/src/boost/libs/gil/test/extension/io/test.cpp
new file mode 100644
index 00000000..d36a87c2
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/test.cpp
@@ -0,0 +1,9 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MAIN
+#include <boost/test/unit_test.hpp>
diff --git a/src/boost/libs/gil/test/extension/io/tiff_file_format_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_file_format_test.cpp
new file mode 100644
index 00000000..8f47761c
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_file_format_test.cpp
@@ -0,0 +1,954 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_file_format_test_module
+
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+#include "scanline_read_test.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = tiff_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_LIBTIFF_TEST_SUITE_IMAGES
+
+template< typename Image >
+void test_tiff_scanline_reader( string filename )
+{
+ test_scanline_reader<Image, tag_t>( filename.c_str() );
+}
+
+// 73x43 2-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( two_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-02.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<2, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test4.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-04.tif 73x43 4-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( four_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-04.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<4, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test5.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-06.tif 73x43 6-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( six_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-06.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<6, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test6.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-08.tif 73x43 8-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( eight_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-08.tif" );
+
+ {
+ using image_t = gray8_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test7.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-10.tif 73x43 10-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( ten_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-10.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<10, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test8.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-12.tif 73x43 12-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( twelve_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-12.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<12, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test9.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-14.tif 73x43 14-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( fourteen_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-14.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<14, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test10.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-16.tif 73x43 16-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( sixteen_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-16.tif" );
+
+ {
+ using image_t = gray16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test11.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-24.tif 73x43 24-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( twentyfour_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-24.tif" );
+
+ {
+ using image_t = bit_aligned_image1_type<24, gray_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test12.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-minisblack-32.tif 73x43 32-bit minisblack gray image
+BOOST_AUTO_TEST_CASE( thirtytwo_bit_minisblack_gray_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-minisblack-32.tif" );
+
+ {
+ using image_t = gray32_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test13.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-palette-02.tif 73x43 4-entry colormapped image
+BOOST_AUTO_TEST_CASE( four_entry_colormapped_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-palette-02.tif" );
+
+ {
+ using image_t = rgb16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test14.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-palette-04.tif 73x43 16-entry colormapped image
+BOOST_AUTO_TEST_CASE( sixteen_entry_colormapped_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-palette-04.tif" );
+
+ {
+ using image_t = rgb16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test15.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-palette-08.tif 73x43 256-entry colormapped image
+BOOST_AUTO_TEST_CASE( twohundred_twenty_five_entry_colormapped_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-palette-08.tif" );
+
+ {
+ using image_t = rgb16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test16.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-palette-16.tif 73x43 65536-entry colormapped image
+BOOST_AUTO_TEST_CASE( sixtyfive_thousand_entry_colormapped_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-palette-16.tif" );
+
+ {
+ using image_t = rgb16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test17.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-02.tif 73x43 2-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( two_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-02.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<2, 2, 2, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test18.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-04.tif 73x43 4-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( four_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-04.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<4, 4, 4, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test19.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-08.tif 73x43 8-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( eight_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-08.tif" );
+
+ {
+ using image_t = rgb8_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test20.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-10.tif 73x43 10-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( ten_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-10.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<10, 10, 10, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test21.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-12.tif 73x43 12-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( twelve_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-12.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<12, 12, 12, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test22.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-14.tif 73x43 14-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( fourteen_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-14.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<14, 14, 14, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test23.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-16.tif 73x43 16-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( sixteen_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-16.tif" );
+
+ {
+ using image_t = rgb16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test24.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-24.tif 73x43 24-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( twenty_four_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-24.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<24, 24, 24, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test25.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-contig-32.tif 73x43 32-bit contiguous RGB image
+BOOST_AUTO_TEST_CASE( thirty_two_bit_contiguous_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-contig-32.tif" );
+
+ {
+ using image_t = rgb32_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test26.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-02.tif 73x43 2-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( two_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-02.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<2, 2, 2, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test27.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-04.tif 73x43 4-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( four_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-04.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<4, 4, 4, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test28.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-08.tif 73x43 8-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( eight_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-08.tif" );
+
+ {
+ using image_t = rgb8_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test29.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-10.tif 73x43 10-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( ten_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-10.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<10, 10, 10, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test30.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-12.tif 73x43 12-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( twelve_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-12.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<12, 12, 12, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test31.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-14.tif 73x43 14-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( fourteen_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-14.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<14, 14, 14, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test32.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-16.tif 73x43 16-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( sixteen_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-16.tif" );
+
+ {
+ using image_t = rgb16_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test33.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-24.tif 73x43 24-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( twenty_four_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-24.tif" );
+
+ {
+ using image_t = bit_aligned_image3_type<24, 24, 24, rgb_layout_t>::type;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test34.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-rgb-planar-32.tif 73x43 32-bit seperated RGB image
+BOOST_AUTO_TEST_CASE( thirty_two_bit_seperated_RGB_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-rgb-planar-32.tif" );
+
+ {
+ using image_t = rgb32_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test35.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-separated-contig-08.tif 73x43 8-bit contiguous CMYK image
+BOOST_AUTO_TEST_CASE( eight_bit_contiguous_CMYK_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-separated-contig-08.tif" );
+
+ {
+ using image_t = cmyk8_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test36.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-separated-contig-16.tif 73x43 16-bit contiguous CMYK image
+BOOST_AUTO_TEST_CASE( sixteen_bit_contiguous_CMYK_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-separated-contig-16.tif" );
+
+ {
+ using image_t = cmyk16_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test37.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-separated-planar-08.tif 73x43 8-bit separated CMYK image
+BOOST_AUTO_TEST_CASE( eight_bit_separated_CMYK_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-separated-planar-08.tif" );
+
+ {
+ using image_t = cmyk8_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test38.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+// flower-separated-planar-16.tif 73x43 16-bit separated CMYK image
+BOOST_AUTO_TEST_CASE( sixteen_bit_separated_CMYK_image_test )
+{
+ std::string filename( tiff_in + "libtiffpic/depth/flower-separated-planar-16.tif" );
+
+ {
+ using image_t = cmyk16_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test39.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_LIBTIFF_TEST_SUITE_IMAGES
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_CASE( tiger_separated_strip_contig_08 )
+{
+ std::string filename( tiff_in_GM + "tiger-separated-strip-contig-08.tif" );
+
+ {
+ using image_t = cmyk8_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test40.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+BOOST_AUTO_TEST_CASE( tiger_separated_strip_contig_16 )
+{
+ std::string filename( tiff_in_GM + "tiger-separated-strip-contig-16.tif" );
+
+ {
+ using image_t = cmyk16_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test41.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+BOOST_AUTO_TEST_CASE( tiger_separated_strip_planar_08 )
+{
+ std::string filename( tiff_in_GM + "tiger-separated-strip-planar-08.tif" );
+
+ {
+ using image_t = cmyk8_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test42.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+BOOST_AUTO_TEST_CASE( tiger_separated_strip_planar_16 )
+{
+ std::string filename( tiff_in_GM + "tiger-separated-strip-planar-16.tif" );
+
+ {
+ using image_t = cmyk16_planar_image_t;
+ image_t img;
+
+ read_image( filename
+ , img
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "test43.tif"
+ , view( img )
+ , tiff_tag()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_old_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_old_test.cpp
new file mode 100644
index 00000000..e8a35a27
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_old_test.cpp
@@ -0,0 +1,91 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_old_test_module
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/tiff/old.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+
+// This test file will only test the old library's interface.
+// It's more of a compile time test than a runtime test.
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( old_read_dimensions_test )
+{
+ boost::gil::point_t dim = tiff_read_dimensions(tiff_filename);
+ BOOST_CHECK_EQUAL( dim.x, 1000 );
+ BOOST_CHECK_EQUAL( dim.y, 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_image_test )
+{
+ rgba8_image_t img;
+ tiff_read_image( tiff_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_image_test )
+{
+ rgb8_image_t img;
+ tiff_read_and_convert_image( tiff_filename, img );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000 );
+ BOOST_CHECK_EQUAL( img.height(), 600 );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_view_test )
+{
+ rgba8_image_t img( 1000, 600 );
+ tiff_read_view( tiff_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_read_and_convert_view_test )
+{
+ rgb8_image_t img( 1000, 600 );
+ tiff_read_and_convert_view( tiff_filename, view( img ) );
+}
+
+BOOST_AUTO_TEST_CASE( old_dynamic_image_test )
+{
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgba8_image_t,
+ gray1_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ tiff_read_image( tiff_filename.c_str()
+ , runtime_image
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ tiff_write_view( tiff_out + "old_dynamic_image_test.tif"
+ , view( runtime_image )
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_subimage_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_subimage_test.cpp
new file mode 100644
index 00000000..cf30e0f6
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_subimage_test.cpp
@@ -0,0 +1,120 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_subimage_test_module
+
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+#include <sstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+using tag_t = tiff_tag;
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/stringize.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#define GENERATE_SUBIMAGE_TEST(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(subimage_test,data),n), bit_bit_aligned) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename_strip( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string filename_tile ( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-tile-" ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename_strip = filename_strip + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ filename_tile = filename_tile + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ bit_aligned_image1_type< n, gray_layout_t >::type img1, img2, img3; \
+ point_t top_left( 10, 10 ); \
+ point_t dim( 32, 32 ); \
+ image_read_settings< tag_t > settings( top_left, dim ); \
+ read_image( filename_strip, img1, settings ); \
+ read_image( filename_tile, img2 , settings ); \
+ read_image( filename_strip, img3, tag_t() ); \
+ BOOST_CHECK( equal_pixels( const_view( img1 ), const_view( img2 ))); \
+ BOOST_CHECK( equal_pixels( const_view( img1 ), subimage_view( view( img3 ), top_left, dim ))); \
+ } \
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO( 1, 8, GENERATE_SUBIMAGE_TEST, minisblack )
+BOOST_PP_REPEAT_FROM_TO( 9, 16, GENERATE_SUBIMAGE_TEST, minisblack )
+BOOST_PP_REPEAT_FROM_TO( 17, 27, GENERATE_SUBIMAGE_TEST, minisblack )
+// @todo: there is a bug somewhere when the number of bits is 27 up to 31.
+
+
+BOOST_AUTO_TEST_CASE( subimage_test_8 )
+{
+ gray8_image_t img1, img2, img3;
+
+ point_t top_left( 10, 10 );
+ point_t dim( 32, 32 );
+
+ image_read_settings< tag_t > settings( top_left, dim );
+
+ read_image( tiff_in_GM + "tiger-minisblack-strip-08.tif", img1, settings );
+ read_image( tiff_in_GM + "tiger-minisblack-tile-08.tif" , img2, settings );
+ read_image( tiff_in_GM + "tiger-minisblack-strip-08.tif", img3, tag_t() );
+
+ BOOST_CHECK( equal_pixels( const_view( img1 ), const_view( img2 )));
+ BOOST_CHECK( equal_pixels( const_view( img1 ), subimage_view( view( img3 ), top_left, dim )));
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test_16 )
+{
+ gray16_image_t img1, img2, img3;
+
+ point_t top_left( 10, 10 );
+ point_t dim( 32, 32 );
+
+ image_read_settings< tag_t > settings( top_left, dim );
+
+ read_image( tiff_in_GM + "tiger-minisblack-strip-16.tif", img1, settings );
+ read_image( tiff_in_GM + "tiger-minisblack-tile-16.tif" , img2, settings );
+ read_image( tiff_in_GM + "tiger-minisblack-strip-16.tif", img3, tag_t() );
+
+ BOOST_CHECK( equal_pixels( const_view( img1 ), const_view( img2 )));
+ BOOST_CHECK( equal_pixels( const_view( img1 ), subimage_view( view( img3 ), top_left, dim )));
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test_32 )
+{
+ using gray32_pixel_t = pixel<unsigned int, gray_layout_t>;
+ image< gray32_pixel_t, false > img1, img2, img3;
+
+ point_t top_left( 10, 10 );
+ point_t dim( 32, 32 );
+
+ image_read_settings< tag_t > settings( top_left, dim );
+
+ read_image( tiff_in_GM + "tiger-minisblack-strip-32.tif", img1, settings );
+ read_image( tiff_in_GM + "tiger-minisblack-tile-32.tif" , img2, settings );
+ read_image( tiff_in_GM + "tiger-minisblack-strip-32.tif", img3, tag_t() );
+
+ BOOST_CHECK( equal_pixels( const_view( img1 ), const_view( img2 )));
+ BOOST_CHECK( equal_pixels( const_view( img1 ), subimage_view( view( img3 ), top_left, dim )));
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_test.cpp
new file mode 100644
index 00000000..62d6b9af
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_test.cpp
@@ -0,0 +1,364 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_TEST_MODULE tiff_test
+#define BOOST_FILESYSTEM_VERSION 3
+#define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
+
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/mp11.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <fstream>
+#include <sstream>
+
+#include "mandel_view.hpp"
+#include "paths.hpp"
+#include "subimage_test.hpp"
+
+// This test file will only test the library's interface.
+// It's more of a compile time test than a runtime test.
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+namespace fs = boost::filesystem;
+
+using tag_t = tiff_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_image_info_test )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( tiff_filename
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ ifstream in( tiff_filename.c_str(), ios::binary );
+
+ using backend_t = get_reader_backend<ifstream, tag_t>::type;
+
+ backend_t backend = read_image_info( in
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ TIFF* file = TIFFOpen( tiff_filename.c_str(), "r" );
+
+ using backend_t = get_reader_backend<FILE*, tag_t>::type;
+
+ backend_t backend = read_image_info( file
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+
+ {
+ fs::path my_path( tiff_filename );
+
+ using backend_t = get_reader_backend<fs::path, tag_t>::type;
+
+ backend_t backend = read_image_info( my_path
+ , tag_t()
+ );
+
+
+ BOOST_CHECK_EQUAL( backend._info._width , 1000u );
+ BOOST_CHECK_EQUAL( backend._info._height, 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_image_test )
+{
+ {
+ rgba8_image_t img;
+ read_image( tiff_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+
+ ifstream in( tiff_filename.c_str(), ios::binary );
+
+ rgba8_image_t img;
+ read_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ TIFF* file = TIFFOpen( tiff_filename.c_str(), "r" );
+
+ rgba8_image_t img;
+ read_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test )
+{
+ {
+ rgb8_image_t img;
+ read_and_convert_image( tiff_filename, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ ifstream in( tiff_filename.c_str(), ios::binary );
+
+ rgb8_image_t img;
+ read_and_convert_image( in, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ TIFF* file = TIFFOpen( tiff_filename.c_str(), "r" );
+
+ rgb8_image_t img;
+ read_and_convert_image( file, img, tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_image_test_2 )
+{
+ gray8_image_t img;
+ read_and_convert_image( tiff_filename, img, tag_t() );
+
+ rgba8_image_t img2;
+ read_image( tiff_filename, img2, tag_t() );
+
+
+ BOOST_CHECK( equal_pixels( const_view( img )
+ , color_converted_view< gray8_pixel_t>( const_view( img2 ) )
+ )
+ );
+}
+
+BOOST_AUTO_TEST_CASE( read_view_test )
+{
+ {
+ rgba8_image_t img( 1000, 600 );
+ read_view( tiff_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( tiff_filename.c_str(), ios::binary );
+
+ rgba8_image_t img( 1000, 600 );
+ read_view( in, view( img ), tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ TIFF* file = TIFFOpen( tiff_filename.c_str(), "r" );
+
+ rgba8_image_t img( 1000, 600 );
+ read_view( file, view( img ), tag_t() );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( read_and_convert_view_test )
+{
+ {
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( tiff_filename, view( img ), tag_t() );
+ }
+
+ {
+ ifstream in( tiff_filename.c_str(), ios::binary );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( in, view( img ), tag_t() );
+
+ BOOST_CHECK_EQUAL( img.width() , 1000u );
+ BOOST_CHECK_EQUAL( img.height(), 600u );
+ }
+
+ {
+ TIFF* file = TIFFOpen( tiff_filename.c_str(), "r" );
+
+ rgb8_image_t img( 1000, 600 );
+ read_and_convert_view( file, view( img ), tag_t() );
+ }
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+BOOST_AUTO_TEST_CASE( write_view_test )
+{
+ {
+ string filename( tiff_out + "write_test_string.tif" );
+
+ write_view( filename
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( tiff_out + "write_test_ofstream.tif" );
+ ofstream out( filename.c_str(), ios_base::binary );
+
+ write_view( out
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( tiff_out + "write_test_tiff.tif" );
+ TIFF* file = TIFFOpen( filename.c_str(), "w" );
+
+ write_view( file
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , tag_t()
+ );
+ }
+
+ {
+ string filename( tiff_out + "write_test_info.tif" );
+
+ image_write_info< tiff_tag > info;
+ write_view( filename
+ , create_mandel_view( 320, 240
+ , rgb8_pixel_t( 0, 0, 255 )
+ , rgb8_pixel_t( 0, 255, 0 )
+ )
+ , info
+ );
+ }
+}
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_CASE( stream_test )
+{
+ // 1. Read an image.
+ ifstream in( tiff_filename.c_str(), ios::binary );
+
+ rgba8_image_t img;
+ read_image( in, img, tag_t() );
+
+ // 2. Write image to in-memory buffer.
+ stringstream out_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ write_view( out_buffer, view( img ), tag_t() );
+
+ // 3. Copy in-memory buffer to another.
+ stringstream in_buffer( ios_base::in | ios_base::out | ios_base::binary );
+ in_buffer << out_buffer.rdbuf();
+
+ // 4. Read in-memory buffer to gil image
+ rgba8_image_t dst;
+ read_image( in_buffer, dst, tag_t() );
+
+ // 5. Write out image.
+ string filename( tiff_out + "stream_test.tif" );
+ ofstream out( filename.c_str(), ios_base::binary );
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( out, view( dst ), tag_t() );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( stream_test_2 )
+{
+ filebuf in_buf;
+ if( !in_buf.open( tiff_filename.c_str(), ios::in | ios::binary ) )
+ {
+ BOOST_CHECK( false );
+ }
+
+ istream in( &in_buf );
+
+ rgba8_image_t img;
+ read_image( in, img, tag_t() );
+}
+
+BOOST_AUTO_TEST_CASE( subimage_test )
+{
+ run_subimage_test< rgba8_image_t, tag_t >( tiff_filename
+ , point_t( 0, 0 )
+ , point_t( 50, 50 )
+ );
+
+ run_subimage_test< rgba8_image_t, tag_t >( tiff_filename
+ , point_t( 50, 50 )
+ , point_t( 50, 50 )
+ );
+}
+
+BOOST_AUTO_TEST_CASE( dynamic_image_test )
+{
+ // FIXME: This test has been disabled for now because of compilation issues with MSVC10.
+
+ using my_img_types = mp11::mp_list
+ <
+ gray8_image_t,
+ gray16_image_t,
+ rgb8_image_t,
+ gray1_image_t
+ >;
+
+ any_image< my_img_types > runtime_image;
+
+ read_image( tiff_filename.c_str()
+ , runtime_image
+ , tag_t()
+ );
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "dynamic_image_test.tif"
+ , view( runtime_image )
+ , tag_t()
+ );
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_float_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_float_test.cpp
new file mode 100644
index 00000000..a3171d42
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_float_test.cpp
@@ -0,0 +1,106 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_float_test_module
+
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+using tag_t = tiff_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_minisblack_float_tile_and_strip32 )
+{
+ std::string filename_strip( tiff_in_GM + "tiger-minisblack-float-strip-32.tif" );
+ std::string filename_tile ( tiff_in_GM + "tiger-minisblack-float-tile-32.tif" );
+
+ gray32f_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_minisblack_float_tile_and_strip64 )
+{
+ std::string filename_strip( tiff_in_GM + "tiger-minisblack-float-strip-64.tif" );
+ std::string filename_tile ( tiff_in_GM + "tiger-minisblack-float-tile-64.tif" );
+
+ gray64f_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_rgb_float_tile_and_strip_planar32 )
+{
+ std::string filename_strip( tiff_in_GM + "tiger-rgb-float-strip-planar-32.tif" );
+ std::string filename_tile ( tiff_in_GM + "tiger-rgb-float-tile-planar-32.tif" );
+
+ rgb32f_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_rgb_float_tile_and_strip_contig32 )
+{
+ std::string filename_strip( tiff_in_GM + "tiger-rgb-float-strip-contig-32.tif" );
+ std::string filename_tile ( tiff_in_GM + "tiger-rgb-float-tile-contig-32.tif" );
+
+ rgb32f_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_rgb_float_tile_and_strip64 )
+{
+ std::string filename_strip( tiff_in_GM + "tiger-rgb-float-strip-planar-64.tif" );
+ std::string filename_tile ( tiff_in_GM + "tiger-rgb-float-tile-planar-64.tif" );
+
+ rgb64f_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_rgb_float_tile_and_strip_contig64 )
+{
+ std::string filename_strip( tiff_in_GM + "tiger-rgb-float-strip-contig-64.tif" );
+ std::string filename_tile ( tiff_in_GM + "tiger-rgb-float-tile-contig-64.tif" );
+
+ rgb64f_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_1-10.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_1-10.cpp
new file mode 100644
index 00000000..8554ef5d
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_1-10.cpp
@@ -0,0 +1,40 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_miniblack_test_1_10_module
+
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO( 1, 8, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_MINISBLACK, minisblack )
+BOOST_PP_REPEAT_FROM_TO( 9, 11, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_MINISBLACK, minisblack )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_minisblack_strip_8 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-08.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-minisblack-tile-08.tif" );
+
+ gray8_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_11-20.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_11-20.cpp
new file mode 100644
index 00000000..33810394
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_11-20.cpp
@@ -0,0 +1,41 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_miniblack_test_11_20_module
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(11, 16, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_MINISBLACK, minisblack )
+BOOST_PP_REPEAT_FROM_TO(17, 21, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_MINISBLACK, minisblack )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_minisblack_strip_16 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-16.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-minisblack-tile-16.tif" );
+
+ gray16_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_21-31_32-64.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_21-31_32-64.cpp
new file mode 100644
index 00000000..f8c74793
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_test_21-31_32-64.cpp
@@ -0,0 +1,58 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_miniblack_test_21_31_32_64_module
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(21, 32, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_MINISBLACK, minisblack )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_minisblack_strip_32 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-32.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-minisblack-tile-32.tif" );
+
+ using gray32_pixel_t = pixel<unsigned int, gray_layout_t>;
+ image< gray32_pixel_t, false > img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_minisblack_strip_64 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-64.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-minisblack-tile-64.tif" );
+
+ using gray64_pixel_t = pixel<uint64_t, gray_layout_t>;
+ image< gray64_pixel_t, false > img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_1-10.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_1-10.cpp
new file mode 100644
index 00000000..98693ae0
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_1-10.cpp
@@ -0,0 +1,47 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_miniblack_write_test_1_10_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(1, 8 , GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK, minisblack )
+BOOST_PP_REPEAT_FROM_TO(9, 11, GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK, minisblack )
+
+BOOST_AUTO_TEST_CASE( write_minisblack_tile_and_compare_with_8 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-08.tif" );
+
+ gray8_image_t img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_minisblack_tile_and_compare_with_8.tif", view(img_strip), info );
+ read_image( tiff_out + "write_minisblack_tile_and_compare_with_8.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_11-20.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_11-20.cpp
new file mode 100644
index 00000000..67e23f94
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_11-20.cpp
@@ -0,0 +1,47 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_miniblack_write_test_11_20_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(11, 16, GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK, minisblack )
+BOOST_PP_REPEAT_FROM_TO(17, 21, GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK, minisblack )
+
+BOOST_AUTO_TEST_CASE( write_minisblack_tile_and_compare_with_16 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-16.tif" );
+
+ gray16_image_t img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_minisblack_tile_and_compare_with_16.tif", view(img_strip), info );
+ read_image( tiff_out + "write_minisblack_tile_and_compare_with_16.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_21-31_32-64.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_21-31_32-64.cpp
new file mode 100644
index 00000000..735ffc72
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_minisblack_write_test_21-31_32-64.cpp
@@ -0,0 +1,71 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_miniblack_write_test_21_31_32_64_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(21, 32, GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK, minisblack )
+
+BOOST_AUTO_TEST_CASE( write_tile_and_compare_with_minisblack_strip_32 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-32.tif" );
+
+ using gray32_pixel_t = pixel<unsigned int, gray_layout_t>;
+ image< gray32_pixel_t, false > img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_minisblack_tile_and_compare_with_32.tif", view(img_strip), info );
+ read_image( tiff_out + "write_minisblack_tile_and_compare_with_32.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( write_tile_and_compare_with_minisblack_strip_64 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-minisblack-strip-64.tif" );
+
+ using gray64_pixel_t = pixel<uint64_t, gray_layout_t>;
+ image< gray64_pixel_t, false > img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_minisblack_tile_and_compare_with_64.tif", view(img_strip), info );
+ read_image( tiff_out + "write_minisblack_tile_and_compare_with_64.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_1-8.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_1-8.cpp
new file mode 100644
index 00000000..25b4d954
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_1-8.cpp
@@ -0,0 +1,22 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_palette_test_1_8_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+// CHH - not supported palette
+//BOOST_PP_REPEAT_FROM_TO(1, 9, GENERATE_TILE_STRIP_COMPARISON_PALETTE, palette )
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_8-16.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_8-16.cpp
new file mode 100644
index 00000000..0dad9f4d
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_test_8-16.cpp
@@ -0,0 +1,22 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_palette_test_8_16_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+// CHH - not supported palette
+//BOOST_PP_REPEAT_FROM_TO(9, 17, GENERATE_TILE_STRIP_COMPARISON_PALETTE, palette )
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_1-8.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_1-8.cpp
new file mode 100644
index 00000000..93002b4b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_1-8.cpp
@@ -0,0 +1,22 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_palette_write_test_1_8_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+// CHH - not supported palette
+//BOOST_PP_REPEAT_FROM_TO(1, 9, GENERATE_WRITE_TILE_BIT_ALIGNED_PALETTE, palette )
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_8-16.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_8-16.cpp
new file mode 100644
index 00000000..b59b536e
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_palette_write_test_8-16.cpp
@@ -0,0 +1,22 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_palette_write_test_8_16_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+// CHH - not supported palette
+//BOOST_PP_REPEAT_FROM_TO(9, 17, GENERATE_WRITE_TILE_BIT_ALIGNED_PALETTE, palette )
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_read_macros.hpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_read_macros.hpp
new file mode 100644
index 00000000..0635ac3b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_read_macros.hpp
@@ -0,0 +1,102 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_TIFF_TILED_READ_MACROS_HPP
+#define BOOST_GIL_TIFF_TILED_READ_MACROS_HPP
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/tiff/read.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/stringize.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#include "paths.hpp"
+
+using tag_t = boost::gil::tiff_tag;
+
+// TODO: Rename the macros to BOOST_GIL_*
+
+#define GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT( \
+ BOOST_PP_CAT( \
+ BOOST_PP_CAT( \
+ BOOST_PP_CAT( \
+ BOOST_PP_CAT( read_tile_and_compare_with_ \
+ , BOOST_PP_TUPLE_ELEM(2,0,data) \
+ ) \
+ , BOOST_PP_TUPLE_ELEM(2,1,data) \
+ ) \
+ ,_strip_ \
+ ) \
+ ,n \
+ ) \
+ , bit_bit_aligned \
+ ) \
+ )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename_strip( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2,0,data)) + "-strip-" + BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2,1,data)) + "-" ); \
+ string filename_tile ( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2,0,data)) + "-tile-" + BOOST_PP_STRINGIZE(BOOST_PP_TUPLE_ELEM(2,1,data)) + "-" ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename_strip = filename_strip + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ filename_tile = filename_tile + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ bit_aligned_image3_type< n, n, n, rgb_layout_t >::type img_strip, img_tile; \
+ read_image( filename_strip, img_strip, tag_t() ); \
+ read_image( filename_tile, img_tile, tag_t() ); \
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true); \
+ } \
+
+// Special case for minisblack images
+#define GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_MINISBLACK(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(read_tile_and_compare_with_,data),_strip_),n), bit_bit_aligned) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename_strip( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string filename_tile ( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-tile-" ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename_strip = filename_strip + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ filename_tile = filename_tile + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ bit_aligned_image1_type< n, gray_layout_t >::type img_strip, img_tile; \
+ read_image( filename_strip, img_strip, tag_t() ); \
+ read_image( filename_tile, img_tile, tag_t() ); \
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true); \
+ } \
+
+// Special case for palette images
+#define GENERATE_TILE_STRIP_COMPARISON_PALETTE(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(read_tile_and_compare_with_,data),_strip_),n), bit) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename_strip( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string filename_tile ( tiff_in_GM + "tiger-" + BOOST_PP_STRINGIZE(data) + "-tile-" ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename_strip = filename_strip + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ filename_tile = filename_tile + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ rgb16_image_t img_strip, img_tile; \
+ read_image( filename_strip, img_strip, tag_t() ); \
+ read_image( filename_tile, img_tile, tag_t() ); \
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true); \
+ } \
+
+
+
+#endif // BOOST_GIL_TIFF_TILED_READ_MACROS_HPP
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_1-10.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_1-10.cpp
new file mode 100644
index 00000000..469e18b4
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_1-10.cpp
@@ -0,0 +1,39 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_contig_test_1_10_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(1, 8, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,contig) )
+BOOST_PP_REPEAT_FROM_TO(9, 11, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,contig) )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_contig_strip_8 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-08.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-contig-08.tif" );
+
+ rgb8_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_11-20.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_11-20.cpp
new file mode 100644
index 00000000..df796d78
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_11-20.cpp
@@ -0,0 +1,39 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_contig_test_11_20_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(11, 16, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,contig) )
+BOOST_PP_REPEAT_FROM_TO(17, 21, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,contig) )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_contig_strip_16 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-16.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-contig-16.tif" );
+
+ rgb16_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_21-31_32_64.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_21-31_32_64.cpp
new file mode 100644
index 00000000..e3d83f36
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_test_21-31_32_64.cpp
@@ -0,0 +1,57 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_contig_test_21_31_32_64_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(21, 32, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,contig) )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_contig_strip_32 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-32.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-contig-32.tif" );
+
+ using rgb32_pixel_t= pixel<unsigned int, rgb_layout_t>;
+ image< rgb32_pixel_t, false > img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_contig_strip_64 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-64.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-contig-64.tif" );
+
+ using rgb64_pixel_t = pixel<uint64_t, rgb_layout_t>;
+ image< rgb64_pixel_t, false > img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_1-10.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_1-10.cpp
new file mode 100644
index 00000000..682d8ee2
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_1-10.cpp
@@ -0,0 +1,46 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_contig_write_test_1_10_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(1, 8, GENERATE_WRITE_TILE_BIT_ALIGNED_RGB, rgb )
+BOOST_PP_REPEAT_FROM_TO(9, 11, GENERATE_WRITE_TILE_BIT_ALIGNED_RGB, rgb )
+
+BOOST_AUTO_TEST_CASE( write_tile_and_compare_with_rgb_strip_contig_8 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-08.tif" );
+
+ rgb8_image_t img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_8.tif", view(img_strip), info );
+ read_image( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_8.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_11-20.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_11-20.cpp
new file mode 100644
index 00000000..3da9172b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_11-20.cpp
@@ -0,0 +1,46 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_contig_write_test_11_20_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(11, 16, GENERATE_WRITE_TILE_BIT_ALIGNED_RGB, rgb )
+BOOST_PP_REPEAT_FROM_TO(17, 21, GENERATE_WRITE_TILE_BIT_ALIGNED_RGB, rgb )
+
+BOOST_AUTO_TEST_CASE( write_tile_and_compare_with_rgb_strip_contig_16 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-16.tif" );
+
+ rgb16_image_t img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_16.tif", view(img_strip), info );
+ read_image( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_16.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp
new file mode 100644
index 00000000..05e27b16
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_contig_write_test_21-31_32_64.cpp
@@ -0,0 +1,71 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_contig_write_test_21_31_32_64_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_write_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(21, 31, GENERATE_WRITE_TILE_BIT_ALIGNED_RGB, rgb )
+
+BOOST_AUTO_TEST_CASE( write_tile_and_compare_with_rgb_strip_contig_32 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-32.tif" );
+
+ using rgb32_pixel_t = pixel<unsigned int, rgb_layout_t>;
+ image< rgb32_pixel_t, false > img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_32.tif", view(img_strip), info );
+ read_image( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_32.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+BOOST_AUTO_TEST_CASE( write_tile_and_compare_with_rgb_strip_contig_64 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-contig-64.tif" );
+
+ using rgb64_pixel_t = pixel<uint64_t, rgb_layout_t>;
+ image< rgb64_pixel_t, false > img_strip, img_saved;
+
+ read_image( filename_strip, img_strip, tag_t() );
+
+ image_write_info<tag_t> info;
+ info._is_tiled = true;
+ info._tile_width = info._tile_length = 16;
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+ write_view( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_64.tif", view(img_strip), info );
+ read_image( tiff_out + "write_tile_and_compare_with_rgb_strip_contig_64.tif", img_saved, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true);
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_1-10.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_1-10.cpp
new file mode 100644
index 00000000..797d4d66
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_1-10.cpp
@@ -0,0 +1,39 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_planar_test_1_10_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(1, 8, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,planar) )
+BOOST_PP_REPEAT_FROM_TO(9, 11, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,planar) )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_planar_strip_8 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-planar-08.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-planar-08.tif" );
+
+ rgb8_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_11-20.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_11-20.cpp
new file mode 100644
index 00000000..d118c9e0
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_11-20.cpp
@@ -0,0 +1,39 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_planar_test_11_20_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(11, 16, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,planar) )
+BOOST_PP_REPEAT_FROM_TO(17, 21, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,planar) )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_planar_strip_16 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-planar-16.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-planar-16.tif" );
+
+ rgb16_image_t img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_21-31_32_64.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_21-31_32_64.cpp
new file mode 100644
index 00000000..44c16457
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_rgb_planar_test_21-31_32_64.cpp
@@ -0,0 +1,57 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_rgb_planar_test_21_31_32_64_module
+#include <boost/test/unit_test.hpp>
+
+#include "tiff_tiled_read_macros.hpp"
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_PP_REPEAT_FROM_TO(21, 32, GENERATE_TILE_STRIP_COMPARISON_BIT_ALIGNED_RGB, (rgb,planar) )
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_planar_strip_32 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-planar-32.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-planar-32.tif" );
+
+ using rgb32_pixel_t = pixel<unsigned int, rgb_layout_t>;
+ image< rgb32_pixel_t, false > img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+BOOST_AUTO_TEST_CASE( read_tile_and_compare_with_rgb_planar_strip_64 )
+{
+ using namespace std;
+ using namespace boost;
+ using namespace gil;
+
+ string filename_strip( tiff_in_GM + "tiger-rgb-strip-planar-64.tif" );
+ string filename_tile ( tiff_in_GM + "tiger-rgb-tile-planar-64.tif" );
+
+ using rgb64_pixel_t = pixel<uint64_t, rgb_layout_t>;
+ image< rgb64_pixel_t, false > img_strip, img_tile;
+
+ read_image( filename_strip, img_strip, tag_t() );
+ read_image( filename_tile, img_tile, tag_t() );
+
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_tile) ), true);
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_test.cpp
new file mode 100644
index 00000000..9e042ae3
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_test.cpp
@@ -0,0 +1,84 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+//#define BOOST_TEST_MODULE tiff_tiled_test_module
+#include <boost/test/unit_test.hpp>
+
+#include <boost/gil/extension/io/tiff.hpp>
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+using tag_t = tiff_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+#ifdef BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_CASE( read_tile_infos_test )
+{
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( tiff_in_GM + "tiger-minisblack-float-tile-16.tif"
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._tile_width , 16 );
+ BOOST_CHECK_EQUAL( backend._info._tile_length, 16 );
+ }
+
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( tiff_in_GM + "tiger-minisblack-tile-08.tif"
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._tile_width , 16 );
+ BOOST_CHECK_EQUAL( backend._info._tile_length, 16 );
+ }
+
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( tiff_in_GM + "tiger-palette-tile-08.tif"
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._tile_width , 16 );
+ BOOST_CHECK_EQUAL( backend._info._tile_length, 16 );
+ }
+
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( tiff_in_GM + "tiger-rgb-tile-contig-08.tif"
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._tile_width , 16 );
+ BOOST_CHECK_EQUAL( backend._info._tile_length, 16 );
+ }
+
+ {
+ using backend_t = get_reader_backend<std::string const, tag_t>::type;
+
+ backend_t backend = read_image_info( tiff_in_GM + "tiger-rgb-tile-planar-08.tif"
+ , tag_t()
+ );
+
+ BOOST_CHECK_EQUAL( backend._info._tile_width , 16 );
+ BOOST_CHECK_EQUAL( backend._info._tile_length, 16 );
+ }
+}
+
+#endif // BOOST_GIL_IO_USE_TIFF_GRAPHICSMAGICK_TEST_SUITE_IMAGES
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/io/tiff_tiled_write_macros.hpp b/src/boost/libs/gil/test/extension/io/tiff_tiled_write_macros.hpp
new file mode 100644
index 00000000..4cb2d4af
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_tiled_write_macros.hpp
@@ -0,0 +1,165 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#ifndef BOOST_GIL_TIFF_TILED_WRITE_MACROS_HPP
+#define BOOST_GIL_TIFF_TILED_WRITE_MACROS_HPP
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/stringize.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/comparison/less.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+#include "paths.hpp"
+
+using tag_t = boost::gil::tiff_tag;
+
+// TODO: Rename the macros to BOOST_GIL_*
+
+#ifdef BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#define GENERATE_WRITE_TILE_BIT_ALIGNED_RGB(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(write_rgb_tile_and_compare_with_,data),_strip_),n), bit_bit_aligned) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename( string( "tiger-" ) + BOOST_PP_STRINGIZE(data) + "-strip-contig-" ); \
+ string path( tiff_in_GM ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename += padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ path += filename; \
+ bit_aligned_image3_type< n, n, n, rgb_layout_t >::type img_strip, img_saved; \
+ read_image( path, img_strip, tag_t() ); \
+ image_write_info<tag_t> info; \
+ info._is_tiled = true; \
+ info._tile_width = info._tile_length = 16; \
+ write_view( tiff_out + filename, view(img_strip), info ); \
+ read_image( tiff_out + filename, img_saved, tag_t() ); \
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true); \
+ } \
+
+// Special case for minisblack images
+#define GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(write_minisblack_tile_and_compare_with_,data),_strip_),n), bit_bit_aligned) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename( string( "tiger-" ) + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string path( tiff_in_GM ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename = filename + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ path += filename; \
+ bit_aligned_image1_type< n, gray_layout_t >::type img_strip, img_saved; \
+ read_image( path, img_strip, tag_t() ); \
+ image_write_info<tag_t> info; \
+ info._is_tiled = true; \
+ info._tile_width = info._tile_length = 16; \
+ write_view( tiff_out + filename, view(img_strip), info ); \
+ read_image( tiff_out + filename, img_saved, tag_t() ); \
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true); \
+ } \
+
+// Special case for palette images
+#define GENERATE_WRITE_TILE_BIT_ALIGNED_PALETTE(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(write_palette_tile_and_compare_with_,data),_strip_),n), bit) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename( string( "tiger-" ) + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string path( tiff_in_GM ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename = filename + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ path += filename; \
+ rgb16_image_t img_strip, img_saved; \
+ read_image( path, img_strip, tag_t() ); \
+ image_write_info<tag_t> info; \
+ info._is_tiled = true; \
+ info._tile_width = info._tile_length = 16; \
+ write_view( tiff_out + filename, view(img_strip), info ); \
+ read_image( tiff_out + filename, img_saved, tag_t() ); \
+ BOOST_CHECK_EQUAL( equal_pixels( const_view(img_strip), const_view(img_saved) ), true); \
+ } \
+
+#else
+
+#define GENERATE_WRITE_TILE_BIT_ALIGNED_RGB(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(write_rgb_tile_and_compare_with_,data),_strip_),n), bit_bit_aligned) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename( string( "tiger-" ) + BOOST_PP_STRINGIZE(data) + "-strip-contig-" ); \
+ string path( tiff_in_GM ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename += padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ path += filename; \
+ bit_aligned_image3_type< n, n, n, rgb_layout_t >::type img_strip, img_saved; \
+ read_image( path, img_strip, tag_t() ); \
+ image_write_info<tag_t> info; \
+ info._is_tiled = true; \
+ info._tile_width = info._tile_length = 16; \
+ } \
+
+// Special case for minisblack images
+#define GENERATE_WRITE_TILE_BIT_ALIGNED_MINISBLACK(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(write_minisblack_tile_and_compare_with_,data),_strip_),n), bit_bit_aligned) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename( string( "tiger-" ) + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string path( tiff_in_GM ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename = filename + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ path += filename; \
+ bit_aligned_image1_type< n, gray_layout_t >::type img_strip, img_saved; \
+ read_image( path, img_strip, tag_t() ); \
+ image_write_info<tag_t> info; \
+ info._is_tiled = true; \
+ info._tile_width = info._tile_length = 16; \
+ } \
+
+// Special case for palette images
+#define GENERATE_WRITE_TILE_BIT_ALIGNED_PALETTE(z, n, data)\
+ BOOST_AUTO_TEST_CASE( BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_CAT(write_palette_tile_and_compare_with_,data),_strip_),n), bit) )\
+ { \
+ using namespace std; \
+ using namespace boost; \
+ using namespace gil; \
+ string filename( string( "tiger-" ) + BOOST_PP_STRINGIZE(data) + "-strip-" ); \
+ string path( tiff_in_GM ); \
+ string padding(""); \
+ if(BOOST_PP_LESS(n, 10)==1) \
+ padding = "0"; \
+ filename = filename + padding + BOOST_PP_STRINGIZE(n) + ".tif"; \
+ path += filename; \
+ rgb16_image_t img_strip, img_saved; \
+ read_image( path, img_strip, tag_t() ); \
+ image_write_info<tag_t> info; \
+ info._is_tiled = true; \
+ info._tile_width = info._tile_length = 16; \
+ } \
+
+#endif // BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES
+
+#endif // BOOST_GIL_TIFF_TILED_READ_MACROS_HPP
diff --git a/src/boost/libs/gil/test/extension/io/tiff_write_test.cpp b/src/boost/libs/gil/test/extension/io/tiff_write_test.cpp
new file mode 100644
index 00000000..6b488d56
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/io/tiff_write_test.cpp
@@ -0,0 +1,32 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/io/typedefs.hpp>
+#include <boost/gil/extension/io/tiff.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include "color_space_write_test.hpp"
+#include "mandel_view.hpp"
+#include "paths.hpp"
+
+using namespace std;
+using namespace boost::gil;
+
+using tag_t = tiff_tag;
+
+BOOST_AUTO_TEST_SUITE( gil_io_tiff_tests )
+
+BOOST_AUTO_TEST_CASE( rgb_color_space_write_test )
+{
+ color_space_write_test< tag_t >( tiff_out + "rgb_color_space_test.tif"
+ , tiff_out + "bgr_color_space_test.tif"
+ );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/CMakeLists.txt b/src/boost/libs/gil/test/extension/numeric/CMakeLists.txt
new file mode 100644
index 00000000..ad7c3b32
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/CMakeLists.txt
@@ -0,0 +1,37 @@
+#
+# Copyright (c) 2017 Mateusz Loskot <mateusz at loskot dot net>
+# All rights reserved.
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+message(STATUS "Boost.GIL: Configuring tests in test/extension/numeric")
+
+foreach(_name
+ channel_numeric_operations
+ convolve_cols
+ convolve_rows
+ convolve
+ kernel
+ matrix3x2
+ numeric
+ pixel_numeric_operations
+ convolve_2d
+ extend_boundary)
+ set(_test t_ext_numeric_${_name})
+ set(_target test_ext_numeric_${_name})
+
+ add_executable(${_target} "")
+ target_sources(${_target} PRIVATE ${_name}.cpp)
+ target_link_libraries(${_target}
+ PRIVATE
+ gil_compile_options
+ gil_include_directories
+ gil_dependencies)
+ add_test(NAME ${_test} COMMAND ${_target})
+
+ unset(_name)
+ unset(_target)
+ unset(_test)
+endforeach()
diff --git a/src/boost/libs/gil/test/extension/numeric/Jamfile b/src/boost/libs/gil/test/extension/numeric/Jamfile
new file mode 100644
index 00000000..8e212bcc
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/Jamfile
@@ -0,0 +1,29 @@
+# Boost.GIL (Generic Image Library) - Numeric tests
+#
+# Copyright (c) 2013 Christian Henning
+# Copyright (c) 2019 Mateusz Loskot <mateusz at loskot dot net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or
+# copy at http://www.boost.org/LICENSE_1_0.txt)
+
+import testing ;
+
+project
+ : requirements
+ <library>/boost/test//boost_unit_test_framework
+ <link>shared:<define>BOOST_TEST_DYN_LINK=1
+ ;
+
+alias headers : [ generate_self_contained_headers extension/numeric ] ;
+
+run channel_numeric_operations.cpp ;
+run convolve.cpp ;
+run convolve_cols.cpp ;
+run convolve_rows.cpp ;
+run kernel.cpp ;
+compile-fail kernel_1d_fixed_even_size_fail.cpp ;
+run matrix3x2.cpp ;
+run numeric.cpp ;
+run pixel_numeric_operations.cpp ;
+run convolve_2d.cpp ;
diff --git a/src/boost/libs/gil/test/extension/numeric/channel_numeric_operations.cpp b/src/boost/libs/gil/test/extension/numeric/channel_numeric_operations.cpp
new file mode 100644
index 00000000..6ece4f25
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/channel_numeric_operations.cpp
@@ -0,0 +1,305 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/channel_numeric_operations.hpp>
+
+#include <tuple>
+#include <type_traits>
+
+#define BOOST_TEST_MODULE test_ext_numeric_pixel_numeric_operations
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+#include "core/channel/test_fixture.hpp"
+
+namespace gil = boost::gil;
+namespace fixture = boost::gil::test::fixture;
+
+BOOST_AUTO_TEST_SUITE(channel_plus_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_plus_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(0, 0) == channel_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(127));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ {
+ using channel1_t = channel_t;
+ using channel2_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ gil::channel_plus_t<channel1_t, channel2_t, channel1_t> f;
+ BOOST_TEST(f(0, 0) == channel1_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(127));
+ }
+ {
+ using channel1_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ using channel2_t = channel_t;
+ gil::channel_plus_t<channel1_t, channel2_t, channel2_t> f;
+ BOOST_TEST(f(0, 0) == channel2_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(127));
+ }
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_integer_signed_types_with_overflow, channel_t, fixture::channel_integer_signed_types)
+{
+ // Signed integer overflow is UB, so just check addition does not yield mathematically
+ // expected value but is constrained by the range of representable values for given type.
+
+ auto const max_value = gil::channel_traits<channel_t>::max_value();
+ gil::channel_plus_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(max_value, 1) != std::int64_t(max_value) + 1);
+ BOOST_TEST(f(max_value, max_value) != std::int64_t(max_value) + max_value);
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_integer_unsigned_types_with_wraparound, channel_t, fixture::channel_integer_unsigned_types)
+{
+ // The C Standard, 6.2.5, paragraph 9 [ISO/IEC 9899:2011], states:
+ // A computation involving unsigned operands can never overflow, because a result that
+ // cannot be represented by the resulting unsigned integer type is reduced modulo the number
+ // that is one greater than the largest value that can be represented by the resulting type.
+
+ auto const max_value = gil::channel_traits<channel_t>::max_value();
+ auto const min_value = gil::channel_traits<channel_t>::min_value();
+ gil::channel_plus_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(max_value, 1) == min_value);
+ BOOST_TEST(f(max_value, max_value) == max_value - 1);
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_plus_t
+
+BOOST_AUTO_TEST_SUITE(channel_minus_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(minus_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_minus_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(0, 0) == channel_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(73));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(minus_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ {
+ using channel1_t = channel_t;
+ using channel2_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ gil::channel_minus_t<channel1_t, channel2_t, channel1_t> f;
+ BOOST_TEST(f(0, 0) == channel1_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(73));
+ }
+ {
+ using channel1_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ using channel2_t = channel_t;
+ gil::channel_minus_t<channel1_t, channel2_t, channel2_t> f;
+ BOOST_TEST(f(0, 0) == channel2_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(73));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_minus_t
+
+BOOST_AUTO_TEST_SUITE(channel_multiplies_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(multiplies_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_multiplies_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(0, 0) == channel_t(0));
+ BOOST_TEST(f(1, 1) == channel_t(1));
+ BOOST_TEST(f(4, 2) == channel_t(8));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(multiplies_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ {
+ using channel1_t = channel_t;
+ using channel2_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ gil::channel_multiplies_t<channel1_t, channel2_t, channel1_t> f;
+ BOOST_TEST(f(0, 0) == channel1_t(0));
+ BOOST_TEST(f(4, 2) == channel_t(8));
+ }
+ {
+ using channel1_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ using channel2_t = channel_t;
+ gil::channel_multiplies_t<channel1_t, channel2_t, channel2_t> f;
+ BOOST_TEST(f(0, 0) == channel2_t(0));
+ BOOST_TEST(f(4, 2) == channel_t(8));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_multiplies_t
+
+BOOST_AUTO_TEST_SUITE(channel_divides_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(divides_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_divides_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(0, 1) == channel_t(0));
+ BOOST_TEST(f(1, 1) == channel_t(1));
+ BOOST_TEST(f(4, 2) == channel_t(2));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(divides_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ {
+ using channel1_t = channel_t;
+ using channel2_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ gil::channel_divides_t<channel1_t, channel2_t, channel1_t> f;
+ BOOST_TEST(f(0, 1) == channel1_t(0));
+ BOOST_TEST(f(4, 2) == channel_t(2));
+ }
+ {
+ using channel1_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ using channel2_t = channel_t;
+ gil::channel_divides_t<channel1_t, channel2_t, channel2_t> f;
+ BOOST_TEST(f(0, 1) == channel2_t(0));
+ BOOST_TEST(f(4, 2) == channel_t(2));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_divides_t
+
+BOOST_AUTO_TEST_SUITE(channel_plus_scalar_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_scalar_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_plus_scalar_t<channel_t, int, channel_t> f;
+ BOOST_TEST(f(0, 0) == channel_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(127));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_scalar_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ using channel_result_t = std::uint8_t;
+ gil::channel_plus_scalar_t<channel_t, int, channel_result_t> f;
+ BOOST_TEST(f(0, 0) == channel_result_t(0));
+ BOOST_TEST(f(100, 27) == channel_result_t(127));
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_plus_scalar_t
+
+BOOST_AUTO_TEST_SUITE(channel_minus_scalar_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(minus_scalar_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_minus_scalar_t<channel_t, int, channel_t> f;
+ BOOST_TEST(f(0, 0) == channel_t(0));
+ BOOST_TEST(f(100, 27) == channel_t(73));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(minus_scalar_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ using channel_result_t = std::uint8_t;
+ gil::channel_minus_scalar_t<channel_t, int, std::uint8_t> f;
+ BOOST_TEST(f(0, 0) == channel_result_t(0));
+ BOOST_TEST(f(100, 27) == channel_result_t(73));
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_minus_scalar_t
+
+BOOST_AUTO_TEST_SUITE(channel_multiplies_scalar_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(multiplies_scalar_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_multiplies_scalar_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(0, 0) == channel_t(0));
+ BOOST_TEST(f(1, 1) == channel_t(1));
+ BOOST_TEST(f(4, 2) == channel_t(8));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(multiplies_scalar_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ using channel_result_t = std::uint8_t;
+ gil::channel_multiplies_scalar_t<channel_t, int, channel_result_t> f;
+ BOOST_TEST(f(0, 0) == channel_result_t(0));
+ BOOST_TEST(f(4, 2) == channel_result_t(8));
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_multiplies_scalar_t
+
+BOOST_AUTO_TEST_SUITE(channel_divides_scalar_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(divides_scalar_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_divides_scalar_t<channel_t, channel_t, channel_t> f;
+ BOOST_TEST(f(0, 1) == channel_t(0));
+ BOOST_TEST(f(1, 1) == channel_t(1));
+ BOOST_TEST(f(4, 2) == channel_t(2));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(divides_scalar_integer_mixed_types, channel_t, fixture::channel_integer_types)
+{
+ using channel_result_t = std::uint8_t; // duplicates only one of fixture::channel_integer_types
+ gil::channel_divides_scalar_t<channel_t, int, channel_result_t> f;
+ BOOST_TEST(f(0, 1) == channel_t(0));
+ BOOST_TEST(f(4, 2) == channel_t(2));
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_divides_scalar_t
+
+BOOST_AUTO_TEST_SUITE(channel_halves_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(halves_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_halves_t<channel_t> f;
+ {
+ channel_t c(0);
+ f(c);
+ BOOST_TEST(c == channel_t(0));
+ }
+ {
+ channel_t c(2);
+ f(c);
+ BOOST_TEST(c == channel_t(1));
+ }
+ {
+ channel_t c(4);
+ f(c);
+ BOOST_TEST(c == channel_t(2));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_halves_t
+
+BOOST_AUTO_TEST_SUITE(channel_zeros_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(zeros_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_zeros_t<channel_t> f;
+ {
+ channel_t c(0);
+ f(c);
+ BOOST_TEST(c == channel_t(0));
+ }
+ {
+ channel_t c(2);
+ f(c);
+ BOOST_TEST(c == channel_t(0));
+ }
+ {
+ channel_t c(4);
+ f(c);
+ BOOST_TEST(c == channel_t(0));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_zeros_t
+
+BOOST_AUTO_TEST_SUITE(channel_assigns_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(assigns_integer_same_types, channel_t, fixture::channel_integer_types)
+{
+ gil::channel_assigns_t<channel_t, channel_t> f;
+ {
+ channel_t c1(10);
+ channel_t c2(20);
+ f(c1, c2);
+ BOOST_TEST(c2 == c1);
+ }
+
+}
+
+BOOST_AUTO_TEST_SUITE_END() // channel_assigns_t
diff --git a/src/boost/libs/gil/test/extension/numeric/convolve.cpp b/src/boost/libs/gil/test/extension/numeric/convolve.cpp
new file mode 100644
index 00000000..d12fc9ac
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/convolve.cpp
@@ -0,0 +1,79 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/convolve.hpp>
+
+#include <tuple>
+#include <type_traits>
+
+#define BOOST_TEST_MODULE test_ext_numeric_colvolve_2d
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+#include "test_fixture.hpp"
+#include "core/image/test_fixture.hpp"
+
+namespace gil = boost::gil;
+namespace fixture = boost::gil::test::fixture;
+
+BOOST_AUTO_TEST_SUITE(convolve_1d)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_1x1_kernel_1x1_identity, Image, fixture::image_types)
+{
+ auto const img = fixture::create_image<Image>(1, 1, 7);
+ Image img_out(img);
+
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const kernel = fixture::create_kernel<channel_t>({1});
+ gil::detail::convolve_1d<pixel_t>(const_view(img_out), kernel, view(img_out));
+
+ // 1x1 kernel reduces convolution to multiplication
+ BOOST_TEST(gil::const_view(img).front() == gil::const_view(img_out).front());
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_1x1_kernel_3x3_identity, Image, fixture::image_types)
+{
+ auto const img = fixture::create_image<Image>(1, 1, 7);
+ Image img_out(img);
+
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 1, 0, 0, 0, 0});
+ gil::detail::convolve_1d<pixel_t>(const_view(img_out), kernel, view(img_out));
+
+ BOOST_TEST(gil::const_view(img).front() == gil::const_view(img_out).front());
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_3x3_kernel_3x3_identity, Image, fixture::image_types)
+{
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const img = fixture::generate_image<Image>(3, 3, fixture::random_value<channel_t>{});
+ Image img_out(img);
+
+ auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 1, 0, 0, 0, 0});
+ gil::detail::convolve_1d<pixel_t>(const_view(img_out), kernel, view(img_out));
+
+ BOOST_TEST(gil::equal_pixels(gil::const_view(img), gil::const_view(img_out)));
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_5x5_kernel_3x3_identity, Image, fixture::image_types)
+{
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const img = fixture::generate_image<Image>(5, 5, fixture::random_value<channel_t>{});
+ Image img_out(img);
+
+ auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 1, 0, 0, 0, 0});
+ gil::detail::convolve_1d<pixel_t>(const_view(img_out), kernel, view(img_out));
+ // TODO: Test different boundary options
+
+ BOOST_TEST(gil::equal_pixels(gil::const_view(img), gil::const_view(img_out)));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/convolve_2d.cpp b/src/boost/libs/gil/test/extension/numeric/convolve_2d.cpp
new file mode 100644
index 00000000..0a1012eb
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/convolve_2d.cpp
@@ -0,0 +1,67 @@
+//
+// Copyright 2019 Miral Shah <miralshah2211@gmail.com>
+//
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+#include <cstddef>
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/convolve.hpp>
+
+#define BOOST_TEST_MODULE test_ext_convolve_2d
+#include "unit_test.hpp"
+
+namespace gil = boost::gil;
+
+std::uint8_t img[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 255, 0, 0, 0, 255, 0, 0,
+ 0, 0, 0, 255, 0, 255, 0, 0, 0,
+ 0, 0, 0, 0, 255, 0, 0, 0, 0,
+ 0, 0, 0, 255, 0, 255, 0, 0, 0,
+ 0, 0, 255, 0, 0, 0, 255, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+std::uint8_t output[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 28, 28, 28, 0, 28, 28, 28, 0,
+ 0, 28, 56, 56, 56, 56, 56, 28, 0,
+ 0, 28, 56, 85, 85, 85, 56, 28, 0,
+ 0, 0, 56, 85, 141, 85, 56, 0, 0,
+ 0, 28, 56, 85, 85, 85, 56, 28, 0,
+ 0, 28, 56, 56, 56, 56, 56, 28, 0,
+ 0, 28, 28, 28, 0, 28, 28, 28, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+BOOST_AUTO_TEST_SUITE(convolve_2d)
+
+BOOST_AUTO_TEST_CASE(convolve_2d_with_normalized_mean_filter)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t*>(img), 9);
+
+ gil::image<gil::gray8_pixel_t> temp_img(src_view.width(), src_view.height());
+ typename gil::image<gil::gray8_pixel_t>::view_t temp_view = view(temp_img);
+ gil::gray8_view_t dst_view(temp_view);
+
+ std::vector<float> v(9, 1.0f / 9.0f);
+ gil::detail::kernel_2d<float> kernel(v.begin(), v.size(), 1, 1);
+
+ gil::detail::convolve_2d(src_view, kernel, dst_view);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t*>(output), 9);
+
+ BOOST_TEST(gil::equal_pixels(out_view, dst_view));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/convolve_cols.cpp b/src/boost/libs/gil/test/extension/numeric/convolve_cols.cpp
new file mode 100644
index 00000000..51b7acee
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/convolve_cols.cpp
@@ -0,0 +1,52 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/convolve.hpp>
+
+#include <tuple>
+#include <type_traits>
+
+#define BOOST_TEST_MODULE test_ext_numeric_colvolve_cols
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+#include "test_fixture.hpp"
+#include "core/image/test_fixture.hpp"
+
+namespace gil = boost::gil;
+namespace fixture = boost::gil::test::fixture;
+
+BOOST_AUTO_TEST_SUITE(convolve_cols)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_1x1_kernel_1x1_identity, Image, fixture::image_types)
+{
+ auto const img = fixture::create_image<Image>(1, 1, 7);
+ auto img_out = fixture::create_image<Image>(1, 1, 0);
+
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const kernel = fixture::create_kernel<channel_t>({1});
+ gil::convolve_cols<pixel_t>(const_view(img), kernel, view(img_out));
+
+ // 1x1 kernel reduces convolution to multiplication
+ BOOST_TEST(gil::const_view(img).front() == gil::const_view(img_out).front());
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_1x1_kernel_3x3_identity, Image, fixture::image_types)
+{
+ auto const img = fixture::create_image<Image>(1, 1, 7);
+ auto img_out = fixture::create_image<Image>(1, 1, 0);
+
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 1, 0, 0, 0, 0});
+ gil::convolve_cols<pixel_t>(const_view(img), kernel, view(img_out));
+
+ BOOST_TEST(gil::const_view(img).front() == gil::const_view(img_out).front());
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/convolve_rows.cpp b/src/boost/libs/gil/test/extension/numeric/convolve_rows.cpp
new file mode 100644
index 00000000..8e50d282
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/convolve_rows.cpp
@@ -0,0 +1,52 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/convolve.hpp>
+
+#include <tuple>
+#include <type_traits>
+
+#define BOOST_TEST_MODULE test_ext_numeric_colvolve_rows
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+#include "test_fixture.hpp"
+#include "core/image/test_fixture.hpp"
+
+namespace gil = boost::gil;
+namespace fixture = boost::gil::test::fixture;
+
+BOOST_AUTO_TEST_SUITE(convolve_rows)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_1x1_kernel_1x1_identity, Image, fixture::image_types)
+{
+ auto const img = fixture::create_image<Image>(1, 1, 7);
+ auto img_out = fixture::create_image<Image>(1, 1, 0);
+
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const kernel = fixture::create_kernel<channel_t>({1});
+ gil::convolve_rows<pixel_t>(const_view(img), kernel, view(img_out));
+
+ // 1x1 kernel reduces convolution to multiplication
+ BOOST_TEST(gil::const_view(img).front() == gil::const_view(img_out).front());
+}
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(image_1x1_kernel_3x3_identity, Image, fixture::image_types)
+{
+ auto const img = fixture::create_image<Image>(1, 1, 7);
+ auto img_out = fixture::create_image<Image>(1, 1, 0);
+
+ using pixel_t = typename Image::value_type;
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 1, 0, 0, 0, 0});
+ gil::convolve_rows<pixel_t>(const_view(img), kernel, view(img_out));
+
+ BOOST_TEST(gil::const_view(img).front() == gil::const_view(img_out).front());
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/extend_boundary.cpp b/src/boost/libs/gil/test/extension/numeric/extend_boundary.cpp
new file mode 100644
index 00000000..81b34a56
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/extend_boundary.cpp
@@ -0,0 +1,244 @@
+//
+// Copyright 2019 Pranam Lashkari <plashkari628@gmail.com>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+
+#define BOOST_TEST_MODULE test_ext_numeric_extend_boundary
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/algorithm.hpp>
+#include <boost/gil/extension/numeric/convolve.hpp>
+
+namespace gil = boost::gil;
+
+std::uint8_t img[] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 0, 0, 0, 0, 0, 0, 0, 32,
+ 11, 0, 255, 0, 0, 0, 255, 0, 31,
+ 12, 0, 0, 255, 0, 255, 0, 0, 30,
+ 13, 0, 0, 0, 255, 0, 0, 0, 29,
+ 14, 0, 0, 255, 0, 255, 0, 0, 28,
+ 15, 0, 255, 0, 0, 0, 255, 0, 27,
+ 16, 0, 0, 0, 0, 0, 0, 0, 26,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25
+};
+
+std::uint8_t row_output_constant[] =
+{
+ 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 0, 0, 0, 0, 0, 0, 0, 32,
+ 11, 0, 255, 0, 0, 0, 255, 0, 31,
+ 12, 0, 0, 255, 0, 255, 0, 0, 30,
+ 13, 0, 0, 0, 255, 0, 0, 0, 29,
+ 14, 0, 0, 255, 0, 255, 0, 0, 28,
+ 15, 0, 255, 0, 0, 0, 255, 0, 27,
+ 16, 0, 0, 0, 0, 0, 0, 0, 26,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25
+};
+
+std::uint8_t row_output_zero[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 0, 0, 0, 0, 0, 0, 0, 32,
+ 11, 0, 255, 0, 0, 0, 255, 0, 31,
+ 12, 0, 0, 255, 0, 255, 0, 0, 30,
+ 13, 0, 0, 0, 255, 0, 0, 0, 29,
+ 14, 0, 0, 255, 0, 255, 0, 0, 28,
+ 15, 0, 255, 0, 0, 0, 255, 0, 27,
+ 16, 0, 0, 0, 0, 0, 0, 0, 26,
+ 17, 18, 19, 20, 21, 22, 23, 24, 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,
+};
+
+std::uint8_t col_output_constant[] =
+{
+ 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9,
+ 10, 10, 0, 0, 0, 0, 0, 0, 0, 32, 32,
+ 11, 11, 0, 255, 0, 0, 0, 255, 0, 31, 31,
+ 12, 12, 0, 0, 255, 0, 255, 0, 0, 30, 30,
+ 13, 13, 0, 0, 0, 255, 0, 0, 0, 29, 29,
+ 14, 14, 0, 0, 255, 0, 255, 0, 0, 28, 28,
+ 15, 15, 0, 255, 0, 0, 0, 255, 0, 27, 27,
+ 16, 16, 0, 0, 0, 0, 0, 0, 0, 26, 26,
+ 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25
+};
+
+std::uint8_t col_output_zero[] =
+{
+ 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0,
+ 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
+ 0, 0, 11, 0, 255, 0, 0, 0, 255, 0, 31, 0, 0,
+ 0, 0, 12, 0, 0, 255, 0, 255, 0, 0, 30, 0, 0,
+ 0, 0, 13, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0,
+ 0, 0, 14, 0, 0, 255, 0, 255, 0, 0, 28, 0, 0,
+ 0, 0, 15, 0, 255, 0, 0, 0, 255, 0, 27, 0, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0,
+ 0, 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 0, 0
+};
+
+std::uint8_t boundary_output_constant[] =
+{
+ 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9,
+ 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9,
+ 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9,
+ 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 32, 32, 32,
+ 11, 11, 11, 0, 255, 0, 0, 0, 255, 0, 31, 31, 31,
+ 12, 12, 12, 0, 0, 255, 0, 255, 0, 0, 30, 30, 30,
+ 13, 13, 13, 0, 0, 0, 255, 0, 0, 0, 29, 29, 29,
+ 14, 14, 14, 0, 0, 255, 0, 255, 0, 0, 28, 28, 28,
+ 15, 15, 15, 0, 255, 0, 0, 0, 255, 0, 27, 27, 27,
+ 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26,
+ 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25,
+ 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25,
+ 17, 17, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, 25
+};
+
+std::uint8_t boundary_output_zero[] =
+{
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0,
+ 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
+ 0, 0, 11, 0, 255, 0, 0, 0, 255, 0, 31, 0, 0,
+ 0, 0, 12, 0, 0, 255, 0, 255, 0, 0, 30, 0, 0,
+ 0, 0, 13, 0, 0, 0, 255, 0, 0, 0, 29, 0, 0,
+ 0, 0, 14, 0, 0, 255, 0, 255, 0, 0, 28, 0, 0,
+ 0, 0, 15, 0, 255, 0, 0, 0, 255, 0, 27, 0, 0,
+ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0,
+ 0, 0, 17, 18, 19, 20, 21, 22, 23, 24, 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
+};
+
+BOOST_AUTO_TEST_SUITE(boundary_extension)
+
+BOOST_AUTO_TEST_CASE(extend_row_with_constant)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(9, 13, reinterpret_cast<const gil::gray8_pixel_t *>(row_output_constant), 9);
+
+ auto output = gil::extend_row(src_view, 2, gil::boundary_option::extend_constant);
+
+ BOOST_TEST(gil::equal_pixels(out_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_row_with_zero)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(9, 15, reinterpret_cast<const gil::gray8_pixel_t *>(row_output_zero), 9);
+
+ auto output = gil::extend_row(src_view, 3, gil::boundary_option::extend_zero);
+
+ BOOST_TEST(gil::equal_pixels(out_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_row_with_padded)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ auto src_sub_view = gil::subimage_view(src_view, 0, 1, 9, 7);
+
+ auto output = gil::extend_row(src_sub_view, 1, gil::boundary_option::extend_padded);
+
+ BOOST_TEST(gil::equal_pixels(src_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_col_with_constant)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(11, 9, reinterpret_cast<const gil::gray8_pixel_t *>(col_output_constant), 11);
+
+ auto output = gil::extend_col(src_view, 1, gil::boundary_option::extend_constant);
+
+ BOOST_TEST(gil::equal_pixels(out_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_col_with_zero)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(13, 9, reinterpret_cast<const gil::gray8_pixel_t *>(col_output_zero), 13);
+
+ auto output = gil::extend_col(src_view, 2, gil::boundary_option::extend_zero);
+
+ BOOST_TEST(gil::equal_pixels(out_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_col_with_padded)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ auto src_sub_view = gil::subimage_view(src_view, 1, 0, 7, 9);
+
+ auto output = gil::extend_col(src_sub_view, 1, gil::boundary_option::extend_padded);
+
+ BOOST_TEST(gil::equal_pixels(src_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_img_with_constant)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(13, 13, reinterpret_cast<const gil::gray8_pixel_t *>(boundary_output_constant), 13);
+
+ auto output = gil::extend_boundary(src_view, 2, gil::boundary_option::extend_constant);
+
+ BOOST_TEST(gil::equal_pixels(out_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_img_with_zero)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ gil::gray8c_view_t out_view =
+ gil::interleaved_view(13, 13, reinterpret_cast<const gil::gray8_pixel_t *>(boundary_output_zero), 13);
+
+ auto output = gil::extend_boundary(src_view, 2, gil::boundary_option::extend_zero);
+
+ BOOST_TEST(gil::equal_pixels(out_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_CASE(extend_img_with_padded)
+{
+ gil::gray8c_view_t src_view =
+ gil::interleaved_view(9, 9, reinterpret_cast<const gil::gray8_pixel_t *>(img), 9);
+
+ auto src_sub_view = gil::subimage_view(src_view, 1, 1, 7, 7);
+
+ auto output = gil::extend_boundary(src_sub_view, 1, gil::boundary_option::extend_padded);
+
+ BOOST_TEST(gil::equal_pixels(src_view, gil::view(output)));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/kernel.cpp b/src/boost/libs/gil/test/extension/numeric/kernel.cpp
new file mode 100644
index 00000000..de273a4b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/kernel.cpp
@@ -0,0 +1,307 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+// Copyright 2019 Miral Shah <miralshah2211@gmail.com>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#define BOOST_DISABLE_ASSERTS 1 // kernel_1d_adaptor assertions are too strict
+#include <boost/gil/extension/numeric/kernel.hpp>
+#include <vector>
+
+#define BOOST_TEST_MODULE test_ext_numeric_kernel
+#include "unit_test.hpp"
+
+namespace gil = boost::gil;
+
+BOOST_AUTO_TEST_CASE(kernel_1d_default_constructor)
+{
+ gil::kernel_1d<int> k;
+ BOOST_TEST(k.center() == 0);
+ BOOST_TEST(k.left_size() == 0);
+ BOOST_TEST(k.right_size() == -1); // TODO: Why not 0?
+ // std::vector interface
+ BOOST_TEST(k.size() == 0);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_default_constructor)
+{
+ gil::detail::kernel_2d<int> k;
+ BOOST_TEST(k.center_y() == 0);
+ BOOST_TEST(k.center_x() == 0);
+
+ //BOOST_TEST(k.left_size() == 0);
+ //BOOST_TEST(k.right_size() == -1);
+ BOOST_TEST(k.upper_size() == 0);
+ BOOST_TEST(k.lower_size() == -1);
+ // std::vector interface
+ BOOST_TEST(k.size() == 0);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_parameterized_constructor)
+{
+ gil::kernel_1d<int> k(9, 4);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_parameterized_constructor)
+{
+ gil::detail::kernel_2d<int> k(9, 4, 4);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ BOOST_TEST(k.upper_size() == 4);
+ BOOST_TEST(k.lower_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_parameterized_constructor_with_iterator)
+{
+ std::vector<int> v(9);
+ gil::kernel_1d<int> k(v.cbegin(), v.size(), 4);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_parameterized_constructor_with_iterator)
+{
+ std::vector<int> v(81);
+ gil::detail::kernel_2d<int> k(v.cbegin(), v.size(), 4, 4);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ BOOST_TEST(k.upper_size() == 4);
+ BOOST_TEST(k.lower_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_copy_constructor)
+{
+ gil::kernel_1d<int> d(9, 4);
+ gil::kernel_1d<int> k(d);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.center() == d.center());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_copy_constructor)
+{
+ gil::detail::kernel_2d<int> d(9, 4, 4);
+ gil::detail::kernel_2d<int> k(d);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.center_y() == d.center_y());
+ BOOST_TEST(k.center_x() == d.center_x());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ BOOST_TEST(k.lower_size() == d.lower_size());
+ BOOST_TEST(k.upper_size() == d.upper_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_assignment_operator)
+{
+ gil::kernel_1d<int> d(9, 4);
+ gil::kernel_1d<int> k;
+ k = d;
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.center() == d.center());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_assignment_operator)
+{
+ gil::detail::kernel_2d<int> d(9, 4, 4);
+ gil::detail::kernel_2d<int> k;
+ k = d;
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.center_y() == d.center_y());
+ BOOST_TEST(k.center_x() == d.center_x());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ BOOST_TEST(k.lower_size() == d.lower_size());
+ BOOST_TEST(k.upper_size() == d.upper_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_reverse_Kernel)
+{
+ gil::kernel_1d<int> d(12, 4);
+ BOOST_TEST(d.center() == 4);
+ auto k = gil::reverse_kernel(d);
+ BOOST_TEST(k.center() == d.right_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_fixed_default_constructor)
+{
+ gil::kernel_1d_fixed<int, 9> k;
+ BOOST_TEST(k.center() == 0);
+ BOOST_TEST(k.left_size() == 0);
+ BOOST_TEST(k.right_size() == 8); // TODO: Why not 0 or -1 if not set?
+ // std::array interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_fixed_default_constructor)
+{
+ gil::detail::kernel_2d_fixed<int, 9> k;
+ BOOST_TEST(k.center_x() == 0);
+ BOOST_TEST(k.center_y() == 0);
+ BOOST_TEST(k.left_size() == 0);
+ BOOST_TEST(k.right_size() == 8); // TODO: Why not 0 or -1 if not set?
+ BOOST_TEST(k.upper_size() == 0);
+ BOOST_TEST(k.lower_size() == 8);
+ // std::array interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_fixed_parameterized_constructor)
+{
+ gil::kernel_1d_fixed<int, 9> k(4);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_fixed_parameterized_constructor)
+{
+ gil::detail::kernel_2d_fixed<int, 9> k(4, 4);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ BOOST_TEST(k.upper_size() == 4);
+ BOOST_TEST(k.lower_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_fixed_parameterized_constructor_with_iterator)
+{
+ // FIXME: The constructor should throw if v.size() < k.size()
+ std::vector<int> v(9);
+ gil::kernel_1d_fixed<int, 9> k(v.cbegin(), 4);
+ BOOST_TEST((gil::kernel_1d_fixed<int, 9>::static_size) == 9);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_fixed_parameterized_constructor_with_iterator)
+{
+// // FIXME: The constructor should throw if v.size() < k.size()
+ std::array<int, 81> v;
+ gil::detail::kernel_2d_fixed<int, 9> k(v.cbegin(), 4, 4);
+ BOOST_TEST((gil::detail::kernel_2d_fixed<int, 9>::static_size) == 9);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.left_size() == 4);
+ BOOST_TEST(k.right_size() == 4);
+ BOOST_TEST(k.upper_size() == 4);
+ BOOST_TEST(k.lower_size() == 4);
+ // std::vector interface
+ BOOST_TEST(k.size() == 9);
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_fixed_copy_constructor)
+{
+ gil::kernel_1d_fixed<int, 9> d(4);
+ gil::kernel_1d_fixed<int, 9> k(d);
+ BOOST_TEST((gil::kernel_1d_fixed<int, 9>::static_size) == 9);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.center() == d.center());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_fixed_copy_constructor)
+{
+ gil::detail::kernel_2d_fixed<int, 9> d(4, 4);
+ gil::detail::kernel_2d_fixed<int, 9> k(d);
+ BOOST_TEST((gil::detail::kernel_2d_fixed<int, 9>::static_size) == 9);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == d.center_x());
+ BOOST_TEST(k.center_y() == d.center_y());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ BOOST_TEST(k.lower_size() == d.lower_size());
+ BOOST_TEST(k.upper_size() == d.upper_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_fixed_assignment_operator)
+{
+ gil::kernel_1d_fixed<int, 9> d(4);
+ gil::kernel_1d_fixed<int, 9> k;
+ k = d;
+ BOOST_TEST((gil::kernel_1d_fixed<int, 9>::static_size) == 9);
+ BOOST_TEST(k.center() == 4);
+ BOOST_TEST(k.center() == d.center());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_2d_fixed_assignment_operator)
+{
+ gil::detail::kernel_2d_fixed<int, 9> d(4, 4);
+ gil::detail::kernel_2d_fixed<int, 9> k;
+ k = d;
+ BOOST_TEST((gil::detail::kernel_2d_fixed<int, 9>::static_size) == 9);
+ BOOST_TEST(k.center_x() == 4);
+ BOOST_TEST(k.center_y() == 4);
+ BOOST_TEST(k.center_x() == d.center_x());
+ BOOST_TEST(k.center_y() == d.center_y());
+ BOOST_TEST(k.left_size() == d.left_size());
+ BOOST_TEST(k.right_size() == d.right_size());
+ BOOST_TEST(k.lower_size() == d.lower_size());
+ BOOST_TEST(k.upper_size() == d.upper_size());
+ // std::vector interface
+ BOOST_TEST(k.size() == d.size());
+}
+
+BOOST_AUTO_TEST_CASE(kernel_1d_fixed_reverse_Kernel)
+{
+ std::array<int, 3> values = {1, 2, 3};
+ gil::kernel_1d_fixed<int, 3> d(values.begin(), 1);
+ BOOST_TEST((gil::kernel_1d_fixed<int, 3>::static_size) == 3);
+ BOOST_TEST(d == values);
+
+ std::array<int, 3> values_rev = {3, 2, 1};
+ auto k = gil::reverse_kernel(d);
+ BOOST_TEST(k == values_rev);
+}
+
+
diff --git a/src/boost/libs/gil/test/extension/numeric/kernel_1d_fixed_even_size_fail.cpp b/src/boost/libs/gil/test/extension/numeric/kernel_1d_fixed_even_size_fail.cpp
new file mode 100644
index 00000000..a8be85fc
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/kernel_1d_fixed_even_size_fail.cpp
@@ -0,0 +1,16 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil/extension/numeric/kernel.hpp>
+
+namespace gil = boost::gil;
+
+int main()
+{
+ gil::kernel_1d_fixed<int, 0> k0;
+ gil::kernel_1d_fixed<int, 4> k4;
+}
diff --git a/src/boost/libs/gil/test/extension/numeric/matrix3x2.cpp b/src/boost/libs/gil/test/extension/numeric/matrix3x2.cpp
new file mode 100644
index 00000000..452db415
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/matrix3x2.cpp
@@ -0,0 +1,170 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil/extension/numeric/affine.hpp>
+#include <boost/gil/extension/numeric/resample.hpp>
+#include <boost/gil/extension/numeric/sampler.hpp>
+#include <boost/gil.hpp>
+
+#define BOOST_TEST_MODULE test_ext_numeric_matrix3x2
+#include "unit_test.hpp"
+
+namespace gil = boost::gil;
+
+namespace {
+constexpr double HALF_PI = 1.57079632679489661923;
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_default_constructor)
+{
+ gil::matrix3x2<int> m1;
+ BOOST_TEST(m1.a == 1);
+ BOOST_TEST(m1.b == 0);
+ BOOST_TEST(m1.c == 0);
+ BOOST_TEST(m1.d == 1);
+ BOOST_TEST(m1.e == 0);
+ BOOST_TEST(m1.f == 0);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_parameterized_constructor)
+{
+ gil::matrix3x2<int> m1(1, 2, 3, 4, 5, 6);
+ BOOST_TEST(m1.a == 1);
+ BOOST_TEST(m1.b == 2);
+ BOOST_TEST(m1.c == 3);
+ BOOST_TEST(m1.d == 4);
+ BOOST_TEST(m1.e == 5);
+ BOOST_TEST(m1.f == 6);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_copy_constructor)
+{
+ gil::matrix3x2<int> m1(1, 2, 3, 4, 5, 6);
+ gil::matrix3x2<int> m2(m1);
+ BOOST_TEST(m2.a == 1);
+ BOOST_TEST(m2.b == 2);
+ BOOST_TEST(m2.c == 3);
+ BOOST_TEST(m2.d == 4);
+ BOOST_TEST(m2.e == 5);
+ BOOST_TEST(m2.f == 6);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_assignment_operator)
+{
+ gil::matrix3x2<int> m1(1, 2, 3, 4, 5, 6);
+ gil::matrix3x2<int> m2;
+ m2 = m1;
+ BOOST_TEST(m2.a == 1);
+ BOOST_TEST(m2.b == 2);
+ BOOST_TEST(m2.c == 3);
+ BOOST_TEST(m2.d == 4);
+ BOOST_TEST(m2.e == 5);
+ BOOST_TEST(m2.f == 6);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_multiplication_assignment)
+{
+ gil::matrix3x2<int> m1;
+ gil::matrix3x2<int> m2;
+ m2 *= m1;
+ BOOST_TEST(m2.a == 1);
+ BOOST_TEST(m2.b == 0);
+ BOOST_TEST(m2.c == 0);
+ BOOST_TEST(m2.d == 1);
+ BOOST_TEST(m2.e == 0);
+ BOOST_TEST(m2.f == 0);
+
+ gil::matrix3x2<int> m3(0, 0, 0, 0, 0, 0);
+ m2 *= m3;
+ BOOST_TEST(m2.a == 0);
+ BOOST_TEST(m2.b == 0);
+ BOOST_TEST(m2.c == 0);
+ BOOST_TEST(m2.d == 0);
+ BOOST_TEST(m2.e == 0);
+ BOOST_TEST(m2.f == 0);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_matrix3x2_multiplication)
+{
+ gil::matrix3x2<int> m1;
+ gil::matrix3x2<int> m2(0, 0, 0, 0, 0, 0);
+ gil::matrix3x2<int> m3;
+ m3 = m1 * m2;
+ BOOST_TEST(m3.a == 0);
+ BOOST_TEST(m3.b == 0);
+ BOOST_TEST(m3.c == 0);
+ BOOST_TEST(m3.d == 0);
+ BOOST_TEST(m3.e == 0);
+ BOOST_TEST(m3.f == 0);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_vector_multiplication)
+{
+ gil::matrix3x2<int> m1;
+ gil::point<int> v1{2, 4};
+
+ gil::point<int> v2 = v1 * m1;
+ BOOST_TEST(v2.x == 2);
+ BOOST_TEST(v2.y == 4);
+
+ gil::point<int> v3 = gil::transform(m1, v1);
+ BOOST_TEST(v3.x == 2);
+ BOOST_TEST(v3.y == 4);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_get_rotate)
+{
+ auto m1 = gil::matrix3x2<double>::get_rotate(HALF_PI);
+ BOOST_TEST(m1.a == std::cos(HALF_PI), btt::tolerance(0.03));
+ BOOST_TEST(m1.b == 1);
+ BOOST_TEST(m1.c == -1);
+ BOOST_TEST(m1.d == std::cos(HALF_PI), btt::tolerance(0.03));
+ BOOST_TEST(m1.e == 0);
+ BOOST_TEST(m1.f == 0);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_get_scale)
+{
+ gil::matrix3x2<int> m1;
+ m1 = gil::matrix3x2<int>::get_scale(2);
+ BOOST_TEST(m1.a == 2);
+ BOOST_TEST(m1.b == 0);
+ BOOST_TEST(m1.c == 0);
+ BOOST_TEST(m1.d == 2);
+ BOOST_TEST(m1.e == 0);
+ BOOST_TEST(m1.f == 0);
+ m1 = gil::matrix3x2<int>::get_scale(2, 4);
+ BOOST_TEST(m1.a == 2);
+ BOOST_TEST(m1.d == 4);
+ m1 = gil::matrix3x2<int>::get_scale(gil::point<int>{4, 8});
+ BOOST_TEST(m1.a == 4);
+ BOOST_TEST(m1.d == 8);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_get_translate)
+{
+ gil::matrix3x2<int> m1;
+ m1 = gil::matrix3x2<int>::get_translate(2, 4);
+ BOOST_TEST(m1.a == 1);
+ BOOST_TEST(m1.b == 0);
+ BOOST_TEST(m1.c == 0);
+ BOOST_TEST(m1.d == 1);
+ BOOST_TEST(m1.e == 2);
+ BOOST_TEST(m1.f == 4);
+ m1 = gil::matrix3x2<int>::get_translate(gil::point<int>{4, 8});
+ BOOST_TEST(m1.e == 4);
+ BOOST_TEST(m1.f == 8);
+}
+
+BOOST_AUTO_TEST_CASE(matrix3x2_transform)
+{
+ gil::matrix3x2<int> m1;
+ gil::point<int> v1{2, 4};
+ gil::point<int> v2 = gil::transform(m1, v1);
+ BOOST_TEST(v2.x == 2);
+ BOOST_TEST(v2.y == 4);
+}
diff --git a/src/boost/libs/gil/test/extension/numeric/numeric.cpp b/src/boost/libs/gil/test/extension/numeric/numeric.cpp
new file mode 100644
index 00000000..48f68b35
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/numeric.cpp
@@ -0,0 +1,177 @@
+//
+// Copyright 2013 Krzysztof Czainski
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil/image.hpp>
+#include <boost/gil/typedefs.hpp>
+
+#include <boost/gil/extension/numeric/resample.hpp>
+#include <boost/gil/extension/numeric/sampler.hpp>
+
+#include <boost/assert.hpp>
+
+#define BOOST_TEST_MODULE test_ext_numeric_numeric
+#include "unit_test.hpp"
+
+using namespace boost;
+using namespace gil;
+
+template < class F, class I >
+struct TestMapFn
+{
+ using point_t = point<F>;
+ using result_type = point_t;
+ result_type operator()(point<I> const& src) const
+ {
+ F x = static_cast<F>( src.x ) - 0.5;
+ F y = static_cast<F>( src.y ) - 0.5;
+ return { x, y };
+ }
+};
+
+namespace boost { namespace gil {
+
+// NOTE: I suggest this could be the default behavior:
+
+template <typename T> struct mapping_traits;
+
+template < class F, class I >
+struct mapping_traits<TestMapFn<F, I>>
+{
+ using result_type = typename TestMapFn<F, I>::result_type;
+};
+
+template <class F, class I>
+inline point<F> transform(TestMapFn<F, I> const& mf, point<I> const& src)
+{
+ return mf(src);
+}
+
+}} // boost::gil
+
+
+BOOST_AUTO_TEST_SUITE(Numeric_Tests)
+
+BOOST_AUTO_TEST_CASE( pixel_numeric_operations_plus )
+{
+ rgb8_pixel_t a( 10, 20, 30 );
+ bgr8_pixel_t b( 30, 20, 10 );
+
+ pixel_plus_t< rgb8_pixel_t
+ , bgr8_pixel_t
+ , rgb8_pixel_t
+ > op;
+ rgb8_pixel_t c = op( a, b );
+
+ BOOST_ASSERT( get_color( c, red_t() ) == 20 );
+ BOOST_ASSERT( get_color( c, green_t() ) == 40 );
+ BOOST_ASSERT( get_color( c, blue_t() ) == 60 );
+
+ pixel_plus_t< rgb8_pixel_t
+ , bgr8_pixel_t
+ , bgr8_pixel_t
+ > op2;
+ bgr8_pixel_t d = op2( a, b );
+
+ BOOST_ASSERT( get_color( d, red_t() ) == 20 );
+ BOOST_ASSERT( get_color( d, green_t() ) == 40 );
+ BOOST_ASSERT( get_color( d, blue_t() ) == 60 );
+}
+
+BOOST_AUTO_TEST_CASE( pixel_numeric_operations_multiply )
+{
+ rgb32f_pixel_t a( 1.f, 2.f, 3.f );
+ bgr32f_pixel_t b( 2.f, 2.f, 2.f );
+
+ pixel_multiply_t< rgb32f_pixel_t
+ , bgr32f_pixel_t
+ , rgb32f_pixel_t
+ > op;
+ rgb32f_pixel_t c = op( a, b );
+
+ float epsilon = 1e-6f;
+ BOOST_CHECK_CLOSE( static_cast<float>( get_color( c, red_t() )), 2.f, epsilon );
+ BOOST_CHECK_CLOSE( static_cast<float>( get_color( c, green_t() )), 4.f, epsilon );
+ BOOST_CHECK_CLOSE( static_cast<float>( get_color( c, blue_t() )), 6.f, epsilon );
+}
+
+BOOST_AUTO_TEST_CASE( pixel_numeric_operations_divide )
+{
+ // integer
+ {
+ rgb8_pixel_t a( 10, 20, 30 );
+ bgr8_pixel_t b( 2, 2, 2 );
+
+ pixel_divide_t< rgb8_pixel_t
+ , bgr8_pixel_t
+ , rgb8_pixel_t
+ > op;
+ rgb32f_pixel_t c = op( a, b );
+
+ BOOST_ASSERT( get_color( c, red_t() ) == 5 );
+ BOOST_ASSERT( get_color( c, green_t() ) == 10 );
+ BOOST_ASSERT( get_color( c, blue_t() ) == 15 );
+ }
+
+ // float
+ {
+ rgb32f_pixel_t a( 1.f, 2.f, 3.f );
+ bgr32f_pixel_t b( 2.f, 2.f, 2.f );
+
+ pixel_divide_t< rgb32f_pixel_t
+ , bgr32f_pixel_t
+ , rgb32f_pixel_t
+ > op;
+ rgb32f_pixel_t c = op( a, b );
+
+ float epsilon = 1e-6f;
+ BOOST_CHECK_CLOSE( static_cast< float >( get_color( c, red_t() )), 0.5f, epsilon );
+ BOOST_CHECK_CLOSE( static_cast< float >( get_color( c, green_t() )), 1.f, epsilon );
+ BOOST_CHECK_CLOSE( static_cast< float >( get_color( c, blue_t() )), 1.5f, epsilon );
+ }
+}
+
+BOOST_AUTO_TEST_CASE(bilinear_sampler_test)
+{
+ // R G B
+ // G W R
+ // B R G
+ rgb8_image_t img(3,3);
+ rgb8_view_t v = view(img);
+ v(0,0) = v(1,2) = v(2,1) = rgb8_pixel_t(128,0,0);
+ v(0,1) = v(1,0) = v(2,2) = rgb8_pixel_t(0,128,0);
+ v(0,2) = v(2,0) = rgb8_pixel_t(0,0,128);
+ v(1,1) = rgb8_pixel_t(128,128,128);
+
+ rgb8_image_t dimg(4,4);
+ rgb8c_view_t dv = const_view(dimg);
+
+ TestMapFn<double,rgb8_image_t::coord_t> mf;
+
+ resample_pixels(const_view(img), view(dimg), mf, bilinear_sampler());
+
+ BOOST_ASSERT(rgb8_pixel_t(128,0,0) == dv(0,0));
+ BOOST_ASSERT(rgb8_pixel_t(64,64,0) == dv(0,1));
+ BOOST_ASSERT(rgb8_pixel_t(0,64,64) == dv(0,2));
+ BOOST_ASSERT(rgb8_pixel_t(0,0,128) == dv(0,3));
+
+ BOOST_ASSERT(rgb8_pixel_t(64,64,0) == dv(1,0));
+ BOOST_ASSERT(rgb8_pixel_t(64,96,32) == dv(1,1));
+ BOOST_ASSERT(rgb8_pixel_t(64,64,64) == dv(1,2));
+ BOOST_ASSERT(rgb8_pixel_t(64,0,64) == dv(1,3));
+
+ BOOST_ASSERT(rgb8_pixel_t(0,64,64) == dv(2,0));
+ BOOST_ASSERT(rgb8_pixel_t(64,64,64) == dv(2,1));
+ BOOST_ASSERT(rgb8_pixel_t(96,64,32) == dv(2,2));
+ BOOST_ASSERT(rgb8_pixel_t(64,64,0) == dv(2,3));
+
+ BOOST_ASSERT(rgb8_pixel_t(0,0,128) == dv(3,0));
+ BOOST_ASSERT(rgb8_pixel_t(64,0,64) == dv(3,1));
+ BOOST_ASSERT(rgb8_pixel_t(64,64,0) == dv(3,2));
+ BOOST_ASSERT(rgb8_pixel_t(0,128,0) == dv(3,3));
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/numeric/pixel_numeric_operations.cpp b/src/boost/libs/gil/test/extension/numeric/pixel_numeric_operations.cpp
new file mode 100644
index 00000000..eb4f1544
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/pixel_numeric_operations.cpp
@@ -0,0 +1,278 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/pixel_numeric_operations.hpp>
+
+#include <tuple>
+#include <type_traits>
+
+#define BOOST_TEST_MODULE test_ext_numeric_pixel_numeric_operations
+#include "unit_test.hpp"
+#include "unit_test_utility.hpp"
+#include "core/image/test_fixture.hpp" // random_value
+#include "core/pixel/test_fixture.hpp"
+
+namespace gil = boost::gil;
+namespace fixture = boost::gil::test::fixture;
+
+BOOST_AUTO_TEST_SUITE(pixel_plus_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(plus_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_plus_t<pixel_t, pixel_t, pixel_t> f;
+ {
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ BOOST_TEST(f(p0, p0) == p0);
+ }
+ {
+ pixel_t p1;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+ pixel_t r2;
+ gil::static_fill(r2, static_cast<channel_t>(2));
+ BOOST_TEST(f(p1, p1) == r2);
+ }
+ {
+ // Generates pixels with consecutive channel values: {1} or {1,2,3} or {1,2,3,4} etc.
+ fixture::consecutive_value<channel_t> g(1);
+ pixel_t p;
+ gil::static_generate(p, [&g]() { return g(); });
+ auto const r = f(p, p);
+ BOOST_TEST(r != p);
+ BOOST_TEST(gil::at_c<0>(r) == (gil::at_c<0>(p) + gil::at_c<0>(p)));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_plus_t
+
+BOOST_AUTO_TEST_SUITE(pixel_minus_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(minus_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_minus_t<pixel_t, pixel_t, pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ BOOST_TEST(f(p0, p0) == p0);
+ {
+ pixel_t p1, p2;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+ gil::static_fill(p2, static_cast<channel_t>(2));
+ pixel_t r1;
+ gil::static_fill(r1, static_cast<channel_t>(1));
+ BOOST_TEST(f(p2, p1) == r1);
+ }
+ {
+ // Generates pixels with consecutive channel values: {1} or {1,2,3} or {1,2,3,4} etc.
+ fixture::consecutive_value<channel_t> g(1);
+ pixel_t p;
+ gil::static_generate(p, [&g]() { return g(); });
+ BOOST_TEST(f(p, p) == p0);
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_minus_t
+
+BOOST_AUTO_TEST_SUITE(pixel_multiplies_scalar_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_multiplies_scalar_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_multiplies_scalar_t<pixel_t, channel_t, pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ BOOST_TEST(f(p0, 0) == p0);
+
+ {
+ pixel_t p1;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+ BOOST_TEST(f(p1, 0) == p0);
+ BOOST_TEST(f(p1, 1) == p1);
+ }
+ {
+ // Generates pixels with consecutive channel values: {1} or {1,2,3} or {1,2,3,4} etc.
+ fixture::consecutive_value<channel_t> g(1);
+ pixel_t p;
+ gil::static_generate(p, [&g]() { return g(); });
+
+ // check first channel value is doubled
+ auto const r = f(p, 2);
+ BOOST_TEST(r != p);
+ BOOST_TEST(gil::at_c<0>(r) == (gil::at_c<0>(p) * 2));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_multiplies_scalar_t
+
+BOOST_AUTO_TEST_SUITE(pixel_multiply_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_multiply_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_multiply_t<pixel_t, pixel_t, pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ BOOST_TEST(f(p0, p0) == p0);
+
+ pixel_t p1;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+ BOOST_TEST(f(p1, p1) == p1);
+
+ pixel_t p2;
+ gil::static_fill(p2, static_cast<channel_t>(2));
+ BOOST_TEST(f(p1, p2) == p2);
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_multiply_t
+
+BOOST_AUTO_TEST_SUITE(pixel_divides_scalar_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_divides_scalar_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_divides_scalar_t<pixel_t, channel_t, pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ BOOST_TEST(f(p0, 1) == p0);
+
+ pixel_t p1;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+ BOOST_TEST(f(p1, 1) == p1);
+
+ pixel_t p2;
+ gil::static_fill(p2, static_cast<channel_t>(2));
+ BOOST_TEST(f(p2, 2) == p1);
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_divides_scalar_t
+
+BOOST_AUTO_TEST_SUITE(pixel_divide_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_divide_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_divide_t<pixel_t, pixel_t, pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ pixel_t p1;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+ BOOST_TEST(f(p0, p1) == p0);
+ BOOST_TEST(f(p1, p1) == p1);
+
+ pixel_t p2;
+ gil::static_fill(p2, static_cast<channel_t>(2));
+ BOOST_TEST(f(p2, p1) == p2);
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_divide_t
+
+BOOST_AUTO_TEST_SUITE(pixel_halves_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_halves_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_halves_t<pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ pixel_t p1;
+ gil::static_fill(p1, static_cast<channel_t>(1));
+
+ {
+ auto p = p0;
+ BOOST_TEST(f(p) == p0);
+ }
+ {
+ auto p = p1;
+ BOOST_TEST(f(p) == p0); // truncates toward Zero
+ }
+ {
+ pixel_t p2;
+ gil::static_fill(p2, static_cast<channel_t>(2));
+ BOOST_TEST(f(p2) == p1);
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_halves_t
+
+BOOST_AUTO_TEST_SUITE(pixel_zeros_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_zeros_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_zeros_t<pixel_t> f;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ {
+ auto p = p0;
+ BOOST_TEST(f(p) == p0);
+ }
+ {
+ fixture::consecutive_value<channel_t> g(1);
+ pixel_t p;
+ gil::static_generate(p, [&g]() { return g(); });
+ BOOST_TEST(f(p) == p0);
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_zeros_t
+
+BOOST_AUTO_TEST_SUITE(zero_channels)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(zero_channels_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+
+ pixel_t p0;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ {
+ auto p = p0;
+ gil::zero_channels(p);
+ BOOST_TEST(p == p0);
+ }
+ {
+ fixture::consecutive_value<channel_t> g(1);
+ pixel_t p;
+ gil::static_generate(p, [&g]() { return g(); });
+ gil::zero_channels(p);
+ BOOST_TEST(p == p0);
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // zero_channels
+
+BOOST_AUTO_TEST_SUITE(pixel_assigns_t)
+
+BOOST_AUTO_TEST_CASE_TEMPLATE(pixel_assigns_integer_same_types, pixel_t, fixture::pixel_integer_types)
+{
+ using channel_t = typename gil::channel_type<pixel_t>::type;
+ gil::pixel_assigns_t<pixel_t, pixel_t> f;
+
+ {
+ pixel_t p0, r;
+ gil::static_fill(p0, static_cast<channel_t>(0));
+ f(p0, r);
+ BOOST_TEST(p0 == r);
+ }
+ {
+ fixture::consecutive_value<channel_t> g(1);
+ pixel_t p, r;
+ gil::static_generate(p, [&g]() { return g(); });
+ f(p, r);
+ BOOST_TEST(p == r);
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END() // pixel_assigns_t
diff --git a/src/boost/libs/gil/test/extension/numeric/test_fixture.hpp b/src/boost/libs/gil/test/extension/numeric/test_fixture.hpp
new file mode 100644
index 00000000..bfd5cf6f
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/numeric/test_fixture.hpp
@@ -0,0 +1,30 @@
+//
+// Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/numeric/kernel.hpp>
+#include <boost/assert.hpp>
+
+#include <initializer_list>
+#include <type_traits>
+
+namespace boost { namespace gil {
+
+namespace test { namespace fixture {
+
+template <typename T>
+auto create_kernel(std::initializer_list<T> const& values)
+ -> gil::kernel_1d<T>
+{
+ static_assert(std::is_arithmetic<T>::value,
+ "kernel value type should be integral or floating-point type");
+ BOOST_ASSERT_MSG((values.size() - 1) % 2 == 0, "expected odd number of kernel values");
+ gil::kernel_1d<T> kernel(values.begin(), values.size(), (values.size() - 1) / 2);
+ return kernel;
+}
+
+}}}} // namespace boost::gil::test::fixture
diff --git a/src/boost/libs/gil/test/extension/toolbox/CMakeLists.txt b/src/boost/libs/gil/test/extension/toolbox/CMakeLists.txt
new file mode 100644
index 00000000..7288f14b
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/CMakeLists.txt
@@ -0,0 +1,49 @@
+#
+# Copyright (c) 2017 Mateusz Loskot <mateusz at loskot dot net>
+# All rights reserved.
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+#
+message(STATUS "Boost.GIL: Configuring tests in test/extension/toolbox")
+
+foreach(_name
+ all)
+ set(_test t_ext_toolbox_${_name})
+ set(_target test_ext_toolbox_${_name})
+
+ add_executable(${_target} "")
+ target_sources(${_target}
+ PRIVATE
+ test.cpp
+ channel_type.cpp
+ channel_view.cpp
+ cmyka.cpp
+ get_num_bits.cpp
+ get_pixel_type.cpp
+ gray_alpha.cpp
+ gray_to_rgba.cpp
+ hsl_hsv_test.cpp
+ indexed_image_test.cpp
+ is_bit_aligned.cpp
+ is_homogeneous.cpp
+ is_similar.cpp
+ lab_test.cpp
+ pixel_bit_size.cpp
+ rgb_to_luminance.cpp
+ # TODO: Add subchroma_image.cpp after fixing run-time failure,
+ # for details see https://github.com/boostorg/gil/pull/164
+ #subchroma_image.cpp
+ xyz_test.cpp)
+ target_link_libraries(${_target}
+ PRIVATE
+ gil_compile_options
+ gil_include_directories
+ gil_dependencies)
+ add_test(NAME ${_test} COMMAND ${_target})
+
+ unset(_name)
+ unset(_target)
+ unset(_test)
+endforeach()
diff --git a/src/boost/libs/gil/test/extension/toolbox/Jamfile b/src/boost/libs/gil/test/extension/toolbox/Jamfile
new file mode 100644
index 00000000..3f6c3fc2
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/Jamfile
@@ -0,0 +1,40 @@
+# Boost.GIL (Generic Image Library) - Toolbox tests
+#
+# Copyright (c) 2012 Christian Henning
+# Copyright (c) 2012 Mateusz Loskot <mateusz@loskot.net>
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+import testing ;
+
+project
+ : requirements
+ <library>/boost/test//boost_unit_test_framework
+ <link>shared:<define>BOOST_TEST_DYN_LINK=1
+ ;
+
+alias headers : [ generate_self_contained_headers extension/toolbox ] ;
+
+run
+ test.cpp
+ channel_type.cpp
+ channel_view.cpp
+ cmyka.cpp
+ get_num_bits.cpp
+ get_pixel_type.cpp
+ gray_alpha.cpp
+ gray_to_rgba.cpp
+ hsl_hsv_test.cpp
+ indexed_image_test.cpp
+ is_bit_aligned.cpp
+ is_homogeneous.cpp
+ is_similar.cpp
+ lab_test.cpp
+ pixel_bit_size.cpp
+ rgb_to_luminance.cpp
+ # TODO: Add subchroma_image.cpp after fixing run-time failure,
+ # for details see https://github.com/boostorg/gil/pull/164
+ #subchroma_image.cpp
+ xyz_test.cpp
+ ;
diff --git a/src/boost/libs/gil/test/extension/toolbox/channel_type.cpp b/src/boost/libs/gil/test/extension/toolbox/channel_type.cpp
new file mode 100644
index 00000000..35f98f15
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/channel_type.cpp
@@ -0,0 +1,43 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil/extension/toolbox/metafunctions/channel_type.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/is_bit_aligned.hpp>
+
+#include <boost/gil/channel.hpp>
+#include <boost/gil/detail/is_channel_integral.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <type_traits>
+
+namespace bg = boost::gil;
+
+BOOST_AUTO_TEST_SUITE(toolbox_tests)
+
+BOOST_AUTO_TEST_CASE(channel_type_test)
+{
+ static_assert(std::is_same
+ <
+ unsigned char,
+ bg::channel_type<bg::rgb8_pixel_t>::type
+ >::value, "");
+
+ // float32_t is a scoped_channel_value object
+ static_assert(std::is_same
+ <
+ bg::float32_t,
+ bg::channel_type<bg::rgba32f_pixel_t>::type
+ >::value, "");
+
+ // channel_type for bit_aligned images doesn't work with standard gil.
+ using image_t = bg::bit_aligned_image4_type<4, 4, 4, 4, bg::rgb_layout_t>::type;
+ using channel_t = bg::channel_type<image_t::view_t::reference>::type;
+ static_assert(bg::detail::is_channel_integral<channel_t>::value, "");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/channel_view.cpp b/src/boost/libs/gil/test/extension/toolbox/channel_view.cpp
new file mode 100644
index 00000000..c4193043
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/channel_view.cpp
@@ -0,0 +1,43 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/channel_view.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <type_traits>
+
+namespace bg = boost::gil;
+
+BOOST_AUTO_TEST_SUITE(toolbox_tests)
+
+BOOST_AUTO_TEST_CASE(channel_view_test)
+{
+ using image_t = bg::rgb8_image_t;
+ image_t img(100, 100);
+
+ using kth_channel_view_t
+ = bg::kth_channel_view_type<0, bg::rgb8_view_t::const_t>::type;
+ using channel_view_t
+ = bg::channel_view_type<bg::red_t, bg::rgb8_view_t::const_t>::type;
+
+ static_assert(std::is_same
+ <
+ kth_channel_view_t,
+ channel_view_t
+ >::value,
+ "");
+
+ kth_channel_view_t const kth0 = bg::kth_channel_view<0>(bg::const_view(img));
+ BOOST_TEST(kth0.num_channels() == 1u);
+
+ channel_view_t const red = bg::channel_view<bg::red_t>(bg::const_view(img));
+ BOOST_TEST(red.num_channels() == 1u);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/cmyka.cpp b/src/boost/libs/gil/test/extension/toolbox/cmyka.cpp
new file mode 100644
index 00000000..bcabff23
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/cmyka.cpp
@@ -0,0 +1,30 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil/extension/toolbox/color_spaces/cmyka.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( cmyka_test )
+{
+ cmyka8_pixel_t a( 10, 20, 30, 40, 50 );
+ rgba8_pixel_t b;
+ cmyka8_pixel_t c;
+
+ color_convert( a, b );
+
+ // no rgba to cmyka conversion implemented
+ //color_convert( b, c );
+ //BOOST_ASSERT( at_c<0>(a) == at_c<0>(c) );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/fabscript b/src/boost/libs/gil/test/extension/toolbox/fabscript
new file mode 100644
index 00000000..6f52f82e
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/fabscript
@@ -0,0 +1,44 @@
+# -*- python -*-
+#
+# Copyright (c) 2017 Stefan Seefeld
+# All rights reserved.
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+from faber import platform
+from faber.feature import set
+from faber.tools.compiler import define, libs, linkpath
+from faber.artefacts.binary import binary
+from faber.test import test, report, fail
+from os.path import join
+
+boost_suffix = options.get_with('boost-suffix')
+boost_suffix = '-' + boost_suffix if boost_suffix else ''
+boost_unit_test_framework = 'boost_unit_test_framework' + boost_suffix
+boost_filesystem = 'boost_filesystem' + boost_suffix
+boost_system = 'boost_system' + boost_suffix
+
+test_features = set(define('BOOST_TEST_DYN_LINK'),
+ libs(boost_unit_test_framework,
+ boost_system,
+ boost_filesystem))
+
+
+def gil_test(name, sources, features, condition=True):
+ return test(name, binary(name, sources, features=features, condition=condition))
+
+
+# TODO: Add `subchroma_image.cpp` after fixing run-time failure,
+# for details see https://github.com/boostorg/gil/pull/164
+tests = [gil_test('toolbox',
+ ['test.cpp', 'channel_type.cpp', 'channel_view.cpp', 'cmyka.cpp',
+ 'get_num_bits.cpp', 'get_pixel_type.cpp', 'gray_alpha.cpp', 'gray_to_rgba.cpp',
+ 'hsl_hsv_test.cpp', 'indexed_image_test.cpp', 'is_bit_aligned.cpp',
+ 'is_homogeneous.cpp', 'is_similar.cpp', 'lab_test.cpp', 'pixel_bit_size.cpp',
+ 'rgb_to_luminance.cpp', 'xyz_test.cpp'],
+ features=test_features),
+]
+
+default = report('report', tests, fail_on_failures=True)
diff --git a/src/boost/libs/gil/test/extension/toolbox/get_num_bits.cpp b/src/boost/libs/gil/test/extension/toolbox/get_num_bits.cpp
new file mode 100644
index 00000000..9b9ab9d5
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/get_num_bits.cpp
@@ -0,0 +1,41 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/channel_type.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/get_num_bits.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( get_num_bits_test )
+{
+ using image_t = bit_aligned_image4_type<4, 4, 4, 4, rgb_layout_t>::type;
+
+ using channel_t = channel_type<image_t::view_t::reference>::type;
+ static_assert(get_num_bits<channel_t>::value == 4, "");
+
+ using const_channel_t = channel_type<image_t::const_view_t::reference>::type;
+ static_assert(get_num_bits<const_channel_t>::value == 4, "");
+
+ using bits_t = packed_channel_value<23>;
+ static_assert(get_num_bits<bits_t>::value == 23, "");
+ static_assert(get_num_bits<bits_t const>::value == 23, "");
+
+ static_assert(get_num_bits<unsigned char >::value == 8, "");
+ static_assert(get_num_bits<unsigned char const>::value == 8, "");
+
+ static_assert(get_num_bits<channel_type<gray8_image_t::view_t::value_type>::type>::value == 8, "");
+ static_assert(get_num_bits<channel_type<rgba32_image_t::view_t::value_type>::type>::value == 32, "");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
diff --git a/src/boost/libs/gil/test/extension/toolbox/get_pixel_type.cpp b/src/boost/libs/gil/test/extension/toolbox/get_pixel_type.cpp
new file mode 100644
index 00000000..d0dc57ab
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/get_pixel_type.cpp
@@ -0,0 +1,41 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/get_pixel_type.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <type_traits>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( get_pixel_type_test )
+{
+ {
+ using image_t = bit_aligned_image3_type<4, 15, 4, rgb_layout_t>::type;
+ static_assert(std::is_same
+ <
+ get_pixel_type<image_t::view_t>::type,
+ image_t::view_t::reference
+ >::value, "");
+ }
+
+ {
+ using image_t = rgb8_image_t;
+ static_assert(std::is_same
+ <
+ get_pixel_type<image_t::view_t>::type,
+ image_t::view_t::value_type
+ >::value, "");
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/gray_alpha.cpp b/src/boost/libs/gil/test/extension/toolbox/gray_alpha.cpp
new file mode 100644
index 00000000..67e4c1dc
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/gray_alpha.cpp
@@ -0,0 +1,43 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil/extension/toolbox/color_spaces/gray_alpha.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( gray_alpha_test )
+{
+ {
+ gray_alpha8_pixel_t a( 10, 20 );
+ gray8_pixel_t b;
+
+ color_convert( a, b );
+ }
+
+ {
+ gray_alpha8_pixel_t a( 10, 20 );
+ rgb8_pixel_t b;
+ gray_alpha8_pixel_t c;
+
+ color_convert( a, b );
+ }
+
+ {
+ gray_alpha8_pixel_t a( 10, 20 );
+ rgba8_pixel_t b;
+ gray_alpha8_pixel_t c;
+
+ color_convert( a, b );
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/gray_to_rgba.cpp b/src/boost/libs/gil/test/extension/toolbox/gray_to_rgba.cpp
new file mode 100644
index 00000000..378f39ef
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/gray_to_rgba.cpp
@@ -0,0 +1,26 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/test/unit_test.hpp>
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/color_converters/gray_to_rgba.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( gray_to_rgba_test )
+{
+ gray8_pixel_t a( 45 );
+ rgba8_pixel_t b;
+
+ color_convert( a, b );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/hsl_hsv_test.cpp b/src/boost/libs/gil/test/extension/toolbox/hsl_hsv_test.cpp
new file mode 100644
index 00000000..9027c344
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/hsl_hsv_test.cpp
@@ -0,0 +1,75 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/color_spaces/hsl.hpp>
+#include <boost/gil/extension/toolbox/color_spaces/hsv.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( hsl_hsv_test )
+{
+ {
+ rgb8_pixel_t p( 128, 0, 128 );
+
+ hsl32f_pixel_t h;
+
+ color_convert( p, h );
+ color_convert( h, p );
+ }
+
+ {
+ size_t width = 640;
+ size_t height = 480;
+
+ hsl32f_image_t hsl_img( width, height );
+ hsv32f_image_t hsv_img( width, height );
+
+ for( size_t y = 0; y < height; y++ )
+ {
+ hsl32f_view_t::x_iterator hsl_x_it = view( hsl_img ).row_begin( y );
+ hsv32f_view_t::x_iterator hsv_x_it = view( hsv_img ).row_begin( y );
+
+ float v = static_cast<float>( height - y )
+ / height;
+
+ for( size_t x = 0; x < width; x++ )
+ {
+ float hue = ( x + 1.f ) / width;
+
+ hsl_x_it[x] = hsl32f_pixel_t( hue, 1.0, v );
+ hsv_x_it[x] = hsv32f_pixel_t( hue, 1.0, v );
+ }
+ }
+ }
+
+ {
+ rgb8_image_t rgb_img( 640, 480 );
+ fill_pixels( view(rgb_img), rgb8_pixel_t( 255, 128, 64 ));
+ hsl32f_image_t hsl_img( view( rgb_img ).dimensions() );
+
+ copy_pixels( color_converted_view<hsl32f_pixel_t>( view( rgb_img ))
+ , view( hsl_img ));
+ }
+
+ {
+ rgb8_image_t rgb_img( 640, 480 );
+ fill_pixels( view(rgb_img), rgb8_pixel_t( 255, 128, 64 ));
+ hsv32f_image_t hsv_img( view( rgb_img ).dimensions() );
+
+ copy_pixels( color_converted_view<hsv32f_pixel_t>( view( rgb_img ))
+ , view( hsv_img ));
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/indexed_image_test.cpp b/src/boost/libs/gil/test/extension/toolbox/indexed_image_test.cpp
new file mode 100644
index 00000000..f546fa07
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/indexed_image_test.cpp
@@ -0,0 +1,150 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/image_types/indexed_image.hpp>
+
+#include <boost/assert.hpp>
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+
+namespace bg = boost::gil;
+
+BOOST_AUTO_TEST_SUITE(toolbox_tests)
+
+BOOST_AUTO_TEST_CASE(index_image_test)
+{
+ auto const pixel_generator = []() -> bg::rgb8_pixel_t {
+ static int i = 0;
+ i = (i > 255) ? 0 : (i + 1);
+ auto const i8 = static_cast<std::uint8_t>(i);
+ return bg::rgb8_pixel_t(i8, i8, i8);
+ };
+
+ {
+ bg::indexed_image<std::uint8_t, bg::rgb8_pixel_t> img(640, 480);
+ bg::fill_pixels(bg::view(img), bg::rgb8_pixel_t(255, 0, 0));
+
+ bg::rgb8_pixel_t const p = *bg::view(img).xy_at(10, 10);
+ BOOST_TEST(p[0] == 255);
+ }
+ {
+ using image_t = bg::indexed_image<bg::gray8_pixel_t, bg::rgb8_pixel_t>;
+ image_t img(640, 480, 256);
+
+ generate_pixels(img.get_indices_view(), []() -> bg::gray8_pixel_t
+ {
+ static int i = 0;
+ i = (i > 255) ? 0 : (i + 1);
+ auto const i8 = static_cast<std::uint8_t>(i);
+ return bg::gray8_pixel_t(i8);
+ });
+ generate_pixels(img.get_palette_view(), pixel_generator);
+
+ bg::gray8_pixel_t index{0};
+ index = *img.get_indices_view().xy_at(0, 0); // verify values along first row
+ BOOST_TEST(static_cast<int>(index) == (0 + 1));
+ index = *img.get_indices_view().xy_at(128, 0);
+ BOOST_TEST(static_cast<int>(index) == (128 + 1));
+ // verify wrapping of value by the pixels generator above
+ index = *img.get_indices_view().xy_at(255, 0);
+ BOOST_TEST(static_cast<int>(index) == 0);
+
+ // access via member function
+ bg::rgb8_pixel_t const pixel1 = *img.get_palette_view().xy_at(index, 0);
+ BOOST_TEST(pixel1[0] == pixel1[1]);
+ BOOST_TEST(pixel1[1] == pixel1[2]);
+
+ // access via free function
+ bg::rgb8_pixel_t const pixel2 = *bg::view(img).xy_at(10, 1);
+ BOOST_TEST(pixel2[0] == pixel2[1]);
+ BOOST_TEST(pixel2[1] == pixel2[2]);
+ }
+ {
+ using image_t = bg::indexed_image<bg::gray8_pixel_t, bg::rgb8_pixel_t>;
+ image_t img(640, 480, 256);
+
+ generate_pixels(img.get_indices_view(), []() -> uint8_t
+ {
+ static int i = 0;
+ i = (i > 255) ? 0 : (i + 1);
+ return static_cast<std::uint8_t>(i);
+ });
+ generate_pixels(img.get_palette_view(), pixel_generator);
+
+ std::uint8_t index = *img.get_indices_view().xy_at(128, 0);
+ BOOST_TEST(static_cast<int>(index) == (128 + 1));
+
+ bg::rgb8_pixel_t const pixel1 = *img.get_palette_view().xy_at(index, 0);
+ BOOST_TEST(pixel1[0] == pixel1[1]);
+ BOOST_TEST(pixel1[1] == pixel1[2]);
+
+ bg::rgb8_pixel_t const pixel2 = *view(img).xy_at(10, 1);
+ BOOST_TEST(pixel2[0] == pixel2[1]);
+ BOOST_TEST(pixel2[1] == pixel2[2]);
+ }
+ {
+ using image_t = bg::indexed_image<std::uint8_t, bg::rgb8_pixel_t>;
+ image_t img(640, 480, 256);
+
+ for (image_t::y_coord_t y = 0; y < bg::view(img).height(); ++y)
+ {
+ image_t::view_t::x_iterator it = bg::view(img).row_begin(y);
+ for (image_t::x_coord_t x = 0; x < bg::view(img).width(); ++x)
+ {
+ bg::rgb8_pixel_t p = *it;
+ boost::ignore_unused(p);
+ it++;
+ }
+ }
+
+ // TODO: No checks? ~mloskot
+ }
+}
+
+BOOST_AUTO_TEST_CASE(index_image_view_test)
+{
+ // generate some data
+ std::size_t const width = 640;
+ std::size_t const height = 480;
+ std::size_t const num_colors = 3;
+ std::uint8_t const index = 2;
+
+ // indices
+ std::vector<std::uint8_t> indices(width * height, index);
+
+ // colors
+ std::vector<bg::rgb8_pixel_t> palette(num_colors);
+ palette[0] = bg::rgb8_pixel_t(10, 20, 30);
+ palette[1] = bg::rgb8_pixel_t(40, 50, 60);
+ palette[2] = bg::rgb8_pixel_t(70, 80, 90);
+
+ // create image views from raw memory
+ auto indices_view = bg::interleaved_view(width, height,
+ (bg::gray8_image_t::view_t::x_iterator) indices.data(),
+ width); // row size in bytes
+
+ auto palette_view = bg::interleaved_view(100, 1,
+ (bg::rgb8_image_t::view_t::x_iterator) palette.data(),
+ num_colors * 3); // row size in bytes
+
+ auto ii_view = bg::view(indices_view, palette_view);
+
+ auto p = ii_view(bg::point_t(0, 0));
+ auto q = *ii_view.at(bg::point_t(0, 0));
+
+ BOOST_ASSERT(bg::get_color(p, bg::red_t()) == 70);
+ BOOST_ASSERT(bg::get_color(p, bg::green_t()) == 80);
+ BOOST_ASSERT(bg::get_color(p, bg::blue_t()) == 90);
+
+ BOOST_ASSERT(bg::get_color(q, bg::red_t()) == 70);
+ BOOST_ASSERT(bg::get_color(q, bg::green_t()) == 80);
+ BOOST_ASSERT(bg::get_color(q, bg::blue_t()) == 90);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/is_bit_aligned.cpp b/src/boost/libs/gil/test/extension/toolbox/is_bit_aligned.cpp
new file mode 100644
index 00000000..57c82661
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/is_bit_aligned.cpp
@@ -0,0 +1,24 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/is_bit_aligned.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( is_bit_aligned_test )
+{
+ using image_t = bit_aligned_image1_type< 4, gray_layout_t>::type;
+ static_assert(is_bit_aligned<image_t::view_t::value_type>::value, "");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/is_homogeneous.cpp b/src/boost/libs/gil/test/extension/toolbox/is_homogeneous.cpp
new file mode 100644
index 00000000..0e3dd5de
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/is_homogeneous.cpp
@@ -0,0 +1,28 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/is_homogeneous.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( is_homogeneous_test )
+{
+ static_assert(is_homogeneous<rgb8_pixel_t>::value, "");
+
+ static_assert(is_homogeneous<cmyk16c_planar_ref_t>::value, "");
+
+ using image_t = bit_aligned_image1_type< 4, gray_layout_t>::type;
+ static_assert(is_homogeneous<image_t::view_t::reference>::value, "");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/is_similar.cpp b/src/boost/libs/gil/test/extension/toolbox/is_similar.cpp
new file mode 100644
index 00000000..bfc7a9a6
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/is_similar.cpp
@@ -0,0 +1,23 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/is_similar.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( is_similar_test )
+{
+ // TODO: fill the test
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/lab_test.cpp b/src/boost/libs/gil/test/extension/toolbox/lab_test.cpp
new file mode 100644
index 00000000..8f891cee
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/lab_test.cpp
@@ -0,0 +1,185 @@
+//
+// Copyright 2013 Christian Henning
+// Copyright 2013 Davide Anastasia <davideanastasia@users.sourceforge.net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/color_spaces/lab.hpp>
+
+#if defined(BOOST_CLANG)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wfloat-equal"
+#endif
+
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfloat-equal"
+#endif
+
+#include <boost/test/unit_test.hpp>
+
+#if defined(BOOST_CLANG)
+#pragma clang diagnostic pop
+#endif
+
+#if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
+#pragma GCC diagnostic pop
+#endif
+
+#include <iostream>
+
+using namespace boost;
+
+#define TEST_CHECK_CLOSE(a, b) \
+ BOOST_CHECK_CLOSE(a, b, 0.0005f)
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( Lab_to_XYZ_Test1 )
+{
+ gil::lab32f_pixel_t lab_pixel(40.366198f, 53.354489f, 26.117702f);
+ gil::xyz32f_pixel_t xyz_pixel;
+
+ gil::color_convert(lab_pixel, xyz_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(xyz_pixel[0]), 0.197823f);
+ TEST_CHECK_CLOSE(static_cast<float>(xyz_pixel[1]), 0.114731f);
+ TEST_CHECK_CLOSE(static_cast<float>(xyz_pixel[2]), 0.048848f);
+}
+
+BOOST_AUTO_TEST_CASE(Lab_to_XYZ_Test2)
+{
+ gil::lab32f_pixel_t lab_pixel(50, 0, 0);
+ gil::xyz32f_pixel_t xyz_pixel;
+
+ gil::color_convert(lab_pixel, xyz_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(xyz_pixel[0]), 0.175064f);
+ TEST_CHECK_CLOSE(static_cast<float>(xyz_pixel[1]), 0.184187f);
+ TEST_CHECK_CLOSE(static_cast<float>(xyz_pixel[2]), 0.200548f);
+}
+
+BOOST_AUTO_TEST_CASE(XYZ_to_Lab_Test1)
+{
+ gil::lab32f_pixel_t lab_pixel;
+ gil::xyz32f_pixel_t xyz_pixel(0.085703f, 0.064716f, 0.147082f);
+
+ gil::color_convert(xyz_pixel, lab_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[0]), 30.572438f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[1]), 23.4674f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[2]), -22.322275f);
+}
+
+BOOST_AUTO_TEST_CASE(RGB_to_Lab_Test1)
+{
+ gil::rgb32f_pixel_t rgb_pixel(0.75f, 0.5f, 0.25f);
+ gil::lab32f_pixel_t lab_pixel;
+
+ gil::color_convert(rgb_pixel, lab_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[0]), 58.7767f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[1]), 18.5851f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[2]), 43.7975f);
+}
+
+BOOST_AUTO_TEST_CASE(RGB_to_Lab_Test2)
+{
+ gil::rgb32f_pixel_t rgb_pixel(1.f, 0.f, 0.f);
+ gil::lab32f_pixel_t lab_pixel;
+
+ gil::color_convert(rgb_pixel, lab_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[0]), 53.2408f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[1]), 80.0925f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[2]), 67.2032f);
+}
+
+BOOST_AUTO_TEST_CASE(RGB_to_Lab_Test3)
+{
+ gil::rgb32f_pixel_t rgb_pixel(0.f, 1.f, 0.f);
+ gil::lab32f_pixel_t lab_pixel;
+
+ gil::color_convert(rgb_pixel, lab_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[0]), 87.7347f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[1]), -86.1827f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[2]), 83.1793f);
+}
+
+BOOST_AUTO_TEST_CASE(RGB_to_Lab_Test4)
+{
+ gil::rgb32f_pixel_t rgb_pixel(0.f, 0.f, 1.f);
+ gil::lab32f_pixel_t lab_pixel;
+
+ gil::color_convert(rgb_pixel, lab_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[0]), 32.2970f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[1]), 79.1875f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[2]), -107.8602f);
+}
+
+BOOST_AUTO_TEST_CASE(RGB_to_Lab_Test5)
+{
+ gil::rgb32f_pixel_t rgb_pixel(1.f, 1.f, 1.f);
+ gil::lab32f_pixel_t lab_pixel;
+
+ gil::color_convert(rgb_pixel, lab_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[0]), 100.f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[1]), 0.f);
+ TEST_CHECK_CLOSE(static_cast<float>(lab_pixel[2]), 0.f);
+}
+
+BOOST_AUTO_TEST_CASE(Lab_to_RGB_Test1)
+{
+ gil::lab32f_pixel_t lab_pixel(75.f, 20.f, 40.f);
+ gil::rgb32f_pixel_t rgb_pixel;
+
+ gil::color_convert(lab_pixel, rgb_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[0]), 0.943240f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[1]), 0.663990f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[2]), 0.437893f);
+}
+
+BOOST_AUTO_TEST_CASE(Lab_to_RGB_Test2)
+{
+ gil::lab32f_pixel_t lab_pixel(100.f, 0.f, 0.f);
+ gil::rgb32f_pixel_t rgb_pixel;
+
+ gil::color_convert(lab_pixel, rgb_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[0]), 1.f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[1]), 1.f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[2]), 1.f);
+}
+
+BOOST_AUTO_TEST_CASE(Lab_to_RGB_Test3)
+{
+ gil::lab32f_pixel_t lab_pixel(56.8140f, -42.3665f, 10.6728f);
+ gil::rgb32f_pixel_t rgb_pixel;
+
+ gil::color_convert(lab_pixel, rgb_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[0]), 0.099999f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[1]), 0.605568f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[2]), 0.456662f);
+}
+
+BOOST_AUTO_TEST_CASE(Lab_to_RGB_Test4)
+{
+ gil::lab32f_pixel_t lab_pixel(50.5874f, 4.0347f, 50.5456f);
+ gil::rgb32f_pixel_t rgb_pixel;
+
+ gil::color_convert(lab_pixel, rgb_pixel);
+
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[0]), 0.582705f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[1]), 0.454891f);
+ TEST_CHECK_CLOSE(static_cast<float>(rgb_pixel[2]), 0.1f);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/pixel_bit_size.cpp b/src/boost/libs/gil/test/extension/toolbox/pixel_bit_size.cpp
new file mode 100644
index 00000000..0308a736
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/pixel_bit_size.cpp
@@ -0,0 +1,27 @@
+//
+// Copyright 2013 Christian Henning
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/metafunctions/pixel_bit_size.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( pixel_bit_size_test )
+{
+ using image_t = bit_aligned_image5_type
+ <
+ 16, 16, 16, 8, 8, devicen_layout_t<5>
+ >::type;
+ static_assert(pixel_bit_size<image_t::view_t::reference>::value == 64, "");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/rgb_to_luminance.cpp b/src/boost/libs/gil/test/extension/toolbox/rgb_to_luminance.cpp
new file mode 100644
index 00000000..2ccf8a30
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/rgb_to_luminance.cpp
@@ -0,0 +1,33 @@
+//
+// Copyright 2013 Christian Henning
+// Copyright 2013 Davide Anastasia <davideanastasia@users.sourceforge.net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/color_converters/rgb_to_luminance.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+using namespace boost;
+using namespace gil;
+
+struct double_zero { static double apply() { return 0.0; } };
+struct double_one { static double apply() { return 1.0; } };
+
+using gray64f_pixel_t = pixel<double, gray_layout_t>;
+using rgb64f_pixel_t = pixel<double, rgb_layout_t >;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( rgb_to_luminance_test )
+{
+ rgb64f_pixel_t a( 10, 20, 30 );
+ gray64f_pixel_t b;
+
+ color_convert( a, b );
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/subchroma_image.cpp b/src/boost/libs/gil/test/extension/toolbox/subchroma_image.cpp
new file mode 100644
index 00000000..b3949377
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/subchroma_image.cpp
@@ -0,0 +1,107 @@
+// Copyright 2013 Christian Henning
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+/// \brief Unit test for subchroma_image type.
+
+#include <boost/test/unit_test.hpp>
+
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/color_spaces/ycbcr.hpp>
+#include <boost/gil/extension/toolbox/image_types/subchroma_image.hpp>
+
+#include <boost/mp11.hpp>
+
+using namespace std;
+using namespace boost;
+using namespace gil;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE( subchroma_image_test )
+{
+ {
+ ycbcr_601_8_pixel_t a( 10, 20, 30 );
+ rgb8_pixel_t b;
+ bgr8_pixel_t c;
+
+ color_convert( a, b );
+ color_convert( a, c );
+ BOOST_ASSERT( static_equal( b, c ));
+
+ color_convert( b, a );
+ }
+
+ {
+ ycbcr_709_8_pixel_t a( 10, 20, 30 );
+ rgb8_pixel_t b;
+ bgr8_pixel_t c;
+
+ color_convert( a, b );
+ color_convert( a, c );
+ BOOST_ASSERT( static_equal( b, c ));
+
+ color_convert( b, a );
+ }
+
+ {
+ using pixel_t = rgb8_pixel_t;
+ using image_t = subchroma_image<pixel_t>;
+
+ image_t img( 640, 480 );
+
+ fill_pixels( view( img )
+ , pixel_t( 10, 20, 30 )
+ );
+ }
+
+ {
+ using pixel_t = rgb8_pixel_t;
+
+ subchroma_image<pixel_t, mp11::mp_list_c<int, 4, 4, 4>> a(640, 480);
+ static_assert(a.ss_X == 1 && a.ss_Y == 1, "");
+ subchroma_image<pixel_t, mp11::mp_list_c<int, 4, 4, 0>> b(640, 480);
+ static_assert(b.ss_X == 1 && b.ss_Y == 2, "");
+ subchroma_image<pixel_t, mp11::mp_list_c<int, 4, 2, 2>> c(640, 480);
+ static_assert(c.ss_X == 2 && c.ss_Y == 1, "");
+ subchroma_image<pixel_t, mp11::mp_list_c<int, 4, 2, 0>> d(640, 480);
+ static_assert(d.ss_X == 2 && d.ss_Y == 2, "");
+ subchroma_image<pixel_t, mp11::mp_list_c<int, 4, 1, 1>> e(640, 480);
+ static_assert(e.ss_X == 4 && e.ss_Y == 1, "");
+ subchroma_image<pixel_t, mp11::mp_list_c<int, 4, 1, 0>> f(640, 480);
+ static_assert(f.ss_X == 4 && f.ss_Y == 2, "");
+
+ fill_pixels( view( a ), pixel_t( 10, 20, 30 ) );
+ fill_pixels( view( b ), pixel_t( 10, 20, 30 ) );
+ fill_pixels( view( c ), pixel_t( 10, 20, 30 ) );
+ fill_pixels( view( d ), pixel_t( 10, 20, 30 ) );
+ fill_pixels( view( e ), pixel_t( 10, 20, 30 ) );
+ fill_pixels( view( f ), pixel_t( 10, 20, 30 ) );
+
+ }
+
+ {
+ using pixel_t = ycbcr_601_8_pixel_t;
+ using factors_t = mp11::mp_list_c<int, 4, 2, 2>;
+ using image_t = subchroma_image<pixel_t, factors_t>;
+
+ std::size_t y_width = 640;
+ std::size_t y_height = 480;
+
+ std::size_t image_size = ( y_width * y_height )
+ + ( y_width / image_t::ss_X ) * ( y_height / image_t::ss_Y )
+ + ( y_width / image_t::ss_X ) * ( y_height / image_t::ss_Y );
+
+ vector< unsigned char > data( image_size );
+
+ image_t::view_t v = subchroma_view< pixel_t, factors_t >( y_width
+ , y_height
+ , &data.front()
+ );
+ rgb8_pixel_t p;
+ p = *v.xy_at( 0, 0 );
+ }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/src/boost/libs/gil/test/extension/toolbox/test.cpp b/src/boost/libs/gil/test/extension/toolbox/test.cpp
new file mode 100644
index 00000000..8034bf67
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/test.cpp
@@ -0,0 +1,2 @@
+#define BOOST_TEST_MAIN
+#include <boost/test/unit_test.hpp>
diff --git a/src/boost/libs/gil/test/extension/toolbox/xyz_test.cpp b/src/boost/libs/gil/test/extension/toolbox/xyz_test.cpp
new file mode 100644
index 00000000..26f0cebb
--- /dev/null
+++ b/src/boost/libs/gil/test/extension/toolbox/xyz_test.cpp
@@ -0,0 +1,193 @@
+//
+// Copyright 2013 Christian Henning
+// Copyright 2013 Davide Anastasia <davideanastasia@users.sourceforge.net>
+//
+// Distributed under the Boost Software License, Version 1.0
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+#include <boost/gil.hpp>
+#include <boost/gil/extension/toolbox/color_spaces/xyz.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+#include <cstdint>
+#include <iostream>
+#include <limits>
+
+using namespace boost;
+using namespace std;
+
+const float SKEW = 0.0001f;
+
+BOOST_AUTO_TEST_SUITE( toolbox_tests )
+
+BOOST_AUTO_TEST_CASE(rgb32f_xyz32f_1)
+{
+ gil::xyz32f_pixel_t xyz32f;
+ gil::rgb32f_pixel_t p32f(.934351f, 0.785446f, .105858f), p32f_b;
+ gil::color_convert(p32f, xyz32f);
+ gil::color_convert(xyz32f, p32f_b);
+
+ BOOST_TEST_MESSAGE( p32f[0] << " "
+ << p32f[1] << " "
+ << p32f[2] << " -> "
+ << xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << p32f_b[0] << " "
+ << p32f_b[1] << " "
+ << p32f_b[2] );
+
+ BOOST_CHECK( abs(p32f[0] - p32f_b[0]) < SKEW );
+ BOOST_CHECK( abs(p32f[1] - p32f_b[1]) < SKEW );
+ BOOST_CHECK( abs(p32f[2] - p32f_b[2]) < SKEW );
+ BOOST_CHECK( abs( xyz32f[0] - 0.562669) < SKEW );
+ BOOST_CHECK( abs( xyz32f[1] - 0.597462) < SKEW );
+ BOOST_CHECK( abs( xyz32f[2] - 0.096050) < SKEW );
+}
+
+BOOST_AUTO_TEST_CASE(rgb32f_xyz32f_2)
+{
+ gil::xyz32f_pixel_t xyz32f;
+ gil::rgb32f_pixel_t p32f(.694617f, 0.173810f, 0.218710f), p32f_b;
+ gil::color_convert(p32f, xyz32f);
+ gil::color_convert(xyz32f, p32f_b);
+
+ BOOST_TEST_MESSAGE( p32f[0] << " "
+ << p32f[1] << " "
+ << p32f[2] << " -> "
+ << xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << p32f_b[0] << " "
+ << p32f_b[1] << " "
+ << p32f_b[2] );
+
+ BOOST_CHECK( abs(p32f[0] - p32f_b[0]) < SKEW );
+ BOOST_CHECK( abs(p32f[1] - p32f_b[1]) < SKEW );
+ BOOST_CHECK( abs(p32f[2] - p32f_b[2]) < SKEW );
+ BOOST_CHECK( abs( xyz32f[0] - 0.197823) < SKEW );
+ BOOST_CHECK( abs( xyz32f[1] - 0.114731) < SKEW );
+ BOOST_CHECK( abs( xyz32f[2] - 0.048848) < SKEW );
+}
+
+BOOST_AUTO_TEST_CASE(xyz32f_rgb32f_1)
+{
+ gil::xyz32f_pixel_t xyz32f(.332634f, .436288f, .109853f), xyz32f_b;
+ gil::rgb32f_pixel_t p32f;
+ gil::color_convert(xyz32f, p32f);
+ gil::color_convert(p32f, xyz32f_b);
+
+ BOOST_TEST_MESSAGE( xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << p32f[0] << " "
+ << p32f[1] << " "
+ << p32f[2] << " -> "
+ << xyz32f_b[0] << " "
+ << xyz32f_b[1] << " "
+ << xyz32f_b[2] );
+
+ BOOST_CHECK( abs(xyz32f_b[0] - xyz32f[0]) < SKEW );
+ BOOST_CHECK( abs(xyz32f_b[1] - xyz32f[1]) < SKEW );
+ BOOST_CHECK( abs(xyz32f_b[2] - xyz32f[2]) < SKEW );
+ BOOST_CHECK( abs( p32f[0] - 0.628242) < SKEW );
+ BOOST_CHECK( abs( p32f[1] - 0.735771) < SKEW );
+ BOOST_CHECK( abs( p32f[2] - 0.236473) < SKEW );
+}
+
+BOOST_AUTO_TEST_CASE(xyz32f_rgb32f_2)
+{
+ gil::xyz32f_pixel_t xyz32f(.375155f, .352705f, .260025f), xyz32f_b;
+ gil::rgb32f_pixel_t p32f;
+ gil::color_convert(xyz32f, p32f);
+ gil::color_convert(p32f, xyz32f_b);
+
+ BOOST_TEST_MESSAGE( xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << p32f[0] << " "
+ << p32f[1] << " "
+ << p32f[2] << " -> "
+ << xyz32f_b[0] << " "
+ << xyz32f_b[1] << " "
+ << xyz32f_b[2] );
+
+ BOOST_CHECK( abs(xyz32f_b[0] - xyz32f[0]) < SKEW );
+ BOOST_CHECK( abs(xyz32f_b[1] - xyz32f[1]) < SKEW );
+ BOOST_CHECK( abs(xyz32f_b[2] - xyz32f[2]) < SKEW );
+ BOOST_CHECK( abs( p32f[0] - 0.763580) < SKEW );
+ BOOST_CHECK( abs( p32f[1] - 0.591622) < SKEW );
+ BOOST_CHECK( abs( p32f[2] - 0.510392) < SKEW );
+}
+
+BOOST_AUTO_TEST_CASE(rgb8u_xyz32f_1)
+{
+ gil::xyz32f_pixel_t xyz32f;
+ gil::rgb8_pixel_t p8u(177, 44, 56), p8u_b;
+ gil::color_convert(p8u, xyz32f);
+ gil::color_convert(xyz32f, p8u_b);
+
+ BOOST_TEST_MESSAGE( static_cast<int>(p8u[0]) << " "
+ << static_cast<int>(p8u[1]) << " "
+ << static_cast<int>(p8u[2]) << " -> "
+ << xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << static_cast<int>(p8u_b[0]) << " "
+ << static_cast<int>(p8u_b[1]) << " "
+ << static_cast<int>(p8u_b[2]) );
+
+ BOOST_CHECK(p8u[0] == p8u_b[0]);
+ BOOST_CHECK(p8u[1] == p8u_b[1]);
+ BOOST_CHECK(p8u[2] == p8u_b[2]);
+}
+
+BOOST_AUTO_TEST_CASE(rgb8u_xyz32f_2)
+{
+ gil::xyz32f_pixel_t xyz32f;
+ gil::rgb8_pixel_t p8u(72, 90, 165), p8u_b;
+ gil::color_convert(p8u, xyz32f);
+ gil::color_convert(xyz32f, p8u_b);
+
+ BOOST_TEST_MESSAGE(
+ static_cast<int>(p8u[0]) << " "
+ << static_cast<int>(p8u[1]) << " "
+ << static_cast<int>(p8u[2]) << " -> "
+ << xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << static_cast<int>(p8u_b[0]) << " "
+ << static_cast<int>(p8u_b[1]) << " "
+ << static_cast<int>(p8u_b[2]) );
+
+ BOOST_CHECK(p8u[0] == p8u_b[0]);
+ BOOST_CHECK(p8u[1] == p8u_b[1]);
+ BOOST_CHECK(p8u[2] == p8u_b[2]);
+}
+
+BOOST_AUTO_TEST_CASE(rgb16u_xyz32f_1)
+{
+ gil::xyz32f_pixel_t xyz32f;
+ gil::rgb16_pixel_t p16u(12564, 20657, 200), p16u_b;
+ gil::color_convert(p16u, xyz32f);
+ gil::color_convert(xyz32f, p16u_b);
+
+ BOOST_TEST_MESSAGE(
+ static_cast<int>(p16u[0]) << " "
+ << static_cast<int>(p16u[1]) << " "
+ << static_cast<int>(p16u[2]) << " -> "
+ << xyz32f[0] << " "
+ << xyz32f[1] << " "
+ << xyz32f[2] << " -> "
+ << static_cast<int>(p16u_b[0]) << " "
+ << static_cast<int>(p16u_b[1]) << " "
+ << static_cast<int>(p16u_b[2]) );
+
+ BOOST_CHECK(p16u[0] == p16u_b[0]);
+ BOOST_CHECK(p16u[1] == p16u_b[1]);
+ BOOST_CHECK(p16u[2] == p16u_b[2]);
+}
+
+BOOST_AUTO_TEST_SUITE_END()